同じ問いに答えが二つある理由
一言でいうと
保険データには時間軸が2つあります。いつの状態か(基準日)と、いつ知った事実で計算したか(認知日)です。どちらか一方しか書いていないレポートは、翌月に再現できません。
なぜ必要なのか
6月の締めレポートに「失効契約10件」と書いて送りました。8月に監査対応で同じクエリをもう一度実行したところ、7件と出ました。クエリはファイルに保存してあり、1文字も直していません。基準日も同じ2026-06-30です。
この場で言えることがありません。監査チームには「数字がなぜ変わったのかわかりません」と聞こえ、次の質問は必ず「では6月に送った数字は何だったのですか」です。
原因はデータの汚染でもバグでもありません。保険は過去を書き換えることが多いからです。
どう動くのか
過去を書き換える経路はいくつかあります。
수납 누락 정정 창구에서 받은 보험료가 원장에 안 실렸다가 민원 뒤 소급 입력
계약 정정 가입 나이·직업·피보험자 정보를 잘못 받아 소급해서 바로잡음
소급 담보 특약 개시일을 계약일로 되돌려 그 사이 사고까지 보장
심사 번복 부지급했던 건이 이의에서 뒤집혀 지급으로 정정
どれも今日入力されるのに、効力は過去に付きます。そのため「2026-06-30基準」という言葉だけでは、答えが1つに決まりません。もう1つ必要です。
기준일(as-of date) 어느 날의 상태를 묻는가
인지일(known-as-of) 언제까지 알게 된 사실로 계산하는가
7月5日に入ってきた遡及訂正は、6月30日の状態を変えます。6月30日に計算したときにはなかった事実で、8月31日に計算するとある事実です。基準日は同じなのに答えが違います。このように時間軸を2つ置く設計をバイテンポラル(bitemporal)と呼びます。
では、何が正しい答えなのでしょうか。どちらも正しいです。ただし用途が違います。
그때 조회한 값 그날 보낸 리포트가 왜 그 숫자였는지 설명할 때
지금 조회한 값 지금 무엇을 해야 하는지 정할 때
監査は前者を問い、運用は後者を使います。2つを区別できなければ監査で説明できず、区別だけして残しておかなければ説明の根拠がありません。
そのため、締めレポートはクエリではなく結果を保存します。クエリだけを保存すると、次に実行したときに別の答えが出て、その差が訂正によるものか事故によるものか区別する方法がありません。基準日と認知日を併記したスナップショットを残せば、「そのときはこう出た」が証明できる事実になります。
もう1つ。訂正履歴を消してはいけません。値を上書きして古い値を捨てる設計は、その瞬間に「そのとき照会した値」を二度と復元できなくします。古い値と訂正時刻を残しておく表が1つあれば、あとで何か月分もの紛争を減らせます。
現場での姿
1つ目に、月末の突合が毎月ずれる顧客企業には、たいていこの問題が潜んでいます。会計は締めの時点で固めた数字を使い、元帳の照会は現在の値を使いますが、その間に遡及訂正が入ります。2つの数字が違うのはバグではなく設計であり、直すべきなのは数字ではなく、「どの時点基準か」を書いていないレポートです。
2つ目に、「なぜ昨日と数字が違うのですか」という問い合わせを受けたら、まず訂正履歴を見ます。データの件数を数え直したり結合を疑ったりするのはその次です。順序を逆にすると半日が消えます。
3つ目に、レポートに基準日だけを書いて認知日を書かない習慣は、何も問題がないように見えて、監査のときに一度に大きく表面化します。普段は誰も聞かないので、間違っているという信号が来ません。
次のラボですること
同じクエリを2つの基準日で実行し、失効件数が7件から12件に増えることを再現します。次に基準日を固定したまま認知日だけを変え、同じ2026-06-30の答えが10件と7件に分かれることを確認します。差の3件が事故ではなく7月5日に入った収納訂正によるものだということを契約番号まで示して証明し、最後に再現できるスナップショットテーブルを作ります。