Skip to content

セッション切れ時に編集中データの消失を防止する #104

Description

@hirokisakabe

Status: Draft

概要

編集中にセッションが失効した場合でも、ユーザーが入力内容を意図せず失わない体験を設計・実装する。

背景 / モチベーション

現在の Web は apps/web/src/routes/app.tsx で認証状態を確認し、未認証ならログイン画面へ遷移する。タスク作成・編集モーダルの入力中にセッションが切れると、遷移によって入力内容を失う可能性がある。

元の案は遷移前の警告のみだが、それだけでは「データ消失を防止する」という目的を満たすか不明なため、保存・復元範囲を先に決める。

受け入れ条件

  • セッション切れを検知したとき、編集中の内容がある場合は即座に破棄しない
  • ユーザーへセッション切れと、入力内容をどう扱えるかを明示する
  • 再ログイン後に元の画面・対象月へ戻れる
  • 決定した方針に応じて、タスク作成・編集の入力内容を復元または退避できる
  • 入力内容がない場合の既存の認証リダイレクトを壊さない
  • 機密情報を永続ストレージへ不必要に残さない
  • セッション切れ、再ログイン、復元・破棄の主要フローを自動テストで確認できる
  • lint・format-check・typecheck・test が成功する

Ready にするための未決事項

  • 警告だけで完了とするか、再ログイン後の下書き復元まで実装するか決める
  • 下書きを保持する場合、保存先・有効期限・削除タイミングを決める
  • 対象を TaskFormModal の作成・編集だけにするか、他のフォームも含めるか決める
  • セッション切れ後にユーザーへ提示する操作(再ログイン、コピー、破棄など)を決める

スコープ外

  • 長期的なオフライン編集
  • サーバー側への自動下書き保存
  • 複数端末間の下書き同期

実装メモ

  • 認証ガード: apps/web/src/routes/app.tsx
  • 主な対象: apps/web/src/components/TaskFormModal.tsx
  • 認証エラーを API クライアントから UI へ伝える経路も確認する

完了形

方針確定後に実装 PR を作成し、上記の受け入れ条件を満たした時点で完了とする。

参考

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions