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
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:
@@ -3,8 +3,8 @@
|
||||
## Выбор boundary
|
||||
|
||||
Сначала определи, меняется wire contract или только реализация существующего
|
||||
use case. Для route/request/response/status/error shape читай
|
||||
[HTTP semantics и источник контракта](../../../docs/architecture/http-api.md).
|
||||
use case. Для route/request/response/status/error shape используй
|
||||
[локальный публичный контракт](#источник-контракта) и configured HTTP tests.
|
||||
|
||||
| Проверка | Где выполнять |
|
||||
| --- | --- |
|
||||
@@ -57,11 +57,32 @@ helper ради первого endpoint. Новая pagination явно опре
|
||||
|
||||
[Operations controller](../../src/modules/investments/operations/presentation/brokerage-operations.controller.ts)
|
||||
показывает guard, user.sub, DTO query и service delegation.
|
||||
Для нового field обновляй canonical source и generated artifacts в определённом
|
||||
направлении; body type frontend не исправляется вручную.
|
||||
Для нового field обновляй Nest DTO/metadata и публикуемый OpenAPI artifact.
|
||||
Потребители получают публичный контракт независимо от внутреннего устройства API.
|
||||
|
||||
Проверь happy path и применимые invalid input/access/not-found/domain/upstream
|
||||
errors на boundary, где они возникают. Unit вызов controller не запускает pipes,
|
||||
guards или serialization. `npm run test:openapi-contract` проверяет schema parity,
|
||||
но не поведение invalid request; выбирай соответствующий test по
|
||||
[Testing](testing.md). Финальный gate не заменяет semantic review ошибок.
|
||||
|
||||
## Источник контракта
|
||||
|
||||
Nest DTO/controllers/Swagger metadata определяют публичный HTTP API.
|
||||
`npm run openapi:generate` собирает backend и записывает корневой `openapi.json`.
|
||||
Nest preview читает metadata без запуска HTTP-порта, провайдеров, БД и T-Bank;
|
||||
команда не требует deployment environment. Artifact исключён из Git.
|
||||
|
||||
При изменении API обнови DTO/metadata и выполни генерацию. Потребители получают
|
||||
artifact отдельно; backend не читает их репозитории. `test:openapi-contract`
|
||||
сравнивает вывод генератора с runtime schema configured app во временном каталоге.
|
||||
Проверка подтверждает правильность генерации, но без versioned baseline не
|
||||
выявляет breaking change относительно предыдущего выпуска. Для такого изменения
|
||||
согласуй переход consumers и проверь relevant HTTP behavior.
|
||||
|
||||
HTTP prefix — `/api/v1`; Swagger доступен согласно `src/config/swagger.config.ts`.
|
||||
Общий error response — `application/problem+json` со `status` и публичным `code`.
|
||||
Validation требует `400 / VALIDATION_ERROR` и `errors: [{ pointer, detail }]`.
|
||||
Известное ограничение: ValidationPipe сейчас формирует строковые сообщения,
|
||||
а filter ожидает структурированные field errors; schema parity не доказывает
|
||||
правильность `errors`. Изменение требует проверки реального HTTP pipeline.
|
||||
|
||||
Reference in New Issue
Block a user