Go to file
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
__tests__ Consolidation: KLG ASUTK + PAPA integration 2026-02-08 17:18:31 +03:00
app Consolidation: KLG ASUTK + PAPA integration 2026-02-08 17:18:31 +03:00
backend Consolidation: KLG ASUTK + PAPA integration 2026-02-08 17:18:31 +03:00
components Consolidation: KLG ASUTK + PAPA integration 2026-02-08 17:18:31 +03:00
docs Consolidation: KLG ASUTK + PAPA integration 2026-02-08 17:18:31 +03:00
hooks Consolidation: KLG ASUTK + PAPA integration 2026-02-08 17:18:31 +03:00
inbox-server Consolidation: KLG ASUTK + PAPA integration 2026-02-08 17:18:31 +03:00
k8s Consolidation: KLG ASUTK + PAPA integration 2026-02-08 17:18:31 +03:00
lib Consolidation: KLG ASUTK + PAPA integration 2026-02-08 17:18:31 +03:00
prompts Consolidation: KLG ASUTK + PAPA integration 2026-02-08 17:18:31 +03:00
scripts Consolidation: KLG ASUTK + PAPA integration 2026-02-08 17:18:31 +03:00
supabase Consolidation: KLG ASUTK + PAPA integration 2026-02-08 17:18:31 +03:00
.gitignore Consolidation: KLG ASUTK + PAPA integration 2026-02-08 17:18:31 +03:00
docker-compose.yml Consolidation: KLG ASUTK + PAPA integration 2026-02-08 17:18:31 +03:00
jest.config.js Consolidation: KLG ASUTK + PAPA integration 2026-02-08 17:18:31 +03:00
KLG_TZ_Analysis_Consolidation.docx Consolidation: KLG ASUTK + PAPA integration 2026-02-08 17:18:31 +03:00
middleware.ts Consolidation: KLG ASUTK + PAPA integration 2026-02-08 17:18:31 +03:00
next-env.d.ts Consolidation: KLG ASUTK + PAPA integration 2026-02-08 17:18:31 +03:00
next.config.js Consolidation: KLG ASUTK + PAPA integration 2026-02-08 17:18:31 +03:00
package-lock.json Consolidation: KLG ASUTK + PAPA integration 2026-02-08 17:18:31 +03:00
package.json Consolidation: KLG ASUTK + PAPA integration 2026-02-08 17:18:31 +03:00
README.md Consolidation: KLG ASUTK + PAPA integration 2026-02-08 17:18:31 +03:00
sentry.client.config.ts Consolidation: KLG ASUTK + PAPA integration 2026-02-08 17:18:31 +03:00
sentry.edge.config.ts Consolidation: KLG ASUTK + PAPA integration 2026-02-08 17:18:31 +03:00
sentry.server.config.ts Consolidation: KLG ASUTK + PAPA integration 2026-02-08 17:18:31 +03:00
tsconfig.json Consolidation: KLG ASUTK + PAPA integration 2026-02-08 17:18:31 +03:00

Прототип ФЗ «КЛГ» — вариант «под АСУ ТК»

Данный репозиторий содержит минимально работоспособный прототип серверной части ФЗ «Контроль лётной годности (КЛГ)» в варианте развертывания в составе АСУ ТК согласно Техническому заданию.

Заказчик: АО «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)

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» согласно техническому заданию.