'use client'; import { create } from 'zustand'; import type { TaskWorklog } from '@/lib/task-worklog'; const STORAGE_KEY = 'ftb_task_worklogs_v1'; function saveLocal(items: TaskWorklog[]) { try { localStorage.setItem(STORAGE_KEY, JSON.stringify(items)); } catch {} } function loadLocal(): TaskWorklog[] | null { try { const raw = localStorage.getItem(STORAGE_KEY); if (raw) return JSON.parse(raw); } catch {} return null; } interface TaskWorklogState { worklogs: TaskWorklog[]; fetchWorklogs: () => void; addWorklog: (data: Omit) => void; deleteWorklog: (id: string) => void; getActualHours: (taskId: string) => number; } export const useTaskWorklogStore = create((set, get) => ({ worklogs: [], fetchWorklogs: () => { const cached = loadLocal(); if (cached) set({ worklogs: cached }); }, addWorklog: (data) => { const item: TaskWorklog = { ...data, id: `wl-${Date.now()}`, createdAt: new Date().toISOString(), }; const updated = [...get().worklogs, item]; set({ worklogs: updated }); saveLocal(updated); }, deleteWorklog: (id) => { const updated = get().worklogs.filter((w) => w.id !== id); set({ worklogs: updated }); saveLocal(updated); }, getActualHours: (taskId) => { return get().worklogs .filter((w) => w.taskId === taskId) .reduce((sum, w) => sum + w.hours, 0); }, }));