Files
wiki/tasks/multi-agent/STATUS.md
2026-05-21 16:00:01 +03:00

283 lines
12 KiB
Markdown
Raw Blame History

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.
# Статус проекта: Мультиагентная разработка ПО
**Дата ревью:** 2026-05-21
**Ревьюер:** Стрим
---
## Общая зрелость
| Фаза (из BRD) | Статус | Комментарий |
|----------------|--------|-------------|
| **Фаза 0: Инфраструктура** | ✅ Завершена | Всё установлено и работает |
| **Фаза 1: Ручной конвейер** | ✅ Завершена | ET-001 прошёл полный цикл |
| **Фаза 2: Orchestrator MVP** | ✅ Завершена (21.05) | QG реальные, автозапуск Claude CLI работает, 27 тестов green |
| **Фаза 3: Plane интеграция** | 🟡 В работе (21.05) | Webhook handlers готовы, настройка webhooks в Plane/Gitea UI — в процессе |
| **Фаза 4: Полный конвейер** | ❌ Не начата | — |
| **Фаза 5: Оптимизация** | ❌ Не начата | — |
---
## Инфраструктура на mva154 (82.22.50.71)
### Контейнеры (docker ps на 21.05.2026)
| Контейнер | Образ | Статус | Порт |
|-----------|-------|--------|------|
| `orchestrator` | orchestrator-orchestrator (self-built) | Up 46h | 127.0.0.1:8500 |
| `openclaw-gateway` | ghcr.io/openclaw/openclaw:latest | Up 15h (healthy) | 127.0.0.1:18789 |
| `enduro-trails-app-1` | enduro-trails-app (self-built) | Up 5d (**unhealthy**) | 0.0.0.0:5558 |
| `gitea` | gitea/gitea:latest | Up 2d | 127.0.0.1:3000, 0.0.0.0:2222 |
| `claude-cli-proxy` | eceasy/cli-proxy-api:latest | Up 6d | 127.0.0.1:8317 |
| `xray` | ghcr.io/xtls/xray-core:latest | Up 2w | — |
| `plane-app-proxy-1` | makeplane/plane-proxy:stable | Up 5d | 0.0.0.0:8091, 0.0.0.0:8443 |
| `plane-app-live-1` | makeplane/plane-live:stable | Up 5d | 3000 (internal) |
| `plane-app-space-1` | makeplane/plane-space:stable | Up 5d (healthy) | 3000 (internal) |
| `plane-app-admin-1` | makeplane/plane-admin:stable | Up 5d (healthy) | 3000 (internal) |
| `plane-app-web-1` | makeplane/plane-frontend:stable | Up 5d (healthy) | 3000 (internal) |
| `plane-app-beat-worker-1` | makeplane/plane-backend:stable | Up 5d | 8000 (internal) |
| `plane-app-worker-1` | makeplane/plane-backend:stable | Up 5d | 8000 (internal) |
| `plane-app-api-1` | makeplane/plane-backend:stable | Up 5d | 8000 (internal) |
| `plane-app-plane-db-1` | postgres:15.7-alpine | Up 5d | 5432 (internal) |
| `plane-app-plane-mq-1` | rabbitmq:3.13.6-management-alpine | Up 5d | 5672 (internal) |
| `plane-app-plane-minio-1` | minio/minio:latest | Up 5d | 9000 (internal) |
| `plane-app-plane-redis-1` | valkey/valkey:7.2.11-alpine | Up 2w | 6379 (internal) |
### Установленное ПО на хосте
| Компонент | Версия | Путь |
|-----------|--------|------|
| Claude Code CLI | 2.1.142 | `/usr/bin/claude` |
| Node.js | v24.14.0 | — |
| Docker + Compose | — | — |
| Nginx | — | reverse proxy |
| Gitea Actions Runner | `act_runner` | `/home/slin/act_runner` |
### Директории на хосте
```
/home/slin/
├── openclaw/ # docker-compose.yml для OpenClaw + Xray
├── repos/
│ ├── enduro-trails/ # Пилотный проект (git repo)
│ └── orchestrator/ # Orchestrator (git repo)
├── gitea/ # docker-compose.yml для Gitea
├── gitea-data/ # Gitea data volume
├── plane-selfhost/ # Plane docker-compose
├── claude-cli-proxy/ # CLI proxy config
├── enduro-trails/ # Отдельная копия (app container)
├── act_runner/ # Gitea Actions runner binary
├── act_runner_data/ # Runner data
├── n8n/ # n8n (не запущен?)
├── duckdns/ # DuckDNS update script
└── backups/ # Бэкапы
```
---
## Orchestrator — детальный статус
**Репо:** `/home/slin/repos/orchestrator/`
**Контейнер:** `orchestrator` (порт 8500)
**Конфиг:** `.env` (ORCH_PLANE_API_URL, ORCH_GITEA_URL, ORCH_CLAUDE_BIN, ORCH_REPOS_DIR)
### Что работает
- ✅ FastAPI app запущен, `/health` отвечает 200
-`/webhook/plane` — принимает events, пишет в SQLite
-`/webhook/gitea` — принимает events, пишет в SQLite
-`/status` — показывает active tasks
- ✅ SQLite БД инициализирована (tables: events, tasks, agent_runs)
- ✅ AgentLauncher — класс написан, конфиги 5 агентов определены
### Что реализовано (21.05.2026 — DEV_TASK_ORCHESTRATOR_QG)
-`qg/checks.py` — 5 реальных QG-проверок (filesystem + Gitea API)
-`handle_work_item_created` — создаёт task + ветку в Gitea + папку docs
-`handle_comment``:approved:` → QG check → advance stage → launch agent
-`handle_push` / `handle_pr` / `handle_ci_status` — полная обработка
- ✅ AgentLauncher — Claude CLI запускается из контейнера (binary mount)
- ✅ Stage machine (`src/stages.py`) — конечный автомат 8 стадий
- ✅ Notifications (`src/notifications.py`) — structured logging
- ✅ 27 тестов — all green
- ✅ Nginx proxy_pass `/orchestrator/` → localhost:8500 (уже был настроен)
- 🟡 Plane webhooks → Orchestrator — настройка в процессе
- 🟡 Gitea webhooks → Orchestrator — настройка в процессе
### Данные в БД (на 21.05.2026)
- events: 15 (4 старых + 11 от smoke tests)
- tasks: 6 (2 старых + 4 smoke tests: ET-001..ET-004)
- agent_runs: 3 (2x architect, 1x developer — реальные запуски Claude CLI)
---
## Репозиторий enduro-trails — детальный статус
**Репо:** `/home/slin/repos/enduro-trails/` (Gitea: `admin/enduro-trails`)
**Ветки:** main, feature/ET-001-barriers-footways, feature/ET-002-poi-toggle (active), feature/bootstrap, feature/migrate-prototype
**Коммитов:** 22
### Структура (каноническая, по BRD)
```
enduro-trails/
├── CLAUDE.md ✅ Полный паспорт проекта
├── CHANGELOG.md ✅
├── Makefile ✅ (make dev/test/lint/build)
├── Dockerfile ✅
├── docker-compose.yml ✅
├── pyproject.toml ✅
├── run_architect.sh ✅ Скрипт ручного запуска
├── run_dev.sh ✅
├── run_review.sh ✅
├── run_test.sh ✅
├── .openclaw/agents/
│ ├── architect.md ✅ System prompt (Opus)
│ ├── developer.md ✅ System prompt (Sonnet)
│ ├── reviewer.md ✅
│ ├── tester.md ✅
│ └── deployer.md ✅
├── docs/work-items/
│ ├── ET-001/ ✅ ПОЛНЫЙ ЦИКЛ (merged)
│ │ ├── 00-business-request.md
│ │ ├── 01-brd.md
│ │ ├── 02-trz.md
│ │ ├── 03-acceptance-criteria.md
│ │ ├── 04-test-plan.yaml
│ │ ├── 06-adr/
│ │ ├── 07-infra-requirements.md
│ │ ├── 12-review.md ✅ APPROVED
│ │ └── 13-test-report.md ✅ PASS
│ └── ET-002/ 🟡 В РАБОТЕ (analysis done, approved)
│ ├── 00-business-request.md
│ ├── 01-brd.md
│ ├── 02-trz.md
│ ├── 03-acceptance-criteria.md
│ └── 04-test-plan.yaml
├── src/ ✅
├── tests/ ✅
├── scripts/ ✅
├── migrations/ ✅
└── infra/ ✅
```
### Work Items — прогресс
| ID | Название | Этап | Статус |
|----|----------|------|--------|
| ET-001 | Исключить шлагбаумы и тротуары из OSRM | Done | ✅ Полный цикл: BRD → ADR → код → review (APPROVED) → test (PASS) → merged |
| ET-002 | Чекбокс POI в попапе рельефа | Analysis → approved | 🟡 BRD/ТЗ/AC/TestPlan готовы, status=approved, ветка создана, ждёт Architect |
### Git history (последние коммиты)
```
73c9dc4 docs(ET-002): status → approved
f1f4d5f docs(ET-002): BRD, ТЗ, AC, Test Plan
832099c docs: restructure phases
f561c3b fix: switchMapStyle loads style as JSON
fdc9836 Merge PR #4: restore UI phase 5.4 + ET-001
8d36f38 fix: restore UI to phase 5.4
0d57e47 test(ET-001): test report — PASS
d171629 review(ET-001): code review — APPROVED
e263f84 feat(ET-001): implement barrier blocking and footway exclusion
c44dc5c arch(ET-001): ADR, infra requirements
```
---
## Analyst agent (OpenClaw) — статус
**Workspace:** `/home/node/.openclaw/workspace-analyst/`
### Что есть
- ✅ SOUL.md, IDENTITY.md, AGENTS.md, TOOLS.md, HEARTBEAT.md
- ✅ ET-002 артефакты (BRD, ТЗ, AC, test plan) — сгенерированы
- ✅ Workspace-state.json (OpenClaw знает о нём)
### Что НЕ сделано
-Не зарегистрирован в `openclaw.json``agents.list[]`
- ❌ Нет Telegram binding (не получает сообщения напрямую)
- ❌ Нет отдельного Telegram-бота/группы
- ❌ Нет доступа к Plane API (PLANE_API_TOKEN не в env)
- ❌ Нет доступа к Gitea (SSH key / token)
---
## Plane — статус
**URL:** `https://plane.mva154.duckdns.org` (порт 8091/8443)
**Workspace slug:** `ag_proj`
### Что есть
- ✅ Plane развёрнут и работает (все контейнеры healthy)
- ✅ Workspace создан
### Что НЕ сделано
- ❌ Webhooks → Orchestrator не настроены
- ❌ Custom fields (qg_status, stage) не созданы
- ❌ Лейблы (stage:*, back-to:*, escalation:*) не созданы
- ❌ Шаблон Work Item с подзадачами не создан
---
## Gitea — статус
**URL:** `https://git.mva154.duckdns.org` (порт 3000 internal)
**Домен:** `git.mva154.duckdns.org`
### Что есть
- ✅ Gitea работает
- ✅ Репо `enduro-trails` с полной структурой
- ✅ Репо `orchestrator`
- ✅ CI workflow (Gitea Actions) — self-hosted runner (`act_runner`)
- ✅ Service account `claude-bot` (предположительно — коммиты от агентов)
### Что НЕ проверено / не сделано
- ❓ Branch protection на main (require PR, require CI green)
- ❓ Gitea Actions runner — работает ли сейчас?
- ❌ Webhooks → Orchestrator не настроены в Gitea UI
---
## Доступ к mva154
**Из OpenClaw контейнера:**
```bash
/home/node/.openclaw/skills/installer/scripts/ssh_exec.sh --host mva154 --cmd "<command>"
```
- Тип: `ssh-direct`
- Хост: `82.22.50.71:22`
- User: `slin`
- Auth: password (`MVA154_PASSWORD` из .env)
- Sudo: yes (`MVA154_SUDO_PASS`)
---
## Следующие шаги (приоритет)
1. **Дотянуть Orchestrator** — реализовать QG-проверки и автозапуск агентов (заглушки → реальная логика)
2. **Настроить webhooks** — Plane → Orchestrator, Gitea → Orchestrator
3. **Nginx proxy** — добавить `/orchestrator/` location
4. **Зарегистрировать Analyst** в openclaw.json + binding
5. **Прогнать ET-002** через автоматический пайплайн (первый автоматический запуск)
---
## Документация проекта
| Файл | Описание |
|------|----------|
| `tasks/multi-agent/BRD.md` | Полный BRD с архитектурой, QG, roadmap |
| `tasks/multi-agent/BACKLOG.md` | Бэклог + решения по Analyst |
| `tasks/multi-agent/DEV_TASK_ORCHESTRATOR_MVP.md` | ТЗ для Dev-агента на Orchestrator |
| `tasks/multi-agent/STATUS.md` | **Этот файл** — актуальный статус |
| `tasks/multi-agent/proposal_v1/` | Исходный proposal |
| `tasks/multi-agent/reports/` | Отчёты Dev-агента |