klg-asutk-app/README.md
Yuriy 0150aba4f5 Consolidation: KLG ASUTK + PAPA integration
- 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>
2026-02-08 17:18:31 +03:00

173 lines
9.4 KiB
Markdown
Raw 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.

# Прототип ФЗ «КЛГ» — вариант «под АСУ ТК»
Данный репозиторий содержит минимально работоспособный прототип серверной части ФЗ «Контроль лётной годности (КЛГ)»
в варианте развертывания *в составе АСУ ТК* согласно [Техническому заданию](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. **Интеграции:**
- Уточнить контракты П‑ИВ: форматы сообщений, расписания, ETLpipeline, протоколирование.
- Подключить централизованную НСИ через П‑НСИ (справочники типов ВС, статусы, классификаторы).
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» согласно техническому заданию.