🟣 概要

学習時間のズレ問題をきっかけに、
フロントとDBのデータ整合性・設計の見直しを行った。

また、localStorageベースからSupabaseへ移行し、
永続化とリアルタイムなデータ管理に対応した。

🟢 ① fix: 学習時間の集計ロジック修正とDB同期処理を改善


❗ 問題

・総学習時間と今日の学習時間がズレる
・時間を減らした時に反映されない

🔍 原因

① diff方式でstudy_logsを積み上げていた
② フロント(state)とDBの値が同期されていなかった
③ 集計ロジックが複雑(today + past)

💣 問題コード(before)

// ❌ 差分でログ追加(ズレの原因)
if (diff !== 0) {
  await addStudyLog(task.id, diff);
}

✅ 解決


① ログ設計を変更

// 🔥 既存ログ削除
await supabase
  .from("study_logs")
  .delete()
  .eq("task_id", task.id);

// 🔥 最新の値だけ登録
await addStudyLog(task.id, newMinutes);