fix(site-finder): P3 a11y/UI batch from audit #1871 #1878

Merged
bot-backend merged 1 commit from audit/1871-p3-uiux into main 2026-06-23 07:55:25 +00:00
Collaborator

Summary

Audit-issue #1871🟡 P3 UI/a11y batch (frontend-only).

  • <h1> добавлен на analysis-страницу (иерархия стартовала с h2 — a11y/SEO)
  • emoji → Lucide во всех вердикт/баннер/статус UI (ui-conventions: emoji запрещены):
    • GateVerdictBannerVerdictColor.icon string→ComponentType, sourceHint→ReactNode, SectionLabels
    • + найдены ещё 3 файла (grep): OverviewTab (⚠ ЛЭП/трамвай), GeotechRiskBlock (🟡→Snowflake, ⚠), HydrologyBlock (⚠ + 🏞💦🪷🚣💧 subtype-map → Waves/Droplet)
    • все иконки декоративные → aria-hidden, семантика дублируется текстом; цвета через var(--success/--warn/--danger) + hex-fallback
  • расшифровка аббревиатур (ui-microcopy): Section2 ОЗ/ЗОУИТ полным предложением; Section4 ЗОУИТ title-tooltip
  • ForecastChart axis-chrome hex задокументирован как canvas-renderer исключение (echarts canvas не резолвит var() — применение сломало бы chrome, как и VIZ-series). Цвета не тронуты.

Не в scope (зафиксировано)

  • ForecastChart CI-band (±p25/p75) — backend НЕ отдаёт p25/p75, confidenceLevelToValue не вызывается → нужны backend-данные, отдельная задача
  • в WeightProfilePanel <option> — SVG в <option> невозможен
  • токенизация legacy-hex в Geotech/Hydrology (иконки совпадают с цветом соседнего текста) — отдельный token-pass

Test plan

  • 138 frontend vitest passed, tsc/lint clean
  • lucide-react уже в deps (lockfile не тронут)
  • code-reviewer APPROVE
  • post-deploy: h1 на странице анализа; вердикт-баннер с Lucide-иконками; ЗОУИТ расшифрован

Refs #1871

🤖 Generated with Claude Code

## Summary Audit-issue #1871 — 🟡 P3 UI/a11y batch (frontend-only). - **`<h1>`** добавлен на analysis-страницу (иерархия стартовала с h2 — a11y/SEO) - **emoji → Lucide** во всех вердикт/баннер/статус UI (ui-conventions: emoji запрещены): - `GateVerdictBanner` — `VerdictColor.icon` string→ComponentType, sourceHint→ReactNode, SectionLabels - **+ найдены ещё 3 файла** (grep): `OverviewTab` (⚠ ЛЭП/трамвай), `GeotechRiskBlock` (🟡→Snowflake, ⚠), `HydrologyBlock` (⚠ + 🏞💦🪷🚣💧 subtype-map → Waves/Droplet) - все иконки декоративные → `aria-hidden`, семантика дублируется текстом; цвета через `var(--success/--warn/--danger)` + hex-fallback - **расшифровка аббревиатур** (ui-microcopy): Section2 ОЗ/ЗОУИТ полным предложением; Section4 ЗОУИТ title-tooltip - **ForecastChart** axis-chrome hex задокументирован как canvas-renderer исключение (echarts canvas не резолвит `var()` — применение сломало бы chrome, как и VIZ-series). Цвета не тронуты. ## Не в scope (зафиксировано) - **ForecastChart CI-band** (±p25/p75) — backend НЕ отдаёт p25/p75, `confidenceLevelToValue` не вызывается → нужны backend-данные, отдельная задача - `★` в `WeightProfilePanel <option>` — SVG в `<option>` невозможен - токенизация legacy-hex в Geotech/Hydrology (иконки совпадают с цветом соседнего текста) — отдельный token-pass ## Test plan - [x] 138 frontend vitest passed, tsc/lint clean - [x] lucide-react уже в deps (lockfile не тронут) - [x] code-reviewer ✅ APPROVE - [ ] post-deploy: h1 на странице анализа; вердикт-баннер с Lucide-иконками; ЗОУИТ расшифрован Refs #1871 🤖 Generated with [Claude Code](https://claude.com/claude-code)
bot-backend added 1 commit 2026-06-23 07:52:57 +00:00
fix(site-finder): P3 a11y/UI batch from audit #1871
All checks were successful
CI / openapi-codegen-check (pull_request) Successful in 1m46s
CI / changes (pull_request) Successful in 6s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Successful in 48s
f7773c71d4
- add <h1> page title to analysis page (иерархия стартовала с h2 — a11y)
- emoji → Lucide во всех вердикт/баннер/статус UI (ui-conventions: emoji
  запрещены): GateVerdictBanner (VerdictColor.icon string→ComponentType,
  sourceHint→ReactNode, SectionLabels), + найдены ещё 3 файла:
  OverviewTab (⚠ ЛЭП/трамвай), GeotechRiskBlock (🟡 вечная мерзлота → Snowflake,
  ⚠ загрязнение), HydrologyBlock (⚠ паводок, 🏞💦🪷🚣💧 subtype-map → Waves/Droplet).
  Все иконки декоративные → aria-hidden, семантика дублируется текстом.
  Семантические цвета через var(--success/--warn/--danger) + hex-fallback.
- расшифровка аббревиатур при первом упоминании (ui-microcopy):
  Section2 «строительство в охранной зоне (ОЗ)... зоне с особыми условиями
  использования территорий (ЗОУИТ), тип 5»; Section4 title-tooltip для ЗОУИТ.
- ForecastChart: axis-chrome hex (:65/67/68) задокументирован как canvas-renderer
  исключение (echarts canvas не резолвит CSS var() — var() сломал бы chrome,
  как и VIZ-series). Цвета не тронуты, только комментарий.

НЕ в scope: ForecastChart CI-band (±p25/p75 — backend не отдаёт, отдельная
задача); ★ в WeightProfilePanel <option> (SVG в option невозможен);
токенизация legacy-hex в Geotech/Hydrology (отдельный pass).

138 frontend vitest passed, tsc/lint clean. lucide-react уже в deps.

Refs #1871
bot-backend merged commit f13eac3b97 into main 2026-06-23 07:55:25 +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#1878
No description provided.