Skip to content

日付あり・未スケジュール間の移動でQuery cacheを楽観的更新する - #279

Merged
hirokisakabe merged 4 commits into
mainfrom
fix/optimistic-query-cache-277
Aug 12, 2026
Merged

日付あり・未スケジュール間の移動でQuery cacheを楽観的更新する#279
hirokisakabe merged 4 commits into
mainfrom
fix/optimistic-query-cache-277

Conversation

@hirokisakabe

Copy link
Copy Markdown
Owner

close #277

概要

Webでタスクを日付あり・未スケジュール間に移動した際、表示中カレンダー範囲と未スケジュール一覧のTanStack Query cacheを同時に楽観的更新するようにしました。

  • 表示範囲内・未スケジュール・表示範囲外を日付から正しく判定
  • API失敗時は対象タスクだけを元の所属・位置へロールバック
  • 同一タスクの更新を直列化し、異なるタスクは並行実行
  • 全update mutationの完了後だけ再取得し、進行中の楽観的値との競合を防止
  • onMutate内部例外でも部分更新を復元し、lockとcoordinatorを確実に解放
  • 元cacheが未取得の場合はundefined状態を復元

影響範囲

  • apps/web/src/hooks/useTasks.ts
  • apps/web/src/hooks/useTasks.test.tsx

API、DB、CLI、Mobileには変更を加えていません。

テスト

  • pnpm --filter @tascal/web exec vitest run src/hooks/useTasks.test.tsx(16 tests)
  • pnpm lint
  • pnpm format:check
  • pnpm typecheck
  • pnpm test(Web 102、API 102、CLI 33、Shared 21、Mobile 24、Design tokens 2)
  • acceptance-check: ✓ 8 / ✗ 0 / ? 0

Cross-review

  • 最終結果: Critical 0 / Warning 1
  • Warningは、onErrorのrestore例外・invalidate失敗・冪等解放に対する追加テスト余地の指摘
  • 対象コードはbest-effort rollback、元例外保持、冪等な共通解放を実装済みで、今回の主題であるonMutate部分更新例外、rollback、同一ID後続回復、invalidateを自動テスト済みのため見送り

@github-actions

Copy link
Copy Markdown

🚀 プレビュー環境がデプロイされました!

URL: https://tascal-pr-279-197260822086.asia-northeast1.run.app

@hirokisakabe
hirokisakabe merged commit 86312da into main Aug 12, 2026
8 checks passed
@hirokisakabe
hirokisakabe deleted the fix/optimistic-query-cache-277 branch August 12, 2026 04:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

日付あり・未スケジュール間の移動で両Query cacheを楽観的更新する

1 participant