Files
anal-front/docs/generated-api.md
Gleb Korotkiy 67ec34d619
Some checks failed
CI/CD Pipeline / Quality Gate (push) Failing after 2m37s
CI/CD Pipeline / Build and Deploy Dev via Compose (push) Has been skipped
refactor: align frontend with FSD architecture
2026-06-22 12:33:33 +03:00

83 lines
3.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Generated API
Дата актуализации: 2026-06-22
## Назначение
Проект использует Orval для генерации TypeScript API-клиентов и Zod-моделей из `openapi.json`.
Generated-код не редактируется вручную.
## Команда генерации
```bash
bun run apigen
```
Orval config находится в `orval.config.ts`.
## Входной файл
```text
openapi.json
```
В config есть нормализация русскоязычных тегов OpenAPI в стабильные англоязычные имена файлов:
- `Аутентификация` -> `authentication`
- `Карта компетенций: аналитика` -> `competence-map-analytics`
- `Мониторинг` -> `monitoring`
- `Пользователь` -> `user`
- `Управление пользователями` -> `user-management`
Config также умеет читать первый валидный JSON-документ, если исходный OpenAPI-файл содержит
лишние данные после первого JSON.
## Выходные директории
```text
src/shared/api/generated-api/
src/shared/model/generated-zod/
```
`generated-api` использует custom mutator:
```text
src/shared/api/axiosInstance.ts
```
Это сохраняет единое поведение API-клиента: base URL, credentials, refresh flow, error handling
и abort signal.
## Public facade
Прикладной код не должен импортировать generated-файлы напрямую. Правильный путь:
```ts
import { getCompetenceMapAnalytics, type Login } from '@/shared/api'
```
Неправильный путь:
```ts
import { api_v1_competence_map_analytics_list } from '@/shared/api/generated-api/competence-map-analytics'
```
Facade `src/shared/api/index.ts` сейчас экспортирует только используемые приложением endpoint
functions, token primitives, error helpers и DTO-типы.
## Правила изменений
- Не редактировать файлы в `generated-api` и `generated-zod` вручную.
- При изменении backend контракта обновить `openapi.json` и выполнить `bun run apigen`.
- После генерации выполнить `bun run check:full`.
- Если новому экрану нужен endpoint, сначала добавить осознанный export в `src/shared/api/index.ts`
или отдельный wrapper, а не импортировать generated-файл напрямую.
- Если DTO требует page-specific адаптации, mapper должен жить рядом с owner-страницей или рядом
с API wrapper, а не в generated-зоне.
## Tooling exclusions
Generated-директории исключены из Steiger и Prettier через `steiger.config.ts` и `.prettierignore`.
Это не разрешение писать ручной код внутри generated-зон. Исключение нужно только для стабильной
работы tooling после Orval generation.