- Unify API: lib/api.ts uses /api/v1, inbox uses /api/inbox (rewrites) - Remove localhost refs: openapi, inbox page - Add rewrites: /api/inbox|tmc -> inbox-server, /api/v1 -> FastAPI - Add stub routes: knowledge/insights, recommendations, search, log-error - Transfer from PAPA: prompts (inspection, tmc), scripts, supabase, data/tmc-requests - Fix inbox-server: ORDER BY created_at, package.json - Remove redundant app/api/inbox/files route (rewrites handle it) - knowledge/ in gitignore (large PDFs) Co-authored-by: Cursor <cursoragent@cursor.com>
173 lines
9.4 KiB
Markdown
173 lines
9.4 KiB
Markdown
# Прототип ФЗ «КЛГ» — вариант «под АСУ ТК»
|
||
|
||
Данный репозиторий содержит минимально работоспособный прототип серверной части ФЗ «Контроль лётной годности (КЛГ)»
|
||
в варианте развертывания *в составе АСУ ТК* согласно [Техническому заданию](docs/README.md).
|
||
|
||
**Заказчик:** АО «REFLY»
|
||
|
||
## Соответствие ТЗ (вариант «под АСУ ТК»)
|
||
|
||
### Платформенные решения АСУ ТК
|
||
|
||
- **ЦХД АСУ ТК** (Центральное хранилище данных): модель — PostgreSQL; выделенные схемы/таблицы под КЛГ.
|
||
- **П‑ИВ АСУ ТК** (Протокол интеграции и взаимодействия): модель — модуль `app/integration/piv.py` для событий и журналирования интеграционных процессов.
|
||
- **АСУ ТК‑ИБ** (Информационная безопасность): модель — модуль `app/services/security.py`, OIDC JWKS проверка; маппинг claim'ов подлежит уточнению.
|
||
- **Информационный портал**: в прототипе реализован базовый UI на React, API рассчитан на подключение портала как «единой точки входа».
|
||
|
||
### Что реализовано в прототипе
|
||
|
||
- Веб‑приложение (REST API) на **FastAPI**.
|
||
- Хранение данных в **PostgreSQL** (как модель ЦХД АСУ ТК).
|
||
- Единая авторизация: **OIDC/JWT‑валидация** (как модель АСУ ТК‑ИБ). В dev возможны HS256 токены.
|
||
- Приложения/процесс **«заявка на сертификацию организации по ТО»**:
|
||
- автонумерация;
|
||
- статусы (draft/submitted/under_review/remarks/approved/rejected/expired);
|
||
- замечания и автоматический 30‑дневный таймер (настраивается);
|
||
- уведомления (внутренняя таблица notifications).
|
||
- Загрузка файлов и привязка вложений (локальное файловое хранилище как заглушка).
|
||
- Логи загрузок/интеграционных процессов (ingest_job_logs) как часть контура П‑ИВ.
|
||
- Заглушка клиентского вызова П‑ИВ (push_event).
|
||
- Управление организациями (операторы, MRO, органы власти).
|
||
- Управление воздушными судами и их типами.
|
||
- Дашборд с фирменным стилем REFLY.
|
||
|
||
### Требования ТЗ, требующие дальнейшей реализации
|
||
|
||
Согласно ТЗ, для полного соответствия необходимо реализовать:
|
||
|
||
1. **Дополнительные процессы:**
|
||
- ДЛГ (Документ лётной годности)
|
||
- КД (Контрольные данные)
|
||
- Модификации воздушных судов
|
||
- Инспекции
|
||
- Контрольные карты программы ТО
|
||
- Отслеживание компонентов с ограниченным ресурсом (LLP, HT)
|
||
- Отчеты по ремонтам и повреждениям конструкции
|
||
- Отчеты по дефектам
|
||
- Отслеживание комплектующих изделий с ограниченным ресурсом (шасси)
|
||
|
||
2. **Формы данных согласно ТЗ:**
|
||
- Статус выполненного технического обслуживания
|
||
- Статус компонентов с ограниченным межремонтным ресурсом/сроком службы
|
||
- Отчет по ремонтам и повреждениям конструкции
|
||
- Отчет по дефектам
|
||
- Комплектующие изделия с ограниченным ресурсом (шасси)
|
||
- И другие формы, указанные в ТЗ
|
||
|
||
3. **Интеграции:**
|
||
- Уточнить контракты П‑ИВ: форматы сообщений, расписания, ETL‑pipeline, протоколирование.
|
||
- Подключить централизованную НСИ через П‑НСИ (справочники типов ВС, статусы, классификаторы).
|
||
|
||
4. **Безопасность и права доступа:**
|
||
- Реализовать полную ролевую модель и матрицу прав в терминах АСУ ТК‑ИБ.
|
||
- Реализовать требования к защите информации от НСД.
|
||
|
||
5. **Документация и тестирование:**
|
||
- Подготовить ПМИ (Программно-методические инструкции) согласно процедурам приемки.
|
||
- Реализовать автотесты согласно процедурам приемки.
|
||
|
||
## Быстрый старт (Docker Compose)
|
||
|
||
```bash
|
||
cd klg_asutk_app
|
||
docker compose up --build
|
||
```
|
||
|
||
После запуска:
|
||
- Frontend: `http://localhost:8080`
|
||
- API: `http://localhost:8000/api/v1/health`
|
||
- API документация: `http://localhost:8000/docs`
|
||
|
||
## Авторизация (dev)
|
||
|
||
В dev включен режим `ALLOW_HS256_DEV_TOKENS=true`. Для вызовов API требуется заголовок:
|
||
|
||
```
|
||
Authorization: Bearer <jwt>
|
||
```
|
||
|
||
Минимальный набор claim'ов (пример):
|
||
|
||
```json
|
||
{
|
||
"sub": "user-1",
|
||
"name": "Иван Иванов",
|
||
"email": "ivan@example.com",
|
||
"role": "operator_manager",
|
||
"org_id": "<ID организации>"
|
||
}
|
||
```
|
||
|
||
## Основные эндпоинты
|
||
|
||
### Организации
|
||
- `GET /api/v1/organizations` — список организаций
|
||
- `POST /api/v1/organizations` — создание (admin/authority_inspector)
|
||
- `GET /api/v1/organizations/{id}` — детали организации
|
||
- `PATCH /api/v1/organizations/{id}` — обновление
|
||
- `DELETE /api/v1/organizations/{id}` — удаление
|
||
|
||
### Воздушные суда
|
||
- `GET /api/v1/aircraft` — список ВС
|
||
- `POST /api/v1/aircraft` — создание (operator/admin)
|
||
|
||
### Заявки на сертификацию
|
||
- `GET /api/v1/cert-applications` — список заявок
|
||
- `POST /api/v1/cert-applications` — создание заявки
|
||
- `GET /api/v1/cert-applications/{id}` — детали заявки
|
||
- `POST /api/v1/cert-applications/{id}/submit` — подача заявки
|
||
- `POST /api/v1/cert-applications/{id}/start-review` — начало рассмотрения (authority)
|
||
- `POST /api/v1/cert-applications/{id}/remarks` — добавление замечаний (authority)
|
||
- `GET /api/v1/cert-applications/{id}/remarks` — список замечаний
|
||
- `POST /api/v1/cert-applications/{id}/approve` — одобрение (authority)
|
||
- `POST /api/v1/cert-applications/{id}/reject` — отклонение (authority)
|
||
|
||
### Вложения
|
||
- `POST /api/v1/attachments/{owner_kind}/{owner_id}` — загрузка файла
|
||
- `GET /api/v1/attachments/{owner_kind}/{owner_id}` — список вложений
|
||
- `GET /api/v1/attachments/{id}` — метаданные вложения
|
||
- `GET /api/v1/attachments/{id}/download` — скачивание файла
|
||
|
||
### Уведомления
|
||
- `GET /api/v1/notifications` — список уведомлений
|
||
|
||
### Интеграция
|
||
- `POST /api/v1/ingest/logs` — логирование интеграционных процессов (authority)
|
||
|
||
## Структура проекта
|
||
|
||
```
|
||
klg_asutk_app/
|
||
├── backend/ # Backend на FastAPI
|
||
│ ├── app/
|
||
│ │ ├── api/ # API endpoints
|
||
│ │ ├── core/ # Конфигурация
|
||
│ │ ├── db/ # Работа с БД
|
||
│ │ ├── integration/ # Интеграции (П-ИВ)
|
||
│ │ ├── models/ # Модели данных
|
||
│ │ ├── schemas/ # Pydantic схемы
|
||
│ │ └── services/ # Бизнес-логика
|
||
│ └── requirements.txt
|
||
├── frontend/ # Frontend на React + TypeScript
|
||
│ ├── src/
|
||
│ │ ├── api/ # API клиенты
|
||
│ │ ├── components/ # React компоненты
|
||
│ │ ├── layout/ # Layout компоненты
|
||
│ │ ├── pages/ # Страницы приложения
|
||
│ │ └── assets/ # Шрифты, стили
|
||
│ └── package.json
|
||
├── docs/ # Документация
|
||
│ └── README.md # Информация о ТЗ
|
||
└── docker-compose.yml # Docker конфигурация
|
||
```
|
||
|
||
## Технологический стек
|
||
|
||
- **Backend:** FastAPI, SQLAlchemy, PostgreSQL, APScheduler
|
||
- **Frontend:** React, TypeScript, Ant Design, Vite
|
||
- **Инфраструктура:** Docker, Docker Compose
|
||
|
||
## Лицензия
|
||
|
||
Проект разработан для АО «REFLY» согласно техническому заданию.
|