JetBrains-Research / JetBrains-Research/Python-Solution-Preference

[017] Pilot's Logbook (MVP)

Aperta
#17 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Nessun dato sulla lingua
Stelle
2
Fork
0
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

OVERVIEW
Single-user pilot logbook to record flights and view analytics and currency status. All dates/times are Zulu (UTC). Future dates are not allowed.

Build this as a Python backend service with no UI; expose the functionality below through an HTTP API.

AIRCRAFT MANAGEMENT

Fields:
- Registration/Tail No. (required), Make/Model (required), Category (required), Class (required)
- Type Designator (optional), Flags: Type rating required, Complex, High-performance, Tailwheel, Turbine
- If "Type rating required" is true, Type Designator becomes required

Categories and Classes:
- Airplane: SEL, SES, MEL, MES
- Rotorcraft: Helicopter, Gyroplane
- Glider: Glider

Uniqueness: Registration/Tail checked canonically (uppercase, spaces/hyphens removed). Stored data preserves user's original formatting.

Status: Aircraft default to Active. User can archive (set Inactive) or unarchive (set Active) aircraft. Inactive aircraft cannot be selected for new flights but remain on existing flights.

FLIGHT LOGGING

Fields:
- Date (required; today or earlier in Zulu)
- Aircraft (Active aircraft only)
- Route: Departure (required), Arrival (required), Via (optional); free text
- Times (decimal hours, must be multiples of 0.1): Total Time (required, > 0), Day Time, Night Time, PIC, SIC, Dual Given, Dual Received, Cross-country, Actual Instrument, Simulated Instrument
- Counts (non-negative integers): Day Takeoffs, Day Landings, Night Takeoffs, Night Landings, Instrument Approaches
- IFR tasks (booleans): Holds performed, Intercept/Track performed
- Notes (optional)

Validation:
- Day Time + Night Time must equal Total Time exactly
- Actual Instrument + Simulated Instrument ≤ Total Time
- PIC and SIC cannot both be > 0; their sum ≤ Total Time
- Dual Given and Dual Received cannot both be > 0; each ≤ Total Time
- Cross-country ≤ Total Time
- All times ≥ 0 and in 0.1 hr increments

Edit Flight: Allowed if aircraft is Inactive (without changing aircraft). Changing aircraft requires selecting an Active one.

Delete Flight: Permanently removes the flight from the logbook.

LOGBOOK LISTING & FILTERS

Default: most recent flights first.

Filters (combine with AND logic):
- Date range (inclusive)
- Aircraft (multi-select)
- Category/Class
- Text search across Route fields and Notes (case-insensitive substring)

Filters can be reused with Analytics.

ANALYTICS & CURRENCY

Totals:
- Presets: Last 90 days, Last 6 months, Last 12 months; or Custom range
- Metrics: Total Time, PIC, SIC, Night, Actual/Simulated Instrument, Cross-country, Approaches, Day/Night Takeoffs/Landings
- Group by: Overall, Category/Class, Make/Model

Day/Night Currency (per Category/Class; also per Type Designator when "Type rating required"):
- Window: last 90 days inclusive (flight date ≥ today − 89 days and ≤ today)
- Requirement: ≥ 3 takeoffs AND ≥ 3 landings
- Report: Current/Not Current with counts (e.g., "Day TO 2/3; Day LDG 4/3")

Instrument Currency (per Category):
- Window: 6 calendar months ending with current month (whole months). Example: 2025-11-11 → window is 2025-06-01 through 2025-11-30
- Requirement: ≥ 6 approaches AND at least one Holds performed AND at least one Intercept/Track performed

Currency results appear only for Category/Class combinations with at least one flight.

EXPORT

Scope: All flights or current filtered set. Output as CSV.

Format: UTF-8, comma-delimited, header row. Dates as YYYY-MM-DD, times with one decimal, counts as integers, booleans as true/false. Each row includes flight fields plus aircraft attributes (preserving Registration/Tail formatting). Reflects current aircraft data (edits apply retroactively).

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

The payload names no files, tests, or existing HTTP entry points, so repository conventions must be identified before implementation. Done means the backend supports aircraft and flight management, validation, listing and filters, analytics and currency calculations, and CSV export as specified.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
python
Ambito
api, backend
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Tranquilla
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.