Аудит 2026-10-19, CQ-020, план п.21. Read-side cast-ы, названные в аудите, уже исправлены в #152; эта задача — о том, что осталось.
Результат
Около 12 копий JSON.parse(JSON.stringify(x)) as Prisma.Input… заменены одной функцией toJson.
6 cast-ов as ScreenProgress / as HourlyProgress в tbank-sync.repository.ts заменены проверкой формы по образцу screenIntent, с сохранением терпимости к legacy-строкам.
Payload-cast-ы на горячих путях чтения не трогаем (это компромисс аудита).
AC
Записываемый JSON совпадает побайтно с прежним.
Повреждённый progress даёт явную ошибку, а legacy-строки читаются как прежде; есть unit-тесты.
npm run verify и e2e tbank-* проходят.
Аудит 2026-10-19, CQ-020, план п.21. Read-side cast-ы, названные в аудите, уже исправлены в #152; эта задача — о том, что осталось.
## Результат
- Около 12 копий `JSON.parse(JSON.stringify(x)) as Prisma.Input…` заменены одной функцией `toJson`.
- 6 cast-ов `as ScreenProgress` / `as HourlyProgress` в `tbank-sync.repository.ts` заменены проверкой формы по образцу `screenIntent`, с сохранением терпимости к legacy-строкам.
- Payload-cast-ы на горячих путях чтения не трогаем (это компромисс аудита).
## AC
- [ ] Записываемый JSON совпадает побайтно с прежним.
- [ ] Повреждённый progress даёт явную ошибку, а legacy-строки читаются как прежде; есть unit-тесты.
- [ ] `npm run verify` и e2e tbank-* проходят.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Аудит 2026-10-19, CQ-020, план п.21. Read-side cast-ы, названные в аудите, уже исправлены в #152; эта задача — о том, что осталось.
Результат
JSON.parse(JSON.stringify(x)) as Prisma.Input…заменены одной функциейtoJson.as ScreenProgress/as HourlyProgressвtbank-sync.repository.tsзаменены проверкой формы по образцуscreenIntent, с сохранением терпимости к legacy-строкам.AC
npm run verifyи e2e tbank-* проходят.