ドメインイベントカタログ / Domain Events
各バウンデッドコンテキストで発生するドメインイベントの一覧。イベント名・トリガー・ペイロード・購読者を定義する。
見積・受注 (Quotation & Order)
| イベント名 | Event Type | トリガー | 購読者 |
|---|
| 見積作成 | quotation.created | 新規見積を保存 | — (内部) |
| 見積承認 | quotation.approved | 承認者が承認 | 営業CRM (見積回答) |
| 見積改訂 | quotation.revised | 改訂番号を発番 | 営業CRM |
| 受注登録 | order.accepted | PMS に受注を登録 | 外注手配, 製作指示, 営業CRM |
| 受注キャンセル | order.cancelled | 受注を取消 | 外注手配, 製作指示, 売上, 営業CRM |
order.accepted ペイロード
interface OrderAcceptedEvent {
event_type: "order.accepted";
correlation_id: string; // Sales Deal ID
occurred_at: string; // ISO 8601
payload: {
order_number: string; // ORDER_NO
customer_code: string; // TOKUISAKI_CODE
due_date: string; // NOUKI
line_items: {
product_code: string;
quantity: number;
unit_price: number;
}[];
total_amount: number;
};
version: 1;
}
外注手配 (Procurement)
| イベント名 | Event Type | トリガー | 購読者 |
|---|
| 発注作成 | purchase_order.created | 手配データ登録 | — (内部) |
| 発注発行 | purchase_order.issued | 仕入先に注文書送付 | 営業CRM (進捗追跡) |
| 発注完了 | purchase_order.fulfilled | 全数入荷完了 | 原価分析 |
受入 (Goods Receiving)
| イベント名 | Event Type | トリガー | 購読者 |
|---|
| 入荷 | goods.received | 受入処理完了 | 買掛・支払, 原価分析, 営業CRM |
| 入荷差異 | goods.discrepancy | 数量・品質の差異 | 外注手配 (再発注判断) |
goods.received ペイロード
interface GoodsReceivedEvent {
event_type: "goods.received";
correlation_id: string;
occurred_at: string;
payload: {
order_number: string;
po_number: string;
supplier_code: string;
items: {
product_code: string;
quantity_received: number;
unit_price: number;
}[];
};
version: 1;
}
製作指示・作業日報 (Internal Production)
| イベント名 | Event Type | トリガー | 購読者 |
|---|
| 製作指示作成 | work_order.created | 製作指示を発行 | 営業CRM |
| 作業着手 | work_order.started | 作業員が着手記録 | 営業CRM |
| 作業完了 | work_order.completed | 作業完了を記録 | 原価分析, 営業CRM |
| 日報登録 | work_log.submitted | 作業日報を提出 | 原価分析 |
売上・請求 (Sales & Billing)
| イベント名 | Event Type | トリガー | 購読者 |
|---|
| 検収完了 | inspection.passed | 顧客検収合格 | 原価分析, 営業CRM |
| 検収不合格 | inspection.failed | 顧客検収不合格 | 製作指示 (手直し) |
| 出荷 | order.shipped | 納品書発行・発送 | 営業CRM |
| 請求発行 | invoice.issued | 請求書発行 | 売掛, 営業CRM |
| 入金確認 | payment.received | 入金消込完了 | 売掛, 営業CRM |
買掛・支払 (Accounts Payable)
| イベント名 | Event Type | トリガー | 購読者 |
|---|
| 仕入計上 | ap_receipt.recorded | 仕入データ登録 | 買掛 |
| 支払実行 | supplier_payment.executed | 仕入先への支払完了 | 買掛 |
| 買掛締め | ap_balance.closed | 期末買掛締め処理 | — |
営業CRM (Sales)
| イベント名 | Event Type | トリガー | 購読者 |
|---|
| 案件作成 | deal.created | 新規案件登録 | — |
| 案件ステージ変更 | deal.stage_changed | パイプラインステージ移動 | 日報 |
| 案件受注 | deal.won | 案件をクロージング (受注) | Integration Contracts |
| 案件失注 | deal.lost | 案件をクロージング (失注) | — |
| 活動記録 | activity.logged | 活動 (電話/訪問/メール) 記録 | 取引先メトリクス更新 |
| 日報提出 | daily_report.submitted | 日報を提出 | — |
deal.won ペイロード
interface DealWonEvent {
event_type: "deal.won";
occurred_at: string;
payload: {
deal_id: string;
account_id: string;
customer_code: string;
line_items: {
product_code: string;
quantity: number;
unit_price: number;
}[];
requested_delivery_date: string;
total_amount: number;
};
}
共通ヘッダー / Base Interface
interface DomainEventBase {
event_id: string; // UUID v7 (時系列ソート可能)
event_type: string; // aggregate.verb
correlation_id: string; // 業務トランザクション追跡用
causation_id?: string; // 原因イベントの event_id
occurred_at: string; // ISO 8601
version: number; // スキーマバージョン
metadata: {
actor_id: string; // 操作者の employee_code
source_context: string; // 発行元コンテキスト名
};
}