docs(platform): add policy configs, runbooks, ops scripts and platform documentation

Config policies (16 files): alert_routing, architecture_pressure, backlog,
cost_weights, data_governance, incident_escalation, incident_intelligence,
network_allowlist, nodes_registry, observability_sources, rbac_tools_matrix,
release_gate, risk_attribution, risk_policy, slo_policy, tool_limits, tools_rollout

Ops (22 files): Caddyfile, calendar compose, grafana voice dashboard,
deployments/incidents logs, runbooks for alerts/audit/backlog/incidents/sofiia/voice,
cron jobs, scripts (alert_triage, audit_cleanup, migrate_*, governance, schedule),
task_registry, voice alerts/ha/latency/policy

Docs (30+ files): HUMANIZED_STEPAN v2.7-v3 changelogs and runbooks,
NODA1/NODA2 status and setup, audit index and traces, backlog, incident,
supervisor, tools, voice, opencode, release, risk, aistalk, spacebot

Made-with: Cursor
This commit is contained in:
Apple
2026-03-03 07:14:53 -08:00
parent 129e4ea1fc
commit 67225a39fa
102 changed files with 20060 additions and 0 deletions

554
docs/AGENT_AUDIT_PLAN.md Normal file
View File

@@ -0,0 +1,554 @@
# AGENT AUDIT PLAN — NODA1 DAARION.city
**Дата:** 2026-02-28
**Аудитор:** Sofiia — Chief AI Architect
**Мета:** Ретельна перевірка кожного з 14 агентів на NODA1
---
## BASELINE — Поточний стан інфраструктури
### LLM Routing (після виправлень 2026-02-28)
| Агент | Провайдер | Fallback |
|-------|-----------|---------|
| sofiia | **Grok** | DeepSeek |
| senpai | **Grok** | DeepSeek |
| всі інші (12) | DeepSeek | Mistral |
| monitor, devtools | Ollama (local) | — |
### Telegram Tokens
Всі 14 агентів: ✅ (підтверджено через `docker inspect dagi-gateway-node1`)
### Qdrant Collections (61 total)
| Агент | messages | docs | memory_items | summaries | user_context |
|-------|----------|------|-------------|-----------|-------------|
| agromatrix | 2159 | 350 | — | — | — |
| alateya | 163 | — | — | 1 | — |
| clan | 1089 | — | — | — | — |
| daarwizz | 144 | — | — | — | — |
| druid | 338 | — | — | — | — |
| eonarch | 75 | — | — | — | — |
| greenfood | 301 | — | — | — | — |
| helion | 5836 | 315 | — | 12 | — |
| nutra | 890 | — | — | — | — |
| oneok | 38 | — | — | — | — |
| senpai | 1759 | — | — | 3 | — |
| sofiia | 1184 | — | — | — | — |
| soul | 412 | 153 | — | 1 | — |
| yaromir | 11 | — | — | — | — |
### Multimodal Stack (Swapper :8890)
| Модель | Тип | Статус | Розмір |
|--------|-----|--------|--------|
| qwen3-8b | llm | ✅ loaded | 5.2GB |
| qwen3-vl-8b | vision | ⚪ unloaded | 6.1GB |
| got-ocr2 | ocr | ⚪ unloaded | 7.0GB |
| granite-docling | document | ⚪ unloaded | 2.5GB |
| faster-whisper-large | stt | ⚪ unloaded | 3.0GB |
| whisper-small | stt | ⚪ unloaded | 0.5GB |
| xtts-v2 | tts | ⚪ unloaded | 2.0GB |
| flux-klein-4b | image_gen | ⚪ unloaded | 15.4GB |
### Capability Services
| Сервіс | Порт | Статус |
|--------|------|--------|
| swapper (vision/STT/TTS) | 8890 | ✅ healthy |
| rag-service | 9500 | ✅ healthy |
| crawl4ai | 11235 | ✅ ok |
| presentation | 9212 | ✅ healthy |
| artifact-registry | 9220 | ✅ healthy |
| crewai-service | 9010 | ✅ ok |
| senpai-md-consumer | 8892 | ✅ ok |
| market-data | 8893 | ✅ ok |
| plant-vision | 8085 | ❌ down |
### Standard Tool Stack (всі агенти)
`memory_search`, `graph_query`, `web_search`, `web_extract`, `crawl4ai_scrape`,
`remember_fact`, `image_generate`, `tts_speak`, `presentation_create`,
`presentation_status`, `presentation_download`, `file_tool`
---
## ЧЕКЛИСТ ПЕРЕВІРКИ АГЕНТА
Для кожного агента перевіряємо 10 категорій:
### 1. TELEGRAM CHAT (Чат з користувачем)
- [ ] Надіслати `/start` — отримати привітання
- [ ] Надіслати просте питання — отримати змістовну відповідь
- [ ] Перевірити що агент відповідає у своєму стилі (persona)
- [ ] Перевірити швидкість відповіді (<10 сек норма)
- [ ] Перевірити що відповідь не з кешу — задати питання про поточну дату
### 2. LLM ROUTING (Маршрутизація до правильної моделі)
- [ ] `curl POST /v1/agents/{id}/infer` → перевірити `model` та `backend` у відповіді
- [ ] Переконатись що `backend` відповідає очікуваному провайдеру
- [ ] Перевірити `tokens_used` > 0
### 3. MEMORY MODULE (Модуль пам'яті)
- [ ] Колекція `{agent}_messages` існує і має > 0 точок
- [ ] `remember_fact` — назвати факт → перевірити через наступний запит що агент його знає
- [ ] `memory_search` — запитати про попередні розмови → агент має згадати
- [ ] Перевірити наявність `{agent}_user_context` якщо є
### 4. QDRANT COLLECTIONS (Векторні колекції)
- [ ] Перелік колекцій: `messages`, `docs`, `memory_items`, `summaries`, `user_context`
- [ ] Підрахунок points в кожній колекції
- [ ] Перевірити що нові повідомлення записуються (порівняти count до і після)
### 5. DOCUMENT PROCESSING (Обробка документів)
- [ ] Надіслати PDF документ у чат — агент має підтвердити отримання
- [ ] Запитати про зміст документу — перевірити що агент може відповісти
- [ ] Перевірити що `{agent}_docs` collection оновилась
- [ ] Перевірити OCR для зображень з текстом (через swapper got-ocr2)
### 6. WEB SEARCH (Пошук в інтернеті)
- [ ] Задати питання що вимагає актуальної інформації
- [ ] Перевірити в логах router що `web_search` tool викликався
- [ ] Перевірити якість відповіді (не галюцинація, а реальні дані)
- [ ] Перевірити `crawl4ai_scrape` для глибокого аналізу сторінок
### 7. MULTIMODAL — VISION (Обробка зображень)
- [ ] Надіслати фото у чат — агент має описати що на фото
- [ ] Перевірити що swapper завантажив `qwen3-vl-8b` (через /models)
- [ ] Перевірити якість опису (деталізованість, точність)
- [ ] Спеціально для agromatrix: рослина на фото → визначення виду
### 8. VOICE (Голосовий чат)
- [ ] Надіслати голосове повідомлення у Telegram
- [ ] Перевірити що STT (faster-whisper-large) транскрибує
- [ ] Перевірити що агент відповідає на транскрипт
- [ ] Перевірити TTS (xtts-v2) — відповідь голосом (якщо підтримується)
- [ ] Перевірити логи swapper під час STT
### 9. СПЕЦІАЛІЗОВАНІ ІНСТРУМЕНТИ (Agent-specific tools)
- Залежить від агента — деталі нижче у секції кожного агента
### 10. SYSTEM PROMPT (Системний промпт і особистість)
- [ ] Перевірити що `{agent}_prompt.txt` завантажено (`prompt_loaded: true`)
- [ ] Задати питання поза доменом агента → має відповідати в ролі, не виходити з персони
- [ ] Перевірити мову відповіді (UA/EN відповідно до налаштувань)
---
## АГЕНТИ — ПОРЯДОК ПЕРЕВІРКИ
Порядок від найважливіших / найактивніших:
### ЧЕРГА 1 — Критичні (найбільше повідомлень, активні юзери)
1. **helion** — 5836 msgs, docs 315, summaries 12 → найактивніший
2. **senpai** — 1759 msgs, summaries 3, Grok, market_data tool
3. **agromatrix** — 2159 msgs, docs 350, plant vision tools
4. **sofiia** — 1184 msgs, Grok, CTO агент
### ЧЕРГА 2 — Активні
5. **clan** — 1089 msgs
6. **nutra** — 890 msgs
7. **soul** — 412 msgs, docs 153
8. **druid** — 338 msgs
### ЧЕРГА 3 — Менш активні
9. **greenfood** — 301 msgs
10. **alateya** — 163 msgs, summaries
11. **eonarch** — 75 msgs
12. **oneok** — 38 msgs, 5 CRM tools
### ЧЕРГА 4 — Службові / нові
13. **daarwizz** — 144 msgs, meta-orchestrator
14. **yaromir** — 11 msgs, whitelist-only
---
## ДЕТАЛЬНІ ЧЕКЛІСТИ ПО АГЕНТАМ
---
### 1. HELION — Energy Platform
**LLM:** DeepSeek → fallback Mistral
**Crew:** ✅ enabled
**Спец. інструменти:** `comfy_generate_image`, `comfy_generate_video`
**Колекції:** messages(5836), docs(315), summaries(12), artifacts
**Спецперевірки:**
- [ ] Запитати про сонячні панелі / енергетичний розрахунок
- [ ] Перевірити чи CrewAI crew активується для складних задач
- [ ] `image_generate` — запит на схему енергосистеми → перевірити comfy
- [ ] Перевірити `helion_artifacts` колекцію (унікальна!)
- [ ] RAG по `helion_docs` — запитати про завантажені документи
---
### 2. SENPAI — Trading Advisor
**LLM:** Grok → fallback DeepSeek
**Crew:** ❌ llm_only
**Спец. інструменти:** `market_data`, `binance_bots_top`, `binance_account_bots`
**Колекції:** messages(1759), summaries(3)
**Спецперевірки:**
- [ ] Запитати ціну BTC/ETH → перевірити що tool `market_data` викликається
- [ ] Перевірити що `senpai-md-consumer` (:8892) отримує ринкові дані
- [ ] Запитати про торговий сигнал → якість аналізу через Grok
- [ ] Перевірити `binance_bots_top` — список топ-ботів
- [ ] Ринковий звіт — чи зберігається в summaries
---
### 3. AGROMATRIX — Agriculture
**LLM:** DeepSeek → fallback Mistral
**Crew:** ❌ llm_only
**Спец. інструменти:** `plantnet_lookup`, `nature_id_identify`, `gbif_species_lookup`, `agrovoc_lookup`
**Колекції:** messages(2159), docs(350), shared_pending
**Спецперевірки:**
- [ ] Надіслати фото рослини → `nature_id_identify` або `plantnet_lookup`
- [ ] Запитати про агрокультуру → `agrovoc_lookup` (FAO база)
- [ ] Перевірити `agromatrix_shared_pending` — унікальна колекція (для чого?)
- [ ] RAG по docs(350) — запитати про завантажені агрономічні документи
- [ ] plant-vision :8085 ❌ DOWN — перевірити вплив на функціональність
---
### 4. SOFIIA — Chief AI Architect
**LLM:** Grok → fallback DeepSeek
**Crew:** ❌ llm_only
**Доступ:** whitelist (admin, architect roles only)
**Колекції:** messages(1184)
**Спецперевірки:**
- [ ] Перевірити access control — чи блокує неавторизованих юзерів
- [ ] Запитати про архітектуру NODA1 → точність відповіді через Grok
- [ ] Перевірити всі AGENTS.md tools (oncall, observability, pr_reviewer, etc.)
- [ ] Перевірити control-plane :9200 → чи є інтеграція
- [ ] Запитати технічне питання → quality through Grok vs DeepSeek
---
### 5. CLAN — Community Operations
**LLM:** DeepSeek → fallback Mistral
**Crew:** ❌ llm_only
**Колекції:** messages(1089)
**Спецперевірки:**
- [ ] Запитати про DAO голосування / спільнотні механіки
- [ ] Перевірити `remember_fact` — чи зберігає профіль юзера
- [ ] Перевірити що docs collection відсутня (це нормально для clan?)
---
### 6. NUTRA — Health & Nutrition
**LLM:** DeepSeek → fallback Mistral
**Crew:** ✅ enabled
**Спец. інструменти:** `comfy_generate_image`, `comfy_generate_video`
**Колекції:** messages(890), food_knowledge (спеціальна!)
**Спецперевірки:**
- [ ] Запитати про харчову цінність продукту → `nutra_food_knowledge` RAG
- [ ] Запит на план харчування → чи використовує crew для складних кейсів
- [ ] Перевірити `nutra_food_knowledge` — скільки points, що це за база
---
### 7. SOUL — Spiritual Assistant
**LLM:** DeepSeek → fallback Mistral
**Crew:** ❌ llm_only
**Колекції:** messages(412), docs(153), summaries(1)
**Спецперевірки:**
- [ ] Запитати про духовну практику → емоційна якість відповіді
- [ ] RAG по docs(153) — які документи завантажені?
- [ ] Перевірити persona consistency — чи лишається у ролі
---
### 8. DRUID — Science/Ayurveda
**LLM:** DeepSeek → fallback Mistral
**Спец. інструменти:** `comfy_generate_image`, `comfy_generate_video`
**Колекції:** messages(338), legal_kb (унікальна!)
**Спецперевірки:**
- [ ] Запитати про аюрведичний рецепт → якість відповіді
- [ ] Перевірити `druid_legal_kb` — це юридична база? Що в ній?
- [ ] RAG по legal_kb
---
### 9. GREENFOOD — Food ERP
**LLM:** DeepSeek → fallback Mistral
**Колекції:** messages(301)
**Спецперевірки:**
- [ ] Запитати про рецептуру або склад продукту
- [ ] Перевірити чи є інтеграція з ERP системою
---
### 10. ALATEYA — R&D Lab
**LLM:** DeepSeek → fallback Mistral
**Crew:** ❌ llm_only
**Колекції:** messages(163), summaries(1)
**Спецперевірки:**
- [ ] Запитати про наукову гіпотезу → якість reasoning
- [ ] Перевірити summaries — що там за 1 summary
---
### 11. EONARCH — Consciousness/Evolution
**LLM:** DeepSeek → fallback Mistral
**Колекції:** messages(75)
**Спецперевірки:**
- [ ] Запитати про трансформацію свідомості → філософська глибина
- [ ] Мало messages — чи активний взагалі?
---
### 12. ONEOK — Window Master
**LLM:** DeepSeek → fallback Mistral
**Спец. інструменти:** `crm_search_client`, `crm_upsert_client`, `crm_upsert_site`, `crm_upsert_window_unit`, `crm_create_quote`, `crm_update_quote`, `crm_create_job`, `calc_window_quote`, `docs_render_quote_pdf`, `docs_render_invoice_pdf`
**Колекції:** messages(38)
**Спецперевірки:**
- [ ] Запитати розрахунок вікна → `calc_window_quote` tool
- [ ] Перевірити CRM інтеграцію (EspoCRM)
- [ ] PDF генерація через gotenberg :3010
- [ ] Calendly/CalCom інтеграція для записів
---
### 13. DAARWIZZ — Meta-Orchestrator
**LLM:** DeepSeek → fallback Mistral
**Колекції:** messages(144)
**Спецперевірки:**
- [ ] Запитати про координацію між агентами
- [ ] Перевірити A2A (agent-to-agent) routing якщо є
- [ ] Як працює делегування задач між агентами?
---
### 14. YAROMIR — Tech Lead (whitelist)
**LLM:** DeepSeek → fallback Mistral
**Доступ:** whitelist only
**Колекції:** messages(11), docs, memory_items
**Спецперевірки:**
- [ ] Перевірити whitelist access control
- [ ] Технічні питання → якість відповіді
- [ ] Чому лише 11 messages — малоактивний або whitelist обмежує?
---
## ФОРМАТ ЗВІТУ ПО АГЕНТУ
```
## AGENT: {name} — AUDIT {date}
### Status
| Категорія | Статус | Деталі |
|-----------|--------|--------|
| Telegram chat | ✅/⚠️/❌ | ... |
| LLM routing | ✅/⚠️/❌ | model=X backend=Y |
| Memory (messages) | ✅/⚠️/❌ | N points |
| Memory (facts) | ✅/⚠️/❌ | remember/recall OK |
| Docs RAG | ✅/⚠️/❌ | N docs points |
| Web search | ✅/⚠️/❌ | tool called: Y/N |
| Vision | ✅/⚠️/❌ | model loaded: Y/N |
| Voice STT | ✅/⚠️/❌ | whisper: Y/N |
| Voice TTS | ✅/⚠️/❌ | xtts: Y/N |
| Specialized tools | ✅/⚠️/❌ | tools tested |
### Issues Found
- ...
### Action Items
- [ ] ...
```
---
## KNOWN ISSUES (до початку аудиту)
| # | Проблема | Агент | Пріоритет |
|---|---------|-------|-----------|
| 1 | plant-vision :8085 DOWN | agromatrix | HIGH |
| 2 | token_configured: false в Gateway health | всі | MEDIUM (баг в health check, токени є) |
| 3 | Більшість memory_items і user_context колекцій порожні | всі | MEDIUM |
| 4 | qwen3-vl-8b unloaded (on-demand завантаження) | всі vision | INFO |
| 5 | whisper/xtts unloaded | всі voice | INFO |
| 6 | comfy tools у всіх агентів — чи працює ComfyUI? | всі | TO_CHECK |
---
*Документ оновлюється по мірі проходження аудиту.*
---
## AUDIT REPORTS
---
## AGENT: helion — AUDIT 2026-02-28
### Status
| Категорія | Статус | Деталі |
|-----------|--------|--------|
| Telegram chat | ✅ | Відповідає, persona Energy Union коректна |
| LLM routing | ✅ | model=deepseek-chat, backend=deepseek-cloud, tokens=3532 |
| Memory — messages | ✅ | helion_messages = **5836 points** (найактивніший) |
| Memory — summaries | ✅ | helion_summaries = **12 dialog summaries** (events_count до 20) |
| Memory — remember_fact | ⚠️ | Tool викликається і повертає 200, але **agent_id не зберігається** в PostgreSQL |
| Memory — memory_items | ⚠️ | Qdrant helion_memory_items = **0 points** — не використовується |
| Memory — user_context | ⚠️ | Qdrant helion_user_context = **0 points** — не використовується |
| Memory — artifacts | ⚠️ | Qdrant helion_artifacts = **0 points** — artifacts не накопичуються |
| Docs RAG | ✅ | helion_docs = **315 points**, 1 документ: `sinergiya-posibnik-elektr_21.05.2024.pdf`, RAG відповідає точно |
| Web search | ✅ | `web_extract` tool виконується (логи підтверджують), `memory_search` + `web_extract` активні |
| Vision | ⚪ | qwen3-vl-8b **unloaded** (on-demand), потребує тесту фото в Telegram |
| Voice STT | ⚪ | whisper-small/faster-whisper **unloaded** (on-demand через swapper), gateway має `process_voice()` |
| Voice TTS | ⚪ | xtts-v2 **unloaded** (on-demand), потребує тесту |
| Crew (CrewAI) | ⚠️ | crew=True в registry, але logs: `CrewAI decision: False (orchestrator_direct_llm_first)` — crew не активується |
| image_generate (comfy) | ❌ | ComfyUI **контейнер відсутній** на NODA1 — `comfy_generate_image` / `comfy_generate_video` не працюють |
| System prompt | ✅ | `prompt_loaded: true`, source=config, persona коректна |
### Issues Found
#### 🔴 CRITICAL
**ISSUE-H-01: `agent_id` не зберігається в `user_facts` при remember_fact**
- `/facts/upsert` endpoint в memory-service **не передає `agent_id`** в `db.upsert_fact()` — параметр є в сигнатурі функції, але не передається з request
- `tool_manager.py` передає `agent_id` тільки в `fact_value_json`, а не як окрему колонку
- Наслідок: `SELECT ... WHERE agent_id='helion'` повертає 0 рядків для реальних фактів, пошук по агенту не працює
- Файл: `services/memory-service/app/main.py:654``db.upsert_fact()` call без `agent_id`
#### 🟡 WARNING
**ISSUE-H-02: ComfyUI відсутній на NODA1**
- Контейнер ComfyUI не запущений (немає в `docker ps`)
- Всі агенти мають `comfy_generate_image` і `comfy_generate_video` в specialized tools
- При виклику цих tools — помилка або timeout
- Рекомендація: або задеплоїти ComfyUI, або замінити `image_generate` на інший backend (Flux через swapper вже є: `flux-klein-4b unloaded`)
**ISSUE-H-03: CrewAI ніколи не активується для Helion**
- `helion: crew=True` в `agent_registry.yml`
- Але в router логах завжди: `CrewAI decision: False (orchestrator_direct_llm_first)`
- Умова активації CrewAI не спрацьовує для реальних запитів
- Потрібно перевірити логіку `_crewai_decision()` в `main.py`
**ISSUE-H-04: helion_memory_items, helion_user_context, helion_artifacts = 0 points**
- Три Qdrant-колекції існують але порожні
- `memory_items` — мав би зберігати структуровані факти (від remember_fact)
- `user_context` — мав би зберігати профілі користувачів
- `artifacts` — унікальна колекція для helion, ніколи не записувалась
- Причина: write path для цих колекцій або не реалізований, або не викликається
**ISSUE-H-05: Лише 1 документ в helion_docs (315 chunks)**
- Весь RAG-корпус = один PDF `sinergiya-posibnik-elektr_21.05.2024.pdf`
- Для платформи з 5836 повідомленнями — дуже мало документів
- Потрібно завантажити більше документів Energy Union
#### 🟢 INFO
**ISSUE-H-06: vision/STT/TTS — on-demand, не тестовано реальним Telegram трафіком**
- Swapper завантажує моделі на вимогу, це нормально
- Але потрібен реальний тест: надіслати фото і голосове в Telegram чат Helion
### Action Items
- [ ] **FIX** `services/memory-service/app/main.py:670` — додати `agent_id=request.fact_value_json.get('agent_id')` в `db.upsert_fact()` call
- [ ] **FIX** Перевірити `_crewai_decision()` в `main.py` — чому crew не активується для helion
- [ ] **DEPLOY** ComfyUI або налаштувати `image_generate` через swapper flux-klein-4b
- [ ] **TEST** Надіслати реальне фото в Telegram @HelionBot → перевірити vision STT
- [ ] **TEST** Надіслати голосове повідомлення → перевірити STT whisper pipeline
- [ ] **UPLOAD** Завантажити більше документів Energy Union в helion_docs
- [ ] **INVESTIGATE** helion_artifacts — для чого ця колекція і як її наповнювати
---
## AGENT: senpai — AUDIT 2026-02-28
### Status
| Категорія | Статус | Деталі |
|-----------|--------|--------|
| Telegram chat | ✅ | Відповідає, persona Gordon Senpai — Trading Advisor (після фіксу промпту) |
| LLM routing | ✅ | model=grok-4-1-fast-reasoning, backend=grok-cloud ✅ (підтверджено в логах) |
| Memory — messages | ✅ | senpai_messages = **1759 points** (активна база) |
| Memory — summaries | ✅ | senpai_summaries = **3 dialog summaries** (events_count по 60, content про трейдинг/крипто) |
| Memory — remember_fact | ✅ | Факт `Максим торгує BTC з 2021` збережено з `agent_id=senpai` (**agent_id fix діє**) |
| Memory — memory_items | ⚠️ | Qdrant senpai_memory_items = **0 points** — не накопичується |
| Memory — user_context | ❌ | Колекція **відсутня** (HTTP 404) — не була створена |
| Memory — docs | ⚠️ | senpai_docs = **0 points** — жодного документу |
| market_data tool | ✅ | BTC=$68,185 / ETH=$2,066 — real-time дані з Bybit/Binance (tool `market_data` OK) |
| binance_bots_top | ✅ | Tool **реалізовано** — підключено до `dagi-binance-bot-monitor-node1:8893/top-bots` (web_search fallback) |
| binance_account_bots | ✅ | Tool **реалізовано**`SPOT account, can_trade=True, permissions=[TRD_GRP_072]`, баланс 0 (акаунт порожній) |
| comfy_generate_image | ❌ | ComfyUI **відсутній** на NODA1 — не працює (той самий issue що ISSUE-H-02) |
| comfy_generate_video | ❌ | ComfyUI **відсутній** на NODA1 — не працює |
| web_search | ✅ | Новини Bitcoin 2026-02-26 — знайдено реальний контент (BBC, Cointelegraph) |
| Vision | ⚪ | Не налаштовано для senpai (`vision_enabled` не встановлено в config) |
| Voice STT | ⚪ | On-demand через swapper (не тестовано реальним трафіком) |
| Voice TTS | ⚪ | On-demand через swapper (не тестовано реальним трафіком) |
| Crew (CrewAI) | | crew=❌ за конфігом (trading agent — crew не потрібен) |
| System prompt | ✅ | **FIXED** — було placeholder `(loaded from senpai_prompt.txt)`, тепер `!file:/app/prompts/senpai_prompt.txt` (13KB, Gordon Senpai v1.1) |
| senpai-md-consumer | ✅ | `http://localhost:8892/health``{"status":"ok","service":"senpai-md-consumer"}` |
| market-data-service | ✅ | `http://localhost:8893/health``{"status":"ok","service":"market-data-service"}` |
### Issues Found
#### 🔴 CRITICAL
**ISSUE-S-01: System prompt був placeholder — Senpai відповідав як "Energy Union AI" замість "Gordon Senpai"**
- `router-config.yml` містив буквальний рядок `(loaded from senpai_prompt.txt)` замість реального промпту
- `prompt_builder._get_from_config()` передавав цей рядок в Grok як system_prompt
- Grok без контексту вигадував "Energy Union" персону (з короткого placeholder)
- **FIXED:**
1. `prompt_builder.py` — додано підтримку `!file:/path/to/file.txt` references
2. `docker-compose.node1.yml` — додано volume mount `gateway-bot -> /app/prompts`
3. `router-config.yml``senpai.system_prompt = !file:/app/prompts/senpai_prompt.txt`
4. Аналогічно для `sofiia` (sofiia_prompt.txt 136KB)
- **VERIFY:** `grok-4-1-fast-reasoning` → "Я — Гордон Сэнпай, советник высшего уровня по рынкам капитала и цифровым активам" ✅
#### 🔴 CRITICAL (системний)
**ISSUE-S-02: `binance_bots_top` і `binance_account_bots` — "ghost tools" → ВИПРАВЛЕНО**
- Обидва tools були присутні в `agent_tools_config.py` але **відсутні** в `TOOL_DEFINITIONS` і `execute_tool()` handler
- **FIXED:** Реалізовано `_binance_bots_top()` і `_binance_account_bots()` в `tool_manager.py`
- Сервіс `dagi-binance-bot-monitor-node1` запущений (порт 8893 внутрішній)
- Новий Binance API ключ встановлено в `.env.node1` і задеплоєно → **HTTP 200 OK**
- `binance_account_bots``SPOT, can_trade=True, TRD_GRP_072, balance=0`
- `binance_bots_top` → web_search fallback (marketplace scraping) ✅
#### 🟡 WARNING
**ISSUE-S-03: senpai_user_context колекція відсутня (404)**
- На відміну від helion, де колекція є але порожня — у senpai її взагалі немає
- Потрібно перевірити чому memory-service не створила цю колекцію для senpai
**ISSUE-S-04: senpai_docs = 0 points**
- Для Trading Advisor — відсутні будь-які документи (аналітика, стратегії, ринкові огляди)
- Це обмежує RAG-можливості агента
**ISSUE-S-05: senpai_memory_items = 0 points**
- Аналогічно helion — `memory_items` не накопичується
- Структуровані факти про трейдери не зберігаються у Qdrant
**ISSUE-S-06: System prompt — мова Russian (v1.1)**
- `senpai_prompt.txt` написаний переважно **російською мовою** ("Версия: 1.1, Язык: русский")
- Для українського продукту — потрібно перейти на UA/EN промпт
#### 🟢 INFO
**ISSUE-S-07: vision/STT/TTS не тестовано реальним трафіком**
- Trading agent — мінімальна потреба у voice/vision
- Але доступ до swapper є, on-demand навантаження норма
### Action Items
- [x] **FIXED** `services/router/prompt_builder.py` — підтримка `!file:` references для системних промптів
- [x] **FIXED** `docker-compose.node1.yml` — volume mount `gateway-bot -> /app/prompts` для router
- [x] **FIXED** `services/router/router-config.yml` — senpai і sofiia тепер мають `!file:` references
- [x] **FIXED** `binance_bots_top` і `binance_account_bots` tools реалізовані в `tool_manager.py` → з'єднані з `dagi-binance-bot-monitor-node1:8893`
- [x] **FIXED** Новий Binance API ключ встановлено в `.env.node1`, сервіс перезапущено → 200 OK
- [ ] **CREATE** `senpai_user_context` Qdrant collection — зрозуміти чому не створилась
- [ ] **UPLOAD** Завантажити торгові документи/аналітику в `senpai_docs` через RAG pipeline
- [ ] **TRANSLATE** `senpai_prompt.txt` на ukrainian/english (зараз russian v1.1)
- [ ] **TEST** Реальний тест в Telegram @SenpAI_agent_bot з типовими запитами трейдера