[Refactor] Проверять форму Prisma Json payload вместо as unknown as #152

Closed
opened 2026-11-02 07:07:13 +03:00 by codex-bot · 0 comments
Owner

Проблема

Аудит main/audits/2026-10-19-code-quality-architecture/02-findings.md, CQ-020 (план, пункт 21): три Prisma Json-колонки восстанавливаются через as unknown as:

  • portfolio.service.ts — tbankPortfolio.payload без проверки разворачивается в тело ответа API;
  • tbank-sync.service.ts — tbankSyncWork.intent приводится к ScreenIntent;
  • tbank-sync.repository.ts — лишний cast литерала { sections: [] } (плюс no-op JSON.parse(JSON.stringify(...)) рядом).

Результат и scope

Облегчённая проверка формы на границе чтения для portfolio payload и screen intent; лишние cast'ы на записи удалены. Валидные данные обрабатываются как раньше; повреждённый payload даёт явную внутреннюю ошибку (сейчас — TypeError на .positions.map, то есть тот же 500). Wire contract не меняется.

Acceptance Criteria

  • В src/ не осталось as unknown as для Prisma Json payload (portfolio, tbank-sync).
  • Чтение portfolio snapshot и screen intent проходит через одну функцию проверки формы, у неё есть unit-тест на валидный и повреждённый payload.
  • npm run verify и релевантные e2e (portfolio, sync) проходят.
## Проблема Аудит `main/audits/2026-10-19-code-quality-architecture/02-findings.md`, CQ-020 (план, пункт 21): три Prisma `Json`-колонки восстанавливаются через `as unknown as`: - `portfolio.service.ts` — `tbankPortfolio.payload` без проверки разворачивается в тело ответа API; - `tbank-sync.service.ts` — `tbankSyncWork.intent` приводится к `ScreenIntent`; - `tbank-sync.repository.ts` — лишний cast литерала `{ sections: [] }` (плюс no-op `JSON.parse(JSON.stringify(...))` рядом). ## Результат и scope Облегчённая проверка формы на границе чтения для portfolio payload и screen intent; лишние cast'ы на записи удалены. Валидные данные обрабатываются как раньше; повреждённый payload даёт явную внутреннюю ошибку (сейчас — TypeError на `.positions.map`, то есть тот же 500). Wire contract не меняется. ## Acceptance Criteria - [ ] В `src/` не осталось `as unknown as` для Prisma Json payload (portfolio, tbank-sync). - [ ] Чтение portfolio snapshot и screen intent проходит через одну функцию проверки формы, у неё есть unit-тест на валидный и повреждённый payload. - [ ] `npm run verify` и релевантные e2e (portfolio, sync) проходят.
codex-bot added the Kind/Refactor label 2026-11-02 07:07:13 +03:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: WealthLedger/backend#152