import { query } from '../../../utils/db' /** * 취합 보고서 목록 * GET /api/report/summary/list */ export default defineEventHandler(async (event) => { const queryParams = getQuery(event) const projectId = queryParams.projectId ? parseInt(queryParams.projectId as string) : null const year = queryParams.year ? parseInt(queryParams.year as string) : null let sql = ` SELECT s.*, p.project_name, p.project_code, e.employee_name as reviewer_name FROM wr_aggregated_report_summary s JOIN wr_project_info p ON s.project_id = p.project_id LEFT JOIN wr_employee_info e ON s.reviewer_id = e.employee_id WHERE 1=1 ` const params: any[] = [] let paramIndex = 1 if (projectId) { sql += ` AND s.project_id = $${paramIndex++}` params.push(projectId) } if (year) { sql += ` AND s.report_year = $${paramIndex++}` params.push(year) } sql += ' ORDER BY s.report_year DESC, s.report_week DESC, p.project_name' const summaries = await query(sql, params) return summaries.map((s: any) => ({ summaryId: s.summary_id, projectId: s.project_id, projectName: s.project_name, projectCode: s.project_code, reportYear: s.report_year, reportWeek: s.report_week, weekStartDate: s.week_start_date, weekEndDate: s.week_end_date, memberCount: s.member_count, totalWorkHours: s.total_work_hours, reviewerId: s.reviewer_id, reviewerName: s.reviewer_name, reviewerComment: s.reviewer_comment, reviewedAt: s.reviewed_at, summaryStatus: s.summary_status, aggregatedAt: s.aggregated_at })) })