2cb633e99d
Clean-room reproduction of PFPX: route generation + IFPS validation + OFP. Independent design — official ICAO/EUROCONTROL data only (RAD, FRA points, IFPUV oracle); no community FPL sources. Workspace crates: core (routing/discover/rad/navdata/perf/export), cli, server, rad (Annex parser), gui (Tauri v2 + React + MapLibre). Route discovery: oracle-in-the-loop repair against Eurocontrol IFPUV. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
135 lines
7.2 KiB
Markdown
135 lines
7.2 KiB
Markdown
# IDEAS / Vision — flightplanner
|
|
|
|
Cible produit à long terme : une appli de **briefing de vol** complète, dans
|
|
l'esprit de SkyNexus / SimBrief / PFPX (voir maquettes fournies). Ce document
|
|
capture les idées **au-delà du MVP** ; il ne remet pas en cause l'ordre de
|
|
travail défini dans [`TODO.md`].
|
|
|
|
> ⚠️ **Tension à assumer.** Le MVP est *offline-first* (navdata X-Plane locale,
|
|
> zéro dépendance cloud). La plupart des écrans ci-dessous reposent sur des
|
|
> **données temps réel / online** (météo, NOTAM, réseau VATSIM, cartes ChartFox).
|
|
> Ils appartiennent donc à une **phase post-MVP**, et seront branchés via une
|
|
> couche *providers* **optionnelle** : chaque source a une implémentation
|
|
> « offline / vide » par défaut, et une implémentation « online » activable.
|
|
> Le cœur (parsing, routing, perf, export) reste utilisable sans réseau.
|
|
|
|
## Impact architecture (prévoir tôt, coder plus tard)
|
|
|
|
- **`crates/providers`** — traits abstraits + implémentations :
|
|
`WeatherProvider` (METAR/TAF/SIGMET/WAFS), `NotamProvider`, `ChartProvider`
|
|
(ChartFox), `NetworkProvider` (VATSIM online ATC/traffic). Chaque trait a une
|
|
impl `Null`/offline. Aucune de ces deps ne remonte dans `core`.
|
|
- **`crates/web`** — UI locale (Axum + front simple) qui héberge les écrans
|
|
Briefing / DEP-ARR-ALT / Enroute / Charts. Consomme `core` + `providers`.
|
|
- **`OFP builder`** dans `core` : agrège route + perf + météo en un objet
|
|
« briefing » sérialisable (base commune CLI ↔ web ↔ export PDF/texte).
|
|
- **Modèle de vol enrichi** : callsign, type OACI (ex. BCS3/A220), CI, step
|
|
climbs, ZFW/TOW/LDW, bloc carburant détaillé, alternates multiples.
|
|
|
|
---
|
|
|
|
## 1. Écran BRIEFING (OFP / dashboard)
|
|
|
|
- **Bandeau global** (toutes pages) : callsign, type avion + moteur, dep→arr,
|
|
heures OFF/ON + temps bloc, cycle AIRAC, version OFP, sync multi-appareils,
|
|
actions PAD / OFP / REFRESH.
|
|
- **Couverture ATC** : timeline des FIR traversés avec état online (VATSIM).
|
|
- **Weights** : ZFW / TOW / LDW.
|
|
- **Fuel** : bloc total + décomposition TAXI / TRIP / CONT / ALTN / FINRES
|
|
(barre empilée visuelle).
|
|
- **Load** : PAX, cargo, payload, Cost Index, CRZ FL / temp, Mach.
|
|
- **Step climbs** : profil d'altitude par étape.
|
|
- **Cartes départ / arrivée** condensées : RWY, SID/STAR, QNH, vent, METAR.
|
|
- **Route** : chaîne complète SID … DCT/airways … STAR, + bouton « File on VATSIM ».
|
|
- **Alternates** : FL, distance, fuel, ETE, route de déroutement.
|
|
- **Cruise level impact** : Δ trip fuel / Δ temps pour FL ±2000/4000/6000 vs FL choisi.
|
|
|
|
## 2. Écrans DEP / ARR / ALT (briefing terrain)
|
|
|
|
- **En-tête terrain** : nom, ELEV, TA (transition alt), TL (transition level),
|
|
RWY active + « change RWY », sélecteur SID/STAR.
|
|
- **Météo** : rose des vents (orientation piste + vecteur vent + composantes),
|
|
tuiles WIND / VIS / QNH / TEMP-DEW, METAR + TAF (mise en évidence des
|
|
changements/éléments importants), refresh.
|
|
- **ATIS** décodé, avec source (SayIntentions / VATSIM / réel).
|
|
- **NOTAMs** : compteur total + CRITICAL/IMPORTANT, filtre « n'affectant que mon
|
|
vol », regroupement (YOUR FLIGHT / TAXIWAYS & GROUND / NAVAIDS & LIGHTING /
|
|
GENERAL), tags CHANGED / NOT AVAILABLE, dépliables.
|
|
- **NADP** (profil anti-bruit) + **EOSID** (engine-out SID).
|
|
- **Table pistes** : HDG, type d'approche, dimensions, THR ELEV, TORA/TODA/ASDA/LDA, marge.
|
|
- **Operational notes** : infos arrivée/départ/taxi spécifiques au terrain.
|
|
- **Crew briefing** : catégorie d'approche (CAT), threats (TEM).
|
|
- **ALT (déroutement)** : Divert plan — niveau, distance, fuel, ETE, route.
|
|
|
|
## 3. Écran ENROUTE (carte + profil vertical)
|
|
|
|
- **Carte mobile** avec la route tracée et les waypoints.
|
|
- **Couches** :
|
|
- Flight plan (route + waypoints)
|
|
- Météo : METARs, SIGMET, conditions de vol, vents ≥15kt, **radar de précip**
|
|
- Prévision WAFS : jet stream, turbulence, givrage, fronts
|
|
- Réseau online : ATC VATSIM, trafic, ma position
|
|
- Catégories de vol (VFR / MVFR / IFR / LIFR) avec compteurs + légende
|
|
- Vent surface (légende barbules)
|
|
- **Time scrubber** : LIVE + prévision (+6h … +36h).
|
|
- **Badges météo aéroports** (dispo GA/TAF/ATIS).
|
|
- **Profil vertical (type EWAS)** : bandes FL, vent/temp le long de la route,
|
|
terrain, waypoints avec distances cumulées, axe temps, FL de croisière surligné.
|
|
|
|
## 4. Écran CHARTS
|
|
|
|
- Intégration **ChartFox** (ou équivalent).
|
|
- Par terrain (DEP/ARR/ALT + ajout ICAO) : cartes groupées TAXI / SID / STAR /
|
|
APPROACH avec alternatives, tags « ON PLAN » / « GEO » (géo-référencé), épinglage.
|
|
- **Visionneuse** : zoom/fit/rotation/luminosité, overlay position live,
|
|
download, ouverture externe, barre d'onglets des cartes ouvertes.
|
|
|
|
---
|
|
|
|
## Validation IFPS (Eurocontrol) — « check IFPS fiable »
|
|
|
|
Objectif : savoir si une route serait **acceptée par l'IFPS** (Eurocontrol NM,
|
|
espace IFPZ européen). C'est demandé comme fonctionnalité *fiable*.
|
|
|
|
**Réalité à assumer :** un check IFPS *fiable* est **forcément online et
|
|
autoritatif**. Les règles à respecter incluent la connectivité point/airway, le
|
|
sens et la bande de FL des airways, les **RAD** (Route Availability Document :
|
|
routings obligatoires, DCT interdits, restrictions de flux, contraintes de
|
|
niveau par zone/horaire — change à chaque cycle AIRAC), les limites DCT en FRA,
|
|
la connexion SID/STAR au réseau, RVSM, etc. Reproduire tout cela **hors ligne**
|
|
ne peut pas être « fiable » : on courrait derrière le ruleset Eurocontrol.
|
|
|
|
**Conception en deux couches :**
|
|
|
|
1. **Validateur autoritatif (online, post-MVP)** — la seule source *fiable* :
|
|
- **Eurocontrol NM B2B** service `flightPlanValidation` (nécessite un compte
|
|
NM + certificat, réservé AO/CFSP) — référence absolue.
|
|
- Alternative : **Autorouter** (fait une vraie validation IFPS) ou portail NOP
|
|
(manuel). Renvoie accepté/refusé + messages IFPS (ERROUTxxx, PROF…).
|
|
- Exposé via un trait `providers::IfpsValidator` ; impl online activable.
|
|
|
|
2. **Pré-validateur structurel (offline, faisable dans `core`)** — *best-effort,
|
|
non autoritatif*, pour attraper les erreurs évidentes avant soumission :
|
|
- chaque point de la route existe et est bien sur l'airway cité ;
|
|
- sens d'airway (N/F/B) respecté ;
|
|
- FL de croisière dans la bande `base_fl…top_fl` du segment ;
|
|
- DCT « raisonnables » (longueur, hors FRA) ;
|
|
- continuité de la séquence (pas de trou entre segments).
|
|
Résultat étiqueté clairement « pré-check local, non IFPS-officiel ».
|
|
|
|
> Décision requise : cible du validateur autoritatif (NM B2B vs Autorouter) et
|
|
> accès/credentials disponibles. En attendant, le pré-validateur offline apporte
|
|
> déjà de la valeur et alimentera la même API `IfpsResult { accepted, errors,
|
|
> warnings }`.
|
|
|
|
## Priorisation suggérée (post-MVP)
|
|
|
|
1. **OFP builder + écran Briefing texte** (n'a besoin que de core : route + perf).
|
|
Faisable offline, prolonge directement l'étape 5 (OFP).
|
|
2. **UI web locale** (Axum) réutilisant l'OFP builder — pages statiques d'abord.
|
|
3. **Providers online optionnels** : météo (METAR/TAF) → NOTAM → WAFS → réseau
|
|
VATSIM → ChartFox, dans cet ordre de valeur/effort.
|
|
4. **Écran Enroute (carte + profil vertical)** — le plus lourd, en dernier.
|
|
|
|
[`TODO.md`]: ./TODO.md
|