// routes/healthRoutes.js const express = require('express'); const router = express.Router(); // 헬스체크 엔드포인트 router.get('/', (req, res) => { res.json({ status: 'healthy', service: 'Technical Korea API', timestamp: new Date().toISOString(), uptime: process.uptime() }); }); // 상세 헬스체크 (옵션) router.get('/detail', (req, res) => { res.json({ status: 'healthy', service: 'Technical Korea API', version: '2.1.0', timestamp: new Date().toISOString(), uptime: process.uptime(), memory: process.memoryUsage(), environment: process.env.NODE_ENV || 'development' }); }); // 임시 마이그레이션 엔드포인트 - TBM work_type_id 수정 // 실행 후 이 코드를 삭제하세요! router.post('/migrate-work-type-id', async (req, res) => { try { const { getDb } = require('../dbPool'); const db = await getDb(); console.log('🔄 TBM 기반 작업보고서 work_type_id 수정 시작...'); // 1. 수정 대상 확인 const [checkResult] = await db.query(` SELECT dwr.id, dwr.work_type_id as current_work_type_id, ta.task_id as correct_task_id, w.worker_name, dwr.report_date FROM daily_work_reports dwr INNER JOIN tbm_team_assignments ta ON dwr.tbm_assignment_id = ta.assignment_id INNER JOIN workers w ON dwr.worker_id = w.worker_id WHERE dwr.tbm_assignment_id IS NOT NULL AND ta.task_id IS NOT NULL AND dwr.work_type_id != ta.task_id ORDER BY dwr.report_date DESC `); console.log(`📊 수정 대상: ${checkResult.length}개 레코드`); if (checkResult.length === 0) { return res.json({ success: true, message: '수정할 데이터가 없습니다.', data: { affected_rows: 0 } }); } // 수정 전 샘플 로깅 console.log('수정 전 샘플:', checkResult.slice(0, 5)); // 2. 업데이트 실행 const [updateResult] = await db.query(` UPDATE daily_work_reports dwr INNER JOIN tbm_team_assignments ta ON dwr.tbm_assignment_id = ta.assignment_id SET dwr.work_type_id = ta.task_id WHERE dwr.tbm_assignment_id IS NOT NULL AND ta.task_id IS NOT NULL AND dwr.work_type_id != ta.task_id `); console.log(`✅ 업데이트 완료: ${updateResult.affectedRows}개 레코드 수정됨`); // 3. 수정 후 확인 const [samples] = await db.query(` SELECT dwr.id, dwr.work_type_id, t.task_name, wt.name as work_type_name, w.worker_name, dwr.report_date FROM daily_work_reports dwr INNER JOIN tbm_team_assignments ta ON dwr.tbm_assignment_id = ta.assignment_id LEFT JOIN tasks t ON dwr.work_type_id = t.task_id LEFT JOIN work_types wt ON t.work_type_id = wt.id LEFT JOIN workers w ON dwr.worker_id = w.worker_id WHERE dwr.tbm_assignment_id IS NOT NULL ORDER BY dwr.report_date DESC LIMIT 10 `); res.json({ success: true, message: `${updateResult.affectedRows}개 레코드가 수정되었습니다.`, data: { affected_rows: updateResult.affectedRows, before_count: checkResult.length, samples: samples.map(s => ({ id: s.id, worker: s.worker_name, date: s.report_date, task: s.task_name, work_type: s.work_type_name })) } }); } catch (error) { console.error('마이그레이션 실패:', error); res.status(500).json({ success: false, error: '마이그레이션 실패: ' + error.message }); } }); module.exports = router;