klg-asutk-app/docs/ДЕМОНСТРАЦИЯ_ПРОЕКТА.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

536 lines
20 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.

# Демонстрация проекта: Система контроля лётной годности (КЛГ)
## Обзор проекта
Система контроля лётной годности воздушных судов — это комплексное веб-приложение для управления данными о воздушных судах, организациях, сертификатах и документации в соответствии с требованиями ИКАО, МАК, EASA и Росавиации.
**Заказчик:** АО «REFLY»
**Вариант развертывания:** В составе АСУ ТК
**Статус:** Прототип (MVP)
---
## 🚀 Быстрый старт
### Требования
- Docker и Docker Compose
- 4 ГБ свободной оперативной памяти
- Порты 8080 (frontend) и 8000 (backend) должны быть свободны
### Запуск проекта
```bash
# Клонирование репозитория (если необходимо)
cd klg_asutk_app
# Запуск всех сервисов
docker compose up --build
# Или в фоновом режиме
docker compose up -d --build
```
### Доступ к приложению
После запуска доступны следующие адреса:
- **Frontend (веб-интерфейс):** http://localhost:8080
- **Backend API:** http://localhost:8000
- **API документация (Swagger):** http://localhost:8000/docs
- **API документация (ReDoc):** http://localhost:8000/redoc
---
## 📋 Основные функции системы
### 1. Дашборд (Главная страница)
**URL:** http://localhost:8080/
**Функциональность:**
- Отображение ключевых показателей (KPI):
- Количество организаций
- Количество воздушных судов
- Количество заявок на сертификацию
- Количество одобренных заявок
- Количество пользователей
- ВС в эксплуатации
- ВС на обслуживании
- Сертификаты с истекающим сроком действия
- Поиск по воздушным судам и организациям
- Быстрый доступ к функциям:
- **Загрузка данных** — загрузка файлов (текст, PDF, XLS, PNG) для воздушных судов
- **Документы** — переход к нормативным документам
**Дизайн:**
- Небесный градиентный фон с анимацией облаков
- Белые карточки с тенями для лучшей читаемости
- Крупные зеленые кнопки для основных действий
- Глянцевые кнопки для дополнительных функций
### 2. Воздушные суда
**URL:** http://localhost:8080/aircraft
**Функциональность:**
- Просмотр списка всех воздушных судов с фильтрацией
- Отображение информации:
- Регистрационный номер
- Серийный номер
- Тип ВС (производитель и модель)
- Оператор
- Статус (в эксплуатации, на обслуживании, на хранении, списан)
- Налет (часы)
- Количество циклов
- Чертежные номера
- Дата выполненных работ
- Создание нового воздушного судна
- Редактирование существующих записей
- Просмотр детальной информации о ВС
**Типы воздушных судов:**
- Самолеты: Boeing 737, Airbus A320, Sukhoi Superjet 100, MC-21-300, Ил-96-300, Ту-204, Ан-148 и др.
- Вертолеты: Ми-8, Ми-26, Ка-32, Ка-226, AW139, EC225 и др.
### 3. Организации
**URL:** http://localhost:8080/organizations
**Функциональность:**
- Управление организациями трех типов:
- **Операторы** — авиакомпании и эксплуатанты
- **MRO** — организации технического обслуживания
- **Органы власти** — регулирующие органы
- Создание, редактирование и удаление организаций
- Просмотр списка всех организаций с фильтрацией
**Примеры организаций в системе:**
- Аэрофлот
- S7 Airlines
- Уральские авиалинии
- Авиакомпания "Якутия"
- Авиакомпания "Победа"
- И другие
### 4. Заявки на сертификацию
**URL:** http://localhost:8080/applications
**Функциональность:**
- Просмотр заявок на сертификацию организаций по техническому обслуживанию
- Отслеживание статусов:
- `draft` — черновик
- `submitted` — подана
- `under_review` — на рассмотрении
- `remarks` — есть замечания
- `approved` — одобрена
- `rejected` — отклонена
- `expired` — истекла
- Автоматическая нумерация заявок
- Система замечаний и уведомлений
- Автоматический таймер (30 дней на исправление замечаний)
### 5. Пользователи
**URL:** http://localhost:8080/users
**Функциональность:**
- Просмотр списка пользователей системы
- Фильтрация по:
- Организации
- Роли
**Роли пользователей:**
- **Администратор** — полный доступ
- **Инспектор органа** — проверка и одобрение заявок
- **Менеджер оператора** — управление ВС оператора
- **Пользователь оператора** — просмотр данных оператора
- **Менеджер MRO** — управление данными MRO
- **Пользователь MRO** — просмотр данных MRO
### 6. Нормативные документы
**URL:** http://localhost:8080/regulations
**Функциональность:**
- Просмотр нормативных документов от:
- **ИКАО (ICAO)** — международные стандарты
- **МАК** — Межгосударственный авиационный комитет
- **EASA** — Европейское агентство авиационной безопасности
- **Росавиация** — Федеральное агентство воздушного транспорта
- Информация о каждом документе:
- Название и номер
- Тип документа
- Дата публикации/обновления
- Статус (действует, обновлен, новый)
- Категория
- Описание
- Ссылка на официальный сайт
**Примеры документов:**
- ИКАО Annex 8 — Воздушная годность воздушных судов
- ИКАО Doc 9760 — Руководство по поддержанию летной годности
- EASA Part M — Continuing Airworthiness
- EASA Part 145 — Maintenance Organisation Approvals
- ФАП-128 — Поддержание летной годности воздушных судов
---
## 🎨 Дизайн и пользовательский интерфейс
### Цветовая схема
**Фон страниц:**
- Небесный градиент: от небесно-голубого (#87CEEB) вверху до белого (#FFFFFF) внизу
- Анимированные облака для визуального эффекта
**Карточки и элементы:**
- Белый фон для карточек и таблиц
- Тени для создания глубины
- Синие акценты для интерактивных элементов
**Кнопки:**
- **Основные действия:** Крупные круглые зеленые кнопки с белым текстом
- **Дополнительные действия:** Глянцевые прямоугольные кнопки различных цветов (бирюзовый, фиолетовый, синий, оранжевый)
### Типографика
- **Заголовки:** Шрифт Unbounded (Bold, Regular)
- **Основной текст:** Шрифт Montserrat (Regular, Medium, Bold)
### Адаптивность
- Интерфейс адаптирован для различных размеров экранов
- Таблицы с горизонтальной прокруткой на мобильных устройствах
---
## 🔧 Технические детали
### Backend
**Технологии:**
- **FastAPI** — веб-фреймворк
- **SQLAlchemy** — ORM для работы с БД
- **PostgreSQL** — база данных
- **APScheduler** — планировщик задач
- **Pydantic** — валидация данных
**Основные модули:**
- `app/api/routes/` — API endpoints
- `app/models/` — модели данных SQLAlchemy
- `app/schemas/` — Pydantic схемы
- `app/services/` — бизнес-логика
- `app/db/` — работа с базой данных
- `app/integration/` — интеграции (П-ИВ АСУ ТК)
### Frontend
**Технологии:**
- **React 18** — библиотека для UI
- **TypeScript** — типизация
- **Ant Design** — UI компоненты
- **Vite** — сборщик
- **React Router** — маршрутизация
**Структура:**
- `src/pages/` — страницы приложения
- `src/components/` — переиспользуемые компоненты
- `src/api/` — клиенты для API
- `src/assets/` — стили, шрифты, изображения
- `src/layout/` — компоненты макета
### База данных
**Основные таблицы:**
- `organizations` — организации
- `aircraft` — воздушные суда
- `aircraft_types` — типы воздушных судов
- `cert_applications` — заявки на сертификацию
- `users` — пользователи
- `attachments` — вложения (файлы)
- `notifications` — уведомления
- `airworthiness_certificates` — сертификаты летной годности
---
## 📊 Примеры данных
### Воздушные суда
Система содержит данные о различных типах воздушных судов:
**Самолеты:**
- Boeing 737-800 (Аэрофлот, S7 Airlines)
- Airbus A320 (Аэрофлот, Победа)
- Sukhoi Superjet 100 (Аэрофлот, Якутия)
- MC-21-300 (Аэрофлот)
- Ил-96-300 (Аэрофлот)
- Ту-204 (Уральские авиалинии)
- Ан-148 (Якутия)
**Вертолеты:**
- Ми-8 (различные операторы)
- Ми-26
- Ка-32
- Ка-226
- AW139
- EC225
### Организации
**Операторы:**
- Аэрофлот — Российские авиалинии
- S7 Airlines
- Уральские авиалинии
- Авиакомпания "Якутия"
- Авиакомпания "Победа"
**MRO:**
- Авиационный технический центр
- Сервисный центр технического обслуживания
**Органы власти:**
- Росавиация
- МАК
---
## 🔐 Авторизация
### Режим разработки
В режиме разработки включена поддержка HS256 токенов (`ALLOW_HS256_DEV_TOKENS=true`).
**Минимальный набор claims для JWT токена:**
```json
{
"sub": "user-1",
"name": "Иван Иванов",
"email": "ivan@example.com",
"role": "operator_manager",
"org_id": "<ID организации>"
}
```
**Роли:**
- `admin` — администратор
- `authority_inspector` — инспектор органа
- `operator_manager` — менеджер оператора
- `operator_user` — пользователь оператора
- `mro_manager` — менеджер MRO
- `mro_user` — пользователь MRO
### Production
В production режиме используется OIDC/JWKS валидация через АСУ ТК-ИБ.
---
## 📡 API Endpoints
### Организации
- `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/aircraft/{id}` — детали ВС
- `PATCH /api/v1/aircraft/{id}` — обновление
- `GET /api/v1/aircraft/types` — список типов ВС
### Заявки на сертификацию
- `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` — список уведомлений
### Пользователи
- `GET /api/v1/users` — список пользователей
- `GET /api/v1/users/{id}` — детали пользователя
### Летная годность
- `GET /api/v1/airworthiness/certificates` — список сертификатов
- `POST /api/v1/airworthiness/certificates` — создание сертификата
- `GET /api/v1/airworthiness/certificates/{id}` — детали сертификата
### Модификации
- `GET /api/v1/modifications` — список модификаций
- `POST /api/v1/modifications` — создание модификации
---
## 🧪 Тестирование
### Проверка работоспособности
1. **Проверка health endpoint:**
```bash
curl http://localhost:8000/api/v1/health
```
2. **Проверка frontend:**
- Откройте http://localhost:8080 в браузере
- Убедитесь, что загружается главная страница
3. **Проверка API документации:**
- Откройте http://localhost:8000/docs
- Попробуйте выполнить запросы через Swagger UI
### Тестовые сценарии
1. **Создание организации:**
- Перейдите в раздел "Организации"
- Нажмите "Создать"
- Заполните форму и сохраните
2. **Добавление воздушного судна:**
- Перейдите в раздел "Воздушные суда"
- Нажмите "Добавить ВС"
- Заполните форму и сохраните
3. **Загрузка файла:**
- На главной странице нажмите "Загрузка данных"
- Выберите воздушное судно
- Загрузите файл (текст, PDF, XLS или PNG)
4. **Поиск:**
- На главной странице введите запрос в поле поиска
- Нажмите "Найти"
- Проверьте результаты
---
## 📝 Логи и отладка
### Просмотр логов
```bash
# Логи всех сервисов
docker compose logs
# Логи backend
docker compose logs backend
# Логи frontend
docker compose logs frontend
# Логи в реальном времени
docker compose logs -f
```
### Очистка и перезапуск
```bash
# Остановка всех сервисов
docker compose down
# Остановка с удалением volumes (ОСТОРОЖНО: удалит данные БД)
docker compose down -v
# Пересборка без кэша
docker compose build --no-cache
# Полный перезапуск
docker compose down
docker compose up --build
```
---
## 🔄 Интеграции
### П-ИВ АСУ ТК
Система поддерживает интеграцию с протоколом интеграции и взаимодействия АСУ ТК:
- Модуль: `app/integration/piv.py`
- Функция `push_event()` — отправка событий
- Логирование интеграционных процессов в `ingest_job_logs`
### ЦХД АСУ ТК
База данных PostgreSQL используется как модель центрального хранилища данных АСУ ТК.
---
## 🚧 Планы развития
### Реализовано (MVP)
✅ Управление организациями
✅ Управление воздушными судами и типами
✅ Заявки на сертификацию с workflow
✅ Загрузка и управление файлами
✅ Система уведомлений
✅ Дашборд с KPI
✅ Нормативные документы
✅ Управление пользователями
### В разработке / Планируется
- [ ] Документ лётной годности (ДЛГ)
- [ ] Контрольные данные (КД)
- [ ] Модификации воздушных судов (полная реализация)
- [ ] Инспекции
- [ ] Контрольные карты программы ТО
- [ ] Отслеживание компонентов с ограниченным ресурсом (LLP, HT)
- [ ] Отчеты по ремонтам и повреждениям конструкции
- [ ] Отчеты по дефектам
- [ ] Отслеживание комплектующих изделий с ограниченным ресурсом (шасси)
- [ ] Полная ролевая модель и матрица прав
- [ ] Интеграция с П-НСИ (справочники)
- [ ] Автотесты
- [ ] Программно-методические инструкции (ПМИ)
---
## 📞 Контакты и поддержка
**Заказчик:** АО «REFLY»
Для вопросов и предложений обращайтесь к команде разработки.
---
## 📄 Лицензия
Проект разработан для АО «REFLY» согласно техническому заданию.
---
**Версия документа:** 1.0
**Дата обновления:** 2024