Fuel-aware trade routes, trade routes table, player machine tests
Trade route selection became fuel-aware, and the rest of the week went into refactoring for testability.
Added 3
- Player machine tests
- Trade routes table with profitability and ship assignments
- Flight time in CSV exports
Changed 7
- Buy-and-upgrade flow extracted to its own machine
- Data modules split by concern
- Global state removed for testability
- Database and request logic extracted to modules
- Empty trade routes deleted automatically
- Route profit accounts for fuel cost and availability
- Trade records include quantity and ship type
Fixed 1
- Closest location selection in route ranking