型付き辺: 出 1 / 入 1
ADR-0001: 32_wrk_invoice (INV) を Single Source of Truth とする
- Status: Accepted (旧形式「## ステータス: 採用済み」より転記)
- Mode: Critical (内容から推定・旧 README 一覧より移設)
- Kruchten Type: Existence
- Scope: product
- Implementation Status: Done (初期実装、32_wrk_invoice タブ運用中)
Kruchten Type は ADR-0031 (2026-05-13) で遡及追加。分類根拠は ADR-0031 §決定セクションおよび docs/adr/README.md の Kruchten 3 分類ガイドを参照。 Status / Mode / Scope は 2026-06-11 に遡及追加 (ADR-0031 corrigendum パターン)。出典: Status = 旧形式「## ステータス」節の機械転記 / Mode = 旧 README §既存 ADR 一覧の推定値 (git 履歴) / Scope = ADR-0049 4 層分類の遡及付与 (PR レビューで確定)。
決定の早わかり(Y-statement)
本節は ADR-0140 の方針で遡及追加された本文の要約で、新しい意味は加えていない (意思決定内容は不変)。「文脈で問題に直面し、対抗案でなくこの案を選び、目的のため代償を受け入れる」と読む。詳細はコンテキスト以降の本文に展開する。
- 文脈: 財務データの集計ソースを選ぶ局面。案A = 42_trn_journal (仕訳台帳) 起点、案B = 32_wrk_invoice (請求台帳) 起点の 2 案があった。
- 問題: 仕訳台帳を集計起点にすると冪等性の管理が複雑になる。削除→再生成のリスクが生じる。
- 問題点と課題(直せる原因 → 発生を止めるためにやること):
- 42 タブに仕訳を書くと冪等性の管理が複雑化する → 仕訳台帳への書き込みは Action A/B のみに限定し、データマート集計には関与させない。
- 予算と実績を別々に扱うと予実比較がしにくい → 予算 (未処理) と実績 (承認済/決済完了) を同一テーブルで管理する INV を集計の起点にする。
- 決定(対応策): 案A (仕訳台帳を SSOT) でなく案B を採用する。32_wrk_invoice を全ての P/L・B/S・CF 集計の起点とし、42_trn_journal は監査証跡 (二次的記録) と位置づける。
- 目的: 集計ロジックを単純化する。データマートは 32/33 タブのみ読み込めば完結する状態にする。
- 代償: 42 タブの値とデータマート出力に微小な差異が生じうる (42 タブは丸め済み、データマートは再計算)。貸倒引当金繰入額が 32 タブに INV レコードを持たない技術的負債も残る。
- 詳細は本文の影響・撤退条件セクションを参照のこと
ステータス: 採用済み
コンテキスト
財務データの集計ソースとして、以下の選択肢があった:
- 案A: 42_trn_journal (仕訳台帳) をSSOTとし、全集計を仕訳ベースで行う
- 案B: 32_wrk_invoice (請求台帳) をSSOTとし、仕訳台帳は監査証跡として使用
決定
案B を採用する。 32_wrk_invoice を全てのP/L・B/S・CF集計の起点とし、42_trn_journal は監査証跡(二次的記録)として位置づける。
理由
- INVは予算(未処理)と実績(承認済/決済完了)を同一テーブルで管理でき、予実比較が容易
- 42タブに仕訳を書くと冪等性の管理が複雑化する(削除→再生成のリスク)
- INVの「請求ステータス」遷移で実績/予算の切り替えが自然に行える
- 仕訳台帳への書き込みはAction A/Bのみに限定し、データマート集計には関与させない
結果・影響
- ポジティブ: 集計ロジックが単純化。データマートは32/33タブのみ読み込めば完結
- ネガティブ: 42タブの値とデータマート出力に微小な差異が生じうる(42タブは丸め済み、データマートは再計算)
- 技術的負債: 貸倒引当金繰入額は現在604_datamart_bs.jsで直接注入しており、32タブにINVレコードが存在しない(TODO参照)
Confirmation (準拠確認 / Fitness Function)
本セクションは ADR-0036 (Accepted 2026-05-14) で遡及追加された。ADR-0031 パターン (業界標準準拠メタデータ後付け = 誤字修正範疇) に準拠する遡及で本文の意思決定内容は不変。
- 検証手段: 既存テスト (testT* / test_{slice_id}_{condition})
- 実行頻度: Nightly
- 違反時の対応: Slack 通知