diff --git a/system1-factory/api/models/meetingModel.js b/system1-factory/api/models/meetingModel.js index b9fdafc..d192a5b 100644 --- a/system1-factory/api/models/meetingModel.js +++ b/system1-factory/api/models/meetingModel.js @@ -57,7 +57,7 @@ const MeetingModel = { // 안건 const [items] = await db.query(` - SELECT ai.*, pr.project_name, pr.project_code, + SELECT ai.*, pr.project_name, pr.job_no AS project_code, ms.milestone_name, ms.milestone_date, su.name AS responsible_name FROM meeting_agenda_items ai @@ -185,7 +185,7 @@ const MeetingModel = { const db = await getDb(); let sql = ` SELECT ai.*, m.title AS meeting_title, m.meeting_date, - pr.project_name, pr.project_code, + pr.project_name, pr.job_no AS project_code, su.name AS responsible_name FROM meeting_agenda_items ai JOIN meeting_minutes m ON ai.meeting_id = m.meeting_id diff --git a/system1-factory/api/models/scheduleModel.js b/system1-factory/api/models/scheduleModel.js index 94cc1ea..88889c8 100644 --- a/system1-factory/api/models/scheduleModel.js +++ b/system1-factory/api/models/scheduleModel.js @@ -48,7 +48,7 @@ const ScheduleModel = { async getEntries(filters = {}) { const db = await getDb(); let sql = ` - SELECT e.*, p.phase_name, p.color AS phase_color, pr.project_name, pr.project_code, + SELECT e.*, p.phase_name, p.color AS phase_color, pr.project_name, pr.job_no AS project_code, su.name AS created_by_name FROM schedule_entries e JOIN schedule_phases p ON e.phase_id = p.phase_id @@ -66,7 +66,7 @@ const ScheduleModel = { sql += ' AND ((YEAR(e.start_date) = ? AND MONTH(e.start_date) = ?) OR (YEAR(e.end_date) = ? AND MONTH(e.end_date) = ?))'; params.push(filters.year, filters.month, filters.year, filters.month); } - sql += ' ORDER BY pr.project_code, p.display_order, e.display_order'; + sql += ' ORDER BY pr.job_no, p.display_order, e.display_order'; const [rows] = await db.query(sql, params); return rows; }, @@ -76,13 +76,13 @@ const ScheduleModel = { // 해당 연도에 걸치는 모든 항목 const [entries] = await db.query(` SELECT e.*, p.phase_name, p.color AS phase_color, p.display_order AS phase_order, - pr.project_name, pr.project_code + pr.project_name, pr.job_no AS project_code FROM schedule_entries e JOIN schedule_phases p ON e.phase_id = p.phase_id JOIN projects pr ON e.project_id = pr.project_id WHERE (YEAR(e.start_date) <= ? AND YEAR(e.end_date) >= ?) AND e.status != 'cancelled' - ORDER BY pr.project_code, p.display_order, e.display_order + ORDER BY pr.job_no, p.display_order, e.display_order `, [year, year]); // 의존관계 @@ -98,7 +98,7 @@ const ScheduleModel = { // 마일스톤 const [milestones] = await db.query(` - SELECT m.*, pr.project_name, pr.project_code + SELECT m.*, pr.project_name, pr.job_no AS project_code FROM schedule_milestones m JOIN projects pr ON m.project_id = pr.project_id WHERE YEAR(m.milestone_date) = ? @@ -200,7 +200,7 @@ const ScheduleModel = { async getMilestones(filters = {}) { const db = await getDb(); let sql = ` - SELECT m.*, pr.project_name, pr.project_code, e.task_name AS entry_task_name, + SELECT m.*, pr.project_name, pr.job_no AS project_code, e.task_name AS entry_task_name, su.name AS created_by_name FROM schedule_milestones m JOIN projects pr ON m.project_id = pr.project_id diff --git a/system1-factory/web/js/meeting-detail.js b/system1-factory/web/js/meeting-detail.js index 621d0f6..d4eb010 100644 --- a/system1-factory/web/js/meeting-detail.js +++ b/system1-factory/web/js/meeting-detail.js @@ -35,7 +35,7 @@ document.addEventListener('DOMContentLoaded', async () => { // Populate project select in item modal const projSel = document.getElementById('itemProject'); projects.forEach(p => { - projSel.innerHTML += ``; + projSel.innerHTML += ``; }); // Populate responsible user select diff --git a/system1-factory/web/js/schedule.js b/system1-factory/web/js/schedule.js index 4103837..ffaccc9 100644 --- a/system1-factory/web/js/schedule.js +++ b/system1-factory/web/js/schedule.js @@ -374,7 +374,7 @@ function showMilestoneDetail(milestoneId) { function showNcPopup(projectId) { const list = ncCache[projectId] || []; const proj = projects.find(p => p.project_id === projectId); - document.getElementById('ncPopupTitle').textContent = `부적합 현황 - ${proj ? proj.project_code : ''}`; + document.getElementById('ncPopupTitle').textContent = `부적합 현황 - ${proj ? proj.job_no : ''}`; const statusLabels = { reported: '신고', received: '접수', reviewing: '검토중', in_progress: '처리중', completed: '완료' }; let html = ''; if (list.length === 0) { @@ -402,7 +402,7 @@ function openEntryModal(editId) { document.getElementById('entryModalTitle').textContent = isEdit ? '공정표 항목 수정' : '공정표 항목 추가'; // Populate dropdowns - populateSelect('entryProject', projects, 'project_id', p => `${p.project_code} ${p.project_name}`); + populateSelect('entryProject', projects, 'project_id', p => `${p.job_no} ${p.project_name}`); populateSelect('entryPhase', phases, 'phase_id', p => p.phase_name); // Template select (populated on phase change) @@ -530,7 +530,7 @@ async function saveEntry() { /* ===== Batch Modal ===== */ function openBatchModal() { - populateSelect('batchProject', projects, 'project_id', p => `${p.project_code} ${p.project_name}`); + populateSelect('batchProject', projects, 'project_id', p => `${p.job_no} ${p.project_name}`); populateSelect('batchPhase', phases, 'phase_id', p => p.phase_name); document.getElementById('batchStartDate').value = ''; document.getElementById('batchTemplateList').innerHTML = ''; @@ -610,7 +610,7 @@ function openMilestoneModal(editId) { const isEdit = !!editId; document.getElementById('milestoneModalTitle').textContent = isEdit ? '마일스톤 수정' : '마일스톤 추가'; - populateSelect('milestoneProject', projects, 'project_id', p => `${p.project_code} ${p.project_name}`); + populateSelect('milestoneProject', projects, 'project_id', p => `${p.job_no} ${p.project_name}`); if (isEdit) { const m = ganttData.milestones.find(ms => ms.milestone_id === editId);