feat(forecast-ui): confidence band на ForecastChart — качественный интервал уверенности (#1926) #2368

Merged
bot-backend merged 1 commit from feat/forecast-confidence-band into main 2026-07-04 02:21:45 +00:00
Collaborator

Что

ForecastChart (§22-прогноз на /site-finder/analysis) рисовал прогнозные линии без интервала — прямое нарушение ui-conventions («predictions без confidence interval запрещены»). Теперь: band вокруг фокусной линии дефицита + прогнозные линии пунктиром (HouseCanary-паттерн).

Как (честность)

В §22-payload численных квантилей НЕТ — только качественный confidence (high/medium/low) per-горизонт. Band строится полушириной из уровня (confidenceBandHalfWidth: high ±0.10 / medium ±0.20 / low ±0.32 — ниже уверенность, шире интервал) и явно подписан в легенде и тултипе «качественный, не p25/p75» — никаких выдуманных квантилей. ECharts-идиома «нижняя граница + ширина» через stack + stackStrategy:"all" (обязателен: нижняя граница бывает отрицательной), кламп к [−1,1], служебная серия скрыта из легенды/тултипа. Цвета зеркалят --prediction-line/--prediction-band (canvas-исключение задокументировано).

Деградации

Нет confidence / нет base-сценария / один горизонт / пустой forecasts → band тихо выключается (fail-closed к «без интервала», не к фейку).

Проверки

  • code-reviewer: APPROVE (stack-идиома, кламп, tooltip-фильтрация, деградации — трассированы)
  • tsc/next lint/prettier чисто; vitest helpers 38/38 в worktree агента (в ревью-worktree vitest падал на rollup native-module — env-шум, CI прогонит на чистом install)
  • Пункты 2 и 3 из #1926 (velocity proxy-disclosure, h1) проверены — уже в main

Post-merge

Скриншот живого ForecastChart на gendsgn.ru: пунктирные линии + голубой band, легенда «Интервал уверенности (качественный)».

Refs #1926.

## Что ForecastChart (§22-прогноз на /site-finder/analysis) рисовал прогнозные линии без интервала — прямое нарушение ui-conventions («predictions без confidence interval запрещены»). Теперь: band вокруг фокусной линии дефицита + прогнозные линии пунктиром (HouseCanary-паттерн). ## Как (честность) В §22-payload численных квантилей НЕТ — только качественный `confidence` (high/medium/low) per-горизонт. Band строится полушириной из уровня (`confidenceBandHalfWidth`: high ±0.10 / medium ±0.20 / low ±0.32 — ниже уверенность, шире интервал) и **явно подписан в легенде и тултипе «качественный, не p25/p75»** — никаких выдуманных квантилей. ECharts-идиома «нижняя граница + ширина» через stack + `stackStrategy:"all"` (обязателен: нижняя граница бывает отрицательной), кламп к [−1,1], служебная серия скрыта из легенды/тултипа. Цвета зеркалят `--prediction-line`/`--prediction-band` (canvas-исключение задокументировано). ## Деградации Нет confidence / нет base-сценария / один горизонт / пустой forecasts → band тихо выключается (fail-closed к «без интервала», не к фейку). ## Проверки - code-reviewer: ✅ APPROVE (stack-идиома, кламп, tooltip-фильтрация, деградации — трассированы) - tsc/next lint/prettier чисто; vitest helpers 38/38 в worktree агента (в ревью-worktree vitest падал на rollup native-module — env-шум, CI прогонит на чистом install) - Пункты 2 и 3 из #1926 (velocity proxy-disclosure, h1) проверены — уже в main ## Post-merge Скриншот живого ForecastChart на gendsgn.ru: пунктирные линии + голубой band, легенда «Интервал уверенности (качественный)». Refs #1926.
bot-backend added 1 commit 2026-07-04 02:19:17 +00:00
feat(forecast-ui): confidence band на ForecastChart — качественный, по уровню уверенности (#1926)
All checks were successful
CI / changes (pull_request) Successful in 8s
CI Trade-In / changes (pull_request) Successful in 8s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Successful in 1m8s
CI / openapi-codegen-check (pull_request) Successful in 1m59s
2fd13d3cd3
В §22-payload нет численных квантилей (p25/p75) — только качественный
confidence per-горизонт. Band строится полушириной из уровня уверенности
(high +-0.10 / medium +-0.20 / low +-0.32) вокруг фокусной линии дефицита
(base-сценарий, иначе single fallback), ECharts stack + stackStrategy
'all' (иначе отрицательная нижняя граница не стакается), кламп к [-1,1].
Легенда и тултип явно подписывают интервал как качественный, не p25/p75
— без выдуманных квантилей. Линии прогноза переведены на пунктир
(ui-conventions: prediction = dashed + band). Пункты 2 (velocity
proxy-disclosure) и 3 (h1) из #1926 уже были в main.
bot-backend merged commit ae814706a2 into main 2026-07-04 02:21:45 +00:00
bot-backend deleted branch feat/forecast-confidence-band 2026-07-04 02:21:46 +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#2368
No description provided.