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

[017] Pilot's Logbook (MVP)

オープン
#17 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
言語のデータがありません
スター
2
フォーク
0
PR マージ指標
30日以内にマージされた PR はありません

説明

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

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

調査の方向性

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.

索引モデルが issue の本文から書いたものです。

評価

技術スタック
python
領域
api, backend
issue の種類
機能追加
難易度
5/5
見積もり時間
1週間以上
活発さ
静か
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。