subscription_changed: 所有境界から信頼できるクエリへ
subscription_changed を永続的な分析コントラクトとして扱います。所有者は文書化された 1 つの穀物を放出し、備品は畑を証明し、レビューされたクエリは指定された質問に答えます。
- 1
結果が最終的になる
Billing service after provider reconciliation emits only after the application commits the effective subscription state and movement amount.
- 2
契約には制限がある
8 required fields preserve the declared grain: One committed recurring-revenue movement per account, subscription, and effective change.
- 3
治具が検証されました
タイプ、UTC 時間、代替結果、冪等性、およびすべての仮名フィールドまたはレビュー分類フィールドをチェックします。
- 4
質問が解決されました
新規、拡大、縮小、解約、または再活性化された経常収益はどれくらいですか?
穀物
アカウント、サブスクリプション、および実質的な変更ごとに 1 つのコミットされた経常収益の移動。
オーナー
プロバイダー調整後の請求サービス
いつ発行するか
アプリケーションが有効なサブスクリプション状態と移動量をコミットした後。
フィールド契約
明示的なプライバシー境界を持つ型付きフィールド
運用クエリが既存のフィールド名とタイプに依存した後も、既存のフィールド名とタイプを安定した状態に保ちます。オプションのコンテキストは、特定の決定によって制限され、文書化され、正当化されたままにする必要があります。
| フィールド | 種類 | 必須 | プライバシー | 意味 |
|---|---|---|---|---|
| timestamp_utc | timestamp | yes | non-sensitive | 結果境界の UTC 時間。 |
| event_id | string | yes | non-sensitive | 重複排除に使用される安定した一意の識別子。 |
| release | string | yes | non-sensitive | イベントを発行したアプリケーションまたはサービスのバージョン。 |
| account_id | string | yes | pseudonymous | 安定した内部アカウント識別子。電子メールや名前ではありません。 |
| subscription_id | string | yes | pseudonymous | 安定した内部サブスクリプション識別子。 |
| movement_type | string | yes | non-sensitive | 新規、拡大、縮小、チャーン、または再活性化。 |
| plan_before | string | no | non-sensitive | 実質的な変更前の正規化された計画。 |
| plan_after | string | no | non-sensitive | 実質的な変更後の正規化された計画。 |
| mrr_delta_usd | number | yes | non-sensitive | USD で署名された月次経常収益の推移。 |
| effective_at | timestamp | yes | non-sensitive | 請求変更が有効になった UTC 時間。 |
合成 JSON イベント
{
"timestamp_utc": "2026-07-29T10:20:00Z",
"event_id": "evt_subscription_01",
"account_id": "acct_8f31",
"release": "2026.07.3",
"subscription_id": "sub_41aa",
"movement_type": "expansion",
"plan_before": "starter",
"plan_after": "business",
"mrr_delta_usd": 84,
"effective_at": "2026-07-29T10:19:55Z"
}プライバシーのレビュー
取り込む前に識別子を確認する
この例では合成識別子を使用します。仮名の値も個人データである可能性があり、レビュー フィールドによってビジネスまたはプロバイダーのコンテキストが公開される可能性があります。独自の同意、保持、アクセス、常駐、および削除の要件を適用します。
account_id: pseudonymoussubscription_id: pseudonymous
検証チェックリスト
ダッシュボードを構築する前に契約を証明する
- Send one known subscription_changed fixture after the documented outcome boundary.
- Verify all 8 required fields arrive with the documented types.
- 同じイベント識別子を再試行し、選択した重複排除動作を確認します。
- ワークフローがサポートしている場合は、制御された失敗または代替結果を送信します。
- 関連する SQL を固定ウィンドウで実行し、結果をフィクスチャと照合します。
よくある間違い
1 つの行を 1 つの永続的な結果と等しく保つ
- Emitting subscription_changed before billing service after provider reconciliation knows the final outcome.
- 1 つのテーブルに複数の穀物を混ぜると、個数と割合が曖昧になります。
- 制御されたカテゴリを生の URL、ペイロード、プロンプト、またはエラー テキストに置き換えます。
- 保存されたクエリとダッシュボードがフィールド タイプに依存した後、その場でフィールド タイプを変更します。
- 文書化された調査、アクセス、保持の必要がない識別子の追加。
契約書を利用する
イベントをクエリして操作可能にする
関連契約
本番トラフィックの前にフィクスチャを送信する
ライブ ワークフローに接続する前に、無料の API キーを作成し、合成イベントを送信し、推論されたテーブルを検査します。