40 lines
4.7 KiB
Markdown
40 lines
4.7 KiB
Markdown
## 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 из очереди.
|