작업계획서대로 진행
This commit is contained in:
@@ -64,6 +64,33 @@ export default defineEventHandler(async (event) => {
|
||||
const totalWorkHours = employeeStats.reduce((sum: number, e: any) => sum + parseFloat(e.work_hours || 0), 0)
|
||||
const totalPlanHours = employeeStats.reduce((sum: number, e: any) => sum + parseFloat(e.plan_hours || 0), 0)
|
||||
|
||||
// 4. TODO 현황
|
||||
const todoStats = await query<any>(`
|
||||
SELECT
|
||||
COUNT(*) FILTER (WHERE status = 'PENDING') as pending,
|
||||
COUNT(*) FILTER (WHERE status = 'IN_PROGRESS') as in_progress,
|
||||
COUNT(*) FILTER (WHERE status = 'COMPLETED' AND completed_at >= NOW() - INTERVAL '7 days') as completed_this_week,
|
||||
COUNT(*) FILTER (WHERE due_date < CURRENT_DATE AND status NOT IN ('COMPLETED', 'CANCELLED')) as overdue
|
||||
FROM wr_todo
|
||||
`, [])
|
||||
|
||||
// 5. 유지보수 현황
|
||||
const maintenanceStats = await query<any>(`
|
||||
SELECT
|
||||
COUNT(*) FILTER (WHERE status = 'PENDING') as pending,
|
||||
COUNT(*) FILTER (WHERE status = 'IN_PROGRESS') as in_progress,
|
||||
COUNT(*) FILTER (WHERE status = 'COMPLETED' AND updated_at >= NOW() - INTERVAL '7 days') as completed_this_week
|
||||
FROM wr_maintenance_task
|
||||
`, [])
|
||||
|
||||
// 6. 최근 회의 현황
|
||||
const meetingStats = await query<any>(`
|
||||
SELECT
|
||||
COUNT(*) FILTER (WHERE meeting_date >= CURRENT_DATE - INTERVAL '7 days') as this_week,
|
||||
COUNT(*) FILTER (WHERE meeting_date >= CURRENT_DATE - INTERVAL '30 days') as this_month
|
||||
FROM wr_meeting
|
||||
`, [])
|
||||
|
||||
return {
|
||||
year,
|
||||
week,
|
||||
@@ -75,6 +102,21 @@ export default defineEventHandler(async (event) => {
|
||||
totalPlanHours,
|
||||
projectCount: projectStats.length
|
||||
},
|
||||
todo: {
|
||||
pending: parseInt(todoStats[0]?.pending) || 0,
|
||||
inProgress: parseInt(todoStats[0]?.in_progress) || 0,
|
||||
completedThisWeek: parseInt(todoStats[0]?.completed_this_week) || 0,
|
||||
overdue: parseInt(todoStats[0]?.overdue) || 0
|
||||
},
|
||||
maintenance: {
|
||||
pending: parseInt(maintenanceStats[0]?.pending) || 0,
|
||||
inProgress: parseInt(maintenanceStats[0]?.in_progress) || 0,
|
||||
completedThisWeek: parseInt(maintenanceStats[0]?.completed_this_week) || 0
|
||||
},
|
||||
meeting: {
|
||||
thisWeek: parseInt(meetingStats[0]?.this_week) || 0,
|
||||
thisMonth: parseInt(meetingStats[0]?.this_month) || 0
|
||||
},
|
||||
employees: employeeStats.map((e: any) => ({
|
||||
employeeId: e.employee_id,
|
||||
employeeName: e.employee_name,
|
||||
|
||||
Reference in New Issue
Block a user