""" 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()