Что восстановлено (по target stock-screener.openapi.yaml)
StockScreenerCriteriaDto: additionalProperties: false. Nest Swagger 12.0.1 не выражает это на классе (ApiExtension требует x-, ApiSchema не принимает ключ), поэтому добавлено в createOpenApiDocument после генерации.
StockScreenerItemDto.lot: minimum: 1 через @ApiProperty.
Не изменено
Runtime-валидация: forbidNonWhitelisted и raw-body allowlist в контроллере остаются. Ручные правки сгенерированных типов и новый генератор не добавлялись.
Проверка
npm run verify — exit 0, 268 тестов.
npm run test:openapi-contract — 3 passed, включая новый ассерт на оба узла.
Сгенерированная схема сравнена с опубликованной frontend-копией: отличаются только StockScreenerCriteriaDto и StockScreenerItemDto (ожидаемо).
Связанный PR
WealthLedger/frontend — доставка артефакта openapi.json и openapi:check (зелёный, schema.d.ts не меняется, т.к. ограничения не влияют на типы).
Closes #70 (backend-часть). Frontend-доставка: WealthLedger/frontend PR (связанная ссылка ниже).
## Что восстановлено (по target stock-screener.openapi.yaml)
- `StockScreenerCriteriaDto`: `additionalProperties: false`. Nest Swagger 12.0.1 не выражает это на классе (`ApiExtension` требует `x-`, `ApiSchema` не принимает ключ), поэтому добавлено в `createOpenApiDocument` после генерации.
- `StockScreenerItemDto.lot`: `minimum: 1` через `@ApiProperty`.
## Не изменено
Runtime-валидация: `forbidNonWhitelisted` и raw-body allowlist в контроллере остаются. Ручные правки сгенерированных типов и новый генератор не добавлялись.
## Проверка
- `npm run verify` — exit 0, 268 тестов.
- `npm run test:openapi-contract` — 3 passed, включая новый ассерт на оба узла.
- `node test/sqlite.cjs stocks.e2e-spec.ts` — 23 passed.
- Сгенерированная схема сравнена с опубликованной frontend-копией: отличаются только `StockScreenerCriteriaDto` и `StockScreenerItemDto` (ожидаемо).
## Связанный PR
WealthLedger/frontend — доставка артефакта `openapi.json` и `openapi:check` (зелёный, `schema.d.ts` не меняется, т.к. ограничения не влияют на типы).
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.
Closes #70 (backend-часть). Frontend-доставка: WealthLedger/frontend PR (связанная ссылка ниже).
Что восстановлено (по target stock-screener.openapi.yaml)
StockScreenerCriteriaDto:additionalProperties: false. Nest Swagger 12.0.1 не выражает это на классе (ApiExtensionтребуетx-,ApiSchemaне принимает ключ), поэтому добавлено вcreateOpenApiDocumentпосле генерации.StockScreenerItemDto.lot:minimum: 1через@ApiProperty.Не изменено
Runtime-валидация:
forbidNonWhitelistedи raw-body allowlist в контроллере остаются. Ручные правки сгенерированных типов и новый генератор не добавлялись.Проверка
npm run verify— exit 0, 268 тестов.npm run test:openapi-contract— 3 passed, включая новый ассерт на оба узла.node test/sqlite.cjs stocks.e2e-spec.ts— 23 passed.StockScreenerCriteriaDtoиStockScreenerItemDto(ожидаемо).Связанный PR
WealthLedger/frontend — доставка артефакта
openapi.jsonиopenapi:check(зелёный,schema.d.tsне меняется, т.к. ограничения не влияют на типы).c53c7e09f1to4b68e20f6e