Aaron D. Lee
a5ddc53cf0
feat(S3): FaceRecognizer with in-memory embedding matching
...
Add FaceRecognizer class that loads face encodings from the database,
supports runtime add_encoding(), and matches new encodings by L2 distance.
face_recognition import is deferred so the class works without dlib installed.
FaceResult dataclass carries profile_id, name, confidence, crop, and bbox.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-03 18:59:07 -04:00
Aaron D. Lee
31757f410a
feat(Q5): package delivery state machine with sunset-aware reminders
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-03 18:46:59 -04:00
Aaron D. Lee
66a53f0cd8
feat(Q2): heatmap generation with bbox accumulation and colormap
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-03 18:46:00 -04:00
Aaron D. Lee
7ccd818a93
feat(Q3): Open-Meteo weather fetcher with hourly caching
2026-04-03 18:42:52 -04:00
Aaron D. Lee
e75a9a9d71
feat(Q5): NOAA sunset calculator (stdlib only)
2026-04-03 18:42:26 -04:00
Aaron D. Lee
0b82105179
Fix minor issues: enum types, backup path, JS URLs, status field, timestamp docs
...
- CameraConfig.location now uses CameraLocation enum (Pydantic v2 coerces TOML strings)
- Wildlife classifier returns ThreatLevel enum values with correct return type annotation
- Model backup path fixed: pet_id_backup.pt instead of pet_id.backup.pt
- Dashboard submitLabel JS now posts to /pets/<sighting_id>/label matching Flask route
- Pet status API computes status field (safe/unknown) based on last-seen recency
- digest.py comment explains timestamp unit difference between tables
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-03 13:49:20 -04:00
Aaron D. Lee
713d16d445
Fix lint issues in pet detection integration
...
- Import PetsConfig directly instead of forward ref string
- Fix import sorting in worker.py, queries.py, constants.py
- Remove unused imports in profiles.py, trainer.py, processor.py
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-03 13:32:17 -04:00
Aaron D. Lee
45007dcac2
Add crop manager for staging and training image lifecycle
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-03 13:22:26 -04:00
Aaron D. Lee
e48ba305ea
Add pet ID model trainer with MobileNetV3-Small transfer learning
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-03 13:19:12 -04:00
Aaron D. Lee
c7f9304f2a
Add pet ID classifier with species-filtered identification
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-03 13:18:42 -04:00
Aaron D. Lee
13b7c2a219
Add wildlife threat classification with size heuristics
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-03 13:17:21 -04:00
Aaron D. Lee
131eed73b1
Add YOLOv8 unified detector with class classification
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-03 13:15:31 -04:00
Aaron D. Lee
8314a61815
Add presence detection, person/vehicle AI detection, health monitoring
...
Task 1 — Presence: ping family phones, derive household state
(EMPTY/KIDS_HOME/ADULTS_HOME/ALL_HOME), configurable departure delay,
per-member roles, auto-arm actions via MQTT.
Task 2 — Detection: MobileNet-SSD v2 via OpenCV DNN for person/vehicle
classification. Vehicle color/size fingerprinting for known car matching.
Zone-based filtering per camera. Model download script.
Task 3 — Health: periodic disk/MQTT/subsystem checks, auto-prune oldest
non-starred recordings on disk pressure, daily digest builder.
126 tests passing.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-03 00:06:45 -04:00