feat: initialize cold display guard

This commit is contained in:
Yoilun
2026-04-27 10:59:13 +08:00
commit 36dc3548e6
17 changed files with 918 additions and 0 deletions

31
task_plan.md Normal file
View File

@@ -0,0 +1,31 @@
# Cold Display Guard Task Plan
## Goal
Create an independent git project under `~/Code` for monitoring food batches in a refrigerated display cabinet. The system tracks each configured display zone, starts a batch timer when food appears, ends it when the zone clears, and raises compliance alerts for over-3-hour removal without trash disposal or for over-3-hour food being put back.
## Confirmed Decisions
- The trash bin is visible in the same camera frame.
- The display cabinet starts as a 4-column by 2-row layout, but zones must be configurable.
- A zone may contain multiple food items.
- Items in the same zone are treated as one batch.
- Mixed batches are not allowed; a zone must clear before a new batch can start.
- The first implementation is a standalone project, not a modification of `store_dwell_alert`.
## Phases
| Phase | Status | Notes |
| --- | --- | --- |
| Create project skeleton | complete | Built under `~/Code/cold_display_guard`. |
| Write design and implementation plan | complete | Saved in `docs/plans/`. |
| Implement core state engine | complete | Pure Python, no camera dependency. |
| Add config, CLI, README | complete | TOML config and JSONL event CLI skeleton. |
| Add tests | complete | `python3 -m unittest discover -s tests -v` passes. |
| Initialize git and commit | complete | Independent repository created. |
## Errors Encountered
| Error | Attempt | Resolution |
| --- | --- | --- |
| Ended batches reported `0` dwell seconds | First `unittest` run | Calculate dwell seconds before assigning `ended_at`. |