План stage12 observability hardening
stepan edited this page 2026-09-13 00:17:00 +03:00

Перенесено из репозитория (docs/superpowers/plans/2026-09-10-deal-stage12-observability-hardening.md). Актуальная версия — здесь, в вики.

Дейл (Deal) — Этап 12: Наблюдаемость, устойчивость и производительность

Исторический документ этапа 12. Актуальное состояние — docs/superpowers/STATUS.md и docs/technical/Техническая-документация-Дейл.md.

Goal: закрыть автономные заделы (без кредов и продуктовых решений): метрики Prometheus, распределённый rate-limit и инвалидация сессий, авто-очистки, перф фронта/бэка.

Пакеты (порядок исполнения A → B → C → D).

Пакет A — Метрики (Prometheus + Grafana)

  • Экспорт метрик по всем 4 процессам: HTTP/gRPC RPS, latency (p50/p95), ошибки 5xx, активные сессии, глубины очередей (pipeline, ML-outbox), счётчики токенов/аудита.
  • Общая обвязка для 3 сервисов — в Deal.Grpc.Hosting; core — в Deal.Api.
  • Эндпоинт /metrics (Prometheus-формат); сервис prometheus в профиле observability (deploy/compose*.yml), scrape-конфиг, Grafana-дашборды метрик + провайжининг datasource Prometheus.
  • Документация: как поднять профиль, где графики.

Пакет B — Безопасность/устойчивость

  • Распределённый rate-limit (хранилище на Postgres — без новой инфры) вместо in-memory; бэкенд учёта попыток входа (LoginAttemptGuard) на Postgres.
  • Мгновенный разлогин suspended-сессий: при suspend тенанта активные сессии перестают действовать (проверка статуса/инвалидация).
  • Авто-purge audit_log (retention, настройка/константа) и auto-purge истории tenant_limits.
  • Юнит-тесты + curl-приёмка в Docker.

Пакет C — Производительность

  • Фронт: вынести словарь i18n в ленивый чанк (устранить предупреждение >500 kB); пагинация/виртуализация длинных колонок.
  • telegram-service: LRU-кэши WTelegram (снижение памяти).
  • Механизм миграций на 1000 схем (производительность провижининга).
  • Линтер i18n включить в общий прогон scripts/test.sh.

Пакет D — ИИ/ML без кредов

  • reclassify на реальном ИИ: проводка + graceful-fallback/заглушка без кредов; тесты на Local-stub.
  • Расширение учёта токенов ML-пути (метрики/события).

Границы

  • Не входит (нужны креды/решения владельца): реальный Telegram-вход, живые LLM-вызовы, биллинг/планы, саморегистрация, Kafka, k8s/Cloudflare, ML export/import, переключатель языка/второй язык (в бэклоге — по потребности).
  • Каждый пакет: build 0/0, core-тесты, npm run build; при поднятии Docker — приёмка и полная остановка в конце (правило «без хвостов»).