avocet/app/data
pyr0ball 391ebb3cd1 feat(recipe-scan): labeling UI for Kiwi vision training pipeline (closes #65)
- POST /api/recipe-scan/import — bulk ingest from Kiwi scanner pipeline, idempotent by item id
- GET /api/recipe-scan/next — oldest-first pending item for review
- POST /api/recipe-scan/items/{id}/approve|edit|reject — label actions
- GET /api/recipe-scan/stats — counts by status and modality
- GET /api/recipe-scan/export — JSONL training pairs (messages chat format, Option B: correction prompt + extracted draft → corrected ground truth)
- GET /api/recipe-scan/image — path-traversal-safe image serving from /Library/Assets/kiwi/
- SQLite at data/recipe_scan.db with WAL mode; separate from corpus.db lifecycle
- set_db_path() testability seam; 18 tests, all passing
- RecipeScanView.vue: two-column review UI (image left, JSON diff right), keyboard shortcuts A/E/R, toast feedback, stats header, export download
- Route /data/recipe-scan and sidebar nav entry added
2026-05-17 12:22:15 -07:00
..
__init__.py feat: extract label queue API into app/data/label.py 2026-05-01 18:48:14 -07:00
corrections.py fix: align train job/results API envelope, config_json key, progress SSE, dashboard model_key 2026-05-02 21:22:18 -07:00
fetch.py feat: extract fetch routes and IMAP helpers into app/data/fetch.py 2026-05-01 21:57:31 -07:00
imitate.py feat(imitate): task-model assignment routing via cf-orch 2026-05-17 11:23:55 -07:00
label.py feat: extract label queue API into app/data/label.py 2026-05-01 18:48:14 -07:00
log_corpus.py feat(corpus): pipeline log ingest from shared dir (closes #67) 2026-05-17 11:28:33 -07:00
recipe_scan.py feat(recipe-scan): labeling UI for Kiwi vision training pipeline (closes #65) 2026-05-17 12:22:15 -07:00