Skip to content

状態管理・ルーティング設計

状態管理戦略

サーバー状態 vs クライアント状態

状態の種類管理方法
サーバー状態TanStack Query従業員データ、申告データ、マスタデータ
クライアント状態React Context / useStateUIの開閉状態、一時的なフォーム入力
認証状態React Context + BFF セッションログイン状態、ユーザーロール、テナントID。JWT はブラウザに渡さず BFF サーバーサイドで管理(→ BFFアーキテクチャ

キャッシュ戦略

  • Stale-While-Revalidate: 古いデータを表示しつつ、バックグラウンドで更新
  • Optimistic Updates: 自動保存時に即座にUIを更新し、エラー時にロールバック
  • キャッシュ無効化: コマンド実行後に関連クエリを即座に無効化(CQRSの即時整合性に対応)

ルーティング設計

型安全ルーティング

  • TanStack Routerによる型安全なルーティング
  • URLパラメータの型検証
  • ルート間のデータプリフェッチ

URL構造

# 従業員ポータル
/employee/                                  # ダッシュボード
/employee/{taxYear}/declaration             # 申告フロー
/employee/{taxYear}/declaration/confirm     # 最終確認
/employee/settings                          # 個人設定

# 管理者ポータル
/admin/                                     # ダッシュボード
/admin/{taxYear}/declarations               # 申告一覧
/admin/{taxYear}/declarations/{id}          # 従業員詳細
/admin/{taxYear}/reports                    # 帳票出力
/admin/employees                            # 従業員マスタ
/admin/settings                             # 企業設定

# 代行事業者ポータル
/agency/                                    # 横断ダッシュボード
/agency/tasks                               # Global Task Queue
/agency/clients                             # 顧問先一覧
/agency/clients/{tenantId}/...              # 顧問先コンテキスト(管理者ポータル同等)

# システム管理
/system/                                    # システムダッシュボード
/system/tenants                             # テナント管理
/system/masters                             # マスタ管理
/system/jobs                                # ジョブ監視