diff --git a/docs/todo-2026-05-29.md b/docs/todo-2026-05-29.md new file mode 100644 index 0000000..2dc8159 --- /dev/null +++ b/docs/todo-2026-05-29.md @@ -0,0 +1,88 @@ +# ToDo — 29.05.2026 (оповещения SAC + «Настройки») + +Контекст: при **`UseSAC=exclusive`** на агентах Telegram/email с хоста **не идут** — оператору нужны оповещения **из SAC**. Аналитика и прочее — отдельно ([analytics-backlog.md](analytics-backlog.md)). + +--- + +## Уже есть в коде (не путать с «ещё не сделано») + +| Что | Где | Ограничение | +|-----|-----|-------------| +| Telegram из SAC | `backend/app/services/telegram_notify.py` | Только если в `sac-api.env`: `TELEGRAM_ENABLED=true`, токен, chat_id | +| Порог severity | `telegram_min_severity` (по умолчанию **`high`**) | События **`info`** (успешный RDP `rdp.login.success`) **не** уходят в TG, пока порог не снизить до `warning` | +| Вызов при ingest | `events.py` → `notify_event` / `notify_problem` | Шаблон короткий («🚨 SAC событие»), не как у агента | +| UI «Настройки» | — | **Нет** — только env-файл на сервере | +| Email / webhook | TZ F-NOT-01 | **Не реализованы** в backend | + +**Вывод на завтра:** для exclusive нужно (1) включить и настроить TG на сервере SAC **или** (2) сделать раздел **«Настройки»** в UI + хранение каналов; порог **`warning` и выше** для событий и problems. + +**Замечание по коду:** `notify_problem()` сейчас **не проверяет** `telegram_min_severity` (в отличие от `notify_event`) — исправить в рамках `notif-03`. + +--- + +## Задачи (приоритет) + +### P0 — exclusive + Telegram + +| ID | Задача | Критерий | +|----|--------|----------| +| `notif-01` | Зафиксировать в `agent-integration.md` / runbook: при **exclusive** канал оповещений = SAC; рекомендуемый `TELEGRAM_MIN_SEVERITY=warning` (или `high` только для prod-шума) | Документ + пример `sac-api.env` | +| `notif-02` | Проверить на staging: ingest `rdp.login.failed` (warning) → TG; `rdp.login.success` (info) → нет TG при `min=warning` | Чеклист в E2E | +| `notif-03` | `notify_problem`: учитывать `telegram_min_severity`; опционально отдельный порог для problems | Unit-тест | + +### P1 — UI «Настройки» (каналы) + +| ID | Задача | Критерий | +|----|--------|----------| +| `notif-10` | Маршрут `/settings`, пункт в сайдбаре (только admin JWT) | Страница открывается | +| `notif-11` | Блок **Telegram**: enabled, bot token, chat id, min severity (`info`/`warning`/`high`/`critical`) | GET/PUT API + форма | +| `notif-12` | Хранение: **вариант A** — запись в БД `notification_channels` + fallback на env; **вариант B** — только env, UI read-only | Решение в комментарии к PR | +| `notif-13` | Секреты: токен не возвращать целиком в GET (маска `***…last4`); запись только при изменении | Без утечки в логах/UI | +| `notif-14` | Кнопка «Проверить Telegram» → тестовое сообщение | 200 / понятная ошибка | + +### P2 — Email и webhook (после Telegram) + +| ID | Задача | Критерий | +|----|--------|----------| +| `notif-20` | SMTP: host, port, user, from, to, TLS — по аналогии с RDP `login_monitor.settings` | Отправка тестового письма | +| `notif-21` | Webhook: URL, optional secret header, JSON payload (event/problem) | POST на httpbin/staging | +| `notif-22` | TZ F-NOT-02 урезанно: правило «severity ≥ X → каналы» без сложного конструктора | Одна строка в настройках | + +### P3 — Качество сообщений (можно сдвинуть) + +| ID | Задача | +|----|--------| +| `notif-30` | Шаблон TG ближе к агенту (HTML, поля user/ip/logon_type из `details`) | +| `notif-31` | Cooldown/dedup на уровне SAC (F-NOT-03) — не дублировать problem при burst | +| `notif-32` | F-NOT-05: daily report из SAC при exclusive (отдельный эпик) | + +--- + +## Связь с агентами + +```text +UseSAC=off → только агент (Telegram на хосте) +UseSAC=dual → агент + SAC ingest (+ опционально SAC TG, риск дублей) +UseSAC=exclusive→ только SAC ingest; TG/email = настройки SAC (UI/env) +``` + +--- + +## Оценка на день + +| Блок | Часы (оценка) | +|------|----------------| +| P0 док + notif-03 + smoke | 2–3 | +| P1 UI Settings + API Telegram | 4–6 | +| P2 webhook/email | +1 день | + +**Минимум на завтра:** `notif-01` … `notif-03` + черновик `notif-10` … `notif-14` (хотя бы API без полировки UI). + +--- + +## См. также + +- [TZ.md](TZ.md) §4.6 F-NOT-01 … F-NOT-05 +- [agent-integration.md](agent-integration.md) — режимы UseSAC +- `backend/app/config.py` — `telegram_*` +- `backend/app/services/telegram_notify.py` diff --git a/docs/work-plan.md b/docs/work-plan.md index effaca6..021c59f 100644 --- a/docs/work-plan.md +++ b/docs/work-plan.md @@ -155,6 +155,14 @@ gantt --- +## Следующий рабочий день (29.05.2026) + +Оповещения SAC при **`UseSAC=exclusive`** (Telegram warning+, UI «Настройки»): **[todo-2026-05-29.md](todo-2026-05-29.md)**. + +Отложенная аналитика: **[analytics-backlog.md](analytics-backlog.md)**. + +--- + ## См. также - [install-ubuntu-24.04.md](install-ubuntu-24.04.md) — подготовка сервера