2.5 KiB
2.5 KiB
1. Backend: expose ISIN
- 1.1 Расширить тип
TbankInstrumentполемisin?: stringвtbank.client.ts - 1.2 Добавить nullable
isinвPortfolioPositionDtoвportfolio.dto.ts - 1.3 Возвращать
isin: metadata?.isin?.trim() || nullвposition()вportfolio.service.ts - 1.4 Обновить
portfolio.service.spec.ts: моки и ожиданияisin, включая отсутствие ISIN - 1.5 Проверить backend:
npm run lint,npm test,npm run build
2. Frontend: OpenAPI contract и display-helper
- 2.1 Обновить snapshot и
schema.d.ts:npm run openapi:sync(полеisin) - 2.2 Добавить helper
formatShare(numerator, denominator)вdisplay.ts(строка %, 1 знак,nullпри недоступности) - 2.3 Добавить unit-тесты
formatShareвdisplay.test.ts
3. Frontend: Position Card grid-плитки
- 3.1 Заменить
Card-строки вPositionSectionнаSimpleGrid cols={{ base: 1, sm: 2, md: 3 }}вAccountPage.view.tsx - 3.2 Вычислить во view сумму
currentValueпозиций по каждой валюте (без Cash Balance) и передать её плиткам - 3.3 Рендерить плитку: имя,
isin(mono, dim), количество,currentValue,absoluteReturn(зелёный/красный),averagePurchasePrice, долю; скрывать null-метрики - 3.4 Добавить стили плитки в
AccountPage.module.css - 3.5 Добавить i18n-ключи в
ru.ts(средняя цена покупки, доля, ISIN)
4. Frontend: тесты
- 4.1 Обновить
AccountPage.test.tsx: заменить проверку «—» на скрытие null, добавить проверки плиток,isin, доли и сохранения upstream-порядка - 4.2 Проверить frontend:
npm run verify
5. Документация
- 5.1 Добавить термин Instrument в
CONTEXT.md - 5.2 Обновить
docs/features/portfolio-view.md: grid-плитки, метрики,isin, доля; API-секция проisin
6. Верификация и архив
- 6.1 Прогнать
opsx-verifyпо change - 6.2 Архив change через
openspec archiveи синхронизация delta в main spec - 6.3 Закоммитить по репозиториям: specs, docs, backend, frontend