#137スコア 4.5/5運輸:バス

AI にバスの配車・乗務員管理を作らせてみた — 床は3モード目でも揺るがず、穴は「3つ目の軸」を指した(やってみた #137)

ルート: /bus-dispatch
デスクトップ表示
モバイル表示

375px のビューポートで撮影。縦長のページはフレーム内をスクロールします。

解説記事

AI にバスの配車・乗務員管理を作らせてみた — 床は3モード目でも揺るがず、穴は「3つ目の軸」を指した(やってみた #137)

やってみたシリーズ: 自作のデザインシステム @gunjo/ui群青)を、文脈ゼロの cold な AI に実 UI で作らせる連載。バス toB を厚く(運行管理に続く2枚目)——営業所の配車・乗務員管理コンソール(仕業交番・配車・点呼/アルコール・拘束時間・資格期限)。鉄道乗務員#107/航空乗員#131 のバス版。

結果 — 4.5/5、crew/dispatch 床が3モード目でも全 zero-friction

tsc 緑・デスクトップ密度。cold AI(群青を一度も触っていない設定):

back-office の一式は、バス乗務にも本当に purpose-built で ready =後付けでない。 仕業交番(ScheduleGrid)・拘束時間 消費vs限度(Meter・改善基準告示を direction/thresholds で自明に表現)・閾値判定(ReferenceValue+flagValue)・要対応(ActionQueue)・署名/2人確認(SignedRecord/CoSign)・人セル(PersonCell) が全部 zero-friction・一つも戦わなかった・モード非依存の crew-ops primitive でそれが分かる

鉄道乗務員#107→航空乗員#131→バス配車乗務員#137。3モード続けて crew/dispatch 床は構造的手組みゼロ。

観測の核1 — ExpiryBadge 2回目=「3つ目の軸」が浮かんだ

運転士の資格期限(大型二種免許/適性診断/健康診断 → 有効/期限間近/失効)を、cold AI がまた手組みした(PersonCell×{免許,適性,健診} の CSS グリッド+残日数 Badge)。#131(航空乗員資格)に続き2回目(2/3)。 そして cold AI が、頼まれず**キットに欠けている「3つ目の軸」**として言語化:

ExpiryCell/CurrencyBadge=日付vs期限→有効/期限間近/失効+残N日・色非依存。これは Meter(容量=値vs上限)と ReferenceValue(値vsレンジ)の日付ドメインの兄弟。キットは値vs上限と値vsレンジを美しくカバー済み——欠けているのは値vs期限の軸。全モードの crew/資産/コンプラ コンソールに要る(鉄道 動力車操縦者免許・航空 crew recency・バス 大型二種・フォークリフト技能講習)。

#383 に2回目追記。Meter/ReferenceValue/ExpiryBadge = 容量/レンジ/期限 の三幅対=穴が「個別の部品」ではなく「直交する軸の欠け」として見えた。

観測の核2 — #131 で打った索引 fix が、効いた

#131(航空乗員)で「資格期限→ReferenceValue」の誤誘導を是正し、「ReferenceValue は数値専用・期限は ScheduleGrid+残日数 Badge で構成」と索引に書いた(PR#384)。それが #137 で:

cold AI「キットは正直=索引が『ScheduleGrid マトリクス+残日数で色分けした Badge を使え』と言う。 存在しない部品を探さずに済んだ。」

索引は仕事をしている(誤誘導を防いだ)。穴の primitive 自体はまだ 2/3。 索引で「無いことを正しく伝える」のと、3回貯めて「部品にする」のは、別レイヤーで同時に進む。

拾った点

  • 🟡 ThresholdGate(アルコール点呼の go/no-go):酒気帯び(値vs0.00) を ReferenceValue(医療系 H/HH 高値/異常高値)に押し込み、labels を全上書きして脱・医療化。点呼義務の中核チェックが lab notation を借りている=go/no-go ゲートは StatusLevel(#376) の qualitative 仲間→#376 追記。
  • 🟡 status-grid(MetadataList と DataTable の中間):点呼/資格パネルを grid-cols-[…] 手組み(DataTable は TanStack で5行常時表示に重い)=#133/#134 に続き再確認。

今回 src build なし(4.5/5・床が3モード目も効く+ExpiryBadge 2/3)。

学び — 「穴が個別でなく『軸』で見えると、設計が決まる」

ExpiryBadge は #131 で1回目、#137 で2回目。だが #137 の収穫は回数より、cold AI が穴を軸として定位したこと:キットは「値vs上限(Meter)」「値vsレンジ(ReferenceValue)」を持つが「値vs期限」が無い。穴を『Meter/ReferenceValue の欠けた第3軸』と捉えると、APIの形(date+thresholds→3状態+残N日・色非依存)が既存2部品から自動的に決まる。 3-confirm を待つ間に、穴の「形」は既に確定した——3回目が来たら、迷わず最良形で build できる。これは Stringline(#136) を30回寝かせて最良仕様で結晶化させたのと同じ、「寝かせる間に仕様を熟成させる」の別パターン。

📊 結晶化スコアボード(build 済 12個

AmountBreakdown / ActionQueue / ListCard / Gantt-segments / SeatMap / LoyaltySummaryCard / RadioCard / FilterChips / PageHeader / Itinerary / TicketStub / Stringline 進行中:ExpiryBadge 2/3・StatusBoard 2/3・Gantt-intraday(near)・StatusLevel/ThresholdGate・status-grid・CheckboxCard

📋 モード進捗

  • ✈️ 航空:toB 5 + toC 6 ✅/🚆 鉄道:toB 5 + toC 6 ✅
  • 🚌 バス:toB 2枚(運行管理/配車乗務員) / 残り toC(路線/接近/運賃)

次回予告(やってみた #138)

  • バス toC(バス停・接近案内・運賃・乗車)=モバイル消費者床(PageHeader/ListCard/FilterChips/StatusLevel…)がバスにどう効くか=toC 越境の地力テストを3モード目で。

試す

床は3モード目でも揺るがず、穴は「Meter/ReferenceValue の欠けた第3軸(期限)」を指した——穴が軸で見えると、3回目を待つ間に仕様は熟成する。


<!-- 公開前: 相互URL差込/スクショ確定/EN(dev.to)ミラー -->

使用した @gunjo/ui コンポーネント

この画面のソースが直接 import している部品です。

cold AI が組み上げた実コード

ファイル名をクリックでソースを展開できます。