1. システム背景
価格計算モジュールは、ユーザー属性・保有資産・商品適用アクティビティ・クーポン情報などに基づき、取引シーン(カート・精算ページ)では実支払額を、案内シーン(商品詳細・リスト表示)では予想価格を算出する。業務拡大に伴い、複雑化するアクティビティの組み合わせに対応するため、既存の価格計算ロジックをトランザクション処理から分離する必要性が生じた。
2. 技術的課題と対応策
2.1 規則非統一型アクティビティ
異なる部署が管理するアクティビティの計算ロジックには統一されたフォーマットが存在しない。この問題に対し、各アクティビティの計算処理をコンポーネント化し、ブラックボックス化した。
- 入力パラメータ:基準価格・割引情報・適用条件
- 出力情報:計算結果価格・価格変更履歴スナップショット
- グローバルコンテキスト:排他情報・計算プロセス履歴・グループ管理データ
2.2 高拡張性要求
マーケティング戦略変更に即時対応するため、計算パイプラインの動的変更が必要。2つの実装アプローチを検討:
- ハードコードによる計算順序管理(コード修正が必要)
- 設定ファイルによる実行時順序変更(コード変更不要)
2.3 複雑な排他関係
アクティビティ間には3種類の関係が存在:
- 完全排他:アクティビティA適用時はBは自動除外
- 条件付き排他:アクティビティ作成者が個別に許可設定
- 最適価選択:同等優先度アクティビティが複数適用される場合、最低価格を選択
2.4 計算精度の保証
取引処理では計算結果の正確性が重要。以下の対策を実施:
- 多段階キャッシュ構造の採用
- 資産損失リスク箇所の監視・アラート設定
- コンポーネント単位のフェールセーフ機構
3. 価格計算エンジン設計
3.1 コアコンポーネント
コンポーネント化された価格計算モジュールは、設定可能なパイプライン構造で動作:
- パイプライン内ノード順序実行
- 各ノード内で最優先コンポーネントの結果を選定
- 排他コンポーネントの自動除外処理
3.2 レーンプロセッサ
特定期間Tにおける最低価格シミュレーションを実現するため、時間スライス単位での価格計算を行う。例として5つのアクティビティの有効期間を以下のように処理:
[
{
"期間1": ["アクティビティA", "アクティビティE"],
"期間2": ["アクティビティC", "アクティビティE"],
"期間3": ["アクティビティD", "アクティビティE"]
}
]
3.3 設定管理構造
以下のようなJSON形式の設定ファイルでパイプライン構成を管理:
[
[
{
"コンポーネント種別": 101,
"モジュール名": "タイムセール計算",
"排他リスト": ["POSTAGE_2023"]
}
],
[
{
"コンポーネント種別": 202,
"モジュール名": "送料計算"
}
]
]
4. 実装成果
新エンジンはカート・注文処理等のコア取引シーンをサポートし、2023年の大型セールでは全シーンでの運用を予定。今後は専用ルールエンジンの開発を通じて、更に柔軟なプロモーション技術基盤を構築する。