feat(account): add concentration tab with top-5 slices and chart (#48) #127

Merged
codex-bot merged 2 commits from feature/48-account-top-positions into develop 2026-11-01 19:28:53 +03:00
Owner

Summary

Вкладка «Концентрация» на странице счёта (main#48): топ-5 позиций/секторов/эмитентов и диаграмма распределения.

Backend-часть: хранение сектора и бренда инструмента (TbankInstrumentClassification, обновление раз в 24 ч), шаг классификации в часовом обходе до публикации Snapshot, новые вызовы T-Bank (etfBy, getAssetBy) с opt-in NOT_FOUND, поля sector и issuer в позиции Portfolio, нормализация старых Snapshot.

Linked Issue

WealthLedger/main#48

Changes

  • Prisma-модель и аддитивная миграция TbankInstrumentClassification
  • TbankClient.getEtf/getAssetBrand, opt-in NOT_FOUND только для новых вызовов
  • PositionClassificationService + repository, шаг до publish в queueSnapshot
  • DTO sector/issuer, регенерация openapi.json

Verification

  • npm run verify — lint, typecheck, 302 unit-теста, e2e SQLite — OK
  • npm run openapi:check, npm run test:openapi-contract (4/4) — OK
  • git diff --check — OK
  • Откат образа без миграции (task 3.4) — pending G4

Related PRs

  • frontend: WealthLedger/frontend#… (зависит от этого PR: snapshot OpenAPI совпадает)
  • specs: change account-top-positions
  • docs: WealthLedger/docs#…

Breaking Changes

Нет: ответ Portfolio расширен необязательными полями.

## Summary Вкладка «Концентрация» на странице счёта (main#48): топ-5 позиций/секторов/эмитентов и диаграмма распределения. Backend-часть: хранение сектора и бренда инструмента (TbankInstrumentClassification, обновление раз в 24 ч), шаг классификации в часовом обходе до публикации Snapshot, новые вызовы T-Bank (etfBy, getAssetBy) с opt-in NOT_FOUND, поля `sector` и `issuer` в позиции Portfolio, нормализация старых Snapshot. ## Linked Issue WealthLedger/main#48 ## Changes - Prisma-модель и аддитивная миграция `TbankInstrumentClassification` - `TbankClient.getEtf`/`getAssetBrand`, opt-in NOT_FOUND только для новых вызовов - `PositionClassificationService` + repository, шаг до `publish` в `queueSnapshot` - DTO `sector`/`issuer`, регенерация `openapi.json` ## Verification - `npm run verify` — lint, typecheck, 302 unit-теста, e2e SQLite — OK - `npm run openapi:check`, `npm run test:openapi-contract` (4/4) — OK - `git diff --check` — OK - Откат образа без миграции (task 3.4) — pending G4 ## Related PRs - frontend: WealthLedger/frontend#… (зависит от этого PR: snapshot OpenAPI совпадает) - specs: change `account-top-positions` - docs: WealthLedger/docs#… ## Breaking Changes Нет: ответ Portfolio расширен необязательными полями.
ksv741 added 2 commits 2026-11-01 19:13:17 +03:00
fix(account): align concentration labels and chart accessibility (WealthLedger/main#48)
Frontend verify / commits (pull_request) Successful in 29s
Frontend verify / security (pull_request) Successful in 9s
Frontend verify / verify (pull_request) Successful in 5m42s
c809102d73
ksv741 force-pushed feature/48-account-top-positions from 3ce67a59a5 to c809102d73 2026-11-01 19:13:17 +03:00 Compare
codex-bot merged commit 70a2c335fd into develop 2026-11-01 19:28:53 +03:00
codex-bot deleted branch feature/48-account-top-positions 2026-11-01 19:28:53 +03:00
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: WealthLedger/frontend#127