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

@@ -10,7 +10,7 @@ const TbmController = {
try {
const sessionData = {
session_date: req.body.session_date,
leader_id: req.body.leader_id || null,
leader_user_id: req.body.leader_user_id || null,
project_id: req.body.project_id || null,
work_location: req.body.work_location || null,
work_description: req.body.work_description || null,
@@ -135,7 +135,7 @@ const TbmController = {
try {
const assignmentData = {
session_id: req.params.sessionId,
worker_id: req.body.worker_id,
user_id: req.body.user_id,
assigned_role: req.body.assigned_role || null,
work_detail: req.body.work_detail || null,
is_present: req.body.is_present,
@@ -148,7 +148,7 @@ const TbmController = {
work_hours: req.body.work_hours !== undefined ? req.body.work_hours : undefined
};
if (!assignmentData.worker_id) {
if (!assignmentData.user_id) {
return res.status(400).json({ success: false, message: '작업자 ID가 필요합니다.' });
}
@@ -164,7 +164,7 @@ const TbmController = {
try {
const assignmentData = {
session_id: req.params.sessionId,
worker_id: req.body.worker_id,
user_id: req.body.user_id,
work_hours: req.body.work_hours,
project_id: req.body.project_id || null,
work_type_id: req.body.work_type_id || null,
@@ -173,7 +173,7 @@ const TbmController = {
workplace_id: req.body.workplace_id || null
};
if (!assignmentData.worker_id || !assignmentData.work_hours) {
if (!assignmentData.user_id || !assignmentData.work_hours) {
return res.status(400).json({ success: false, message: '작업자 ID와 작업시간이 필요합니다.' });
}
@@ -218,8 +218,8 @@ const TbmController = {
removeTeamMember: async (req, res) => {
try {
const { sessionId, workerId } = req.params;
const result = await TbmModel.removeTeamMember(sessionId, workerId);
const { sessionId, userId } = req.params;
const result = await TbmModel.removeTeamMember(sessionId, userId);
if (result.affectedRows === 0) {
return res.status(404).json({ success: false, message: '팀원을 찾을 수 없습니다.' });
@@ -432,17 +432,17 @@ const TbmController = {
try {
const handoverData = {
session_id: req.body.session_id,
from_leader_id: req.body.from_leader_id,
to_leader_id: req.body.to_leader_id,
from_leader_user_id: req.body.from_leader_user_id,
to_leader_user_id: req.body.to_leader_user_id,
handover_date: req.body.handover_date,
handover_time: req.body.handover_time || null,
reason: req.body.reason,
handover_notes: req.body.handover_notes || null,
worker_ids: req.body.worker_ids || []
user_ids: req.body.user_ids || []
};
if (!handoverData.session_id || !handoverData.from_leader_id ||
!handoverData.to_leader_id || !handoverData.handover_date || !handoverData.reason) {
if (!handoverData.session_id || !handoverData.from_leader_user_id ||
!handoverData.to_leader_user_id || !handoverData.handover_date || !handoverData.reason) {
return res.status(400).json({ success: false, message: '필수 정보가 누락되었습니다.' });
}
@@ -483,7 +483,7 @@ const TbmController = {
getMyPendingHandovers: async (req, res) => {
try {
const toLeaderId = req.user.worker_id;
const toLeaderId = req.user.user_id;
if (!toLeaderId) {
return res.status(400).json({ success: false, message: '작업자 정보를 찾을 수 없습니다.' });
}
@@ -532,10 +532,10 @@ const TbmController = {
createTransfer: async (req, res) => {
try {
const { transfer_type, worker_id, source_session_id, dest_session_id, hours,
const { transfer_type, user_id, source_session_id, dest_session_id, hours,
project_id, work_type_id, task_id, workplace_category_id, workplace_id } = req.body;
if (!transfer_type || !worker_id || !source_session_id || !dest_session_id || !hours) {
if (!transfer_type || !user_id || !source_session_id || !dest_session_id || !hours) {
return res.status(400).json({ success: false, message: '필수 정보가 누락되었습니다.' });
}
@@ -545,7 +545,7 @@ const TbmController = {
String(today.getDate()).padStart(2, '0');
const transferData = {
transfer_type, worker_id, source_session_id, dest_session_id,
transfer_type, user_id, source_session_id, dest_session_id,
hours, initiated_by: req.user.user_id, transfer_date: transferDate,
project_id, work_type_id, task_id, workplace_category_id, workplace_id
};