diff --git a/TASKS.md b/TASKS.md new file mode 100644 index 0000000..bef6256 --- /dev/null +++ b/TASKS.md @@ -0,0 +1,240 @@ +# 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