docs: record ledger entry type label evidence

This commit is contained in:
2026-08-27 11:36:18 +03:00
parent 2abb5912b2
commit d749bf5b28
+68
View File
@@ -529,3 +529,71 @@ Change Owner дополнительно удалены children-only aliases в
`type TestWrapperProps = PropsWithChildren` и чистые barrel imports ради `type TestWrapperProps = PropsWithChildren` и чистые barrel imports ради
последующего re-export; обе convention-проверки подтверждены пустыми `rg` последующего re-export; обе convention-проверки подтверждены пустыми `rg`
результатами. Generated OpenAPI source остался вне manual migration. результатами. Generated OpenAPI source остался вне manual migration.
## 2026-08-27-ledger-entry-type-label
**Change:** ledger-entry-type-label (schema `wealth-ledger-sdd`)
**Archive path:** `specs/openspec/changes/archive/2026-08-27-ledger-entry-type-label`
**Specs sync:** дельта `brokerage-account-ledger` — «Full ledger presents
compact rows» слита в main spec (1 модифицированный Requirement с новыми
scenarios «Отображение купона», «Отображение дивиденда» и «Подпись типа не
дублируется»); post-archive strict validation — `20 passed, 0 failed` для main
specs и `38 passed, 0 failed` для archived changes.
### Delivery Map
| Area | Status | Outcome |
| --- | --- | --- |
| frontend | affected | `LedgerEntryRow` показывает подпись типа события вместо цветной подписи направления: для income по upstream `type` — «Купон» (`OPERATION_TYPE_COUPON`) или «Дивиденд» (остальные income-типы), иначе — подпись категории; категория убрана из вторичной метадаты (дата · инструмент); знак «+»/«−» и семантический цвет остаются носителями направления; без денежного движения — «Без движения денег»; добавлены i18n-ключи `ledger.entryLabel.income.*`, удалены неиспользуемые `ledger.direction.*`; тесты обновлены (сценарии «Купон»/«Дивиденд»/«Комиссия») |
| backend | N/A | API contract, маппинг категорий и финансовые расчёты не менялись; `category` и upstream `type` уже были в контракте |
| specs | affected | Approved Proposal, Delta Specs, Design и Tasks заархивированы; delta синхронизирована в main spec |
| docs | affected | as-built `features/brokerage-account-ledger.md` описывает подпись типа события, знак и цвет как носители направления, отсутствие дублирования категории во вторичной метадате |
### Delivery commits
| Repo | Commit | Subject |
| --- | --- | --- |
| frontend | `d53ce50e2842e8d69a709b92417888ba851774b4` | feat(broker-operation): show operation type label in ledger entries |
| specs (archive) | `37c0133e8baf15959a0c38e45e7b7ac320b8084f` | docs(specs): archive ledger-entry-type-label change and sync main spec |
| docs (as-built) | `2abb5912b2db23d4984ca3b99578310596d66555` | docs(brokerage-account-ledger): describe operation type label and no category duplication |
| docs (evidence) | current evidence commit | docs: record ledger entry type label evidence |
### Verification
| Command (repo) | Наблюдённый результат |
| --- | --- |
| `npm ci` (frontend, Node 22) | pass; 419 packages from offline cache, 0 vulnerabilities |
| `npm run verify` (frontend) | pass (exit 0); strict TypeScript, Biome, coverage (`21` files / tests зелёные), Knip, dependency-cruiser и production build прошли без ошибок |
| `npm ci` (docs) | pass |
| `npm run verify` (docs) | pass (exit 0); markdownlint `38` files, `0` issues, `git diff --check` clean |
| `openspec validate ledger-entry-type-label --type change --strict --store wealth-ledger-specs` (specs, pre-archive) | pass; change valid |
| `openspec validate --specs --strict --store wealth-ledger-specs` (specs, pre/post-archive) | pass; `20 passed, 0 failed` |
| `openspec archive ledger-entry-type-label --store wealth-ledger-specs --yes` (specs) | pass; Task status Complete, main spec `brokerage-account-ledger` обновлён (`~ 1 modified`), archived as `2026-08-27-ledger-entry-type-label` |
| `openspec validate --archived --strict --store wealth-ledger-specs` (specs, post-archive) | pass; `38 passed, 0 failed` |
| `git diff --check` (frontend/docs/specs) | pass (clean) |
Environment note: `specs/scripts/verify-workspace-change.sh` and
`verify-openspec-version.sh` отсутствуют в данном checkout, поэтому
workspace-verify выполнялся native OpenSpec validation (`openspec validate
--change --strict --tasks`-эквивалент через `open spec validate --type change
--strict`) + canonical gates каждого affected repo (frontend/docs) по одному
разу; `openspec schema validate wealth-ledger-sdd` недоступен в CLI 1.10.0
(только `spec-driven`), что не блокирует archive — команда archive сама
выполнила strict-валидацию и синхронизацию. Git-repository созданы без
remote, поэтому push не выполнялся (некуда пушить).
Все Tasks были завершены до archive. Semantic verification подтвердила каждый
delta Requirement: подпись типа по `category`+`type` (income → «Купон» или
«Дивиденд», иначе категория), отсутствие дублирования подписи во вторичной
метадате, знак и цвет как носители направления, нейтральная запись без
движения денег без цены/количества, и обзор счёта (пять последних записей)
разделяет ту же семантику через общий `LedgerEntryRow`.
### Independent read-only review
Verdict: **PASS**. Critical findings — `0`, Important findings — `0`, Minor
findings — `0`. Изменение чисто презентационное (текстовая подпись строки +
i18n), backend/API contract, денежные расчёты, безопасность и данные не
затрагиваются; знак «+»/«−` сохраняет направление независимо от цвета
(accessibility); конфликтов, race conditions, log noise, non-determinism,
DEBUG/TODO/console и deprecated API не внесено.