import { defineStore } from 'pinia' import { ref, computed } from 'vue' import { kappa } from '@/services/kappa-api' import type { KappaUserStory, KappaLogbookEntry, KappaPlanningEntry } from '@/types/kappa' export const useWorkItemsStore = defineStore('workitems', () => { const creating = ref(false) const loading = ref(false) const error = ref(null) const userStories = ref([]) const logbooks = ref([]) const plannings = ref([]) const totalHUs = computed(() => userStories.value.length) const inProgressHUs = computed(() => userStories.value.filter(us => us.status && ['in_progress', 'doing', 'wip', 'active'].includes(us.status.toLowerCase()) ).length ) const totalSessions = computed(() => logbooks.value.length) async function createUserStory(story: KappaUserStory): Promise { creating.value = true error.value = null try { const result = await kappa.createUserStory(story) userStories.value.push(result) return result } catch (e: any) { error.value = e.message return null } finally { creating.value = false } } async function fetchWorkItems(initiativeId?: number) { loading.value = true error.value = null try { const [stories, logs, plans] = await Promise.all([ kappa.getUserStories(initiativeId), kappa.getLogbooks(initiativeId), kappa.getPlannings(initiativeId), ]) userStories.value = Array.isArray(stories) ? stories : (stories.results ?? []) logbooks.value = Array.isArray(logs) ? logs : (logs.results ?? []) plannings.value = Array.isArray(plans) ? plans : (plans.results ?? []) } catch (e: any) { error.value = e.message } finally { loading.value = false } } return { creating, loading, error, userStories, logbooks, plannings, totalHUs, inProgressHUs, totalSessions, createUserStory, fetchWorkItems, } })