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に保存され次回以降も維持
フロー
- 📷 カメラスキャンまたは手動入力でJAN/ASINを入力
- SP-APIで商品情報・相場・出品制限を一括取得(数秒)
- Transparency必要性をバックグラウンドで自動判定(追加で数秒、判定結果はバッジ表示)
- 過去の仕入れ履歴を確認
- 仕入れる場合: 仕入値・コンディション・付属品・売値を入力 → 「🛒 仕入れる」
- 見送る場合: 「見送る」→ 理由を選択 → ログに記録
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 | 説明 |
|---|---|---|
| 📱 モバイル仕入れ | MB-logo | ロゴ・トップへのリンク |
| 履歴リンク | MB-history-link | スキャン履歴画面へ遷移 |
| 在庫検索リンク | MB-inventory-link | 本サイトの在庫一覧(商品名・ASIN・SKU等で検索可能) |
スキャンエリア
| 要素名 | ID | 説明 |
|---|---|---|
| スキャンセクション | MB-scan-section | バーコード入力・カメラスキャンエリア |
| JANコード入力 | MB-jan-input | JANコードのテキスト入力欄。Enterキーで検索実行 |
| 検索ボタン | MB-search-btn | 入力したJANで商品検索を実行 |
| カメラスキャンボタン | MB-camera-btn | スマホカメラを起動してバーコードを読み取り |
| ASIN直接入力トグル | MB-asin-toggle | ASIN直接入力モードの表示/非表示 |
| ASIN入力欄 | MB-asin-input | ASINを直接入力するテキスト欄 |
| 商品名検索トグル | MB-keyword-toggle | キーワード検索モード(商品名・型番・ブランド)の表示/非表示 |
| キーワード入力欄 | MB-keyword-input | 商品名・型番・ブランドを入力。Enterキーまたは検索ボタンで実行 |
| キーワード検索結果 | MB-keyword-results | 複数ASIN候補をリスト表示。タップで選択 |
| 📷 商品撮影ボタン | MB-IMG-CAPTURE-BTN | バーコードがない中古商品をカメラで撮影。AI(Claude Vision)が商品名/型番を推測し、自動でキーワード検索を実行 |
| 撮影用 file input | MB-IMG-CAPTURE-INPUT | 非表示。撮影ボタンタップで OS 標準カメラが起動 |
| AI 識別メッセージ | MB-IMG-RECOGNITION-MSG | confidence=low の時に「もう少しはっきり撮影すると精度が上がります」を表示 |
商品情報エリア
| 要素名 | ID | 説明 |
|---|---|---|
| 検索結果セクション | MB-result-section | 商品が見つかった場合に表示される全体エリア |
| 商品タイトル | MB-product-title | Amazonカタログから取得した商品名 |
| Amazonリンク | MB-amazon-link | ASINをタップするとAmazon商品ページを新タブで開く |
| 出品制限チェックボタン | MB-check-restriction | SP-API Listings Restrictions で出品制限を再チェック |
| TP判定バッジ | MB-tp-status | Transparency判定の結果表示(TP判定中… / TP必要 / TP検出なし / TP判定失敗)。「TP検出なし」はグレー表示で、不要の保証ではない |
| TP再判定リンク | MB-redetect-tp | Transparency判定を再実行する小リンク |
| 危険物バッジ | MB-hazmat-status | 危険物判定の結果表示(☢️危険物(納品不可) / ☢️危険物の疑い / 危険物なし / 未判定)。スキャンした時点で自動判定される |
| 危険物 再判定ボタン | MB-check-hazmat | 危険物判定を取り直す。Amazon側の審査が進むと結果が変わるため、時間をおいて押し直せる |
| 危険物 警告 | MB-hazmat-warning | 危険物と確定なら赤、疑い・審査中ならオレンジで理由コードごとの説明を表示。この状態で「仕入れる」を押すと確認ダイアログが出る |
| 警告エリア | MB-warnings | 出品制限・危険物・Transparency警告の表示エリア(該当時に色つきで表示) |
| 相場表示 | MB-prices | コンディション別のFBA最低価格一覧 |
| 仕入れ履歴 | MB-history | 同一ASINの過去仕入れ・販売実績 |
| 詳細履歴ボタン | MB-detail-history-btn | ASIN別の詳細な仕入れ・販売履歴テーブルを展開 |
| ASIN詳細履歴 | MB-asin-history-detail | SKU単位の仕入値・売値・利益・ステータス一覧 |
仕入れ入力フォーム
| 要素名 | 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-toggle | ONにすると店舗でその場でSKU発番(シール貼付用)。デフォルトOFF(検品時にSKU割当) |
| 店舗名 | MB-store-input | 仕入れ店舗名。localStorageに保存され次回以降も維持 |
| 仕入れるボタン | MB-purchase-btn | PO+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') →PurchaseOrderItem→PurchaseOrderItemUnit(自動生成) →StorePurchaseLog(decision='purchased') - 見送り時:
StorePurchaseLog(decision='skipped') のみ
API仕様
| エンドポイント | メソッド | 概要 |
|---|---|---|
/mobile-purchase/lookup | POST | JAN→ASIN解決 + 相場・制限・履歴を一括取得 |
/mobile-purchase/purchase | POST | 仕入れ登録(PO+POI+SKU作成) |
/mobile-purchase/skip | POST | 見送りログ保存 |
/mobile-purchase/asin-history/{asin} | GET | ASIN別詳細履歴 |