← ClaudeAtlas

ecommercelisted

ECサイト開発 - 商品管理、カート、決済、注文フロー、在庫管理の設計・実装支援
aiskillstore/marketplace · ★ 329 · AI & Automation · score 80
Install: claude install-skill aiskillstore/marketplace
# ECサイト開発 ## 使用タイミング - **ECサイト新規構築時** - **商品・注文・決済機能の設計時** - **既存ECサイトのレビュー・改善時** ## ドメイン設計 ### コアエンティティ | エンティティ | 責務 | |-------------|------| | Product | 商品マスタ(タイトル・説明・画像) | | Variant | バリエーション(SKU・価格・在庫) | | Cart | 買い物かご | | Order | 注文(ステータス・配送・支払) | | Customer | 顧客情報 | | Payment | 決済情報 | ### 状態遷移 ``` 注文: [作成] → [支払待ち] → [支払済] → [発送準備] → [発送済] → [完了] 在庫: [在庫あり] ←→ [残りわずか] → [在庫切れ] → [入荷待ち] ``` ## 要件チェックリスト ### 商品管理 - [ ] 商品CRUD - [ ] バリエーション(サイズ・色) - [ ] 在庫管理(リアルタイム) - [ ] カテゴリ・タグ - [ ] 検索・フィルタ ### カート・購入 - [ ] カート操作 - [ ] クーポン・割引 - [ ] 送料計算 - [ ] 配送日時指定 - [ ] ギフト設定 ### 決済 - [ ] クレジットカード - [ ] コンビニ払い - [ ] 後払い / 電子マネー - [ ] 定期購入 ### 顧客管理 - [ ] 会員登録・ログイン - [ ] 住所帳 - [ ] 注文履歴 - [ ] ポイント ### 法令対応 - [ ] 特定商取引法に基づく表記 - [ ] プライバシーポリシー - [ ] 利用規約 ## 技術設計 ### 在庫確保パターン ```typescript // 楽観的ロック async function reserveStock(variantId: string, qty: number) { const result = await db.variant.updateMany({ where: { id: variantId, inventory: { gte: qty }, version: currentVersion, }, data: { inventory: { decrement: qty }, version: { increment: 1 }, }, }); if (result.count === 0) { throw new StockNotAvailableError(); } } ``` ### 決済フロー ``` 1. カート確定 → 在庫仮押さえ 2. 決済開始 → 決済サービス呼び出し 3. 成功 → 注文確定・在庫確定 4. 失敗 → 在庫解放 5. タイムアウト(15分) → 在庫解放 ``` ### API設計 ```yaml GET /products # 商品一覧 GET /products/:id # 商品詳細 POST /cart/items # カート追加 DELETE /cart/items/:id # カート削除 POST /orders # 注文作成