ksv741 346a6f0057 refactor: enforce strict backend typing
Enable strict TypeScript and reject non-null and definite-assignment assertions. Declare externally populated DTO fields, preserve runtime validation, and narrow values at their owners.

Verified: backend verify (257 tests), unchanged OpenAPI, and 21 SQLite/HTTP tests on retry. The initial SQLite run had two timeouts; baseline HEAD passed 21 tests as well.
2026-09-13 12:17:46 +03:00
2026-09-12 18:34:18 +03:00
2026-08-13 19:31:43 +03:00
2026-09-12 19:59:10 +03:00
2026-08-14 17:12:15 +03:00
2026-08-12 19:37:55 +03:00
2026-08-13 19:31:43 +03:00

WealthLedger backend

NestJS API WealthLedger. Backend владеет auth, SQLite-данными и server-side интеграцией T-Bank; frontend не обращается к T-Bank напрямую.

Быстрый старт

Требуется Node 22 (.nvmrc). Создайте .env из примера, замените placeholder секреты и установите зависимости строго из lockfile:

cp .env.example .env
nvm use --silent
npm ci
npm run start:dev

JWT_SECRET должен быть секретом не короче 32 символов, а TOKEN_ENCRYPTION_KEY — base64-кодированным 32-байтным ключом. Не добавляйте T-Bank token в .env: он вводится пользователем и хранится в зашифрованном виде.

Проверка

Единый completion gate не изменяет versioned-файлы:

npm run verify

Он запускает zero-warning lint, application/test typechecks, Jest и build. npm run lint:fix — отдельная записывающая команда, npm run test:cov — диагностика без общего числового threshold. npm run test:e2e пока не является passing gate: Prisma schema engine останавливает migration до запуска Jest. Точный статус и trigger пересмотра находятся в remediation registry.

Общий tsconfig.json включает strict: true и noFallthroughCasesInSwitch для приложения, тестов и сборок. ESLint запрещает non-null assertions (value!) и definite-assignment assertions (field!: Type). Поля DTO, заполняемые вне конструктора, описываются через declare: входные значения заполняет и проверяет Nest, ответные DTO описывают форму возвращаемых объектов. declare не создаёт значение и не заменяет runtime-валидацию. В обычном коде нужны инициализация или сужение типа после проверки значения.

Документация

Из backend runtime OpenAPI можно read-only сверить с frontend snapshot:

npm run test:openapi-contract

Разработка идёт напрямую по задаче пользователя. Каждый affected repo проходит свой verify; при изменении wire contract дополнительно выполняется contract check. Обязательного OpenSpec/SDD lifecycle нет.

S
Description
No description provided
Readme
2.2 MiB
Languages
TypeScript 95.7%
JavaScript 4.1%
Dockerfile 0.2%