mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-07-12 13:29:04 +00:00
Tighten the recommendation/plan vocabulary off generic str: MeasureOption.measure_type and PlanMeasure.measure_type are now MeasureType (also _GlazingTarget.measure_type, MeasureDependency.triggers -> frozenset[MeasureType], and the optimiser's chosen/required-type locals). Because MeasureType is a StrEnum the change is transparent to persistence (the `recommendation` varchar column), the optimiser group-by key, and every `== "solar_pv"`-style comparison — so pyright now enforces the enum at every construction site with no runtime behaviour change. The catalogue boundary stays str: ProductRepository.get(measure_type: str) and Product.measure_type are unchanged (they map arbitrary DB/JSON rows), so the fake product repos in tests need no edit. Test construction helpers coerce their str arg via MeasureType(...); direct constructions use members. Suite green: tests/domain/modelling + orchestration + harness 253 pass + 3 xfail; pyright clean on production + tests (pre-existing moto + property- override-rowcount baselines untouched). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| fixtures | ||
| __init__.py | ||
| _elmhurst_recommendation.py | ||
| test_ashp_cost_inputs.py | ||
| test_elmhurst_cascade_pins.py | ||
| test_floor_recommendation.py | ||
| test_glazing_recommendation.py | ||
| test_heating_recommendation.py | ||
| test_lighting_recommendation.py | ||
| test_measure_dependency.py | ||
| test_measure_type.py | ||
| test_optimiser.py | ||
| test_overlay_applicator.py | ||
| test_package_scorer.py | ||
| test_plan.py | ||
| test_plan_valuation.py | ||
| test_products.py | ||
| test_roof_recommendation.py | ||
| test_scoring.py | ||
| test_solar_config_selection.py | ||
| test_solar_overshading.py | ||
| test_solar_potential.py | ||
| test_solar_products.py | ||
| test_solar_recommendation.py | ||
| test_valuation.py | ||
| test_ventilation_recommendation.py | ||
| test_wall_recommendation.py | ||
| test_window_extraction_001431.py | ||