- 페이지 폴더 재구성: safety/, attendance/ 폴더 신규 생성 - work/ → safety/: 이슈 신고, 출입 신청 관련 페이지 이동 - common/ → attendance/: 근태/휴가 관련 페이지 이동 - admin/ 정리: safety-* 파일들을 safety/로 이동 - 사이드바 네비게이션 메뉴 구현 - 카테고리별 메뉴: 작업관리, 안전관리, 근태관리, 시스템관리 - 접기/펼치기 기능 및 상태 저장 - 관리자 전용 메뉴 자동 표시/숨김 - 날씨 API 연동 (기상청 단기예보) - TBM 및 navbar에 현재 날씨 표시 - weatherService.js 추가 - 안전 체크리스트 확장 - 기본/날씨별/작업별 체크 유형 추가 - checklist-manage.html 페이지 추가 - 이슈 신고 시스템 구현 - workIssueController, workIssueModel, workIssueRoutes 추가 - DB 마이그레이션 파일 추가 (실행 대기) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
93 lines
3.2 KiB
JavaScript
93 lines
3.2 KiB
JavaScript
/**
|
|
* 작업 중 문제 신고 라우터
|
|
*/
|
|
|
|
const express = require('express');
|
|
const router = express.Router();
|
|
const workIssueController = require('../controllers/workIssueController');
|
|
const { requireMinLevel } = require('../middlewares/auth');
|
|
|
|
// ==================== 카테고리 관리 ====================
|
|
|
|
// 모든 카테고리 조회
|
|
router.get('/categories', workIssueController.getAllCategories);
|
|
|
|
// 타입별 카테고리 조회 (nonconformity/safety)
|
|
router.get('/categories/type/:type', workIssueController.getCategoriesByType);
|
|
|
|
// 카테고리 생성 (admin 이상)
|
|
router.post('/categories', requireMinLevel('admin'), workIssueController.createCategory);
|
|
|
|
// 카테고리 수정 (admin 이상)
|
|
router.put('/categories/:id', requireMinLevel('admin'), workIssueController.updateCategory);
|
|
|
|
// 카테고리 삭제 (admin 이상)
|
|
router.delete('/categories/:id', requireMinLevel('admin'), workIssueController.deleteCategory);
|
|
|
|
// ==================== 사전 정의 항목 관리 ====================
|
|
|
|
// 모든 항목 조회
|
|
router.get('/items', workIssueController.getAllItems);
|
|
|
|
// 카테고리별 항목 조회
|
|
router.get('/items/category/:categoryId', workIssueController.getItemsByCategory);
|
|
|
|
// 항목 생성 (admin 이상)
|
|
router.post('/items', requireMinLevel('admin'), workIssueController.createItem);
|
|
|
|
// 항목 수정 (admin 이상)
|
|
router.put('/items/:id', requireMinLevel('admin'), workIssueController.updateItem);
|
|
|
|
// 항목 삭제 (admin 이상)
|
|
router.delete('/items/:id', requireMinLevel('admin'), workIssueController.deleteItem);
|
|
|
|
// ==================== 통계 ====================
|
|
|
|
// 통계 요약 (support_team 이상)
|
|
router.get('/stats/summary', requireMinLevel('support_team'), workIssueController.getStatsSummary);
|
|
|
|
// 카테고리별 통계 (support_team 이상)
|
|
router.get('/stats/by-category', requireMinLevel('support_team'), workIssueController.getStatsByCategory);
|
|
|
|
// 작업장별 통계 (support_team 이상)
|
|
router.get('/stats/by-workplace', requireMinLevel('support_team'), workIssueController.getStatsByWorkplace);
|
|
|
|
// ==================== 문제 신고 관리 ====================
|
|
|
|
// 신고 목록 조회
|
|
router.get('/', workIssueController.getAllReports);
|
|
|
|
// 신고 생성
|
|
router.post('/', workIssueController.createReport);
|
|
|
|
// 신고 상세 조회
|
|
router.get('/:id', workIssueController.getReportById);
|
|
|
|
// 신고 수정
|
|
router.put('/:id', workIssueController.updateReport);
|
|
|
|
// 신고 삭제
|
|
router.delete('/:id', workIssueController.deleteReport);
|
|
|
|
// ==================== 상태 관리 ====================
|
|
|
|
// 신고 접수 (support_team 이상)
|
|
router.put('/:id/receive', requireMinLevel('support_team'), workIssueController.receiveReport);
|
|
|
|
// 담당자 배정 (support_team 이상)
|
|
router.put('/:id/assign', requireMinLevel('support_team'), workIssueController.assignReport);
|
|
|
|
// 처리 시작
|
|
router.put('/:id/start', workIssueController.startProcessing);
|
|
|
|
// 처리 완료
|
|
router.put('/:id/complete', workIssueController.completeReport);
|
|
|
|
// 신고 종료 (admin 이상)
|
|
router.put('/:id/close', requireMinLevel('admin'), workIssueController.closeReport);
|
|
|
|
// 상태 변경 이력 조회
|
|
router.get('/:id/logs', workIssueController.getStatusLogs);
|
|
|
|
module.exports = router;
|