28 lines
4.5 KiB
Markdown
28 lines
4.5 KiB
Markdown
## 1. Миграция AppBreadcrumbs на Mantine Breadcrumbs
|
||
|
||
- [x] 1.1 [frontend] Заменить ручную разметку `BreadcrumbTrail` в `src/app/ui/AppBreadcrumbs.tsx` на `Mantine Breadcrumbs`: `<Breadcrumbs component="nav" aria-label={t("breadcrumbs.label")} data-depth={items.length} separator="→">`, предшествующие крошки — `<Link>` children, текущая — `<span aria-current="page">`; логика `AccountBreadcrumbs`/`AppBreadcrumbs` (маршруты и построение цепочек) остается без изменений
|
||
- **Covers:** `N/A` — замена внутренней реализации без изменения observable behavior спеку `app-breadcrumb-navigation` (skip_specs) и соответствует решениям D1–D2 Design.
|
||
- **Verification:** Прочитать `src/app/ui/AppBreadcrumbs.tsx`, убедиться, что используется `Mantine Breadcrumbs` с `component="nav"`, `aria-label`, `data-depth` и `separator="→"`, а цепочки/пропсы `AccountBreadcrumbs` не изменены.
|
||
|
||
- [x] 1.2 [frontend] Удалить кастомные классы хлебных крошек (`breadcrumbs`, `breadcrumbs-entry`, `breadcrumbs-separator-N`, `breadcrumbs-item-N`) и их CSS из `src/app/styles.css`, сохранив только адаптивное правило скрытия промежуточных крошек по `data-depth` на root и базовое оформление ссылок
|
||
- **Covers:** `N/A` — удаление дублирующего стиля по D3 Design; адаптивность по `data-depth` остаётся кастомной, т.к. Mantine Breadcrumbs не скрывает крошки по глубине.
|
||
- **Verification:** Прочитать `src/app/styles.css`, проверить отсутствие unused `breadcrumbs-*` селекторов и наличие медиа-правила `data-depth="3"`/эквивалента для узкого экрана.
|
||
|
||
- [x] 1.3 [frontend] Обновить `src/app/ui/AppBreadcrumbs.test.tsx` под новую DOM-разметку Mantine: сохранить проверки navigation role с `aria-label`, `aria-current="page"` у текущей крошки, `data-depth`, ссылок и fallback «Счет» без identifier
|
||
- **Covers:** `N/A` — тест проверяет неизменное поведение (roles, `aria-current`, `data-depth`, ссылки) и не создаёт новый Requirement; требует адаптации к структуре Mantine.
|
||
- **Verification:** Запустить таргетированно тест (например `npm run test:unit -- AppBreadcrumbs` или эквивалент из `package.json`), убедиться в зелёном проходе.
|
||
|
||
- [x] 1.4 [frontend] Выполнить полный local-verify-гейт frontend для подтверждения строгой корректности после рефакторинга
|
||
- **Covers:** `N/A` — canonical gate проверяет affected frontend delivery (D1–D3), а не вводит самостоятельное observable behavior.
|
||
- **Verification:** Выполнить `npm ci` (при необходимости) и `npm run verify` в `frontend` на Node 22, проверить отсутствие ошибок strict TypeScript, Biome, тестов/coverage, Knip, dependency boundaries и build.
|
||
|
||
## 2. Affected-area gates и итоговая проверка
|
||
|
||
- [x] 2.1 [specs] Выполнить structural validation change-артефактов canonical store
|
||
- **Covers:** `N/A` — задача проверяет specs-delivery уже покрытых артефактов (skip_specs) и не вводит новый Requirement.
|
||
- **Verification:** Запустить `openspec validate consume-mantine-components --type change --strict --store wealth-ledger-specs` и `git diff --check` в `specs`.
|
||
|
||
- [ ] 2.2 [workspace] Провести semantic verification реализации против Proposal, Design и Tasks и independent read-only review без Critical/Important findings
|
||
- **Covers:** `N/A` — terminal semantic verification и independent review проверяют change целиком и не реализуют отдельный Requirement.
|
||
- **Verification:** Сверить фактическое поведение крошек и чистку стилей с Proposal/Design/Tasks, подтвердить отсутствие blocking findings перед archive eligibility.
|