estimateArrivalTimesをtrainRouteのEstimatedと同じ計算にし、経路検索は元の計算のまま残した - #1715
Conversation
…edRoutesは元の計算のまま残した Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Essentials Run ID: 📒 Files selected for processing (15)
Included review availability: This review used your included allowance. 2 included reviews remain after this review. Your included PR review attempts over the past 7 days set your current allowance at 3 reviews per hour. 📝 WalkthroughWalkthrough到着時刻推定と Changes到着時刻推定
Priority: ➖ Normal Estimated code review effort: 3 (Moderate) | ~20 minutes Change: Bug fix Merge Risk: ⚪ Minimal · up to The change aligns arrival estimates with trainRoute’s Estimated model while preserving route-search calculations and Legacy behavior. No actionable merge-blocking issue is established by the supplied evidence; merge after normal checks pass. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
うさぎは線路の距離をたどる Comment |
概要
estimateArrivalTimesを、trainRouteのEstimatedと同じ計算にしました。駅間の距離に線路の長さを使い、その距離で求め直した較正(#1712)で推定します。legsのあり・なしの両方が対象です。MobileApp のオートモードと GPX の生成は、
Estimatedの見込みで走るようになります(TrainLCD/MobileApp 側の PR)。この PR で ETA も同じ値になるので、オートモード・ETA・GPX の所要時間がそろいます。経路検索(
connectedRoutes)は、元の計算のままです。探索の結果と並び順は変わりません。trainRouteのLegacyも変えていません。配布済みのアプリのオートモードが使い続けるためです。変更の種類
変更内容
query.rs)estimateArrivalTimes(legsなし)は、系統ごとに線路の長さを引き、求め直した較正で推定します。estimate_legsから、較正と距離を切り替える引数を外しました。estimateArrivalTimesのlegsとtrainRouteのEstimatedは、同じ計算を通ります。estimated_model_paramsをarrival_estimation_paramsに改名しました。connectedRoutesの系統網は、これまでどおり元の較正と直線距離 × 迂回係数で組み立てます。コードは変えていません。ArrivalTimeの並べ替えに使う値)と ETA は一致しなくなります。ConnectedRouteSort::ArrivalTimeとJourneySort::ArrivalTimeの説明を直しました。estimateArrivalTimes(legsなし)で、系統ごとに隣り合う駅の組の線路の長さを引くようになりました。埋め込みの表(connections.bin)を二分探索するだけなので、系統の駅数を n、表の行数を m として O(n log m) 増えます。legsありとEstimatedは、これまでも同じ処理をしていました。connected_route_eta_and_train_route_follow_the_legs(stationsByNameでfromStationGroupId指定時に乗換で行ける駅も返すようにした #1687)から、「ETA の終点が探索の所要時間と 1 分以内で一致する」という検査を外しました。駅の並びが探索と一致すること、見込みが減らないことの検査は残しています。estimated_connected_train_route_carries_the_estimate_arrival_timesとestimated_train_route_matches_a_single_leg_estimateは、Estimatedの見込みがestimateArrivalTimesと完全に一致することを確かめる形に戻しました(trainRouteに到着時間推定のモデルで区間の値を返すEstimatedモードを追加 #1710 と同じ保証)。AGENTS.md、docs/architecture.md、scripts/README.md、travel_times/README.md、各テーブルの先頭のコメントを、ETA も求め直した較正を使う形に直しました。Estimatedを測ります。Estimatedの値は変わらないので、記録(baseline.csv)は更新していません。本番との比較
このブランチをローカルの Worker で起動し、本番に同じ問い合わせを送って比べました。問い合わせは、無作為に選んだ 60 の種別グループと、その始点・終点の駅グループの組から作りました。
trainRouteのLegacyconnectedRoutes(30 組 × 並べ方 3 通り)estimateArrivalTimes(MobileApp と同じ引数)とtrainRouteのEstimatedlegsを渡したestimateArrivalTimesとtrainRouteのEstimated環状線(山手線 363、大阪環状線の普通 686、都営大江戸線 1000099301)も、格納順と逆順の両方向で、ETA と
Estimatedの見込みが一致しました。Legacyは本番と一致しました。ETA は意図して変えています。比べた 60 件では、終点の見込みがすべて変わりました。変化は平均 2.4%、最大 15.3% です。
テスト
make fmtが通ることmake clippyが通ること(wasm32 ターゲットを含む)make testが通ることcargo fmt --all -- --check、make clippy、make testを実行し、すべて成功しました(stationapi 443 件、stationapi-worker 28 件ほか、失敗なし)。generated/がある状態で実行しています。関連Issue
Refs #1710, #1712, #1714
スクリーンショット(任意)
🤖 Generated with Claude Code
Summary by CodeRabbit
trainRouteの「Estimated」モデルで、線路距離と再較正済み速度を使った推定結果が一貫するようになりました。connectedRoutesとtrainRouteの「Legacy」モデルは従来の所要時間推定を維持します。