39 lines
4.7 KiB
Markdown
39 lines
4.7 KiB
Markdown
## 1. Backend Portfolio contract
|
||
|
||
- [x] 1.1 [backend] Добавить nullable `ticker` в нормализованную Portfolio Position и её OpenAPI DTO, заполняя его из уже разрешённой metadata с `null` для пустого или недоступного значения; расширить focused Portfolio service tests для доступного и отсутствующего ticker.
|
||
- **Covers:** `portfolio-view` — `Нормализованный состав Portfolio`
|
||
- **Verification:** `npm test -- portfolio.service.spec.ts --runInBand` в `backend` подтверждает ticker и null fallback в ответе Portfolio.
|
||
- [x] 1.2 [backend] Опубликовать обновлённый runtime OpenAPI из backend и выполнить canonical backend quality gate.
|
||
- **Covers:** `N/A` — runtime schema — технический источник frontend snapshot для утверждённого additive public contract.
|
||
- **Verification:** `npm run verify` в `backend`.
|
||
|
||
## 2. Frontend generated contract и карточка акции
|
||
|
||
- [x] 2.1 [frontend] Скопировать опубликованный backend OpenAPI document в committed snapshot и регенерировать frontend types штатной командой без ручной правки generated файла.
|
||
- **Covers:** `N/A` — generated contract синхронизирует утверждённое backend behavior с frontend consumer и не вводит самостоятельное observable behavior.
|
||
- **Verification:** `npm run openapi:generate` в `frontend`; snapshot и generated `PortfolioPositionDto` содержат nullable `ticker`.
|
||
- [x] 2.2 [frontend] Изменить presentation карточки так, чтобы `STOCK` показывал ticker с ISIN fallback, а `BOND` и другие типы сохраняли ISIN; добавить focused regression coverage этих трёх случаев.
|
||
- **Covers:** `portfolio-view` — `Представление карточек позиций на клиенте`
|
||
- **Verification:** focused frontend test card/account page подтверждает ticker-only stock, ISIN fallback и неизменённую облигацию.
|
||
- [x] 2.3 [frontend] Выполнить canonical frontend gate после обновления generated contract и presentation.
|
||
- **Covers:** `N/A` — canonical gate проверяет type safety, UI tests, boundaries и production build изменённого frontend.
|
||
- **Verification:** `npm run verify` в `frontend`.
|
||
|
||
## 3. As-built documentation и canonical specs
|
||
|
||
- [x] 3.1 [docs] После проверенной реализации обновить Portfolio feature documentation: nullable ticker в Position и правило его отображения только на карточке акции с ISIN fallback.
|
||
- **Covers:** `N/A` — as-built documentation фиксирует delivered behavior, но не является source of normative requirement.
|
||
- **Verification:** `npm run verify` в `docs` и scoped review, что документация не описывает планировочные артефакты.
|
||
- [x] 3.2 [specs] Подтвердить, что approved Proposal, Delta Specs и Design остаются единственным canonical описанием change до archive.
|
||
- **Covers:** `N/A` — change artifacts уже владеют спецификацией behavior; задача не добавляет отдельного runtime behavior.
|
||
- **Verification:** `openspec validate show-stock-tickers-on-position-cards --type change --strict --store wealth-ledger-specs` в `specs`.
|
||
|
||
## 4. Cross-area contract и completion review
|
||
|
||
- [x] 4.1 [workspace] Проверить обязательное совпадение backend runtime OpenAPI и committed frontend snapshot после их синхронизации.
|
||
- **Covers:** `N/A` — cross-repository contract gate подтверждает delivery Decision, не создавая дополнительное observable behavior.
|
||
- **Verification:** `npm run test:openapi-contract` в `backend`.
|
||
- [x] 4.2 [workspace] Выполнить semantic verification против Proposal, Delta Specs и Design, затем independent read-only review backend mapping, generated contract, stock-card fallback и as-built docs.
|
||
- **Covers:** `N/A` — cross-area verification подтверждает реализацию утверждённого behavior и rollback assumptions.
|
||
- **Verification:** review фиксирует проверенные области и не содержит Critical или Important findings перед archive.
|