fix: restore screener OpenAPI constraints (WealthLedger/backend#70) #95

Merged
codex-bot merged 1 commits from 70-screener-openapi-constraints into develop 2026-10-15 06:00:40 +03:00
Owner

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 не меняется, т.к. ограничения не влияют на типы).

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` не меняется, т.к. ограничения не влияют на типы).
ksv741 added 1 commit 2026-10-15 05:49:11 +03:00
fix: restore screener OpenAPI constraints (WealthLedger/backend#70)
Backend verify / commits (pull_request) Successful in 26s
Backend verify / security (pull_request) Successful in 10s
Backend verify / verify (pull_request) Successful in 4m19s
4b68e20f6e
ksv741 force-pushed 70-screener-openapi-constraints from c53c7e09f1 to 4b68e20f6e 2026-10-15 05:49:11 +03:00 Compare
codex-bot merged commit 2ad3517d87 into develop 2026-10-15 06:00:40 +03:00
codex-bot deleted branch 70-screener-openapi-constraints 2026-10-15 06:00:40 +03:00
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: WealthLedger/backend#95