[site-finder] EPIC 4: Сущность «Инсайт» (ручная, ACL) + «Локация» как первый класс #948

Closed
opened 2026-06-02 16:32:02 +00:00 by Light1YT · 1 comment
Owner

Часть #944 (Site Finder v2 / ТЗ ГенГеныч).

Статус: NEW · Приоритет: P1 · ТЗ §7.13, 8.2, 8.9

Scope

insight таблица/API/CRUD с ACL-полями (§7.13, §8.9) — ручной ввод, маркировка «непублично», gate по роли. Локацию (§8.2) из строки-района → first-class entity с индексами (инфра/конкуренция/спрос/будущее предложение).

Зависимости: EPIC18(roles)
С нуля (NEW).

**Часть #944 (Site Finder v2 / ТЗ ГенГеныч).** Статус: **NEW** · Приоритет: **P1** · ТЗ §7.13, 8.2, 8.9 ## Scope insight таблица/API/CRUD с ACL-полями (§7.13, §8.9) — ручной ввод, маркировка «непублично», gate по роли. Локацию (§8.2) из строки-района → first-class entity с индексами (инфра/конкуренция/спрос/будущее предложение). **Зависимости:** EPIC18(roles) **С нуля (NEW).**
Light1YT added the
GG-форсайт
site-finder
labels 2026-06-02 16:32:02 +00:00
lekss361 added this to the Site Finder v2 — Foresight (GG-форсайт) milestone 2026-06-02 19:02:50 +00:00
Collaborator

Закрыто после мега-детального closure-аудита (deep-code-reviewer) по запросу — verdict CLEAN.

DoD §7.13/§8.2/§8.9 покрыт полностью:

  • Insight: таблица + CRUD + ACL (is_confidential, created_by неспуфится — берётся из X-Authenticated-User, не из тела), §19-аудит insight_write (PR #1164).
  • Location: district-string → first-class entity, 4 индекса infra/competition/demand/future_supply (PR #1166).
  • demand_index фикс (PR #1167): был clamp01(velocity/50) — на live-verify все 8 районов ЕКБ давали 1.0 (ноль дискриминации); стал city-relative (район / max по городу), зеркаля infra. Regression-тест залочен.

Аудит: 100/100 тестов, psycopg-v3 clean, миграции идемпотентны (144/145/146/147), ACL-решение «analyst видит confidential» — by-design (#962). competition/infra само-калибруются.

Follow-up (не блокер): future_supply использует фикс. 18-мес saturation (тот же shape, что и старый демандовый баг, но calibrated + pre-existing из #950) — спот-чек на live-данных при следующем refresh.

Закрыто после мега-детального closure-аудита (deep-code-reviewer) по запросу — verdict **CLEAN**. **DoD §7.13/§8.2/§8.9 покрыт полностью:** - **Insight**: таблица + CRUD + ACL (`is_confidential`, `created_by` неспуфится — берётся из `X-Authenticated-User`, не из тела), §19-аудит `insight_write` (PR #1164). - **Location**: district-string → first-class entity, 4 индекса infra/competition/demand/future_supply (PR #1166). - **demand_index фикс** (PR #1167): был `clamp01(velocity/50)` — на live-verify все 8 районов ЕКБ давали 1.0 (ноль дискриминации); стал **city-relative** (район / max по городу), зеркаля infra. Regression-тест залочен. **Аудит:** 100/100 тестов, psycopg-v3 clean, миграции идемпотентны (144/145/146/147), ACL-решение «analyst видит confidential» — by-design (#962). competition/infra само-калибруются. **Follow-up (не блокер):** `future_supply` использует фикс. 18-мес saturation (тот же *shape*, что и старый демандовый баг, но calibrated + pre-existing из #950) — спот-чек на live-данных при следующем refresh.
Sign in to join this conversation.
No project
No assignees
2 participants
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#948
No description provided.