# Phase 3 implementation

## Scope

Phase 3 adds tenant-scoped airport, route, aircraft-type, and fleet master management without adding flight scheduling, maintenance workflows, or live aircraft tracking.

## Master data

- Airports support search, status and country filters, CRUD, activation/deactivation, strict IATA/ICAO and IANA timezone validation, and a fixed CSV import/export schema.
- Routes use normalized origin, destination, default aircraft type, and alternate-airport relationships. A database constraint and service validation prevent duplicate airline origin/destination sectors.
- Aircraft types retain manufacturer, model, variant, ICAO code, capacities, weights, fuel, range, engine type, turnaround time, and lifecycle status.
- Fleet records retain registration, tail and serial identity, ownership, active home base, manually recorded operational airport, capacity, airframe utilization, expiries, operational status, and master status.

## Fleet subrecords

- Engines, owners/lessors, leases, and document versions are preserved as separate records.
- Aircraft operational statuses are append-only in `aircraft_status_history`.
- Operational location changes are append-only in `aircraft_location_history` and always use `source=manual` in this phase.
- Aircraft documents are stored outside the public root, validated by MIME and size, checksummed with SHA-256, and downloaded only through tenant- and permission-checked application routes.

## Validation and security

- Registration numbers and aircraft serial numbers are database-unique.
- Lease end dates cannot precede start dates.
- Aircraft types, bases, airports, owners, and lessors are checked against the authenticated airline.
- Inactive bases cannot receive new aircraft assignments.
- Money and operational quantities use `DECIMAL` database columns and validated decimal strings.
- All mutations use server-side permission checks, audit records, and lifecycle history where status changes are involved.

## Deferred scope

The aircraft profile includes explicit placeholders for flight activity, maintenance, and expenses. They do not contain scheduling, maintenance, finance, GPS, ADS-B, or geographical tracking behavior.

