# AGIL Calls — что ещё осталось сделать (backlog)

Состояние на текущий момент: работающий MVP (10 пакетов/приложений, 338 тестов,
audit 31/31, e2e 20/20, perf 12/12), развёрнут на https://calls.guardify.ru.
Ниже — всё, что осталось, с приоритетами и оценкой размера. Оценки сроков —
`docs/estimate.md`; масштабирование — `docs/scaling.md`; QA-отчёты —
`docs/qa-functional.md`, `docs/qa-visual.md` (в работе).

Легенда: **P0** — блокер/сделать сразу, **P1** — до продакшена, **P2** — после
запуска, **P3** — nice-to-have. Размер: S (<1 дня), M (2–5 дней), L (1–3
недели), XL (>3 недель, отдельный этап).

## A. Ближайшее (P0/P1, сделать перед показом/продом)

**Статус QA (обновлено):** функциональный QA 296 проверок → F-01…F-06 закрыты
(превью, docs, feature-gating файлов, тема demo, 404, дубли заголовков);
дизайн-критик: P0 тёмная тема, мобильная шапка, дубль уведомлений, имена
плиток, лендинг-типографика — закрыты; остаются контраст смешанных
preset×scheme, иконки, мелкая типографика/таргеты, Guardify CTA. Детали —
`docs/qa-functional.md`, `docs/qa-visual.md`, `docs/qa-icons.md`.

| # | Задача | Размер | Статус |
|---|---|---|---|
| A1 | Найти и исправить баги функционального QA | M | ✅ F-01…F-06 закрыты (ретест v1.1) |
| A2 | Визуальные P0/P1 (тёмная тема, шапка, дубли, имена) | M | ✅ закрыто, кроме контраста смешанных схем |
| A2b | Контраст preset×scheme (minimal+dark ссылки 1.0, night/light/dark-комбо, бейджи) | M | 🔄 в работе (frontend, ~1–1.5 д) |
| A2c | Иконки: единый icon-set (16/17 расходятся), замок/сброс/key/palette/assistant, 7 unused, брендинг | M | 📋 в бэклоге (~4–5 д, P2) |
| A2d | Мелкая типографика/тач-таргеты widget/editor/dashboard (C7) | M | 📋 P2 |
| A2e | Guardify demo: CTA 3.48:1, дробные размеры, мелкие таргеты (F-35) | S | 📋 P2 |
| A3 | Закрыть публичное демо и docs на проде | S | ⏳ после приёмки |
| A4 | Проверить TURN из внешней сети (UDP 3478/49200–49250) | S | ⏳ |
| A5 | Бэкапы `.data` по расписанию + проверка восстановления | S | ⏳ |
| A6 | Мониторинг/алерты | M | ⏳ |
| A7 | CI/CD (build + tests + audit + e2e на каждый MR) | M | ⏳ |
| A8 | Dependency/container scan | S | ⏳ |
| A9 | Ротация секретов/ключей (demo-ключ уже ротирован; старый в истории git вычищен) | S | ✅ |
| A10 | Проверить восстановление после рестарта | S | ⏳ |

## B. Масштабирование и медиа (P1, отдельный этап)

| # | Задача | Размер | Комментарий |
|---|---|---|---|
| B1 | Интеграция SFU (LiveKit, Apache-2.0) | L | вместо mesh; токены публикации/подписок, `mediaMode:'sfu'` |
| B2 | Мульти-нода signaling: Redis pub/sub + room ownership/lease | L | sticky LB, broadcast чата/присутствия/config/анализа |
| B3 | TURN-пул: реальные health-check, REST-креды (time-limited), гео-выбор | M | контракт `scale.turn` уже есть; нужна проверка allocate |
| B4 | Вебинарный режим `broadcast` на сервере/медиа | L | receive-only зрители, host-only publish, viewer limit, Q&A/raise-hand queue |
| B5 | Стриминг RTMP/HLS (egress-воркер, ffmpeg/LiveKit Egress) | L | `scale.streaming`, YouTube/VK/сайт |
| B6 | CDN для HLS/LL-HLS | M | тысячи пассивных зрителей |
| B7 | Серверная запись (egress) вместо клиентской MediaRecorder | L | запись на масштабе, транскрипт из egress |
| B8 | Хранилище: S3/MinIO для файлов/записей, Postgres для метаданных/аудита | L | сейчас локальные файлы + JSONL |
| B9 | Нагрузочные тесты (k6, webrtc-perf) + capacity-план | M | 100/1 000/10 000 участников |
| B10 | Автоскейлинг и региональные кластеры | XL | Kubernetes/helm, geo-routing, DR |

## C. Безопасность и комплаенс (P1/P2)

| # | Задача | Размер | Комментарий |
|---|---|---|---|
| C1 | OIDC/JWKS: проверка токенов IdP, claim-маппинг | M | `integrations.identity.mode='oidc'` объявлен, не реализован |
| C2 | E2EE (insertable streams) | L | матрица отключённых фич (запись/STT/AI) |
| C3 | Внешний anti-deepfake/voice-clone детектор | M | `AGIL_INTEGRITY_URL` заложен, сетевой вызов не подключён |
| C4 | DLP/AV для файлов, антивирус-скан загрузок | M | интеграция с корпоративным сканером |
| C5 | Распределённый rate-limit (Redis) | M | сейчас in-memory на узел |
| C6 | Vault/KMS для секретов, подпись конфигов | M | сейчас env |
| C7 | Внешний пентест + фикс-ретест | L | обязательный gate перед продом |
| C8 | 152-ФЗ/GDPR: резидентность, DPA, сроки хранения, удаление тенанта | M | процессы + audit |
| C9 | CSP/iframe hardening, postMessage allowlist в проде, WAF | S–M | `allowedOrigins` уже есть, нужна эксплуатация |
| C10 | SSO/SCIM, RBAC админки, аудит действий админов | M | корпоративные клиенты |

## D. Продукт и UX (P2)

| # | Задача | Размер |
|---|---|---|
| D1 | Мобильные SDK: React Native (LiveKit RN) + нативные iOS/Android (CallKit) | XL |
| D2 | Тонкие обёртки `@agil/calls-react`, `@agil/calls-vue` + примеры | S–M |
| D3 | Календарные интеграции (Outlook/Google/CalDAV), ICS | M |
| D4 | Breakout rooms, опросы, Q&A, таймеры | M–L |
| D5 | Доска/аннотации, remote control | L |
| D6 | SIP/PSTN dial-in/out, телефонные номера | XL |
| D7 | Перевод субтитров/речи, мультиязычные captions | L |
| D8 | Шумоподавление RNNoise/Krisp, эхо-подавление на уровне SFU | M |
| D9 | Auto-framing, low-light, speaker spotlight, virtual backgrounds library | M–L |
| D10 | Заметки/выдержки → CRM/Confluence/Notion, action items в трекер | M |
| D11 | Уведомления (email/Telegram/Teams) через `providers.notifications` | S–M |
| D12 | Мобильный PiP, deep links, входящие звонки (push) | L |
| D13 | A11y (WCAG 2.2 AA) + скринридеры, больше локалей (de/es/fr/zh) | M |
| D14 | Белые метки: домены, лого, кастомные шрифты (уже токены) | S |
| D15 | Публичный сайт документации (Docusaurus/mkdocs), changelog | M |
| D16 | SDK в npm/пакеты, семвер, релизный процесс | M |

## E. Инфраструктура/DevOps (P1/P2)

| # | Задача | Размер |
|---|---|---|
| E1 | Helm-чарт/манифесты Kubernetes, HPA, NetworkPolicy | L |
| E2 | IaC (Terraform/Pulumi) для серверов, DNS, TLS, TURN | M |
| E3 | Observability: Prometheus/Grafana, OpenTelemetry-трейсы, логи (Loki) | M |
| E4 | Централизованные бэкапы и DR-план, RTO/RPO | M |
| E5 | CDN + WAF + DDoS-защита | M |
| E6 | Мультирегион/резидентность | XL |
| E7 | Обновления без простоя (rolling), миграции схем | M |
| E8 | Единый ingress для docs/MCP с allowlist (уже env-флаги) | S |

## F. Качество и тестирование (P1/P2)

| # | Задача | Размер |
|---|---|---|
| F1 | QA-находки P0/P1/P2 из `docs/qa-functional.md` | M |
| F2 | Визуальные правки из `docs/qa-visual.md` | M |
| F3 | Браузерная матрица: Chrome/Edge/Firefox/Safari + iOS Safari | M |
| F4 | Visual regression (Playwright screenshots) в CI | M |
| F5 | E2E в CI на staging после каждого деплоя | M |
| F6 | Нагрузочные тесты signaling/TURN/SFU | M |
| F7 | Chaos/failover тесты (падение узла, Redis, SFU) | L |
| F8 | Fuzzing API/WS, security-скан в CI | M |
| F9 | Покрытие unit-тестами widget/UI (сейчас в основном protocol/server/mcp) | M |

## G. Коммерция и организация (P2)

| # | Задача | Размер |
|---|---|---|
| G1 | Биллинг/метрики (минуты, участники, записи), тарифы | L |
| G2 | Мультиарендная админка: создание тенантов, ключи, квоты | M |
| G3 | SLA/SLO, поддержка, статус-страница | S–M |
| G4 | Лицензирование, договор/DPA, юридические тексты | S |
| G5 | Onboarding: демо-сценарии, песочница, туториалы | S–M |

## H. Порядок работ (волны)

1. **Волна 1 (сейчас):** A1–A5 (QA-фиксы, TURN из внешней сети, закрытие
   демо/docs, бэкапы) + B-контракт уже заложен (config/API/UI без реализации).
2. **Волна 2 (2–4 недели):** A6–A9, C7-подготовка, F3–F5, E3, D2, D11, D15,
   B3 (TURN health/REST-креды), B8 (S3/Postgres).
3. **Волна 3 (1–3 месяца):** B1 (SFU), B2 (Redis multi-node), B4 (вебинары),
   B5 (RTMP/HLS), B7 (server recording), C1 (OIDC), C2 (E2EE), D3–D5, D8–D10,
   D12, E1–E2, G1–G2.
4. **Волна 4:** мобильные SDK (D1), SIP/PSTN (D6), перевод (D7), мультирегион
   (B10/E6), сертификации.

Оценка «до Production-ready с SFU и мульти-нодой» — ~4 000 ч / 24 недели
(команда 5,5 FTE), вариант на LiveKit — 5 424 ч / 33 недели; см.
`docs/estimate.md`.

## I. Явно не входит в MVP (non-goals)

Нативные мобильные приложения (этап 2), собственный медиасервер с нуля,
E2EE «из коробки» с записью/STT, SIP-телефония в ближайших волнах, продажа
железа/on-prem-установка «под ключ» без DevOps-команды заказчика.
