Assist_Design/docs/ja/how-it-works/ordering-provisioning.md

84 lines
3.5 KiB
Markdown
Raw Normal View History

---
sidebar_position: 5
title: "注文とプロビジョニング(詳細)"
---
# 注文とプロビジョニング(詳細ガイド)
注文作成からフルフィルメントまでの詳細な技術フローを説明します。
## 注文作成フロー
### チェックアウトセッション
- ユーザーがプランを設定すると、チェックアウトセッションがサーバーサイドで構築されます
- セッションには選択されたプラン、アドオン、設置オプション、すべての設定詳細が含まれます
- セッションには有効期限があり、長時間経過すると設定プロセスのやり直しが必要
### 事前検証
1. ユーザーにWHMCSクライアントマッピングが存在すること
2. WHMCSに少なくとも1つの支払い方法が存在すること
3. インターネット注文の場合、WHMCSにアクティブなインターネットサービスがないこと
4. 在留カードが提出済みSubmittedまたはVerifiedであること
### Salesforce Order構造
**Orderオブジェクトフィールド**
| フィールド | API名 | 値 |
| --- | --- | --- |
| AccountId | `AccountId` | IDマッピングから |
| Status | `Status` | "Draft" |
| Type | `Type__c` | Internet / SIM / VPN |
| EffectiveDate | `EffectiveDate` | 本日の日付 |
| Pricebook2Id | `Pricebook2Id` | ポータル価格表ID |
**OrderItemレコード**
- Salesforce Composite API経由で作成
- 各SKUに対してPricebookEntryIdからカタログ検索
- UnitPriceとQuantityを価格表から設定
### 住所スナップショット
注文には注文時点の住所が保存されます。後でプロフィールの住所が変更されても、注文の住所は変わりません。
## フルフィルメントプロセス
### トリガー
- Salesforce CDCが注文ステータスの変更を検出「Approved」「Reactivate」
- イベントがBFFのプロビジョニングキューBullMQに送信
- べき等キーによる重複処理防止
### プロビジョニングステップ
1. Salesforce `Activation_Status__c` = "Activating" に更新
2. Salesforce OrderItemsをWHMCS商品にマッピング
3. WHMCS `AddOrder` APIアクションを呼び出しWHMCS注文、請求書、サブスクリプションレコードを作成
4. SIM注文の場合FreebitアクティベーションAPIを呼び出し
5. SalesforceをWHMCS Order ID、Activation Status、エラー情報で更新
6. 注文キャッシュを無効化
7. UI ライブ更新用のリアルタイムイベントを公開
### 分散トランザクション
フルフィルメントはロールバック付きの分散トランザクションパターンを使用:
- Salesforceステータス更新後にWHMCS作成が失敗 → Salesforceステータスをロールバック
- WHMCSに部分的な注文は残りません
### エラー処理
| シナリオ | 動作 |
| --- | --- |
| 支払い方法不足 | Salesforceに`PAYMENT_METHOD_MISSING`で一時停止 |
| WHMCS APIエラー | 失敗としてマーク、Salesforceステータスをロールバック |
| Freebitエラー | 失敗としてマーク、エラーをSalesforceに記録 |
| 一時的エラー | BullMQキューでバックオフ付きリトライ |
## リアルタイム注文追跡
- 顧客は注文イベントストリームSSEに接続可能
- Salesforceでステータスが変更されると、UIが手動更新なしで自動更新
- 注文詳細ページはServer-Sent Events経由でライブ接続を維持