Public Access
docs: refresh HANDOFF + ORIENTATION for fresh-agent pickup
Bring docs in line with the post-AM-6 state so a fresh agent can pick up cleanly without first reconciling stale numbers: - pytest count: 88/59/31 → 92 across all references - live scrape: 9,960 rows / 36s → 9,980 rows / 44s (latest run, 2026-05-06) - migrations applied: 0001-0005 → 0001-0007 in both docs - verification gate updated with auto-minted JWT detail and the 29,779 ingredient_grocery_match rows produced post-scrape - "What is real" / Backend: added swiftly_auth.py bullet describing get_token() / mint_anonymous_token() / cache semantics + the 10,928-item live verification - file map: added services/swiftly_auth.py, services/matcher.py, services/planner/, mentioned scraper_service runs matcher post-scrape - file map: alembic versions 0001 → 0007, tests/ count = 92, marked config.py as no-longer-carrying SWIFTLY_BEARER_TOKEN - spec map line for swiftly-token-auto-mint: "next-up" → "Implemented" Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
+3
-3
@@ -47,7 +47,7 @@ web ─► nginx :80/:443 ─► React/Vite ────┼─► FastAPI ─
|
||||
| 10 | Image strategy (scraped + AI fallback) | Not started |
|
||||
| 11 | Polish (variety analysis, budget tracking, APScheduler) | Not started |
|
||||
|
||||
Verification gate (R1+R2 + R3-0): 31/31 pytest green; alembic upgrade→downgrade→upgrade clean; frontend `npm run build` clean; live scrape persists 9,960 grocery_item rows in 36 s; email approval round-trip (approve/deny/single-use) verified end-to-end.
|
||||
Verification gate (current, 2026-05-06): **92/92 pytest green**; alembic upgrade→downgrade→upgrade clean; frontend `npm run build` clean; live scrape persists **9,980 grocery_item rows in 44 s** with auto-minted JWT (no env var); 29,779 ingredient_grocery_match rows produced; email approval round-trip (approve/deny/single-use) verified end-to-end.
|
||||
|
||||
---
|
||||
|
||||
@@ -69,7 +69,7 @@ Conventions: UUID PKs everywhere, `TIMESTAMPTZ`, Postgres ENUMs (with `values_ca
|
||||
|
||||
Key relationships: `family_profile`→`family_member`; `family_member`→`meal_plan_vote` (per-voter); `recipe.ingredients` JSONB (no recipe-ingredient join table); `grocery_item.(source, external_id)` is the upsert key for scrape ingestion.
|
||||
|
||||
Migrations applied: 0001 initial, 0002 seed (idempotent via `ON CONFLICT DO NOTHING`), 0003 grocery_item.description, 0004 family_profile.calorie_target, 0005 grocery_item.external_id + source + composite index.
|
||||
Migrations applied: 0001 initial, 0002 seed (idempotent via `ON CONFLICT DO NOTHING`), 0003 grocery_item.description, 0004 family_profile.calorie_target, 0005 grocery_item.external_id + source + composite index, 0006 thin Phase 4 (ingredient.aliases, recipe.calories_per_serving, ingredient_grocery_match), 0007 seed canonical ingredients (50) + 30 starter recipes.
|
||||
|
||||
Full schema: `docs/database-schema.md`.
|
||||
|
||||
@@ -113,7 +113,7 @@ The Swiftly bearer JWT is auto-minted at request time via Firebase REST anon-sig
|
||||
# Full local stack
|
||||
docker compose --env-file .env.test up -d db backend
|
||||
docker compose --env-file .env.test exec backend alembic upgrade head
|
||||
docker compose --env-file .env.test exec -e TEST_DATABASE_URL=postgresql://mealplanner:${POSTGRES_PASSWORD}@db:5432/mealplanner backend pytest -q tests/
|
||||
docker compose --env-file .env.test exec -e TEST_DATABASE_URL=postgresql://mealplanner:${POSTGRES_PASSWORD}@db:5432/mealplanner backend pytest -q tests/ # → 92 passed
|
||||
|
||||
# Frontend
|
||||
cd frontend && npm ci && npm run build
|
||||
|
||||
Reference in New Issue
Block a user