Proposal, design и дельты спек hub-api, data-model, commands, agent, mcp, migration; Purpose во всех шести спеках (O-4 #8). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
25 lines
2.3 KiB
Markdown
25 lines
2.3 KiB
Markdown
## MODIFIED Requirements
|
||
|
||
### Requirement: Импорт CSV-пакета
|
||
`jira-hub import <папка admin/jira-sync>` SHALL прочитать `tasks.csv`, `new_tasks.csv`, `epics.csv` и заполнить
|
||
`issue_note` по ключу Jira: статус по факту, вид работы, что сделано, что осталось, внутренние колонки. Строки
|
||
`new_tasks.csv` без ключа SHALL получать временный ключ `new:<номер строки>`; строки `tasks.csv` и `epics.csv` без ключа
|
||
SHALL пропускаться. `links.csv` SHALL импортироваться как сверочный набор в отчёт импорта (ожидаемые связи против зеркала
|
||
после первого `refresh`), не как команды. Связь, которой в зеркале нет как `source→target` того же типа, но есть как
|
||
`target→source` того же типа, SHALL попадать в `reversed_links`, а не в `missing_links`. Импорт идемпотентен: повтор
|
||
обновляет заметки, не дублирует.
|
||
|
||
#### Scenario: Импорт и первая синхронизация
|
||
- **WHEN** выполнены `init`, `import`, запущены хаб и агент, `refresh full` завершён
|
||
- **THEN** число задач зеркала ≥ числа строк `tasks.csv` + созданных из `new_tasks.csv`; отчёт импорта перечисляет ключи
|
||
из CSV, которых нет в зеркале, связи из `links.csv`, которых нет в `issue_link`, и связи, которые есть в обратную сторону
|
||
|
||
#### Scenario: Связь в обратную сторону
|
||
- **WHEN** в `links.csv` строка «AURORA-1445 → AURORA-1446, связанные», а в зеркале есть только «ASUPR_Связанные»
|
||
1446→1445
|
||
- **THEN** связь в `reversed_links`, в `missing_links` её нет
|
||
|
||
#### Scenario: Эпик без ключа
|
||
- **WHEN** в `epics.csv` строка без значения в колонке «Ключ»
|
||
- **THEN** строка пропущена, заметка `new:*` для неё не создаётся
|