Files
tk-factory-services/tksafety/api/controllers/checklistController.js
Hyungi Ahn 07aac305d6 feat(tksafety): 체크리스트 작업별 항목에 tkuser 작업(task) 참조 연동
- getAllChecks: tasks/work_types/weather_conditions JOIN + 프론트엔드 필드명 alias
- createCheck/updateCheck: item_type→check_type 등 프론트-DB 필드 매핑
- 모달에 작업(task) 드롭다운 추가, 공정 선택 시 동적 로드
- renderWorktypeItems: work_type → task 2단 그룹핑
- openEditItem: async/await로 task 목록 로드 후 값 설정

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 21:07:29 +09:00

86 lines
3.2 KiB
JavaScript

const checklistModel = require('../models/checklistModel');
exports.getAllChecks = async (req, res) => {
try {
const checks = await checklistModel.getAllChecks();
res.json({ success: true, data: checks });
} catch (err) {
console.error('체크리스트 조회 오류:', err);
res.status(500).json({ success: false, error: '체크리스트 조회 실패' });
}
};
exports.getCheckById = async (req, res) => {
try {
const check = await checklistModel.getCheckById(req.params.id);
if (!check) return res.status(404).json({ success: false, error: '항목을 찾을 수 없습니다' });
res.json({ success: true, data: check });
} catch (err) {
console.error('체크리스트 항목 조회 오류:', err);
res.status(500).json({ success: false, error: '조회 실패' });
}
};
exports.createCheck = async (req, res) => {
try {
if (!req.body.item_content && !req.body.check_item) return res.status(400).json({ success: false, error: '점검 항목 내용은 필수입니다' });
const checkId = await checklistModel.createCheck(req.body);
res.status(201).json({ success: true, message: '항목이 추가되었습니다', data: { check_id: checkId } });
} catch (err) {
console.error('체크리스트 항목 추가 오류:', err);
res.status(500).json({ success: false, error: '추가 실패' });
}
};
exports.updateCheck = async (req, res) => {
try {
const result = await checklistModel.updateCheck(req.params.id, req.body);
if (result.affectedRows === 0) return res.status(404).json({ success: false, error: '항목을 찾을 수 없습니다' });
res.json({ success: true, message: '항목이 수정되었습니다' });
} catch (err) {
console.error('체크리스트 항목 수정 오류:', err);
res.status(500).json({ success: false, error: '수정 실패' });
}
};
exports.deleteCheck = async (req, res) => {
try {
const result = await checklistModel.deleteCheck(req.params.id);
if (result.affectedRows === 0) return res.status(404).json({ success: false, error: '항목을 찾을 수 없습니다' });
res.json({ success: true, message: '항목이 삭제되었습니다' });
} catch (err) {
console.error('체크리스트 항목 삭제 오류:', err);
res.status(500).json({ success: false, error: '삭제 실패' });
}
};
exports.getWeatherConditions = async (req, res) => {
try {
const conditions = await checklistModel.getWeatherConditions();
res.json({ success: true, data: conditions });
} catch (err) {
console.error('날씨 조건 조회 오류:', err);
res.status(500).json({ success: false, error: '조회 실패' });
}
};
exports.getWorkTypes = async (req, res) => {
try {
const types = await checklistModel.getWorkTypes();
res.json({ success: true, data: types });
} catch (err) {
console.error('공정 조회 오류:', err);
res.status(500).json({ success: false, error: '조회 실패' });
}
};
exports.getTasksByWorkType = async (req, res) => {
try {
const tasks = await checklistModel.getTasksByWorkType(req.params.workTypeId);
res.json({ success: true, data: tasks });
} catch (err) {
console.error('작업 목록 조회 오류:', err);
res.status(500).json({ success: false, error: '조회 실패' });
}
};