From 25be90de7b852fa2ef468c2eb1591f97e763aac6 Mon Sep 17 00:00:00 2001 From: Yuriy Date: Mon, 16 Feb 2026 01:02:51 +0300 Subject: [PATCH] feat: Part-M RU checklists replacing ICAO/EASA/FAA Co-authored-by: Cursor --- app/checklists/page.tsx | 17 +- backend/app/demo/seed_checklists.py | 308 +++++++++++++++------------- 2 files changed, 172 insertions(+), 153 deletions(-) diff --git a/app/checklists/page.tsx b/app/checklists/page.tsx index 5e42ab6..314b863 100644 --- a/app/checklists/page.tsx +++ b/app/checklists/page.tsx @@ -18,7 +18,7 @@ export default function ChecklistsPage() { const gen = async (src: string) => { const n = prompt('Название:'); if (!n) return; await checklistsApi.generate(src, n); mutate(); }; return ( - @@ -26,13 +26,14 @@ export default function ChecklistsPage() { {!isLoading && templates.length > 0 ? (
diff --git a/backend/app/demo/seed_checklists.py b/backend/app/demo/seed_checklists.py index 442bf00..8a47985 100644 --- a/backend/app/demo/seed_checklists.py +++ b/backend/app/demo/seed_checklists.py @@ -1,6 +1,7 @@ """ -Seed 8 шаблонов чек-листов аудита ВС (РФ/ИКАО/EASA/FAA). -Проверка на дубликаты по имени перед созданием. +Seed чек-листов по Part-M RU (российские правила поддержания лётной годности). +Гармонизировано с ICAO Annex 8, EASA Part-M, FAA 14 CFR Part 43/91. +Заменяет прежние шаблоны ICAO/EASA/FAA — старые удаляются, создаются 8 шаблонов Part-M RU. """ import logging from app.db.session import SessionLocal @@ -8,168 +9,185 @@ from app.models import ChecklistTemplate, ChecklistItem logger = logging.getLogger(__name__) +REGULATION = "Part-M RU" -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) + +def _add_template(db, name: str, description: str, category: str, items: list[tuple[str, str]]) -> None: + """Добавить шаблон Part-M RU и его пункты. category хранится в domain для фильтрации.""" + t = ChecklistTemplate( + name=name, + version=1, + description=description, + domain=category, + 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)) + db.add( + ChecklistItem( + template_id=t.id, + code=code, + text=text, + domain=category, + 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", "Страховой полис ОСАГО действителен"), - ]) + # Полная замена: удалить все шаблоны чек-листов (пункты удалятся по CASCADE) + deleted = db.query(ChecklistTemplate).delete(synchronize_session=False) + if deleted: + logger.info("Deleted %s old checklist template(s)", deleted) + db.commit() - # 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", "Привилегии: работы выполняются в рамках области одобрения"), - ]) + # 1. M.A.301 — Задачи по поддержанию лётной годности + _add_template( + db, + "M.A.301 — Задачи по поддержанию лётной годности", + "Чек-лист по Part-M RU. Категория: continuing_airworthiness.", + "continuing_airworthiness", + [ + ("M.A.301(1)", "Выполнение предполётного осмотра ВС"), + ("M.A.301(2)", "Устранение неисправностей и повреждений в соответствии с утверждёнными данными"), + ("M.A.301(3)", "Выполнение всех работ по ТО в соответствии с утверждённой программой ТО"), + ("M.A.301(4)", "Анализ эффективности утверждённой программы ТО"), + ("M.A.301(5)", "Выполнение применимых Директив лётной годности (ДЛГ/AD)"), + ("M.A.301(6)", "Выполнение применимых модификаций и ремонтов"), + ("M.A.301(7)", "Установление политики модификаций для необязательных модификаций"), + ("M.A.301(8)", "Выполнение проверок по поддержанию лётной годности (Airworthiness Review)"), + ], + ) - # 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", "Привилегии"), - ]) + # 2. M.A.302 — Программа технического обслуживания + _add_template( + db, + "M.A.302 — Программа технического обслуживания", + "Чек-лист по Part-M RU. Категория: maintenance_program.", + "maintenance_program", + [ + ("M.A.302(a)", "ТО ВС выполняется по утверждённой программе ТО"), + ("M.A.302(b)", "Программа ТО содержит периодичность и объём работ, включая специальные требования"), + ("M.A.302(c)", "Программа ТО соответствует инструкциям по поддержанию лётной годности (ICA)"), + ("M.A.302(d)", "Программа ТО утверждена компетентным органом (Росавиация)"), + ("M.A.302(e)", "Учёт Директив лётной годности в программе ТО"), + ("M.A.302(f)", "Учёт Сервисных бюллетеней (SB) обязательного характера"), + ("M.A.302(g)", "Программа ТО содержит программу контроля старения конструкции"), + ("M.A.302(h)", "Программа ТО содержит программу контроля коррозии"), + ], + ) - # 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"), - ]) + # 3. M.A.303 — Директивы лётной годности (AD/ДЛГ) + _add_template( + db, + "M.A.303 — Директивы лётной годности (AD/ДЛГ)", + "Чек-лист по Part-M RU. Категория: airworthiness_directives.", + "airworthiness_directives", + [ + ("M.A.303(a)", "Все применимые ДЛГ выполнены в установленные сроки"), + ("M.A.303(b)", "Записи о выполнении ДЛГ внесены в бортовую документацию"), + ("M.A.303(c)", "Повторяющиеся ДЛГ контролируются и выполняются по графику"), + ("M.A.303(d)", "Альтернативные методы соответствия (AMOC) согласованы с компетентным органом"), + ("M.A.303(e)", "Ведётся реестр применимых ДЛГ с указанием статуса выполнения"), + ("M.A.303(f)", "Новые ДЛГ анализируются на применимость в течение 30 дней"), + ], + ) - # 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", "Содействие — отчетность"), - ]) + # 4. M.A.305 — Система учёта поддержания лётной годности + _add_template( + db, + "M.A.305 — Система учёта поддержания лётной годности", + "Чек-лист по Part-M RU. Категория: records.", + "records", + [ + ("M.A.305(a)", "Ведение бортового журнала ВС (Aircraft Log Book)"), + ("M.A.305(b)", "Ведение журнала двигателя (Engine Log Book)"), + ("M.A.305(c)", "Ведение карт-формуляров компонентов с ограниченным ресурсом"), + ("M.A.305(d)", "Записи о текущем статусе ДЛГ и SB"), + ("M.A.305(e)", "Записи о текущем статусе модификаций и ремонтов"), + ("M.A.305(f)", "Записи о наработке ВС, двигателей и компонентов (часы/циклы)"), + ("M.A.305(g)", "Записи о массе и центровке ВС"), + ("M.A.305(h)", "Хранение записей не менее 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 — хранение"), - ]) + # 5. M.A.401 — Данные по техническому обслуживанию + _add_template( + db, + "M.A.401 — Данные по техническому обслуживанию", + "Чек-лист по Part-M RU. Категория: maintenance_data.", + "maintenance_data", + [ + ("M.A.401(a)", "Использование актуальных данных по ТО при выполнении работ"), + ("M.A.401(b)", "Доступность AMM, SRM, IPC, WDM для персонала"), + ("M.A.401(c)", "Данные по ТО соответствуют требованиям разработчика типа"), + ("M.A.401(d)", "Процедура контроля актуальности ревизий документации"), + ("M.A.401(e)", "Наличие утверждённых технологических карт (Task Cards)"), + ("M.A.401(f)", "Учёт временных ревизий (Temporary Revisions)"), + ], + ) - # 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"), - ]) + # 6. M.A.501 — Компоненты и запасные части + _add_template( + db, + "M.A.501 — Компоненты и запасные части", + "Чек-лист по Part-M RU. Категория: components.", + "components", + [ + ("M.A.501(a)", "Установка только сертифицированных компонентов с Form 1 / АКТ-8a"), + ("M.A.501(b)", "Прослеживаемость компонентов от изготовителя до установки"), + ("M.A.501(c)", "Контроль ресурсных компонентов (life-limited parts)"), + ("M.A.501(d)", "Идентификация и изоляция неисправных компонентов"), + ("M.A.501(e)", "Контроль нестандартных (Standard) деталей"), + ("M.A.501(f)", "Входной контроль компонентов перед установкой"), + ("M.A.501(g)", "Система контроля расходных материалов (срок годности, хранение)"), + ], + ) - # 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"), - ]) + # 7. M.A.703 — Обязанности организации по управлению ПЛГ (CAMO) + _add_template( + db, + "M.A.703 — Обязанности организации по управлению ПЛГ (CAMO)", + "Чек-лист по Part-M RU. Категория: camo_obligations.", + "camo_obligations", + [ + ("M.A.703(a)", "Обеспечение поддержания лётной годности всех управляемых ВС"), + ("M.A.703(b)", "Заключение договора с утверждённой организацией по ТО (Part-145)"), + ("M.A.703(c)", "Контроль выполнения всех работ по ТО в установленные сроки"), + ("M.A.703(d)", "Управление программой ТО и её своевременная актуализация"), + ("M.A.703(e)", "Управление ресурсными компонентами и контроль их наработки"), + ("M.A.703(f)", "Координация планового и внепланового ТО"), + ("M.A.703(g)", "Управление записями по ПЛГ в соответствии с M.A.305"), + ("M.A.703(h)", "Анализ эффективности программы ТО и подготовка отчётов"), + ], + ) + + # 8. M.A.901 — Проверка лётной годности ВС (Airworthiness Review) + _add_template( + db, + "M.A.901 — Проверка лётной годности ВС (Airworthiness Review)", + "Чек-лист по Part-M RU. Категория: airworthiness_review.", + "airworthiness_review", + [ + ("M.A.901(a)", "Проверка ЛГ выполняется ежегодно или при продлении СЛГ"), + ("M.A.901(b)", "Физический осмотр ВС проведён"), + ("M.A.901(c)", "Проверка статуса выполнения ДЛГ и SB"), + ("M.A.901(d)", "Проверка актуальности программы ТО"), + ("M.A.901(e)", "Проверка полноты записей по ТО и наработке"), + ("M.A.901(f)", "Проверка статуса ресурсных компонентов"), + ("M.A.901(g)", "Проверка статуса модификаций и ремонтов"), + ("M.A.901(h)", "Проверка массы и центровки"), + ("M.A.901(i)", "Выпуск Сертификата проверки лётной годности (ARC) или рекомендации"), + ("M.A.901(j)", "Уведомление компетентного органа при выявлении несоответствий"), + ], + ) db.commit() - logger.info("Checklist seed complete: 8 templates") + logger.info("Part-M RU checklist seed complete: 8 templates") except Exception as e: db.rollback() logger.exception("Checklist seed failed: %s", e)