docs/TASKS.md

301 lines
13 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.

# TASKS.md — Полный список задач Team Board
Обновлено: 2026-02-28
## Легенда
- ✅ Готово
- 🔧 В работе
- 📋 Запланировано
- 💡 Идея (требует brainstorm)
---
## Инфраструктура
- ✅ Tracker MVP: FastAPI + SQLAlchemy 2 + PostgreSQL 16
- ✅ Docker для Tracker (bind mounts: postgres, uploads, projects)
- ✅ Nginx + SSL (dev.team.uix.su)
- ✅ CI/CD: Gitea Actions auto-deploy
- ✅ Redis удалён (был не нужен)
- ✅ BFF удалён — фронт напрямую к Tracker
## Аутентификация
- ✅ JWT auth для людей (login/password)
- ✅ Token auth для агентов (Bearer tb-xxx)
- ✅ Auth middleware на всех /api/ endpoints
- ✅ OPTIONS preflight пропускается
- ✅ Bcrypt пароли (миграция с SHA-256)
- 📋 Authentik OAuth (SSO через auth.uix.su)
## Модели данных
- ✅ Unified Member model (human + agent)
- ✅ UUID как primary identifier везде (slug только для display)
- ✅ Soft-delete для agents (is_active flag)
- ✅ AgentConfig: capabilities, labels, chat/task_listen, prompt, model, provider
- ✅ Project: name, slug, description, repo_urls, status, task_counter, auto_assign
- ✅ ProjectMember (many-to-many)
- ✅ Task: title, desc, type, status, priority, labels, assignee, reviewer, watchers, parent_id, depends_on
- ✅ TaskAction (structured audit log)
- ✅ TaskLink (blocks, depends_on, relates_to)
- ✅ Label (глобальные, app-wide)
- ✅ TaskLabel (many-to-many)
- ✅ Step (checklist внутри задачи)
- ✅ Chat + Message (unified: чат + комментарии к задачам)
- ✅ Message: thinking, tool_log, actor_id, mentions
- ✅ Attachment (файлы в чате)
- ✅ ProjectFile (файлы проекта)
- ✅ Centralized enums (tracker/enums.py)
## WebSocket
- ✅ WS Foundation: подключение, auth, heartbeat
- ✅ Auto-subscribe на проекты при auth
- ✅ broadcast_message (с фильтрацией агентов)
- ✅ broadcast_task_event (с project_id)
- ✅ System messages: @mention filtering для агентов
- ✅ Agent streaming: start/delta/tool/end events
- ✅ config.updated event (hot reload)
- ✅ Frontend WS heartbeat (30 сек)
## REST API
- ✅ CRUD: projects, tasks, steps, messages, members
- ✅ Task links API (POST/GET/DELETE)
- ✅ Labels API (global CRUD + task associations)
- ✅ Project files API (upload, download, search, thumbnails)
- ✅ Chat attachments API
- ✅ Task search (q= по номеру + title)
- ✅ Subscription modes: all, mentions, assigned, none
- ✅ Auto-assign (task labels ↔ agent labels, project option)
- ✅ Init handshake: assigned_tasks в auth.ok
## Web Client (Vite + React SPA)
### Kanban Board
- ✅ 5 колонок (backlog → done) с цветами
- ✅ Карточки: приоритет, assignee, labels
- ✅ Parent/child key на карточках (TE-1 / TE-3)
- ✅ Move buttons (← →)
- ✅ Task dedup fix
### Task Modal
- ✅ Inline edit title + description
- ✅ Task key сверху (breadcrumb с родителем)
- ✅ Status, priority, assignee, reviewer selectors
- ✅ Steps (checklist с прогресс-баром)
- ✅ Comments (newest first, input on top)
- ✅ File attachments в чате
- ✅ Dependencies section (colored labels + search autocomplete)
- ✅ Subtasks section (status dots, clickable navigation)
- ✅ "+" Подзадача button
- ✅ Thinking blocks (collapsible 💭)
- ✅ Tool log (collapsible 🔧)
### Create Task Modal
- ✅ Title, Description
- ✅ Type (task/bug/feature)
- ✅ Status selector (colored circles, default backlog)
- ✅ Priority selector (colored circles)
- ✅ Assignee + Reviewer dropdowns
- ✅ Labels toggle buttons
- ✅ Parent ID (for subtasks)
### Chat Panel
- ✅ Fullscreen, dedup by ID
- ✅ Message styling (yellow=system, green=agent)
-@mention autocomplete (MentionInput)
- ✅ File attachments
### Project
- ✅ Tabs: Board / Chat / Files / Settings
- ✅ Project Files (drag & drop, search, thumbnails)
- ✅ Project Settings: name, desc, repos, status, auto-assign toggle
- ✅ Member management (humans + agent toggles)
### Settings (app-wide)
- ✅ Settings Layout с sidebar
- ✅ 🏷️ Лейблы — глобальные лейблы (CRUD, color picker)
- ✅ 🤖 Агенты — список, создание, редактирование
- ✅ Agent Modal: capabilities, labels, listen modes, prompt, model, token management
### Auth & Navigation
- ✅ Login page
- ✅ Sidebar с проектами
- ✅ Mobile viewport fix (100dvh)
- ✅ No-cache для index.html
## Picogent (Pi Agent Core — TypeScript)
- ✅ WS transport с auth
- ✅ Router: pure relay, zero side effects
- ✅ Agent streaming (start/delta/tool/end)
- ✅ Config split: agent.json + config.json
- ✅ Hot config update (config.updated handler)
- ✅ Anti-loop: ignore agent messages unless @mentioned
- ✅ Bootstrap context: AGENT.md + memory files
- ✅ Session compaction via Haiku
- ✅ Per-project memory (UUID-based dirs)
- ✅ Auto-reply (if no send_message tool called)
- ✅ 23 MCP tools: tasks(5), steps(2), messages(2), projects(2), members(1), files(6), task links(3)
- ✅ systemd template: picogent@.service
## Агенты
- ✅ Coder: slug=coder, capabilities=[code,review], AGENT.md (BMAD Dev style)
- ✅ Architect: slug=architect, capabilities=[architecture,review,planning], AGENT.md (BMAD Winston)
- ✅ Anti-loop rules в обоих AGENT.md
- ✅ Multi-agent: max 1 exchange per topic
## Безопасность
- ✅ Path traversal protection (basename + realpath)
- ✅ Agent sandbox (allowedPaths = [agentHome])
- ✅ CASCADE delete (tasks → messages, steps)
- ✅ Auth на всех mutations (get_current_member Depends)
---
## Запланировано
### Фича: RBAC — система прав
- 💡 Brainstorm: архитектура permissions (roles, per-endpoint checks)
- 📋 Реализация: таблица roles, role_permissions, middleware
- 📋 Права для агентов (ограничение действий)
- 📋 Viewer role (read-only, уже решено концептуально)
### Фича: Subtasks (расширение)
- ✅ parent_id в модели Task
- ✅ Subtasks section в TaskModal
- ✅ Create subtask button
- 📋 Subtasks на kanban доске (индентация или группировка)
- 📋 Drag & drop subtask в другого родителя
### Фича: Task Priorities (расширение)
- ✅ Priority field в модели + UI
- 📋 Сортировка по приоритету на доске
- 📋 Фильтр по приоритету
### Фича: PR-flow + Gitea интеграция
- 💡 Brainstorm: архитектура интеграции с Gitea API
- 📋 requires_pr flag на задаче
- 📋 Webhook от Gitea → Tracker (PR created/merged)
- 📋 Auto-move задачи в review при PR creation
- 📋 Auto-move в done при PR merge
### Фича: Review Iterations
- 📋 author ≠ reviewer validation
- 📋 Max 3 review iterations
- 📋 Review comments → task comments
### Фича: Voice Messages
- 📋 Web: MediaRecorder → upload audio
- 📋 Audio player в чате
- 📋 STT транскрипция для агентов (через Thoth)
- 📋 Android: voice recording
### Фича: Telegram Bridge (Picobridge)
- 📋 Bridge agent (member_type=bridge)
- 📋 WS → Telegram notifications
- 📋 Важные события: assigned, mentions
- 📋 Bidirectional: Telegram → Tracker
### Фича: Android Client
- ✅ Brainstorm завершён (Kotlin + Jetpack Compose)
- 📋 Создать репо team-board/android
- 📋 MVP: Kanban + Chat + Voice + Task creation
### Фича: Authentik OAuth
- 📋 OAuth2 flow с auth.uix.su
- 📋 Auto-create member при первом login
- 📋 SSO для всех сервисов
### Фича: Billing / API Usage
- 💡 Brainstorm: что считать, как хранить
- 📋 Tracking token usage per agent
- 📋 Cost dashboard
### Фича: Расширенные зависимости
- ✅ TaskLink model (blocks, depends_on, relates_to)
- ✅ UI: colored labels + search autocomplete
- 📋 Валидация циклических зависимостей
- 📋 Блокировка взятия задач с незавершёнными зависимостями
- 📋 Граф зависимостей (визуализация)
### Фича: Файлы в задачах
- 📋 Attachments прямо на задаче (не только в чате)
- 📋 Drag & drop в TaskModal
### Фича: Picogent npm package
- 📋 bin entry, shebang
- 📋 Publish в Gitea registry
### Фича: Фильтры и поиск
- 📋 Фильтр задач по assignee, priority, labels на доске
- 📋 Глобальный поиск задач
- 📋 Saved filters
### Фича: Vector Search (Phase 3)
- 💡 Когда >20 проектов — RAG для agent memory
---
## Исследования и заимствования
### Google A2A Protocol — что можно взять
Источник: https://github.com/a2aproject/A2A (RC v1.0)
- 💡 **context_id** — кросс-задачный контекст для группировки связанных задач. Агент помнит что TE-5, TE-6, TE-7 — одна история. Наследуется от родителя.
- 💡 **Extensions framework** — механизм плагинов для агентов:
- Data-only: метаинформация (стоимость, SLA)
- Profile: ограничения на формат данных
- Method Extensions: кастомные API endpoints (git-diff, run-tests)
- State Machine: кастомные статусы задач
- 💡 **Agent Card** (`/.well-known/agent.json`) — стандартный формат описания агента для совместимости с внешними A2A-агентами
- 💡 **Artifact vs Message** — разделение: Message = общение, Artifact = результат работы
- 💡 **A2A Gateway** — адаптер для интеграции с внешними A2A-совместимыми агентами
### Фича: Agent Skills (Inter-agent Method Invocation)
Вдохновлено: A2A Method Extensions
- 💡 `skills` поле в AgentConfig — массив объектов {id, name, description, input_schema, output_schema}
- 💡 API: `GET /agents/{id}/skills` — список skills агента
- 💡 API: `POST /agents/{id}/skills/{skill_id}/invoke` — вызов skill
- 💡 WS event `skill.invoke` → агент получает структурированный запрос
- 💡 WS event `skill.result` → результат возвращается вызывающему
- 💡 MCP tool `list_agent_skills(agent)` — агент узнаёт skills других агентов
- 💡 MCP tool `invoke_skill(agent, skill_id, params)` — формальный вызов
- 💡 Discovery: skills включаются в auth.ok (bootstrap) для всех участников проекта
- 💡 Tracker = прокси (маршрутизирует invoke → целевому агенту через WS)
- 💡 Input/output schema validation на Tracker (до отправки агенту)
### Фича: Agent Secrets & Granular Permissions
Связано с: RBAC, Agent Skills
- 💡 **Agent Secrets** — зашифрованное хранилище секретов per-agent (API keys, prod credentials, SSH keys)
- Секреты доступны ТОЛЬКО агенту-владельцу (не через UI, не другим агентам)
- Tracker хранит encrypted, агент расшифровывает при получении
- Управление: admin создаёт/обновляет через UI, агент читает через MCP tool `get_secret(key)`
- 💡 **Resource Permissions** — какой агент к чему имеет доступ:
- `prod_deploy` — только deploy-agent
- `db_write` — только coder (read-only для остальных)
- `external_api` — только у агента с соответствующим секретом
- 💡 **Sandbox levels** — расширение текущего allowedPaths:
- Level 0: только свой agentHome (текущее)
- Level 1: + project files (read)
- Level 2: + project files (write) + git
- Level 3: + system commands (deploy, restart)
- 💡 Предпосылка для Agent Skills — без permissions skills бесполезны
### Фича: Token Budget & Error Recovery
- 📋 Picogent: graceful error handling при 429/402 от LLM API
- Системное сообщение в чат: "⚠️ Агент X: rate limit / billing error"
- Статус агента → `error` (новый MemberStatus)
- Retry с backoff для 429, полная остановка для 402
- 📋 Token usage tracking: Picogent считает usage → отправляет в Tracker
- 📋 UI: расход токенов per agent (dashboard)
- 📋 Alerts: уведомление при приближении к лимиту (80%, 95%)
- 💡 Budget limits: max tokens per agent per day/month
- 💡 Auto-pause: агент автоматически останавливается при достижении лимита