klg-asutk-app/backend/app/schemas/airworthiness.py
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

83 lines
3.9 KiB
Python
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.

"""
Схемы для управления лётной годностью согласно требованиям ИКАО Annex 8.
"""
from datetime import datetime
from pydantic import BaseModel, Field
from app.schemas.common import TimestampOut
class AirworthinessCertificateOut(TimestampOut):
"""Схема вывода документа лётной годности."""
id: str
aircraft_id: str
certificate_number: str
certificate_type: str
issue_date: datetime
expiry_date: datetime | None
issuing_authority: str
issued_by_user_id: str | None
status: str
conditions: str | None
limitations: str | None
remarks: str | None
is_active: bool
class AirworthinessCertificateCreate(BaseModel):
"""Схема создания документа лётной годности."""
aircraft_id: str = Field(..., description="ID воздушного судна")
certificate_number: str = Field(..., description="Номер сертификата")
certificate_type: str = Field(..., description="Тип сертификата (standard, export, special)")
issue_date: datetime = Field(..., description="Дата выдачи")
expiry_date: datetime | None = Field(default=None, description="Дата истечения")
issuing_authority: str = Field(..., description="Орган, выдавший сертификат")
conditions: str | None = Field(default=None, description="Условия действия сертификата")
limitations: str | None = Field(default=None, description="Ограничения")
remarks: str | None = Field(default=None, description="Примечания")
class AirworthinessCertificateUpdate(BaseModel):
"""Схема обновления документа лётной годности."""
certificate_number: str | None = None
certificate_type: str | None = None
issue_date: datetime | None = None
expiry_date: datetime | None = None
issuing_authority: str | None = None
status: str | None = None
conditions: str | None = None
limitations: str | None = None
remarks: str | None = None
is_active: bool | None = None
class AircraftHistoryOut(TimestampOut):
"""Схема вывода истории событий ВС."""
id: str
aircraft_id: str
event_type: str
event_date: datetime
description: str
performed_by_org_id: str | None
performed_by_user_id: str | None
hours_at_event: str | None
cycles_at_event: str | None
compliance_status: str | None
reference_documents: str | None
notes: str | None
class AircraftHistoryCreate(BaseModel):
"""Схема создания записи истории ВС."""
aircraft_id: str = Field(..., description="ID воздушного судна")
event_type: str = Field(..., description="Тип события (maintenance, inspection, modification, incident, status_change)")
event_date: datetime = Field(..., description="Дата события")
description: str = Field(..., description="Описание события")
performed_by_org_id: str | None = Field(default=None, description="ID организации, выполнившей работу")
performed_by_user_id: str | None = Field(default=None, description="ID специалиста, выполнившего работу")
hours_at_event: str | None = Field(default=None, description="Налет на момент события (TTSN)")
cycles_at_event: str | None = Field(default=None, description="Циклы на момент события (TCSN)")
compliance_status: str | None = Field(default=None, description="Статус соответствия требованиям")
reference_documents: str | None = Field(default=None, description="Ссылки на документы")
notes: str | None = Field(default=None, description="Дополнительные примечания")