docs: simplify verification workflow

This commit is contained in:
2026-08-26 23:14:09 +03:00
parent 76d4de4428
commit 4af0a9c055
8 changed files with 40 additions and 96 deletions
+9 -13
View File
@@ -2,9 +2,9 @@
## Назначение
`bash specs/scripts/verify-runtime-openapi.sh` сверяет полный OpenAPI document,
который отдаёт локально запущенный backend по `/api/docs-json`, с committed
snapshot `frontend/src/shared/api/spec/openapi.json`.
`npm run test:openapi-contract` в `backend/` строит configured Nest application,
создаёт runtime OpenAPI document и сверяет его с committed snapshot
`frontend/src/shared/api/spec/openapi.json` после детерминированной canonicalization.
Это отдельный контрактный gate, а не общий verifier всех репозиториев. Он нужен
перед изменениями backend API или frontend transport contract и не заменяет
@@ -15,23 +15,19 @@ snapshot `frontend/src/shared/api/spec/openapi.json`.
Из корня workspace:
```bash
node --version # должна быть Node 22
bash specs/scripts/verify-runtime-openapi.sh
cd backend
npm run test:openapi-contract
```
Перед первым запуском в обоих application repositories выполняют `npm ci` под
Node 22. Команда определяет workspace из собственного пути, поэтому её можно
запустить и по абсолютному пути из другой текущей директории.
Перед первым запуском в backend выполняют `npm ci` под Node 22.
## Границы и результат
Команда:
- временно компилирует backend, создаёт временную SQLite DB и запускает backend
только на loopback-порту с детерминированными development values;
- рекурсивно сортирует только ключи JSON objects, сохраняет порядок arrays,
выводит SHA-256 обоих полных documents и unified diff при различии;
- всегда завершает дочерний backend и удаляет свои temporary resources.
- использует configured Nest application на integration boundary;
- рекурсивно сортирует только ключи JSON objects и сохраняет порядок arrays;
- не записывает snapshot или generated frontend types.
Она не вызывает `npm run openapi:sync`, не записывает committed snapshot или
generated frontend types и не обращается к T-Bank либо другому внешнему