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);