From 5a22ac5a10aeae8dec05a559965ca13a729e68bd Mon Sep 17 00:00:00 2001 From: Tsubasa SEKIGUCHI Date: Wed, 21 Oct 2026 00:01:22 +0900 Subject: [PATCH] =?UTF-8?q?=E9=B9=BF=E5=85=90=E5=B3=B6=E6=9C=AC=E7=B7=9A?= =?UTF-8?q?=E3=81=AE=E5=8C=BA=E9=96=93=E5=BF=AB=E9=80=9F=E3=82=92=E5=81=9C?= =?UTF-8?q?=E8=BB=8A=E3=83=91=E3=82=BF=E3=83=BC=E3=83=B3=E5=88=A5=E3=81=AB?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/4!types.csv | 7 + data/5!station_station_types.csv | 379 ++++++++++++ data/README.md | 4 + .../fixtures/kagoshima_sectional_rapid.csv | 568 ++++++++++++++++++ .../tests/kagoshima_sectional_rapid.rs | 90 +++ docs/kagoshima-sectional-rapid.md | 31 + 6 files changed, 1079 insertions(+) create mode 100644 data_validator/tests/fixtures/kagoshima_sectional_rapid.csv create mode 100644 data_validator/tests/kagoshima_sectional_rapid.rs create mode 100644 docs/kagoshima-sectional-rapid.md diff --git a/data/4!types.csv b/data/4!types.csv index ef3cf3e4..2587f9f1 100644 --- a/data/4!types.csv +++ b/data/4!types.csv @@ -318,3 +318,10 @@ DEFAULT,541,GRAN 天空,グランテンクウ,GRAN Tenkū,GRAN 天空,GRAN 텐 DEFAULT,542,みすず,ミスズ,Misuzu,水篶,미스즈,#DC143C,2,2,0,長野方面,COMPLETE DEFAULT,543,みすず,ミスズ,Misuzu,水篶,미스즈,#DC143C,1,2,0,飯田方面,COMPLETE DEFAULT,544,-急行-,キュウコウ,Express,-特快-,-급행-,#F7931D,2,3,0,南海電車用(白線急行),COMPLETE +DEFAULT,545,区間快速(福間~博多間快速),クカンカイソク,Regional Rapid(Fukuma–Hakata),区间快速(福间~博多间快速),구간쾌속(후쿠마~하카타 구간 쾌속),#DC143C,1,2,0,鹿児島本線,COMPLETE +DEFAULT,546,区間快速(福間~二日市間快速),クカンカイソク,Regional Rapid(Fukuma–Futsukaichi),区间快速(福间~二日市间快速),구간쾌속(후쿠마~후쓰카이치 구간 쾌속),#DC143C,0,2,0,鹿児島本線,COMPLETE +DEFAULT,547,区間快速(福間~鳥栖間快速),クカンカイソク,Regional Rapid(Fukuma–Tosu),区间快速(福间~鸟栖间快速),구간쾌속(후쿠마~도스 구간 쾌속),#DC143C,0,2,0,鹿児島本線,COMPLETE +DEFAULT,548,区間快速(福間~鳥栖間快速・南福岡~博多間各駅停車),クカンカイソク,Regional Rapid(Fukuma–Tosu; local Minami-Fukuoka–Hakata),区间快速(福间~鸟栖间快速・南福冈~博多间各站停车),구간쾌속(후쿠마~도스 구간 쾌속・미나미후쿠오카~하카타 각역정차),#DC143C,0,2,0,鹿児島本線,COMPLETE +DEFAULT,549,区間快速(折尾~鳥栖間快速),クカンカイソク,Regional Rapid(Orio–Tosu),区间快速(折尾~鸟栖间快速),구간쾌속(오리오~도스 구간 쾌속),#DC143C,1,2,0,鹿児島本線,COMPLETE +DEFAULT,550,区間快速(折尾~羽犬塚間快速),クカンカイソク,Regional Rapid(Orio–Hainuzuka),区间快速(折尾~羽犬塚间快速),구간쾌속(오리오~하이누즈카 구간 쾌속),#DC143C,1,2,0,鹿児島本線,COMPLETE +DEFAULT,551,区間快速(福間~羽犬塚間快速),クカンカイソク,Regional Rapid(Fukuma–Hainuzuka),区间快速(福间~羽犬塚间快速),구간쾌속(후쿠마~하이누즈카 구간 쾌속),#DC143C,1,2,0,鹿児島本線,COMPLETE diff --git a/data/5!station_station_types.csv b/data/5!station_station_types.csv index 1ea33de1..c2527677 100644 --- a/data/5!station_station_types.csv +++ b/data/5!station_station_types.csv @@ -42025,3 +42025,382 @@ DEFAULT,2400304,413,1188,0,めじろ台 DEFAULT,2400305,413,1188,1,狭間 DEFAULT,2400306,413,1188,0,高尾 DEFAULT,2400307,413,1188,0,高尾山口 +DEFAULT,1190202,545,1189,0,門司港 +DEFAULT,1190203,545,1189,0,小森江 +DEFAULT,1190204,545,1189,0,門司 +DEFAULT,1190205,545,1189,0,小倉 +DEFAULT,1190206,545,1189,0,西小倉 +DEFAULT,1190207,545,1189,0,九州工大前 +DEFAULT,1190208,545,1189,0,戸畑 +DEFAULT,1190209,545,1189,0,枝光 +DEFAULT,1190210,545,1189,0,スペースワールド +DEFAULT,1190211,545,1189,0,八幡 +DEFAULT,1190212,545,1189,0,黒崎 +DEFAULT,1190213,545,1189,0,陣原 +DEFAULT,1190214,545,1189,0,折尾 +DEFAULT,1190215,545,1189,0,水巻 +DEFAULT,1190216,545,1189,0,遠賀川 +DEFAULT,1190217,545,1189,0,海老津 +DEFAULT,1190218,545,1189,0,教育大前 +DEFAULT,1190219,545,1189,0,赤間 +DEFAULT,1190220,545,1189,0,東郷 +DEFAULT,1190221,545,1189,0,東福間 +DEFAULT,1190222,545,1189,0,福間 +DEFAULT,1190223,545,1189,1,千鳥 +DEFAULT,1190224,545,1189,0,古賀 +DEFAULT,1190232,545,1189,1,ししぶ +DEFAULT,1190233,545,1189,1,新宮中央 +DEFAULT,1190225,545,1189,0,福工大前 +DEFAULT,1190226,545,1189,1,九産大前 +DEFAULT,1190227,545,1189,0,香椎 +DEFAULT,1190228,545,1189,0,千早 +DEFAULT,1190229,545,1189,1,箱崎 +DEFAULT,1190230,545,1189,0,吉塚 +DEFAULT,1190231,545,1189,0,博多 +DEFAULT,1190202,546,1190,0,門司港 +DEFAULT,1190203,546,1190,0,小森江 +DEFAULT,1190204,546,1190,0,門司 +DEFAULT,1190205,546,1190,0,小倉 +DEFAULT,1190206,546,1190,0,西小倉 +DEFAULT,1190207,546,1190,0,九州工大前 +DEFAULT,1190208,546,1190,0,戸畑 +DEFAULT,1190209,546,1190,0,枝光 +DEFAULT,1190210,546,1190,0,スペースワールド +DEFAULT,1190211,546,1190,0,八幡 +DEFAULT,1190212,546,1190,0,黒崎 +DEFAULT,1190213,546,1190,0,陣原 +DEFAULT,1190214,546,1190,0,折尾 +DEFAULT,1190215,546,1190,0,水巻 +DEFAULT,1190216,546,1190,0,遠賀川 +DEFAULT,1190217,546,1190,0,海老津 +DEFAULT,1190218,546,1190,0,教育大前 +DEFAULT,1190219,546,1190,0,赤間 +DEFAULT,1190220,546,1190,0,東郷 +DEFAULT,1190221,546,1190,0,東福間 +DEFAULT,1190222,546,1190,0,福間 +DEFAULT,1190223,546,1190,1,千鳥 +DEFAULT,1190224,546,1190,0,古賀 +DEFAULT,1190232,546,1190,1,ししぶ +DEFAULT,1190233,546,1190,1,新宮中央 +DEFAULT,1190225,546,1190,0,福工大前 +DEFAULT,1190226,546,1190,1,九産大前 +DEFAULT,1190227,546,1190,0,香椎 +DEFAULT,1190228,546,1190,0,千早 +DEFAULT,1190229,546,1190,1,箱崎 +DEFAULT,1190230,546,1190,0,吉塚 +DEFAULT,1190231,546,1190,0,博多 +DEFAULT,1190301,546,1190,0,博多 +DEFAULT,1190302,546,1190,1,竹下 +DEFAULT,1190303,546,1190,1,笹原 +DEFAULT,1190304,546,1190,0,南福岡 +DEFAULT,1190305,546,1190,1,春日 +DEFAULT,1190306,546,1190,0,大野城 +DEFAULT,1190307,546,1190,1,水城 +DEFAULT,1190308,546,1190,1,都府楼南 +DEFAULT,1190309,546,1190,0,二日市 +DEFAULT,1190310,546,1190,0,天拝山 +DEFAULT,1190311,546,1190,0,原田 +DEFAULT,1190312,546,1190,0,けやき台 +DEFAULT,1190313,546,1190,0,基山 +DEFAULT,1190314,546,1190,0,弥生が丘 +DEFAULT,1190315,546,1190,0,田代 +DEFAULT,1190316,546,1190,0,鳥栖 +DEFAULT,1190317,546,1190,0,肥前旭 +DEFAULT,1190318,546,1190,0,久留米 +DEFAULT,1190319,546,1190,0,荒木 +DEFAULT,1190320,546,1190,0,西牟田 +DEFAULT,1190321,546,1190,0,羽犬塚 +DEFAULT,1190322,546,1190,0,筑後船小屋 +DEFAULT,1190323,546,1190,0,瀬高 +DEFAULT,1190324,546,1190,0,南瀬高 +DEFAULT,1190325,546,1190,0,渡瀬 +DEFAULT,1190326,546,1190,0,吉野 +DEFAULT,1190327,546,1190,0,銀水 +DEFAULT,1190328,546,1190,0,大牟田 +DEFAULT,1190329,546,1190,0,荒尾 +DEFAULT,1190202,547,1191,0,門司港 +DEFAULT,1190203,547,1191,0,小森江 +DEFAULT,1190204,547,1191,0,門司 +DEFAULT,1190205,547,1191,0,小倉 +DEFAULT,1190206,547,1191,0,西小倉 +DEFAULT,1190207,547,1191,0,九州工大前 +DEFAULT,1190208,547,1191,0,戸畑 +DEFAULT,1190209,547,1191,0,枝光 +DEFAULT,1190210,547,1191,0,スペースワールド +DEFAULT,1190211,547,1191,0,八幡 +DEFAULT,1190212,547,1191,0,黒崎 +DEFAULT,1190213,547,1191,0,陣原 +DEFAULT,1190214,547,1191,0,折尾 +DEFAULT,1190215,547,1191,0,水巻 +DEFAULT,1190216,547,1191,0,遠賀川 +DEFAULT,1190217,547,1191,0,海老津 +DEFAULT,1190218,547,1191,0,教育大前 +DEFAULT,1190219,547,1191,0,赤間 +DEFAULT,1190220,547,1191,0,東郷 +DEFAULT,1190221,547,1191,0,東福間 +DEFAULT,1190222,547,1191,0,福間 +DEFAULT,1190223,547,1191,1,千鳥 +DEFAULT,1190224,547,1191,0,古賀 +DEFAULT,1190232,547,1191,1,ししぶ +DEFAULT,1190233,547,1191,1,新宮中央 +DEFAULT,1190225,547,1191,0,福工大前 +DEFAULT,1190226,547,1191,1,九産大前 +DEFAULT,1190227,547,1191,0,香椎 +DEFAULT,1190228,547,1191,0,千早 +DEFAULT,1190229,547,1191,1,箱崎 +DEFAULT,1190230,547,1191,0,吉塚 +DEFAULT,1190231,547,1191,0,博多 +DEFAULT,1190301,547,1191,0,博多 +DEFAULT,1190302,547,1191,1,竹下 +DEFAULT,1190303,547,1191,1,笹原 +DEFAULT,1190304,547,1191,0,南福岡 +DEFAULT,1190305,547,1191,1,春日 +DEFAULT,1190306,547,1191,0,大野城 +DEFAULT,1190307,547,1191,1,水城 +DEFAULT,1190308,547,1191,1,都府楼南 +DEFAULT,1190309,547,1191,0,二日市 +DEFAULT,1190310,547,1191,1,天拝山 +DEFAULT,1190311,547,1191,0,原田 +DEFAULT,1190312,547,1191,1,けやき台 +DEFAULT,1190313,547,1191,0,基山 +DEFAULT,1190314,547,1191,1,弥生が丘 +DEFAULT,1190315,547,1191,1,田代 +DEFAULT,1190316,547,1191,0,鳥栖 +DEFAULT,1190317,547,1191,0,肥前旭 +DEFAULT,1190318,547,1191,0,久留米 +DEFAULT,1190319,547,1191,0,荒木 +DEFAULT,1190320,547,1191,0,西牟田 +DEFAULT,1190321,547,1191,0,羽犬塚 +DEFAULT,1190322,547,1191,0,筑後船小屋 +DEFAULT,1190323,547,1191,0,瀬高 +DEFAULT,1190324,547,1191,0,南瀬高 +DEFAULT,1190325,547,1191,0,渡瀬 +DEFAULT,1190326,547,1191,0,吉野 +DEFAULT,1190327,547,1191,0,銀水 +DEFAULT,1190328,547,1191,0,大牟田 +DEFAULT,1190329,547,1191,0,荒尾 +DEFAULT,1190202,548,1192,0,門司港 +DEFAULT,1190203,548,1192,0,小森江 +DEFAULT,1190204,548,1192,0,門司 +DEFAULT,1190205,548,1192,0,小倉 +DEFAULT,1190206,548,1192,0,西小倉 +DEFAULT,1190207,548,1192,0,九州工大前 +DEFAULT,1190208,548,1192,0,戸畑 +DEFAULT,1190209,548,1192,0,枝光 +DEFAULT,1190210,548,1192,0,スペースワールド +DEFAULT,1190211,548,1192,0,八幡 +DEFAULT,1190212,548,1192,0,黒崎 +DEFAULT,1190213,548,1192,0,陣原 +DEFAULT,1190214,548,1192,0,折尾 +DEFAULT,1190215,548,1192,0,水巻 +DEFAULT,1190216,548,1192,0,遠賀川 +DEFAULT,1190217,548,1192,0,海老津 +DEFAULT,1190218,548,1192,0,教育大前 +DEFAULT,1190219,548,1192,0,赤間 +DEFAULT,1190220,548,1192,0,東郷 +DEFAULT,1190221,548,1192,0,東福間 +DEFAULT,1190222,548,1192,0,福間 +DEFAULT,1190223,548,1192,1,千鳥 +DEFAULT,1190224,548,1192,0,古賀 +DEFAULT,1190232,548,1192,1,ししぶ +DEFAULT,1190233,548,1192,1,新宮中央 +DEFAULT,1190225,548,1192,0,福工大前 +DEFAULT,1190226,548,1192,1,九産大前 +DEFAULT,1190227,548,1192,0,香椎 +DEFAULT,1190228,548,1192,0,千早 +DEFAULT,1190229,548,1192,1,箱崎 +DEFAULT,1190230,548,1192,0,吉塚 +DEFAULT,1190231,548,1192,0,博多 +DEFAULT,1190301,548,1192,0,博多 +DEFAULT,1190302,548,1192,0,竹下 +DEFAULT,1190303,548,1192,0,笹原 +DEFAULT,1190304,548,1192,0,南福岡 +DEFAULT,1190305,548,1192,1,春日 +DEFAULT,1190306,548,1192,0,大野城 +DEFAULT,1190307,548,1192,1,水城 +DEFAULT,1190308,548,1192,1,都府楼南 +DEFAULT,1190309,548,1192,0,二日市 +DEFAULT,1190310,548,1192,1,天拝山 +DEFAULT,1190311,548,1192,0,原田 +DEFAULT,1190312,548,1192,1,けやき台 +DEFAULT,1190313,548,1192,0,基山 +DEFAULT,1190314,548,1192,1,弥生が丘 +DEFAULT,1190315,548,1192,1,田代 +DEFAULT,1190316,548,1192,0,鳥栖 +DEFAULT,1190317,548,1192,0,肥前旭 +DEFAULT,1190318,548,1192,0,久留米 +DEFAULT,1190319,548,1192,0,荒木 +DEFAULT,1190320,548,1192,0,西牟田 +DEFAULT,1190321,548,1192,0,羽犬塚 +DEFAULT,1190322,548,1192,0,筑後船小屋 +DEFAULT,1190323,548,1192,0,瀬高 +DEFAULT,1190324,548,1192,0,南瀬高 +DEFAULT,1190325,548,1192,0,渡瀬 +DEFAULT,1190326,548,1192,0,吉野 +DEFAULT,1190327,548,1192,0,銀水 +DEFAULT,1190328,548,1192,0,大牟田 +DEFAULT,1190329,548,1192,0,荒尾 +DEFAULT,1190202,549,1193,0,門司港 +DEFAULT,1190203,549,1193,0,小森江 +DEFAULT,1190204,549,1193,0,門司 +DEFAULT,1190205,549,1193,0,小倉 +DEFAULT,1190206,549,1193,0,西小倉 +DEFAULT,1190207,549,1193,0,九州工大前 +DEFAULT,1190208,549,1193,0,戸畑 +DEFAULT,1190209,549,1193,0,枝光 +DEFAULT,1190210,549,1193,0,スペースワールド +DEFAULT,1190211,549,1193,0,八幡 +DEFAULT,1190212,549,1193,0,黒崎 +DEFAULT,1190213,549,1193,0,陣原 +DEFAULT,1190214,549,1193,0,折尾 +DEFAULT,1190215,549,1193,1,水巻 +DEFAULT,1190216,549,1193,1,遠賀川 +DEFAULT,1190217,549,1193,0,海老津 +DEFAULT,1190218,549,1193,1,教育大前 +DEFAULT,1190219,549,1193,0,赤間 +DEFAULT,1190220,549,1193,0,東郷 +DEFAULT,1190221,549,1193,1,東福間 +DEFAULT,1190222,549,1193,0,福間 +DEFAULT,1190223,549,1193,1,千鳥 +DEFAULT,1190224,549,1193,0,古賀 +DEFAULT,1190232,549,1193,1,ししぶ +DEFAULT,1190233,549,1193,1,新宮中央 +DEFAULT,1190225,549,1193,0,福工大前 +DEFAULT,1190226,549,1193,1,九産大前 +DEFAULT,1190227,549,1193,0,香椎 +DEFAULT,1190228,549,1193,0,千早 +DEFAULT,1190229,549,1193,1,箱崎 +DEFAULT,1190230,549,1193,0,吉塚 +DEFAULT,1190231,549,1193,0,博多 +DEFAULT,1190301,549,1193,0,博多 +DEFAULT,1190302,549,1193,1,竹下 +DEFAULT,1190303,549,1193,1,笹原 +DEFAULT,1190304,549,1193,0,南福岡 +DEFAULT,1190305,549,1193,1,春日 +DEFAULT,1190306,549,1193,0,大野城 +DEFAULT,1190307,549,1193,1,水城 +DEFAULT,1190308,549,1193,1,都府楼南 +DEFAULT,1190309,549,1193,0,二日市 +DEFAULT,1190310,549,1193,1,天拝山 +DEFAULT,1190311,549,1193,0,原田 +DEFAULT,1190312,549,1193,1,けやき台 +DEFAULT,1190313,549,1193,0,基山 +DEFAULT,1190314,549,1193,1,弥生が丘 +DEFAULT,1190315,549,1193,1,田代 +DEFAULT,1190316,549,1193,0,鳥栖 +DEFAULT,1190317,549,1193,0,肥前旭 +DEFAULT,1190318,549,1193,0,久留米 +DEFAULT,1190319,549,1193,0,荒木 +DEFAULT,1190320,549,1193,0,西牟田 +DEFAULT,1190321,549,1193,0,羽犬塚 +DEFAULT,1190322,549,1193,0,筑後船小屋 +DEFAULT,1190323,549,1193,0,瀬高 +DEFAULT,1190324,549,1193,0,南瀬高 +DEFAULT,1190325,549,1193,0,渡瀬 +DEFAULT,1190326,549,1193,0,吉野 +DEFAULT,1190327,549,1193,0,銀水 +DEFAULT,1190328,549,1193,0,大牟田 +DEFAULT,1190329,549,1193,0,荒尾 +DEFAULT,1190202,550,1194,0,門司港 +DEFAULT,1190203,550,1194,0,小森江 +DEFAULT,1190204,550,1194,0,門司 +DEFAULT,1190205,550,1194,0,小倉 +DEFAULT,1190206,550,1194,0,西小倉 +DEFAULT,1190207,550,1194,0,九州工大前 +DEFAULT,1190208,550,1194,0,戸畑 +DEFAULT,1190209,550,1194,0,枝光 +DEFAULT,1190210,550,1194,0,スペースワールド +DEFAULT,1190211,550,1194,0,八幡 +DEFAULT,1190212,550,1194,0,黒崎 +DEFAULT,1190213,550,1194,0,陣原 +DEFAULT,1190214,550,1194,0,折尾 +DEFAULT,1190215,550,1194,1,水巻 +DEFAULT,1190216,550,1194,1,遠賀川 +DEFAULT,1190217,550,1194,0,海老津 +DEFAULT,1190218,550,1194,1,教育大前 +DEFAULT,1190219,550,1194,0,赤間 +DEFAULT,1190220,550,1194,0,東郷 +DEFAULT,1190221,550,1194,1,東福間 +DEFAULT,1190222,550,1194,0,福間 +DEFAULT,1190223,550,1194,1,千鳥 +DEFAULT,1190224,550,1194,0,古賀 +DEFAULT,1190232,550,1194,1,ししぶ +DEFAULT,1190233,550,1194,1,新宮中央 +DEFAULT,1190225,550,1194,0,福工大前 +DEFAULT,1190226,550,1194,1,九産大前 +DEFAULT,1190227,550,1194,0,香椎 +DEFAULT,1190228,550,1194,0,千早 +DEFAULT,1190229,550,1194,1,箱崎 +DEFAULT,1190230,550,1194,0,吉塚 +DEFAULT,1190231,550,1194,0,博多 +DEFAULT,1190301,550,1194,0,博多 +DEFAULT,1190302,550,1194,1,竹下 +DEFAULT,1190303,550,1194,1,笹原 +DEFAULT,1190304,550,1194,0,南福岡 +DEFAULT,1190305,550,1194,1,春日 +DEFAULT,1190306,550,1194,0,大野城 +DEFAULT,1190307,550,1194,1,水城 +DEFAULT,1190308,550,1194,1,都府楼南 +DEFAULT,1190309,550,1194,0,二日市 +DEFAULT,1190310,550,1194,1,天拝山 +DEFAULT,1190311,550,1194,0,原田 +DEFAULT,1190312,550,1194,1,けやき台 +DEFAULT,1190313,550,1194,0,基山 +DEFAULT,1190314,550,1194,1,弥生が丘 +DEFAULT,1190315,550,1194,1,田代 +DEFAULT,1190316,550,1194,0,鳥栖 +DEFAULT,1190317,550,1194,1,肥前旭 +DEFAULT,1190318,550,1194,0,久留米 +DEFAULT,1190319,550,1194,0,荒木 +DEFAULT,1190320,550,1194,1,西牟田 +DEFAULT,1190321,550,1194,0,羽犬塚 +DEFAULT,1190205,551,1195,0,小倉 +DEFAULT,1190206,551,1195,0,西小倉 +DEFAULT,1190207,551,1195,0,九州工大前 +DEFAULT,1190208,551,1195,0,戸畑 +DEFAULT,1190209,551,1195,0,枝光 +DEFAULT,1190210,551,1195,0,スペースワールド +DEFAULT,1190211,551,1195,0,八幡 +DEFAULT,1190212,551,1195,0,黒崎 +DEFAULT,1190213,551,1195,0,陣原 +DEFAULT,1190214,551,1195,0,折尾 +DEFAULT,1190215,551,1195,0,水巻 +DEFAULT,1190216,551,1195,0,遠賀川 +DEFAULT,1190217,551,1195,0,海老津 +DEFAULT,1190218,551,1195,0,教育大前 +DEFAULT,1190219,551,1195,0,赤間 +DEFAULT,1190220,551,1195,0,東郷 +DEFAULT,1190221,551,1195,0,東福間 +DEFAULT,1190222,551,1195,0,福間 +DEFAULT,1190223,551,1195,1,千鳥 +DEFAULT,1190224,551,1195,0,古賀 +DEFAULT,1190232,551,1195,1,ししぶ +DEFAULT,1190233,551,1195,1,新宮中央 +DEFAULT,1190225,551,1195,0,福工大前 +DEFAULT,1190226,551,1195,1,九産大前 +DEFAULT,1190227,551,1195,0,香椎 +DEFAULT,1190228,551,1195,0,千早 +DEFAULT,1190229,551,1195,1,箱崎 +DEFAULT,1190230,551,1195,0,吉塚 +DEFAULT,1190231,551,1195,0,博多 +DEFAULT,1190301,551,1195,0,博多 +DEFAULT,1190302,551,1195,1,竹下 +DEFAULT,1190303,551,1195,1,笹原 +DEFAULT,1190304,551,1195,0,南福岡 +DEFAULT,1190305,551,1195,1,春日 +DEFAULT,1190306,551,1195,0,大野城 +DEFAULT,1190307,551,1195,1,水城 +DEFAULT,1190308,551,1195,1,都府楼南 +DEFAULT,1190309,551,1195,0,二日市 +DEFAULT,1190310,551,1195,1,天拝山 +DEFAULT,1190311,551,1195,0,原田 +DEFAULT,1190312,551,1195,1,けやき台 +DEFAULT,1190313,551,1195,0,基山 +DEFAULT,1190314,551,1195,1,弥生が丘 +DEFAULT,1190315,551,1195,1,田代 +DEFAULT,1190316,551,1195,0,鳥栖 +DEFAULT,1190317,551,1195,1,肥前旭 +DEFAULT,1190318,551,1195,0,久留米 +DEFAULT,1190319,551,1195,0,荒木 +DEFAULT,1190320,551,1195,1,西牟田 +DEFAULT,1190321,551,1195,0,羽犬塚 diff --git a/data/README.md b/data/README.md index 3d51edd8..0b2c875f 100644 --- a/data/README.md +++ b/data/README.md @@ -319,3 +319,7 @@ preprocessor が国土数値情報の鉄道データ(N02)から自動で求 記載します。通過駅を停車駅へ変更する規則ではありません。 両ファイルを変更した場合は `cargo run -p data_validator` で参照 ID と重複を検査し、 Worker を再ビルドしてください。根拠は各行の `source` に記載します。 + +## 鹿児島本線の区間快速 + +快速運転区間ごとの系統と停車駅の出典は [鹿児島本線の区間快速](../docs/kagoshima-sectional-rapid.md) を参照してください。 diff --git a/data_validator/tests/fixtures/kagoshima_sectional_rapid.csv b/data_validator/tests/fixtures/kagoshima_sectional_rapid.csv new file mode 100644 index 00000000..69624682 --- /dev/null +++ b/data_validator/tests/fixtures/kagoshima_sectional_rapid.csv @@ -0,0 +1,568 @@ +line_group_cd,train,station_name,pass +1189,3126M,博多,0 +1189,3126M,吉塚,0 +1189,3126M,箱崎,1 +1189,3126M,千早,0 +1189,3126M,香椎,0 +1189,3126M,九産大前,1 +1189,3126M,福工大前,0 +1189,3126M,新宮中央,1 +1189,3126M,ししぶ,1 +1189,3126M,古賀,0 +1189,3126M,千鳥,1 +1189,3126M,福間,0 +1189,3126M,東福間,0 +1189,3126M,東郷,0 +1189,3126M,赤間,0 +1189,3126M,教育大前,0 +1189,3126M,海老津,0 +1189,3126M,遠賀川,0 +1189,3126M,水巻,0 +1189,3126M,折尾,0 +1189,3126M,陣原,0 +1189,3126M,黒崎,0 +1189,3126M,八幡,0 +1189,3126M,スペースワールド,0 +1189,3126M,枝光,0 +1189,3126M,戸畑,0 +1189,3126M,九州工大前,0 +1189,3126M,西小倉,0 +1189,3126M,小倉,0 +1189,3126M,門司,0 +1189,3126M,小森江,0 +1189,3126M,門司港,0 +1190,4127M,門司港,0 +1190,4127M,小森江,0 +1190,4127M,門司,0 +1190,4127M,小倉,0 +1190,4127M,西小倉,0 +1190,4127M,九州工大前,0 +1190,4127M,戸畑,0 +1190,4127M,枝光,0 +1190,4127M,スペースワールド,0 +1190,4127M,八幡,0 +1190,4127M,黒崎,0 +1190,4127M,陣原,0 +1190,4127M,折尾,0 +1190,4127M,水巻,0 +1190,4127M,遠賀川,0 +1190,4127M,海老津,0 +1190,4127M,教育大前,0 +1190,4127M,赤間,0 +1190,4127M,東郷,0 +1190,4127M,東福間,0 +1190,4127M,福間,0 +1190,4127M,千鳥,1 +1190,4127M,古賀,0 +1190,4127M,ししぶ,1 +1190,4127M,新宮中央,1 +1190,4127M,福工大前,0 +1190,4127M,九産大前,1 +1190,4127M,香椎,0 +1190,4127M,千早,0 +1190,4127M,箱崎,1 +1190,4127M,吉塚,0 +1190,4127M,博多,0 +1190,4127M,竹下,1 +1190,4127M,笹原,1 +1190,4127M,南福岡,0 +1190,4127M,春日,1 +1190,4127M,大野城,0 +1190,4127M,水城,1 +1190,4127M,都府楼南,1 +1190,4127M,二日市,0 +1190,4127M,天拝山,0 +1190,4127M,原田,0 +1190,4127M,けやき台,0 +1190,4127M,基山,0 +1190,4127M,弥生が丘,0 +1190,4127M,田代,0 +1190,4127M,鳥栖,0 +1190,4124M,久留米,0 +1190,4124M,肥前旭,0 +1190,4124M,鳥栖,0 +1190,4124M,田代,0 +1190,4124M,弥生が丘,0 +1190,4124M,基山,0 +1190,4124M,けやき台,0 +1190,4124M,原田,0 +1190,4124M,天拝山,0 +1190,4124M,二日市,0 +1190,4124M,都府楼南,1 +1190,4124M,水城,1 +1190,4124M,大野城,0 +1190,4124M,春日,1 +1190,4124M,南福岡,0 +1190,4124M,笹原,1 +1190,4124M,竹下,1 +1190,4124M,博多,0 +1190,4124M,吉塚,0 +1190,4124M,箱崎,1 +1190,4124M,千早,0 +1190,4124M,香椎,0 +1190,4124M,九産大前,1 +1190,4124M,福工大前,0 +1190,4124M,新宮中央,1 +1190,4124M,ししぶ,1 +1190,4124M,古賀,0 +1190,4124M,千鳥,1 +1190,4124M,福間,0 +1190,4124M,東福間,0 +1190,4124M,東郷,0 +1190,4124M,赤間,0 +1190,4124M,教育大前,0 +1190,4124M,海老津,0 +1190,4124M,遠賀川,0 +1190,4124M,水巻,0 +1190,4124M,折尾,0 +1190,4124M,陣原,0 +1190,4124M,黒崎,0 +1190,4124M,八幡,0 +1190,4124M,スペースワールド,0 +1190,4124M,枝光,0 +1190,4124M,戸畑,0 +1190,4124M,九州工大前,0 +1190,4124M,西小倉,0 +1190,4124M,小倉,0 +1190,4124M,門司,0 +1190,4124M,小森江,0 +1190,4124M,門司港,0 +1190,4159M,小倉,0 +1190,4159M,西小倉,0 +1190,4159M,九州工大前,0 +1190,4159M,戸畑,0 +1190,4159M,枝光,0 +1190,4159M,スペースワールド,0 +1190,4159M,八幡,0 +1190,4159M,黒崎,0 +1190,4159M,陣原,0 +1190,4159M,折尾,0 +1190,4159M,水巻,0 +1190,4159M,遠賀川,0 +1190,4159M,海老津,0 +1190,4159M,教育大前,0 +1190,4159M,赤間,0 +1190,4159M,東郷,0 +1190,4159M,東福間,0 +1190,4159M,福間,0 +1190,4159M,千鳥,1 +1190,4159M,古賀,0 +1190,4159M,ししぶ,1 +1190,4159M,新宮中央,1 +1190,4159M,福工大前,0 +1190,4159M,九産大前,1 +1190,4159M,香椎,0 +1190,4159M,千早,0 +1190,4159M,箱崎,1 +1190,4159M,吉塚,0 +1190,4159M,博多,0 +1190,4159M,竹下,1 +1190,4159M,笹原,1 +1190,4159M,南福岡,0 +1190,4159M,春日,1 +1190,4159M,大野城,0 +1190,4159M,水城,1 +1190,4159M,都府楼南,1 +1190,4159M,二日市,0 +1190,4159M,天拝山,0 +1190,4159M,原田,0 +1190,4159M,けやき台,0 +1190,4159M,基山,0 +1190,4159M,弥生が丘,0 +1190,4159M,田代,0 +1190,4159M,鳥栖,0 +1190,4159M,肥前旭,0 +1190,4159M,久留米,0 +1190,4159M,荒木,0 +1190,4159M,西牟田,0 +1190,4159M,羽犬塚,0 +1190,4159M,筑後船小屋,0 +1190,4159M,瀬高,0 +1190,4159M,南瀬高,0 +1190,4159M,渡瀬,0 +1190,4159M,吉野,0 +1190,4159M,銀水,0 +1190,4159M,大牟田,0 +1190,4159M,荒尾,0 +1191,4155M,門司港,0 +1191,4155M,小森江,0 +1191,4155M,門司,0 +1191,4155M,小倉,0 +1191,4155M,西小倉,0 +1191,4155M,九州工大前,0 +1191,4155M,戸畑,0 +1191,4155M,枝光,0 +1191,4155M,スペースワールド,0 +1191,4155M,八幡,0 +1191,4155M,黒崎,0 +1191,4155M,陣原,0 +1191,4155M,折尾,0 +1191,4155M,水巻,0 +1191,4155M,遠賀川,0 +1191,4155M,海老津,0 +1191,4155M,教育大前,0 +1191,4155M,赤間,0 +1191,4155M,東郷,0 +1191,4155M,東福間,0 +1191,4155M,福間,0 +1191,4155M,千鳥,1 +1191,4155M,古賀,0 +1191,4155M,ししぶ,1 +1191,4155M,新宮中央,1 +1191,4155M,福工大前,0 +1191,4155M,九産大前,1 +1191,4155M,香椎,0 +1191,4155M,千早,0 +1191,4155M,箱崎,1 +1191,4155M,吉塚,0 +1191,4155M,博多,0 +1191,4155M,竹下,1 +1191,4155M,笹原,1 +1191,4155M,南福岡,0 +1191,4155M,春日,1 +1191,4155M,大野城,0 +1191,4155M,水城,1 +1191,4155M,都府楼南,1 +1191,4155M,二日市,0 +1191,4155M,天拝山,1 +1191,4155M,原田,0 +1191,4155M,けやき台,1 +1191,4155M,基山,0 +1191,4155M,弥生が丘,1 +1191,4155M,田代,1 +1191,4155M,鳥栖,0 +1191,4155M,肥前旭,0 +1191,4155M,久留米,0 +1191,4155M,荒木,0 +1191,4155M,西牟田,0 +1191,4155M,羽犬塚,0 +1191,4155M,筑後船小屋,0 +1191,4155M,瀬高,0 +1191,4155M,南瀬高,0 +1191,4155M,渡瀬,0 +1191,4155M,吉野,0 +1191,4155M,銀水,0 +1191,4155M,大牟田,0 +1191,4155M,荒尾,0 +1191,4154M,羽犬塚,0 +1191,4154M,西牟田,0 +1191,4154M,荒木,0 +1191,4154M,久留米,0 +1191,4154M,肥前旭,0 +1191,4154M,鳥栖,0 +1191,4154M,田代,1 +1191,4154M,弥生が丘,1 +1191,4154M,基山,0 +1191,4154M,けやき台,1 +1191,4154M,原田,0 +1191,4154M,天拝山,1 +1191,4154M,二日市,0 +1191,4154M,都府楼南,1 +1191,4154M,水城,1 +1191,4154M,大野城,0 +1191,4154M,春日,1 +1191,4154M,南福岡,0 +1191,4154M,笹原,1 +1191,4154M,竹下,1 +1191,4154M,博多,0 +1191,4154M,吉塚,0 +1191,4154M,箱崎,1 +1191,4154M,千早,0 +1191,4154M,香椎,0 +1191,4154M,九産大前,1 +1191,4154M,福工大前,0 +1191,4154M,新宮中央,1 +1191,4154M,ししぶ,1 +1191,4154M,古賀,0 +1191,4154M,千鳥,1 +1191,4154M,福間,0 +1191,4154M,東福間,0 +1191,4154M,東郷,0 +1191,4154M,赤間,0 +1191,4154M,教育大前,0 +1191,4154M,海老津,0 +1191,4154M,遠賀川,0 +1191,4154M,水巻,0 +1191,4154M,折尾,0 +1191,4154M,陣原,0 +1191,4154M,黒崎,0 +1191,4154M,八幡,0 +1191,4154M,スペースワールド,0 +1191,4154M,枝光,0 +1191,4154M,戸畑,0 +1191,4154M,九州工大前,0 +1191,4154M,西小倉,0 +1191,4154M,小倉,0 +1192,4120M,荒尾,0 +1192,4120M,大牟田,0 +1192,4120M,銀水,0 +1192,4120M,吉野,0 +1192,4120M,渡瀬,0 +1192,4120M,南瀬高,0 +1192,4120M,瀬高,0 +1192,4120M,筑後船小屋,0 +1192,4120M,羽犬塚,0 +1192,4120M,西牟田,0 +1192,4120M,荒木,0 +1192,4120M,久留米,0 +1192,4120M,肥前旭,0 +1192,4120M,鳥栖,0 +1192,4120M,田代,1 +1192,4120M,弥生が丘,1 +1192,4120M,基山,0 +1192,4120M,けやき台,1 +1192,4120M,原田,0 +1192,4120M,天拝山,1 +1192,4120M,二日市,0 +1192,4120M,都府楼南,1 +1192,4120M,水城,1 +1192,4120M,大野城,0 +1192,4120M,春日,1 +1192,4120M,南福岡,0 +1192,4120M,笹原,0 +1192,4120M,竹下,0 +1192,4120M,博多,0 +1192,4120M,吉塚,0 +1192,4120M,箱崎,1 +1192,4120M,千早,0 +1192,4120M,香椎,0 +1192,4120M,九産大前,1 +1192,4120M,福工大前,0 +1192,4120M,新宮中央,1 +1192,4120M,ししぶ,1 +1192,4120M,古賀,0 +1192,4120M,千鳥,1 +1192,4120M,福間,0 +1192,4120M,東福間,0 +1192,4120M,東郷,0 +1192,4120M,赤間,0 +1192,4120M,教育大前,0 +1192,4120M,海老津,0 +1192,4120M,遠賀川,0 +1192,4120M,水巻,0 +1192,4120M,折尾,0 +1192,4120M,陣原,0 +1192,4120M,黒崎,0 +1192,4120M,八幡,0 +1192,4120M,スペースワールド,0 +1192,4120M,枝光,0 +1192,4120M,戸畑,0 +1192,4120M,九州工大前,0 +1192,4120M,西小倉,0 +1192,4120M,小倉,0 +1192,4120M,門司,0 +1192,4120M,小森江,0 +1192,4120M,門司港,0 +1192,4149M,門司港,0 +1192,4149M,小森江,0 +1192,4149M,門司,0 +1192,4149M,小倉,0 +1192,4149M,西小倉,0 +1192,4149M,九州工大前,0 +1192,4149M,戸畑,0 +1192,4149M,枝光,0 +1192,4149M,スペースワールド,0 +1192,4149M,八幡,0 +1192,4149M,黒崎,0 +1192,4149M,陣原,0 +1192,4149M,折尾,0 +1192,4149M,水巻,0 +1192,4149M,遠賀川,0 +1192,4149M,海老津,0 +1192,4149M,教育大前,0 +1192,4149M,赤間,0 +1192,4149M,東郷,0 +1192,4149M,東福間,0 +1192,4149M,福間,0 +1192,4149M,千鳥,1 +1192,4149M,古賀,0 +1192,4149M,ししぶ,1 +1192,4149M,新宮中央,1 +1192,4149M,福工大前,0 +1192,4149M,九産大前,1 +1192,4149M,香椎,0 +1192,4149M,千早,0 +1192,4149M,箱崎,1 +1192,4149M,吉塚,0 +1192,4149M,博多,0 +1192,4149M,竹下,0 +1192,4149M,笹原,0 +1192,4149M,南福岡,0 +1192,4149M,春日,1 +1192,4149M,大野城,0 +1192,4149M,水城,1 +1192,4149M,都府楼南,1 +1192,4149M,二日市,0 +1192,4149M,天拝山,1 +1192,4149M,原田,0 +1192,4149M,けやき台,1 +1192,4149M,基山,0 +1192,4149M,弥生が丘,1 +1192,4149M,田代,1 +1192,4149M,鳥栖,0 +1192,4149M,肥前旭,0 +1192,4149M,久留米,0 +1192,4149M,荒木,0 +1192,4149M,西牟田,0 +1192,4149M,羽犬塚,0 +1193,4128M,荒尾,0 +1193,4128M,大牟田,0 +1193,4128M,銀水,0 +1193,4128M,吉野,0 +1193,4128M,渡瀬,0 +1193,4128M,南瀬高,0 +1193,4128M,瀬高,0 +1193,4128M,筑後船小屋,0 +1193,4128M,羽犬塚,0 +1193,4128M,西牟田,0 +1193,4128M,荒木,0 +1193,4128M,久留米,0 +1193,4128M,肥前旭,0 +1193,4128M,鳥栖,0 +1193,4128M,田代,1 +1193,4128M,弥生が丘,1 +1193,4128M,基山,0 +1193,4128M,けやき台,1 +1193,4128M,原田,0 +1193,4128M,天拝山,1 +1193,4128M,二日市,0 +1193,4128M,都府楼南,1 +1193,4128M,水城,1 +1193,4128M,大野城,0 +1193,4128M,春日,1 +1193,4128M,南福岡,0 +1193,4128M,笹原,1 +1193,4128M,竹下,1 +1193,4128M,博多,0 +1193,4128M,吉塚,0 +1193,4128M,箱崎,1 +1193,4128M,千早,0 +1193,4128M,香椎,0 +1193,4128M,九産大前,1 +1193,4128M,福工大前,0 +1193,4128M,新宮中央,1 +1193,4128M,ししぶ,1 +1193,4128M,古賀,0 +1193,4128M,千鳥,1 +1193,4128M,福間,0 +1193,4128M,東福間,1 +1193,4128M,東郷,0 +1193,4128M,赤間,0 +1193,4128M,教育大前,1 +1193,4128M,海老津,0 +1193,4128M,遠賀川,1 +1193,4128M,水巻,1 +1193,4128M,折尾,0 +1193,4128M,陣原,0 +1193,4128M,黒崎,0 +1193,4128M,八幡,0 +1193,4128M,スペースワールド,0 +1193,4128M,枝光,0 +1193,4128M,戸畑,0 +1193,4128M,九州工大前,0 +1193,4128M,西小倉,0 +1193,4128M,小倉,0 +1193,4128M,門司,0 +1193,4128M,小森江,0 +1193,4128M,門司港,0 +1194,4142M,羽犬塚,0 +1194,4142M,西牟田,1 +1194,4142M,荒木,0 +1194,4142M,久留米,0 +1194,4142M,肥前旭,1 +1194,4142M,鳥栖,0 +1194,4142M,田代,1 +1194,4142M,弥生が丘,1 +1194,4142M,基山,0 +1194,4142M,けやき台,1 +1194,4142M,原田,0 +1194,4142M,天拝山,1 +1194,4142M,二日市,0 +1194,4142M,都府楼南,1 +1194,4142M,水城,1 +1194,4142M,大野城,0 +1194,4142M,春日,1 +1194,4142M,南福岡,0 +1194,4142M,笹原,1 +1194,4142M,竹下,1 +1194,4142M,博多,0 +1194,4142M,吉塚,0 +1194,4142M,箱崎,1 +1194,4142M,千早,0 +1194,4142M,香椎,0 +1194,4142M,九産大前,1 +1194,4142M,福工大前,0 +1194,4142M,新宮中央,1 +1194,4142M,ししぶ,1 +1194,4142M,古賀,0 +1194,4142M,千鳥,1 +1194,4142M,福間,0 +1194,4142M,東福間,1 +1194,4142M,東郷,0 +1194,4142M,赤間,0 +1194,4142M,教育大前,1 +1194,4142M,海老津,0 +1194,4142M,遠賀川,1 +1194,4142M,水巻,1 +1194,4142M,折尾,0 +1194,4142M,陣原,0 +1194,4142M,黒崎,0 +1194,4142M,八幡,0 +1194,4142M,スペースワールド,0 +1194,4142M,枝光,0 +1194,4142M,戸畑,0 +1194,4142M,九州工大前,0 +1194,4142M,西小倉,0 +1194,4142M,小倉,0 +1194,4142M,門司,0 +1194,4142M,小森江,0 +1194,4142M,門司港,0 +1195,4146M,羽犬塚,0 +1195,4146M,西牟田,1 +1195,4146M,荒木,0 +1195,4146M,久留米,0 +1195,4146M,肥前旭,1 +1195,4146M,鳥栖,0 +1195,4146M,田代,1 +1195,4146M,弥生が丘,1 +1195,4146M,基山,0 +1195,4146M,けやき台,1 +1195,4146M,原田,0 +1195,4146M,天拝山,1 +1195,4146M,二日市,0 +1195,4146M,都府楼南,1 +1195,4146M,水城,1 +1195,4146M,大野城,0 +1195,4146M,春日,1 +1195,4146M,南福岡,0 +1195,4146M,笹原,1 +1195,4146M,竹下,1 +1195,4146M,博多,0 +1195,4146M,吉塚,0 +1195,4146M,箱崎,1 +1195,4146M,千早,0 +1195,4146M,香椎,0 +1195,4146M,九産大前,1 +1195,4146M,福工大前,0 +1195,4146M,新宮中央,1 +1195,4146M,ししぶ,1 +1195,4146M,古賀,0 +1195,4146M,千鳥,1 +1195,4146M,福間,0 +1195,4146M,東福間,0 +1195,4146M,東郷,0 +1195,4146M,赤間,0 +1195,4146M,教育大前,0 +1195,4146M,海老津,0 +1195,4146M,遠賀川,0 +1195,4146M,水巻,0 +1195,4146M,折尾,0 +1195,4146M,陣原,0 +1195,4146M,黒崎,0 +1195,4146M,八幡,0 +1195,4146M,スペースワールド,0 +1195,4146M,枝光,0 +1195,4146M,戸畑,0 +1195,4146M,九州工大前,0 +1195,4146M,西小倉,0 +1195,4146M,小倉,0 diff --git a/data_validator/tests/kagoshima_sectional_rapid.rs b/data_validator/tests/kagoshima_sectional_rapid.rs new file mode 100644 index 00000000..dc69cebc --- /dev/null +++ b/data_validator/tests/kagoshima_sectional_rapid.rs @@ -0,0 +1,90 @@ +use std::{collections::BTreeMap, path::Path}; + +use csv::StringRecord; + +fn records(path: &Path) -> Vec { + csv::Reader::from_path(path) + .unwrap() + .records() + .collect::>() + .unwrap() +} + +#[test] +fn kagoshima_sectional_rapid_matches_official_train_stops() { + let root = Path::new(env!("CARGO_MANIFEST_DIR")).join(".."); + let stations = records(&root.join("data/3!stations.csv")); + let names: BTreeMap<_, _> = stations.iter().map(|r| (&r[0], &r[2])).collect(); + let rows = records(&root.join("data/5!station_station_types.csv")); + let fixture = + records(&root.join("data_validator/tests/fixtures/kagoshima_sectional_rapid.csv")); + let mut trains: BTreeMap<(&str, &str), Vec<(&str, &str)>> = BTreeMap::new(); + for row in &fixture { + trains + .entry((&row[0], &row[1])) + .or_default() + .push((&row[2], &row[3])); + } + assert_eq!(trains.len(), 11); + for ((group, train), expected) in trains { + let mut actual: Vec<_> = rows + .iter() + .filter(|r| &r[3] == group) + .map(|r| (names[&r[1]], &r[4])) + .collect(); + // Hakata has two line-specific IDs but represents one physical stop. + actual.dedup(); + let from = actual.iter().position(|r| r.0 == expected[0].0).unwrap(); + let to = actual + .iter() + .position(|r| r.0 == expected.last().unwrap().0) + .unwrap(); + let actual = if from <= to { + actual[from..=to].to_vec() + } else { + actual[to..=from].iter().rev().copied().collect() + }; + assert_eq!(actual, expected, "group {group}, train {train}"); + } +} + +#[test] +fn kagoshima_sectional_rapid_groups_are_complete_and_selectable_at_hakata() { + let data = Path::new(env!("CARGO_MANIFEST_DIR")).join("../data"); + let rows = records(&data.join("5!station_station_types.csv")); + let types = records(&data.join("4!types.csv")); + let rapid: Vec<_> = rows.iter().filter(|r| &r[3] == "259").collect(); + for (group, type_id, first, last, direction) in [ + (1189, 545, "1190202", "1190231", "1"), + (1190, 546, "1190202", "1190329", "0"), + (1191, 547, "1190202", "1190329", "0"), + (1192, 548, "1190202", "1190329", "0"), + (1193, 549, "1190202", "1190329", "1"), + (1194, 550, "1190202", "1190321", "1"), + (1195, 551, "1190205", "1190321", "1"), + ] { + let group = group.to_string(); + let type_id = type_id.to_string(); + let ty: Vec<_> = types.iter().filter(|r| r[1] == type_id).collect(); + assert_eq!(ty.len(), 1); + assert!(ty[0][2].starts_with("区間快速(")); + assert_eq!(&ty[0][8], direction); + assert_eq!(&ty[0][9], "2"); + let actual: Vec<_> = rows.iter().filter(|r| r[3] == group).collect(); + assert!(actual.iter().all(|r| r[2] == type_id)); + assert!(actual.iter().all(|r| matches!(&r[4], "0" | "1"))); + let from = rapid.iter().position(|r| &r[1] == first).unwrap(); + let to = rapid.iter().position(|r| &r[1] == last).unwrap(); + assert_eq!( + actual.iter().map(|r| &r[1]).collect::>(), + rapid[from..=to].iter().map(|r| &r[1]).collect::>() + ); + for hakata in ["1190231", "1190301"] { + let count = actual + .iter() + .filter(|r| &r[1] == hakata && &r[4] == "0") + .count(); + assert_eq!(count, usize::from(group != "1189" || hakata == "1190231")); + } + } +} diff --git a/docs/kagoshima-sectional-rapid.md b/docs/kagoshima-sectional-rapid.md new file mode 100644 index 00000000..d146e36e --- /dev/null +++ b/docs/kagoshima-sectional-rapid.md @@ -0,0 +1,31 @@ +# 鹿児島本線の区間快速 + +2026-10-20 に JR九州の駅別時刻表(2026年10月)で確認した停車パターン。 +博多駅の上下方向に掲載された区間快速37列車を確認し、快速区間と竹下・笹原の停車有無で7系統に分ける。 +各系統の名称の括弧内は快速運転区間であり、運転区間全体ではない。 +種別は545~551、路線グループは1189~1195。既存の快速259や他線区の区間快速108は変更しない。 + +同じ停車パターンの始終着違いは路線グループに集約する(時刻表・列車単位の運行情報ではない)。 +福間~二日市間快速は門司港発鳥栖行と小倉発荒尾行などの共通パターンを集約する。 +博多を通り抜ける系統には1190231と1190301の両駅IDを含め、博多止まりの系統には北側のみを含める。 +上りのみ確認した4系統はdirection=1、上下を確認した3系統はdirection=0。 +折尾まで快速の系統は海老津に停車し、福間まで快速の系統は福間以北で各駅に停車する。 + +## 照合用列車 + +| 路線グループ | 列車番号 | JR九州の列車詳細 | +| --- | --- | --- | +| 1189 | 3126M | [福間~博多間快速](https://www.jrkyushu-timetable.jp/sp/2610/0026/00263801.html?t=2828301l&d=20261020) | +| 1190 | 4127M | [福間~二日市間快速](https://www.jrkyushu-timetable.jp/sp/2610/0021/00212501.html?t=2828302l&d=20261020) | +| 1190 | 4124M | [福間~二日市間快速](https://www.jrkyushu-timetable.jp/sp/2610/0024/00248101.html?t=2828301l&d=20261020) | +| 1190 | 4159M | [福間~二日市間快速](https://www.jrkyushu-timetable.jp/sp/2610/0024/00240902.html?t=2828302l&d=20261020) | +| 1191 | 4155M | [福間~鳥栖間快速](https://www.jrkyushu-timetable.jp/sp/2610/0024/00240803.html?t=2828302l&d=20261020) | +| 1191 | 4154M | [福間~鳥栖間快速](https://www.jrkyushu-timetable.jp/sp/2610/0026/00265102.html?t=2828301l&d=20261020) | +| 1192 | 4120M | [福間~鳥栖間快速・南福岡~博多間各駅停車](https://www.jrkyushu-timetable.jp/sp/2610/0015/00159001.html?t=2828301l&d=20261020) | +| 1192 | 4149M | [福間~鳥栖間快速・南福岡~博多間各駅停車](https://www.jrkyushu-timetable.jp/sp/2610/0024/00247302.html?t=2828302l&d=20261020) | +| 1193 | 4128M | [折尾~鳥栖間快速](https://www.jrkyushu-timetable.jp/sp/2610/0026/00263601.html?t=2828301l&d=20261020) | +| 1194 | 4142M | [折尾~羽犬塚間快速](https://www.jrkyushu-timetable.jp/sp/2610/0026/00264501.html?t=2828301l&d=20261020) | +| 1195 | 4146M | [福間~羽犬塚間快速](https://www.jrkyushu-timetable.jp/sp/2610/0026/00264701.html?t=2828301l&d=20261020) | + +`data_validator/tests/fixtures/kagoshima_sectional_rapid.csv` は上記列車の停車・通過を記録する。 +テストは列車の実運転区間を切り出して全駅を比較し、接続駅の両ID・種別・方向も検証する。