コンテンツにスキップ

チャット履歴削除

ステータス:検討中(ドラフト)

このドキュメントは現在**レビュー・議論中**です。仕様が大きく変わる、または開発が見送られる可能性があります。

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 / 復元機能: 物理削除方針のため実装しない
  • 削除の監査ログ: 現時点では不要と判断
  • 管理者による他ユーザーチャット削除: 権限として持たない方針