アカウントのデータ出力と消去
プライバシー台帳、認証付き出力、遅延消去、外部サービス上のデータ削除、仮名化、取り消し保護を設定します。
スターターのコミット
2a1a04aに同期しています。本番公開前に、法務担当者と保持設定を確認してください。
顧客が自分のデータを受け取ったり、アカウントの消去を依頼したりできる必要がある場合に使います。スターターは、認証付き API、永続ワーカー、表ごとにテストされた取り扱い方針、非公開の出力ファイルを提供します。ただし、これらの完成済み設定画面は提供しません。製品に必要な確認 UI と方針の文言を追加してください。
ボタンを公開する前に方針を決める
- 削除、仮名化、保持、出力対象外のいずれにするかを決めます。同梱の対応表は安全な技術的出発点であり、法的な結論ではありません。
- 既定の七日間の猶予・保持期間、15分以内の新しいセッション、Stripe Customer の削除、セキュリティ用ブロックリストの保持を確認します。
- 共有組織の所有権移管と、各外部サービス上の生成物を削除する方法を決めます。ワーカーは義務を無視して成功扱いにせず、必要な削除ができなければ消去処理を止めます。
本番準備完了の条件: 法務担当者が方針と公開文言を確認し、テスト用ユーザーが出力ファイルを開け、猶予期間中の取り消し条件と owner / admin による停止条件が明確で、最終処理が全データを扱い、署名付き URL をログに残さないことです。
テストされるデータ台帳
src/config/account-data-policy.ts はすべての DB 表を、削除、仮名化、保持、非個人情報のいずれかに分類し、出力対象かどうかも定義します。テストが src/db/schema.ts と照合するため、取り扱いを決めずに表を追加するとビルドが失敗します。
認証情報、パスワードハッシュ、セッション、確認トークン、TOTP シークレットは出力しません。財務、監査、台帳、共有組織の記録は、識別子を置き換えた後に保持できます。
エクスポート
POST /api/account/data-export は、認証、同一オリジン、アクセス頻度制限、Idempotency-Key を要求し、HTTP 202 でジョブを登録します。GET /api/account/data-export/{requestUuid} で状態を確認します。
完了後は、五分間有効なマニフェストと非公開ファイルの署名付き URL を返します。出力物は非公開のまま、既定では七日後に失効します。
消去
POST /api/account/deletion には、15分以内に作られた新しいセッションも必要です。既定の猶予期間は七日で、DELETE で取り消し、GET で状態を確認できます。
共有組織の最後の owner、または最後の完全管理者は、先に権限を移管する必要があります。猶予期間が終わると、ワーカーは認証を失効させ、Stripe を解約し、個人用組織のオブジェクトと外部出力を削除します。その後、削除可能な行を消し、保持対象の注文、クレジット、予約、監査記録を仮名化します。
src/config/account-lifecycle.ts が、猶予期間、保持期間、要求するセッションの新しさ、Stripe Customer の削除、ブロックリスト、署名付き URL の有効時間を制御します。これらは法的助言ではありません。
非公開ストレージと cron を維持し、新しい外部サービスには削除フックを追加し、新しい表を追加するときは同時に取り扱い方針も更新してください。テスト用アカウントで一連の処理を試し、出力内容や署名付き URL をログに残さないでください。ワーカーの再試行は永続ジョブと稼働準備、公開前の最終確認はデプロイとセキュリティで確認できます。