refactor: worker_id → user_id 전체 마이그레이션 (Phase 1-4)

sso_users.user_id를 단일 식별자로 통합. JWT에서 worker_id 제거,
department_id/is_production 추가. 백엔드 15개 모델, 11개 컨트롤러,
4개 서비스, 7개 라우트, 프론트엔드 32+ JS/11+ HTML 변환.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Hyungi Ahn
2026-03-05 13:13:10 +09:00
parent 2197cdb3d5
commit abd7564e6b
90 changed files with 1790 additions and 925 deletions

View File

@@ -39,39 +39,60 @@ const getAll = async () => {
const [rows] = await db.query(`
SELECT
w.*,
w.user_id,
CASE WHEN w.status = 'active' THEN 1 ELSE 0 END AS is_active,
u.user_id,
su.username,
d.department_name
FROM workers w
LEFT JOIN users u ON w.worker_id = u.worker_id
LEFT JOIN sso_users su ON w.user_id = su.user_id
LEFT JOIN departments d ON w.department_id = d.department_id
ORDER BY w.worker_id DESC
ORDER BY w.worker_name ASC
`);
return rows;
};
// 3. 단일 조회
// 3. 단일 조회 (worker_id 기준 - 하위 호환성 유지)
const getById = async (worker_id) => {
const db = await getDb();
const [rows] = await db.query(`
SELECT
w.*,
w.user_id,
CASE WHEN w.status = 'active' THEN 1 ELSE 0 END AS is_active,
u.user_id,
su.username,
d.department_name
FROM workers w
LEFT JOIN users u ON w.worker_id = u.worker_id
LEFT JOIN sso_users su ON w.user_id = su.user_id
LEFT JOIN departments d ON w.department_id = d.department_id
WHERE w.worker_id = ?
`, [worker_id]);
return rows[0];
};
// 4. 작업자 수정
// 3-1. 단일 조회 (user_id 기준)
const getByUserId = async (userId) => {
const db = await getDb();
const [rows] = await db.query(`
SELECT
w.*,
w.user_id,
CASE WHEN w.status = 'active' THEN 1 ELSE 0 END AS is_active,
su.username,
d.department_name
FROM workers w
LEFT JOIN sso_users su ON w.user_id = su.user_id
LEFT JOIN departments d ON w.department_id = d.department_id
WHERE w.user_id = ?
`, [userId]);
return rows[0];
};
// 4. 작업자 수정 (worker_id 또는 user_id 기준)
const update = async (worker) => {
const db = await getDb();
const {
worker_id,
user_id,
worker_name,
job_type,
status,
@@ -123,12 +144,22 @@ const update = async (worker) => {
throw new Error('업데이트할 필드가 없습니다');
}
values.push(worker_id); // WHERE 조건
// WHERE 조건: user_id 우선, 없으면 worker_id
let whereClause;
if (user_id !== undefined) {
whereClause = 'user_id = ?';
values.push(user_id);
} else if (worker_id !== undefined) {
whereClause = 'worker_id = ?';
values.push(worker_id);
} else {
throw new Error('worker_id 또는 user_id가 필요합니다');
}
const query = `UPDATE workers SET ${updates.join(', ')} WHERE worker_id = ?`;
const query = `UPDATE workers SET ${updates.join(', ')} WHERE ${whereClause}`;
console.log('🔍 실행할 SQL:', query);
console.log('🔍 SQL 파라미터:', values);
console.log('실행할 SQL:', query);
console.log('SQL 파라미터:', values);
const [result] = await db.query(query, values);
@@ -192,6 +223,7 @@ module.exports = {
create,
getAll,
getById,
getByUserId,
update,
remove
};