🟣 概要
学習時間のズレ問題をきっかけに、
フロントと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);