klg-asutk-app/backend/app/demo/seed_checklists.py
Yuriy 62958239ac feat: 8 шаблонов чек-листов аудита ВС (РФ/ИКАО/EASA/FAA) + редактирование
- seed_checklists.py: 8 шаблонов (~120 пунктов) — ФАП-148, ФАП-145, ФАП-147,
  ICAO Annex 8, ICAO Annex 19 SMS, EASA Part-M, EASA Part-CAMO, FAA Part 43/91
- checklists.py: PATCH template, PATCH/POST/DELETE items
- ChecklistEditModal.tsx: модальное окно с inline-edit пунктов
- api-client.ts: updateTemplate, addItem, updateItem, deleteItem
- FilterBar: фильтры по стандартам (ФАП/ИКАО/EASA/FAA)
- Автозагрузка шаблонов при первом запуске (lifespan + demo seed)

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-15 15:37:55 +03:00

179 lines
11 KiB
Python
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.

"""
Seed 8 шаблонов чек-листов аудита ВС (РФ/ИКАО/EASA/FAA).
Проверка на дубликаты по имени перед созданием.
"""
import logging
from app.db.session import SessionLocal
from app.models import ChecklistTemplate, ChecklistItem
logger = logging.getLogger(__name__)
def _ensure_template(db, name: str, description: str | None, domain: str, items: list[tuple[str, str]]) -> None:
if db.query(ChecklistTemplate).filter(ChecklistTemplate.name == name).first():
return
t = ChecklistTemplate(name=name, version=1, description=description, domain=domain, is_active=True)
db.add(t)
db.flush()
for sort_order, (code, text) in enumerate(items, start=1):
db.add(ChecklistItem(template_id=t.id, code=code, text=text, domain=domain, sort_order=sort_order))
logger.info("Created template: %s (%s items)", name, len(items))
def seed_checklists():
db = SessionLocal()
try:
# 1. ФАП-148 — Поддержание лётной годности ВС (15 пунктов)
_ensure_template(db, "ФАП-148 — Поддержание лётной годности ВС", None, "ФАП-148", [
("148.1", "Наличие действующего сертификата лётной годности (СЛГ)"),
("148.2", "СЛГ соответствует типу и модификации ВС"),
("148.3", "Наличие утверждённой программы ТО (ПрТО)"),
("148.4", "ПрТО соответствует данным разработчика и требованиям ГосЦЕНТР"),
("148.5", "Все директивы лётной годности (ДЛГ) выполнены в установленные сроки"),
("148.6", "Информация о выполнении ДЛГ внесена в формуляр ВС"),
("148.7", "Бюллетени (SB) категории «обязательные» выполнены"),
("148.8", "Наработка ВС (часы, циклы) соответствует записям в формуляре"),
("148.9", "Агрегаты с ограниченным ресурсом не превышают назначенных пределов"),
("148.10", "Весовая ведомость и центровка актуальны"),
("148.11", "Записи о последнем ТО формы A-check / C-check имеются"),
("148.12", "Все открытые дефекты оформлены по MEL/CDL или устранены"),
("148.13", "Бортовая документация укомплектована и актуальна"),
("148.14", "Свидетельство о регистрации действительно"),
("148.15", "Страховой полис ОСАГО действителен"),
])
# 2. ФАП-145 — Аудит организации ТОиР (18 пунктов)
_ensure_template(db, "ФАП-145 — Аудит организации ТОиР", None, "ФАП-145", [
("145.A.25", "Наличие одобрения / сертификата ТОиР"),
("145.A.30a", "Требования к персоналу: ответственный руководитель назначен"),
("145.A.30b", "Система качества: менеджер по качеству назначен, независим"),
("145.A.35", "Сертифицирующий персонал: квалификация подтверждена"),
("145.A.40a", "Оборудование и инструмент: перечень актуален"),
("145.A.40b", "Калибровка инструмента выполнена в срок"),
("145.A.42", "Компоненты: входной контроль, прослеживаемость, маркировка"),
("145.A.45a", "Техническая документация: актуальность и доступность"),
("145.A.45b", "Данные производителя (AMM, IPC, SRM) в актуальной ревизии"),
("145.A.47", "Планирование ТО: ресурсы, сроки, приоритеты"),
("145.A.50a", "Выполнение ТО: соответствие наряду и карте ТО"),
("145.A.50b", "CRS (сертификат допуска к эксплуатации) оформлен правильно"),
("145.A.55", "Записи о ТО: хранение не менее 3 лет"),
("145.A.60", "Происшествия/инциденты: сообщения поданы"),
("145.A.65a", "Политика безопасности: SMS внедрена"),
("145.A.65b", "Система управления рисками функционирует"),
("145.A.70", "Руководство MRO (MOE) актуально и одобрено"),
("145.A.75", "Привилегии: работы выполняются в рамках области одобрения"),
])
# 3. ФАП-147 — Аудит учебной организации (9 пунктов)
_ensure_template(db, "ФАП-147 — Аудит учебной организации", None, "ФАП-147", [
("147.A.05", "Область одобрения"),
("147.A.10", "Персонал"),
("147.A.15", "Помещения"),
("147.A.20", "Оборудование"),
("147.A.25", "Программы"),
("147.A.30", "Экзамены"),
("147.A.35", "Записи"),
("147.A.40", "MTOE"),
("147.A.45", "Привилегии"),
])
# 4. ICAO Annex 8 — Лётная годность ВС (12 пунктов)
_ensure_template(db, "ICAO Annex 8 — Лётная годность ВС", None, "ICAO", [
("ICAO-8.3.1", "Сертификаты типа"),
("ICAO-8.3.2", "Сертификаты лётной годности"),
("ICAO-8.3.3", "Надзор за ЛГ"),
("ICAO-8.3.4", "Надзор (продолжение)"),
("ICAO-8.4.1", "Программа ТО"),
("ICAO-8.4.2", "Директивы (AD)"),
("ICAO-8.4.3", "Модификации"),
("ICAO-8.4.4", "Ремонты"),
("ICAO-8.5.1", "Документация"),
("ICAO-8.5.2", "Весовая ведомость"),
("ICAO-8.6.1", "Годность после ТО"),
("ICAO-8.6.2", "CRS"),
])
# 5. ICAO Annex 19 — SMS (12 пунктов)
_ensure_template(db, "ICAO Annex 19 — SMS", None, "ICAO", [
("SMS-1.1", "Политика безопасности — утверждена"),
("SMS-1.2", "Политика — доведена до персонала"),
("SMS-1.3", "Политика — пересмотр"),
("SMS-2.1", "Управление рисками — идентификация"),
("SMS-2.2", "Управление рисками — оценка"),
("SMS-2.3", "Управление рисками — митигация"),
("SMS-3.1", "Обеспечение безопасности — обеспечение"),
("SMS-3.2", "Обеспечение безопасности — мониторинг"),
("SMS-3.3", "Обеспечение безопасности — улучшение"),
("SMS-4.1", "Содействие — обучение"),
("SMS-4.2", "Содействие — коммуникация"),
("SMS-4.3", "Содействие — отчетность"),
])
# 6. EASA Part-M — Поддержание ЛГ (20 пунктов)
_ensure_template(db, "EASA Part-M — Поддержание ЛГ", None, "EASA", [
("M.A.201", "Ответственность эксплуатанта"),
("M.A.301a", "ТО — соответствие"),
("M.A.301b", "ТО — AD выполнены"),
("M.A.301c", "Дефекты — устранены или разрешены"),
("M.A.302", "Программа ТО"),
("M.A.303", "Директивы"),
("M.A.304", "Модификации"),
("M.A.305", "Документация"),
("M.A.306", "Записи ТО"),
("M.A.307", "Хранение записей"),
("M.A.401", "Выполнение ТО"),
("M.A.402", "Дефекты при ТО"),
("M.A.403", "Компоненты — пригодность"),
("M.A.501", "Компоненты — установка"),
("M.A.502", "Компоненты — прослеживаемость"),
("M.A.801", "CRS"),
("M.A.901", "ARC — выдача"),
("M.A.902", "ARC — хранение"),
])
# 7. EASA Part-CAMO — Аудит CAMO (12 пунктов)
_ensure_template(db, "EASA Part-CAMO — Аудит CAMO", None, "EASA", [
("CAMO.A.200", "Одобрение CAMO"),
("CAMO.A.205", "Управление воздушным судном (AM)"),
("CAMO.A.210", "Персонал"),
("CAMO.A.215", "Помещения"),
("CAMO.A.300", "Программа ТО"),
("CAMO.A.305", "AD — выполнение"),
("CAMO.A.310", "Компоненты"),
("CAMO.A.315", "Дефекты"),
("CAMO.A.320", "ARC"),
("CAMO.A.325", "Записи ARC"),
("CAMO.A.405", "Качество"),
("CAMO.A.410", "SMS"),
])
# 8. FAA Part 43/91 — Annual/100-hour Inspection (17 пунктов)
_ensure_template(db, "FAA Part 43/91 — Annual/100-hour Inspection", None, "FAA", [
("43.D-1", "Fuselage and cabin"),
("43.D-2", "Cabin — emergency equipment"),
("43.D-3", "Engine and nacelle"),
("43.D-4", "Engine — compressor"),
("43.D-5", "Propeller"),
("43.D-6", "Landing gear"),
("43.D-7", "Wing and center section"),
("43.D-8", "Empennage"),
("43.D-9", "Control cables"),
("43.D-10", "Instruments"),
("43.D-11", "Avionics"),
("43.D-12", "Fuel system"),
("43.D-13", "Hydraulic system"),
("43.D-14", "Miscellaneous"),
("43.D-15", "Engine — final check"),
("91.409", "Inspection status"),
("91.417", "Records"),
])
db.commit()
logger.info("Checklist seed complete: 8 templates")
except Exception as e:
db.rollback()
logger.exception("Checklist seed failed: %s", e)
raise
finally:
db.close()