Add product_scoring.py: 10 deterministic advisory product scores ∈[0,1] (market_fit/demand/supply_risk/future_competition/price_feasibility/infra_fit/ mortgage_sensitivity/differentiation/commercial/confidence), each derived from already-built forecasting + Site Finder services, graceful-None on thin data, §16-style RU reason per score. supply_risk/future_competition/mortgage_sensitivity inverted (high-bad→low). Weighted overall renormalized over available scores (§9.5 dispatch); commercial/infra degrade to None (not 0). Advisory cap inherited. Pure scorers unit-tested without DB; orchestrator via @patch of all backers. 101 tests. |
||
|---|---|---|
| .. | ||
| api | ||
| core | ||
| models | ||
| observability | ||
| schemas | ||
| scrapers | ||
| services | ||
| templates | ||
| workers | ||
| __init__.py | ||
| main.py | ||