7.5 KiB
Архитектурный ревью: поиск противоречий и проблем
Дата: 2026-02-22 Автор: Winston (Архитектор, BMAD)
Проанализированы все документы: ARCHITECTURE.md, 10 брейнштормов, WS-PROTOCOL, MCP-TOOLS.
🔴 Критические противоречия
1. Redis Streams: решено или нет?
- BRAINSTORM-MICROSERVICES: Redis Streams = "КЛЮЧЕВОЕ решение", принят, расписан reconnect через XREAD
- Разговор 22.02: Хозяин сказал "не уверен что нужен Redis Streams, оставляй на обсуждение"
- ARCHITECTURE.md: Redis "пока не используется", но в "Идеях" — Redis Streams для event bus
- BRAINSTORM-WS-V2: Redis Streams не упоминается вообще
Проблема: Документы противоречат друг другу. В одном Redis Streams принят, в другом под вопросом.
Решение: Убрать Redis Streams из принятых решений. Оставить как идею на будущее. Сейчас: WS для online агентов + REST для получения пропущенного при reconnect (GET /tasks?assignee=me). Проще, меньше компонентов.
2. Unified Message vs ChatMessage + TaskComment
- BRAINSTORM-UI: решено — Message = одна сущность (chat_id? / task_id?)
- BRAINSTORM-CHATS: модель
ChatMessageсchat_id(не task_id) - BRAINSTORM-TASKS: модель
TaskComment— отдельная сущность - ARCHITECTURE.md:
ChatMessageи комментарии описаны отдельно
Проблема: Старые документы описывают две сущности, новое решение — одну. ARCHITECTURE.md не обновлён.
Решение: Обновить ARCHITECTURE.md. Одна таблица Message с полями chat_id? и task_id?.
3. Файловое хранилище: три версии
- ARCHITECTURE.md: "Файловое хранилище — Per-project директории, Upload/download через REST API"
- BRAINSTORM-AGENTS: "File storage — всегда, docs, картинки, видео, attachments"
- Разговор 22.02: "Отдельного файлового сервиса нет, файлы = вложения к сообщениям/задачам"
Проблема: ARCHITECTURE.md описывает отдельный файловый сервис, а решение — просто attachments.
Решение: Обновить. Файлы = attachments в Message. Документация проекта = ссылка в описании (repo_urls / description). Per-project директории на диске для хранения attachment'ов — деталь реализации.
🟡 Нестыковки (не критические)
4. WS-PROTOCOL.md vs BRAINSTORM-WS-V2
Два документа описывают WS протокол с разными решениями:
- WS-PROTOCOL.md (старый): task.take, task.complete, task.comment через WS (мутации!)
- BRAINSTORM-WS-V2 (новый): мутации только через REST
Решение: WS-PROTOCOL.md устарел. Либо обновить, либо пометить deprecated и ссылаться на WS-V2.
5. Agent model: Member vs Agent
- ARCHITECTURE.md: Unified Member model (human + agent = одна модель)
- WS-PROTOCOL.md: отдельная модель
Agentс полями connection_type, callback_url и т.д. - BRAINSTORM-AGENTS: "Агент = чёрный ящик", отдельная сущность
Проблема: Не ясно — Member или Agent? Если Member, то connection_type, callback_url, prompt, capabilities — это поля Member?
Решение: Member — базовая модель. Для type=agent дополнительные поля (capabilities, listen_mode, prompt, model). Можно JSON-поле agent_config или отдельная таблица AgentConfig с FK на Member.
6. Listen modes: один или два?
- BRAINSTORM-PROJECTS:
listen: all | mentions— один режим - BRAINSTORM-WS-V2:
chat_listen+task_listen— два раздельных
Решение: Два раздельных (WS-V2 — более новое решение).
7. HTTP Callback transport
- WS-PROTOCOL.md: описан HTTP Callback как альтернативный транспорт
- Нигде больше не упоминается
Решение: Убрать из MVP. Если агент offline — он при reconnect запросит текущее состояние через REST.
8. chat.send: через WS или REST?
- BRAINSTORM-PROTOCOL: "WS = real-time + чат"
- BRAINSTORM-MCP-TOOLS:
send_messageв списке MCP tools (= REST) - BRAINSTORM-WS-V2:
chat.sendв списке клиент→сервер WS событий
Проблема: Чат отправляется и через WS, и через REST?
Решение: Оба варианта валидны. WS для агентов (уже подключены, real-time). REST (MCP tool) — тоже работает (для MCP-клиентов без WS). Tracker обрабатывает одинаково.
9. Watchers: новая фича, нигде кроме WS-V2
- BRAINSTORM-WS-V2: watchers[] на задаче
- BRAINSTORM-TASKS: не упоминается
- ARCHITECTURE.md: не упоминается
Решение: Добавить watchers в модель задачи при обновлении ARCHITECTURE.md.
🟢 Открытые вопросы (не противоречия, а незакрытое)
10. Лейблы: глобальные или per-project?
Упоминается в BRAINSTORM-PROJECTS как TBD. Не решено.
11. Реакции в чатах
Упоминается в BRAINSTORM-CHATS как TBD. Не решено.
12. Multi-instance агентов
Упоминается в BRAINSTORM-MISC. Как различать: slug = роль, instance_id?
13. Rollback файлов в хранилище
Упоминается в BRAINSTORM-MISC. Версионирование attachments?
14. Устаревшие документы
WS-PROTOCOL.md— устарел (заменён BRAINSTORM-WS-V2 + BRAINSTORM-PROTOCOL)AGENTS-INTEGRATION.md— не проверен на актуальностьRESEARCH.md— исследование, может быть неактуальноIDEAS.md— первоначальные идеи, многое уже решено иначе
Рекомендации
- Обновить ARCHITECTURE.md v0.4 — единый источник правды, включить все решения из брейнштормов
- Пометить устаревшие документы — WS-PROTOCOL.md, AGENTS-INTEGRATION.md
- Решить Redis Streams — убрать из принятых, оставить как идею
- Решить открытые вопросы (лейблы, реакции) или явно пометить как "решим при реализации"