refactor: check persisted json payload shape instead of double casts (#152) #154

Merged
codex-bot merged 1 commits from refactor/152-json-payload-shape into develop 2026-11-02 07:31:24 +03:00
Owner

Summary

Prisma Json-колонки portfolio snapshot и screen intent читаются через облегчённую проверку формы вместо as unknown as; лишние cast'ы на записи удалены.

Linked Issue

Closes #152

Changes

  • portfolio.repository.ts: portfolioSnapshot() — проверяет массивы positions/totalsByCurrency/cashBalances, иначе явная ошибка (500).
  • portfolio.service.ts: сборка сохранённого снапшота вынесена в savedSnapshot(), payload парсится один раз.
  • tbank-sync.repository.ts: screenIntent(); убраны as unknown as у { sections: [] } и no-op JSON.parse(JSON.stringify(...)).
  • tbank-sync.service.ts: использует screenIntent().
  • Тесты: повреждённый portfolio payload (проверено — падает без guard), новый tbank-sync.repository.spec.ts.

Verification

  • npm run verify — exit 0, 42 suites / 310 tests.
  • e2e: tbank-portfolio-publish, portfolio-structure, all-accounts, tbank-hourly-lifecycle, tbank-operations-sync, tbank-local-reads, tbank-value-history, tbank-connection — все зелёные (102 теста).

Ограничения

Аналогичные одиночные as для Json в brokerage-operations.repository.ts и forecast.service.ts не затронуты — вне scope аудита CQ-020.

Breaking Changes

Нет.

## Summary Prisma `Json`-колонки portfolio snapshot и screen intent читаются через облегчённую проверку формы вместо `as unknown as`; лишние cast'ы на записи удалены. ## Linked Issue Closes #152 ## Changes - `portfolio.repository.ts`: `portfolioSnapshot()` — проверяет массивы `positions`/`totalsByCurrency`/`cashBalances`, иначе явная ошибка (500). - `portfolio.service.ts`: сборка сохранённого снапшота вынесена в `savedSnapshot()`, payload парсится один раз. - `tbank-sync.repository.ts`: `screenIntent()`; убраны `as unknown as` у `{ sections: [] }` и no-op `JSON.parse(JSON.stringify(...))`. - `tbank-sync.service.ts`: использует `screenIntent()`. - Тесты: повреждённый portfolio payload (проверено — падает без guard), новый `tbank-sync.repository.spec.ts`. ## Verification - `npm run verify` — exit 0, 42 suites / 310 tests. - e2e: `tbank-portfolio-publish`, `portfolio-structure`, `all-accounts`, `tbank-hourly-lifecycle`, `tbank-operations-sync`, `tbank-local-reads`, `tbank-value-history`, `tbank-connection` — все зелёные (102 теста). ## Ограничения Аналогичные одиночные `as` для Json в `brokerage-operations.repository.ts` и `forecast.service.ts` не затронуты — вне scope аудита CQ-020. ## Breaking Changes Нет.
codex-bot added the Kind/Refactor label 2026-11-02 07:16:01 +03:00
codex-bot added 1 commit 2026-11-02 07:16:02 +03:00
refactor: check persisted json payload shape instead of double casts (#152)
Backend verify / commits (pull_request) Successful in 1m16s
Backend verify / security (pull_request) Successful in 58s
Backend verify / verify (pull_request) Successful in 5m16s
5f37fccd4d
codex-bot merged commit a80bbbf1e2 into develop 2026-11-02 07:31:24 +03:00
codex-bot deleted branch refactor/152-json-payload-shape 2026-11-02 07:31:24 +03:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: WealthLedger/backend#154