第一フェーズ(モックレベル)

simple-picking 仕様書 / ヒアリングリスト

DAISO直送案件向け・ブラウザベース ピッキングリストシステム

クライアント: WOコーポレーション 更新: 2026-05-22 スタック: Laravel / PostgreSQL / Blade + Tailwind
画面モックアップを見る →

01目的・背景

DAISO直送案件のピッキングリストをペーパレス化し、紙代コストを削減する。

課題

  • ピッキングリストを紙で刷り出しており 紙代コストが大きい
  • バンシステム(Access)から納品書・ピッキングリストを両方紙出力
  • バンシステムは DBを持たない → CSV経由でデータ受け渡し

SPの役割

  • バンシステムのCSVを取り込み
  • 納品書(QR付き)を出力(紙運用は継続)
  • QRからブラウザにピッキングリストを表示
  • ピッキング → 検品のステータス管理

※ 納品書だけは紙のまま運用(ペーパレス不可)。

02全体フロー

バンシステム (Access) / CSVエクスポート
simple-picking (SP) / 納品書(紙・QR付き)を出力
現場の作業者(タイミー想定) / 納品書のQRをスマホで読込
ブラウザでピッキングリスト表示
作業者モード: ピッキング → チェック → 作業済
検品者モード: 検品 → チェック → 検品済
検品済みエリアへ移動 / カゴに送り状と納品書を置く

03認証方針

企業単位での拡販を前提に、管理画面と現場作業で認証レイヤーを分ける(2層構成)。

管理画面 ログインあり

CSV取込・納品書PDF出力

  • 企業単位のID/PWログイン(マルチテナント前提)
  • 新規登録は不可 → 管理者が企業ごとに払い出し
  • 1企業 = 1ログイン(複数ユーザーは後続フェーズ)
  • セッションでログイン状態を保持

現場作業 認証なし

ピッキング・検品 / スマホ

  • 作業者はタイミー(短期スタッフ)を想定
  • ログインフローなし(QR読込で即作業開始)
  • 「誰が作業したか」のログも不要
  • QR内トークンで「どの企業のどの出荷か」を識別

04ピッキングリスト仕様

ダブルチェック方式

作業者用と検品者用を分け、両方でチェックを入れる二重確認。

モード操作完了後ステータス
作業者モードピッキングしながらチェック作業済み
検品者モード検品しながらチェック検品済み

状態遷移ルール

ステータス遷移(モック想定)

created → picking(作業中)→ picked(作業済)→ inspecting(検品中)→ inspected(検品済)

※ 作業済になってから検品モードへ遷移可能

05確定済み仕様 2026-05-22 ヒアリング済

ピッキング単位

1納品書 = 1ピッキング = 1QR(バッチピッキングなし)

デジピック商品の扱い

  • デジピック=ランプが光った棚から取る機械
  • 対象商品と非対象が同一納品書に混在しうる
  • SPリストからは「デジピック対象(フラグ=1)」を除外表示 除外処理の粒度は保留

検品フロー

  • 作業者と検品者は 同一人物でもOK(識別・ログ不要)
  • QRは作業者・検品者で共通(同URLでモード切替)
  • SP側に「出荷待ち」等のステータスは持たない
  • バンシステムへの書き戻しなし(一方通行)

QRトークン / 納品書印刷

  • QRは DAISO客注番号ベース(仮)。必要なら追加トークン併用
  • SP側でPDF生成 → QR埋込 → 印刷
  • バンシステムからの納品書印刷は廃止方向

ロケーション / ピッキング順番 保留

倉庫レイアウトは存在するが 順番計算ロジックが不明。CSVの「ピッキング順番」列をそのまま使う想定だが詳細は要ヒアリング。

06CSV列仕様(バンシステム想定インプット)

⚠️ バンシステム側の仕様が未確定のため、現時点では参考レベル。

列名内容
出荷日 / 出荷番号 / 伝票番号出荷ヘッダ情報
希望納期
店舗番号 / 店舗名納品先
郵便番号 / 住所1 / 住所2 / 電話番号納品先住所
明細番号明細行の連番
JAN / 商品名商品識別
入数
受注数 / 受注総数
出荷数 / 出荷総数
商品マスタの品名 / 品名サブ
ピッキング順番ピッキングを行う順序
容積
デジピック1: あり / 2: なし

文字コード: バンシステムのCSVは Shift_JIS(CP932)想定 → 取込時UTF-8変換。出力CSV/PDFもShift_JISで(クライアント標準)。

07画面構成(モック)

各行の「モック」リンクから実際の画面モックアップを確認できます(バックエンド未接続)。 一覧は sp-mockup.pages.dev ↗

#画面概要認証モック
0企業ログイン企業ID/PWでログイン。新規登録なし。管理画面の入口あり開く ↗
1CSV取込CSVアップロード → shipments / shipment_items に保存あり開く ↗
2納品書PDF出力取込済み出荷一覧から選択 → 納品書PDFをまとめて生成(QR埋込)あり開く ↗
3ピッキング(スマホ)QR読込で開く。明細一覧+チェックボックス。デジピック行は非表示なし開く ↗
4検品(スマホ)ピッキングと同URL、モード切替。全行未チェックで開始。完了でOKサインなし開く ↗

08DB設計(モック最小構成)

テーブル用途
companies企業マスタ(企業ID・企業名・ハッシュ済PW・有効フラグ)。新規登録なしのため管理者が手動投入
shipments出荷ヘッダ(company_id・出荷番号・伝票番号・店舗情報・QRトークン・ステータス)
shipment_items出荷明細(JAN・商品名・出荷数・ピッキング順・デジピックフラグ・チェック状態)
picking_logsピッキングと検品のチェック履歴(明細ID・モード picking/inspection・チェック時刻)

09ヒアリングリスト(要確認事項)

第一フェーズでは詳細を追わないが、本実装前にクライアントへ確認が必要な未決事項。

① バンシステムのCSV出力仕様 未確定

SPへのインプットの根幹。列定義・文字コード・区切り・改行・1ファイル単位の粒度(出荷単位/日次一括)など。

CSVの列定義・サンプルファイルをいただけるか?(上記「CSV列仕様」で過不足ないか)

エクスポート単位は?(1出荷=1ファイル / 日次まとめ など)

文字コードはShift_JIS(CP932)で確定か?

② 欠品時の挙動(受注数 ≠ 出荷数) 回答済

現場で欠品判明時にSP上でどう記録するか。

SP側では気にしなくてOK。手前のシステム(バンシステム)側で欠品処理が走るため、SPに渡る時点では出荷可能なデータになっている。

在庫が無い(「ねーよ」)となった場合は、そもそも納品書の出し直しになる運用。=SP側で欠品の記録・部分出荷ハンドリングは不要。

③ NG時フロー(検品で数量違い・破損発覚) 未決

検品OKサインの粒度、NG時の差し戻し・部分OKのフロー。

OKサインは「全チェック完了で自動OK」か「明示ボタン」か?

NG(数量違い・破損)時の差し戻し・部分OKの運用は?

④ ピッキング順番の制御 保留

順番計算ロジックが不明。CSVの「ピッキング順番」列の意味と、UI上の強制度合い。

順番通りにしかチェックできないUIにするか、自由順か?

「ピッキング順番」列はロケーション順か?採番ルールは?

⑤ QRトークンの一意性 / 推測困難性 回答済

DAISO客注番号ベースで推測困難性が十分か。

第一フェーズは現状(客注番号ベース)でOK。あまり気にしていないが、多分大丈夫だろうとの認識。

拡販時には対策を検討した方がよい。例: 現場ユーザー時点でもログイン機能を持たせる等で、URL推測でのアクセスを防ぐ。

⑥ デジピック除外の粒度 / 連携 保留

デジピック対象(フラグ=1)の除外を行単位で行うか、まとめて行うか。

除外は行ごとに非表示でよいか?将来的にデジピック連携の予定は?

10開発フェーズ

第一

モックレベル

ゴール: 複数の納品書から QR読込 → ブラウザでピッキング作業 が行えるモックの作成。

CSV形式未確定のため納品書の区分け(仕様詳細)は追わず、フローを動かすことを優先。