- 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>
9.4 KiB
9.4 KiB
Прототип ФЗ «КЛГ» — вариант «под АСУ ТК»
Данный репозиторий содержит минимально работоспособный прототип серверной части ФЗ «Контроль лётной годности (КЛГ)» в варианте развертывания в составе АСУ ТК согласно Техническому заданию.
Заказчик: АО «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.
Требования ТЗ, требующие дальнейшей реализации
Согласно ТЗ, для полного соответствия необходимо реализовать:
-
Дополнительные процессы:
- ДЛГ (Документ лётной годности)
- КД (Контрольные данные)
- Модификации воздушных судов
- Инспекции
- Контрольные карты программы ТО
- Отслеживание компонентов с ограниченным ресурсом (LLP, HT)
- Отчеты по ремонтам и повреждениям конструкции
- Отчеты по дефектам
- Отслеживание комплектующих изделий с ограниченным ресурсом (шасси)
-
Формы данных согласно ТЗ:
- Статус выполненного технического обслуживания
- Статус компонентов с ограниченным межремонтным ресурсом/сроком службы
- Отчет по ремонтам и повреждениям конструкции
- Отчет по дефектам
- Комплектующие изделия с ограниченным ресурсом (шасси)
- И другие формы, указанные в ТЗ
-
Интеграции:
- Уточнить контракты П‑ИВ: форматы сообщений, расписания, ETL‑pipeline, протоколирование.
- Подключить централизованную НСИ через П‑НСИ (справочники типов ВС, статусы, классификаторы).
-
Безопасность и права доступа:
- Реализовать полную ролевую модель и матрицу прав в терминах АСУ ТК‑ИБ.
- Реализовать требования к защите информации от НСД.
-
Документация и тестирование:
- Подготовить ПМИ (Программно-методические инструкции) согласно процедурам приемки.
- Реализовать автотесты согласно процедурам приемки.
Быстрый старт (Docker Compose)
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'ов (пример):
{
"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» согласно техническому заданию.