AI に鉄道の運転指令を作らせてみた — 3回目の「対応キュー」手組みで、また部品になった(やってみた #106)
/rail-operations375px のビューポートで撮影。縦長のページはフレーム内をスクロールします。
解説記事
AI に鉄道の運転指令を作らせてみた — 3回目の「対応キュー」手組みで、また部品になった(やってみた #106)
やってみたシリーズ: 自作のデザインシステム
@gunjo/ui(群青)を、文脈ゼロの cold な AI に実 UI で作らせる連載。運輸=モード別に回す(タクシー/バス/鉄道/航空/トラック配送)、その鉄道1枚目——鉄道の運転指令(運行管理)(列車一覧・ダイヤ乱れ・運行図表・運転整理)。
運輸は1業界じゃなく「カテゴリ」——鉄道・バス・航空・タクシー・運送は作法が全然違うので、各モードを独立の床として回す。今回はその鉄道。観測の核——要対応の worklist(ActionQueue)が3回目の手組みになれば、その場で build する。
結果 — 4/5、そして 3-confirm 発火(2連続の build)
tsc/build 緑・375px・0 console error。KPI・ダイヤ乱れアラート・列車運行状況一覧・運行図表・運転整理ログ。cold AI(群青を一度も触っていない設定)のレポート:
ダイヤ乱れアラートキュー=手組み。「severity でソートされた action-needed の worklist component が無い」。索引が答えた
NotificationCenterを見たが「ベルアイコンの Popover で、インラインの triage リストじゃない——severity も kind も推奨アクションも無い」。だからAlert+Badge×2+Buttonを severity 順に並べて自前で組んだ。「これは単一最大の再利用される欠落——あらゆる ops/SRE/指令画面が、まさにこれを必要とし、全員が Alert+Badge から作り直す。最も価値ある追加。」
3回連続——更新 act-now リスト #102・要対応アラート #105・ダイヤ乱れキュー #106、別々の3人 cold AI が独立に同じ worklist を手組み。3回ルール発火。その場で build した。(保険で AmountBreakdown を build したのに続き、2連続の結晶化。)
build — ActionQueue(対応キュー)
<ActionQueue
items={[
{ severity: "critical", kind: "失効リスク", title: "田所さま — 終身保険が今月末で失効",
detail: "失効防止コールを本日中に。", meta: "本日", actions: <Button size="sm">対応</Button> },
{ severity: "warning", kind: "更新", title: "三宅さま — 更新期限", meta: "あと7日" },
{ severity: "info", kind: "誕生日", title: "宇佐美さま — お誕生日", meta: "明日" },
]}
/>
severity(critical/warning/info/neutral)がアイコン+トーン+(ソート時の)並び順を決める。重大度は色だけでなく アイコン形+トーン+sr-only ラベルで伝える。- 末尾
actionsは行ボタンに入れ子にせず兄弟として描画・onSelectで行を活性化・既定で RSC 安全。 - StatGroup(KPI 行)と対になる、朝のダッシュボードのもう半分が揃った。
- #350 クローズ(PR#351)。
索引も2つ直した
- worklist →
NotificationCenterの誤誘導を是正:対応キュー(ActionQueue)vs 単発通知(Alert)vs 常駐ベル(NotificationCenter)を分離。 Gantt→ 運行図表 の誤誘導を注記:Ganttはレーン詰めバー=交差する斜線(列車運行図表/ダイヤグラム/Marey)ではないと明記し、未対応であることを索引に出した。
起票 — Stringline(運行図表)
運行図表(時間×距離のスジ)も手組み(SVG)。「Gantt はレーン詰めバー、スジは交差する斜線——構造的に別物。斜線そのものがデータなので SVG が正当な例外」。
→ #352。鉄道特化(universal な ActionQueue より優先度は下)だが、鉄道ダイヤ画面の象徴。次の交通モードで2回目が出れば結晶化。RouteStops(物流の配送)が車両運用・折返しに「uncanny な fit」で越境したのも収穫。
今回 src build = ActionQueue(3-confirm)。
学び — universal な床はまだ埋まる
保険5枚で「作り切った」と書いたが、業界をまたぐ universal な穴はまだあった——ActionQueue は保険にも鉄道にも、あらゆる ops 画面に出る「朝のダッシュボードのもう半分」。StatGroup(KPI)・AmountBreakdown(金額)に続き、back-office の3つ目の universal な床が埋まった。一方 Stringline は鉄道特化=モード固有の穴。universal な床(全業種で効く)と モード固有の床(その業種だけ)を、3回ルールが選り分けてくれている。
次回予告(やってみた #107)
- 鉄道2枚目(乗務員行路/車両運用 or 駅務)で ActionQueue/Stringline の再発掘を観測、あるいは次モード(バス/航空/タクシー/トラック配送)へ。
試す
- gunjo.jp / 対応キュー ActionQueue / 金額内訳 AmountBreakdown / 逆引き索引 /docs/by-use-case / npm
@gunjo/ui/ GitHub / 前回まで #1〜#105 - GunjoUI by UIXHERO
3回手組みされた worklist が、その場で部品に。運輸モード初回で、universal な床がまた一段。
<!-- 公開前: 相互URL差込/スクショ確定/EN(dev.to)ミラー -->
使用した @gunjo/ui コンポーネント
この画面のソースが直接 import している部品です。
cold AI が組み上げた実コード
ファイル名をクリックでソースを展開できます。