Scraper resume: - /admin/scrape/queue autoclean уменьшен с 60min started_at до 10min COALESCE(heartbeat_at, started_at). Не режет валидные long sweeps. - Phase A пишет heartbeat после каждого objStatus fetch (3min Phase A больше не рискует быть отмеченной как zombie при новом 10min threshold). Recommend (Уровень 1 калькулятор): - POST /api/v1/analytics/recommend/mix с velocity baseline (sale_graph), price elasticity (regr_slope/r2 на sale_graph, fallback -1.5), inverse mode (target_months → required price_factor), liquidity score 24mo, headline. - /analytics/recommend: RecommendVelocityPanel (price slider 0.85..1.15 + 4 KPI Чек/Срок/Темп/Ликвидность + методология эластичности), RecommendLiquidityChart (cumulative 0..36 mo с пунктиром на 24). - BucketsTable: +колонки Темп и Срок, цены/выручка масштабируются по priceFactor live. - Все слайдеры и target_months считаются клиентски — никаких round-trip. Fix: SQLAlchemy не парсит :cls::text — заменено на CAST(:cls AS TEXT). |
||
|---|---|---|
| .. | ||
| api | ||
| core | ||
| models | ||
| schemas | ||
| services | ||
| workers | ||
| __init__.py | ||
| main.py | ||