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

40 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 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 из очереди.