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:
@@ -30,7 +30,7 @@ const vacationRequestModel = {
|
||||
requester.name as requester_name,
|
||||
reviewer.name as reviewer_name
|
||||
FROM vacation_requests vr
|
||||
INNER JOIN workers w ON vr.worker_id = w.worker_id
|
||||
INNER JOIN workers w ON vr.user_id = w.user_id
|
||||
INNER JOIN vacation_types vt ON vr.vacation_type_id = vt.id
|
||||
LEFT JOIN users requester ON vr.requested_by = requester.user_id
|
||||
LEFT JOIN users reviewer ON vr.reviewed_by = reviewer.user_id
|
||||
@@ -39,9 +39,9 @@ const vacationRequestModel = {
|
||||
|
||||
const params = [];
|
||||
|
||||
if (filters.worker_id) {
|
||||
query += ` AND vr.worker_id = ?`;
|
||||
params.push(filters.worker_id);
|
||||
if (filters.user_id) {
|
||||
query += ` AND vr.user_id = ?`;
|
||||
params.push(filters.user_id);
|
||||
}
|
||||
if (filters.status) {
|
||||
query += ` AND vr.status = ?`;
|
||||
@@ -85,7 +85,7 @@ const vacationRequestModel = {
|
||||
reviewer.name as reviewer_name,
|
||||
reviewer.username as reviewer_username
|
||||
FROM vacation_requests vr
|
||||
INNER JOIN workers w ON vr.worker_id = w.worker_id
|
||||
INNER JOIN workers w ON vr.user_id = w.user_id
|
||||
INNER JOIN vacation_types vt ON vr.vacation_type_id = vt.id
|
||||
LEFT JOIN users requester ON vr.requested_by = requester.user_id
|
||||
LEFT JOIN users reviewer ON vr.reviewed_by = reviewer.user_id
|
||||
@@ -128,35 +128,35 @@ const vacationRequestModel = {
|
||||
/**
|
||||
* 특정 작업자의 대기 중인 휴가 신청 수
|
||||
*/
|
||||
async getPendingCount(workerId) {
|
||||
async getPendingCount(userId) {
|
||||
const db = await getDb();
|
||||
const [rows] = await db.query(`
|
||||
SELECT COUNT(*) as count FROM vacation_requests
|
||||
WHERE worker_id = ? AND status = 'pending'
|
||||
`, [workerId]);
|
||||
WHERE user_id = ? AND status = 'pending'
|
||||
`, [userId]);
|
||||
return rows;
|
||||
},
|
||||
|
||||
/**
|
||||
* 특정 작업자의 승인된 휴가 일수 합계 (특정 기간)
|
||||
*/
|
||||
async getApprovedDaysInPeriod(workerId, startDate, endDate) {
|
||||
async getApprovedDaysInPeriod(userId, startDate, endDate) {
|
||||
const db = await getDb();
|
||||
const [rows] = await db.query(`
|
||||
SELECT COALESCE(SUM(days_used), 0) as total_days FROM vacation_requests
|
||||
WHERE worker_id = ? AND status = 'approved' AND start_date >= ? AND end_date <= ?
|
||||
`, [workerId, startDate, endDate]);
|
||||
WHERE user_id = ? AND status = 'approved' AND start_date >= ? AND end_date <= ?
|
||||
`, [userId, startDate, endDate]);
|
||||
return rows;
|
||||
},
|
||||
|
||||
/**
|
||||
* 휴가 기간 중복 체크
|
||||
*/
|
||||
async checkOverlap(workerId, startDate, endDate, excludeRequestId = null) {
|
||||
async checkOverlap(userId, startDate, endDate, excludeRequestId = null) {
|
||||
const db = await getDb();
|
||||
let query = `
|
||||
SELECT COUNT(*) as count FROM vacation_requests
|
||||
WHERE worker_id = ?
|
||||
WHERE user_id = ?
|
||||
AND status IN ('pending', 'approved')
|
||||
AND (
|
||||
(start_date <= ? AND end_date >= ?) OR
|
||||
@@ -164,7 +164,7 @@ const vacationRequestModel = {
|
||||
(start_date >= ? AND end_date <= ?)
|
||||
)
|
||||
`;
|
||||
const params = [workerId, startDate, startDate, endDate, endDate, startDate, endDate];
|
||||
const params = [userId, startDate, startDate, endDate, endDate, startDate, endDate];
|
||||
|
||||
if (excludeRequestId) {
|
||||
query += ` AND request_id != ?`;
|
||||
@@ -187,7 +187,7 @@ const vacationRequestModel = {
|
||||
vt.type_name as vacation_type_name,
|
||||
requester.name as requester_name
|
||||
FROM vacation_requests vr
|
||||
INNER JOIN workers w ON vr.worker_id = w.worker_id
|
||||
INNER JOIN workers w ON vr.user_id = w.user_id
|
||||
INNER JOIN vacation_types vt ON vr.vacation_type_id = vt.id
|
||||
LEFT JOIN users requester ON vr.requested_by = requester.user_id
|
||||
WHERE vr.status = 'pending'
|
||||
|
||||
Reference in New Issue
Block a user