feat(site-finder): G5 gate verdict banner (#32 sub-PR 2/2 FINAL) #143

Merged
lekss361 merged 1 commit from feat/32-gate-verdict-banner into main 2026-05-14 22:09:35 +00:00
lekss361 commented 2026-05-14 22:03:54 +00:00 (Migrated from github.com)

Summary

#32 G5 Gate Verdict — sub-PR 2/2 FINAL. Coloured banner на верху OverviewTab.

Label Color Icon
Можно green
Нельзя red 🚫
С ограничениями amber ⚠️
Нужна проверка grey

Features

  • Header: "МКД: " + counts + source freshness chip
  • Expand 'Подробнее' → blockers/warnings list + checks_performed
  • Graceful absent → если gate_verdict undefined, banner НЕ рендерится

TS types

GateVerdict, GateBlocker, GateWarning, exhaustive union types.

Checks

  • tsc: 0 errors
  • ESLint: 0 warnings

Vault

code/modules/Module_Gate_Verdict_Banner.md

Closes #32
Refs: #94 (foundation), #140 (backend)

## Summary **#32 G5 Gate Verdict — sub-PR 2/2 FINAL**. Coloured banner на верху OverviewTab. | Label | Color | Icon | |---|---|---| | Можно | green | ✅ | | Нельзя | red | 🚫 | | С ограничениями | amber | ⚠️ | | Нужна проверка | grey | ❓ | ## Features - Header: "МКД: <verdict>" + counts + source freshness chip - Expand 'Подробнее' → blockers/warnings list + checks_performed - Graceful absent → если `gate_verdict` undefined, banner НЕ рендерится ## TS types `GateVerdict`, `GateBlocker`, `GateWarning`, exhaustive union types. ## Checks - tsc: 0 errors - ESLint: 0 warnings ## Vault `code/modules/Module_Gate_Verdict_Banner.md` Closes #32 Refs: #94 (foundation), #140 (backend)
lekss361 commented 2026-05-14 22:09:20 +00:00 (Migrated from github.com)

Bot review (SHA 2ad3797, CI ) — closes #32

Финальный sub-PR 2/2 для G5 Gate Verdict. Закрывает #32 полностью.

TS types — точное зеркалирование backend

GateVerdictSource = "nspd_dump" | "nspd_dump_partial" | "no_data" — match backend Literal
GateVerdictLabel = "Можно" | "Нельзя" | "С ограничениями" | "Нужна проверка" — match backend strings (exhaustive union)
GateBlocker / GateWarning{code, detail} совпадают с backend TypedDict
can_build_mkd: boolean | "unknown" — match backend bool | Literal["unknown"]
gate_verdict?: GateVerdict на ParcelAnalysis — optional, не ломает существующий код / pre-G5 backend versions

OverviewTab integration

Graceful absent: {data.gate_verdict && <GateVerdictBanner ... />} — если backend без поля или response из старого деплоя, banner просто не рендерится (no crash)
Banner на верху OverviewTab, перед ConfidenceBadge — соответствует G5 UX intent (most important signal at top)
Inline G5 (#32) reference — traceability в коде

Минор

gate_verdict?: GateVerdict (optional) на ParcelAnalysis даёт graceful degradation. Можно сделать обязательным (без ?) в следующем breaking-version, после того как все backend deploy'ы включают поле — но сейчас опционально безопаснее.

approve merge

## Bot review (SHA `2ad3797`, CI ✅) — closes #32 Финальный sub-PR 2/2 для G5 Gate Verdict. Закрывает #32 полностью. ### TS types — точное зеркалирование backend ✅ **`GateVerdictSource`** = `"nspd_dump" | "nspd_dump_partial" | "no_data"` — match backend Literal ✅ **`GateVerdictLabel`** = `"Можно" | "Нельзя" | "С ограничениями" | "Нужна проверка"` — match backend strings (exhaustive union) ✅ **`GateBlocker` / `GateWarning`** — `{code, detail}` совпадают с backend TypedDict ✅ **`can_build_mkd: boolean | "unknown"`** — match backend `bool | Literal["unknown"]` ✅ **`gate_verdict?: GateVerdict`** на `ParcelAnalysis` — optional, не ломает существующий код / pre-G5 backend versions ### OverviewTab integration ✅ **Graceful absent**: `{data.gate_verdict && <GateVerdictBanner ... />}` — если backend без поля или response из старого деплоя, banner просто не рендерится (no crash) ✅ Banner на верху OverviewTab, перед `ConfidenceBadge` — соответствует G5 UX intent (most important signal at top) ✅ Inline G5 (#32) reference — traceability в коде ### Минор `gate_verdict?: GateVerdict` (optional) на ParcelAnalysis даёт graceful degradation. Можно сделать обязательным (без `?`) в следующем breaking-version, после того как все backend deploy'ы включают поле — но сейчас опционально безопаснее. approve merge
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#143
No description provided.