Архив OpenSpec: agile-web-polish (#112) #115
@ -840,24 +840,67 @@ Jira» — `POST /refresh {full: true, author: "viewer"}`; после пакет
|
||||
спринтов (ISO-8601 Jira) показываются «ДД.ММ» в часовом поясе браузера; «осталось N дн.» — от сегодня до конца спринта.
|
||||
|
||||
Строка задачи и карточка задачи на этих страницах: ключ, значок типа, тема, исполнитель (или «—»), оценка (число или
|
||||
«—»); выполненная — приглушена. Щелчок открывает карточку задачи (окно поверх страницы, как в списке задач).
|
||||
«—»); выполненная — приглушена. Щелчок открывает карточку задачи (окно поверх страницы, как в списке задач). Оценки и
|
||||
их суммы SHALL показываться числом не более чем с двумя знаками после запятой без хвостовых нулей (`0.1 + 0.2` —
|
||||
«0.3», `3` — «3»).
|
||||
|
||||
**Значок типа** SHALL различать по `issue_type` без учёта регистра: эпик («Эпик», «Epic», «Фича»), история
|
||||
(«История», «Story»), задача («Задача», «Task»), ошибка («Ошибка», «Bug»), подзадача («Подзадача», «Sub-task»,
|
||||
«Subtask»); прочие и пустой тип — нейтральный значок. Значок — цветной квадрат с символом цвета `--color-text-on-primary`, контрастным в обеих темах, у каждого вида свои
|
||||
цвет и символ (эпик — молния, история — закладка, задача — галочка, ошибка — круг, подзадача — два квадрата), в обеих
|
||||
темах; название типа — в `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`. Задачи секции — по рангу. Секция без задач показывает
|
||||
«Нет задач». Прошлый спринт в списке — строка «имя · закрыт ДД.ММ · выполнено X из N · S SP»; раскрытие показывает его
|
||||
задачи с пометкой «не выполнено» у невыполненных.
|
||||
«N задач», «S SP (выполнено D)» и «без оценки: U», если `U > 0` — итоги спринта, фильтры их не меняют; если фильтры
|
||||
скрыли часть задач секции — ещё «показано K». Задачи секции — по рангу. Секция без задач показывает «Нет задач»; все
|
||||
задачи скрыты фильтрами — «Нет задач по фильтрам». Любую секцию (спринта и «Бэклог») SHALL можно свернуть и развернуть
|
||||
щелчком по заголовку (кнопка с `aria-expanded`); по умолчанию развёрнуты все. Прошлый спринт в списке — строка «имя ·
|
||||
закрыт ДД.ММ · выполнено X из N · S SP»; раскрытие показывает его задачи с пометкой «не выполнено» у невыполненных.
|
||||
|
||||
**«Спринт»** (`/app/jira/sprint`): активный спринт доски — заголовок (имя, даты, «осталось N дн.» или «срок прошёл»,
|
||||
цель, суммы оценок) и колонки доски Jira с числом задач, карточки в колонке — по рангу; колонка «Без колонки» — для
|
||||
статусов вне настроек доски, только если в ней есть задачи. Несколько активных спринтов — переключатель спринтов над
|
||||
доской (выбор в адресе `?sprint=<id>`). Активного нет — «Нет активного спринта» и ссылка на «Бэклог».
|
||||
Эпики (задачи вида «эпик») 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)» по рангу.
|
||||
«за 14 дней»; если `kanban_backlog = true` — над колонками свёрнутый список «Бэклог (N)» по рангу; поиск и исполнитель
|
||||
действуют и на него.
|
||||
|
||||
Колонки, не помещающиеся по ширине, SHALL прокручиваться по горизонтали внутри доски, не страницы. Заголовок вкладки —
|
||||
«Бэклог», «Спринт», «Kanban» по общему правилу оболочки.
|
||||
**Колонки доски** («Спринт» и «Kanban»): заголовок колонки — `h3`. Меню «Колонки» — отметки по колонкам доски (и «Без
|
||||
колонки», если она есть); снятая отметка скрывает колонку, последнюю видимую скрыть нельзя (отметка недоступна); если
|
||||
скрыты колонки — на кнопке их число. Доска SHALL занимать высоту окна под заголовком и панелью фильтров (не меньше
|
||||
360 px; на окне уже 640 px — не меньше 240 px), все колонки — во всю высоту доски; карточки, не помещающиеся по высоте, прокручиваются внутри своей колонки.
|
||||
Колонки, не помещающиеся по ширине, SHALL прокручиваться по горизонтали внутри доски, не страницы, и полоса горизонтальной
|
||||
прокрутки доски SHALL находиться в пределах окна при любом числе карточек. Заголовок вкладки — «Бэклог», «Спринт»,
|
||||
«Kanban» по общему правилу оболочки.
|
||||
|
||||
#### Scenario: Меню scrum-проекта
|
||||
- **WHEN** текущий проект `AWPCA`, `board_type = scrum`
|
||||
@ -869,7 +912,8 @@ Jira» — `POST /refresh {full: true, author: "viewer"}`; после пакет
|
||||
|
||||
#### Scenario: Бэклог только смотрит
|
||||
- **WHEN** открыт «Бэклог» `AWPCA`
|
||||
- **THEN** на странице нет перетаскиваемых элементов и кнопок, кроме раскрытия секций и открытия карточки задачи
|
||||
- **THEN** на странице нет перетаскиваемых элементов; кнопки и поля — только свёртка секций, панель фильтров, пункты
|
||||
панели эпиков и открытие карточки задачи; ни одно из них не ставит команд
|
||||
|
||||
#### Scenario: Прошлый спринт
|
||||
- **WHEN** спринт `AWPCA_Sprint_2_VGO` закрыт, в нём 73 задачи, 61 в последней колонке, оценки у 10 задач на 25 SP
|
||||
@ -879,3 +923,35 @@ Jira» — `POST /refresh {full: true, author: "viewer"}`; после пакет
|
||||
#### 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