#43スコア 4.5/5小売・EC
AI に実地棚卸を作らせてみた — 同じ小売でも、レジと真逆の画面で穴を探す(やってみた #43)
ルート:
/stocktake375px のビューポートで撮影。縦長のページはフレーム内をスクロールします。
解説記事
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=region+aria-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 が組み上げた実コード
ファイル名をクリックでソースを展開できます。