PMS コンテキストマップ / Context Map
バウンデッドコンテキスト間の関係性・統合パターン・データオーナーシップを定義する。
→ 対応ドメイン:
docs/ddd/sales/02-context-map.md(Sales CRM 側のコンテキストマップ)
全体マップ
コンテキスト間関係
Sales CRM → Integration Contracts → PMS
| 上流 (Upstream) | 下流 (Downstream) | パターン | データフロー |
|---|---|---|---|
| Sales Pipeline | Integration Contracts | Conformist | Sales はコントラクト仕様に準拠 |
| Integration Contracts | Quotation & Order | ACL (Anti-Corruption Layer) | PMS は独自モデルに変換して取り込み |
| Integration Contracts | System Admin | ACL | 顧客マスタ同期時に PMS 形式へ変換 |
PMS 内部
| 上流 (Upstream) | 下流 (Downstream) | パターン | 説明 |
|---|---|---|---|
| 見積・受注 | 外注手配 | Customer-Supplier | 受注確定時に購入品明細から PurchaseOrder を自動生成 |
| 見積・受注 | 製作指示 | Customer-Supplier | 受注確定時に製作品明細から ProductionInstruction を自動生成 |
| 見積・受注 | 売上・請求 | Customer-Supplier | 受注に対して検収・売上を計上 |
| 外注手配 | 受入 | Customer-Supplier | 発注に対して入荷処理 |
| 受入 | 買掛・支払 | Customer-Supplier | 受入実績から仕入・買掛を計上 |
| 売上・請求 | 原価分析 | Downstream | 売上データを原価比較に使用 |
| 製作指示 | 原価分析 | Downstream | 労務費データを原価比較に使用 |
| 受入 | 原価分析 | Downstream | 材料費データを原価比較に使用 |
Sales CRM 内部
| 上流 (Upstream) | 下流 (Downstream) | パターン | 説明 |
|---|---|---|---|
| 営業パイプライン | 顧客活動管理 | Shared Kernel | Account, Contact を共有 |
| 営業パイプライン | 日報・分析 | Customer-Supplier | Deal の進捗を日報に反映 |
| 顧客活動管理 | 日報・分析 | Customer-Supplier | Activity 実績を日報に集計 |
| 認証・権限 | 全コンテキスト | Generic Subdomain | 全機能で User を参照 |
データオーナーシップ
マスタデータのオーナー
| データ | オーナー | 方向 | 理由 |
|---|---|---|---|
| 顧客 (Customer) | Sales CRM | Sales → PMS | 営業が取引先を最初に登録。PMS は同期先 |
| 製品カタログ (Product) | PMS | PMS → Sales | 品番・BOM は生産管理が管理。Sales はミラー |
| 社員 (Employee) | PMS | PMS (内部) | 社員マスタは PMS が保持。Sales は参照のみ |
| 区分 (Classification) | PMS | PMS (内部) | 区分マスタ (単位・費目・ステータス等) は PMS のコード体系 |
| 仕入先 (Supplier) | PMS | PMS (内部) | 発注・支払は PMS の業務 |
トランザクションのオーナー
| データ | オーナー | 説明 |
|---|---|---|
| 案件 (Deal) | Sales CRM | パイプライン管理は Sales の責務 |
| 受注 (Order) | PMS | Deal から変換後は PMS が管理 |
| 手配・製作指示 | PMS | 製造工程は完全に PMS |
| 売上・入金 | PMS | 経理処理は PMS |
| 活動・日報 | Sales CRM | 営業活動の記録は Sales |
統合パターン詳細
Anti-Corruption Layer (ACL)
PMS は Integration Contracts のデータを直接取り込まない。 必ず ACL で自ドメインのモデルに変換する。
CreateOrderRequest (contract)
↓ ACL 変換
├─ customer_code → 得意先マスタで存在確認
├─ line_items[] → SalesOrder + PurchaseOrder/ProductionInstruction を自動生成
│ (手配品区分に応じてルーティング)
└─ delivery_date → SalesOrder.dueDate
Event-Driven (イベント駆動)
PMS → Sales の通知はドメインイベント経由。 Sales は Eventual Consistency を許容する。
PMS: ProductionInstruction.status = 'completed'
↓ DomainEvent: work_order.completed
↓ Integration Contracts (Webhook)
↓ Sales: ProductionTracking.status = 'completed'
Shared Kernel
Sales CRM 内で「営業パイプライン」と「顧客活動管理」は Account / Contact エンティティを共有する。 変更時は両チーム合意が必要。
チーム境界 (Team Topology)
| コンテキスト | 担当チーム | 備考 |
|---|---|---|
| Sales Pipeline | Sales チーム | フロントエンド + API |
| Customer Success | Sales チーム | |
| Operations | Sales チーム | 日報・分析 |
| Integration Contracts | 両チーム共同 | コントラクト変更は合意必須 |
| Quotation & Order | PMS チーム | |
| Procurement / Receiving | PMS チーム | |
| Production | PMS チーム | |
| Sales & Billing | PMS チーム | |
| Accounts Payable | PMS チーム | |
| Cost Analysis | PMS チーム | |
| System Admin | PMS チーム | マスタ管理 |