docs/TASKS.md

10 KiB
Raw Blame History

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