openspec: change agile-web-polish — доработки «Бэклога» и «Спринта» (#112)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
af70ba8d65
commit
5c7a845a6e
2
openspec/changes/agile-web-polish/.openspec.yaml
Normal file
2
openspec/changes/agile-web-polish/.openspec.yaml
Normal file
@ -0,0 +1,2 @@
|
||||
schema: spec-driven
|
||||
created: 2026-10-25
|
||||
123
openspec/changes/agile-web-polish/design.md
Normal file
123
openspec/changes/agile-web-polish/design.md
Normal file
@ -0,0 +1,123 @@
|
||||
## Context
|
||||
|
||||
После выкатки #108 (25.10.2026) владелец посмотрел «Бэклог», «Спринт» и «Kanban» на живой доске AWPCA (4216, три
|
||||
спринта) и записал 10 замечаний в sdlc-hub#112. Владелец попросил не проводить brainstorming-вопросы и писать дизайн
|
||||
по тексту issue, поэтому всё, что в issue не сказано прямо, — решения агента (раздел «Decisions made without
|
||||
discussion»).
|
||||
|
||||
Текущее состояние (`web/src/modules/jira/agile/`): `BacklogPage` рисует секции `Panel` без свёртки, эпики идут строками
|
||||
наравне с задачами; `SprintPage` показывает один активный спринт, переключатель `Segmented` — только между активными;
|
||||
`BoardColumns` — flex-ряд с `align-items:flex-start` и `overflow-x:auto`; `TypeIcon` знает три вида (эпик —
|
||||
`IconBoard`, ошибка — `IconCritical` (молния), прочее — `IconCheck`). Фильтров нет. Все нужные данные уже приходят в
|
||||
`GET /agile` (`AgileIssue`: `issue_type`, `assignee`, `epic_key`, `done`, `rank`, `status`) — сервер не меняется.
|
||||
|
||||
## Goals / Non-Goals
|
||||
|
||||
Цели — 10 пунктов #112 и попутно веб-маркеры из hub#111 (M-6, T10.3, T9.4, T12.2–T12.4). Не цели — правки Jira из
|
||||
веба, изменения API/схемы/агента/MCP, настройки доски AWPCA в Jira, серверные пункты hub#111.
|
||||
|
||||
## Decisions
|
||||
|
||||
1. **Фильтры — на клиенте, чистой моделью.** Новый модуль `agile/filters.ts`: тип состояния страницы
|
||||
(`q`, `assignee`, `epic`, `hideDone`, `collapsed`, `hiddenColumns`, `epicsPanel`), функция «видна ли задача»
|
||||
(поиск по `key` и `summary` без учёта регистра; `assignee`: `""` — все, `"-"` — без исполнителя; `epic`: `""` — все,
|
||||
`"-"` — без эпика, иначе `epic_key === epic`; `hideDone`), списки вариантов исполнителей и эпиков. Страницы и
|
||||
компоненты только рисуют. Модель покрыта unit-тестами, страницы — тестами поведения.
|
||||
|
||||
2. **Запоминание — один ключ `sdlc-hub-agile`.** JSON `{ "<метка>": { "backlog": {...}, "sprint": {...},
|
||||
"kanban": {...} } }`; хранится всё, кроме `q` и выбора спринтов. Чтение и запись — в `try/catch` (закрытое
|
||||
хранилище, мусор, чужая форма — значения по умолчанию), как `sidebarPref`/`legendPref`. Миграция `jira-hub-` не нужна
|
||||
— ключ новый. Свёрнутые секции — по id спринта и `"backlog"`; id закрытых/удалённых спринтов при чтении не мешают
|
||||
(просто не совпадают). Скрытые колонки — по имени колонки (`"Без колонки"` — тоже имя).
|
||||
|
||||
3. **Панель фильтров** — общий компонент `AgileToolbar` для трёх страниц, набор элементов — пропсами. Используются
|
||||
готовые `SearchInput`, `Select`, `Checkbox`/`Button aria-pressed`, `Dropdown`/`Menu` из `web/src/ui`; новые элементы
|
||||
UI-кита не вводятся, кроме значков (п. 7). Устаревшее значение исполнителя/эпика остаётся в списке (как
|
||||
`withCurrent` у списка задач), чтобы пустой результат объяснялся видимым фильтром.
|
||||
|
||||
4. **Свёртка секций «Бэклога».** Заголовок секции — `<button aria-expanded aria-controls>` с шевроном
|
||||
(`IconChevronDown`/`Up`) и прежним содержимым заголовка; свёрнутая секция показывает только заголовок с итогами.
|
||||
«Прошлые спринты» остаются `<details>` (не запоминаются — как сейчас).
|
||||
|
||||
5. **Эпики на «Бэклоге».** Эпик — задача, у которой `TypeIcon` определяет вид «эпик» (одна функция `typeKind` для
|
||||
значка и фильтра). Строки эпиков убираются из всех секций «Бэклога» (и из счёта «N задач» секции «Бэклог», который
|
||||
считается на клиенте). Панель — колонка слева шириной ~240 px в сетке страницы; при контейнере `page` уже 900 px —
|
||||
`Select «Эпик»` в панели фильтров. Число у эпика — задачи с этим `epic_key` в активных, будущих спринтах и «Бэклоге»
|
||||
без учёта остальных фильтров. На «Спринте» и «Kanban» эпики не трогаются (в issue речь только о бэклоге).
|
||||
|
||||
6. **Итоги секций — факты спринта.** Заголовок спринта показывает серверные `count`/`points`/`unestimated`; фильтры их
|
||||
не меняют, добавляется «показано K», когда видно меньше задач секции. Так ретро-цифры спринта не «плавают» от фильтра.
|
||||
Числа в заголовках колонок доски — по видимым карточкам.
|
||||
|
||||
7. **Значки типов по образцу Jira.** `typeKind(issue_type)` → `epic | story | task | bug | subtask | other`; значок —
|
||||
скруглённый квадрат 16 px цвета вида с белым символом (эпик — молния, история — закладка, задача — галочка, ошибка
|
||||
— круг, подзадача — два квадрата, прочее — нейтральный серый квадрат с точкой). Новые символы — в
|
||||
`web/src/ui/icons.tsx` тем же `make(...)`; цвета — токенами дизайн-системы (эпик — `--k-ui`, история —
|
||||
`--color-status-success`, задача — `--color-action-primary`, ошибка — `--color-status-error`, подзадача и прочее —
|
||||
нейтральные), контраст белого символа проверить в обеих темах. При завершении — перенести значки в kit скилла
|
||||
`aura-design`.
|
||||
|
||||
8. **Выбор спринтов на «Спринте».** `Dropdown` с отметками (активные, затем будущие по `start_date`, без даты — в
|
||||
конце), адрес `?sprint=<id>[,<id>…]` с `replace` (без записи истории). Задачи доски — объединение задач выбранных
|
||||
спринтов без повторов по ключу, порядок — по `rank` (строка LexoRank сравнивается как строка; `null` — в конце, затем
|
||||
по ключу). Заголовков столько, сколько выбрано спринтов, компактной строкой каждый; «осталось N дн.» — только у
|
||||
активного. Прежний одиночный `?sprint=<id>` остаётся рабочим адресом.
|
||||
|
||||
9. **Колонки одной высоты и прокрутка (пп. 8 и 10).** Гипотеза по багу (подтвердить воспроизведением в начале
|
||||
задачи, superpowers:systematic-debugging): горизонтальная полоса `.agile-columns` есть, но лежит под самой длинной
|
||||
колонкой, далеко ниже окна (и скрыта macOS до прокрутки), поэтому правые колонки на 2560 px выглядят обрезанными.
|
||||
Исправление: страницы доски растягиваются на высоту основной области оболочки (`flex:1; min-height:0` по цепочке,
|
||||
доска `min-height:360px`), `.agile-columns` — `align-items:stretch` и своя высота, у колонки прокручивается список
|
||||
(`overflow-y:auto`). Тогда полоса горизонтальной прокрутки всегда у нижнего края окна, колонки одной высоты. Если
|
||||
воспроизведение покажет другую причину — чинится причина, требование спеки то же.
|
||||
|
||||
10. **Скрытие колонок** — меню «Колонки» с отметками на «Спринте» и «Kanban»; последнюю видимую снять нельзя; число
|
||||
скрытых — `Badge` на кнопке. Скрытие — только вид, `columnsOf` не меняется, фильтруется результат.
|
||||
|
||||
11. **Попутные маркеры hub#111.** M-6 — `fmtSp` округляет до двух знаков и убирает хвостовые нули (веб-сторона;
|
||||
MCP `:g` не трогаем, расхождение для дробных до сотых исчезает). T10.3 — `h3` в заголовках колонок. T9.4 — тесты
|
||||
загрузки и ошибки `AgileGate` и пункта «Kanban» kanban-проекта в меню. T12.2–T12.4 — e2e доски: фиксированный
|
||||
`jira_updated` в сиде, строгие локаторы по роли и тексту, без зависимости от порядка DOM.
|
||||
|
||||
12. **Тестовые данные.** Сид e2e (`web/scripts/test-hub.sh` и фикстуры агента) дополняется так, чтобы были: эпик с
|
||||
задачами в спринте и бэклоге, задачи без эпика и без исполнителя, будущий спринт с задачами, доска с числом колонок
|
||||
и карточек, достаточным для широкой доски из сценария «Широкая доска».
|
||||
|
||||
## Risks / Trade-offs
|
||||
|
||||
- **Высота доски от оболочки.** Растяжение по высоте зависит от цепочки flex в `shell.css`/`Layout.tsx`; нельзя
|
||||
сломать прокрутку других страниц — e2e «страница без горизонтальной прокрутки» и сценарии оболочки остаются зелёными.
|
||||
- **Объединение спринтов.** Задача может числиться и в активном, и в будущем спринте (перенос) — без дедупликации
|
||||
карточка задвоится; дедупликация по ключу — в п. 8.
|
||||
- **Распознавание эпика по имени типа.** Тип зависит от локали Jira; список имён — один на значок и фильтр, расширяется
|
||||
в одном месте.
|
||||
|
||||
## Decisions made without discussion
|
||||
|
||||
Все — 25.10.2026, владелец попросил писать дизайн по issue без вопросов. Нумерация рулингов R-n — с R-1 в пределах
|
||||
этой фичи.
|
||||
|
||||
- R-1 (design #2): фильтры и свёртка запоминаются отдельно по странице (`backlog`/`sprint`/`kanban`) и проекту, поиск
|
||||
и выбор спринтов — не запоминаются. Обоснование: как в Jira — поиск разовый, выбор спринтов живёт в адресе.
|
||||
Цена ошибки — сделать исполнителя общим для страниц или запоминать поиск: правка одного модуля `filters.ts`.
|
||||
- R-2 (design #5): эпики убираются строками только на «Бэклоге»; на «Спринте» и «Kanban» остаются карточками.
|
||||
Обоснование: в issue речь о бэклоге. Цена ошибки — тот же фильтр на доске, одна строка.
|
||||
- R-3 (design #5): фильтр по эпику действует и на прошлые спринты; число у эпика — без учёта других фильтров и без
|
||||
прошлых спринтов. Цена ошибки — правка подсчёта в модели.
|
||||
- R-4 (design #6): итоги секций спринта не зависят от фильтров, добавляется «показано K»; числа колонок доски — по
|
||||
видимым. Цена ошибки — пересчитывать итоги на клиенте.
|
||||
- R-5 (spec): «Скрыть выполненные» не действует на прошлые спринты и на «Kanban» (у kanban последняя колонка — уже
|
||||
«за 14 дней»). Цена ошибки — включить флагом.
|
||||
- R-6 (design #8): выбор спринтов — несколько сразу (по умолчанию все активные), в адресе. Формулировка issue
|
||||
(«выбор отображаемых спринтов: и активные, и будущие») допускает и одиночный выбор; множественный — надмножество.
|
||||
Цена ошибки — заменить список отметок одиночным выбором.
|
||||
- R-7 (spec): поиск и исполнитель — на всех трёх страницах, включая «Kanban», хотя в issue названы «Бэклог» и доска
|
||||
спринта: общий компонент, единообразие. Цена ошибки — скрыть два поля на «Kanban».
|
||||
- R-8 (design #7): набор видов значков и их цвета (Jira: эпик фиолетовый с молнией, история зелёная с закладкой,
|
||||
задача синяя с галочкой, ошибка красная с кругом, подзадача). Цена ошибки — перерисовать значки.
|
||||
- R-9 (design #9): причина бага прокрутки — гипотеза, подлежит проверке воспроизведением; починка — через растяжение
|
||||
доски на высоту окна, совмещённую с п. 8. Цена ошибки — другая починка того же требования.
|
||||
- R-10 (proposal): из hub#111 взяты только веб-маркеры M-6 (веб-сторона), T10.3, T9.4, T12.2–T12.4; hub#111 после
|
||||
merge остаётся открытой с комментарием о закрытых маркерах. Цена ошибки — взять/отложить другие пункты.
|
||||
- R-11 (spec): узкий экран — панель эпиков превращается в выбор при контейнере уже 900 px. Цена ошибки — подобрать
|
||||
порог.
|
||||
38
openspec/changes/agile-web-polish/proposal.md
Normal file
38
openspec/changes/agile-web-polish/proposal.md
Normal file
@ -0,0 +1,38 @@
|
||||
## Why
|
||||
|
||||
25.10.2026, после выкатки #108, владелец посмотрел страницы «Бэклог», «Спринт» и «Kanban» на живых данных AWPCA и
|
||||
собрал 10 замечаний (sdlc-hub#112): страницам не хватает привычных по Jira средств навигации — свернуть спринт,
|
||||
отфильтровать по эпику, исполнителю, тексту, убрать выполненное, выбрать спринты и колонки доски; значки типов не
|
||||
читаются; колонки разной высоты дают визуальный шум, а на широком экране правые колонки обрезаны без прокрутки.
|
||||
Веб по-прежнему только для просмотра: всё ниже — вид и фильтры, Jira не меняется.
|
||||
|
||||
## What Changes
|
||||
|
||||
- **«Бэклог»:** сворачивается любая секция (активные и будущие спринты, «Бэклог»); эпики — панелью слева, выбор
|
||||
эпика фильтрует все секции, сами эпики строками списка больше не идут; быстрый поиск по ключу и теме; «Скрыть
|
||||
выполненные»; фильтр по исполнителю.
|
||||
- **«Спринт»:** выбор отображаемых спринтов — любые активные и будущие, несколько сразу (`?sprint=<id>,<id>`); тот же
|
||||
поиск, исполнитель, «Скрыть выполненные»; скрытие колонок; колонки одной высоты во всю доску, задачи прокручиваются
|
||||
внутри колонки, горизонтальная прокрутка доски всегда в пределах окна.
|
||||
- **«Kanban»:** общие с «Спринтом» колонки — та же высота, прокрутка и скрытие колонок; поиск и исполнитель.
|
||||
- **Значки типов** — по образцу Jira: эпик, история, задача, ошибка, подзадача, прочее.
|
||||
- **Запоминание:** свёрнутые секции, эпик, исполнитель, «Скрыть выполненные», скрытые колонки, видимость панели
|
||||
эпиков — в `localStorage` по проекту и странице (`sdlc-hub-agile`). Поиск и выбор спринтов не запоминаются.
|
||||
- **Попутно из hub#111:** M-6 (формат SP в вебе), T10.3 (заголовки колонок `h3`), T9.4 (тесты `AgileGate` и меню
|
||||
kanban-проекта), T12.2–T12.4 (нестрогие e2e доски).
|
||||
|
||||
## Non-Goals
|
||||
|
||||
- Правки Jira из веба — по-прежнему только просмотр.
|
||||
- Изменения API, схемы, агента, MCP: все данные (`epic_key`, `issue_type`, `assignee`, `done`, колонки) уже есть в
|
||||
`GET /agile`.
|
||||
- Настройки доски AWPCA в Jira («Протестировано» в «Нужно сделать», «Снято» без колонки, опечатка «К тестирвоанию») —
|
||||
делаются в Jira владельцем.
|
||||
- Прочие пункты hub#111 (сервер, MCP, агент, тесты API) — остаются в follow-up.
|
||||
|
||||
## Impact
|
||||
|
||||
- Спека `web-app`, требование «Спринты и бэклог» — переписано.
|
||||
- Код: `web/src/modules/jira/agile/*`, значки в `web/src/ui/icons.tsx`; новые значки — перенести в kit скилла
|
||||
`aura-design` (правки стиля хаба переносятся в kit).
|
||||
- Тесты: vitest страниц и модели фильтров, e2e `web/e2e/agile.spec.ts` (широкий экран, высота колонок, запоминание).
|
||||
130
openspec/changes/agile-web-polish/specs/web-app/spec.md
Normal file
130
openspec/changes/agile-web-polish/specs/web-app/spec.md
Normal file
@ -0,0 +1,130 @@
|
||||
## MODIFIED Requirements
|
||||
|
||||
### Requirement: Спринты и бэклог
|
||||
Модуль jira SHALL показывать для проекта с доской страницы по образцу Jira — только для просмотра: на них MUST NOT быть
|
||||
действий, меняющих Jira (перетаскивания, кнопок спринтов, смены статуса или ранга). Пункты меню группы «Jira» —
|
||||
«Связи», «Задачи», «Лента» и по типу доски текущего проекта (`board_type` из `GET /projects`): `scrum` — «Бэклог» и
|
||||
«Спринт»; `kanban` — «Kanban»; доски нет или тип неизвестен — новых пунктов нет, а прямой переход на их адрес
|
||||
показывает «У проекта нет scrum-доски» («…kanban-доски» для «Kanban») со ссылкой на «Связи». Данные — `GET
|
||||
/agile?project=<текущий>`; если доска есть, но её данных от агента нет (`board = null` или `board.fetched_at = null`) —
|
||||
«Нужен агент v15 и обновление из Jira» с кнопкой «Обновить» блока состояния модуля; данные доски есть (`fetched_at` задан), а колонок нет (`columns = null`) — «Не удалось
|
||||
прочитать настройки доски из Jira» и та же кнопка. Пока проекты не загружены, условные пункты меню скрыты; смена проекта
|
||||
на странице, которой у нового проекта нет, оставляет адрес и показывает сообщение «У проекта нет …-доски». Даты
|
||||
спринтов (ISO-8601 Jira) показываются «ДД.ММ» в часовом поясе браузера; «осталось N дн.» — от сегодня до конца спринта.
|
||||
|
||||
Строка задачи и карточка задачи на этих страницах: ключ, значок типа, тема, исполнитель (или «—»), оценка (число или
|
||||
«—»); выполненная — приглушена. Щелчок открывает карточку задачи (окно поверх страницы, как в списке задач). Оценки и
|
||||
их суммы SHALL показываться числом не более чем с двумя знаками после запятой без хвостовых нулей (`0.1 + 0.2` —
|
||||
«0.3», `3` — «3»).
|
||||
|
||||
**Значок типа** SHALL различать по `issue_type` без учёта регистра: эпик («Эпик», «Epic», «Фича»), история
|
||||
(«История», «Story»), задача («Задача», «Task»), ошибка («Ошибка», «Bug»), подзадача («Подзадача», «Sub-task»,
|
||||
«Subtask»); прочие и пустой тип — нейтральный значок. Значок — цветной квадрат с белым символом, у каждого вида свои
|
||||
цвет и символ (эпик — молния, история — закладка, задача — галочка, ошибка — круг, подзадача — два квадрата), в обеих
|
||||
темах; название типа — в `aria-label` и подсказке.
|
||||
|
||||
**Панель фильтров** — над содержимым «Бэклога», «Спринта» и «Kanban»: поиск «Ключ или тема» (подстрока без учёта
|
||||
регистра в ключе или теме), выбор «Исполнитель» («все», «Без исполнителя», исполнители задач страницы по алфавиту),
|
||||
переключатель «Скрыть выполненные» (только «Бэклог» и «Спринт»); на «Бэклоге» — кнопка «Эпики» (показать или скрыть
|
||||
панель эпиков); на «Спринте» — выбор спринтов; на «Спринте» и «Kanban» — меню «Колонки». Если задан хотя бы один фильтр
|
||||
(поиск, исполнитель, эпик, «Скрыть выполненные») — кнопка «Сбросить фильтры», снимающая их все. Фильтры действуют вместе
|
||||
(И). Сохранённое значение исполнителя или эпика, которого нет в данных, SHALL оставаться выбранным и видимым в списке.
|
||||
|
||||
**Запоминание:** свёрнутые секции, выбранный эпик, исполнитель, «Скрыть выполненные», видимость панели эпиков и скрытые
|
||||
колонки SHALL храниться в `localStorage` под ключом `sdlc-hub-agile` — JSON по метке проекта и странице (`backlog`,
|
||||
`sprint`, `kanban`); у разных страниц и проектов свои значения. Поиск и выбор спринтов не запоминаются. Нечитаемое или
|
||||
закрытое хранилище — значения по умолчанию, страница работает.
|
||||
|
||||
**«Бэклог»** (`/app/jira/backlog`), сверху вниз: секции активных спринтов, будущих спринтов, «Бэклог», затем
|
||||
свёрнутый список «Прошлые спринты (N)». Заголовок секции спринта: имя, состояние, даты «ДД.ММ–ДД.ММ», цель (если есть),
|
||||
«N задач», «S SP (выполнено D)» и «без оценки: U», если `U > 0` — итоги спринта, фильтры их не меняют; если фильтры
|
||||
скрыли часть задач секции — ещё «показано K». Задачи секции — по рангу. Секция без задач показывает «Нет задач»; все
|
||||
задачи скрыты фильтрами — «Нет задач по фильтрам». Любую секцию (спринта и «Бэклог») SHALL можно свернуть и развернуть
|
||||
щелчком по заголовку (кнопка с `aria-expanded`); по умолчанию развёрнуты все. Прошлый спринт в списке — строка «имя ·
|
||||
закрыт ДД.ММ · выполнено X из N · S SP»; раскрытие показывает его задачи с пометкой «не выполнено» у невыполненных.
|
||||
|
||||
Эпики (задачи вида «эпик») MUST NOT показываться строками в секциях «Бэклога». Панель «Эпики» — слева от секций:
|
||||
пункт «Все задачи», затем эпики — каждая задача-эпик из данных страницы по рангу, затем эпики, на которые ссылается
|
||||
`epic_key` задач, но строки которых в данных нет, по ключу; в конце — «Без эпика». Пункт эпика: тема (или ключ, если
|
||||
темы нет), ключ, число задач эпика в секциях активных и будущих спринтов и «Бэклога». Выбор пункта (кнопка с
|
||||
`aria-pressed`) фильтрует все секции, включая прошлые спринты; повторный выбор выбранного эпика возвращает «Все
|
||||
задачи». При «Скрыть выполненные» выполненные эпики в панели не показываются (кроме выбранного). На узком экране
|
||||
(контейнер страницы уже 900 px) панель SHALL становиться выбором «Эпик» в панели фильтров.
|
||||
|
||||
«Скрыть выполненные» на «Бэклоге» скрывает выполненные задачи в секциях активных и будущих спринтов и «Бэклога»;
|
||||
прошлые спринты показываются полностью.
|
||||
|
||||
**«Спринт»** (`/app/jira/sprint`): выбранные спринты доски — по умолчанию все активные. Выбор спринтов — список с
|
||||
отметками: активные, затем будущие (по дате начала, без даты — в конце); выбор хранится в адресе
|
||||
`?sprint=<id>[,<id>…]` (переход без новой записи истории); идентификаторы, которых нет среди активных и будущих,
|
||||
отбрасываются, если не осталось ни одного — все активные. Над доской — заголовок каждого выбранного спринта (имя,
|
||||
даты, «осталось N дн.» или «срок прошёл» — только у активного, цель, суммы оценок), под ними колонки доски Jira с числом
|
||||
задач; задачи доски — задачи выбранных спринтов, карточки в колонке — по рангу; колонка «Без колонки» — для статусов вне
|
||||
настроек доски, только если в ней есть задачи. Нет активного спринта и ничего не выбрано — «Нет активного спринта» и
|
||||
ссылка на «Бэклог»; если есть будущие спринты, выбор спринтов при этом доступен.
|
||||
|
||||
**«Kanban»** (`/app/jira/kanban`): колонки доски из `board_issues`, карточки по рангу, у последней колонки подпись
|
||||
«за 14 дней»; если `kanban_backlog = true` — над колонками свёрнутый список «Бэклог (N)» по рангу; поиск и исполнитель
|
||||
действуют и на него.
|
||||
|
||||
**Колонки доски** («Спринт» и «Kanban»): заголовок колонки — `h3`. Меню «Колонки» — отметки по колонкам доски (и «Без
|
||||
колонки», если она есть); снятая отметка скрывает колонку, последнюю видимую скрыть нельзя (отметка недоступна); если
|
||||
скрыты колонки — на кнопке их число. Доска SHALL занимать высоту окна под заголовком и панелью фильтров (не меньше
|
||||
360 px), все колонки — во всю высоту доски; карточки, не помещающиеся по высоте, прокручиваются внутри своей колонки.
|
||||
Колонки, не помещающиеся по ширине, SHALL прокручиваться по горизонтали внутри доски, не страницы, и полоса горизонтальной
|
||||
прокрутки доски SHALL находиться в пределах окна при любом числе карточек. Заголовок вкладки — «Бэклог», «Спринт»,
|
||||
«Kanban» по общему правилу оболочки.
|
||||
|
||||
#### Scenario: Меню scrum-проекта
|
||||
- **WHEN** текущий проект `AWPCA`, `board_type = scrum`
|
||||
- **THEN** в группе «Jira» пункты «Связи», «Бэклог», «Спринт», «Задачи», «Лента»; пункта «Kanban» нет
|
||||
|
||||
#### Scenario: Проект без доски
|
||||
- **WHEN** текущий проект `STOCKS_DRRK` без доски, открыт `/app/jira/backlog?project=STOCKS_DRRK`
|
||||
- **THEN** пунктов «Бэклог», «Спринт», «Kanban» в меню нет; страница — «У проекта нет scrum-доски» со ссылкой на «Связи»
|
||||
|
||||
#### Scenario: Бэклог только смотрит
|
||||
- **WHEN** открыт «Бэклог» `AWPCA`
|
||||
- **THEN** на странице нет перетаскиваемых элементов; кнопки и поля — только свёртка секций, панель фильтров, пункты
|
||||
панели эпиков и открытие карточки задачи; ни одно из них не ставит команд
|
||||
|
||||
#### Scenario: Прошлый спринт
|
||||
- **WHEN** спринт `AWPCA_Sprint_2_VGO` закрыт, в нём 73 задачи, 61 в последней колонке, оценки у 10 задач на 25 SP
|
||||
- **THEN** в «Прошлые спринты» строка «AWPCA_Sprint_2_VGO · закрыт ДД.ММ · выполнено 61 из 73 · 25 SP»; раскрытие —
|
||||
73 задачи, 12 с пометкой «не выполнено»
|
||||
|
||||
#### Scenario: Агент без досок
|
||||
- **WHEN** `AWPCA` scrum, агент v14 (данных доски нет), открыт «Спринт»
|
||||
- **THEN** «Нужен агент v15 и обновление из Jira» и кнопка «Обновить»
|
||||
|
||||
#### Scenario: Свёрнутый активный спринт
|
||||
- **WHEN** на «Бэклоге» свёрнута секция активного спринта, страница перезагружена
|
||||
- **THEN** секция свёрнута (видны заголовок и итоги, задач нет), остальные развёрнуты
|
||||
|
||||
#### Scenario: Фильтр по эпику
|
||||
- **WHEN** в бэклоге 3 задачи эпика `AURORA-10` и 5 других, в активном спринте 2 задачи `AURORA-10`; в панели «Эпики»
|
||||
выбран `AURORA-10`
|
||||
- **THEN** в секции спринта 2 задачи и «показано 2», в «Бэклоге» 3; строки самого `AURORA-10` в секциях нет; у пункта
|
||||
`AURORA-10` в панели — 5
|
||||
|
||||
#### Scenario: Скрыть выполненные
|
||||
- **WHEN** в активном спринте 10 задач, 4 выполнены; включено «Скрыть выполненные»
|
||||
- **THEN** в секции 6 задач, заголовок — «10 задач» и «показано 6»; «Прошлые спринты» показывают все свои задачи
|
||||
|
||||
#### Scenario: Исполнитель на доске спринта
|
||||
- **WHEN** на «Спринте» выбран исполнитель `ivanov`
|
||||
- **THEN** на доске только его карточки; числа в заголовках колонок — по видимым карточкам; на «Бэклоге» исполнитель не
|
||||
выбран (свой фильтр у каждой страницы)
|
||||
|
||||
#### Scenario: Будущий спринт на доске
|
||||
- **WHEN** у доски активный спринт 101 и будущий 102; в выборе спринтов отмечен и 102
|
||||
- **THEN** адрес — `?sprint=101,102`; над доской два заголовка, «осталось N дн.» только у 101; на доске задачи обоих
|
||||
|
||||
#### Scenario: Скрытая колонка
|
||||
- **WHEN** на «Спринте» в меню «Колонки» снята отметка «Выполнено», страница перезагружена
|
||||
- **THEN** колонки «Выполнено» нет, на кнопке «Колонки» — 1; остальные колонки на месте
|
||||
|
||||
#### Scenario: Широкая доска
|
||||
- **WHEN** окно 2560 × 1300 px, у доски 12 колонок, в одной из них 40 карточек
|
||||
- **THEN** все колонки одной высоты и помещаются в окно по высоте; полоса горизонтальной прокрутки доски видна в окне;
|
||||
прокрутка доски вправо до конца показывает «Без колонки» целиком; страница горизонтально не прокручивается
|
||||
Loading…
x
Reference in New Issue
Block a user