docs: record account-ledger-explicit-filters evidence
This commit is contained in:
@@ -661,3 +661,69 @@ accent-цвет ссылок — восстановлен через `[data-dept
|
||||
подтвердил неизменность routing/chain-логики, сохранение `<nav>`/`aria-label`/
|
||||
`data-depth`, адаптивного скрытия промежуточных крошек и отсутствие остаточных
|
||||
`breadcrumbs-*` ссылок во `frontend/src`.
|
||||
|
||||
## 2026-08-27-account-ledger-explicit-filters
|
||||
|
||||
**Change:** account-ledger-explicit-filters (schema `wealth-ledger-sdd`)
|
||||
**Archive path:** `specs/openspec/changes/archive/2026-08-27-account-ledger-explicit-filters`
|
||||
**Specs sync:** в main spec `brokerage-account-ledger` добавлен Requirement
|
||||
`User can explicitly apply ledger filters` с четырьмя scenarios: черновик не
|
||||
делает запрос до `Применить`, `Применить` коммитит draft и сбрасывает cursor,
|
||||
`Сбросить` очищает фильтр и пагинацию, пагинация остаётся привязанной к
|
||||
последнему применённому фильтру.
|
||||
|
||||
### Delivery Map
|
||||
|
||||
| Area | Status | Outcome |
|
||||
| --- | --- | --- |
|
||||
| frontend | affected | Страница `account-operations` переведена на draft/applied семантику фильтров: два `DateInput` c `DD.MM.YYYY`, `min/max` и русской локалью через `DatesProvider`; категории собраны в `MultiSelect` с placeholder `Выберите категории`; кнопки `Применить`/`Сбросить` управляют применённым состоянием; `Сбросить` дополнительно инвалидирует unfiltered query key, чтобы React Query не подменял обязательный повторный запрос свежим cache hit; добавлены risk-based тесты для сценариев «черновик без запроса» и «reset перезапрашивает без categories» |
|
||||
| backend | N/A | API `/api/v1/brokerage-accounts/{accountId}/operations`, query params `from`/`to`/`categories`/`cursor`/`limit`, серверный дефолт периода и cache identity не менялись |
|
||||
| specs | affected | Approved Proposal, Design, Tasks и delta spec заархивированы; Requirement синхронизирован в main spec `brokerage-account-ledger` |
|
||||
| docs | affected | `features/brokerage-account-ledger.md` описывает staged draft/applied поведение, явные `Применить`/`Сбросить` и пагинацию по последнему применённому фильтру |
|
||||
|
||||
### Delivery commits
|
||||
|
||||
| Repo | Commit | Subject |
|
||||
| --- | --- | --- |
|
||||
| frontend | `7d748a65d384e76220e234aa37a21b05b81e442a` | feat(account-operations): require explicit ledger filters |
|
||||
| specs (archive) | `69d4e63a5110f744a2428dd9d40525bf025a2db8` | docs(specs): archive account-ledger-explicit-filters |
|
||||
| docs (as-built) | `820cf5510318e0868eba46a6ff0b556053cb9806` | docs(brokerage-account-ledger): describe explicit filters |
|
||||
| docs (evidence) | current evidence commit | docs: record explicit ledger filters evidence |
|
||||
|
||||
### Verification
|
||||
|
||||
| Command (repo) | Наблюдённый результат |
|
||||
| --- | --- |
|
||||
| `source ~/.nvm/nvm.sh && nvm use 22 >/dev/null && node -v && npm run verify` (frontend) | pass; Node `v22.21.0`, canonical gate прошёл: strict TypeScript, Biome, coverage (`21` files / `79` tests), Knip, dependency-cruiser и production build без ошибок |
|
||||
| `npm ci` (frontend) | pass; lockfile не изменился, install завершён |
|
||||
| `npm run verify` (docs) | pass; markdownlint `38` files, `0` issues, `git diff --check` clean |
|
||||
| `openspec validate account-ledger-explicit-filters --type change --strict --store wealth-ledger-specs` (specs, pre-archive) | pass; change valid |
|
||||
| `openspec archive account-ledger-explicit-filters --yes --store wealth-ledger-specs` (specs) | pass; Task status `✓ Complete`, main spec `brokerage-account-ledger` обновлён, change archived as `2026-08-27-account-ledger-explicit-filters` |
|
||||
| `openspec validate --specs --strict --store wealth-ledger-specs` (specs, pre/post-archive) | pass; `20 passed, 0 failed` |
|
||||
| `git diff --check` (frontend/docs/specs) | pass |
|
||||
| `openspec validate --archived --strict --store wealth-ledger-specs` (specs, post-archive) | external failure; `39 passed, 1 failed` because unrelated archived change `2026-08-27-consume-mantine-components` still has `1 incomplete task`; `2026-08-27-account-ledger-explicit-filters` itself passed archived validation |
|
||||
|
||||
Environment note: during `npm ci` the default shell used Node `v26.7.0` and
|
||||
printed an `EBADENGINE` warning, поэтому canonical frontend gate был повторно
|
||||
запущен под `nvm use 22` и именно этот результат считается verification
|
||||
evidence. В `specs` рабочее дерево после archive остаётся с незафиксированным
|
||||
соседним change `add-session-oriented-sdd-skills`; он не входит в delivery
|
||||
этой фичи и не включался в archive commit.
|
||||
|
||||
Все Tasks были отмечены completed до archive. Semantic verification подтвердила
|
||||
утверждённые Proposal, Design и delta scenarios: черновик фильтров не меняет
|
||||
видимый ledger и не делает новый запрос до `Применить`; `Применить` коммитит
|
||||
draft и сбрасывает cursor; `Сбросить` очищает draft/applied state и принуждает
|
||||
повторный unfiltered fetch; кнопки пагинации продолжают работать по последнему
|
||||
применённому фильтру; backend contract и server default period не меняются.
|
||||
|
||||
### Independent read-only review
|
||||
|
||||
Verdict: **PASS**. Critical findings — `0`, Important findings — `0`, Minor
|
||||
findings — `0`. Проверка diff и post-archive состояния подтвердила, что
|
||||
изменение локализовано во frontend/docs/specs, не меняет backend/API contract,
|
||||
не затрагивает денежные вычисления, auth, data integrity или security, не
|
||||
вводит лишних зависимостей сверх `@mantine/dates` и `dayjs`, а дополнительная
|
||||
invalidate-on-reset логика закрывает реальный cache edge case вместо тестового
|
||||
костыля. Residual blocker относится не к этой фиче, а к чужому archived change
|
||||
`consume-mantine-components`.
|
||||
|
||||
Reference in New Issue
Block a user