feat(ptica): Отчёты + Сравнение cockpit tabs [PR#3] #1833

Merged
lekss361 merged 1 commit from feat/ptica-cockpit-pr3-reports-compare into main 2026-06-20 12:33:19 +00:00
Collaborator

Стэкнут на #1832 (база feat/ptica-cockpit-pr2-scenarios) — диф только дельта инкремента 3.

«Отчёты» — реальный экспорт (переиспользование инфры)

  • PDF снимок — реал, GET /api/v1/parcels/{cad}/snapshot.pdf через тот же API_BASE_URL+triggerDownload, что и ExportButtons (не хардкод URL);
  • CSV сырьё — реал, клиентская генерация (сохранён CWE-1236 escaping + UTF-8 BOM);
  • §22 DOCX/PPTX — реал, /forecast/export?format=, gated на forecast-ready (disabled «готовится» пока не готов; честный 404);
  • Полный отчёт DOCX/PPTXdisabled «скоро» (эндпоинта нет → не триггерят скачивание, без фейка);
  • «Состав отчёта» — чек-лист секций (TOC снимка).

«Сравнение» — реальная встроенная таблица

  • Переиспользует compare-shortlist.ts (localStorage, COMPARE_MAX, isValidCad) + ParcelCompareLoader (тот же per-cad useParcelAnalyzeQuery, общий кеш) — реальные метрики, НЕ выдуманные;
  • текущий участок авто-pin (не удаляется, в лимите), валидируемый кадастр-инпут, removable-чипы;
  • тёмная таблица: подсветка лучшего по строке + цветной вердикт (Можно/С огранич./Нельзя).

Качество

Тема scoped .pticaRoot[data-theme=dark], reuse-only (оригиналы ExportButtons/compare/loader не тронуты, без новых зависимостей), TS strict без any, tsc/lint/prettier . code-reviewer APPROVE (был адверсариальный по фейк-экспорту и rules-of-hooks — оба чисты).

Дальше: PR#4 «16 drawer'ов» → PR#5 «3D-масса».

**Стэкнут на #1832** (база `feat/ptica-cockpit-pr2-scenarios`) — диф только дельта инкремента 3. ## «Отчёты» — реальный экспорт (переиспользование инфры) - **PDF снимок** — реал, `GET /api/v1/parcels/{cad}/snapshot.pdf` через тот же `API_BASE_URL`+`triggerDownload`, что и `ExportButtons` (не хардкод URL); - **CSV сырьё** — реал, клиентская генерация (сохранён CWE-1236 escaping + UTF-8 BOM); - **§22 DOCX/PPTX** — реал, `/forecast/export?format=`, **gated** на forecast-ready (disabled «готовится» пока не готов; честный 404); - **Полный отчёт DOCX/PPTX** — **disabled «скоро»** (эндпоинта нет → не триггерят скачивание, без фейка); - «Состав отчёта» — чек-лист секций (TOC снимка). ## «Сравнение» — реальная встроенная таблица - Переиспользует `compare-shortlist.ts` (localStorage, `COMPARE_MAX`, `isValidCad`) + `ParcelCompareLoader` (тот же per-cad `useParcelAnalyzeQuery`, общий кеш) — реальные метрики, НЕ выдуманные; - текущий участок авто-pin (не удаляется, в лимите), валидируемый кадастр-инпут, removable-чипы; - тёмная таблица: подсветка лучшего по строке + цветной вердикт (Можно/С огранич./Нельзя). ## Качество Тема scoped `.pticaRoot[data-theme=dark]`, **reuse-only** (оригиналы ExportButtons/compare/loader не тронуты, без новых зависимостей), TS strict без `any`, tsc/lint/prettier ✅. **code-reviewer ✅ APPROVE** (был адверсариальный по фейк-экспорту и rules-of-hooks — оба чисты). Дальше: PR#4 «16 drawer'ов» → PR#5 «3D-масса».
bot-backend added 1 commit 2026-06-20 10:58:55 +00:00
Reports: dark export cards reusing real infra — PDF snapshot (/snapshot.pdf
via shared API_BASE_URL+triggerDownload), client-side CSV (formula-injection
guard + UTF-8 BOM preserved), §22 forecast DOCX/PPTX gated on forecast-ready
with honest 404; full-report DOCX/PPTX disabled «скоро» (no endpoint). Section
checklist mirrors the snapshot TOC.

Compare: reuses compare-shortlist (localStorage, COMPARE_MAX) + ParcelCompareLoader
for real per-cad analyze metrics (shared cache, rules-of-hooks safe via keyed
loader). Current cad auto-pinned + non-removable, validated кадастр input,
removable chips. Dark comparison table with winner highlight + colour-coded
verdict (Можно/С огранич./Нельзя).

Dark styles scoped under .pticaRoot[data-theme=dark]; reuse-only (ExportButtons,
compare page, loaders untouched); no new deps. TS strict, no any.
lekss361 changed target branch from feat/ptica-cockpit-pr2-scenarios to main 2026-06-20 12:33:09 +00:00
lekss361 merged commit 708d8b5aed into main 2026-06-20 12:33:19 +00:00
lekss361 deleted branch feat/ptica-cockpit-pr3-reports-compare 2026-06-20 12:33:19 +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#1833
No description provided.