Andrey Epifancev 3a11c618a6 spec: bridge-core — мост Jira (хаб, очередь команд, агент, MCP, импорт)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-11 20:45:10 +04:00

4.7 KiB
Raw Blame History

Why

Актуализация Jira-бэклога АРМ КА (проект AURORA, метка AWPCA) ведётся из этой машины, а доступ к Jira банка есть только у виртуалки (192.168.0.112). Рабочий цикл 11.10.2026: правка CSV и скрипта здесь → владелец копирует файлы в виртуалку через общую папку → запускает jira_sync.py → выгружает фильтр в CSV → копирует обратно → сверка. За вечер пять кругов, один закончился дублем задачи (AURORA-1588): ключи созданных задач жили в new_tasks.csv виртуалки, перенос в неправильную сторону создал задачу повторно. Владелец больше не хочет быть курьером, а CSV как источник истины себя исчерпал.

Решения владельца 11.10.2026 (сессия brainstorming, admin/jira-sync/next-session-bridge.md):

  • единственный источник истины по задачам проекта — база на этой машине (Mac mini, 192.168.0.106); виртуалка — клиент;
  • интерфейсы к базе — просмотрщик (UI, позже) и MCP (сейчас); CSV и jira_sync.py как CLI уходят;
  • модель изменений — гибрид: зеркало задач только для чтения, любая правка порождает команду в очереди (журнал, повторяемость);
  • темп запросов к Jira — требование первого порядка (429), политика темпа живёт в хабе, не в агенте;
  • хаб никогда не повторяет команды сам; каждая команда — желаемый результат, выполняется как «проверь, потом сделай»;
  • зеркало ограничено JQL project = AURORA AND labels = AWPCA (полный набор задач нашего проекта; AURORA шире), фильтры — на стороне приложения;
  • первая поставка — только ядро (база, хаб, агент, импорт, MCP); просмотрщик на живых данных и правки из UI — отдельные change'и;
  • по репозиторию на компонент: jira-hub (эта машина) и jira-agent (виртуалка), ремоуты — приватные в Gitea под aep.

What Changes

  • jira-hub (новый репозиторий, Python 3.13, uv): SQLite-база с зеркалом задач, служебными заметками, пакетами и командами; HTTP API в локальной сети для агента и интерфейсов; MCP-сервер (stdio) как второй вход в тот же код; разовый импорт CSV-пакета admin/jira-sync/.
  • jira-agent (новый репозиторий, Python 3.9, только stdlib): один файл agent.py + agent.json; опрашивает хаб, выполняет команды в Jira по правилу «проверь, потом сделай», ведёт локальный журнал, возвращает состояние задач.
  • Спеки: data-model, commands, agent, hub-api, mcp, migration (все новые).
  • admin/jira-sync/README.md получает пометку «заменено мостом» (правка вне репозиториев, по чеклисту закрытия); awp-ca/CLAUDE.md — две строки в таблице репозиториев.

Non-goals

  • Просмотрщик sprint-2-links.html на живых данных и правки из него (отдельные change'и: viewer-live, viewer-edit).
  • Автоматическая подстройка темпа по фактам 429 (хаб только показывает их).
  • История версий зеркала (резервные копии файла базы перед пакетом заменяют её).
  • Работа с типом «Ошибка» вне базовой JQL, несколько проектов Jira, несколько агентов.
  • TLS и аутентификация пользователей в хабе: домашняя сеть, два статических токена.
  • Произвольные JQL на запись, произвольные вызовы REST из очереди.