- Add app/services/recipe/time_effort.py: parse_time_effort(), TimeEffortProfile, StepAnalysis dataclasses; two-branch regex for time ranges and single values; whole-word passive keyword detection; 480 min/step cap; 1825 day global cap - Add directions to browse_recipes and _browse_by_match SELECT queries in store.py - Enrich browse and detail endpoints with active_min/passive_min/time_effort fields - Add StepAnalysis, TimeEffortProfile TS interfaces to api.ts - RecipeBrowserPanel: split pill badge showing active/passive time - RecipeDetailPanel: collapsible ingredients summary, effort cards (Active/Hands-off/Total), equipment chips, annotated step list with Active/Wait badges and passive hints - 45 new tests (40 unit + 5 API); 215 total passing |
||
|---|---|---|
| .. | ||
| api | ||
| db | ||
| pipeline | ||
| services | ||
| test_services | ||
| test_tasks | ||
| __init__.py | ||
| test_household.py | ||
| test_meal_plan_tiers.py | ||
| test_tiers.py | ||