背景
GetConnectedRoutes(GetConnectedStationsRequest) -> RouteResponse が定義されているが、QueryInteractor::get_connected_stations は常に空配列を返す未実装状態になっている。
現在駅から目的駅まで単一の列車種別では到達できない場合も、複数の列車種別を跨ぐ経路候補を取得できるようにする。
実装する仕様
from_station_group_id から to_station_group_id まで、列車種別を1つ以上用いる経路を探索する
- 単一種別で到達できない場合も探索を終了せず、ある種別の終点と次の種別の始発が同じ駅グループである組み合わせを辿る
- 2種別に限定せず、複数回の連結を扱えるようにする
- 列車種別ごとの駅順・方向を維持し、接続駅の重複を除いた1本の駅列として
Route.stops を返す
- 連結した各区間の停車情報(
stop_condition など)を失わない
- 連結経路ごとに、既存の
line_group_cd と衝突しない一意な仮想 lineGroupId を生成する
- 返却する経路内の全駅について
station.train_type.group_id を同じ仮想 lineGroupId に統一する
- 同じ経路からは同じIDが得られる決定的な生成方法にし、異なる候補経路には異なるIDを付ける
- 到達経路がない場合は、空の
routes を返す。空の stops を持つダミー経路は返さない
- 循環参照を防ぎ、探索範囲・計算量に上限を設ける
実装範囲
QueryInteractor::get_connected_stations の実装
- 経路探索に必要なRepository APIとPostgreSQL実装の追加
GetConnectedRoutes のpresentation層を、複数の経路候補と経路ごとの仮想IDを正しく返せる構造へ修正
- 必要な場合は
TrainLCD/gRPCProto のレスポンス型を更新し、StationAPIのsubmodule参照も更新
- AGENTS.md / README / architecture資料の未実装記述を更新
受け入れ条件
背景
GetConnectedRoutes(GetConnectedStationsRequest) -> RouteResponseが定義されているが、QueryInteractor::get_connected_stationsは常に空配列を返す未実装状態になっている。現在駅から目的駅まで単一の列車種別では到達できない場合も、複数の列車種別を跨ぐ経路候補を取得できるようにする。
実装する仕様
from_station_group_idからto_station_group_idまで、列車種別を1つ以上用いる経路を探索するRoute.stopsを返すstop_conditionなど)を失わないline_group_cdと衝突しない一意な仮想lineGroupIdを生成するstation.train_type.group_idを同じ仮想lineGroupIdに統一するroutesを返す。空のstopsを持つダミー経路は返さない実装範囲
QueryInteractor::get_connected_stationsの実装GetConnectedRoutesのpresentation層を、複数の経路候補と経路ごとの仮想IDを正しく返せる構造へ修正TrainLCD/gRPCProtoのレスポンス型を更新し、StationAPIのsubmodule参照も更新受け入れ条件
train_type.group_idが同じ値になるlineGroupIdが既存IDおよび別経路のIDと衝突しないcargo fmt/cargo clippy --all-targets --all-featuresが成功する