// routes/workAnalysis.js const express = require('express'); const router = express.Router(); const workAnalysisController = require('../controllers/workAnalysisController'); // πŸ”’ 뢄석 κΈ°λŠ₯은 admin λ˜λŠ” system κΆŒν•œλ§Œ μ ‘κ·Ό κ°€λŠ₯ const requireAnalysisAccess = (req, res, next) => { if (!req.user) { return res.status(401).json({ error: '인증이 ν•„μš”ν•©λ‹ˆλ‹€.' }); } const allowedLevels = ['admin', 'system']; if (!allowedLevels.includes(req.user.access_level)) { return res.status(403).json({ error: '뢄석 κΈ°λŠ₯ μ ‘κ·Ό κΆŒν•œμ΄ μ—†μŠ΅λ‹ˆλ‹€. κ΄€λ¦¬μž κΆŒν•œμ΄ ν•„μš”ν•©λ‹ˆλ‹€.', required: 'admin λ˜λŠ” system', current: req.user.access_level }); } console.log(`πŸ”“ 뢄석 κΈ°λŠ₯ μ ‘κ·Ό ν—ˆμš©: ${req.user.username} (${req.user.access_level})`); next(); }; // μž„μ‹œλ‘œ κΆŒν•œ 체크 κ±΄λ„ˆλ›°κΈ° (ν…ŒμŠ€νŠΈμš©) const skipAuth = (req, res, next) => { console.log('⚠️ μž„μ‹œλ‘œ κΆŒν•œ 체크 κ±΄λ„ˆλ›°κΈ°'); next(); }; // κΈ°λ³Έ 톡계 쑰회 - μž„μ‹œλ‘œ κΆŒν•œ 체크 λΉ„ν™œμ„±ν™” router.get('/stats', skipAuth, workAnalysisController.getStats); // 일별 μž‘μ—…μ‹œκ°„ 좔이 - μž„μ‹œλ‘œ κΆŒν•œ 체크 λΉ„ν™œμ„±ν™” router.get('/daily-trend', skipAuth, workAnalysisController.getDailyTrend); // μž‘μ—…μžλ³„ 톡계 - μž„μ‹œλ‘œ κΆŒν•œ 체크 λΉ„ν™œμ„±ν™” router.get('/worker-stats', skipAuth, workAnalysisController.getWorkerStats); // ν”„λ‘œμ νŠΈλ³„ 톡계 - μž„μ‹œλ‘œ κΆŒν•œ 체크 λΉ„ν™œμ„±ν™” router.get('/project-stats', skipAuth, workAnalysisController.getProjectStats); // μž‘μ—…μœ ν˜•λ³„ 톡계 - μž„μ‹œλ‘œ κΆŒν•œ 체크 λΉ„ν™œμ„±ν™” router.get('/worktype-stats', skipAuth, workAnalysisController.getWorkTypeStats); // 졜근 μž‘μ—… ν˜„ν™© - μž„μ‹œλ‘œ κΆŒν•œ 체크 λΉ„ν™œμ„±ν™” router.get('/recent-work', skipAuth, workAnalysisController.getRecentWork); // μš”μΌλ³„ νŒ¨ν„΄ 뢄석 router.get('/weekday-pattern', requireAnalysisAccess, workAnalysisController.getWeekdayPattern); // μ—λŸ¬ 뢄석 router.get('/error-analysis', requireAnalysisAccess, workAnalysisController.getErrorAnalysis); // 월별 비ꡐ 뢄석 router.get('/monthly-comparison', requireAnalysisAccess, workAnalysisController.getMonthlyComparison); // μž‘μ—…μžλ³„ μ „λ¬ΈλΆ„μ•Ό 뢄석 router.get('/worker-specialization', requireAnalysisAccess, workAnalysisController.getWorkerSpecialization); // λŒ€μ‹œλ³΄λ“œμš© μ’…ν•© 데이터 (ν•œ λ²ˆμ— μ—¬λŸ¬ 데이터 쑰회) router.get('/dashboard', requireAnalysisAccess, workAnalysisController.getDashboardData); // ν—¬μŠ€μ²΄ν¬ - 인증 없이 μ ‘κ·Ό κ°€λŠ₯ router.get('/health', (req, res) => { res.status(200).json({ success: true, message: 'Work Analysis API is running', timestamp: new Date().toISOString() }); }); module.exports = router;