AI に検査成績書を作らせてみた — 臨床ラボの「基準値判定」が、製造の「公差判定」にそのまま化けた(やってみた #65)
/inspection-certificate375px のビューポートで撮影。縦長のページはフレーム内をスクロールします。
解説記事
AI に検査成績書を作らせてみた — 臨床ラボの「基準値判定」が、製造の「公差判定」にそのまま化けた(やってみた #65)
やってみたシリーズ: 自作のデザインシステム
@gunjo/ui(群青)を、文脈ゼロの cold な AI に実 UI で作らせる連載。製造2枚目——品質検査 / 検査成績書(ロット検査 × 測定値 vs 公差 × 工程能力 Cp/Cpk × 不良パレート × 判定・発行)。
製造の1枚目(#64 生産工程進捗)に続き、2枚目は QC の核心——現場タブレットで寸法を測り、測定値を公差(上限 USL / 下限 LSL)に照らして合否を出し、検査成績書を発行する画面。
結果 — 4/5
tsc/build 緑・console 0・375px(現場ハンディ想定)・測定項目テーブル(規格中心/LSL/USL/実測/判定)・公差バンド判定(色だけに頼らない sr-only 付き)・Cpk 工程能力ゲージ・不良パレート・署名→ロック→是正追記。
今回の主役 — 臨床ラボの「基準値判定」が、製造の「公差判定」にそのまま化けた
血液検査の H/L 判定用に作った ReferenceValue(#56)を、製造の cold AI が公差判定にそのまま採用した:
ReferenceValue is a clinical lab component that bends almost perfectly to QC tolerance bands. Its
ReferenceRange(low/high/criticalLow/criticalHigh) maps cleanly to LSL/USL, andlabelslet me override the medical "高値/低値" wording to "上限規格 外(NG)/下限規格 外(NG)" without touching internals. The exported pureflagValue()classifier drove the row's OK/NG verdict AND the value tone from one source of truth. The built-insr-onlyflag means pass/fail never rides on colour alone — for free. The single biggest win.
臨床の「基準範囲 low/high・危険値 criticalLow/criticalHigh」と、製造の「規格 LSL/USL・限度見本」は同じ構造だった。flagValue() が pure 関数で export されているので、各セルの判定とテーブル行の OK/NG を1つの真実から駆動できた。他にも:
SignedRecord→ 検査成績書の発行(看護記録/退院サマリ/不動産契約締結のために作った「下書き→署名→ロック→追記のみ」が、検査成績書の発行フローと法的に同じ形。摩擦ほぼゼロ)。BarChart averageValue→ パレートの 80% 線(平均線のつもりの破線をtotal×0.8に流用=閾値線に)。SegmentedGaugeCard targetValue→ Cpk≥1.33 の目標マーカー。
医療3業界で育てた ReferenceValue/SignedRecord が、製造QCで骨格そのまま効いた。
src で直した穴 — Meter に「higher-is-better+目標マーカー」(3回目で build)
-
🟠→✅ Meter の方向が一方向だった。Meter のトーンは「満杯=悪」(容量/負荷向け)。だが 入居率(#60)・稼働率/良品率(#64)・Cpk工程能力(#65)は全部 higher-is-better(目標に届けば success)。cold AI は毎回
toneを手で上書きしていた。同じ穴を3回手当てしたので3回ルールで build(#256・PR #272):direction="higher-is-better": 目標以上=success・目標の9割まで=warning・それ未満=destructive。target: トラック上に目標マーカー線を描画(higher-is-better では自動トーンも駆動・既定方向では SLA 下限などの視覚参照)。- aria-valuetext で目標を読み上げ、マーカーは aria-hidden(色のみに依存しない)。
これで入居率・稼働率・良品率・Cpk が
<Meter direction="higher-is-better" target={...} />一行になった。
起票だけ / 再確認
- 🟠 ParetoChart が2回目(#64 不良要因+#65 不良パレート・#270)。累積%曲線がどの部品でも引けない(BarChart 単系列・第2軸/折れ線オーバーレイ無)。
ComboChart/二軸が無い。あと1回で build。 - 🟡 工程能力ゲージ(針+目標線+符号付き軸)(#274・1回目)。#256 は線形 Meter に target を足したが、Cpk は負値になり得る(規格外 = Cpk −0.26)。0–max のアークもクランプ。針式ダイヤル+符号付き軸は別primitive。
- 🟡 RadioGroupItem が
<fieldset disabled>配下で aria-disabled を出さない(#273)。クリックは塞がるが SR 向けに「無効」が伝わらず tab 順にも残る。disabled明示で回避。
docs デプロイ遅延が露呈
cold AI が「ReferenceValue と Meter が gunjo.jp のナビに無い(404)」と報告。調べると live の gunjo.jp が6/23正午頃から未デプロイで、直近2日の新部品(Delta/Meter/ReferenceValue/RouteStops/ScanInput/ScanGate/SafetyBanner/CoSign/SignedRecord)が全部 live で 404 だった。コードもナビ登録も正しく、手動 vercel --prod の再デプロイ待ち。cold AI が node_modules の型を読むしかなかった真因はこれ。実ユーザーも同じく発見できない状態なので、再デプロイは優先。
学び — 「値 vs 範囲」は、検査値でも公差でも同じ判定
臨床の基準範囲(low/high・危険値 criticalLow/criticalHigh) → 製造の公差(LSL/USL・限度見本)
医療/不動産の署名記録(署名→ロック→追記のみ) → 製造の検査成績書発行
不動産の入居率メーター(higher-is-better) → 製造の稼働率/Cpk メーター(同じ)
ReferenceValue は血液検査の H/L 判定のために作ったが、その骨格(測定値を範囲に照らして旗を立てる)は製造の公差判定にそのまま効いた。flagValue() を pure 関数で出していたから、テーブルの行判定まで同じ真実で駆動できた。医療/物流/金融/会計/不動産/製造の6業界で、育てた primitive が横断することをさらに実証。Meter の higher-is-better は3回ルールで land、パレートは2回目、Cpkダイヤルは1回目——製造特有の可視化はこれから育てる。
次回予告(やってみた #66)
- 製造をもう1枚(設備保全/OEE ダッシュボード or トレーサビリティ)でパレート#270 を3回目=buildへ。1業界3〜5枚で製造の判断を立体化。
試す
まだ alpha。臨床の基準値判定が製造の公差判定にそのまま化け、入居率メーターが Cpk ゲージになった回。
<!-- 公開前: 相互URL差込/スクショ確定/EN(dev.to)ミラー/live再デプロイ後にナビ404解消を確認 -->
使用した @gunjo/ui コンポーネント
この画面のソースが直接 import している部品です。
cold AI が組み上げた実コード
ファイル名をクリックでソースを展開できます。