Files
KIS-TOiR/server/src/aid-export/README.md
2026-03-19 16:59:30 +03:00

2.7 KiB
Raw Blame History

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/....