feat(export): Telegram summary format (tg) for §22 forecast — slice #959 #1093

Merged
bot-backend merged 1 commit from feat/forecast-export-telegram-959 into main 2026-06-06 18:55:48 +00:00
Collaborator

Что

Третий dep-free формат экспорта §22-отчёта (slice EPIC #959): tg — компактная Telegram-выжимка для шеринга в чат. (MD полный + JSON сырой уже есть; теперь TG компактный.)

Относится к #959 (остаются DOCX/pptx — нужны deps).

Содержимое

  • render_report_telegram_summary(report) в report_md.py — чистый, без новых deps, DRY (переиспользует хелперы из report_pdf). ~9 строк plain-text: заголовок+кад+район, «что строить» вердикт, индекс дефицита, мес. предложения, скор, уверенность, дефицит по сценариям (1 строка), рекомендованный класс, advisory-каваеат. Telegram-safe (• буллеты, без GFM-таблиц/MarkdownV2). Graceful на пустом.
  • GET /{cad}/forecast/export?format=tginline text/plain; charset=utf-8 (НЕ attachment — сниппет для копи-пейста). md/json без изменений; нет рана → 404; невалидный format → 422.

Качество

  • code-reviewer: APPROVE — graceful, DRY, md/json byte-identical (early-return), no deps, Telegram-safe, короткий вывод. 35 тестов в затронутых файлах (982 passed), ruff clean. 2 минора (stale docstring / широкий assert) — doc/cosmetic, non-blocking.

Тест-план (post-deploy)

GET /api/v1/parcels/66:41:0702048:27/forecast/export?format=tg → 200 text/plain inline, компактная выжимка.

## Что Третий dep-free формат экспорта §22-отчёта (slice EPIC **#959**): **`tg`** — компактная Telegram-выжимка для шеринга в чат. (MD полный + JSON сырой уже есть; теперь TG компактный.) Относится к #959 (остаются DOCX/pptx — нужны deps). ## Содержимое - `render_report_telegram_summary(report)` в `report_md.py` — чистый, без новых deps, DRY (переиспользует хелперы из `report_pdf`). ~9 строк plain-text: заголовок+кад+район, «что строить» вердикт, индекс дефицита, мес. предложения, скор, уверенность, дефицит по сценариям (1 строка), рекомендованный класс, advisory-каваеат. Telegram-safe (• буллеты, без GFM-таблиц/MarkdownV2). Graceful на пустом. - `GET /{cad}/forecast/export?format=tg` → **inline** `text/plain; charset=utf-8` (НЕ attachment — сниппет для копи-пейста). md/json без изменений; нет рана → 404; невалидный format → 422. ## Качество - `code-reviewer`: ✅ APPROVE — graceful, DRY, md/json byte-identical (early-return), no deps, Telegram-safe, короткий вывод. 35 тестов в затронутых файлах (982 passed), ruff clean. 2 минора (stale docstring / широкий assert) — doc/cosmetic, non-blocking. ## Тест-план (post-deploy) `GET /api/v1/parcels/66:41:0702048:27/forecast/export?format=tg` → 200 text/plain inline, компактная выжимка.
bot-backend added the
scope/backend
GG-форсайт
site-finder
labels 2026-06-06 18:55:45 +00:00
bot-backend added 1 commit 2026-06-06 18:55:46 +00:00
feat(export): compact Telegram summary export for §22 forecast (#959)
All checks were successful
CI / changes (pull_request) Successful in 7s
CI / changes (push) Successful in 23s
CI / backend-tests (pull_request) Successful in 5m49s
CI / backend-tests (push) Successful in 5m49s
d53b63f92a
render_report_telegram_summary (pure, no new deps, DRY-reuses report_pdf str
helpers) + `tg` format on GET /{cad}/forecast/export → inline text/plain snippet
(no attachment, copy-paste-ready). md/json unchanged; no-run 404, bad format 422.
Graceful on thin/empty reports. Part of EPIC #959.
bot-backend merged commit 579ad54202 into main 2026-06-06 18:55:48 +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#1093
No description provided.