kiwi/app/models/schemas
pyr0ball b4624fba84 feat(ask): add POST /recipes/ask endpoint for natural-language recipe search
Free tier: keyword extraction + FTS ingredient search + title probe search.
Paid tier / BYOK: same search, then LLM synthesis of a conversational answer
(8s timeout so an unresponsive model degrades gracefully to recipe list only).

- AskRequest / AskRecipeHit / AskResponse schemas in recipe.py
- _extract_ask_keywords(): tokenize question, strip stopwords
- _ask_in_thread(): two-pronged search (ingredient FTS + title LIKE)
  merges by ID, computes pantry match_pct when pantry_items provided
- Endpoint registered before /{recipe_id} to avoid integer coercion on /ask
- LLM synthesis gated to paid/premium/ultra only (not "local" dev tier)

Closes #134 (backend)
2026-05-11 13:07:53 -07:00
..
__init__.py chore: initial commit — kiwi Phase 2 complete 2026-03-30 22:20:48 -07:00
household.py feat: add MessageResponse schema; wire response_model on leave + remove-member endpoints 2026-04-04 22:47:39 -07:00
inventory.py feat: visual label capture for unenriched barcodes (kiwi#79) 2026-04-24 17:57:25 -07:00
label_capture.py feat: visual label capture for unenriched barcodes (kiwi#79) 2026-04-24 17:57:25 -07:00
meal_plan.py feat: wire meal planner slot editor and meal type picker 2026-04-16 14:23:38 -07:00
ocr.py chore: initial commit — kiwi Phase 2 complete 2026-03-30 22:20:48 -07:00
quality.py chore: initial commit — kiwi Phase 2 complete 2026-03-30 22:20:48 -07:00
receipt.py chore: initial commit — kiwi Phase 2 complete 2026-03-30 22:20:48 -07:00
recipe.py feat(ask): add POST /recipes/ask endpoint for natural-language recipe search 2026-05-11 13:07:53 -07:00
recipe_scan.py feat: recipe scanner — photo to structured recipe (kiwi#9) 2026-04-27 08:23:01 -07:00
saved_recipe.py feat: saved recipes, recipe browser, and recipe detail panel 2026-04-08 14:35:02 -07:00
shopping.py fix: recipe enrichment backfill, main_ingredient browser domain, bug batch 2026-04-18 15:38:56 -07:00