feat(site-finder): per-competitor relevance_weight (#949 PR B) #1000

Merged
Light1YT merged 1 commit from feat/949b-competitor-relevance-weight into main 2026-06-02 19:45:39 +00:00
Owner

Site Finder v2 / GG-форсайт#949 PR B (завершает #949). Детерминированный, без LLM.

Взвешенная релевантность §9.1 в get_competitors: geo(.30)+class(.25)+price(.20)+stage_at_horizon(.25), horizon-aware (конкурент, распроданный к нашему выходу → ниже). class vs локальный доминирующий класс. Order by relevance DESC (distance сохранён). relevance_breakdown для §16.

Additive/безопасно для live-endpoint: все legacy-поля целы, новые Optional, ноль фронт-консьюмеров /competitors (UI на /analyze). sold-count вложен в существующий price-запрос (#227 зелёный). Graceful (thin→0.5). 57 тестов. code-reviewer opus (прогнал endpoint через моки). Часть #944. Closes #949.

**Site Finder v2 / `GG-форсайт` — #949 PR B (завершает #949).** Детерминированный, без LLM. Взвешенная релевантность §9.1 в get_competitors: geo(.30)+class(.25)+price(.20)+stage_at_horizon(.25), horizon-aware (конкурент, распроданный к нашему выходу → ниже). class vs локальный доминирующий класс. Order by relevance DESC (distance сохранён). relevance_breakdown для §16. **Additive/безопасно для live-endpoint:** все legacy-поля целы, новые Optional, **ноль фронт-консьюмеров /competitors** (UI на /analyze). sold-count вложен в существующий price-запрос (#227 зелёный). Graceful (thin→0.5). 57 тестов. code-reviewer opus ✅ (прогнал endpoint через моки). Часть #944. Closes #949.
Light1YT added 1 commit 2026-06-02 19:45:37 +00:00
Adds deterministic horizon-aware relevance_weight ∈[0,1] to get_competitors
(ТЗ §9.1): weighted mean of geo_proximity (0.30), class_similarity (0.25),
price_similarity (0.20), stage_at_horizon (0.25). stage_at_horizon projects
each competitor's sell-out to horizon_months (request param, default 12) so a
competitor sold-out by our launch ranks lower. class_similarity uses a domrf
class-ladder vs the local dominant class (no target class yet). Orders by
relevance_weight DESC (distance still present + tie-break). relevance_breakdown
(4 sub-scores) exposed for explainability (§16).

Additive: all legacy Competitor fields intact, new fields Optional; zero
frontend consumers of /competitors (UI uses /analyze). sold-count folded into
existing price query (no extra db.execute, #227 regression green). Graceful:
thin data → neutral 0.5. 57 new pure-helper tests. Completes #949.
Light1YT merged commit 59be55f80e into main 2026-06-02 19:45:39 +00:00
Light1YT deleted branch feat/949b-competitor-relevance-weight 2026-06-02 19:45:39 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#1000
No description provided.