# 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-совместимыми агентами