チャット履歴削除¶
ステータス:検討中(ドラフト)
このドキュメントは現在**レビュー・議論中**です。仕様が大きく変わる、または開発が見送られる可能性があります。
1. メタデータ¶
- 作成者: 明石穂崇
- 作成日: 2026/04/17
- 関連チケット: SOA-71
2. 目的と背景 (Why)¶
- なぜこれを作るのか?: 現状、ユーザーは自分のチャット履歴(スペース)を削除する手段を持っていない。古いチャットが溜まっていくことでUIが煩雑になり、使い勝手が低下する。また、ユーザー自身が「もう残しておきたくない」と感じる会話を消せない状態は体験として好ましくない。
- 目指すゴール: ユーザーが不要になったチャット履歴を自分で削除でき、ユーザー視点で「完全に忘れ去られた」状態を実現する。
3. ターゲットユーザー (Who)¶
- 誰のための機能か?: micotoの全エンドユーザー。自分のスペース(チャット履歴)を管理したい利用者。
4. ユーザーメリットと想定効果 (Value & ROI)¶
- ユーザーが得られる価値:
- 不要な履歴を整理してUIをすっきり保てる
- 残しておきたくない会話を能動的に削除できる安心感
- 想定効果:
- Firestoreに蓄積される不要データの抑制によるコスト削減
- 「削除機能がない」という基本的な不満点の解消
5. 機能要件 (What)¶
5.1 削除方針¶
**物理削除**とする。論理削除は採用しない。
理由: 法務要件(GDPR等)からの要請ではなく、「ユーザー視点で忘れ去られたほうが良い」という体験上の判断。論理削除で裏にデータが残り続ける状態よりも、本当に消えているほうがユーザーにとって誠実な実装となる。
5.2 削除対象データ¶
| # | ストレージ | 削除内容 |
|---|---|---|
| 1 | Firestore | users/${userId}/spaces/${spaceId} ドキュメント + userPrompts サブコレクション |
| 2 | Agent Engine | spaceDoc.sessionId をキーにしたセッション |
| 3 | Cloud Storage | 該当スペースに紐づくアップロード済み添付ファイル |
5.3 BigQueryのチャットログは削除対象外¶
polaris-dwh-project.chat_logs.micoto_chat_log のデータは**削除しない**。
理由: - BQ のデータは分析用途で保持したい - Firebase Authentication の uid が残っているため厳密には「匿名化」ではなく「仮名化」だが、Firebase 側と突き合わせない限り個人特定はできない運用としている - より厳密な匿名化(uid のハッシュ化)は**別Issue**で対応する
5.4 削除順序とユーザーへのレスポンス¶
1. Firestore (spaces doc + userPrompts サブコレクション) を削除
↓ ここで成功したら、ユーザーには「削除成功」レスポンスを返す
(UIからはこの時点で履歴が消えて見えるため、ユーザー視点では目的達成)
2. Agent Engine セッション削除(ベストエフォート)
3. Cloud Storage 添付ファイル削除(ベストエフォート)
ポイント: - Firestore が先頭なのは、ユーザーに対して「消えた」という状態を最短で届けるため - 2, 3 はベストエフォートとする。失敗してもユーザーにはエラーを返さない
5.5 部分失敗の扱い¶
2 (Agent Engine) / 3 (Cloud Storage) の削除が失敗した場合:
- エラーをログに残す(spaceId, sessionId, fileId などを含む)
- ユーザーへの返却は成功のまま
- 残存データは**裏の仕組みで掃除する**(定期バッチ等。実装方式は別途検討)
補足: 残存データの掃除機構は本PRDのスコープ外。将来対応として別Issue化する想定。
5.6 UI¶
- スペースにフォーカス → 3点ドット → メニュー → 削除ボタン
- 削除ボタン押下時に**確認ダイアログ**を表示
- ダイアログ承認で即削除実行(undoなし)
5.7 権限¶
- 自分のスペースのみ削除可能
- 管理者ロールでも他ユーザーのチャットを削除する権限は持たない
6. 非機能要件・やらないこと¶
6.1 スコープ外(本PRDでは対応しない)¶
- BQ の uid ハッシュ化: 別Issueで対応
- 残存データの自動クリーンアップバッチ: 将来対応
- undo / 復元機能: 物理削除方針のため実装しない
- 削除の監査ログ: 現時点では不要と判断
- 管理者による他ユーザーチャット削除: 権限として持たない方針