[MB] モバイル仕入れ / 概要

MB モバイル仕入れ

モバイル仕入れ

モバイル仕入れ [MB]

概要

スマートフォンで店舗仕入れを行うための専用画面です。カメラでJANバーコードをスキャンすると、Amazon上のASINに自動変換され、相場・出品制限・過去の仕入れ履歴を一画面で確認できます。仕入れ判断から仕入れ伝票(PO)登録まで、現場で完結します。

この画面でできること

  • JANバーコードスキャン - カメラでバーコードを読み取り、SP-API経由でASINを自動解決
  • ASIN直接入力 - バーコードがない場合はASINを直接入力可能
  • 商品名検索 - キーワード(商品名・型番・ブランド)で SP-API カタログを検索し、複数候補から選択可能
  • 📷 商品撮影AI識別 - バーコードがない中古商品をカメラで撮影すると、Claude Vision が商品名/型番を推測し自動でカタログ検索を実行
  • 商品情報の即時表示 - タイトル・画像・ブランド名
  • 相場確認 - SP-API Competitive Pricing でFBAの現在価格を表示
  • 出品制限チェック - 出品制限がある場合は赤い警告を表示
  • Transparency判定 - SP-API(Listings Items issues + FBA Inbound Eligibility + DBキャッシュ)を統合判定し、「TP必要 / TP検出なし / 判定失敗」のバッジを表示。検出時は asins.is_transparency=true に書き戻し。「TP検出なし」は不要の保証ではありません(下記参照)
  • Transparency警告 - 上の自動判定でTP対象と判定された場合、オレンジで警告(登録時にTransparencyコードが必要)
  • 危険物(Hazmat)チェック - スキャンした時点で自動判定し、危険物と確定なら赤・疑い/審査中ならオレンジで警告。この状態で「🛒 仕入れる」を押すと確認ダイアログが出る(承知の上なら仕入れ可能)
  • 仕入れ・販売履歴参照 - 同じASINの過去の仕入れ値・売値・利益率をリスト表示
  • 仕入れ登録 - 仕入値/コンディション/付属品/売値を入力し、PO+POIを作成(source_type='mobile')。デフォルトはSKU未発番(検品時に割当)。その場でSKU発番するオプションもあり
  • 見送り記録 - 仕入れない場合も理由とともにログに記録(学習ループ用)
  • 位置情報自動取得 - ブラウザの位置情報APIで現在地を記録
  • 店舗名記憶 - 入力した店舗名はlocalStorageに保存され次回以降も維持

フロー

  1. 📷 カメラスキャンまたは手動入力でJAN/ASINを入力
  2. SP-APIで商品情報・相場・出品制限を一括取得(数秒)
  3. Transparency必要性をバックグラウンドで自動判定(追加で数秒、判定結果はバッジ表示)
  4. 過去の仕入れ履歴を確認
  5. 仕入れる場合: 仕入値・コンディション・付属品・売値を入力 → 「🛒 仕入れる」
  6. 見送る場合: 「見送る」→ 理由を選択 → ログに記録

Transparency 自動判定の仕組み

SP-APIには「このASINがTransparency対象か」を直接返すAPIが無いため、複数のシグナルを統合して判定します(TransparencyDetectionService::detect())。

  • Listings Items API - 同ASINで自分の既存出品があれば、issues 配列に「TRANSPARENCY required」系メッセージが含まれるかチェック
  • FBA Inbound Eligibility API - 入荷不可理由(ineligibilityReasonList)に TRANSPARENCY 系コードが含まれるかチェック
  • DBキャッシュ - asins.is_transparency の過去判定値も参照

3シグナルのうち1つでも「検出」となれば asins.is_transparency=true に書き戻し(誤検出防止のため false への上書きは行わない)。バッジは「TP必要 / TP検出なし / TP判定失敗」のいずれかを表示。「↻再判定」リンクで再実行可能。

⚠️「TP検出なし」は「TP不要」ではありません。AmazonはTP要否を返すAPIを提供していません。上の3シグナルのうち、①は自分がそのASINで出品していないと発火せず(仕入れ判断の時点では常に該当しない)、②も多くのASINで何も返しません。実例として B0DLGHWCBF(Anker Soundcore AeroClip)はセラーセントラルではTP必須なのに、SP-APIからは一切シグナルが返りませんでした(2026-08-04確認)。ブランド品で不安なときは、最終的にセラーセントラルで確認してください。

危険物(Hazmat)判定の仕組みと限界

危険物と判定された商品はFBAに納品できず、出品が自己発送に切り替わったり出品自体が消えたりします。これを仕入れる前に気づくための機能です。

ただしSP-APIには「このASINは危険物か」を直接返すAPIが存在しません。そのためFBA納品可否(FBA Inbound Eligibility API)が返す理由コードから読み取りますHazmatCheckService)。

表示意味理由コード
☢️ 危険物(納品不可)(赤)危険物と確定しており、FBAでは取り扱えない。仕入れると自己発送になるFBA_INB_0015
☢️ 危険物の疑い(オレンジ)危険物審査中、または危険物だがFBA可(プログラム登録・SDS提出が必要な場合あり)FBA_INB_0007〜0014, 0016
危険物なし(緑)危険物を示すコードは返っていない
未判定(グレー)判定できなかった(API未接続・エラーなど)

⚠️ 重要な限界 — 「危険物なし」は安全の保証ではありません。まだ誰もFBA納品していないASINはAmazon側の審査自体が走っておらず、危険物であっても何も返ってきません。また、すでに審査を通過している商品も「納品可」として返るため、非危険物と区別できません。この判定は危険物を検出できたときだけ意味がある片側の警告として扱ってください。

判定結果は hazmat_checks テーブルに(ユーザー・ASINごとに)30日キャッシュされます。APIのレート制限が1秒1回と細く、スキャンのたびに叩けないためです。審査が進んで結果が変わっている可能性があるときは「↻危険物」ボタンで取り直せます。

画面要素リファレンス

ヘッダー

要素名ID説明

スキャンエリア

要素名ID説明
スキャンセクションMB-scan-sectionバーコード入力・カメラスキャンエリア
JANコード入力MB-jan-inputJANコードのテキスト入力欄。Enterキーで検索実行
検索ボタンMB-search-btn入力したJANで商品検索を実行
カメラスキャンボタンMB-camera-btnスマホカメラを起動してバーコードを読み取り
ASIN直接入力トグルMB-asin-toggleASIN直接入力モードの表示/非表示
ASIN入力欄MB-asin-inputASINを直接入力するテキスト欄
商品名検索トグルMB-keyword-toggleキーワード検索モード(商品名・型番・ブランド)の表示/非表示
キーワード入力欄MB-keyword-input商品名・型番・ブランドを入力。Enterキーまたは検索ボタンで実行
キーワード検索結果MB-keyword-results複数ASIN候補をリスト表示。タップで選択
📷 商品撮影ボタンMB-IMG-CAPTURE-BTNバーコードがない中古商品をカメラで撮影。AI(Claude Vision)が商品名/型番を推測し、自動でキーワード検索を実行
撮影用 file inputMB-IMG-CAPTURE-INPUT非表示。撮影ボタンタップで OS 標準カメラが起動
AI 識別メッセージMB-IMG-RECOGNITION-MSGconfidence=low の時に「もう少しはっきり撮影すると精度が上がります」を表示

商品情報エリア

要素名ID説明
検索結果セクションMB-result-section商品が見つかった場合に表示される全体エリア
商品タイトルMB-product-titleAmazonカタログから取得した商品名
出品制限チェックボタンMB-check-restrictionSP-API Listings Restrictions で出品制限を再チェック
TP判定バッジMB-tp-statusTransparency判定の結果表示(TP判定中… / TP必要 / TP検出なし / TP判定失敗)。「TP検出なし」はグレー表示で、不要の保証ではない
TP再判定リンクMB-redetect-tpTransparency判定を再実行する小リンク
危険物バッジMB-hazmat-status危険物判定の結果表示(☢️危険物(納品不可) / ☢️危険物の疑い / 危険物なし / 未判定)。スキャンした時点で自動判定される
危険物 再判定ボタンMB-check-hazmat危険物判定を取り直す。Amazon側の審査が進むと結果が変わるため、時間をおいて押し直せる
危険物 警告MB-hazmat-warning危険物と確定なら赤、疑い・審査中ならオレンジで理由コードごとの説明を表示。この状態で「仕入れる」を押すと確認ダイアログが出る
警告エリアMB-warnings出品制限・危険物・Transparency警告の表示エリア(該当時に色つきで表示)
相場表示MB-pricesコンディション別のFBA最低価格一覧
仕入れ履歴MB-history同一ASINの過去仕入れ・販売実績
詳細履歴ボタンMB-detail-history-btnASIN別の詳細な仕入れ・販売履歴テーブルを展開
ASIN詳細履歴MB-asin-history-detailSKU単位の仕入値・売値・利益・ステータス一覧

仕入れ入力フォーム

要素名ID説明
仕入れフォームMB-purchase-form仕入れ情報の入力フォーム全体
仕入値入力MB-cost-input仕入れ価格(必須)
売値入力MB-price-input予定売価(任意)。入力すると見込み利益が即時計算される
コンディション選択MB-condition-select新品/中古-ほぼ新品/中古-非常に良い/中古-良い/中古-可
付属品・備考MB-accessories-input付属品の有無や状態メモ。テンプレートの{ACCESSORY_PHRASE}に使用
数量MB-quantity-input仕入れ数量(デフォルト1)
SKU発番トグルMB-assign-sku-toggleONにすると店舗でその場でSKU発番(シール貼付用)。デフォルトOFF(検品時にSKU割当)
店舗名MB-store-input仕入れ店舗名。localStorageに保存され次回以降も維持
仕入れるボタンMB-purchase-btnPO+POIを作成(source_type='mobile')。SKU発番ONならSKU+POIUも作成
荷姿写真エリアMB-photo-area仕入れ登録後に表示。カメラで荷姿写真を撮影しstore_photo_1/2に保存(最大2枚)。FBA出品用のphoto_url_1〜6とは別枠
写真を撮るボタンMB-photo-btnスマホカメラで撮影、またはギャラリーから選択してS3にアップロード
見送るボタンMB-skip-btn見送りモーダルを表示

関連画面

データの流れ

  • 仕入れ登録時(デフォルト): PurchaseOrderNew(source_type='mobile') → PurchaseOrderItem(sku_master_id=NULL) → StorePurchaseLog(decision='purchased')
    ※ SKU・POIUは検品時に割当・生成
  • 仕入れ登録時(SKU発番ON): SkuMaster(created_reason='mobile_purchase') → PurchaseOrderNew(source_type='mobile') → PurchaseOrderItemPurchaseOrderItemUnit(自動生成) → StorePurchaseLog(decision='purchased')
  • 見送り時: StorePurchaseLog(decision='skipped') のみ

API仕様

エンドポイントメソッド概要
/mobile-purchase/lookupPOSTJAN→ASIN解決 + 相場・制限・履歴を一括取得
/mobile-purchase/purchasePOST仕入れ登録(PO+POI+SKU作成)
/mobile-purchase/skipPOST見送りログ保存
/mobile-purchase/asin-history/{asin}GETASIN別詳細履歴
最終更新: 2026年8月4日