- 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>
83 lines
3.9 KiB
Python
83 lines
3.9 KiB
Python
"""
|
||
Схемы для управления лётной годностью согласно требованиям ИКАО 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="Дополнительные примечания")
|