#43スコア 4.5/5小売・EC

AI に実地棚卸を作らせてみた — 同じ小売でも、レジと真逆の画面で穴を探す(やってみた #43)

ルート: /stocktake
デスクトップ表示
モバイル表示

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

解説記事

AI に実地棚卸を作らせてみた — 同じ小売でも、レジと真逆の画面で穴を探す(やってみた #43)

やってみたシリーズ: 自作のデザインシステム @gunjo/ui群青)を、文脈ゼロの cold な AI に実 UI で作らせる連載。小売2枚目——実地棚卸(理論在庫 vs 実地カウント vs 差異の照合・ロケーション別・バーコード・差異理由・棚卸資産)。

「1業界は最低3〜5枚・可能な限り違う内容・業界特有UIを最優先」という方針で、#42 レジ会計(売る側)と真逆の画面を選んだ——バックヤードの在庫オペレーション。売上でなく、数えて照合する。

結果 — 4.5/5

tsc/build 緑・console 0・375px(ハンディ端末想定)でカード化・差異が符号+矢印+色+sr-only で表現・差異理由が必須でないと確定ブロック・h1 1個。

この回も — 金額/フォーム primitive が、真逆の画面でも全採用

レジと内容が真逆でも、育てた primitive がそのまま効いた:

  • EditableDataTable(#199) — USED, unmodified. The single best fit; it IS the reconciliation grid. 理論在庫(read-only)・実地カウント(編集)・差異(導出)・差異理由(Select)・getRowError・自動モバイル card 化。
  • RevealSection(#213) — USED, unmodified. 差異≠0 で差異理由リマインダーが role=regionaria-live で出現、理由を埋めると消える。
  • NumberInput(stepper) — USED, unmodified. value ?? undefined で「未カウント」と「0」を区別。
  • formatCurrency {signed}(#180) — 11回連続. 差異金額に符号付き ±¥(−¥5,880 原価 / −¥10,458 売価)。

src で直した穴 — Progress の accessible name

今回の clean な穴は1つ:

  • 🟡 Progress に accessible name が無いrole=progressbar+aria-value はあるが、SR には裸の%・axe が弾く)→ label(→aria-label)と valueText(→aria-valuetext "完了 42/120")を追加#219ブラウザ実証)。

起票だけした穴(3回ルール未達)

  • 🟠 バーコード/SKU スキャン入力(スキャン→照合→+1→読み上げ・小売の核・#220・1回目)。
  • 🟠 インライン差異/デルタ atom(±N+矢印+色・セルに収まる・Statistic はカード型で入らない・損益#33+差異#43 で#221・2回目)。

学び — "違う内容" を回すと、別の穴が出る

小売 #42 レジ会計(売る): 釣銭/レシート/¥%割引の穴
小売 #43 実地棚卸(数える): スキャン入力/差異 atom/Progress 名前の穴

同じ業界でも内容を真逆にすると、共有部品(金額/グリッド/reveal)はそのまま効きつつ、その画面特有の穴(スキャン・差異表示)が新たに出る。「1業界3〜5枚・可能な限り違う内容」は、業界の判断を立体的にするための回し方だった。金額系は横断で強い、次は小売の "操作系"(スキャン)が育つ番。

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

  • 小売をもう1枚(返品処理 or レジ締め)でスキャン・釣銭を3回目確認に近づけるか、別業界へ。

試す

まだ alpha。同じ業界でも、真逆の画面で別の穴が出た回。


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

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

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

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

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