feat: generate OpenAPI without peer repositories
Backend security / security (pull_request) Successful in 7s
Backend verify / verify (pull_request) Successful in 2m28s
Conventional commits / commits (pull_request) Successful in 25s
Backend security / security (push) Successful in 6s
Backend verify / verify (push) Successful in 2m16s

This commit was merged in pull request #19.
This commit is contained in:
2026-09-15 20:45:39 +03:00
parent 016782657a
commit 32c12fb10d
19 changed files with 317 additions and 151 deletions
+6 -6
View File
@@ -39,11 +39,12 @@ connection generation. Integration clients владеют protocol/deadline/retr
provider records преобразуются перед чистыми domain calculations.
Пользовательский `tbank-connection` не владеет низкоуровневым gRPC client.
Runtime OpenAPI из Nest → предоставленный frontend snapshot → generated types.
Nest DTO/metadata → `npm run openapi:generate` → игнорируемый Git `openapi.json`
для публичных consumers.
Problem Details фильтруются общей HTTP boundary; StructuredLogger добавляет
request context и ограничивает поля событий. Jest unit tests, изолированные
SQLite/HTTP suites и OpenAPI parity доказывают разные части поведения.
Системные потоки и ADR выбираются через [Источники](../AGENTS.md#источники).
Локальные источники выбираются через [Источники](../AGENTS.md#источники).
## Module-first organization
@@ -216,7 +217,7 @@ Mapping и stable codes — по [Errors](conventions/error-handling.md).
сводкой через repository и чистый расчёт. Не разрывай денежную transaction,
общий cache/limiter или pending promises при extraction.
Расширение abstractions — по [change scope](../../.ai/conventions/code-health.md#change-scope).
Расширение abstractions — по [change scope](conventions/engineering.md#change-scope).
## Common
@@ -230,7 +231,7 @@ protobuf units/nano conversion — T-Bank integration. Domain используе
## Domain literals and magic values
Общий выбор symbolic values и числовых policies —
[Domain values](../../.ai/conventions/code-health.md#domain-values).
[Domain values](conventions/engineering.md#domain-values).
Сохраняй strict TS и explicit boundary types. Для недоверенного input выбирай
`unknown` + runtime narrowing; отключённый lint `no-explicit-any` не делает
`any` нормой domain/application model. `declare` допустим для заполняемых извне
@@ -239,8 +240,7 @@ DTO fields, не для сокрытия неинициализированно
OpenAPI enum metadata и runtime validation должны читать тот же vocabulary,
что application/domain. Например, `BankOperationKind` принадлежит bank-cards/domain,
а DTO получает допустимые значения через `Object.values(BankOperationKind)`.
Frontend переиспользует generated OpenAPI types/values по возможностям генератора,
а не определяет независимый backend-owned словарь. Внешние/generated enums
Публичные enum values входят в OpenAPI artifact. Внешние/generated enums
сохраняй; generated Prisma/protocol code вручную не меняй.
`@typescript-eslint/no-magic-numbers` включён как error; базовое ESLint rule