TT Lab
はじめる
学ぶ 学習パス コース

保険ドメイン深化

消してよいものと、消してはいけないもの

TT Labで続きを見る

一言でいうと

保存期間が過ぎた個人情報は、遅滞なく消さなければなりませんが、紛争や監督機関の要求によって保存命令がかかった案件は、期間が過ぎても消してはいけません。2つのルールがぶつかる場所を、判定できるデータにしておくことが、この仕事のすべてです。

なぜ必要なのか

個人情報は、消さなくても事故、誤って消しても事故です。消さなければ、個人情報保護法第21条が定める「保有期間が過ぎたら遅滞なく破棄」に違反したことになり、反対に、紛争中の請求の資料を消してしまうと、会社が自社の主張を証明する手段を失います。実際の事故は、たいてい後者が静かに起きます。バッチが夜通し動き、「期間が過ぎた」という理由だけで、調停中の案件の書類を消してしまい、誰も翌月の調停期日まで、その事実を知りません。

ここに、判定を難しくする要素がもう1つあります。起算日です。保険の消滅時効は商法第662条が定めていて、要点は、保険金請求権と保険料・積立金の返還請求権は3年、保険料請求権は2年です。ところが「3年」がいつからの3年なのかは、データに自動で書かれていません。事故日なのか、請求の終了日なのか、契約の終了日なのか。システムごとに別の日を起算日にしていると、同じ案件が、ある側では破棄の対象で、別の側ではまだ保存の対象になります。

どう動くのか

設計は、4つをデータとして置くところから始まります。

  1. 保存期間表。対象の種類ごとに、기산일 이름、연수、근거(順に、韓国語で「起算日の名前」「年数」「根拠」を意味する語です)を書きます。根拠を同じ行に置くのは、あとで「なぜ5年なのか」と尋ねる人が必ず現れるからです。法定の時効から来る値と、社内規程から来る値を混ぜておくと、規程が変わったときに何を直せばよいかわかりません。
  2. 起算日。契約なら契約日と終了日が、請求なら事故日と終了日が候補です。まだ終わっていない案件は、起算日がありません。時効が始まっていないということで、こうした案件を「日付が空だから、ずっと昔」として処理すると、進行中の請求の資料がまるごと消えます。
  3. 保存命令(legal hold)。紛争・捜査・監督機関の要求のように、期間と無関係に保存すべき理由を、案件単位でかけます。破棄の判定は、常に「期間が過ぎたか」の次に「命令がかかっているか」の順で行います。
  4. 破棄証跡。何をいつどのルールで消したかを残します。消したものは再び見せられないので、消したという事実そのものが唯一の証拠になります。

日付の計算には、思った以上に落とし穴があります。Pythonのdatetimeには、「何年後」を求める演算がありません。timedeltaは日・秒単位なので、days=365*3で計算すると、うるう年をまたぐ区間で1日ずつずれます。そのため、年単位の加減はdate.replace(year=...)で行い、2月29日のようにその年にない日は、ルールを明示して処理します。SQLiteで計算するときも、日付・時刻関数のdate(x, '+3 years')は、存在しない日付を翌月に繰り上げて正規化するので、どちらに処理したかを文書に書いておかなければ、2つのシステムの数字が合いません。

기간 판정 ──▶ 보존 명령 제외 ──▶ 예행(dry-run) ──▶ 실제 파기 ──▶ 증적 ──▶ 남은 사본

現場での姿

最もよく見る事故は、起算日を移したことです。古い規程は「契約日から5年」で、新しい規程は「契約終了日から5年」なのに、バッチが古い計算式をそのまま使っていました。10年契約なら2つの値が10年違うので、まだ保存すべき資料が数千件消えます。この事故は、消されたあとにしか現れません。

2つ目は、予行と本番を同じコードで回すことです。フラグ1つで分けておくと、いつかそのフラグが誤って入ります。計画をファイルとして出し、実行はそのファイルを読んで再判定したあとにだけ消すようにすれば、人が途中で確認する場所ができます。

3つ目は、破棄したと信じ込むことです。表の行を消したのに添付ファイルはそのまま残っていたり、本番DBでは消したのに昨日取ったバックアップにはそのまま入っていたりします。バックアップまで即座に消すのは、たいてい不可能なので、最低限、どこに何が残っているかを一覧として明らかにし、その一覧の処理スケジュールを別に管理しなければなりません。一覧がなければ、「消した」という報告は事実ではありません。

実務で本当に大切なこと

次のラボですること

契約120件と請求240件、保存期間表と保存命令が入ったスナップショットを作り、起算日を変えると破棄対象が何件増えるかを、自分で数えます。期間が過ぎた案件を抜き出して、保存命令がかかった案件を除き、予行の計画をファイルとして出したあと、その計画を読んで実際に消します。最後に破棄証跡を出し、残ったファイルから、消された人の連絡先が本当に読めないことを確認し、バックアップに残った複製を一覧として明らかにします。