49 lines
4.2 KiB
Markdown
49 lines
4.2 KiB
Markdown
## Why
|
||
|
||
«Статус по факту» (`issue_note.fact_status`) пришёл из CSV-пакета `admin/jira-sync`: владелец вёл его руками рядом со
|
||
статусом Jira, а `jira_sync.py` переводил задачи в Jira по таблице `transitions.map`, ключом которой был этот статус.
|
||
Владелец 17.10.2026 (brainstorming #57) решил, что поле — шум, и его нужно убрать совсем. Первым шагом (#57, PR #58)
|
||
поле убрали из веб-приложения; в базе, API, MCP, настройках и импорте оно осталось (#60).
|
||
|
||
Хаб статус по факту не использует ни для чего, кроме хранения и показа: агент `ensure_status` получает путь статусов в
|
||
самой команде и `transitions_map`/`status_labels` не читает; потребители MCP (awp-ca, stocks_drrk, sfm_foxpro) поле не
|
||
упоминают. Владелец 24.10.2026: сохранённые значения удалить безвозвратно (#104).
|
||
|
||
## What Changes
|
||
|
||
- **База, схема v8:** миграция v7 → v8 удаляет колонку `issue_note.fact_status` и ключи `status_labels`,
|
||
`transitions_map` из `setting`, поднимает `settings_version`; копия базы — в `backups/` по общему правилу.
|
||
- **Настройки:** `status_labels` и `transitions_map` уходят из умолчаний модуля jira и из ключей для агента;
|
||
`sdlc-hub init --config` их не переносит.
|
||
- **API:** `GET /issues` без фильтра и поля `fact_status` (параметр игнорируется, как любой неизвестный);
|
||
`GET /board` без `fact_status`; `PUT /issues/{key}/note` с `fact_status` — 422 «неизвестные поля заметки».
|
||
- **MCP `sdlc-jira`:** `issues` — без колонки «статус по факту» и параметра `fact_status`; `notes_set` — без параметра
|
||
`fact_status`; `issue` не выводит его в заметках.
|
||
- **Импорт** `sdlc-hub import` пропускает колонку «Статус по факту» CSV.
|
||
- **Веб:** из типов (`Note`, `BoardIssue`) и фикстур уходят `fact_status` и `status_labels`; поведение страниц не
|
||
меняется.
|
||
- **Спеки и документация:** `data-model`, `hub-api`, `mcp`, `migration`, `modules`, `web-app`, README, ARCHITECTURE.md.
|
||
В `data-model` исправляется отставание: «текущая — 6» при коде v7.
|
||
|
||
## Non-Goals
|
||
|
||
- jira-agent: изменений не нужно, design-only change в агенте не заводится.
|
||
- `kind_labels`, `work_kind` и прочие заметки — остаются.
|
||
- Пункты M-3, M-4, M-5 из #60 (они про «скрыть закрытые», не про статус по факту) — остаются в #60.
|
||
- Спринты и бэклог модуля jira — следующий change.
|
||
|
||
## Anti-Goals
|
||
|
||
- Потеря других данных заметок (`work_kind`, `done_text`, `rest_text`, `owner_note`, `updated_at`, `updated_by`) при
|
||
миграции.
|
||
- Хаб, который после миграции снова создаёт `status_labels`/`transitions_map` (умолчания) или отдаёт их агенту.
|
||
- Падение хаба на базе v7 при старте: миграция должна пройти на живой базе без ручных шагов.
|
||
|
||
## Impact
|
||
|
||
- Код: `src/sdlc_hub/core/db.py` (v8), `src/sdlc_hub/modules/jira/{schema,settings,mirror,api,mcp,importer}.py`,
|
||
`web/src/modules/jira/**` (типы, фикстуры), тесты и эталоны `tests/fixtures/baseline/*`.
|
||
- Выкатка: `kickstart` хаба владельцем (миграция при старте), `/mcp` → reconnect в сессиях с `sdlc-jira`, `make web`
|
||
(типы веба).
|
||
- Закрывает пункт «Статус по факту — удалить совсем» в #60; issue #60 остаётся открытой (M-3, M-4, M-5).
|