44 lines
3.4 KiB
Markdown
44 lines
3.4 KiB
Markdown
## ADDED Requirements
|
||
|
||
### Requirement: Журнал изменений в refresh
|
||
Отметка журнала — `started_at` последнего `sync_run` с `history_at IS NOT NULL` (любой `query`). JQL стартовой загрузки
|
||
— `(<базовая JQL>) AND sprint in openSprints() AND statusCategory != Done`. Хаб SHALL при каждой выдаче `refresh`
|
||
(первой и повторной) дописывать в параметры `history` (в базе `params` без него, как `boards`):
|
||
- полный прогон (`refresh` по базовой JQL), отметка есть — `{since: <отметка − 15 минут, ISO-8601 UTC с Z>}`; если
|
||
`query` прогона-отметки не равна текущей базовой JQL — также `jql: <JQL стартовой загрузки>`;
|
||
- полный прогон, отметки нет — `{jql: <JQL стартовой загрузки>}`;
|
||
- `refresh {keys}` и `refresh` по небазовой JQL — `{since: …}`, если отметка есть; иначе `history` не дописывается;
|
||
- без базовой JQL (нет проектов) — `history` не дописывается.
|
||
|
||
Результат `refresh` MAY содержать `history` (см. `agent`, «Журнал изменений»); хаб SHALL принимать результат и без
|
||
него. Отметку (`sync_run.history_at`) хаб SHALL проставлять по правилам `data-model`, «Отметка журнала в журнале
|
||
синхронизаций».
|
||
|
||
#### Scenario: Первый refresh после выкатки
|
||
- **WHEN** проект `AWPCA`, прогонов с `history_at` нет; выдаётся полный `refresh`
|
||
- **THEN** в выданных параметрах `history = {jql: '(project = AURORA AND labels in ("AWPCA")) AND sprint in
|
||
openSprints() AND statusCategory != Done'}`; в базе `params` без `history`
|
||
|
||
#### Scenario: Регулярный refresh
|
||
- **WHEN** последний полный прогон с `history_at` начат в `2026-10-22T09:00:00+00:00` по текущей базовой JQL; выдаётся
|
||
автообновление
|
||
- **THEN** `history = {since: "2026-10-22T08:45:00Z"}`
|
||
|
||
#### Scenario: Журнал не дочитан
|
||
- **WHEN** прогон в 10:00 завершился `done` с `history.error`, прогон в 09:00 — с принятым журналом; выдаётся следующий
|
||
полный `refresh`
|
||
- **THEN** `history.since` — от прогона 09:00
|
||
|
||
#### Scenario: Новый проект
|
||
- **WHEN** прогон с `history_at` в 09:00 по JQL только с `AWPCA`; затем создан проект `STOCKS_DRRK`; выдаётся полный
|
||
`refresh`
|
||
- **THEN** `history = {since: "…T08:45:00Z", jql: <стартовая по новой базовой JQL>}`
|
||
|
||
#### Scenario: Хвост пакета
|
||
- **WHEN** выдаётся хвостовой `refresh {keys: [X]}`, отметка есть
|
||
- **THEN** `history = {since: …}`; по завершении `done` с `result.history` у его `sync_run` `history_at = NULL`
|
||
|
||
#### Scenario: Хвост пакета до первой отметки
|
||
- **WHEN** выдаётся хвостовой `refresh {keys: [X]}`, прогонов с `history_at` нет
|
||
- **THEN** в выданных параметрах нет `history`
|