07450bf59f
feat: recipe engine — assembly templates, prep notes, FTS fixes, texture backfill
...
- Assembly template system (13 templates: burrito, fried rice, omelette, stir fry,
pasta, sandwich, grain bowl, soup/stew, casserole, pancakes, porridge, pie, pudding)
with role-based matching, whole-word single-keyword guard, deterministic titles
via MD5 pantry hash
- Prep-state stripping: strips 'melted butter' → 'butter' for coverage checks;
reconstructs actionable states as 'Before you start:' cooking instructions
(NutritionPanel prep_notes field + RecipesView.vue display block)
- FTS5 fixes: always double-quote all terms; strip apostrophes to prevent
syntax errors on brands like "Stouffer's"; 'plant-based' → bare 'based' crash
- Bidirectional synonym expansion: alt-meat, alt-chicken, alt-beef, alt-pork
mapped to canonical texture class; pantry expansion covers 'hamburger' from
'burger patties' etc.
- Texture profile backfill script (378K ingredient_profiles rows) with macro-derived
classification in priority order (fatty → creamy → starchy → firm → fibrous →
tender → liquid → neutral); oats/legumes starchy-first fix
- LLM prompt: ban flavoured/sweetened ingredients (vanilla yoghurt) from savoury
- Migrations 014 (nutrition macros) + 015 (recipe FTS index)
- Nutrition estimation pipeline script
- gitignore MagicMock sqlite test artifacts
2026-04-02 22:12:35 -07:00
31063a9cfc
fix: data pipeline — R-vector parser, allrecipes dataset, unique recipe index
...
- build_recipe_index.py: add _parse_r_vector() for food.com R format, add
_parse_allrecipes_text() for corbt/all-recipes text format, _row_to_fields()
dispatcher handles both columnar (food.com) and single-text (all-recipes)
- build_flavorgraph_index.py: switch from graph.json to nodes/edges CSVs
matching actual FlavorGraph repo structure
- download_datasets.py: switch recipe source to corbt/all-recipes (2.1M
recipes, 807MB) replacing near-empty AkashPS11/recipes_data_food.com
- 007_recipe_corpus.sql: add UNIQUE constraint on external_id to prevent
duplicate inserts on pipeline reruns
2026-03-31 21:36:13 -07:00
ae9137585a
fix: renumber background_tasks migration 006→013 (conflict with element_profiles)
2026-03-31 14:28:10 -07:00
206b930aff
Merge branch 'feature/shared-task-scheduler'
2026-03-31 14:27:51 -07:00
a5c59674f2
feat: recipe engine Phase 3 — StyleAdapter, LLM levels 3-4, user settings
...
Task 13: StyleAdapter with 5 cuisine templates (Italian, Latin, East Asian,
Eastern European, Mediterranean). Each template includes weighted method_bias
(sums to 1.0), element-filtered aromatics/depth/structure helpers, and
seasoning/finishing-fat vectors. StyleTemplate is a fully immutable frozen
dataclass with tuple fields.
Task 14: LLMRecipeGenerator for Levels 3 and 4. Level 3 builds a structured
element-scaffold prompt; Level 4 generates a minimal wildcard prompt (<1500
chars). Allergy hard-exclusion wired through RecipeRequest.allergies into
both prompt builders and the generate() call path. Parsed LLM response
(title, ingredients, directions, notes) fully propagated to RecipeSuggestion.
Task 15: User settings key-value store. Migration 012 adds user_settings
table. Store.get_setting / set_setting with upsert. GET/PUT /settings/{key}
endpoints with Pydantic SettingBody, key allowlist, get_session dependency.
RecipeEngine reads cooking_equipment from settings when hard_day_mode=True.
55 tests passing.
2026-03-31 14:15:18 -07:00
294974886d
fix: store — deserialize recipe JSON columns in _row_to_dict
2026-03-31 11:33:49 -07:00
97e8889d89
feat: store — recipe search, rate-limit check, substitution feedback logging
2026-03-31 11:29:54 -07:00
a17dcc8c55
feat(tasks): add background task scheduler for LLM expiry fallback
...
Uses circuitforge_core.tasks.scheduler. VRAM detection via cf-orch when
available, falling back to unlimited. Adds expiry_llm_fallback task type
to background-predict expiry dates for items the LUT doesn't cover.
2026-03-31 09:25:48 -07:00
1010543c71
feat: migrations 005-011 — fix receipts column bug + recipe engine tables
2026-03-30 22:33:25 -07:00
c166e5216a
chore: initial commit — kiwi Phase 2 complete
...
Pantry tracker app with:
- FastAPI backend + Vue 3 SPA frontend
- SQLite via circuitforge-core (migrations 001-005)
- Inventory CRUD, barcode scan, receipt OCR pipeline
- Expiry prediction (deterministic + LLM fallback)
- CF-core tier system integration
- Cloud session support (menagerie)
2026-03-30 22:20:48 -07:00