2.7 KiB
2.7 KiB
AID export: OpenAPI + генератор приложения
Полное описание задачи, сценариев и CLI: docs/AID_EXPORT_README.md
Ниже — краткая справка по HTTP-эндпоинтам.
1. api-format → OpenAPI 3.0
POST /aid/export/openapi
Внутри: tools/api-format-to-openapi/convert.mjs (режимы deterministic и llm).
Тело:
{
"apiFormat": { "apiFormatVersion": "1", "...": "..." },
"mode": "deterministic"
}
Ответ: { "openapi": { ... } }
2. DSL → сгенерированное приложение (бандл или запись на диск)
POST /aid/export/app
Внутри: generation/generate.mjs.
Тело:
{
"dsl": "domain TOiR {\n ...\n}\n",
"apply": false
}
applyпо умолчаниюfalse(рекомендуется для AID): ответ содержитfiles— карта путь от корня репозитория → текст файла (Prisma, Nest-модули, React Admin и обновлённыеapp.module.ts/App.tsx). На диск ничего не пишется.apply: true: выполняется тот же процесс, что иnpm run generate:from-dslс--apply— перезапись файлов в рабочей копии на машине, где запущен Nest. Включено только если в окружении заданоAID_GENERATOR_ALLOW_APPLY=1(илиtrue). Иначе403 Forbidden.
Ответ (бандл):
{
"applied": false,
"entityCount": 3,
"enumCount": 3,
"files": {
"server/prisma/schema.prisma": "...",
"server/src/modules/equipment/equipment.controller.ts": "...",
"client/src/App.tsx": "..."
}
}
Ответ (apply):
{
"applied": true,
"message": "Generated 3 entities from ..."
}
CLI-аналог бандла (без Nest)
Из корня репозитория:
node generation/generate.mjs --print-bundle-json --dsl examples/TOiR.domain.dsl > bundle.json
Безопасность
- Если в
.envзаданAID_EXPORT_API_KEY, для обоих эндпоинтов нужен заголовокX-AID-Export-Keyс тем же значением. - Не включайте
AID_GENERATOR_ALLOW_APPLYна публичных инстансах без понимания рисков.
Требования
- Запуск Nest с cwd =
server/относительно корня репо, чтобы находились../generation/generate.mjsи../tools/....