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

[017] Pilot's Logbook (MVP)

Abierto
#17 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Sin datos de lenguaje
Estrellas
2
Forks
0
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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).

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

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.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python
Área
api, backend
Tipo de issue
Nueva funcionalidad
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Tranquilo
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.