Ревью 2026 09 10 docs audit
stepan edited this page 2026-09-13 00:17:00 +03:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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

Аудит документации «Дейл»: сверка с кодом/конфигами

Исторический документ (аудит документации, 2026-09-10; следующий — 2026-09-11-docs-final-sweep.md). Актуальное состояние — docs/superpowers/STATUS.md и docs/technical/Техническая-документация-Дейл.md.

Дата: 2026-09-11 Проверено: docs/spec/ТЗ-дейл-новая-архитектура.md, docs/user-guide/Инструкция-пользователя-Дейл.md, docs/technical/Техническая-документация-Дейл.md, docs/api/api-map.md, плюс docs/superpowers/STATUS.md. Метод: сверка утверждений с кодом (src/core/Deal.Api/Endpoints/*, src/core/Deal.Infrastructure/**, src/frontend/src/**, src/{ai,ml,telegram}-service), конфигами (deploy/compose.*.yml, appsettings*.json) и скриптами (scripts/*.sh). Докер не поднимался, тесты не перезапускались (см. «непроверяемое»).

Сводка

  • Найдено расхождений: 30 (по пунктам таблиц ниже).
  • Исправлено прямо в доках: 30.
  • Значимые подтверждённые факты, с которыми доки сходятся: порты (core 5080/5082, telegram 5101, ai 5102, ml 5103, metrics 9464, postgres 5433, minio 9000/9001, grafana 3001), единые домены /api/cards + /api/containers, оператор-консоль #/operator и активация #/join, ключи Telegram — у оператора (global_settings), команды запуска.

Расхождения (файл:строка → в доке → реальность → исправлено)

docs/technical/Техническая-документация-Дейл.md

# Место В доке Реальность (код) Статус
1 §2 «Структура» (~L43) проект Deal.Modules.Projects/ каталога нет; есть Deal.Modules.Telegram/ исправлено на Deal.Modules.Telegram
2 §3 «Модули core» (таблица, ~L74) «Выбранные» владеет Deal.Modules.Projects; нет Telegram сервисы «Выбранных» — в Deal.Modules.Kanban (CardsService.Selected); модуль Deal.Modules.Telegram существует исправлено + добавлена строка Telegram
3 §3 (абзац, ~L80) «Projects — сервисами пространства…» модуля Projects нет (перенесено в Kanban) исправлено
4 §4 «Ключевые таблицы public» (~L109-112) tenants(…, limits_json), users(…, email, role), invites(id, tenant_id, email, code, expires_at, used_at), app_settings tenants(Id,Name,Status,CreatedAt), users(…,Login,…), invites(Code PK,Email,TenantId,Status,ExpiresAt,ActivatedAt,CreatedById,CreatedAt), global_settings; таблицы app_settings нет исправлено
5 §4 сноска (~L122) Operators, OperatorSessions таблицы — operators, operator_sessions (миграция SystemSaaS) исправлено
6 §6 «Файлы» (~L202) ключ объекта = tenant_<id>/<card_id>/<file_id> CardsService строит projects/<card_id>/<file_id>_<unixMs>_<safeName> исправлено
7 §8 «Развёртывание» (сноска, ~L304) «корневой docker-compose.yml — наследие LeadRadar» файл перенесён в archive/leadradar-legacy/; в корне его нет исправлено
8 §11 этап 5 (~L510) модуль/таблица Deal.Modules.Projects/ProjectCards без пометки упразднены с этапа 9 добавлена пометка «историческое состояние»
9 §11 TODO (~L619-620) «OpenAPI-карта снимается с LeadRadar», «миграции на 1000 схем — в плане этапа 0» api-map и контракты есть; пакетная миграция реализована (этап 12) исправлено
10 §13.4a (~L717) секреты включают tgKeys.apiHash в настройках тенанта, маска apiHashSet tgKeys у тенанта нет; ключи — у оператора (global_settings, GET/PUT /api/operator/settings/telegram-keys) исправлено + пометка
11 §13.5 «Проверка схем» (~L888) схема тенанта содержит Boards, ProjectCards; public — неполный Boards/ProjectCards удалены (этап 9); актуальны Containers, Dialogs, Disc* и т.д. исправлено на актуальный список
12 §13.6 «Тесты» (~L905) dotnet test ожидает 1203 PASS актуальный core — 1275 исправлено
13 §13.7 env (~L976) core в compose задаёт DEAL_DEMO=1 в compose.dev.yml DEAL_DEMO нет; демо-ручки удалены исправлено
14 §13.7 smoke (~L994) POST /api/demo/simulate-lead/api/leads/{id}/trash dev-smoke.sh: POST /api/cardsPOST /api/cards/{id}/trash исправлено
15 §13.7 ручные проверки (~L1061) PATCH /api/settings tgKeys ключи — у оператора (вариант A) исправлено
16 §13.8 (~L1074) public.Operators/OperatorSessions operators/operator_sessions исправлено
17 §13.8 (~L1111) «приостановка тенанта (вход 401…)» вход приостановленного тенанта — 403 (AuthEndpoints) исправлено
18 §13 заголовок (~L636) «актуально для этапов 0–10» актуально по этап 12 исправлено
19 §13.4e (~L841) исторический раздел этапа 5 без пометки операции переехали в /api/cards*, модуль/таблица удалены добавлена пометка
20 §16 «Добивка» (~L1339) core-тесты 1245/1245 актуально 1275/1275 исправлено

docs/user-guide/Инструкция-пользователя-Дейл.md

# Место В доке Реальность Статус
21 §1 «Особенности» (~L32-34) демо-кнопки («демо-карточка», «демо-сообщение») при DEAL_DEMO=1 во фронте демо-кнопок нет, ручки POST /api/demo/* и флаг удалены исправлено

docs/api/api-map.md

# Место В доке Реальность Статус
22 §3.1 (~L59) change-password — минимум 4 символа AuthEndpoints — минимум 8 исправлено
23 §4.1 (~L248) objectKey: "cards/c_…/pf_…" формат projects/<cardId>/<fileId>_<ms>_<name> исправлено
24 §5 «Прочие домены» (~L400) Operator + join = 21 24 операторских ручки + /api/join = 25 исправлено

docs/superpowers/STATUS.md

# Место В доке Реальность Статус
25 (~L30) core 1203/1203 PASS 1275 исправлено
26 (~L52) «демо DEAL_DEMO» демо удалено исправлено
27 (~L56) public.Operators/OperatorSessions operators/operator_sessions исправлено
28 (~L76) «демо-пространство, DEAL_DEMO=1» dev-seed admin/admin, демо удалено исправлено
29 (~L90) «settings/boards/demo-карточка» (live-приёмка) актуальные ручки — /api/settings, /api/cards исправлено + историческая пометка
30 (~L94) «simulate-lead → карточка inbox» dev-smoke.sh: POST /api/cards → карточка planned исправлено

Нумерация строк приблизительная (после правок сместилась).

Проверено и сходится (выборка)

  • Порты: core HTTP 5080 / gRPC-ингресс 5082, telegram-service 5101, ai-service 5102, ml-service 5103, metrics 9464 (METRICS_PORT), postgres host-порт 5433, minio 9000/9001, grafana 127.0.0.1:3001, prometheus 127.0.0.1:9090 — совпадают с deploy/compose.*.yml и Dockerfile.
  • Команды: docker compose -f deploy/compose.dev.yml up -d --build, scripts/dev-smoke.sh, scripts/test.sh (+ npm run lint:i18n), фронт npm run dev — совпадают.
  • Единый API: /api/cards + /api/containers; домены /api/leads|projects|boards|columns удалены — совпадает с Endpoints/* и api-map.
  • Оператор-консоль: hash-роутер #/ / #/operator / #/join?code=…src/frontend/src/router.js; ключи Telegram — global_settings + OperatorSettingsEndpoints.
  • БД: Containers вместо Boards, ProjectCards нет, Cards с модульными JSON-полями; публичные таблицы audit_log/token_usage_events/global_settings/rate_limit_counters и lowercase operators/operator_sessions — подтверждено EF-конфигами и миграциями.
  • Файлы: objectKey = projects/<cardId>/<fileId>_<ms>_<name>CardsService.Files.
  • Наблюдаемость: /metrics на отдельном HTTP/1.1-эндпоинте :9464, Serilog, promtail/loki/grafana — подтверждено DealMetricsHosting, compose.prod.yml.

Осталось / непроверяемое

  • Счётчики тестов сервисов (telegram 125, ai 52, ml 38): перезапуск тестов не выполнялся (запрет на долгие процессы). В доках трогали только core-счётчик (1203/1245 → 1275) по ground-truth задания; сами цифры сервисов не подтверждались кодом.
  • Точное число операторских ручек (25) — подсчёт по Endpoints/Operator* + JoinEndpoint; группировка может отличаться от авторской (ранее было 21 — вероятно, до этапа 12).
  • Исторические разделы-журналы (§11 этапы 17, §13.4c/4d/4e, live-приёмки в STATUS/планах) намеренно сохраняют легаси-термины (Boards, /api/leads, /api/projects, DEAL_DEMO, ProjectCards). Добавлены точечные пометки «историческое состояние»; полный перепис не выполнялся (вне правил задачи).
  • Планы/архитектурные доки (docs/superpowers/plans/*, docs/architecture/*) содержат легаси-термины (Boards, ProjectCards, docker-compose.yml) — вне периметра аудита.
  • Живые контуры (Telegram-вход, реальные LLM-вызовы, mTLS-рукопожатие, backup/restore на docker-стеке) не проверялись — нужны креды/Docker; в доках они помечены ⚠ Manual.
  • Дубли/внутренние противоречия: техдок §11 этап 5 и §13.4e описывают снятый контур «Выбранных» как историю; при следующей редакции их, возможно, стоит свернуть в ссылку на §3.