# Portability: SYSTEM
# Last validated: 2026-05-17
# Next review: 2027-05-17
# Ресурсы: [tasks table, ati_tasks table,hub/task.py, bach_api.py]

TASKS - система задач
-----------------------

Статус: 2026-02-08

Система задач (уровень 5) координирует работу между пользователем и
Агенты-партнеры (Клод, Близнецы и т. д.).

ОСНОВНЫЕ ПОНЯТИЯ
------------
- ЗАДАЧИ ВРУЧНУЮ: Через `добавление задачи bach` (таблица: `tasks`).
- СКАНИРОВАННЫЕ ЗАДАЧИ: Из комментариев к коду (таблица: `ati_tasks`).
- МУЛЬТИПАРТНЕР: назначение через `--assigned` агентам или пользователям.
- ДИСТ-УРОВНИ: задачи разделяются с помощью `dist_type` (Пользователь/Шаблон/Ядро).

ДВА ПУТИ ДОСТУПА (НОВОЕ, начиная с версии 2.0)
-------------------------------
BACH имеет ДВА параллельных пути доступа — оба используют одни и те же обработчики + DB:

1. CLI (для людей за терминалом):
     Задача python bach.py добавить «Заголовок» --priority P4

2. БИБЛИОТЕКА API (ПРЕДПОЧТИТЕЛЬНО для LLM/сценариев):
     из задачи импорта bach_api
     Task.add("Заголовок", "--priority", "P4")
     задача.список()
     Task.done(42, "--note", "Done")

КОМАНДЫ CLI (задача bach)
-----------------------
  add <title> Создает задачу (--priority P1-P4, --description, --category)
  список [статус] Отфильтрованный обзор (ожидает/открыт/in_progress/done/blocked/all)
  list --filter Фильтровать по термину в заголовке
  list --назначенные задачи для конкретного партнера
  list --unassigned Задачи без назначения
  показать детали <ID>, включая описание и историю
  edit <ID> Редактирует задачу (--title, --description, --category, --assigned)
  Done <ID> Отмечает задачу как завершенную (Multi-ID, --note)
  блок <ID> Блокирует задачу(и) (multi-ID, --reason)
  unblock <ID> Разблокирует задачу(и) (Multi-ID)
  reopen <ID> Повторно открывает выполненные задачи (Multi-ID)
  delete <ID> Удаляет задачу(и) навсегда (мульти-ID)
  приоритет <ID> <P> Изменяет приоритет (P1-P4)
  назначить <ID> Назначение партнеру (--GEMINI/COPILOT/и т. д.)
  зависит <ID> Отображает зависимости
    --on <X> Добавить зависимость (задача ожидает X)
    --remove <X> Удаляет зависимость
    --clear Очищает все зависимости

ПРИМЕРЫ БИБЛИОТЕКИ-API
---------------------
  из задачи импорта bach_api

  # Создать задачу
  Task.add("Написать документацию", "--priority", "P2", "--category", "docs")

  # Список задач
  Task.list("ожидание")
  Task.list("open") # Статус предыдущей версии
  Task.list("in_progress") # В настоящее время выполняется
  Task.list("все", "--assigned", "БЛИЗНЕЦЫ")
  Task.list("--unassigned")

  # Редактировать задачи
  Task.edit(42, "--title", "Новый заголовок")
  Task.done(100, 101, 102, "--note", "Все готово")
  Task.assign(200, "--to", "ВТОРОЙ ПИЛОТ")

  # зависимости
  Task.dependents(306, "--on", "305") # Задача 306 ожидает 305
  Task.dependents(306) # Показать зависимости

SCAN-TASKS (hub/ati.py)
-----------------------
  bach ati onboard --check    Сканирует файловую систему на наличие новых задач.
  bach scan tasks             Списывает задачи из `ati_tasks`.

БАЗА ДАННЫХ (уровень 1)
---------------------
- `tasks`: id, заголовок, описание, статус, приоритет, назначенный_кому, делегированный_ком,
  зависит_он, категория, теги, созданный_ат, завершенный_ат, обновленный_ат, dist_type.
- `ati_tasks`: Отсканированные задачи со ссылкой на источник (Файл/Строка).
- Путь к базе данных: system/data/bach.db

Графический интерфейс и интеграция (планируется)
---------------------------
 **Доска задач** (/tasks) запланирована как представление Канбана, которое
Позволяет перемещать задачи между столбцами статуса.

СМОТРИТЕ ТАКЖЕ
----------
  system/bach_api.py Модуль API библиотеки (привилегированный доступ)
  system/hub/task.py Реализация TaskHandler
  docs/help/delegate.txt Делегирование партнерам
  docs/help/maintain.txt Проверка и очистка целостности
  bach --help ati      The Automated Tool Incorporator
