diff --git a/CODING_GUIDE.md b/CODING_GUIDE.md index 8f27242..2e376c5 100644 --- a/CODING_GUIDE.md +++ b/CODING_GUIDE.md @@ -103,7 +103,8 @@ web-ui/pages/ │ ├── nonconformity.html # 부적합 현황 │ └── analysis.html # 작업 분석 ├── [일간작업장 점검] # 일간작업장 점검 (사이드바 카테고리) -│ └── attendance/daily.html # 일일 출퇴근 입력 +│ ├── attendance/checkin.html # 출근 체크 +│ └── attendance/work-status.html # 근무 현황 (휴가/연장근무) ├── safety/ # 안전 관리 페이지 │ ├── report.html # 신고 (공통) │ ├── report-status.html # 안전신고 현황 diff --git a/_to_delete/.gitkeep b/_to_delete/.gitkeep new file mode 100644 index 0000000..6ea0eb6 --- /dev/null +++ b/_to_delete/.gitkeep @@ -0,0 +1,2 @@ +# 삭제 예정 파일 폴더 +# 이 폴더의 파일들은 정리 후 삭제해주세요. diff --git a/api.hyungi.net/config/routes.js b/api.hyungi.net/config/routes.js index 31a4702..c56ad62 100644 --- a/api.hyungi.net/config/routes.js +++ b/api.hyungi.net/config/routes.js @@ -49,6 +49,8 @@ function setupRoutes(app) { const vacationBalanceRoutes = require('../routes/vacationBalanceRoutes'); const visitRequestRoutes = require('../routes/visitRequestRoutes'); const workIssueRoutes = require('../routes/workIssueRoutes'); + const departmentRoutes = require('../routes/departmentRoutes'); + const patrolRoutes = require('../routes/patrolRoutes'); // Rate Limiters 설정 const rateLimit = require('express-rate-limit'); @@ -153,6 +155,8 @@ function setupRoutes(app) { app.use('/api', pageAccessRoutes); // 페이지 접근 권한 관리 app.use('/api/tbm', tbmRoutes); // TBM 시스템 app.use('/api/work-issues', workIssueRoutes); // 문제 신고 시스템 + app.use('/api/departments', departmentRoutes); // 부서 관리 + app.use('/api/patrol', patrolRoutes); // 일일순회점검 시스템 app.use('/api', uploadBgRoutes); // Swagger API 문서 diff --git a/api.hyungi.net/controllers/departmentController.js b/api.hyungi.net/controllers/departmentController.js new file mode 100644 index 0000000..e44574b --- /dev/null +++ b/api.hyungi.net/controllers/departmentController.js @@ -0,0 +1,241 @@ +// controllers/departmentController.js +const departmentModel = require('../models/departmentModel'); + +const departmentController = { + // 모든 부서 조회 + async getAll(req, res) { + try { + const { active_only } = req.query; + const departments = active_only === 'true' + ? await departmentModel.getActive() + : await departmentModel.getAll(); + + res.json({ + success: true, + data: departments + }); + } catch (error) { + console.error('부서 목록 조회 오류:', error); + res.status(500).json({ + success: false, + error: '부서 목록을 불러오는데 실패했습니다.' + }); + } + }, + + // 부서 상세 조회 + async getById(req, res) { + try { + const { id } = req.params; + const department = await departmentModel.getById(id); + + if (!department) { + return res.status(404).json({ + success: false, + error: '부서를 찾을 수 없습니다.' + }); + } + + res.json({ + success: true, + data: department + }); + } catch (error) { + console.error('부서 조회 오류:', error); + res.status(500).json({ + success: false, + error: '부서 정보를 불러오는데 실패했습니다.' + }); + } + }, + + // 부서 생성 + async create(req, res) { + try { + const { department_name, parent_id, description, is_active, display_order } = req.body; + + if (!department_name) { + return res.status(400).json({ + success: false, + error: '부서명은 필수입니다.' + }); + } + + const departmentId = await departmentModel.create({ + department_name, + parent_id, + description, + is_active, + display_order + }); + + const newDepartment = await departmentModel.getById(departmentId); + + res.status(201).json({ + success: true, + message: '부서가 생성되었습니다.', + data: newDepartment + }); + } catch (error) { + console.error('부서 생성 오류:', error); + res.status(500).json({ + success: false, + error: '부서 생성에 실패했습니다.' + }); + } + }, + + // 부서 수정 + async update(req, res) { + try { + const { id } = req.params; + const { department_name, parent_id, description, is_active, display_order } = req.body; + + if (!department_name) { + return res.status(400).json({ + success: false, + error: '부서명은 필수입니다.' + }); + } + + // 자기 자신을 상위 부서로 지정하는 것 방지 + if (parent_id && parseInt(parent_id) === parseInt(id)) { + return res.status(400).json({ + success: false, + error: '자기 자신을 상위 부서로 지정할 수 없습니다.' + }); + } + + const updated = await departmentModel.update(id, { + department_name, + parent_id, + description, + is_active, + display_order + }); + + if (!updated) { + return res.status(404).json({ + success: false, + error: '부서를 찾을 수 없습니다.' + }); + } + + const updatedDepartment = await departmentModel.getById(id); + + res.json({ + success: true, + message: '부서 정보가 수정되었습니다.', + data: updatedDepartment + }); + } catch (error) { + console.error('부서 수정 오류:', error); + res.status(500).json({ + success: false, + error: '부서 수정에 실패했습니다.' + }); + } + }, + + // 부서 삭제 + async delete(req, res) { + try { + const { id } = req.params; + + await departmentModel.delete(id); + + res.json({ + success: true, + message: '부서가 삭제되었습니다.' + }); + } catch (error) { + console.error('부서 삭제 오류:', error); + res.status(400).json({ + success: false, + error: error.message || '부서 삭제에 실패했습니다.' + }); + } + }, + + // 부서별 작업자 조회 + async getWorkers(req, res) { + try { + const { id } = req.params; + const workers = await departmentModel.getWorkersByDepartment(id); + + res.json({ + success: true, + data: workers + }); + } catch (error) { + console.error('부서 작업자 조회 오류:', error); + res.status(500).json({ + success: false, + error: '작업자 목록을 불러오는데 실패했습니다.' + }); + } + }, + + // 작업자 부서 이동 + async moveWorker(req, res) { + try { + const { workerId, departmentId } = req.body; + + if (!workerId || !departmentId) { + return res.status(400).json({ + success: false, + error: '작업자 ID와 부서 ID가 필요합니다.' + }); + } + + await departmentModel.moveWorker(workerId, departmentId); + + res.json({ + success: true, + message: '작업자 부서가 변경되었습니다.' + }); + } catch (error) { + console.error('작업자 부서 이동 오류:', error); + res.status(500).json({ + success: false, + error: '작업자 부서 변경에 실패했습니다.' + }); + } + }, + + // 여러 작업자 부서 일괄 이동 + async moveWorkers(req, res) { + try { + const { workerIds, departmentId } = req.body; + + if (!workerIds || !Array.isArray(workerIds) || workerIds.length === 0) { + return res.status(400).json({ + success: false, + error: '이동할 작업자를 선택하세요.' + }); + } + + if (!departmentId) { + return res.status(400).json({ + success: false, + error: '대상 부서를 선택하세요.' + }); + } + + const count = await departmentModel.moveWorkers(workerIds, departmentId); + + res.json({ + success: true, + message: `${count}명의 작업자 부서가 변경되었습니다.` + }); + } catch (error) { + console.error('작업자 일괄 이동 오류:', error); + res.status(500).json({ + success: false, + error: '작업자 부서 변경에 실패했습니다.' + }); + } + } +}; + +module.exports = departmentController; diff --git a/api.hyungi.net/controllers/equipmentController.js b/api.hyungi.net/controllers/equipmentController.js index 54538f1..037dd21 100644 --- a/api.hyungi.net/controllers/equipmentController.js +++ b/api.hyungi.net/controllers/equipmentController.js @@ -266,6 +266,11 @@ const EquipmentController = { map_height_percent: req.body.map_height_percent }; + // workplace_id가 있으면 포함 (설비를 다른 작업장으로 이동 가능) + if (req.body.workplace_id !== undefined) { + positionData.workplace_id = req.body.workplace_id; + } + EquipmentModel.updateMapPosition(equipmentId, positionData, (error, result) => { if (error) { console.error('설비 위치 업데이트 오류:', error); @@ -343,6 +348,37 @@ const EquipmentController = { message: '서버 오류가 발생했습니다.' }); } + }, + + // GET NEXT EQUIPMENT CODE - 다음 관리번호 자동 생성 + getNextEquipmentCode: (req, res) => { + try { + const prefix = req.query.prefix || 'TKP'; + + EquipmentModel.getNextEquipmentCode(prefix, (error, nextCode) => { + if (error) { + console.error('다음 관리번호 조회 오류:', error); + return res.status(500).json({ + success: false, + message: '다음 관리번호 조회 중 오류가 발생했습니다.' + }); + } + + res.json({ + success: true, + data: { + next_code: nextCode, + prefix: prefix + } + }); + }); + } catch (error) { + console.error('다음 관리번호 조회 오류:', error); + res.status(500).json({ + success: false, + message: '서버 오류가 발생했습니다.' + }); + } } }; diff --git a/api.hyungi.net/controllers/patrolController.js b/api.hyungi.net/controllers/patrolController.js new file mode 100644 index 0000000..3a2c21f --- /dev/null +++ b/api.hyungi.net/controllers/patrolController.js @@ -0,0 +1,295 @@ +// patrolController.js +// 일일순회점검 시스템 컨트롤러 + +const PatrolModel = require('../models/patrolModel'); + +const PatrolController = { + // ==================== 순회점검 세션 ==================== + + // 세션 시작/조회 + getOrCreateSession: async (req, res) => { + try { + const { patrol_date, patrol_time, category_id } = req.body; + const inspectorId = req.user.user_id; + + if (!patrol_date || !patrol_time || !category_id) { + return res.status(400).json({ success: false, message: '필수 정보가 누락되었습니다.' }); + } + + const session = await PatrolModel.getOrCreateSession(patrol_date, patrol_time, category_id, inspectorId); + res.json({ success: true, data: session }); + } catch (error) { + console.error('세션 생성/조회 오류:', error); + res.status(500).json({ success: false, message: '서버 오류가 발생했습니다.' }); + } + }, + + // 세션 상세 조회 + getSession: async (req, res) => { + try { + const { sessionId } = req.params; + const session = await PatrolModel.getSession(sessionId); + + if (!session) { + return res.status(404).json({ success: false, message: '세션을 찾을 수 없습니다.' }); + } + + res.json({ success: true, data: session }); + } catch (error) { + console.error('세션 조회 오류:', error); + res.status(500).json({ success: false, message: '서버 오류가 발생했습니다.' }); + } + }, + + // 세션 목록 조회 + getSessions: async (req, res) => { + try { + const { patrol_date, patrol_time, category_id, status, limit } = req.query; + const sessions = await PatrolModel.getSessions({ + patrol_date, + patrol_time, + category_id, + status, + limit + }); + res.json({ success: true, data: sessions }); + } catch (error) { + console.error('세션 목록 조회 오류:', error); + res.status(500).json({ success: false, message: '서버 오류가 발생했습니다.' }); + } + }, + + // 세션 완료 + completeSession: async (req, res) => { + try { + const { sessionId } = req.params; + await PatrolModel.completeSession(sessionId); + res.json({ success: true, message: '순회점검이 완료되었습니다.' }); + } catch (error) { + console.error('세션 완료 오류:', error); + res.status(500).json({ success: false, message: '서버 오류가 발생했습니다.' }); + } + }, + + // 세션 메모 업데이트 + updateSessionNotes: async (req, res) => { + try { + const { sessionId } = req.params; + const { notes } = req.body; + await PatrolModel.updateSessionNotes(sessionId, notes); + res.json({ success: true, message: '메모가 저장되었습니다.' }); + } catch (error) { + console.error('메모 저장 오류:', error); + res.status(500).json({ success: false, message: '서버 오류가 발생했습니다.' }); + } + }, + + // ==================== 체크리스트 항목 ==================== + + // 체크리스트 항목 조회 + getChecklistItems: async (req, res) => { + try { + const { category_id, workplace_id } = req.query; + const items = await PatrolModel.getChecklistItems(category_id, workplace_id); + + // 카테고리별로 그룹화 + const grouped = {}; + items.forEach(item => { + if (!grouped[item.check_category]) { + grouped[item.check_category] = []; + } + grouped[item.check_category].push(item); + }); + + res.json({ success: true, data: { items, grouped } }); + } catch (error) { + console.error('체크리스트 항목 조회 오류:', error); + res.status(500).json({ success: false, message: '서버 오류가 발생했습니다.' }); + } + }, + + // 체크리스트 항목 추가 + createChecklistItem: async (req, res) => { + try { + const itemId = await PatrolModel.createChecklistItem(req.body); + res.json({ success: true, data: { item_id: itemId }, message: '항목이 추가되었습니다.' }); + } catch (error) { + console.error('항목 추가 오류:', error); + res.status(500).json({ success: false, message: '서버 오류가 발생했습니다.' }); + } + }, + + // 체크리스트 항목 수정 + updateChecklistItem: async (req, res) => { + try { + const { itemId } = req.params; + await PatrolModel.updateChecklistItem(itemId, req.body); + res.json({ success: true, message: '항목이 수정되었습니다.' }); + } catch (error) { + console.error('항목 수정 오류:', error); + res.status(500).json({ success: false, message: '서버 오류가 발생했습니다.' }); + } + }, + + // 체크리스트 항목 삭제 + deleteChecklistItem: async (req, res) => { + try { + const { itemId } = req.params; + await PatrolModel.deleteChecklistItem(itemId); + res.json({ success: true, message: '항목이 삭제되었습니다.' }); + } catch (error) { + console.error('항목 삭제 오류:', error); + res.status(500).json({ success: false, message: '서버 오류가 발생했습니다.' }); + } + }, + + // ==================== 체크 기록 ==================== + + // 작업장별 체크 기록 조회 + getCheckRecords: async (req, res) => { + try { + const { sessionId } = req.params; + const { workplace_id } = req.query; + const records = await PatrolModel.getCheckRecords(sessionId, workplace_id); + res.json({ success: true, data: records }); + } catch (error) { + console.error('체크 기록 조회 오류:', error); + res.status(500).json({ success: false, message: '서버 오류가 발생했습니다.' }); + } + }, + + // 체크 기록 저장 + saveCheckRecord: async (req, res) => { + try { + const { sessionId } = req.params; + const { workplace_id, check_item_id, is_checked, check_result, note } = req.body; + + if (!workplace_id || !check_item_id) { + return res.status(400).json({ success: false, message: '필수 정보가 누락되었습니다.' }); + } + + await PatrolModel.saveCheckRecord(sessionId, workplace_id, check_item_id, is_checked, check_result, note); + res.json({ success: true, message: '저장되었습니다.' }); + } catch (error) { + console.error('체크 기록 저장 오류:', error); + res.status(500).json({ success: false, message: '서버 오류가 발생했습니다.' }); + } + }, + + // 체크 기록 일괄 저장 + saveCheckRecords: async (req, res) => { + try { + const { sessionId } = req.params; + const { workplace_id, records } = req.body; + + if (!workplace_id || !records || !Array.isArray(records)) { + return res.status(400).json({ success: false, message: '필수 정보가 누락되었습니다.' }); + } + + await PatrolModel.saveCheckRecords(sessionId, workplace_id, records); + res.json({ success: true, message: '저장되었습니다.' }); + } catch (error) { + console.error('체크 기록 일괄 저장 오류:', error); + res.status(500).json({ success: false, message: '서버 오류가 발생했습니다.' }); + } + }, + + // ==================== 작업장 물품 현황 ==================== + + // 작업장 물품 조회 + getWorkplaceItems: async (req, res) => { + try { + const { workplaceId } = req.params; + const { include_inactive } = req.query; + const items = await PatrolModel.getWorkplaceItems(workplaceId, include_inactive !== 'true'); + res.json({ success: true, data: items }); + } catch (error) { + console.error('물품 조회 오류:', error); + res.status(500).json({ success: false, message: '서버 오류가 발생했습니다.' }); + } + }, + + // 물품 추가 + createWorkplaceItem: async (req, res) => { + try { + const { workplaceId } = req.params; + const data = { ...req.body, workplace_id: workplaceId, created_by: req.user.user_id }; + const itemId = await PatrolModel.createWorkplaceItem(data); + res.json({ success: true, data: { item_id: itemId }, message: '물품이 추가되었습니다.' }); + } catch (error) { + console.error('물품 추가 오류:', error); + res.status(500).json({ success: false, message: '서버 오류가 발생했습니다.' }); + } + }, + + // 물품 수정 + updateWorkplaceItem: async (req, res) => { + try { + const { itemId } = req.params; + await PatrolModel.updateWorkplaceItem(itemId, req.body, req.user.user_id); + res.json({ success: true, message: '물품이 수정되었습니다.' }); + } catch (error) { + console.error('물품 수정 오류:', error); + res.status(500).json({ success: false, message: '서버 오류가 발생했습니다.' }); + } + }, + + // 물품 삭제 + deleteWorkplaceItem: async (req, res) => { + try { + const { itemId } = req.params; + const { permanent } = req.query; + + if (permanent === 'true') { + await PatrolModel.hardDeleteWorkplaceItem(itemId); + } else { + await PatrolModel.deleteWorkplaceItem(itemId, req.user.user_id); + } + res.json({ success: true, message: '물품이 삭제되었습니다.' }); + } catch (error) { + console.error('물품 삭제 오류:', error); + res.status(500).json({ success: false, message: '서버 오류가 발생했습니다.' }); + } + }, + + // ==================== 물품 유형 ==================== + + // 물품 유형 목록 + getItemTypes: async (req, res) => { + try { + const types = await PatrolModel.getItemTypes(); + res.json({ success: true, data: types }); + } catch (error) { + console.error('물품 유형 조회 오류:', error); + res.status(500).json({ success: false, message: '서버 오류가 발생했습니다.' }); + } + }, + + // ==================== 대시보드/통계 ==================== + + // 오늘 순회점검 현황 + getTodayStatus: async (req, res) => { + try { + const { category_id } = req.query; + const status = await PatrolModel.getTodayPatrolStatus(category_id); + res.json({ success: true, data: status }); + } catch (error) { + console.error('오늘 현황 조회 오류:', error); + res.status(500).json({ success: false, message: '서버 오류가 발생했습니다.' }); + } + }, + + // 작업장별 점검 현황 + getWorkplaceCheckStatus: async (req, res) => { + try { + const { sessionId } = req.params; + const status = await PatrolModel.getWorkplaceCheckStatus(sessionId); + res.json({ success: true, data: status }); + } catch (error) { + console.error('작업장별 점검 현황 조회 오류:', error); + res.status(500).json({ success: false, message: '서버 오류가 발생했습니다.' }); + } + } +}; + +module.exports = PatrolController; diff --git a/api.hyungi.net/controllers/userController.js b/api.hyungi.net/controllers/userController.js index 3252b2aa..3873f90 100644 --- a/api.hyungi.net/controllers/userController.js +++ b/api.hyungi.net/controllers/userController.js @@ -43,11 +43,17 @@ const getAllUsers = asyncHandler(async (req, res) => { r.name as role, u._access_level_old as access_level, u.is_active, + u.worker_id, + w.worker_name, + w.department_id, + d.department_name, u.created_at, u.updated_at, u.last_login_at as last_login FROM users u LEFT JOIN roles r ON u.role_id = r.id + LEFT JOIN workers w ON u.worker_id = w.worker_id + LEFT JOIN departments d ON w.department_id = d.department_id ORDER BY u.created_at DESC `; @@ -218,7 +224,7 @@ const updateUser = asyncHandler(async (req, res) => { checkAdminPermission(req.user); const { id } = req.params; - const { username, name, email, role, role_id, password } = req.body; + const { username, name, email, role, role_id, password, worker_id } = req.body; if (!id || isNaN(id)) { throw new ValidationError('유효하지 않은 사용자 ID입니다'); @@ -227,7 +233,7 @@ const updateUser = asyncHandler(async (req, res) => { logger.info('사용자 수정 요청', { userId: id, body: req.body }); // 최소 하나의 수정 필드가 필요 - if (!username && !name && email === undefined && !role && !role_id && !password) { + if (!username && !name && email === undefined && !role && !role_id && !password && worker_id === undefined) { throw new ValidationError('수정할 필드가 없습니다'); } @@ -318,6 +324,22 @@ const updateUser = asyncHandler(async (req, res) => { values.push(hashedPassword); } + // worker_id 업데이트 (null도 허용 - 연결 해제) + if (worker_id !== undefined) { + if (worker_id !== null) { + // worker_id가 유효한지 확인 + const [workerCheck] = await db.execute('SELECT worker_id, worker_name FROM workers WHERE worker_id = ?', [worker_id]); + if (workerCheck.length === 0) { + throw new ValidationError('유효하지 않은 작업자 ID입니다'); + } + logger.info('작업자 연결', { userId: id, worker_id, worker_name: workerCheck[0].worker_name }); + } else { + logger.info('작업자 연결 해제', { userId: id }); + } + updates.push('worker_id = ?'); + values.push(worker_id); + } + updates.push('updated_at = NOW()'); values.push(id); @@ -476,6 +498,69 @@ const deleteUser = asyncHandler(async (req, res) => { } }); +/** + * 사용자 영구 삭제 (Hard Delete) + */ +const permanentDeleteUser = asyncHandler(async (req, res) => { + checkAdminPermission(req.user); + + const { id } = req.params; + + if (!id || isNaN(id)) { + throw new ValidationError('유효하지 않은 사용자 ID입니다'); + } + + // 자기 자신 삭제 방지 + if (req.user && req.user.user_id == id) { + throw new ValidationError('자기 자신은 삭제할 수 없습니다'); + } + + logger.info('사용자 영구 삭제 요청', { userId: id }); + + const { getDb } = require('../dbPool'); + const db = await getDb(); + + try { + // 사용자 존재 확인 + const checkQuery = 'SELECT user_id, username FROM users WHERE user_id = ?'; + const [users] = await db.execute(checkQuery, [id]); + + if (users.length === 0) { + throw new NotFoundError('사용자를 찾을 수 없습니다'); + } + + const username = users[0].username; + + // 관련 데이터 삭제 (외래 키 제약 조건 때문에 순서 중요) + // 1. 로그인 로그 삭제 + await db.execute('DELETE FROM login_logs WHERE user_id = ?', [id]); + + // 2. 페이지 접근 권한 삭제 + await db.execute('DELETE FROM user_page_access WHERE user_id = ?', [id]); + + // 3. 사용자 삭제 + await db.execute('DELETE FROM users WHERE user_id = ?', [id]); + + logger.info('사용자 영구 삭제 성공', { + userId: id, + username: username, + deletedBy: req.user.username + }); + + res.json({ + success: true, + data: { user_id: id }, + message: `사용자 "${username}"이(가) 영구적으로 삭제되었습니다` + }); + } catch (error) { + if (error instanceof NotFoundError || error instanceof ValidationError) { + throw error; + } + logger.error('사용자 영구 삭제 실패', { userId: id, error: error.message }); + throw new DatabaseError('사용자를 영구 삭제하는데 실패했습니다'); + } +}); + /** * 사용자의 페이지 접근 권한 조회 */ @@ -647,6 +732,7 @@ module.exports = { updateUser, updateUserStatus, deleteUser, + permanentDeleteUser, getUserPageAccess, updateUserPageAccess, resetUserPassword diff --git a/api.hyungi.net/controllers/workerController.js b/api.hyungi.net/controllers/workerController.js index 75fdd02..9bc667d 100644 --- a/api.hyungi.net/controllers/workerController.js +++ b/api.hyungi.net/controllers/workerController.js @@ -73,9 +73,9 @@ exports.createWorker = asyncHandler(async (req, res) => { * 전체 작업자 조회 (캐싱 및 페이지네이션 적용) */ exports.getAllWorkers = asyncHandler(async (req, res) => { - const { page = 1, limit = 10, search = '', status = '' } = req.query; + const { page = 1, limit = 10, search = '', status = '', department_id = null } = req.query; - const cacheKey = cache.createKey('workers', 'list', page, limit, search, status); + const cacheKey = cache.createKey('workers', 'list', page, limit, search, status, department_id); // 캐시에서 조회 const cachedData = await cache.get(cacheKey); @@ -90,7 +90,7 @@ exports.getAllWorkers = asyncHandler(async (req, res) => { } // 최적화된 쿼리 사용 - const result = await optimizedQueries.getWorkersPaged(page, limit, search, status); + const result = await optimizedQueries.getWorkersPaged(page, limit, search, status, department_id); // 캐시에 저장 (5분) await cache.set(cacheKey, result, cache.TTL.MEDIUM); diff --git a/api.hyungi.net/db/migrations/20260204100000_add_equipment_purchase_fields.js b/api.hyungi.net/db/migrations/20260204100000_add_equipment_purchase_fields.js new file mode 100644 index 0000000..ac79357 --- /dev/null +++ b/api.hyungi.net/db/migrations/20260204100000_add_equipment_purchase_fields.js @@ -0,0 +1,35 @@ +/** + * 설비 테이블에 구입처 및 구입가격 컬럼 추가 + * + * @author TK-FB-Project + * @since 2026-02-04 + */ + +exports.up = async function(knex) { + // 컬럼 존재 여부 확인 + const hasSupplier = await knex.schema.hasColumn('equipments', 'supplier'); + const hasPurchasePrice = await knex.schema.hasColumn('equipments', 'purchase_price'); + + if (!hasSupplier || !hasPurchasePrice) { + await knex.schema.alterTable('equipments', (table) => { + if (!hasSupplier) { + table.string('supplier', 100).nullable().after('manufacturer').comment('구입처'); + } + if (!hasPurchasePrice) { + table.decimal('purchase_price', 15, 0).nullable().after('supplier').comment('구입가격'); + } + }); + console.log('✅ equipments 테이블에 supplier, purchase_price 컬럼 추가 완료'); + } else { + console.log('ℹ️ supplier, purchase_price 컬럼이 이미 존재합니다. 스킵합니다.'); + } +}; + +exports.down = async function(knex) { + await knex.schema.alterTable('equipments', (table) => { + table.dropColumn('supplier'); + table.dropColumn('purchase_price'); + }); + + console.log('✅ equipments 테이블에서 supplier, purchase_price 컬럼 삭제 완료'); +}; diff --git a/api.hyungi.net/db/migrations/20260204100000_create_daily_patrol_system.js b/api.hyungi.net/db/migrations/20260204100000_create_daily_patrol_system.js new file mode 100644 index 0000000..e5bac4e --- /dev/null +++ b/api.hyungi.net/db/migrations/20260204100000_create_daily_patrol_system.js @@ -0,0 +1,166 @@ +/** + * 마이그레이션: 일일순회점검 시스템 + * 작성일: 2026-02-04 + * + * 생성 테이블: + * - patrol_checklist_items: 순회점검 체크리스트 마스터 + * - daily_patrol_sessions: 순회점검 세션 기록 + * - patrol_check_records: 순회점검 체크 결과 + * - workplace_items: 작업장 물품 현황 (용기, 플레이트 등) + */ + +exports.up = async function(knex) { + console.log('⏳ 일일순회점검 시스템 테이블 생성 중...'); + + // 1. 순회점검 체크리스트 마스터 테이블 + await knex.schema.createTable('patrol_checklist_items', (table) => { + table.increments('item_id').primary(); + table.integer('workplace_id').unsigned().nullable().comment('특정 작업장 전용 (NULL=공통)'); + table.integer('category_id').unsigned().nullable().comment('특정 공장 전용 (NULL=공통)'); + table.string('check_category', 50).notNullable().comment('분류 (안전, 정리정돈, 설비 등)'); + table.string('check_item', 200).notNullable().comment('점검 항목'); + table.text('description').nullable().comment('설명'); + table.integer('display_order').defaultTo(0).comment('표시 순서'); + table.boolean('is_required').defaultTo(true).comment('필수 체크 여부'); + table.boolean('is_active').defaultTo(true).comment('활성 여부'); + table.timestamp('created_at').defaultTo(knex.fn.now()); + table.timestamp('updated_at').defaultTo(knex.fn.now()); + + table.index('workplace_id'); + table.index('category_id'); + table.index('check_category'); + table.foreign('workplace_id').references('workplaces.workplace_id').onDelete('CASCADE'); + table.foreign('category_id').references('workplace_categories.category_id').onDelete('CASCADE'); + }); + console.log('✅ patrol_checklist_items 테이블 생성 완료'); + + // 초기 순회점검 체크리스트 데이터 + await knex('patrol_checklist_items').insert([ + // 안전 관련 + { check_category: 'SAFETY', check_item: '소화기 상태 확인', display_order: 1, is_required: true }, + { check_category: 'SAFETY', check_item: '비상구 통로 확보 확인', display_order: 2, is_required: true }, + { check_category: 'SAFETY', check_item: '안전표지판 부착 상태', display_order: 3, is_required: true }, + { check_category: 'SAFETY', check_item: '위험물 관리 상태', display_order: 4, is_required: true }, + + // 정리정돈 + { check_category: 'ORGANIZATION', check_item: '작업장 정리정돈 상태', display_order: 10, is_required: true }, + { check_category: 'ORGANIZATION', check_item: '통로 장애물 여부', display_order: 11, is_required: true }, + { check_category: 'ORGANIZATION', check_item: '폐기물 처리 상태', display_order: 12, is_required: true }, + { check_category: 'ORGANIZATION', check_item: '자재 적재 상태', display_order: 13, is_required: true }, + + // 설비 + { check_category: 'EQUIPMENT', check_item: '설비 외관 이상 여부', display_order: 20, is_required: false }, + { check_category: 'EQUIPMENT', check_item: '설비 작동 상태', display_order: 21, is_required: false }, + { check_category: 'EQUIPMENT', check_item: '설비 청결 상태', display_order: 22, is_required: false }, + + // 환경 + { check_category: 'ENVIRONMENT', check_item: '조명 상태', display_order: 30, is_required: true }, + { check_category: 'ENVIRONMENT', check_item: '환기 상태', display_order: 31, is_required: true }, + { check_category: 'ENVIRONMENT', check_item: '누수/누유 여부', display_order: 32, is_required: true }, + ]); + console.log('✅ patrol_checklist_items 초기 데이터 입력 완료'); + + // 2. 순회점검 세션 테이블 + await knex.schema.createTable('daily_patrol_sessions', (table) => { + table.increments('session_id').primary(); + table.date('patrol_date').notNullable().comment('점검 날짜'); + table.enum('patrol_time', ['morning', 'afternoon']).notNullable().comment('점검 시간대'); + table.integer('inspector_id').notNullable().comment('순찰자 user_id'); // signed (users.user_id) + table.integer('category_id').unsigned().nullable().comment('공장 ID'); + table.enum('status', ['in_progress', 'completed']).defaultTo('in_progress').comment('상태'); + table.text('notes').nullable().comment('특이사항'); + table.time('started_at').nullable().comment('점검 시작 시간'); + table.time('completed_at').nullable().comment('점검 완료 시간'); + table.timestamp('created_at').defaultTo(knex.fn.now()); + table.timestamp('updated_at').defaultTo(knex.fn.now()); + + table.unique(['patrol_date', 'patrol_time', 'category_id']); + table.index(['patrol_date', 'patrol_time']); + table.index('inspector_id'); + table.foreign('inspector_id').references('users.user_id'); + table.foreign('category_id').references('workplace_categories.category_id').onDelete('SET NULL'); + }); + console.log('✅ daily_patrol_sessions 테이블 생성 완료'); + + // 3. 순회점검 체크 기록 테이블 + await knex.schema.createTable('patrol_check_records', (table) => { + table.increments('record_id').primary(); + table.integer('session_id').unsigned().notNullable().comment('순회점검 세션 ID'); + table.integer('workplace_id').unsigned().notNullable().comment('작업장 ID'); + table.integer('check_item_id').unsigned().notNullable().comment('체크항목 ID'); + table.boolean('is_checked').defaultTo(false).comment('체크 여부'); + table.enum('check_result', ['good', 'warning', 'bad']).nullable().comment('점검 결과'); + table.text('note').nullable().comment('비고'); + table.timestamp('checked_at').nullable().comment('체크 시간'); + + // 인덱스명 길이 제한으로 인해 수동으로 지정 + table.unique(['session_id', 'workplace_id', 'check_item_id'], 'pcr_session_wp_item_unique'); + table.index(['session_id', 'workplace_id'], 'pcr_session_wp_idx'); + table.foreign('session_id').references('daily_patrol_sessions.session_id').onDelete('CASCADE'); + table.foreign('workplace_id').references('workplaces.workplace_id').onDelete('CASCADE'); + table.foreign('check_item_id').references('patrol_checklist_items.item_id').onDelete('CASCADE'); + }); + console.log('✅ patrol_check_records 테이블 생성 완료'); + + // 4. 작업장 물품 현황 테이블 + await knex.schema.createTable('workplace_items', (table) => { + table.increments('item_id').primary(); + table.integer('workplace_id').unsigned().notNullable().comment('작업장 ID'); + table.integer('patrol_session_id').unsigned().nullable().comment('등록한 순회점검 세션'); + table.integer('project_id').nullable().comment('관련 프로젝트'); // signed (projects.project_id) + table.enum('item_type', ['container', 'plate', 'material', 'tool', 'other']).notNullable().comment('물품 유형'); + table.string('item_name', 100).nullable().comment('물품명/설명'); + table.integer('quantity').defaultTo(1).comment('수량'); + table.decimal('x_percent', 5, 2).nullable().comment('지도상 X 위치 (%)'); + table.decimal('y_percent', 5, 2).nullable().comment('지도상 Y 위치 (%)'); + table.decimal('width_percent', 5, 2).nullable().comment('지도상 너비 (%)'); + table.decimal('height_percent', 5, 2).nullable().comment('지도상 높이 (%)'); + table.boolean('is_active').defaultTo(true).comment('현재 존재 여부'); + table.integer('created_by').notNullable().comment('등록자 user_id'); // signed (users.user_id) + table.timestamp('created_at').defaultTo(knex.fn.now()); + table.integer('updated_by').nullable().comment('최종 수정자 user_id'); // signed (users.user_id) + table.timestamp('updated_at').defaultTo(knex.fn.now()); + + table.index(['workplace_id', 'is_active']); + table.index('project_id'); + table.foreign('workplace_id').references('workplaces.workplace_id').onDelete('CASCADE'); + table.foreign('patrol_session_id').references('daily_patrol_sessions.session_id').onDelete('SET NULL'); + table.foreign('project_id').references('projects.project_id').onDelete('SET NULL'); + table.foreign('created_by').references('users.user_id'); + table.foreign('updated_by').references('users.user_id'); + }); + console.log('✅ workplace_items 테이블 생성 완료'); + + // 물품 유형 코드 테이블 (선택적 확장용) + await knex.schema.createTable('item_types', (table) => { + table.string('type_code', 20).primary(); + table.string('type_name', 50).notNullable().comment('유형명'); + table.string('icon', 10).nullable().comment('아이콘 이모지'); + table.string('color', 20).nullable().comment('표시 색상'); + table.integer('display_order').defaultTo(0); + table.boolean('is_active').defaultTo(true); + }); + + await knex('item_types').insert([ + { type_code: 'container', type_name: '용기', icon: '📦', color: '#3b82f6', display_order: 1 }, + { type_code: 'plate', type_name: '플레이트', icon: '🔲', color: '#10b981', display_order: 2 }, + { type_code: 'material', type_name: '자재', icon: '🧱', color: '#f59e0b', display_order: 3 }, + { type_code: 'tool', type_name: '공구/장비', icon: '🔧', color: '#8b5cf6', display_order: 4 }, + { type_code: 'other', type_name: '기타', icon: '📍', color: '#6b7280', display_order: 5 }, + ]); + console.log('✅ item_types 테이블 생성 및 초기 데이터 완료'); + + console.log('✅ 모든 일일순회점검 시스템 테이블 생성 완료'); +}; + +exports.down = async function(knex) { + console.log('⏳ 일일순회점검 시스템 테이블 제거 중...'); + + await knex.schema.dropTableIfExists('item_types'); + await knex.schema.dropTableIfExists('workplace_items'); + await knex.schema.dropTableIfExists('patrol_check_records'); + await knex.schema.dropTableIfExists('daily_patrol_sessions'); + await knex.schema.dropTableIfExists('patrol_checklist_items'); + + console.log('✅ 모든 일일순회점검 시스템 테이블 제거 완료'); +}; diff --git a/api.hyungi.net/db/migrations/20260204_equipment_add_columns.sql b/api.hyungi.net/db/migrations/20260204_equipment_add_columns.sql new file mode 100644 index 0000000..53ed1db --- /dev/null +++ b/api.hyungi.net/db/migrations/20260204_equipment_add_columns.sql @@ -0,0 +1,13 @@ +-- 설비 테이블 컬럼 추가 (phpMyAdmin용) +-- 현재 구조: equipment_id, factory_id, equipment_name, model, status, purchase_date, description, created_at, updated_at + +-- 필요한 컬럼 추가 +ALTER TABLE equipments ADD COLUMN equipment_code VARCHAR(50) NULL COMMENT '관리번호' AFTER equipment_id; +ALTER TABLE equipments ADD COLUMN specifications TEXT NULL COMMENT '규격' AFTER model; +ALTER TABLE equipments ADD COLUMN serial_number VARCHAR(100) NULL COMMENT '시리얼번호(S/N)' AFTER specifications; +ALTER TABLE equipments ADD COLUMN supplier VARCHAR(100) NULL COMMENT '구입처' AFTER purchase_date; +ALTER TABLE equipments ADD COLUMN purchase_price DECIMAL(15, 0) NULL COMMENT '구입가격' AFTER supplier; +ALTER TABLE equipments ADD COLUMN manufacturer VARCHAR(100) NULL COMMENT '제조사(메이커)' AFTER purchase_price; + +-- equipment_code에 유니크 인덱스 추가 +ALTER TABLE equipments ADD UNIQUE INDEX idx_equipment_code (equipment_code); diff --git a/api.hyungi.net/db/migrations/20260204_equipment_full_setup.sql b/api.hyungi.net/db/migrations/20260204_equipment_full_setup.sql new file mode 100644 index 0000000..63b458c --- /dev/null +++ b/api.hyungi.net/db/migrations/20260204_equipment_full_setup.sql @@ -0,0 +1,138 @@ +-- 설비 관리 전체 설정 스크립트 +-- 1. 새 컬럼 추가 (supplier, purchase_price) +-- 2. 65개 설비 데이터 입력 +-- +-- 실행: mysql -u [user] -p [database] < 20260204_equipment_full_setup.sql + +-- ============================================ +-- STEP 1: 새 컬럼 추가 +-- ============================================ + +-- 컬럼이 이미 존재하는지 확인 후 추가 +SET @dbname = DATABASE(); +SET @tablename = 'equipments'; + +-- supplier 컬럼 추가 +SELECT COUNT(*) INTO @col_exists +FROM information_schema.columns +WHERE table_schema = @dbname +AND table_name = @tablename +AND column_name = 'supplier'; + +SET @sql = IF(@col_exists = 0, + 'ALTER TABLE equipments ADD COLUMN supplier VARCHAR(100) NULL COMMENT ''구입처'' AFTER manufacturer', + 'SELECT ''supplier column already exists'''); +PREPARE stmt FROM @sql; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +-- purchase_price 컬럼 추가 +SELECT COUNT(*) INTO @col_exists +FROM information_schema.columns +WHERE table_schema = @dbname +AND table_name = @tablename +AND column_name = 'purchase_price'; + +SET @sql = IF(@col_exists = 0, + 'ALTER TABLE equipments ADD COLUMN purchase_price DECIMAL(15, 0) NULL COMMENT ''구입가격'' AFTER supplier', + 'SELECT ''purchase_price column already exists'''); +PREPARE stmt FROM @sql; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +SELECT '컬럼 추가 완료' AS status; + +-- ============================================ +-- STEP 2: 기존 데이터 삭제 (선택사항) +-- ============================================ +-- 주의: 기존 데이터가 있으면 삭제됩니다 +DELETE FROM equipments WHERE equipment_code LIKE 'TKP-%'; + +-- ============================================ +-- STEP 3: 65개 설비 데이터 입력 +-- ============================================ + +INSERT INTO equipments (equipment_code, equipment_name, model_name, specifications, serial_number, installation_date, supplier, purchase_price, manufacturer, status) VALUES +('TKP-001', 'AIR COMPRESSOR', 'AR10E', '7.5KW(10HP)', 'K603023Y', '2016-06-01', '지티씨', NULL, '경원', 'active'), +('TKP-002', 'TURN TABLE', 'YCT-200T', '220V', NULL, '2016-05-30', '형진종합공구', 3600000, '유체기계', 'active'), +('TKP-003', 'BAND SAW(中)', 'CY300W', '1500W*380V', '20150943', '2016-05-30', '형진종합공구', 4800000, '유림싸이겐', 'active'), +('TKP-004', 'BAND SAW(小)', 'XB-180WA', '180(VICE)', NULL, '2016-05-30', '형진종합공구', 2700000, '렉스', 'active'), +('TKP-005', 'BAND SAW(小)', 'XB-180WA', '180(VICE)', NULL, '2019-05-30', NULL, NULL, '렉스', 'active'), +('TKP-006', 'TIG용접기', 'DAESUNG-500DT', '500A', 'TEAG0168-001', '2016-05-30', '형진종합공구', 2200000, '대성용접기', 'active'), +('TKP-007', 'TIG용접기', 'DAESUNG-500DT', '500A', 'TEAG0168-002', '2016-05-30', '형진종합공구', 2200000, '대성용접기', 'active'), +('TKP-008', 'TIG용접기', 'DAESUNG-500DT', '500A', 'TEAG0168-003', '2016-05-30', '형진종합공구', 2200000, '대성용접기', 'active'), +('TKP-009', 'CO2용접기', 'COD-500A', '500A', '10880', '2016-05-30', '형진종합공구', 2000000, '대성용접기', 'active'), +('TKP-010', 'O2용접기', 'GSORK', '220V', NULL, '2016-05-30', '형진종합공구', 620000, '재현오토닉스', 'active'), +('TKP-011', 'PIPE BEVELLING MACHINE', 'S-200LT_MT(테이블포함)', '2" ~ 8"', 'KR-17030007', '2017-03-29', 'DCS ENG', 12000000, 'DCS ENG', 'active'), +('TKP-012', 'CO2용접기', '500MX', '220/380V,500A', NULL, '2017-08-02', '현대용접기', 1800000, '현대용접기', 'active'), +('TKP-013', '프라즈마', 'Perfect-150AP', '220/380/440V,140A', NULL, '2017-08-02', '현대용접기', 1900000, '퍼펙트대대', 'active'), +('TKP-014', '터닝로라', 'JK-5-TR', '5TON/380V', NULL, '2017-09-08', '정일기공', 5700000, '정일기공', 'active'), +('TKP-015', '터닝로라', 'JK-5-TR', '5TON/380V', NULL, '2017-09-08', '정일기공', 5700000, '정일기공', 'active'), +('TKP-016', 'TIG용접기', 'Perfect-500PT', '500A/350A', 'TJAD017B-005', '2017-10-18', '현대용접기', 1600000, '퍼펙트대대', 'active'), +('TKP-017', 'TIG용접기', 'Perfect-500PT', '500A/350A', 'TJAD017B-006', '2017-10-18', '현대용접기', 1600000, '퍼펙트대대', 'active'), +('TKP-018', 'TIG용접기', 'Perfect-500PT', '500A/350A', 'TJAD017B-007', '2017-10-18', '현대용접기', 1600000, '퍼펙트대대', 'active'), +('TKP-019', '전해연마기', 'ONB-8000VP', '220V/MAX1200W', '8022701', '2018-03-13', '오토기전', 1450000, '메탈브라이트(오토기전)', 'active'), +('TKP-020', '지게차', '50DA-9F', '5000KGS', 'HHKHFV36JJ0000061', '2018-05-10', '현대지게차', 45000000, '현대지게차', 'active'), +('TKP-021', '조방', NULL, '3658*12190', NULL, '2018-05-11', '천우기계공업/삼덕금속', 14200000, '테크니컬코리아', 'active'), +('TKP-022', 'BAND SAW(大)', 'WBS-RC500AN', '3,300kgs / 7.88kw', 'BC50A18-005F001', '2018-05-31', '원공사', 36000000, '원공사', 'active'), +('TKP-023', 'AIR COMPRESSOR', 'AR20E', '0.95Mpa', 'AR020FE358', '2018-06-05', '경원기계', NULL, '경원기계', 'active'), +('TKP-024', 'TURN TABLE', 'YCT-200TA', '220V', NULL, '2018-06-12', '청운종합공구', 3245000, '유체기계', 'active'), +('TKP-025', 'TIG용접기', 'Perfect-500WT', '500A/AC DC', 'ADKAC017B-006', '2018-06-12', '현대용접기', 2400000, '퍼펙트대대', 'active'), +('TKP-026', 'TIG용접기', 'Perfect-500PT', '500A/DC', 'TAAI018B-002', '2018-06-12', '현대용접기', 1900000, '퍼펙트대대', 'active'), +('TKP-027', 'TIG용접기', 'Perfect-500PT', '500A/DC', 'TAAA018B-009', '2018-06-12', '현대용접기', 1900000, '퍼펙트대대', 'active'), +('TKP-028', 'TIG용접기', 'Perfect-500PT', '500A/DC', 'TAAA018B-001', '2018-06-12', '현대용접기', 1900000, '퍼펙트대대', 'active'), +('TKP-029', 'ELECTRIC CHAIN HOIST', 'DSM-2S', '3Ph-60Hz-380V', 'K1806077', '2018-07-06', '청운종합공구', 2300000, '대산', 'active'), +('TKP-030', 'ELECTRIC CHAIN HOIST', 'DSM-2S', '3Ph-60Hz-380V', 'K1807028', '2018-07-10', '청운종합공구', 2300000, '대산', 'active'), +('TKP-031', 'ELECTRIC CHAIN HOIST', 'DSM-2S', '3Ph-60Hz-380V', 'K1807029', '2018-07-10', '청운종합공구', 2300000, '대산', 'active'), +('TKP-032', '만능탭 드릴링머신', 'SF-TDM32', '1.5KW', NULL, '2018-11-09', '㈜애스앤애프', 2927000, '㈜애스앤에프', 'active'), +('TKP-033', '지게차', '30D-9B', '2850KGS', 'HHKHHN51KK0000864', '2019-03-06', '현대지게차', 29400000, '현대지게차', 'active'), +('TKP-034', '갠츄리크레인', 'CRANE - DHG', '50/10Ton x SP20M x T/L50M x H15M', NULL, '2019-05-09', '유진산업기계', 249000000, '반도호이스트', 'active'), +('TKP-035', 'OVER HEAD CRANE', 'CRANE - DHO', '20Ton x SP24.0M x T/L67M x H11M', NULL, '2019-05-09', '유진산업기계', 58000000, '반도호이스트', 'active'), +('TKP-036', 'OVER HEAD CRANE', 'CRANE - DHO', '20Ton x SP24.0M x T/L67M x H11M', NULL, '2019-05-09', '유진산업기계', 58000000, '반도호이스트', 'active'), +('TKP-037', 'OVER HEAD CRANE', 'CRANE - DHO', '5Ton x SP24.0M x T/L67M x H11M', NULL, '2019-05-09', '유진산업기계', 29000000, '반도호이스트', 'active'), +('TKP-038', 'OVER HEAD CRANE', 'CRANE - DHO', '5Ton x SP24.0M x T/L67M x H11M', NULL, '2019-05-09', '유진산업기계', 29000000, '반도호이스트', 'active'), +('TKP-039', '고소작업대', NULL, '250 Kg', NULL, '2019-01-01', NULL, NULL, '㈜쓰리제이테크', 'active'), +('TKP-040', '고소작업대', NULL, '250 Kg', NULL, '2019-01-01', NULL, NULL, '㈜쓰리제이테크', 'active'), +('TKP-041', 'AIR CONDITIONER', '코끼리 냉장고', NULL, NULL, '2019-01-01', NULL, NULL, '㈜에스엔에프', 'active'), +('TKP-042', 'AIR CONDITIONER', NULL, NULL, NULL, '2019-01-01', NULL, NULL, '㈜에스엔에프', 'active'), +('TKP-043', 'AIR CONDITIONER', NULL, NULL, NULL, '2019-01-01', NULL, NULL, '㈜에스엔에프', 'active'), +('TKP-044', '용접흄집진기', NULL, '5 HP / 60 m3/Min', NULL, '2019-01-01', NULL, NULL, NULL, 'active'), +('TKP-045', '용접흄집진기', NULL, '5 HP / 60 m3/Min', NULL, '2019-01-01', NULL, NULL, NULL, 'active'), +('TKP-046', '용접흄집진기', NULL, '5 HP / 60 m3/Min', NULL, '2019-01-01', NULL, NULL, NULL, 'active'), +('TKP-047', '용접흄집진기', NULL, '5 HP / 60 m3/Min', NULL, '2019-01-01', NULL, NULL, NULL, 'active'), +('TKP-048', '용접흄집진기', NULL, '5 HP / 60 m3/Min', NULL, '2019-01-01', NULL, NULL, NULL, 'active'), +('TKP-049', '자동용접기', NULL, NULL, NULL, '2019-01-01', 'Swage-Lok', 50000000, 'Swage-Lok', 'active'), +('TKP-050', 'Magnetic Drill', NULL, NULL, NULL, '2020-01-01', '청운종합공구', NULL, 'NITTO', 'active'), +('TKP-051', 'Magnetic Drill', NULL, NULL, NULL, '2020-01-01', '청운종합공구', NULL, 'Key-Yang', 'active'), +('TKP-052', 'Tube Bending M/C', NULL, NULL, NULL, '2020-01-01', NULL, NULL, 'REMS', 'active'), +('TKP-053', 'Unit Test Panel', NULL, NULL, NULL, '2021-01-01', NULL, NULL, NULL, 'active'), +('TKP-054', '고소작업대', NULL, '500 Kg', NULL, '2021-01-01', NULL, NULL, '㈜쓰리제이테크', 'active'), +('TKP-055', '용접봉 건조기', '주문제작', '박스형', NULL, '2022-05-04', '진원하이텍', 2300000, '진원하이텍', 'active'), +('TKP-056', 'C&T 가공기', 'MS-CTK469', NULL, NULL, '2022-07-20', 'Swage-Lok', 7347600, 'Swage-Lok', 'active'), +('TKP-057', '테이블형 튜브 벤딩기', 'MS-BTT-K', '1/2", 1/4"', NULL, '2022-06-03', 'Swage-Lok', 20000000, 'Swage-Lok', 'active'), +('TKP-058', '자동용접기 헤드', 'SWS-10H-D-15', '1/2"', NULL, '2022-06-03', 'Swage-Lok', 20000000, 'Swage-Lok', 'active'), +('TKP-059', '천장주행크레인', 'HC-75D-13105', '7.5ton', NULL, '2023-06-09', '에이치앤씨', 22800000, '에이치앤씨', 'active'), +('TKP-060', 'AED', 'CU-SP1 Plus', '저출력심장충격기', NULL, '2023-11-09', '제이메디', 1600000, '제이메디', 'active'), +('TKP-061', '베벨머신', 'S-150', 'O.D 20mm ~ 170mm', NULL, '2023-12-12', 'DCSENG', 16000000, 'DCSENG', 'active'), +('TKP-062', '피막제거기', 'CM4_OD_GC', '최대 폭 48mm, 최대 깊이 15mm, 6"이상', NULL, '2023-12-12', 'DCSENG', 2000000, 'DCSENG', 'active'), +('TKP-063', '피막제거기', 'S-CM4_OD', '최대 폭 48mm, 최대 깊이 15mm, 1" 이상', NULL, '2023-12-12', 'DCSENG', 1200000, 'DCSENG', 'active'), +('TKP-064', '텅스텐 가공기', 'S-TGR', '0.89kg, 0.25~3.2', NULL, '2023-12-12', 'DCSENG', 800000, 'DCSENG', 'active'), +('TKP-065', '전동대차', 'LPM15', '2.0 ton', NULL, '2023-12-20', '두산산업차량', 2800000, '두산산업차량', 'active'); + +-- ============================================ +-- STEP 4: 결과 확인 +-- ============================================ +SELECT '===== 설비 데이터 입력 완료 =====' AS status; +SELECT COUNT(*) AS total_equipments FROM equipments; +SELECT + SUM(CASE WHEN purchase_price IS NOT NULL THEN purchase_price ELSE 0 END) AS total_purchase_value, + COUNT(CASE WHEN purchase_price IS NOT NULL THEN 1 END) AS equipments_with_price +FROM equipments; + +-- 최신 10개 설비 확인 +SELECT equipment_code, equipment_name, supplier, + FORMAT(purchase_price, 0) AS purchase_price_formatted, + manufacturer +FROM equipments +ORDER BY equipment_code DESC +LIMIT 10; diff --git a/api.hyungi.net/db/migrations/20260204_equipment_insert_data.sql b/api.hyungi.net/db/migrations/20260204_equipment_insert_data.sql new file mode 100644 index 0000000..d47a457 --- /dev/null +++ b/api.hyungi.net/db/migrations/20260204_equipment_insert_data.sql @@ -0,0 +1,73 @@ +-- 설비 데이터 입력 (실제 테이블 구조에 맞춤) +-- 먼저 20260204_equipment_add_columns.sql 실행 후 이 파일 실행 + +-- 기존 TKP 데이터 삭제 +DELETE FROM equipments WHERE equipment_code LIKE 'TKP-%'; + +-- 65개 설비 데이터 입력 +INSERT INTO equipments (equipment_code, equipment_name, model, specifications, serial_number, purchase_date, supplier, purchase_price, manufacturer, status) VALUES +('TKP-001', 'AIR COMPRESSOR', 'AR10E', '7.5KW(10HP)', 'K603023Y', '2016-06-01', '지티씨', NULL, '경원', 'active'), +('TKP-002', 'TURN TABLE', 'YCT-200T', '220V', NULL, '2016-05-30', '형진종합공구', 3600000, '유체기계', 'active'), +('TKP-003', 'BAND SAW(中)', 'CY300W', '1500W*380V', '20150943', '2016-05-30', '형진종합공구', 4800000, '유림싸이겐', 'active'), +('TKP-004', 'BAND SAW(小)', 'XB-180WA', '180(VICE)', NULL, '2016-05-30', '형진종합공구', 2700000, '렉스', 'active'), +('TKP-005', 'BAND SAW(小)', 'XB-180WA', '180(VICE)', NULL, '2019-05-30', NULL, NULL, '렉스', 'active'), +('TKP-006', 'TIG용접기', 'DAESUNG-500DT', '500A', 'TEAG0168-001', '2016-05-30', '형진종합공구', 2200000, '대성용접기', 'active'), +('TKP-007', 'TIG용접기', 'DAESUNG-500DT', '500A', 'TEAG0168-002', '2016-05-30', '형진종합공구', 2200000, '대성용접기', 'active'), +('TKP-008', 'TIG용접기', 'DAESUNG-500DT', '500A', 'TEAG0168-003', '2016-05-30', '형진종합공구', 2200000, '대성용접기', 'active'), +('TKP-009', 'CO2용접기', 'COD-500A', '500A', '10880', '2016-05-30', '형진종합공구', 2000000, '대성용접기', 'active'), +('TKP-010', 'O2용접기', 'GSORK', '220V', NULL, '2016-05-30', '형진종합공구', 620000, '재현오토닉스', 'active'), +('TKP-011', 'PIPE BEVELLING MACHINE', 'S-200LT_MT(테이블포함)', '2" ~ 8"', 'KR-17030007', '2017-03-29', 'DCS ENG', 12000000, 'DCS ENG', 'active'), +('TKP-012', 'CO2용접기', '500MX', '220/380V,500A', NULL, '2017-08-02', '현대용접기', 1800000, '현대용접기', 'active'), +('TKP-013', '프라즈마', 'Perfect-150AP', '220/380/440V,140A', NULL, '2017-08-02', '현대용접기', 1900000, '퍼펙트대대', 'active'), +('TKP-014', '터닝로라', 'JK-5-TR', '5TON/380V', NULL, '2017-09-08', '정일기공', 5700000, '정일기공', 'active'), +('TKP-015', '터닝로라', 'JK-5-TR', '5TON/380V', NULL, '2017-09-08', '정일기공', 5700000, '정일기공', 'active'), +('TKP-016', 'TIG용접기', 'Perfect-500PT', '500A/350A', 'TJAD017B-005', '2017-10-18', '현대용접기', 1600000, '퍼펙트대대', 'active'), +('TKP-017', 'TIG용접기', 'Perfect-500PT', '500A/350A', 'TJAD017B-006', '2017-10-18', '현대용접기', 1600000, '퍼펙트대대', 'active'), +('TKP-018', 'TIG용접기', 'Perfect-500PT', '500A/350A', 'TJAD017B-007', '2017-10-18', '현대용접기', 1600000, '퍼펙트대대', 'active'), +('TKP-019', '전해연마기', 'ONB-8000VP', '220V/MAX1200W', '8022701', '2018-03-13', '오토기전', 1450000, '메탈브라이트(오토기전)', 'active'), +('TKP-020', '지게차', '50DA-9F', '5000KGS', 'HHKHFV36JJ0000061', '2018-05-10', '현대지게차', 45000000, '현대지게차', 'active'), +('TKP-021', '조방', NULL, '3658*12190', NULL, '2018-05-11', '천우기계공업/삼덕금속', 14200000, '테크니컬코리아', 'active'), +('TKP-022', 'BAND SAW(大)', 'WBS-RC500AN', '3,300kgs / 7.88kw', 'BC50A18-005F001', '2018-05-31', '원공사', 36000000, '원공사', 'active'), +('TKP-023', 'AIR COMPRESSOR', 'AR20E', '0.95Mpa', 'AR020FE358', '2018-06-05', '경원기계', NULL, '경원기계', 'active'), +('TKP-024', 'TURN TABLE', 'YCT-200TA', '220V', NULL, '2018-06-12', '청운종합공구', 3245000, '유체기계', 'active'), +('TKP-025', 'TIG용접기', 'Perfect-500WT', '500A/AC DC', 'ADKAC017B-006', '2018-06-12', '현대용접기', 2400000, '퍼펙트대대', 'active'), +('TKP-026', 'TIG용접기', 'Perfect-500PT', '500A/DC', 'TAAI018B-002', '2018-06-12', '현대용접기', 1900000, '퍼펙트대대', 'active'), +('TKP-027', 'TIG용접기', 'Perfect-500PT', '500A/DC', 'TAAA018B-009', '2018-06-12', '현대용접기', 1900000, '퍼펙트대대', 'active'), +('TKP-028', 'TIG용접기', 'Perfect-500PT', '500A/DC', 'TAAA018B-001', '2018-06-12', '현대용접기', 1900000, '퍼펙트대대', 'active'), +('TKP-029', 'ELECTRIC CHAIN HOIST', 'DSM-2S', '3Ph-60Hz-380V', 'K1806077', '2018-07-06', '청운종합공구', 2300000, '대산', 'active'), +('TKP-030', 'ELECTRIC CHAIN HOIST', 'DSM-2S', '3Ph-60Hz-380V', 'K1807028', '2018-07-10', '청운종합공구', 2300000, '대산', 'active'), +('TKP-031', 'ELECTRIC CHAIN HOIST', 'DSM-2S', '3Ph-60Hz-380V', 'K1807029', '2018-07-10', '청운종합공구', 2300000, '대산', 'active'), +('TKP-032', '만능탭 드릴링머신', 'SF-TDM32', '1.5KW', NULL, '2018-11-09', '㈜애스앤애프', 2927000, '㈜애스앤에프', 'active'), +('TKP-033', '지게차', '30D-9B', '2850KGS', 'HHKHHN51KK0000864', '2019-03-06', '현대지게차', 29400000, '현대지게차', 'active'), +('TKP-034', '갠츄리크레인', 'CRANE - DHG', '50/10Ton x SP20M x T/L50M x H15M', NULL, '2019-05-09', '유진산업기계', 249000000, '반도호이스트', 'active'), +('TKP-035', 'OVER HEAD CRANE', 'CRANE - DHO', '20Ton x SP24.0M x T/L67M x H11M', NULL, '2019-05-09', '유진산업기계', 58000000, '반도호이스트', 'active'), +('TKP-036', 'OVER HEAD CRANE', 'CRANE - DHO', '20Ton x SP24.0M x T/L67M x H11M', NULL, '2019-05-09', '유진산업기계', 58000000, '반도호이스트', 'active'), +('TKP-037', 'OVER HEAD CRANE', 'CRANE - DHO', '5Ton x SP24.0M x T/L67M x H11M', NULL, '2019-05-09', '유진산업기계', 29000000, '반도호이스트', 'active'), +('TKP-038', 'OVER HEAD CRANE', 'CRANE - DHO', '5Ton x SP24.0M x T/L67M x H11M', NULL, '2019-05-09', '유진산업기계', 29000000, '반도호이스트', 'active'), +('TKP-039', '고소작업대', NULL, '250 Kg', NULL, '2019-01-01', NULL, NULL, '㈜쓰리제이테크', 'active'), +('TKP-040', '고소작업대', NULL, '250 Kg', NULL, '2019-01-01', NULL, NULL, '㈜쓰리제이테크', 'active'), +('TKP-041', 'AIR CONDITIONER', '코끼리 냉장고', NULL, NULL, '2019-01-01', NULL, NULL, '㈜에스엔에프', 'active'), +('TKP-042', 'AIR CONDITIONER', NULL, NULL, NULL, '2019-01-01', NULL, NULL, '㈜에스엔에프', 'active'), +('TKP-043', 'AIR CONDITIONER', NULL, NULL, NULL, '2019-01-01', NULL, NULL, '㈜에스엔에프', 'active'), +('TKP-044', '용접흄집진기', NULL, '5 HP / 60 m3/Min', NULL, '2019-01-01', NULL, NULL, NULL, 'active'), +('TKP-045', '용접흄집진기', NULL, '5 HP / 60 m3/Min', NULL, '2019-01-01', NULL, NULL, NULL, 'active'), +('TKP-046', '용접흄집진기', NULL, '5 HP / 60 m3/Min', NULL, '2019-01-01', NULL, NULL, NULL, 'active'), +('TKP-047', '용접흄집진기', NULL, '5 HP / 60 m3/Min', NULL, '2019-01-01', NULL, NULL, NULL, 'active'), +('TKP-048', '용접흄집진기', NULL, '5 HP / 60 m3/Min', NULL, '2019-01-01', NULL, NULL, NULL, 'active'), +('TKP-049', '자동용접기', NULL, NULL, NULL, '2019-01-01', 'Swage-Lok', 50000000, 'Swage-Lok', 'active'), +('TKP-050', 'Magnetic Drill', NULL, NULL, NULL, '2020-01-01', '청운종합공구', NULL, 'NITTO', 'active'), +('TKP-051', 'Magnetic Drill', NULL, NULL, NULL, '2020-01-01', '청운종합공구', NULL, 'Key-Yang', 'active'), +('TKP-052', 'Tube Bending M/C', NULL, NULL, NULL, '2020-01-01', NULL, NULL, 'REMS', 'active'), +('TKP-053', 'Unit Test Panel', NULL, NULL, NULL, '2021-01-01', NULL, NULL, NULL, 'active'), +('TKP-054', '고소작업대', NULL, '500 Kg', NULL, '2021-01-01', NULL, NULL, '㈜쓰리제이테크', 'active'), +('TKP-055', '용접봉 건조기', '주문제작', '박스형', NULL, '2022-05-04', '진원하이텍', 2300000, '진원하이텍', 'active'), +('TKP-056', 'C&T 가공기', 'MS-CTK469', NULL, NULL, '2022-07-20', 'Swage-Lok', 7347600, 'Swage-Lok', 'active'), +('TKP-057', '테이블형 튜브 벤딩기', 'MS-BTT-K', '1/2", 1/4"', NULL, '2022-06-03', 'Swage-Lok', 20000000, 'Swage-Lok', 'active'), +('TKP-058', '자동용접기 헤드', 'SWS-10H-D-15', '1/2"', NULL, '2022-06-03', 'Swage-Lok', 20000000, 'Swage-Lok', 'active'), +('TKP-059', '천장주행크레인', 'HC-75D-13105', '7.5ton', NULL, '2023-06-09', '에이치앤씨', 22800000, '에이치앤씨', 'active'), +('TKP-060', 'AED', 'CU-SP1 Plus', '저출력심장충격기', NULL, '2023-11-09', '제이메디', 1600000, '제이메디', 'active'), +('TKP-061', '베벨머신', 'S-150', 'O.D 20mm ~ 170mm', NULL, '2023-12-12', 'DCSENG', 16000000, 'DCSENG', 'active'), +('TKP-062', '피막제거기', 'CM4_OD_GC', '최대 폭 48mm, 최대 깊이 15mm, 6"이상', NULL, '2023-12-12', 'DCSENG', 2000000, 'DCSENG', 'active'), +('TKP-063', '피막제거기', 'S-CM4_OD', '최대 폭 48mm, 최대 깊이 15mm, 1" 이상', NULL, '2023-12-12', 'DCSENG', 1200000, 'DCSENG', 'active'), +('TKP-064', '텅스텐 가공기', 'S-TGR', '0.89kg, 0.25~3.2', NULL, '2023-12-12', 'DCSENG', 800000, 'DCSENG', 'active'), +('TKP-065', '전동대차', 'LPM15', '2.0 ton', NULL, '2023-12-20', '두산산업차량', 2800000, '두산산업차량', 'active'); diff --git a/api.hyungi.net/db/migrations/20260204_equipment_simple.sql b/api.hyungi.net/db/migrations/20260204_equipment_simple.sql new file mode 100644 index 0000000..c49fc81 --- /dev/null +++ b/api.hyungi.net/db/migrations/20260204_equipment_simple.sql @@ -0,0 +1,78 @@ +-- 설비 관리 설정 (phpMyAdmin용 단순 버전) +-- phpMyAdmin에서 가져오기로 실행 + +-- ============================================ +-- STEP 2: 기존 TKP 데이터 삭제 +-- ============================================ +DELETE FROM equipments WHERE equipment_code LIKE 'TKP-%'; + +-- ============================================ +-- STEP 3: 65개 설비 데이터 입력 +-- ============================================ + +INSERT INTO equipments (equipment_code, equipment_name, model_name, specifications, serial_number, installation_date, supplier, purchase_price, manufacturer, status) VALUES +('TKP-001', 'AIR COMPRESSOR', 'AR10E', '7.5KW(10HP)', 'K603023Y', '2016-06-01', '지티씨', NULL, '경원', 'active'), +('TKP-002', 'TURN TABLE', 'YCT-200T', '220V', NULL, '2016-05-30', '형진종합공구', 3600000, '유체기계', 'active'), +('TKP-003', 'BAND SAW(中)', 'CY300W', '1500W*380V', '20150943', '2016-05-30', '형진종합공구', 4800000, '유림싸이겐', 'active'), +('TKP-004', 'BAND SAW(小)', 'XB-180WA', '180(VICE)', NULL, '2016-05-30', '형진종합공구', 2700000, '렉스', 'active'), +('TKP-005', 'BAND SAW(小)', 'XB-180WA', '180(VICE)', NULL, '2019-05-30', NULL, NULL, '렉스', 'active'), +('TKP-006', 'TIG용접기', 'DAESUNG-500DT', '500A', 'TEAG0168-001', '2016-05-30', '형진종합공구', 2200000, '대성용접기', 'active'), +('TKP-007', 'TIG용접기', 'DAESUNG-500DT', '500A', 'TEAG0168-002', '2016-05-30', '형진종합공구', 2200000, '대성용접기', 'active'), +('TKP-008', 'TIG용접기', 'DAESUNG-500DT', '500A', 'TEAG0168-003', '2016-05-30', '형진종합공구', 2200000, '대성용접기', 'active'), +('TKP-009', 'CO2용접기', 'COD-500A', '500A', '10880', '2016-05-30', '형진종합공구', 2000000, '대성용접기', 'active'), +('TKP-010', 'O2용접기', 'GSORK', '220V', NULL, '2016-05-30', '형진종합공구', 620000, '재현오토닉스', 'active'), +('TKP-011', 'PIPE BEVELLING MACHINE', 'S-200LT_MT(테이블포함)', '2" ~ 8"', 'KR-17030007', '2017-03-29', 'DCS ENG', 12000000, 'DCS ENG', 'active'), +('TKP-012', 'CO2용접기', '500MX', '220/380V,500A', NULL, '2017-08-02', '현대용접기', 1800000, '현대용접기', 'active'), +('TKP-013', '프라즈마', 'Perfect-150AP', '220/380/440V,140A', NULL, '2017-08-02', '현대용접기', 1900000, '퍼펙트대대', 'active'), +('TKP-014', '터닝로라', 'JK-5-TR', '5TON/380V', NULL, '2017-09-08', '정일기공', 5700000, '정일기공', 'active'), +('TKP-015', '터닝로라', 'JK-5-TR', '5TON/380V', NULL, '2017-09-08', '정일기공', 5700000, '정일기공', 'active'), +('TKP-016', 'TIG용접기', 'Perfect-500PT', '500A/350A', 'TJAD017B-005', '2017-10-18', '현대용접기', 1600000, '퍼펙트대대', 'active'), +('TKP-017', 'TIG용접기', 'Perfect-500PT', '500A/350A', 'TJAD017B-006', '2017-10-18', '현대용접기', 1600000, '퍼펙트대대', 'active'), +('TKP-018', 'TIG용접기', 'Perfect-500PT', '500A/350A', 'TJAD017B-007', '2017-10-18', '현대용접기', 1600000, '퍼펙트대대', 'active'), +('TKP-019', '전해연마기', 'ONB-8000VP', '220V/MAX1200W', '8022701', '2018-03-13', '오토기전', 1450000, '메탈브라이트(오토기전)', 'active'), +('TKP-020', '지게차', '50DA-9F', '5000KGS', 'HHKHFV36JJ0000061', '2018-05-10', '현대지게차', 45000000, '현대지게차', 'active'), +('TKP-021', '조방', NULL, '3658*12190', NULL, '2018-05-11', '천우기계공업/삼덕금속', 14200000, '테크니컬코리아', 'active'), +('TKP-022', 'BAND SAW(大)', 'WBS-RC500AN', '3,300kgs / 7.88kw', 'BC50A18-005F001', '2018-05-31', '원공사', 36000000, '원공사', 'active'), +('TKP-023', 'AIR COMPRESSOR', 'AR20E', '0.95Mpa', 'AR020FE358', '2018-06-05', '경원기계', NULL, '경원기계', 'active'), +('TKP-024', 'TURN TABLE', 'YCT-200TA', '220V', NULL, '2018-06-12', '청운종합공구', 3245000, '유체기계', 'active'), +('TKP-025', 'TIG용접기', 'Perfect-500WT', '500A/AC DC', 'ADKAC017B-006', '2018-06-12', '현대용접기', 2400000, '퍼펙트대대', 'active'), +('TKP-026', 'TIG용접기', 'Perfect-500PT', '500A/DC', 'TAAI018B-002', '2018-06-12', '현대용접기', 1900000, '퍼펙트대대', 'active'), +('TKP-027', 'TIG용접기', 'Perfect-500PT', '500A/DC', 'TAAA018B-009', '2018-06-12', '현대용접기', 1900000, '퍼펙트대대', 'active'), +('TKP-028', 'TIG용접기', 'Perfect-500PT', '500A/DC', 'TAAA018B-001', '2018-06-12', '현대용접기', 1900000, '퍼펙트대대', 'active'), +('TKP-029', 'ELECTRIC CHAIN HOIST', 'DSM-2S', '3Ph-60Hz-380V', 'K1806077', '2018-07-06', '청운종합공구', 2300000, '대산', 'active'), +('TKP-030', 'ELECTRIC CHAIN HOIST', 'DSM-2S', '3Ph-60Hz-380V', 'K1807028', '2018-07-10', '청운종합공구', 2300000, '대산', 'active'), +('TKP-031', 'ELECTRIC CHAIN HOIST', 'DSM-2S', '3Ph-60Hz-380V', 'K1807029', '2018-07-10', '청운종합공구', 2300000, '대산', 'active'), +('TKP-032', '만능탭 드릴링머신', 'SF-TDM32', '1.5KW', NULL, '2018-11-09', '㈜애스앤애프', 2927000, '㈜애스앤에프', 'active'), +('TKP-033', '지게차', '30D-9B', '2850KGS', 'HHKHHN51KK0000864', '2019-03-06', '현대지게차', 29400000, '현대지게차', 'active'), +('TKP-034', '갠츄리크레인', 'CRANE - DHG', '50/10Ton x SP20M x T/L50M x H15M', NULL, '2019-05-09', '유진산업기계', 249000000, '반도호이스트', 'active'), +('TKP-035', 'OVER HEAD CRANE', 'CRANE - DHO', '20Ton x SP24.0M x T/L67M x H11M', NULL, '2019-05-09', '유진산업기계', 58000000, '반도호이스트', 'active'), +('TKP-036', 'OVER HEAD CRANE', 'CRANE - DHO', '20Ton x SP24.0M x T/L67M x H11M', NULL, '2019-05-09', '유진산업기계', 58000000, '반도호이스트', 'active'), +('TKP-037', 'OVER HEAD CRANE', 'CRANE - DHO', '5Ton x SP24.0M x T/L67M x H11M', NULL, '2019-05-09', '유진산업기계', 29000000, '반도호이스트', 'active'), +('TKP-038', 'OVER HEAD CRANE', 'CRANE - DHO', '5Ton x SP24.0M x T/L67M x H11M', NULL, '2019-05-09', '유진산업기계', 29000000, '반도호이스트', 'active'), +('TKP-039', '고소작업대', NULL, '250 Kg', NULL, '2019-01-01', NULL, NULL, '㈜쓰리제이테크', 'active'), +('TKP-040', '고소작업대', NULL, '250 Kg', NULL, '2019-01-01', NULL, NULL, '㈜쓰리제이테크', 'active'), +('TKP-041', 'AIR CONDITIONER', '코끼리 냉장고', NULL, NULL, '2019-01-01', NULL, NULL, '㈜에스엔에프', 'active'), +('TKP-042', 'AIR CONDITIONER', NULL, NULL, NULL, '2019-01-01', NULL, NULL, '㈜에스엔에프', 'active'), +('TKP-043', 'AIR CONDITIONER', NULL, NULL, NULL, '2019-01-01', NULL, NULL, '㈜에스엔에프', 'active'), +('TKP-044', '용접흄집진기', NULL, '5 HP / 60 m3/Min', NULL, '2019-01-01', NULL, NULL, NULL, 'active'), +('TKP-045', '용접흄집진기', NULL, '5 HP / 60 m3/Min', NULL, '2019-01-01', NULL, NULL, NULL, 'active'), +('TKP-046', '용접흄집진기', NULL, '5 HP / 60 m3/Min', NULL, '2019-01-01', NULL, NULL, NULL, 'active'), +('TKP-047', '용접흄집진기', NULL, '5 HP / 60 m3/Min', NULL, '2019-01-01', NULL, NULL, NULL, 'active'), +('TKP-048', '용접흄집진기', NULL, '5 HP / 60 m3/Min', NULL, '2019-01-01', NULL, NULL, NULL, 'active'), +('TKP-049', '자동용접기', NULL, NULL, NULL, '2019-01-01', 'Swage-Lok', 50000000, 'Swage-Lok', 'active'), +('TKP-050', 'Magnetic Drill', NULL, NULL, NULL, '2020-01-01', '청운종합공구', NULL, 'NITTO', 'active'), +('TKP-051', 'Magnetic Drill', NULL, NULL, NULL, '2020-01-01', '청운종합공구', NULL, 'Key-Yang', 'active'), +('TKP-052', 'Tube Bending M/C', NULL, NULL, NULL, '2020-01-01', NULL, NULL, 'REMS', 'active'), +('TKP-053', 'Unit Test Panel', NULL, NULL, NULL, '2021-01-01', NULL, NULL, NULL, 'active'), +('TKP-054', '고소작업대', NULL, '500 Kg', NULL, '2021-01-01', NULL, NULL, '㈜쓰리제이테크', 'active'), +('TKP-055', '용접봉 건조기', '주문제작', '박스형', NULL, '2022-05-04', '진원하이텍', 2300000, '진원하이텍', 'active'), +('TKP-056', 'C&T 가공기', 'MS-CTK469', NULL, NULL, '2022-07-20', 'Swage-Lok', 7347600, 'Swage-Lok', 'active'), +('TKP-057', '테이블형 튜브 벤딩기', 'MS-BTT-K', '1/2", 1/4"', NULL, '2022-06-03', 'Swage-Lok', 20000000, 'Swage-Lok', 'active'), +('TKP-058', '자동용접기 헤드', 'SWS-10H-D-15', '1/2"', NULL, '2022-06-03', 'Swage-Lok', 20000000, 'Swage-Lok', 'active'), +('TKP-059', '천장주행크레인', 'HC-75D-13105', '7.5ton', NULL, '2023-06-09', '에이치앤씨', 22800000, '에이치앤씨', 'active'), +('TKP-060', 'AED', 'CU-SP1 Plus', '저출력심장충격기', NULL, '2023-11-09', '제이메디', 1600000, '제이메디', 'active'), +('TKP-061', '베벨머신', 'S-150', 'O.D 20mm ~ 170mm', NULL, '2023-12-12', 'DCSENG', 16000000, 'DCSENG', 'active'), +('TKP-062', '피막제거기', 'CM4_OD_GC', '최대 폭 48mm, 최대 깊이 15mm, 6"이상', NULL, '2023-12-12', 'DCSENG', 2000000, 'DCSENG', 'active'), +('TKP-063', '피막제거기', 'S-CM4_OD', '최대 폭 48mm, 최대 깊이 15mm, 1" 이상', NULL, '2023-12-12', 'DCSENG', 1200000, 'DCSENG', 'active'), +('TKP-064', '텅스텐 가공기', 'S-TGR', '0.89kg, 0.25~3.2', NULL, '2023-12-12', 'DCSENG', 800000, 'DCSENG', 'active'), +('TKP-065', '전동대차', 'LPM15', '2.0 ton', NULL, '2023-12-20', '두산산업차량', 2800000, '두산산업차량', 'active'); diff --git a/api.hyungi.net/db/migrations/add_equipment_purchase_fields.sql b/api.hyungi.net/db/migrations/add_equipment_purchase_fields.sql new file mode 100644 index 0000000..3714211 --- /dev/null +++ b/api.hyungi.net/db/migrations/add_equipment_purchase_fields.sql @@ -0,0 +1,13 @@ +-- 설비 테이블에 구입처 및 구입가격 컬럼 추가 +-- 실행: mysql -u [user] -p [database] < add_equipment_purchase_fields.sql + +-- 컬럼 추가 +ALTER TABLE equipments +ADD COLUMN supplier VARCHAR(100) NULL COMMENT '구입처' AFTER manufacturer, +ADD COLUMN purchase_price DECIMAL(15, 0) NULL COMMENT '구입가격' AFTER supplier; + +-- 확인 +SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_COMMENT +FROM INFORMATION_SCHEMA.COLUMNS +WHERE TABLE_NAME = 'equipments' +AND COLUMN_NAME IN ('supplier', 'purchase_price'); diff --git a/api.hyungi.net/db/migrations/insert_equipment_data.sql b/api.hyungi.net/db/migrations/insert_equipment_data.sql new file mode 100644 index 0000000..a66a252 --- /dev/null +++ b/api.hyungi.net/db/migrations/insert_equipment_data.sql @@ -0,0 +1,77 @@ +-- 설비 데이터 입력 +-- 실행 전 먼저 add_equipment_purchase_fields.sql 실행 필요 +-- 실행: mysql -u [user] -p [database] < insert_equipment_data.sql + +-- 기존 데이터 삭제 (필요시 주석 해제) +-- TRUNCATE TABLE equipments; + +INSERT INTO equipments (equipment_code, equipment_name, model_name, specifications, serial_number, installation_date, supplier, purchase_price, manufacturer, status) VALUES +('TKP-001', 'AIR COMPRESSOR', 'AR10E', '7.5KW(10HP)', 'K603023Y', '2016-06-01', '지티씨', NULL, '경원', 'active'), +('TKP-002', 'TURN TABLE', 'YCT-200T', '220V', NULL, '2016-05-30', '형진종합공구', 3600000, '유체기계', 'active'), +('TKP-003', 'BAND SAW(中)', 'CY300W', '1500W*380V', '20150943', '2016-05-30', '형진종합공구', 4800000, '유림싸이겐', 'active'), +('TKP-004', 'BAND SAW(小)', 'XB-180WA', '180(VICE)', NULL, '2016-05-30', '형진종합공구', 2700000, '렉스', 'active'), +('TKP-005', 'BAND SAW(小)', 'XB-180WA', '180(VICE)', NULL, '2019-05-30', NULL, NULL, '렉스', 'active'), +('TKP-006', 'TIG용접기', 'DAESUNG-500DT', '500A', 'TEAG0168-001', '2016-05-30', '형진종합공구', 2200000, '대성용접기', 'active'), +('TKP-007', 'TIG용접기', 'DAESUNG-500DT', '500A', 'TEAG0168-002', '2016-05-30', '형진종합공구', 2200000, '대성용접기', 'active'), +('TKP-008', 'TIG용접기', 'DAESUNG-500DT', '500A', 'TEAG0168-003', '2016-05-30', '형진종합공구', 2200000, '대성용접기', 'active'), +('TKP-009', 'CO2용접기', 'COD-500A', '500A', '10880', '2016-05-30', '형진종합공구', 2000000, '대성용접기', 'active'), +('TKP-010', 'O2용접기', 'GSORK', '220V', NULL, '2016-05-30', '형진종합공구', 620000, '재현오토닉스', 'active'), +('TKP-011', 'PIPE BEVELLING MACHINE', 'S-200LT_MT(테이블포함)', '2" ~ 8"', 'KR-17030007', '2017-03-29', 'DCS ENG', 12000000, 'DCS ENG', 'active'), +('TKP-012', 'CO2용접기', '500MX', '220/380V,500A', NULL, '2017-08-02', '현대용접기', 1800000, '현대용접기', 'active'), +('TKP-013', '프라즈마', 'Perfect-150AP', '220/380/440V,140A', NULL, '2017-08-02', '현대용접기', 1900000, '퍼펙트대대', 'active'), +('TKP-014', '터닝로라', 'JK-5-TR', '5TON/380V', NULL, '2017-09-08', '정일기공', 5700000, '정일기공', 'active'), +('TKP-015', '터닝로라', 'JK-5-TR', '5TON/380V', NULL, '2017-09-08', '정일기공', 5700000, '정일기공', 'active'), +('TKP-016', 'TIG용접기', 'Perfect-500PT', '500A/350A', 'TJAD017B-005', '2017-10-18', '현대용접기', 1600000, '퍼펙트대대', 'active'), +('TKP-017', 'TIG용접기', 'Perfect-500PT', '500A/350A', 'TJAD017B-006', '2017-10-18', '현대용접기', 1600000, '퍼펙트대대', 'active'), +('TKP-018', 'TIG용접기', 'Perfect-500PT', '500A/350A', 'TJAD017B-007', '2017-10-18', '현대용접기', 1600000, '퍼펙트대대', 'active'), +('TKP-019', '전해연마기', 'ONB-8000VP', '220V/MAX1200W', '8022701', '2018-03-13', '오토기전', 1450000, '메탈브라이트(오토기전)', 'active'), +('TKP-020', '지게차', '50DA-9F', '5000KGS', 'HHKHFV36JJ0000061', '2018-05-10', '현대지게차', 45000000, '현대지게차', 'active'), +('TKP-021', '조방', NULL, '3658*12190', NULL, '2018-05-11', '천우기계공업/삼덕금속', 14200000, '테크니컬코리아', 'active'), +('TKP-022', 'BAND SAW(大)', 'WBS-RC500AN', '3,300kgs / 7.88kw', 'BC50A18-005F001', '2018-05-31', '원공사', 36000000, '원공사', 'active'), +('TKP-023', 'AIR COMPRESSOR', 'AR20E', '0.95Mpa', 'AR020FE358', '2018-06-05', '경원기계', NULL, '경원기계', 'active'), +('TKP-024', 'TURN TABLE', 'YCT-200TA', '220V', NULL, '2018-06-12', '청운종합공구', 3245000, '유체기계', 'active'), +('TKP-025', 'TIG용접기', 'Perfect-500WT', '500A/AC DC', 'ADKAC017B-006', '2018-06-12', '현대용접기', 2400000, '퍼펙트대대', 'active'), +('TKP-026', 'TIG용접기', 'Perfect-500PT', '500A/DC', 'TAAI018B-002', '2018-06-12', '현대용접기', 1900000, '퍼펙트대대', 'active'), +('TKP-027', 'TIG용접기', 'Perfect-500PT', '500A/DC', 'TAAA018B-009', '2018-06-12', '현대용접기', 1900000, '퍼펙트대대', 'active'), +('TKP-028', 'TIG용접기', 'Perfect-500PT', '500A/DC', 'TAAA018B-001', '2018-06-12', '현대용접기', 1900000, '퍼펙트대대', 'active'), +('TKP-029', 'ELECTRIC CHAIN HOIST', 'DSM-2S', '3Ph-60Hz-380V', 'K1806077', '2018-07-06', '청운종합공구', 2300000, '대산', 'active'), +('TKP-030', 'ELECTRIC CHAIN HOIST', 'DSM-2S', '3Ph-60Hz-380V', 'K1807028', '2018-07-10', '청운종합공구', 2300000, '대산', 'active'), +('TKP-031', 'ELECTRIC CHAIN HOIST', 'DSM-2S', '3Ph-60Hz-380V', 'K1807029', '2018-07-10', '청운종합공구', 2300000, '대산', 'active'), +('TKP-032', '만능탭 드릴링머신', 'SF-TDM32', '1.5KW', NULL, '2018-11-09', '㈜애스앤애프', 2927000, '㈜애스앤에프', 'active'), +('TKP-033', '지게차', '30D-9B', '2850KGS', 'HHKHHN51KK0000864', '2019-03-06', '현대지게차', 29400000, '현대지게차', 'active'), +('TKP-034', '갠츄리크레인', 'CRANE - DHG', '50/10Ton x SP20M x T/L50M x H15M', NULL, '2019-05-09', '유진산업기계', 249000000, '반도호이스트', 'active'), +('TKP-035', 'OVER HEAD CRANE', 'CRANE - DHO', '20Ton x SP24.0M x T/L67M x H11M', NULL, '2019-05-09', '유진산업기계', 58000000, '반도호이스트', 'active'), +('TKP-036', 'OVER HEAD CRANE', 'CRANE - DHO', '20Ton x SP24.0M x T/L67M x H11M', NULL, '2019-05-09', '유진산업기계', 58000000, '반도호이스트', 'active'), +('TKP-037', 'OVER HEAD CRANE', 'CRANE - DHO', '5Ton x SP24.0M x T/L67M x H11M', NULL, '2019-05-09', '유진산업기계', 29000000, '반도호이스트', 'active'), +('TKP-038', 'OVER HEAD CRANE', 'CRANE - DHO', '5Ton x SP24.0M x T/L67M x H11M', NULL, '2019-05-09', '유진산업기계', 29000000, '반도호이스트', 'active'), +('TKP-039', '고소작업대', NULL, '250 Kg', NULL, '2019-01-01', NULL, NULL, '㈜쓰리제이테크', 'active'), +('TKP-040', '고소작업대', NULL, '250 Kg', NULL, '2019-01-01', NULL, NULL, '㈜쓰리제이테크', 'active'), +('TKP-041', 'AIR CONDITIONER', '코끼리 냉장고', NULL, NULL, '2019-01-01', NULL, NULL, '㈜에스엔에프', 'active'), +('TKP-042', 'AIR CONDITIONER', NULL, NULL, NULL, '2019-01-01', NULL, NULL, '㈜에스엔에프', 'active'), +('TKP-043', 'AIR CONDITIONER', NULL, NULL, NULL, '2019-01-01', NULL, NULL, '㈜에스엔에프', 'active'), +('TKP-044', '용접흄집진기', NULL, '5 HP / 60 m3/Min', NULL, '2019-01-01', NULL, NULL, NULL, 'active'), +('TKP-045', '용접흄집진기', NULL, '5 HP / 60 m3/Min', NULL, '2019-01-01', NULL, NULL, NULL, 'active'), +('TKP-046', '용접흄집진기', NULL, '5 HP / 60 m3/Min', NULL, '2019-01-01', NULL, NULL, NULL, 'active'), +('TKP-047', '용접흄집진기', NULL, '5 HP / 60 m3/Min', NULL, '2019-01-01', NULL, NULL, NULL, 'active'), +('TKP-048', '용접흄집진기', NULL, '5 HP / 60 m3/Min', NULL, '2019-01-01', NULL, NULL, NULL, 'active'), +('TKP-049', '자동용접기', NULL, NULL, NULL, '2019-01-01', 'Swage-Lok', 50000000, 'Swage-Lok', 'active'), +('TKP-050', 'Magnetic Drill', NULL, NULL, NULL, '2020-01-01', '청운종합공구', NULL, 'NITTO', 'active'), +('TKP-051', 'Magnetic Drill', NULL, NULL, NULL, '2020-01-01', '청운종합공구', NULL, 'Key-Yang', 'active'), +('TKP-052', 'Tube Bending M/C', NULL, NULL, NULL, '2020-01-01', NULL, NULL, 'REMS', 'active'), +('TKP-053', 'Unit Test Panel', NULL, NULL, NULL, '2021-01-01', NULL, NULL, NULL, 'active'), +('TKP-054', '고소작업대', NULL, '500 Kg', NULL, '2021-01-01', NULL, NULL, '㈜쓰리제이테크', 'active'), +('TKP-055', '용접봉 건조기', '주문제작', '박스형', NULL, '2022-05-04', '진원하이텍', 2300000, '진원하이텍', 'active'), +('TKP-056', 'C&T 가공기', 'MS-CTK469', NULL, NULL, '2022-07-20', 'Swage-Lok', 7347600, 'Swage-Lok', 'active'), +('TKP-057', '테이블형 튜브 벤딩기', 'MS-BTT-K', '1/2", 1/4"', NULL, '2022-06-03', 'Swage-Lok', 20000000, 'Swage-Lok', 'active'), +('TKP-058', '자동용접기 헤드', 'SWS-10H-D-15', '1/2"', NULL, '2022-06-03', 'Swage-Lok', 20000000, 'Swage-Lok', 'active'), +('TKP-059', '천장주행크레인', 'HC-75D-13105', '7.5ton', NULL, '2023-06-09', '에이치앤씨', 22800000, '에이치앤씨', 'active'), +('TKP-060', 'AED', 'CU-SP1 Plus', '저출력심장충격기', NULL, '2023-11-09', '제이메디', 1600000, '제이메디', 'active'), +('TKP-061', '베벨머신', 'S-150', 'O.D 20mm ~ 170mm', NULL, '2023-12-12', 'DCSENG', 16000000, 'DCSENG', 'active'), +('TKP-062', '피막제거기', 'CM4_OD_GC', '최대 폭 48mm, 최대 깊이 15mm, 6"이상', NULL, '2023-12-12', 'DCSENG', 2000000, 'DCSENG', 'active'), +('TKP-063', '피막제거기', 'S-CM4_OD', '최대 폭 48mm, 최대 깊이 15mm, 1" 이상', NULL, '2023-12-12', 'DCSENG', 1200000, 'DCSENG', 'active'), +('TKP-064', '텅스텐 가공기', 'S-TGR', '0.89kg, 0.25~3.2', NULL, '2023-12-12', 'DCSENG', 800000, 'DCSENG', 'active'), +('TKP-065', '전동대차', 'LPM15', '2.0 ton', NULL, '2023-12-20', '두산산업차량', 2800000, '두산산업차량', 'active'); + +-- 입력 확인 +SELECT COUNT(*) AS total_count FROM equipments; +SELECT equipment_code, equipment_name, supplier, purchase_price, manufacturer FROM equipments ORDER BY equipment_code LIMIT 10; diff --git a/api.hyungi.net/db/migrations/sync_production_attendance.sql b/api.hyungi.net/db/migrations/sync_production_attendance.sql new file mode 100644 index 0000000..2740b71 --- /dev/null +++ b/api.hyungi.net/db/migrations/sync_production_attendance.sql @@ -0,0 +1,34 @@ +-- ===================================================== +-- daily_attendance_records 테이블 운영 DB 동기화 +-- 실행 전 백업 권장 +-- ===================================================== + +-- 1. is_present 컬럼 추가 (출근 체크용) +ALTER TABLE `daily_attendance_records` +ADD COLUMN IF NOT EXISTS `is_present` TINYINT(1) DEFAULT 1 COMMENT '출근 여부' AFTER `is_overtime_approved`; + +-- 기존 데이터는 모두 출근으로 설정 +UPDATE `daily_attendance_records` SET `is_present` = 1 WHERE `is_present` IS NULL; + +-- 2. created_by 컬럼 추가 (등록자) +ALTER TABLE `daily_attendance_records` +ADD COLUMN IF NOT EXISTS `created_by` INT NULL COMMENT '등록자 user_id' AFTER `is_present`; + +-- 기존 데이터는 시스템(1)으로 설정 +UPDATE `daily_attendance_records` SET `created_by` = 1 WHERE `created_by` IS NULL; + +-- 3. check_in_time, check_out_time 컬럼 추가 (선택사항) +ALTER TABLE `daily_attendance_records` +ADD COLUMN IF NOT EXISTS `check_in_time` TIME NULL COMMENT '출근 시간' AFTER `vacation_type_id`; + +ALTER TABLE `daily_attendance_records` +ADD COLUMN IF NOT EXISTS `check_out_time` TIME NULL COMMENT '퇴근 시간' AFTER `check_in_time`; + +-- 4. notes 컬럼 추가 +ALTER TABLE `daily_attendance_records` +ADD COLUMN IF NOT EXISTS `notes` TEXT NULL COMMENT '비고' AFTER `is_overtime_approved`; + +-- ===================================================== +-- 확인용 쿼리 +-- ===================================================== +-- DESCRIBE `daily_attendance_records`; diff --git a/api.hyungi.net/models/attendanceModel.js b/api.hyungi.net/models/attendanceModel.js index 51295f0..6298ec9 100644 --- a/api.hyungi.net/models/attendanceModel.js +++ b/api.hyungi.net/models/attendanceModel.js @@ -13,7 +13,7 @@ class AttendanceModel { wat.type_code as attendance_type_code, vt.type_name as vacation_type_name, vt.type_code as vacation_type_code, - vt.hours_deduction as vacation_hours + vt.deduct_days as vacation_days FROM daily_attendance_records dar LEFT JOIN workers w ON dar.worker_id = w.worker_id LEFT JOIN work_attendance_types wat ON dar.attendance_type_id = wat.id @@ -315,7 +315,8 @@ class AttendanceModel { `, [workerId, date]); const currentHours = parseFloat(workHours[0].total_hours); - const vacationHours = parseFloat(vacationTypeInfo.hours_deduction); + // deduct_days를 시간으로 변환 (1일 = 8시간) + const vacationHours = parseFloat(vacationTypeInfo.deduct_days) * 8; const totalHours = currentHours + vacationHours; // 근로 유형 결정 diff --git a/api.hyungi.net/models/departmentModel.js b/api.hyungi.net/models/departmentModel.js new file mode 100644 index 0000000..e9c329b --- /dev/null +++ b/api.hyungi.net/models/departmentModel.js @@ -0,0 +1,120 @@ +// models/departmentModel.js +const { getDb } = require('../dbPool'); + +const departmentModel = { + // 모든 부서 조회 (계층 구조 포함) + async getAll() { + const db = await getDb(); + const [rows] = await db.query(` + SELECT d.*, + p.department_name as parent_name, + (SELECT COUNT(*) FROM workers w WHERE w.department_id = d.department_id AND w.status = 'active') as worker_count + FROM departments d + LEFT JOIN departments p ON d.parent_id = p.department_id + ORDER BY d.display_order, d.department_name + `); + return rows; + }, + + // 활성 부서만 조회 + async getActive() { + const db = await getDb(); + const [rows] = await db.query(` + SELECT d.*, + p.department_name as parent_name, + (SELECT COUNT(*) FROM workers w WHERE w.department_id = d.department_id AND w.status = 'active') as worker_count + FROM departments d + LEFT JOIN departments p ON d.parent_id = p.department_id + WHERE d.is_active = TRUE + ORDER BY d.display_order, d.department_name + `); + return rows; + }, + + // 부서 ID로 조회 + async getById(departmentId) { + const db = await getDb(); + const [rows] = await db.query(` + SELECT d.*, + p.department_name as parent_name + FROM departments d + LEFT JOIN departments p ON d.parent_id = p.department_id + WHERE d.department_id = ? + `, [departmentId]); + return rows[0]; + }, + + // 부서 생성 + async create(data) { + const db = await getDb(); + const { department_name, parent_id, description, is_active, display_order } = data; + const [result] = await db.query(` + INSERT INTO departments (department_name, parent_id, description, is_active, display_order) + VALUES (?, ?, ?, ?, ?) + `, [department_name, parent_id || null, description || null, is_active !== false, display_order || 0]); + return result.insertId; + }, + + // 부서 수정 + async update(departmentId, data) { + const db = await getDb(); + const { department_name, parent_id, description, is_active, display_order } = data; + const [result] = await db.query(` + UPDATE departments + SET department_name = ?, parent_id = ?, description = ?, is_active = ?, display_order = ? + WHERE department_id = ? + `, [department_name, parent_id || null, description || null, is_active, display_order || 0, departmentId]); + return result.affectedRows > 0; + }, + + // 부서 삭제 + async delete(departmentId) { + const db = await getDb(); + // 하위 부서가 있는지 확인 + const [children] = await db.query('SELECT COUNT(*) as count FROM departments WHERE parent_id = ?', [departmentId]); + if (children[0].count > 0) { + throw new Error('하위 부서가 있어 삭제할 수 없습니다.'); + } + // 소속 작업자가 있는지 확인 + const [workers] = await db.query('SELECT COUNT(*) as count FROM workers WHERE department_id = ?', [departmentId]); + if (workers[0].count > 0) { + throw new Error('소속 작업자가 있어 삭제할 수 없습니다. 먼저 작업자를 다른 부서로 이동하세요.'); + } + const [result] = await db.query('DELETE FROM departments WHERE department_id = ?', [departmentId]); + return result.affectedRows > 0; + }, + + // 부서별 작업자 조회 + async getWorkersByDepartment(departmentId) { + const db = await getDb(); + const [rows] = await db.query(` + SELECT w.*, d.department_name, u.user_id, u.username + FROM workers w + LEFT JOIN departments d ON w.department_id = d.department_id + LEFT JOIN users u ON u.worker_id = w.worker_id + WHERE w.department_id = ? + ORDER BY w.worker_name + `, [departmentId]); + return rows; + }, + + // 작업자 부서 변경 + async moveWorker(workerId, departmentId) { + const db = await getDb(); + const [result] = await db.query(` + UPDATE workers SET department_id = ? WHERE worker_id = ? + `, [departmentId, workerId]); + return result.affectedRows > 0; + }, + + // 여러 작업자 부서 일괄 변경 + async moveWorkers(workerIds, departmentId) { + const db = await getDb(); + const [result] = await db.query(` + UPDATE workers SET department_id = ? WHERE worker_id IN (?) + `, [departmentId, workerIds]); + return result.affectedRows; + } +}; + +module.exports = departmentModel; diff --git a/api.hyungi.net/models/equipmentModel.js b/api.hyungi.net/models/equipmentModel.js index d5a3350..5bba790 100644 --- a/api.hyungi.net/models/equipmentModel.js +++ b/api.hyungi.net/models/equipmentModel.js @@ -9,10 +9,10 @@ const EquipmentModel = { const query = ` INSERT INTO equipments ( equipment_code, equipment_name, equipment_type, model_name, - manufacturer, installation_date, serial_number, specifications, + manufacturer, supplier, purchase_price, installation_date, serial_number, specifications, status, notes, workplace_id, map_x_percent, map_y_percent, map_width_percent, map_height_percent - ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) `; const values = [ @@ -21,6 +21,8 @@ const EquipmentModel = { equipmentData.equipment_type || null, equipmentData.model_name || null, equipmentData.manufacturer || null, + equipmentData.supplier || null, + equipmentData.purchase_price || null, equipmentData.installation_date || null, equipmentData.serial_number || null, equipmentData.specifications || null, @@ -168,6 +170,8 @@ const EquipmentModel = { equipment_type = ?, model_name = ?, manufacturer = ?, + supplier = ?, + purchase_price = ?, installation_date = ?, serial_number = ?, specifications = ?, @@ -188,6 +192,8 @@ const EquipmentModel = { equipmentData.equipment_type || null, equipmentData.model_name || null, equipmentData.manufacturer || null, + equipmentData.supplier || null, + equipmentData.purchase_price || null, equipmentData.installation_date || null, equipmentData.serial_number || null, equipmentData.specifications || null, @@ -211,11 +217,24 @@ const EquipmentModel = { } }, - // UPDATE MAP POSITION - 지도상 위치 업데이트 + // UPDATE MAP POSITION - 지도상 위치 업데이트 (선택적으로 workplace_id도 업데이트) updateMapPosition: async (equipmentId, positionData, callback) => { try { const db = await getDb(); - const query = ` + + // workplace_id가 포함된 경우 함께 업데이트 + const hasWorkplaceId = positionData.workplace_id !== undefined; + + const query = hasWorkplaceId ? ` + UPDATE equipments SET + workplace_id = ?, + map_x_percent = ?, + map_y_percent = ?, + map_width_percent = ?, + map_height_percent = ?, + updated_at = NOW() + WHERE equipment_id = ? + ` : ` UPDATE equipments SET map_x_percent = ?, map_y_percent = ?, @@ -225,7 +244,14 @@ const EquipmentModel = { WHERE equipment_id = ? `; - const values = [ + const values = hasWorkplaceId ? [ + positionData.workplace_id, + positionData.map_x_percent, + positionData.map_y_percent, + positionData.map_width_percent, + positionData.map_height_percent, + equipmentId + ] : [ positionData.map_x_percent, positionData.map_y_percent, positionData.map_width_percent, @@ -294,6 +320,39 @@ const EquipmentModel = { } catch (error) { callback(error); } + }, + + // GET NEXT EQUIPMENT CODE - 다음 관리번호 자동 생성 (TKP-001 형식) + getNextEquipmentCode: async (prefix = 'TKP', callback) => { + try { + const db = await getDb(); + // 해당 접두사로 시작하는 가장 큰 번호 찾기 + const query = ` + SELECT equipment_code + FROM equipments + WHERE equipment_code LIKE ? + ORDER BY equipment_code DESC + LIMIT 1 + `; + + const [rows] = await db.query(query, [`${prefix}-%`]); + + let nextNumber = 1; + if (rows.length > 0) { + // TKP-001 형식에서 숫자 부분 추출 + const lastCode = rows[0].equipment_code; + const match = lastCode.match(new RegExp(`^${prefix}-(\\d+)$`)); + if (match) { + nextNumber = parseInt(match[1], 10) + 1; + } + } + + // 3자리로 패딩 (001, 002, ...) + const nextCode = `${prefix}-${String(nextNumber).padStart(3, '0')}`; + callback(null, nextCode); + } catch (error) { + callback(error); + } } }; diff --git a/api.hyungi.net/models/patrolModel.js b/api.hyungi.net/models/patrolModel.js new file mode 100644 index 0000000..c6f052e --- /dev/null +++ b/api.hyungi.net/models/patrolModel.js @@ -0,0 +1,358 @@ +// patrolModel.js +// 일일순회점검 시스템 모델 + +const { getDb } = require('../dbPool'); + +const PatrolModel = { + // ==================== 순회점검 세션 ==================== + + // 세션 생성 또는 조회 + getOrCreateSession: async (patrolDate, patrolTime, categoryId, inspectorId) => { + const db = await getDb(); + + // 기존 세션 확인 + const [existingRows] = await db.query(` + SELECT session_id, status, started_at, completed_at + FROM daily_patrol_sessions + WHERE patrol_date = ? AND patrol_time = ? AND category_id = ? + `, [patrolDate, patrolTime, categoryId]); + + if (existingRows.length > 0) { + return existingRows[0]; + } + + // 새 세션 생성 + const [result] = await db.query(` + INSERT INTO daily_patrol_sessions (patrol_date, patrol_time, category_id, inspector_id, started_at) + VALUES (?, ?, ?, ?, CURTIME()) + `, [patrolDate, patrolTime, categoryId, inspectorId]); + + return { + session_id: result.insertId, + status: 'in_progress', + started_at: new Date().toTimeString().slice(0, 8) + }; + }, + + // 세션 조회 + getSession: async (sessionId) => { + const db = await getDb(); + const [rows] = await db.query(` + SELECT s.*, u.name AS inspector_name, wc.category_name + FROM daily_patrol_sessions s + LEFT JOIN users u ON s.inspector_id = u.user_id + LEFT JOIN workplace_categories wc ON s.category_id = wc.category_id + WHERE s.session_id = ? + `, [sessionId]); + return rows[0] || null; + }, + + // 세션 목록 조회 + getSessions: async (filters = {}) => { + const db = await getDb(); + let query = ` + SELECT s.*, u.name AS inspector_name, wc.category_name, + (SELECT COUNT(*) FROM patrol_check_records WHERE session_id = s.session_id AND is_checked = 1) AS checked_count, + (SELECT COUNT(*) FROM patrol_check_records WHERE session_id = s.session_id) AS total_count + FROM daily_patrol_sessions s + LEFT JOIN users u ON s.inspector_id = u.user_id + LEFT JOIN workplace_categories wc ON s.category_id = wc.category_id + WHERE 1=1 + `; + const params = []; + + if (filters.patrol_date) { + query += ' AND s.patrol_date = ?'; + params.push(filters.patrol_date); + } + if (filters.patrol_time) { + query += ' AND s.patrol_time = ?'; + params.push(filters.patrol_time); + } + if (filters.category_id) { + query += ' AND s.category_id = ?'; + params.push(filters.category_id); + } + if (filters.status) { + query += ' AND s.status = ?'; + params.push(filters.status); + } + + query += ' ORDER BY s.patrol_date DESC, s.patrol_time DESC'; + + if (filters.limit) { + query += ' LIMIT ?'; + params.push(parseInt(filters.limit)); + } + + const [rows] = await db.query(query, params); + return rows; + }, + + // 세션 완료 처리 + completeSession: async (sessionId) => { + const db = await getDb(); + await db.query(` + UPDATE daily_patrol_sessions + SET status = 'completed', completed_at = CURTIME(), updated_at = NOW() + WHERE session_id = ? + `, [sessionId]); + return true; + }, + + // 세션 메모 업데이트 + updateSessionNotes: async (sessionId, notes) => { + const db = await getDb(); + await db.query(` + UPDATE daily_patrol_sessions + SET notes = ?, updated_at = NOW() + WHERE session_id = ? + `, [notes, sessionId]); + return true; + }, + + // ==================== 체크리스트 항목 ==================== + + // 체크리스트 항목 조회 (공장/작업장별 필터링) + getChecklistItems: async (categoryId = null, workplaceId = null) => { + const db = await getDb(); + let query = ` + SELECT * + FROM patrol_checklist_items + WHERE is_active = 1 + AND (workplace_id IS NULL OR workplace_id = ?) + AND (category_id IS NULL OR category_id = ?) + ORDER BY check_category, display_order, check_item + `; + const [rows] = await db.query(query, [workplaceId, categoryId]); + return rows; + }, + + // 체크리스트 항목 CRUD + createChecklistItem: async (data) => { + const db = await getDb(); + const [result] = await db.query(` + INSERT INTO patrol_checklist_items (workplace_id, category_id, check_category, check_item, description, display_order, is_required) + VALUES (?, ?, ?, ?, ?, ?, ?) + `, [data.workplace_id, data.category_id, data.check_category, data.check_item, data.description, data.display_order || 0, data.is_required !== false]); + return result.insertId; + }, + + updateChecklistItem: async (itemId, data) => { + const db = await getDb(); + const fields = []; + const params = []; + + ['workplace_id', 'category_id', 'check_category', 'check_item', 'description', 'display_order', 'is_required', 'is_active'].forEach(key => { + if (data[key] !== undefined) { + fields.push(`${key} = ?`); + params.push(data[key]); + } + }); + + if (fields.length === 0) return false; + + params.push(itemId); + await db.query(`UPDATE patrol_checklist_items SET ${fields.join(', ')}, updated_at = NOW() WHERE item_id = ?`, params); + return true; + }, + + deleteChecklistItem: async (itemId) => { + const db = await getDb(); + await db.query('UPDATE patrol_checklist_items SET is_active = 0, updated_at = NOW() WHERE item_id = ?', [itemId]); + return true; + }, + + // ==================== 체크 기록 ==================== + + // 작업장별 체크 기록 조회 + getCheckRecords: async (sessionId, workplaceId = null) => { + const db = await getDb(); + let query = ` + SELECT r.*, ci.check_category, ci.check_item, ci.is_required + FROM patrol_check_records r + JOIN patrol_checklist_items ci ON r.check_item_id = ci.item_id + WHERE r.session_id = ? + `; + const params = [sessionId]; + + if (workplaceId) { + query += ' AND r.workplace_id = ?'; + params.push(workplaceId); + } + + query += ' ORDER BY ci.check_category, ci.display_order'; + + const [rows] = await db.query(query, params); + return rows; + }, + + // 체크 기록 저장 (upsert) + saveCheckRecord: async (sessionId, workplaceId, checkItemId, isChecked, checkResult = null, note = null) => { + const db = await getDb(); + await db.query(` + INSERT INTO patrol_check_records (session_id, workplace_id, check_item_id, is_checked, check_result, note, checked_at) + VALUES (?, ?, ?, ?, ?, ?, NOW()) + ON DUPLICATE KEY UPDATE + is_checked = VALUES(is_checked), + check_result = VALUES(check_result), + note = VALUES(note), + checked_at = NOW() + `, [sessionId, workplaceId, checkItemId, isChecked, checkResult, note]); + return true; + }, + + // 여러 체크 기록 일괄 저장 + saveCheckRecords: async (sessionId, workplaceId, records) => { + const db = await getDb(); + for (const record of records) { + await db.query(` + INSERT INTO patrol_check_records (session_id, workplace_id, check_item_id, is_checked, check_result, note, checked_at) + VALUES (?, ?, ?, ?, ?, ?, NOW()) + ON DUPLICATE KEY UPDATE + is_checked = VALUES(is_checked), + check_result = VALUES(check_result), + note = VALUES(note), + checked_at = NOW() + `, [sessionId, workplaceId, record.check_item_id, record.is_checked, record.check_result, record.note]); + } + return true; + }, + + // ==================== 작업장 물품 현황 ==================== + + // 작업장 물품 조회 + getWorkplaceItems: async (workplaceId, activeOnly = true) => { + const db = await getDb(); + let query = ` + SELECT wi.*, u.name AS created_by_name, it.type_name, it.icon, it.color + FROM workplace_items wi + LEFT JOIN users u ON wi.created_by = u.user_id + LEFT JOIN item_types it ON wi.item_type = it.type_code + WHERE wi.workplace_id = ? + `; + if (activeOnly) { + query += ' AND wi.is_active = 1'; + } + query += ' ORDER BY wi.created_at DESC'; + + const [rows] = await db.query(query, [workplaceId]); + return rows; + }, + + // 물품 추가 + createWorkplaceItem: async (data) => { + const db = await getDb(); + const [result] = await db.query(` + INSERT INTO workplace_items + (workplace_id, patrol_session_id, project_id, item_type, item_name, quantity, x_percent, y_percent, width_percent, height_percent, created_by) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + `, [ + data.workplace_id, + data.patrol_session_id, + data.project_id, + data.item_type, + data.item_name, + data.quantity || 1, + data.x_percent, + data.y_percent, + data.width_percent, + data.height_percent, + data.created_by + ]); + return result.insertId; + }, + + // 물품 수정 + updateWorkplaceItem: async (itemId, data, userId) => { + const db = await getDb(); + const fields = []; + const params = []; + + ['item_type', 'item_name', 'quantity', 'x_percent', 'y_percent', 'width_percent', 'height_percent', 'is_active', 'project_id'].forEach(key => { + if (data[key] !== undefined) { + fields.push(`${key} = ?`); + params.push(data[key]); + } + }); + + if (fields.length === 0) return false; + + fields.push('updated_by = ?', 'updated_at = NOW()'); + params.push(userId, itemId); + + await db.query(`UPDATE workplace_items SET ${fields.join(', ')} WHERE item_id = ?`, params); + return true; + }, + + // 물품 삭제 (비활성화) + deleteWorkplaceItem: async (itemId, userId) => { + const db = await getDb(); + await db.query('UPDATE workplace_items SET is_active = 0, updated_by = ?, updated_at = NOW() WHERE item_id = ?', [userId, itemId]); + return true; + }, + + // 물품 영구 삭제 + hardDeleteWorkplaceItem: async (itemId) => { + const db = await getDb(); + await db.query('DELETE FROM workplace_items WHERE item_id = ?', [itemId]); + return true; + }, + + // ==================== 물품 유형 ==================== + + // 물품 유형 목록 조회 + getItemTypes: async () => { + const db = await getDb(); + const [rows] = await db.query('SELECT * FROM item_types WHERE is_active = 1 ORDER BY display_order'); + return rows; + }, + + // ==================== 대시보드/통계 ==================== + + // 오늘 순회점검 현황 + getTodayPatrolStatus: async (categoryId = null) => { + const db = await getDb(); + const today = new Date().toISOString().slice(0, 10); + + let query = ` + SELECT s.session_id, s.patrol_time, s.status, s.inspector_id, u.name AS inspector_name, + s.started_at, s.completed_at, + (SELECT COUNT(*) FROM patrol_check_records WHERE session_id = s.session_id AND is_checked = 1) AS checked_count, + (SELECT COUNT(*) FROM patrol_check_records WHERE session_id = s.session_id) AS total_count + FROM daily_patrol_sessions s + LEFT JOIN users u ON s.inspector_id = u.user_id + WHERE s.patrol_date = ? + `; + const params = [today]; + + if (categoryId) { + query += ' AND s.category_id = ?'; + params.push(categoryId); + } + + query += ' ORDER BY s.patrol_time'; + + const [rows] = await db.query(query, params); + return rows; + }, + + // 작업장별 점검 현황 (세션 기준) + getWorkplaceCheckStatus: async (sessionId) => { + const db = await getDb(); + const [rows] = await db.query(` + SELECT w.workplace_id, w.workplace_name, + COUNT(DISTINCT r.check_item_id) AS checked_count, + (SELECT COUNT(*) FROM patrol_checklist_items WHERE is_active = 1) AS total_items, + MAX(r.checked_at) AS last_check_time + FROM workplaces w + LEFT JOIN patrol_check_records r ON w.workplace_id = r.workplace_id AND r.session_id = ? + WHERE w.is_active = 1 + GROUP BY w.workplace_id + ORDER BY w.workplace_name + `, [sessionId]); + return rows; + } +}; + +module.exports = PatrolModel; diff --git a/api.hyungi.net/models/workerModel.js b/api.hyungi.net/models/workerModel.js index c48c27d..fb7941a 100644 --- a/api.hyungi.net/models/workerModel.js +++ b/api.hyungi.net/models/workerModel.js @@ -20,14 +20,15 @@ const create = async (worker, callback) => { salary = null, annual_leave = null, status = 'active', - employment_status = 'employed' + employment_status = 'employed', + department_id = null } = worker; const [result] = await db.query( `INSERT INTO workers - (worker_name, job_type, join_date, salary, annual_leave, status, employment_status) - VALUES (?, ?, ?, ?, ?, ?, ?)`, - [worker_name, job_type, formatDate(join_date), salary, annual_leave, status, employment_status] + (worker_name, job_type, join_date, salary, annual_leave, status, employment_status, department_id) + VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, + [worker_name, job_type, formatDate(join_date), salary, annual_leave, status, employment_status, department_id] ); callback(null, result.insertId); @@ -45,9 +46,11 @@ const getAll = async (callback) => { SELECT w.*, CASE WHEN w.status = 'active' THEN 1 ELSE 0 END AS is_active, - u.user_id + u.user_id, + d.department_name FROM workers w LEFT JOIN users u ON w.worker_id = u.worker_id + LEFT JOIN departments d ON w.department_id = d.department_id ORDER BY w.worker_id DESC `); callback(null, rows); @@ -64,9 +67,11 @@ const getById = async (worker_id, callback) => { SELECT w.*, CASE WHEN w.status = 'active' THEN 1 ELSE 0 END AS is_active, - u.user_id + u.user_id, + d.department_name FROM workers w LEFT JOIN users u ON w.worker_id = u.worker_id + LEFT JOIN departments d ON w.department_id = d.department_id WHERE w.worker_id = ? `, [worker_id]); callback(null, rows[0]); @@ -87,7 +92,8 @@ const update = async (worker, callback) => { join_date, salary, annual_leave, - employment_status + employment_status, + department_id } = worker; // 업데이트할 필드만 동적으로 구성 @@ -122,6 +128,10 @@ const update = async (worker, callback) => { updates.push('employment_status = ?'); values.push(employment_status); } + if (department_id !== undefined) { + updates.push('department_id = ?'); + values.push(department_id); + } if (updates.length === 0) { callback(new Error('업데이트할 필드가 없습니다')); diff --git a/api.hyungi.net/models/workplaceModel.js b/api.hyungi.net/models/workplaceModel.js index 52d809c..4a7e754 100644 --- a/api.hyungi.net/models/workplaceModel.js +++ b/api.hyungi.net/models/workplaceModel.js @@ -162,7 +162,7 @@ const getAllWorkplaces = async (callback) => { const db = await getDb(); const [rows] = await db.query( `SELECT w.workplace_id, w.category_id, w.workplace_name, w.description, w.is_active, w.workplace_purpose, w.display_priority, - w.workplace_purpose, w.display_priority, w.created_at, w.updated_at, + w.layout_image, w.created_at, w.updated_at, wc.category_name FROM workplaces w LEFT JOIN workplace_categories wc ON w.category_id = wc.category_id @@ -182,7 +182,7 @@ const getActiveWorkplaces = async (callback) => { const db = await getDb(); const [rows] = await db.query( `SELECT w.workplace_id, w.category_id, w.workplace_name, w.description, w.is_active, w.workplace_purpose, w.display_priority, - w.created_at, w.updated_at, + w.layout_image, w.created_at, w.updated_at, wc.category_name FROM workplaces w LEFT JOIN workplace_categories wc ON w.category_id = wc.category_id @@ -203,7 +203,7 @@ const getWorkplacesByCategory = async (categoryId, callback) => { const db = await getDb(); const [rows] = await db.query( `SELECT w.workplace_id, w.category_id, w.workplace_name, w.description, w.is_active, w.workplace_purpose, w.display_priority, - w.created_at, w.updated_at, + w.layout_image, w.created_at, w.updated_at, wc.category_name FROM workplaces w LEFT JOIN workplace_categories wc ON w.category_id = wc.category_id @@ -225,7 +225,7 @@ const getWorkplaceById = async (workplaceId, callback) => { const db = await getDb(); const [rows] = await db.query( `SELECT w.workplace_id, w.category_id, w.workplace_name, w.description, w.is_active, w.workplace_purpose, w.display_priority, - w.created_at, w.updated_at, + w.layout_image, w.created_at, w.updated_at, wc.category_name FROM workplaces w LEFT JOIN workplace_categories wc ON w.category_id = wc.category_id @@ -250,15 +250,16 @@ const updateWorkplace = async (workplaceId, workplace, callback) => { description, is_active, workplace_purpose, - display_priority + display_priority, + layout_image } = workplace; const [result] = await db.query( `UPDATE workplaces SET category_id = ?, workplace_name = ?, description = ?, is_active = ?, - workplace_purpose = ?, display_priority = ?, updated_at = NOW() + workplace_purpose = ?, display_priority = ?, layout_image = ?, updated_at = NOW() WHERE workplace_id = ?`, - [category_id, workplace_name, description, is_active, workplace_purpose, display_priority, workplaceId] + [category_id, workplace_name, description, is_active, workplace_purpose, display_priority, layout_image, workplaceId] ); callback(null, result); diff --git a/api.hyungi.net/routes/departmentRoutes.js b/api.hyungi.net/routes/departmentRoutes.js new file mode 100644 index 0000000..fa4fd43 --- /dev/null +++ b/api.hyungi.net/routes/departmentRoutes.js @@ -0,0 +1,31 @@ +// routes/departmentRoutes.js +const express = require('express'); +const router = express.Router(); +const departmentController = require('../controllers/departmentController'); +const { requireAuth, requireRole } = require('../middlewares/authMiddleware'); + +// 부서 목록 조회 (인증 필요) +router.get('/', requireAuth, departmentController.getAll); + +// 부서 상세 조회 +router.get('/:id', requireAuth, departmentController.getById); + +// 부서별 작업자 조회 +router.get('/:id/workers', requireAuth, departmentController.getWorkers); + +// 부서 생성 (관리자만) +router.post('/', requireAuth, requireRole(['Admin', 'System Admin']), departmentController.create); + +// 부서 수정 (관리자만) +router.put('/:id', requireAuth, requireRole(['Admin', 'System Admin']), departmentController.update); + +// 부서 삭제 (관리자만) +router.delete('/:id', requireAuth, requireRole(['Admin', 'System Admin']), departmentController.delete); + +// 작업자 부서 이동 (관리자만) +router.post('/move-worker', requireAuth, requireRole(['Admin', 'System Admin']), departmentController.moveWorker); + +// 여러 작업자 부서 일괄 이동 (관리자만) +router.post('/move-workers', requireAuth, requireRole(['Admin', 'System Admin']), departmentController.moveWorkers); + +module.exports = router; diff --git a/api.hyungi.net/routes/equipmentRoutes.js b/api.hyungi.net/routes/equipmentRoutes.js index 50e862a..5156166 100644 --- a/api.hyungi.net/routes/equipmentRoutes.js +++ b/api.hyungi.net/routes/equipmentRoutes.js @@ -18,6 +18,10 @@ router.get('/active/list', equipmentController.getActiveEquipments); // READ 설비 유형 목록 router.get('/types', equipmentController.getEquipmentTypes); +// GET NEXT EQUIPMENT CODE - 다음 관리번호 자동 생성 +// ?prefix=TKP (기본값: TKP) +router.get('/next-code', equipmentController.getNextEquipmentCode); + // READ 작업장별 설비 router.get('/workplace/:workplaceId', equipmentController.getEquipmentsByWorkplace); diff --git a/api.hyungi.net/routes/patrolRoutes.js b/api.hyungi.net/routes/patrolRoutes.js new file mode 100644 index 0000000..9b5c0b5 --- /dev/null +++ b/api.hyungi.net/routes/patrolRoutes.js @@ -0,0 +1,73 @@ +// patrolRoutes.js +// 일일순회점검 시스템 라우트 + +const express = require('express'); +const router = express.Router(); +const patrolController = require('../controllers/patrolController'); + +// ==================== 순회점검 세션 ==================== + +// 세션 목록 조회 +// GET /patrol/sessions?patrol_date=2026-02-04&patrol_time=morning&category_id=1 +router.get('/sessions', patrolController.getSessions); + +// 세션 시작/조회 (POST로 생성하거나 기존 세션 반환) +// POST /patrol/sessions { patrol_date, patrol_time, category_id } +router.post('/sessions', patrolController.getOrCreateSession); + +// 세션 상세 조회 +router.get('/sessions/:sessionId', patrolController.getSession); + +// 세션 완료 +router.patch('/sessions/:sessionId/complete', patrolController.completeSession); + +// 세션 메모 업데이트 +router.patch('/sessions/:sessionId/notes', patrolController.updateSessionNotes); + +// 세션별 작업장 점검 현황 +router.get('/sessions/:sessionId/workplace-status', patrolController.getWorkplaceCheckStatus); + +// ==================== 체크리스트 항목 ==================== + +// 체크리스트 항목 조회 (필터링 가능) +// GET /patrol/checklist?category_id=1&workplace_id=2 +router.get('/checklist', patrolController.getChecklistItems); + +// 체크리스트 항목 CRUD +router.post('/checklist', patrolController.createChecklistItem); +router.put('/checklist/:itemId', patrolController.updateChecklistItem); +router.delete('/checklist/:itemId', patrolController.deleteChecklistItem); + +// ==================== 체크 기록 ==================== + +// 세션별 체크 기록 조회 +// GET /patrol/sessions/:sessionId/records?workplace_id=1 +router.get('/sessions/:sessionId/records', patrolController.getCheckRecords); + +// 체크 기록 저장 (단건) +router.post('/sessions/:sessionId/records', patrolController.saveCheckRecord); + +// 체크 기록 일괄 저장 +router.post('/sessions/:sessionId/records/batch', patrolController.saveCheckRecords); + +// ==================== 작업장 물품 현황 ==================== + +// 작업장별 물품 조회 +router.get('/workplaces/:workplaceId/items', patrolController.getWorkplaceItems); + +// 물품 CRUD +router.post('/workplaces/:workplaceId/items', patrolController.createWorkplaceItem); +router.put('/items/:itemId', patrolController.updateWorkplaceItem); +router.delete('/items/:itemId', patrolController.deleteWorkplaceItem); + +// ==================== 물품 유형 ==================== + +// 물품 유형 목록 +router.get('/item-types', patrolController.getItemTypes); + +// ==================== 대시보드/통계 ==================== + +// 오늘 순회점검 현황 +router.get('/today-status', patrolController.getTodayStatus); + +module.exports = router; diff --git a/api.hyungi.net/routes/userRoutes.js b/api.hyungi.net/routes/userRoutes.js index da1bcb5..9de69f9 100644 --- a/api.hyungi.net/routes/userRoutes.js +++ b/api.hyungi.net/routes/userRoutes.js @@ -20,16 +20,25 @@ router.use(verifyToken); /** * 관리자 권한 확인 미들웨어 + * role 또는 access_level로 관리자 확인 */ const adminOnly = (req, res, next) => { const userRole = req.user?.role?.toLowerCase(); - if (req.user && (userRole === 'admin' || userRole === 'system' || userRole === 'system admin')) { + const accessLevel = req.user?.access_level?.toLowerCase(); + + // role 기반 확인 + const isAdminByRole = userRole === 'admin' || userRole === 'system' || userRole === 'system admin'; + // access_level 기반 확인 (role이 없는 경우 대비) + const isAdminByAccessLevel = accessLevel === 'admin' || accessLevel === 'system'; + + if (req.user && (isAdminByRole || isAdminByAccessLevel)) { next(); } else { logger.warn('관리자 권한 없는 접근 시도', { userId: req.user?.user_id, username: req.user?.username, role: req.user?.role, + accessLevel: req.user?.access_level, url: req.originalUrl }); return res.status(403).json({ @@ -146,9 +155,12 @@ router.put('/:id/status', userController.updateUserStatus); // 🔑 사용자 비밀번호 초기화 (000000) router.post('/:id/reset-password', userController.resetUserPassword); -// 🗑️ 사용자 삭제 +// 🗑️ 사용자 비활성화 (Soft Delete) router.delete('/:id', userController.deleteUser); +// 💀 사용자 영구 삭제 (Hard Delete) +router.delete('/:id/permanent', userController.permanentDeleteUser); + // 🔐 사용자 페이지 접근 권한 업데이트 (Admin만) router.put('/:id/page-access', userController.updateUserPageAccess); diff --git a/api.hyungi.net/services/attendanceService.js b/api.hyungi.net/services/attendanceService.js index a27261a..8a2fe02 100644 --- a/api.hyungi.net/services/attendanceService.js +++ b/api.hyungi.net/services/attendanceService.js @@ -76,7 +76,8 @@ const upsertAttendanceRecordService = async (recordData) => { is_vacation_processed, overtime_approved, status, - notes + notes, + created_by } = recordData; // 필수 필드 검증 @@ -99,7 +100,8 @@ const upsertAttendanceRecordService = async (recordData) => { is_vacation_processed, overtime_approved, status, - notes + notes, + created_by }); logger.info('근태 기록 저장 성공', { record_date, worker_id }); diff --git a/api.hyungi.net/utils/queryOptimizer.js b/api.hyungi.net/utils/queryOptimizer.js index 9ded9f2..032c747 100644 --- a/api.hyungi.net/utils/queryOptimizer.js +++ b/api.hyungi.net/utils/queryOptimizer.js @@ -234,14 +234,18 @@ const generateCacheKey = (query, params = [], prefix = 'query') => { */ const optimizedQueries = { // 작업자 목록 (페이지네이션) - getWorkersPaged: async (page = 1, limit = 10, search = '', status = '') => { + getWorkersPaged: async (page = 1, limit = 10, search = '', status = '', departmentId = null) => { let baseQuery = ` - SELECT w.*, COUNT(dwr.id) as report_count + SELECT w.*, d.department_name, COUNT(dwr.id) as report_count FROM workers w LEFT JOIN daily_work_reports dwr ON w.worker_id = dwr.worker_id + LEFT JOIN departments d ON w.department_id = d.department_id `; - let countQuery = 'SELECT COUNT(*) as total FROM workers w'; + let countQuery = ` + SELECT COUNT(*) as total FROM workers w + LEFT JOIN departments d ON w.department_id = d.department_id + `; let params = []; let conditions = []; @@ -257,6 +261,12 @@ const optimizedQueries = { params.push(status); } + // 부서 조건 + if (departmentId) { + conditions.push('w.department_id = ?'); + params.push(departmentId); + } + // 조건 조합 if (conditions.length > 0) { const whereClause = ' WHERE ' + conditions.join(' AND '); diff --git a/docs/README.md b/docs/README.md index fa0e028..c69c967 100644 --- a/docs/README.md +++ b/docs/README.md @@ -64,7 +64,7 @@ TK-FB-Project/ --- -## 웹 UI 페이지 구조 (34개) +## 웹 UI 페이지 구조 (35개) ``` web-ui/pages/ @@ -77,8 +77,9 @@ web-ui/pages/ │ ├── nonconformity.html # 부적합 현황 │ └── analysis.html # 작업 분석 │ -├── [일간작업장 점검] # 일간작업장 점검 (1개) -│ └── attendance/daily.html # 일일 출퇴근 +├── [일간작업장 점검] # 일간작업장 점검 (2개) +│ ├── attendance/checkin.html # 출근 체크 +│ └── attendance/work-status.html # 근무 현황 │ ├── safety/ # 안전 관리 (5개) │ ├── report.html # 신고 (공통) diff --git a/hyungi.sql b/hyungi.sql index 931114b..3669451 100644 --- a/hyungi.sql +++ b/hyungi.sql @@ -1,11 +1,11 @@ -- phpMyAdmin SQL Dump --- version 5.2.2 +-- version 5.2.3 -- https://www.phpmyadmin.net/ -- --- 호스트: db_hyungi_net --- 생성 시간: 25-10-11 00:23 --- 서버 버전: 10.9.8-MariaDB-1:10.9.8+maria~ubu2204 --- PHP 버전: 8.2.27 +-- 호스트: db:3306 +-- 생성 시간: 26-02-03 12:54 +-- 서버 버전: 8.0.44 +-- PHP 버전: 8.3.26 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; START TRANSACTION; @@ -21,90 +21,170 @@ SET time_zone = "+00:00"; -- 데이터베이스: `hyungi` -- --- -------------------------------------------------------- - +DELIMITER $$ -- --- 테이블 구조 `activity_logs` +-- 프로시저 -- +CREATE DEFINER=`hyungi_user`@`%` PROCEDURE `UpdateDailySummary` (IN `p_date` DATE) BEGIN + DECLARE v_year INT; + DECLARE v_month INT; + + SET v_year = YEAR(p_date); + SET v_month = MONTH(p_date); + + INSERT INTO monthly_summary ( + year, month, date, + total_workers, working_workers, + incomplete_workers, partial_workers, complete_workers, + overtime_workers, vacation_workers, error_workers, overtime_warning_workers, + total_work_hours, total_work_count, total_error_count, + has_issues, has_errors, has_overtime_warning + ) + SELECT + v_year, v_month, p_date, + COUNT(*) as total_workers, + COUNT(CASE WHEN work_status != 'incomplete' THEN 1 END) as working_workers, + COUNT(CASE WHEN work_status = 'incomplete' THEN 1 END) as incomplete_workers, + COUNT(CASE WHEN work_status = 'partial' THEN 1 END) as partial_workers, + COUNT(CASE WHEN work_status IN ('complete', 'overtime', 'vacation-full', 'vacation-half', 'vacation-quarter', 'vacation-half-half') THEN 1 END) as complete_workers, + COUNT(CASE WHEN work_status = 'overtime' THEN 1 END) as overtime_workers, + COUNT(CASE WHEN work_status LIKE 'vacation%' THEN 1 END) as vacation_workers, + COUNT(CASE WHEN work_status = 'error' THEN 1 END) as error_workers, + COUNT(CASE WHEN work_status = 'overtime-warning' THEN 1 END) as overtime_warning_workers, + SUM(total_work_hours) as total_work_hours, + SUM(total_work_count) as total_work_count, + SUM(error_work_count) as total_error_count, + MAX(has_issues) as has_issues, + MAX(has_error) as has_errors, + MAX(CASE WHEN work_status = 'overtime-warning' THEN 1 ELSE 0 END) as has_overtime_warning + FROM monthly_worker_status + WHERE date = p_date + ON DUPLICATE KEY UPDATE + total_workers = VALUES(total_workers), + working_workers = VALUES(working_workers), + incomplete_workers = VALUES(incomplete_workers), + partial_workers = VALUES(partial_workers), + complete_workers = VALUES(complete_workers), + overtime_workers = VALUES(overtime_workers), + vacation_workers = VALUES(vacation_workers), + error_workers = VALUES(error_workers), + overtime_warning_workers = VALUES(overtime_warning_workers), + total_work_hours = VALUES(total_work_hours), + total_work_count = VALUES(total_work_count), + total_error_count = VALUES(total_error_count), + has_issues = VALUES(has_issues), + has_errors = VALUES(has_errors), + has_overtime_warning = VALUES(has_overtime_warning), + last_updated = CURRENT_TIMESTAMP; + END$$ -CREATE TABLE `activity_logs` ( - `log_id` int(11) NOT NULL, - `user_id` int(11) DEFAULT NULL, - `activity_type` varchar(100) DEFAULT NULL, - `table_name` varchar(50) DEFAULT NULL, - `record_id` int(11) DEFAULT NULL, - `action` enum('create','read','update','delete') DEFAULT NULL, - `ip_address` varchar(45) DEFAULT NULL, - `user_agent` text DEFAULT NULL, - `created_at` datetime DEFAULT current_timestamp() -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +CREATE DEFINER=`hyungi_user`@`%` PROCEDURE `UpdateMonthlyWorkerStatus` (IN `p_date` DATE, IN `p_worker_id` INT) BEGIN + DECLARE v_year INT; + DECLARE v_month INT; + DECLARE v_total_hours DECIMAL(5,2); + DECLARE v_actual_hours DECIMAL(5,2); + DECLARE v_vacation_hours DECIMAL(5,2); + DECLARE v_total_count INT; + DECLARE v_regular_count INT; + DECLARE v_error_count INT; + DECLARE v_has_vacation BOOLEAN; + DECLARE v_has_error BOOLEAN; + DECLARE v_has_issues BOOLEAN; + DECLARE v_status VARCHAR(20); + + SET v_year = YEAR(p_date); + SET v_month = MONTH(p_date); + + SELECT + COALESCE(SUM(work_hours), 0), + COALESCE(SUM(CASE WHEN project_id != 13 THEN work_hours ELSE 0 END), 0), + COALESCE(SUM(CASE WHEN project_id = 13 THEN work_hours ELSE 0 END), 0), + COUNT(*), + COUNT(CASE WHEN project_id != 13 AND work_status_id != 2 THEN 1 END), + COUNT(CASE WHEN work_status_id = 2 THEN 1 END), + MAX(CASE WHEN project_id = 13 THEN 1 ELSE 0 END), + MAX(CASE WHEN work_status_id = 2 THEN 1 ELSE 0 END) + INTO + v_total_hours, v_actual_hours, v_vacation_hours, + v_total_count, v_regular_count, v_error_count, + v_has_vacation, v_has_error + FROM daily_work_reports + WHERE report_date = p_date AND worker_id = p_worker_id; + + IF v_has_error THEN + SET v_status = 'error'; + SET v_has_issues = FALSE; + ELSEIF v_total_hours > 12 THEN + SET v_status = 'overtime-warning'; + SET v_has_issues = TRUE; + ELSEIF v_has_vacation AND v_vacation_hours > 0 THEN + CASE v_vacation_hours + WHEN 8 THEN SET v_status = 'vacation-full'; + WHEN 6 THEN SET v_status = 'vacation-half-half'; + WHEN 4 THEN SET v_status = 'vacation-half'; + WHEN 2 THEN SET v_status = 'vacation-quarter'; + ELSE SET v_status = 'vacation-full'; + END CASE; + SET v_has_issues = FALSE; + ELSEIF v_total_hours > 8 THEN + SET v_status = 'overtime'; + SET v_has_issues = FALSE; + ELSEIF v_total_hours = 8 THEN + SET v_status = 'complete'; + SET v_has_issues = FALSE; + ELSEIF v_total_hours > 0 THEN + SET v_status = 'partial'; + SET v_has_issues = TRUE; + ELSE + SET v_status = 'incomplete'; + SET v_has_issues = TRUE; + END IF; + + INSERT INTO monthly_worker_status ( + year, month, worker_id, date, + total_work_hours, actual_work_hours, vacation_hours, + total_work_count, regular_work_count, error_work_count, + work_status, has_vacation, has_error, has_issues + ) VALUES ( + v_year, v_month, p_worker_id, p_date, + v_total_hours, v_actual_hours, v_vacation_hours, + v_total_count, v_regular_count, v_error_count, + v_status, v_has_vacation, v_has_error, v_has_issues + ) ON DUPLICATE KEY UPDATE + total_work_hours = v_total_hours, + actual_work_hours = v_actual_hours, + vacation_hours = v_vacation_hours, + total_work_count = v_total_count, + regular_work_count = v_regular_count, + error_work_count = v_error_count, + work_status = v_status, + has_vacation = v_has_vacation, + has_error = v_has_error, + has_issues = v_has_issues, + last_updated = CURRENT_TIMESTAMP; + + CALL UpdateDailySummary(p_date); + END$$ + +DELIMITER ; -- -------------------------------------------------------- -- --- 테이블 구조 `CuttingPlan` +-- 테이블 구조 `daily_attendance_records` -- -CREATE TABLE `CuttingPlan` ( - `cutting_plan_id` int(11) NOT NULL, - `project_id` int(11) NOT NULL, - `drawing_name` varchar(255) NOT NULL, - `area_number` varchar(100) DEFAULT NULL, - `spool_number` varchar(255) DEFAULT NULL, - `length` decimal(10,2) DEFAULT NULL, - `created_at` timestamp NULL DEFAULT current_timestamp(), - `updated_at` timestamp NULL DEFAULT current_timestamp(), - `spec_id` int(11) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - --- -------------------------------------------------------- - --- --- 테이블 구조 `DailyIssueReports` --- - -CREATE TABLE `DailyIssueReports` ( - `id` int(11) NOT NULL, - `date` date NOT NULL, - `worker_id` int(11) NOT NULL, - `project_id` int(11) NOT NULL, - `issue_type_id` int(11) DEFAULT NULL, - `description` text DEFAULT NULL, - `created_at` timestamp NULL DEFAULT current_timestamp(), - `start_time` time NOT NULL, - `end_time` time NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; - --- --- 테이블의 덤프 데이터 `DailyIssueReports` --- - -INSERT INTO `DailyIssueReports` (`id`, `date`, `worker_id`, `project_id`, `issue_type_id`, `description`, `created_at`, `start_time`, `end_time`) VALUES -(1, '2025-06-02', 1, 7, 5, NULL, '2025-06-02 05:54:35', '10:00:00', '11:30:00'), -(2, '2025-06-02', 9, 7, 5, NULL, '2025-06-02 05:54:35', '10:00:00', '11:30:00'), -(3, '2025-06-02', 7, 7, 5, NULL, '2025-06-02 05:54:35', '10:00:00', '11:30:00'), -(4, '2025-06-04', 10, 7, 3, NULL, '2025-06-04 01:54:03', '10:00:00', '11:30:00'), -(5, '2025-06-04', 6, 7, 3, NULL, '2025-06-04 01:54:03', '10:00:00', '11:30:00'), -(6, '2025-06-04', 3, 7, 3, NULL, '2025-06-04 01:54:03', '10:00:00', '11:30:00'), -(7, '2025-06-11', 10, 7, 6, NULL, '2025-06-10 08:56:09', '07:30:00', '08:00:00'), -(8, '2025-06-11', 6, 7, 6, NULL, '2025-06-10 08:56:09', '07:30:00', '08:00:00'), -(9, '2025-06-11', 3, 7, 6, NULL, '2025-06-10 08:56:09', '07:30:00', '08:00:00'); - --- -------------------------------------------------------- - --- --- 테이블 구조 `daily_worker_summary` --- - -CREATE TABLE `daily_worker_summary` ( - `id` int(11) NOT NULL, - `report_date` date NOT NULL, - `worker_id` int(11) NOT NULL, - `total_hours` decimal(4,2) NOT NULL DEFAULT 8.00 COMMENT '총 근무시간', - `work_status` enum('normal','annual_leave','half_leave','overtime') DEFAULT 'normal' COMMENT '근무 상태', - `created_at` timestamp NOT NULL DEFAULT current_timestamp(), - `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +CREATE TABLE `daily_attendance_records` ( + `id` int NOT NULL, + `record_date` date NOT NULL COMMENT '기록 날짜', + `worker_id` int NOT NULL COMMENT '작업자 ID', + `work_attendance_type_id` int DEFAULT NULL COMMENT '근로 유형 ID (정시, 연장, 부분, 휴가)', + `total_work_hours` decimal(4,2) DEFAULT '0.00' COMMENT '총 작업 시간', + `vacation_type_id` int DEFAULT NULL COMMENT '휴가 유형 ID (연차, 반차 등)', + `is_overtime_approved` tinyint(1) DEFAULT '0' COMMENT '연장근로 승인 여부', + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='일일 근태 기록 테이블'; -- -------------------------------------------------------- @@ -113,952 +193,1579 @@ CREATE TABLE `daily_worker_summary` ( -- CREATE TABLE `daily_work_reports` ( - `id` int(11) NOT NULL, + `id` int NOT NULL, `report_date` date NOT NULL COMMENT '작업 날짜', - `worker_id` int(11) NOT NULL COMMENT '작업자 ID', - `project_id` int(11) NOT NULL COMMENT '프로젝트 ID', - `work_type_id` int(11) NOT NULL COMMENT '작업 유형 ID', - `work_status_id` int(11) DEFAULT 1 COMMENT '업무 상태 ID (1:정규, 2:에러)', - `error_type_id` int(11) DEFAULT NULL COMMENT '에러 유형 ID (에러일 때만)', + `worker_id` int NOT NULL COMMENT '작업자 ID', + `project_id` int NOT NULL COMMENT '프로젝트 ID', + `work_type_id` int NOT NULL COMMENT '작업 유형 ID', + `work_status_id` int DEFAULT '1' COMMENT '업무 상태 ID (1:정규, 2:에러)', + `error_type_id` int DEFAULT NULL COMMENT '에러 유형 ID (에러일 때만)', `work_hours` decimal(4,2) NOT NULL COMMENT '작업 시간', - `created_at` timestamp NOT NULL DEFAULT current_timestamp(), - `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `created_by` int(11) NOT NULL DEFAULT 1 COMMENT '작성자 user_id', - `updated_by` int(11) DEFAULT NULL COMMENT '수정자 user_id' + `description` text COLLATE utf8mb4_unicode_ci COMMENT '작업 설명', + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `created_by` int NOT NULL DEFAULT '1' COMMENT '작성자 user_id', + `updated_by` int DEFAULT NULL COMMENT '수정자 user_id' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- 테이블의 덤프 데이터 `daily_work_reports` -- -INSERT INTO `daily_work_reports` (`id`, `report_date`, `worker_id`, `project_id`, `work_type_id`, `work_status_id`, `error_type_id`, `work_hours`, `created_at`, `updated_at`, `created_by`, `updated_by`) VALUES -(14, '2025-06-02', 1, 4, 3, 1, NULL, 8.00, '2025-06-16 05:10:23', '2025-06-16 05:10:23', 1, NULL), -(15, '2025-06-02', 3, 4, 3, 1, NULL, 8.00, '2025-06-16 05:10:23', '2025-06-16 05:10:23', 1, NULL), -(16, '2025-06-02', 4, 4, 3, 1, NULL, 8.00, '2025-06-16 05:10:23', '2025-06-16 05:10:23', 1, NULL), -(17, '2025-06-02', 6, 4, 3, 1, NULL, 8.00, '2025-06-16 05:10:23', '2025-06-16 05:10:23', 1, NULL), -(18, '2025-06-02', 7, 4, 3, 1, NULL, 8.00, '2025-06-16 05:10:23', '2025-06-16 05:10:23', 1, NULL), -(19, '2025-06-02', 9, 4, 3, 1, NULL, 8.00, '2025-06-16 05:10:23', '2025-06-16 05:10:23', 1, NULL), -(20, '2025-06-02', 2, 3, 2, 1, NULL, 8.00, '2025-06-16 05:10:47', '2025-06-16 05:10:47', 1, NULL), -(21, '2025-06-04', 1, 4, 3, 1, NULL, 8.00, '2025-06-16 05:11:37', '2025-06-16 05:11:37', 1, NULL), -(22, '2025-06-04', 3, 4, 3, 1, NULL, 8.00, '2025-06-16 05:11:37', '2025-06-16 05:11:37', 1, NULL), -(23, '2025-06-04', 5, 4, 3, 1, NULL, 8.00, '2025-06-16 05:11:37', '2025-06-16 05:11:37', 1, NULL), -(24, '2025-06-04', 7, 4, 3, 1, NULL, 8.00, '2025-06-16 05:11:37', '2025-06-16 05:11:37', 1, NULL), -(25, '2025-06-04', 9, 4, 3, 1, NULL, 8.00, '2025-06-16 05:11:37', '2025-06-16 05:11:37', 1, NULL), -(26, '2025-06-04', 10, 4, 3, 1, NULL, 8.00, '2025-06-16 05:11:37', '2025-06-16 05:11:37', 1, NULL), -(27, '2025-06-04', 2, 3, 2, 1, NULL, 8.00, '2025-06-16 05:12:07', '2025-06-16 05:12:07', 1, NULL), -(28, '2025-06-04', 6, 3, 2, 1, NULL, 8.00, '2025-06-16 05:12:07', '2025-06-16 05:12:07', 1, NULL), -(29, '2025-06-04', 8, 3, 2, 1, NULL, 8.00, '2025-06-16 05:12:07', '2025-06-16 05:12:07', 1, NULL), -(30, '2025-06-05', 1, 4, 3, 2, 1, 8.00, '2025-06-16 05:12:57', '2025-06-16 05:12:57', 1, NULL), -(31, '2025-06-05', 3, 4, 3, 2, 1, 8.00, '2025-06-16 05:12:57', '2025-06-16 05:12:57', 1, NULL), -(32, '2025-06-05', 4, 4, 3, 2, 1, 8.00, '2025-06-16 05:12:57', '2025-06-16 05:12:57', 1, NULL), -(33, '2025-06-05', 7, 4, 3, 2, 1, 8.00, '2025-06-16 05:12:57', '2025-06-16 05:12:57', 1, NULL), -(34, '2025-06-05', 10, 4, 3, 2, 1, 8.00, '2025-06-16 05:12:57', '2025-06-16 05:12:57', 1, NULL), -(35, '2025-06-05', 9, 4, 3, 2, 1, 8.00, '2025-06-16 05:12:57', '2025-06-16 05:12:57', 1, NULL), -(36, '2025-06-05', 2, 3, 2, 1, NULL, 8.00, '2025-06-16 05:13:56', '2025-06-16 05:13:56', 1, NULL), -(37, '2025-06-05', 5, 3, 2, 1, NULL, 8.00, '2025-06-16 05:13:56', '2025-06-16 05:13:56', 1, NULL), -(38, '2025-06-05', 6, 3, 2, 1, NULL, 8.00, '2025-06-16 05:13:56', '2025-06-16 05:13:56', 1, NULL), -(39, '2025-06-05', 8, 3, 2, 1, NULL, 8.00, '2025-06-16 05:13:56', '2025-06-16 05:13:56', 1, NULL), -(40, '2025-06-16', 5, 3, 2, 1, NULL, 8.00, '2025-06-16 06:12:01', '2025-06-16 06:12:01', 5, NULL), -(43, '2025-06-16', 2, 3, 2, 1, NULL, 8.00, '2025-06-16 06:12:01', '2025-06-16 06:12:01', 5, NULL), -(44, '2025-06-16', 6, 3, 2, 2, 4, 4.00, '2025-06-16 06:13:02', '2025-06-16 06:13:02', 5, NULL), -(45, '2025-06-16', 6, 3, 2, 1, NULL, 4.00, '2025-06-16 06:13:50', '2025-06-16 06:13:50', 5, NULL), -(46, '2025-06-16', 8, 3, 2, 2, 4, 4.00, '2025-06-16 06:15:22', '2025-06-16 06:15:22', 5, NULL), -(47, '2025-06-16', 8, 3, 2, 1, NULL, 4.00, '2025-06-16 06:15:22', '2025-06-16 06:15:22', 5, NULL), -(48, '2025-06-16', 4, 4, 3, 2, 1, 8.00, '2025-06-16 06:46:44', '2025-06-16 06:46:44', 3, NULL), -(50, '2025-06-16', 1, 4, 3, 2, 1, 8.00, '2025-06-16 06:46:44', '2025-06-16 06:46:44', 3, NULL), -(51, '2025-06-16', 9, 4, 3, 1, NULL, 8.00, '2025-06-16 06:48:29', '2025-06-16 06:48:29', 3, NULL), -(52, '2025-06-16', 10, 4, 3, 1, NULL, 6.00, '2025-06-16 06:50:09', '2025-06-16 06:50:09', 6, NULL), -(53, '2025-06-16', 10, 4, 3, 2, 1, 2.00, '2025-06-16 06:50:09', '2025-06-16 06:50:09', 6, NULL), -(54, '2025-06-16', 3, 4, 3, 1, NULL, 6.00, '2025-06-16 06:50:09', '2025-06-16 06:50:09', 6, NULL), -(55, '2025-06-16', 3, 4, 3, 2, 1, 2.00, '2025-06-16 06:50:09', '2025-06-16 06:50:09', 6, NULL), -(56, '2025-06-17', 2, 3, 2, 1, NULL, 8.00, '2025-06-17 08:23:41', '2025-06-17 08:23:41', 5, NULL), -(57, '2025-06-17', 2, 3, 2, 1, NULL, 2.00, '2025-06-17 08:23:41', '2025-06-17 08:23:41', 5, NULL), -(58, '2025-06-17', 5, 3, 2, 1, NULL, 8.00, '2025-06-17 08:23:41', '2025-06-17 08:23:41', 5, NULL), -(59, '2025-06-17', 5, 3, 2, 1, NULL, 2.00, '2025-06-17 08:23:41', '2025-06-17 08:23:41', 5, NULL), -(60, '2025-06-17', 6, 3, 2, 1, NULL, 8.00, '2025-06-17 08:24:33', '2025-06-17 08:24:33', 5, NULL), -(61, '2025-06-17', 6, 3, 2, 2, 4, 2.00, '2025-06-17 08:24:33', '2025-06-17 08:24:33', 5, NULL), -(62, '2025-06-17', 8, 3, 2, 1, NULL, 8.00, '2025-06-17 08:24:33', '2025-06-17 08:24:33', 5, NULL), -(63, '2025-06-17', 8, 3, 2, 2, 4, 2.00, '2025-06-17 08:24:33', '2025-06-17 08:24:33', 5, NULL), -(65, '2025-06-17', 9, 4, 3, 2, 1, 4.00, '2025-06-17 08:25:24', '2025-06-17 08:25:24', 3, NULL), -(66, '2025-06-17', 1, 4, 3, 2, 1, 4.00, '2025-06-17 08:27:06', '2025-06-17 08:27:06', 3, NULL), -(67, '2025-06-17', 4, 4, 3, 2, 1, 4.00, '2025-06-17 08:27:06', '2025-06-17 08:27:06', 3, NULL), -(68, '2025-06-17', 1, 4, 3, 1, NULL, 4.00, '2025-06-17 08:31:06', '2025-06-17 08:31:06', 3, NULL), -(69, '2025-06-17', 9, 4, 3, 1, NULL, 4.00, '2025-06-17 08:31:06', '2025-06-17 08:31:06', 3, NULL), -(70, '2025-06-17', 4, 4, 3, 1, NULL, 4.00, '2025-06-17 08:31:06', '2025-06-17 08:31:06', 3, NULL), -(71, '2025-06-17', 9, 4, 3, 1, NULL, 2.00, '2025-06-17 08:33:06', '2025-06-17 08:33:06', 3, NULL), -(72, '2025-06-17', 4, 4, 3, 1, NULL, 2.00, '2025-06-17 08:33:06', '2025-06-17 08:33:06', 3, NULL), -(73, '2025-06-17', 1, 4, 3, 1, NULL, 2.00, '2025-06-17 08:33:06', '2025-06-17 08:33:06', 3, NULL), -(74, '2025-06-17', 10, 4, 3, 1, NULL, 8.00, '2025-06-17 08:34:11', '2025-06-17 08:34:11', 6, NULL), -(75, '2025-06-17', 10, 4, 3, 2, 1, 2.00, '2025-06-17 08:34:11', '2025-06-17 08:34:11', 6, NULL), -(76, '2025-06-17', 3, 4, 3, 1, NULL, 8.00, '2025-06-17 08:34:11', '2025-06-17 08:34:11', 6, NULL), -(77, '2025-06-17', 3, 4, 3, 2, 1, 2.00, '2025-06-17 08:34:11', '2025-06-17 08:34:11', 6, NULL), -(78, '2025-06-18', 6, 3, 2, 1, NULL, 8.00, '2025-06-18 08:40:27', '2025-06-18 08:40:27', 5, NULL), -(79, '2025-06-18', 2, 3, 2, 1, NULL, 8.00, '2025-06-18 08:40:27', '2025-06-18 08:40:27', 5, NULL), -(80, '2025-06-18', 8, 3, 2, 1, NULL, 8.00, '2025-06-18 08:40:27', '2025-06-18 08:40:27', 5, NULL), -(81, '2025-06-18', 2, 3, 2, 1, NULL, 2.00, '2025-06-18 08:41:02', '2025-06-18 08:41:02', 5, NULL), -(82, '2025-06-18', 6, 3, 2, 1, NULL, 2.00, '2025-06-18 08:41:03', '2025-06-18 08:41:03', 5, NULL), -(83, '2025-06-18', 8, 3, 2, 1, NULL, 2.00, '2025-06-18 08:41:03', '2025-06-18 08:41:03', 5, NULL), -(84, '2025-06-18', 5, 4, 3, 1, NULL, 8.00, '2025-06-18 08:41:45', '2025-06-18 08:41:45', 5, NULL), -(85, '2025-06-18', 5, 4, 3, 1, NULL, 2.00, '2025-06-18 08:41:45', '2025-06-18 08:41:45', 5, NULL), -(86, '2025-06-18', 10, 4, 3, 1, NULL, 9.00, '2025-06-18 08:47:55', '2025-06-18 08:47:55', 6, NULL), -(87, '2025-06-18', 10, 4, 3, 2, 1, 1.00, '2025-06-18 08:47:55', '2025-06-18 08:47:55', 6, NULL), -(88, '2025-06-18', 3, 4, 3, 1, NULL, 9.00, '2025-06-18 08:47:55', '2025-06-18 08:47:55', 6, NULL), -(89, '2025-06-18', 3, 4, 3, 2, 1, 1.00, '2025-06-18 08:47:55', '2025-06-18 08:47:55', 6, NULL), -(90, '2025-06-18', 4, 4, 3, 2, 1, 4.00, '2025-06-18 08:50:19', '2025-06-18 08:50:19', 3, NULL), -(91, '2025-06-18', 4, 4, 3, 1, NULL, 6.00, '2025-06-18 08:50:19', '2025-06-18 08:50:19', 3, NULL), -(92, '2025-06-18', 9, 4, 3, 2, 1, 4.00, '2025-06-18 08:50:19', '2025-06-18 08:50:19', 3, NULL), -(93, '2025-06-18', 9, 4, 3, 1, NULL, 6.00, '2025-06-18 08:50:19', '2025-06-18 08:50:19', 3, NULL), -(94, '2025-06-18', 1, 4, 3, 2, 1, 4.00, '2025-06-18 08:50:19', '2025-06-18 08:50:19', 3, NULL), -(95, '2025-06-18', 1, 4, 3, 1, NULL, 6.00, '2025-06-18 08:50:19', '2025-06-18 08:50:19', 3, NULL), -(96, '2025-06-18', 7, 4, 3, 2, 1, 4.00, '2025-06-18 09:00:17', '2025-06-18 09:00:17', 3, NULL), -(97, '2025-06-18', 7, 4, 3, 1, NULL, 6.00, '2025-06-18 09:00:17', '2025-06-18 09:00:17', 3, NULL), -(98, '2025-06-19', 8, 3, 2, 1, NULL, 8.00, '2025-06-19 06:37:59', '2025-06-19 06:37:59', 5, NULL), -(99, '2025-06-19', 2, 3, 2, 1, NULL, 8.00, '2025-06-19 06:37:59', '2025-06-19 06:37:59', 5, NULL), -(100, '2025-06-19', 10, 4, 3, 1, NULL, 8.00, '2025-06-19 06:59:36', '2025-06-19 06:59:36', 6, NULL), -(101, '2025-06-19', 3, 4, 3, 1, NULL, 8.00, '2025-06-19 06:59:36', '2025-06-19 06:59:36', 6, NULL), -(102, '2025-06-19', 5, 4, 3, 1, NULL, 8.00, '2025-06-19 06:59:36', '2025-06-19 06:59:36', 6, NULL), -(103, '2025-06-19', 9, 4, 3, 1, NULL, 6.00, '2025-06-19 07:01:02', '2025-06-19 07:01:02', 3, NULL), -(104, '2025-06-19', 9, 4, 3, 2, 1, 2.00, '2025-06-19 07:01:02', '2025-06-19 07:01:02', 3, NULL), -(105, '2025-06-19', 4, 4, 3, 1, NULL, 6.00, '2025-06-19 07:01:02', '2025-06-19 07:01:02', 3, NULL), -(106, '2025-06-19', 4, 4, 3, 2, 1, 2.00, '2025-06-19 07:01:02', '2025-06-19 07:01:02', 3, NULL), -(107, '2025-06-19', 1, 4, 3, 1, NULL, 6.00, '2025-06-19 07:01:02', '2025-06-19 07:01:02', 3, NULL), -(108, '2025-06-19', 1, 4, 3, 2, 1, 2.00, '2025-06-19 07:01:02', '2025-06-19 07:01:02', 3, NULL), -(109, '2025-06-19', 7, 4, 3, 1, NULL, 6.00, '2025-06-19 07:01:02', '2025-06-19 07:01:02', 3, NULL), -(110, '2025-06-19', 7, 4, 3, 2, 1, 2.00, '2025-06-19 07:01:02', '2025-06-19 07:01:02', 3, NULL), -(111, '2025-06-19', 6, 4, 3, 1, NULL, 6.00, '2025-06-19 07:01:02', '2025-06-19 07:01:02', 3, NULL), -(112, '2025-06-19', 6, 4, 3, 2, 1, 2.00, '2025-06-19 07:01:02', '2025-06-19 07:01:02', 3, NULL), -(113, '2025-06-20', 9, 4, 3, 2, 1, 2.00, '2025-06-20 06:44:01', '2025-06-20 06:44:01', 3, NULL), -(114, '2025-06-20', 9, 4, 3, 1, NULL, 6.00, '2025-06-20 06:44:01', '2025-06-20 06:44:01', 3, NULL), -(115, '2025-06-20', 4, 4, 3, 2, 1, 2.00, '2025-06-20 06:44:01', '2025-06-20 06:44:01', 3, NULL), -(116, '2025-06-20', 4, 4, 3, 1, NULL, 6.00, '2025-06-20 06:44:01', '2025-06-20 06:44:01', 3, NULL), -(117, '2025-06-20', 7, 4, 3, 2, 1, 2.00, '2025-06-20 06:44:01', '2025-06-20 06:44:01', 3, NULL), -(118, '2025-06-20', 7, 4, 3, 1, NULL, 6.00, '2025-06-20 06:44:01', '2025-06-20 06:44:01', 3, NULL), -(119, '2025-06-20', 6, 4, 3, 2, 1, 2.00, '2025-06-20 06:44:02', '2025-06-20 06:44:02', 3, NULL), -(120, '2025-06-20', 6, 4, 3, 1, NULL, 6.00, '2025-06-20 06:44:02', '2025-06-20 06:44:02', 3, NULL), -(121, '2025-06-20', 1, 4, 3, 2, 1, 2.00, '2025-06-20 06:44:02', '2025-06-20 06:44:02', 3, NULL), -(122, '2025-06-20', 1, 4, 3, 1, NULL, 6.00, '2025-06-20 06:44:02', '2025-06-20 06:44:02', 3, NULL), -(123, '2025-06-20', 5, 4, 3, 2, 1, 2.00, '2025-06-20 06:44:02', '2025-06-20 06:44:02', 3, NULL), -(124, '2025-06-20', 5, 4, 3, 1, NULL, 6.00, '2025-06-20 06:44:02', '2025-06-20 06:44:02', 3, NULL), -(125, '2025-06-20', 10, 4, 3, 1, NULL, 8.00, '2025-06-20 06:45:30', '2025-06-20 06:45:30', 6, NULL), -(126, '2025-06-20', 3, 4, 3, 1, NULL, 8.00, '2025-06-20 06:45:31', '2025-06-20 06:45:31', 6, NULL), -(127, '2025-06-23', 10, 4, 3, 1, NULL, 8.00, '2025-06-23 06:42:58', '2025-06-23 06:42:58', 6, NULL), -(128, '2025-06-23', 3, 4, 3, 1, NULL, 8.00, '2025-06-23 06:42:58', '2025-06-23 06:42:58', 6, NULL), -(129, '2025-06-23', 5, 4, 3, 2, 1, 2.00, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), -(130, '2025-06-23', 5, 4, 3, 1, NULL, 6.00, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), -(131, '2025-06-23', 1, 4, 3, 2, 1, 2.00, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), -(132, '2025-06-23', 1, 4, 3, 1, NULL, 6.00, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), -(133, '2025-06-23', 9, 4, 3, 2, 1, 2.00, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), -(134, '2025-06-23', 9, 4, 3, 1, NULL, 6.00, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), -(135, '2025-06-23', 4, 4, 3, 2, 1, 2.00, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), -(136, '2025-06-23', 4, 4, 3, 1, NULL, 6.00, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), -(137, '2025-06-23', 7, 4, 3, 2, 1, 2.00, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), -(138, '2025-06-23', 7, 4, 3, 1, NULL, 6.00, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), -(139, '2025-06-23', 6, 4, 3, 2, 1, 2.00, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), -(140, '2025-06-23', 6, 4, 3, 1, NULL, 6.00, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), -(141, '2025-06-24', 10, 4, 3, 1, NULL, 12.00, '2025-06-24 11:10:32', '2025-06-24 11:10:32', 6, NULL), -(142, '2025-06-24', 3, 4, 3, 1, NULL, 12.00, '2025-06-24 11:10:32', '2025-06-24 11:10:32', 6, NULL), -(143, '2025-06-24', 9, 4, 3, 2, 1, 2.00, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), -(144, '2025-06-24', 9, 4, 3, 1, NULL, 10.00, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), -(145, '2025-06-24', 5, 4, 3, 2, 1, 2.00, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), -(146, '2025-06-24', 5, 4, 3, 1, NULL, 10.00, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), -(147, '2025-06-24', 4, 4, 3, 2, 1, 2.00, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), -(148, '2025-06-24', 4, 4, 3, 1, NULL, 10.00, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), -(149, '2025-06-24', 7, 4, 3, 2, 1, 2.00, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), -(150, '2025-06-24', 7, 4, 3, 1, NULL, 10.00, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), -(151, '2025-06-24', 6, 4, 3, 2, 1, 2.00, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), -(152, '2025-06-24', 6, 4, 3, 1, NULL, 10.00, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), -(153, '2025-06-24', 1, 4, 3, 2, 1, 2.00, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), -(154, '2025-06-24', 1, 4, 3, 1, NULL, 10.00, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), -(155, '2025-06-24', 8, 3, 2, 1, NULL, 8.00, '2025-06-24 11:11:05', '2025-06-24 11:11:05', 5, NULL), -(156, '2025-06-24', 8, 3, 2, 1, NULL, 4.00, '2025-06-24 11:11:05', '2025-06-24 11:11:05', 5, NULL), -(157, '2025-06-24', 2, 3, 2, 1, NULL, 8.00, '2025-06-24 11:11:05', '2025-06-24 11:11:05', 5, NULL), -(158, '2025-06-24', 2, 3, 2, 1, NULL, 4.00, '2025-06-24 11:11:05', '2025-06-24 11:11:05', 5, NULL), -(159, '2025-06-25', 2, 3, 2, 1, NULL, 8.00, '2025-06-25 11:08:04', '2025-06-25 11:08:04', 5, NULL), -(160, '2025-06-25', 2, 3, 2, 1, NULL, 4.00, '2025-06-25 11:08:04', '2025-06-25 11:08:04', 5, NULL), -(161, '2025-06-25', 8, 3, 2, 1, NULL, 8.00, '2025-06-25 11:08:05', '2025-06-25 11:08:05', 5, NULL), -(162, '2025-06-25', 8, 3, 2, 1, NULL, 4.00, '2025-06-25 11:08:05', '2025-06-25 11:08:05', 5, NULL), -(163, '2025-06-25', 10, 4, 3, 1, NULL, 12.00, '2025-06-25 11:11:30', '2025-06-25 11:11:30', 6, NULL), -(164, '2025-06-25', 9, 4, 3, 1, NULL, 12.00, '2025-06-25 11:11:30', '2025-06-25 11:11:30', 6, NULL), -(165, '2025-06-25', 3, 4, 3, 1, NULL, 12.00, '2025-06-25 11:11:30', '2025-06-25 11:11:30', 6, NULL), -(166, '2025-06-25', 6, 4, 3, 1, NULL, 12.00, '2025-06-25 11:11:30', '2025-06-25 11:11:30', 6, NULL), -(167, '2025-06-26', 10, 4, 3, 1, NULL, 12.00, '2025-06-26 10:29:38', '2025-06-26 10:29:38', 3, NULL), -(168, '2025-06-26', 5, 4, 3, 1, NULL, 12.00, '2025-06-26 10:29:38', '2025-06-26 10:29:38', 3, NULL), -(169, '2025-06-26', 7, 4, 3, 1, NULL, 12.00, '2025-06-26 10:29:38', '2025-06-26 10:29:38', 3, NULL), -(170, '2025-06-26', 1, 4, 3, 1, NULL, 12.00, '2025-06-26 10:29:38', '2025-06-26 10:29:38', 3, NULL), -(171, '2025-06-26', 4, 4, 3, 1, NULL, 12.00, '2025-06-26 10:29:38', '2025-06-26 10:29:38', 3, NULL), -(172, '2025-06-26', 8, 3, 2, 1, NULL, 8.00, '2025-06-26 11:11:31', '2025-06-26 11:11:31', 5, NULL), -(173, '2025-06-26', 8, 3, 2, 1, NULL, 4.00, '2025-06-26 11:11:31', '2025-06-26 11:11:31', 5, NULL), -(174, '2025-06-26', 2, 3, 2, 1, NULL, 8.00, '2025-06-26 11:11:32', '2025-06-26 11:11:32', 5, NULL), -(175, '2025-06-26', 2, 3, 2, 1, NULL, 4.00, '2025-06-26 11:11:32', '2025-06-26 11:11:32', 5, NULL), -(176, '2025-06-26', 9, 3, 2, 1, NULL, 8.00, '2025-06-26 11:11:32', '2025-06-26 11:11:32', 5, NULL), -(177, '2025-06-26', 9, 3, 2, 1, NULL, 4.00, '2025-06-26 11:11:32', '2025-06-26 11:11:32', 5, NULL), -(178, '2025-06-26', 3, 3, 2, 1, NULL, 12.00, '2025-06-26 11:19:34', '2025-06-26 11:19:34', 6, NULL), -(179, '2025-06-26', 6, 3, 2, 1, NULL, 12.00, '2025-06-26 11:19:34', '2025-06-26 11:19:34', 6, NULL), -(182, '2025-06-27', 2, 3, 2, 1, NULL, 4.00, '2025-06-27 01:54:40', '2025-06-27 01:54:40', 5, NULL), -(183, '2025-06-27', 9, 4, 3, 1, NULL, 8.00, '2025-06-27 06:47:43', '2025-06-27 06:47:43', 3, NULL), -(184, '2025-06-27', 10, 4, 3, 1, NULL, 8.00, '2025-06-27 06:47:43', '2025-06-27 06:47:43', 3, NULL), -(185, '2025-06-27', 7, 4, 3, 1, NULL, 8.00, '2025-06-27 06:47:43', '2025-06-27 06:47:43', 3, NULL), -(186, '2025-06-27', 5, 4, 3, 1, NULL, 8.00, '2025-06-27 06:47:43', '2025-06-27 06:47:43', 3, NULL), -(187, '2025-06-27', 4, 4, 3, 1, NULL, 8.00, '2025-06-27 06:47:43', '2025-06-27 06:47:43', 3, NULL), -(188, '2025-06-27', 1, 4, 3, 1, NULL, 8.00, '2025-06-27 06:47:43', '2025-06-27 06:47:43', 3, NULL), -(189, '2025-06-27', 3, 3, 2, 1, NULL, 8.00, '2025-06-27 06:49:08', '2025-06-27 06:49:08', 6, NULL), -(191, '2025-06-27', 6, 3, 2, 1, NULL, 4.00, '2025-06-27 06:58:46', '2025-06-27 06:58:46', 6, NULL), -(192, '2025-06-27', 8, 3, 2, 1, NULL, 6.00, '2025-06-27 07:00:10', '2025-06-27 07:00:10', 5, NULL), -(193, '2025-06-30', 6, 3, 2, 2, 4, 2.00, '2025-07-05 01:37:29', '2025-07-05 01:37:29', 3, NULL), -(194, '2025-06-30', 6, 3, 2, 1, NULL, 2.00, '2025-07-05 01:37:29', '2025-07-07 04:15:25', 3, 3), -(195, '2025-06-30', 2, 3, 2, 1, NULL, 4.00, '2025-07-05 01:38:19', '2025-07-07 04:15:40', 3, 3), -(196, '2025-06-30', 3, 3, 2, 1, NULL, 8.00, '2025-07-05 01:38:19', '2025-07-05 01:38:19', 3, NULL), -(197, '2025-06-30', 8, 3, 2, 1, NULL, 6.00, '2025-07-05 01:38:19', '2025-07-07 04:15:02', 3, 3), -(198, '2025-07-01', 3, 3, 2, 1, NULL, 10.00, '2025-07-05 01:39:21', '2025-07-05 01:39:21', 3, NULL), -(199, '2025-07-01', 2, 3, 2, 1, NULL, 10.00, '2025-07-05 01:39:21', '2025-07-05 01:39:21', 3, NULL), -(200, '2025-07-01', 6, 3, 2, 1, NULL, 10.00, '2025-07-05 01:39:21', '2025-07-05 01:39:21', 3, NULL), -(201, '2025-07-01', 8, 3, 2, 1, NULL, 10.00, '2025-07-05 01:39:21', '2025-07-05 01:39:21', 3, NULL), -(202, '2025-07-01', 10, 3, 2, 1, NULL, 10.00, '2025-07-05 01:39:21', '2025-07-05 01:39:21', 3, NULL), -(203, '2025-07-01', 9, 3, 2, 1, NULL, 10.00, '2025-07-05 01:39:21', '2025-07-05 01:39:21', 3, NULL), -(204, '2025-07-01', 2, 3, 2, 1, NULL, 2.00, '2025-07-05 01:39:48', '2025-07-05 01:42:08', 3, 3), -(205, '2025-07-01', 3, 3, 2, 1, NULL, 2.00, '2025-07-05 01:39:48', '2025-07-05 01:42:02', 3, 3), -(206, '2025-07-01', 6, 3, 2, 1, NULL, 2.00, '2025-07-05 01:39:48', '2025-07-05 01:41:56', 3, 3), -(207, '2025-07-01', 8, 3, 2, 1, NULL, 2.00, '2025-07-05 01:39:48', '2025-07-05 01:41:48', 3, 3), -(208, '2025-07-01', 9, 3, 2, 2, 4, 2.00, '2025-07-05 01:40:10', '2025-07-05 01:40:10', 3, NULL), -(209, '2025-07-01', 10, 3, 2, 2, 4, 2.00, '2025-07-05 01:40:10', '2025-07-05 01:40:10', 3, NULL), -(210, '2025-07-01', 7, 4, 3, 1, NULL, 5.00, '2025-07-05 01:42:57', '2025-07-05 01:42:57', 3, NULL), -(211, '2025-07-01', 7, 4, 3, 2, 2, 3.00, '2025-07-05 01:42:57', '2025-07-05 01:42:57', 3, NULL), -(212, '2025-07-01', 5, 4, 3, 1, NULL, 8.00, '2025-07-05 01:42:57', '2025-07-07 04:21:24', 3, 3), -(213, '2025-07-01', 5, 4, 3, 2, 2, 4.00, '2025-07-05 01:42:57', '2025-07-07 04:21:10', 3, 3), -(214, '2025-07-01', 4, 4, 3, 1, NULL, 8.00, '2025-07-05 01:42:57', '2025-07-07 04:21:41', 3, 3), -(215, '2025-07-01', 4, 4, 3, 2, 2, 4.00, '2025-07-05 01:42:57', '2025-07-07 04:21:32', 3, 3), -(216, '2025-07-01', 1, 4, 3, 1, NULL, 5.00, '2025-07-05 01:42:57', '2025-07-05 01:42:57', 3, NULL), -(217, '2025-07-01', 1, 4, 3, 2, 2, 3.00, '2025-07-05 01:42:57', '2025-07-05 01:42:57', 3, NULL), -(218, '2025-07-02', 2, 3, 2, 1, NULL, 10.00, '2025-07-05 01:43:36', '2025-07-05 01:43:36', 3, NULL), -(219, '2025-07-02', 3, 3, 2, 1, NULL, 10.00, '2025-07-05 01:43:36', '2025-07-05 01:43:36', 3, NULL), -(220, '2025-07-02', 10, 3, 2, 1, NULL, 10.00, '2025-07-05 01:43:36', '2025-07-05 01:43:36', 3, NULL), -(221, '2025-07-02', 9, 3, 2, 1, NULL, 10.00, '2025-07-05 01:43:36', '2025-07-05 01:43:36', 3, NULL), -(222, '2025-07-02', 8, 3, 2, 1, NULL, 10.00, '2025-07-05 01:43:36', '2025-07-05 01:43:36', 3, NULL), -(223, '2025-07-02', 6, 3, 2, 1, NULL, 10.00, '2025-07-05 01:43:36', '2025-07-05 01:43:36', 3, NULL), -(224, '2025-07-02', 7, 3, 2, 1, NULL, 10.00, '2025-07-05 01:43:36', '2025-07-05 01:43:36', 3, NULL), -(225, '2025-07-02', 5, 4, 3, 2, 2, 4.00, '2025-07-05 01:44:11', '2025-07-05 01:44:11', 3, NULL), -(226, '2025-07-02', 5, 4, 3, 1, NULL, 6.00, '2025-07-05 01:44:11', '2025-07-05 01:44:54', 3, 3), -(227, '2025-07-02', 4, 4, 3, 2, 2, 4.00, '2025-07-05 01:44:11', '2025-07-05 01:44:11', 3, NULL), -(228, '2025-07-02', 4, 4, 3, 1, NULL, 6.00, '2025-07-05 01:44:11', '2025-07-05 01:44:59', 3, 3), -(229, '2025-07-02', 1, 4, 3, 2, 2, 4.00, '2025-07-05 01:44:11', '2025-07-05 01:44:11', 3, NULL), -(230, '2025-07-02', 1, 4, 3, 1, NULL, 6.00, '2025-07-05 01:44:11', '2025-07-05 01:45:05', 3, 3), -(231, '2025-07-03', 2, 3, 2, 1, NULL, 10.00, '2025-07-05 01:45:44', '2025-07-05 01:45:44', 3, NULL), -(232, '2025-07-03', 6, 3, 2, 1, NULL, 10.00, '2025-07-05 01:45:45', '2025-07-05 01:45:45', 3, NULL), -(233, '2025-07-03', 9, 3, 2, 1, NULL, 10.00, '2025-07-05 01:45:45', '2025-07-05 01:45:45', 3, NULL), -(234, '2025-07-03', 8, 3, 2, 1, NULL, 10.00, '2025-07-05 01:45:45', '2025-07-05 01:45:45', 3, NULL), -(235, '2025-07-03', 7, 4, 3, 1, NULL, 10.00, '2025-07-05 01:46:07', '2025-07-05 01:46:07', 3, NULL), -(236, '2025-07-03', 1, 4, 3, 1, NULL, 10.00, '2025-07-05 01:46:07', '2025-07-05 01:46:07', 3, NULL), -(237, '2025-07-03', 3, 4, 3, 1, NULL, 10.00, '2025-07-05 01:46:08', '2025-07-05 01:46:08', 3, NULL), -(238, '2025-07-03', 4, 4, 3, 1, NULL, 10.00, '2025-07-05 01:46:08', '2025-07-05 01:46:08', 3, NULL), -(239, '2025-07-03', 5, 4, 3, 1, NULL, 10.00, '2025-07-05 01:46:08', '2025-07-05 01:46:08', 3, NULL), -(240, '2025-07-03', 10, 4, 3, 1, NULL, 10.00, '2025-07-05 01:46:08', '2025-07-05 01:46:08', 3, NULL), -(241, '2025-07-04', 10, 4, 3, 2, 2, 2.00, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), -(242, '2025-07-04', 10, 4, 3, 1, NULL, 6.00, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), -(243, '2025-07-04', 5, 4, 3, 2, 2, 2.00, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), -(244, '2025-07-04', 5, 4, 3, 1, NULL, 6.00, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), -(245, '2025-07-04', 4, 4, 3, 2, 2, 2.00, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), -(246, '2025-07-04', 4, 4, 3, 1, NULL, 6.00, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), -(247, '2025-07-04', 9, 4, 3, 2, 2, 2.00, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), -(248, '2025-07-04', 9, 4, 3, 1, NULL, 6.00, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), -(249, '2025-07-04', 8, 4, 3, 2, 2, 2.00, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), -(250, '2025-07-04', 8, 4, 3, 1, NULL, 6.00, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), -(251, '2025-07-04', 3, 4, 3, 2, 2, 2.00, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), -(252, '2025-07-04', 3, 4, 3, 1, NULL, 6.00, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), -(253, '2025-07-04', 2, 4, 3, 2, 2, 2.00, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), -(254, '2025-07-04', 2, 4, 3, 1, NULL, 6.00, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), -(255, '2025-07-04', 7, 4, 3, 2, 2, 2.00, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), -(256, '2025-07-04', 7, 4, 3, 1, NULL, 6.00, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), -(257, '2025-07-04', 6, 4, 3, 2, 2, 2.00, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), -(258, '2025-07-04', 6, 4, 3, 1, NULL, 6.00, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), -(259, '2025-07-04', 1, 4, 3, 2, 2, 2.00, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), -(260, '2025-07-04', 1, 4, 3, 1, NULL, 6.00, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), -(261, '2025-07-05', 8, 4, 2, 1, NULL, 8.00, '2025-07-05 05:36:38', '2025-07-05 05:36:38', 5, NULL), -(262, '2025-07-05', 5, 4, 2, 1, NULL, 8.00, '2025-07-05 05:36:38', '2025-07-05 05:36:38', 5, NULL), -(263, '2025-07-05', 4, 4, 2, 1, NULL, 8.00, '2025-07-05 05:36:39', '2025-07-05 05:36:39', 5, NULL), -(264, '2025-07-05', 3, 4, 2, 1, NULL, 8.00, '2025-07-05 05:36:39', '2025-07-05 05:36:39', 5, NULL), -(265, '2025-07-05', 2, 4, 2, 1, NULL, 8.00, '2025-07-05 05:36:39', '2025-07-05 05:36:39', 5, NULL), -(266, '2025-07-05', 1, 4, 2, 1, NULL, 8.00, '2025-07-05 05:36:39', '2025-07-05 05:36:39', 5, NULL), -(267, '2025-07-06', 10, 4, 3, 1, NULL, 8.00, '2025-07-06 05:34:32', '2025-07-06 05:46:08', 5, 3), -(268, '2025-07-06', 9, 4, 3, 1, NULL, 8.00, '2025-07-06 05:34:32', '2025-07-06 05:46:16', 5, 3), -(269, '2025-07-06', 7, 4, 3, 1, NULL, 8.00, '2025-07-06 05:34:32', '2025-07-06 05:46:22', 5, 3), -(270, '2025-07-06', 6, 4, 3, 1, NULL, 8.00, '2025-07-06 05:34:32', '2025-07-06 05:46:27', 5, 3), -(271, '2025-07-06', 4, 4, 3, 1, NULL, 8.00, '2025-07-06 05:34:32', '2025-07-06 05:46:33', 5, 3), -(272, '2025-07-06', 3, 4, 3, 1, NULL, 8.00, '2025-07-06 05:34:32', '2025-07-06 05:46:39', 5, 3), -(273, '2025-07-06', 2, 4, 3, 1, NULL, 8.00, '2025-07-06 05:34:32', '2025-07-06 05:46:44', 5, 3), -(274, '2025-07-06', 1, 4, 3, 1, NULL, 8.00, '2025-07-06 05:34:32', '2025-07-06 05:46:49', 5, 3), -(275, '2025-07-07', 10, 4, 3, 1, NULL, 8.00, '2025-07-07 06:49:31', '2025-07-07 06:49:31', 6, NULL), -(276, '2025-07-07', 9, 4, 3, 1, NULL, 8.00, '2025-07-07 06:49:31', '2025-07-07 06:49:31', 6, NULL), -(277, '2025-07-07', 8, 4, 3, 1, NULL, 8.00, '2025-07-07 06:49:31', '2025-07-07 06:49:31', 6, NULL), -(278, '2025-07-07', 7, 4, 3, 1, NULL, 8.00, '2025-07-07 06:49:31', '2025-07-07 06:49:31', 6, NULL), -(279, '2025-07-07', 3, 4, 3, 1, NULL, 8.00, '2025-07-07 06:49:31', '2025-07-07 06:49:31', 6, NULL), -(280, '2025-07-07', 4, 4, 3, 1, NULL, 8.00, '2025-07-07 06:49:31', '2025-07-07 06:49:31', 6, NULL), -(281, '2025-07-07', 5, 4, 3, 1, NULL, 8.00, '2025-07-07 06:49:31', '2025-07-07 06:49:31', 6, NULL), -(282, '2025-07-07', 6, 4, 3, 1, NULL, 8.00, '2025-07-07 06:49:31', '2025-07-07 06:49:31', 6, NULL), -(283, '2025-07-07', 2, 4, 3, 1, NULL, 8.00, '2025-07-07 06:49:31', '2025-07-07 06:49:31', 6, NULL), -(284, '2025-07-07', 1, 4, 3, 1, NULL, 8.00, '2025-07-07 06:49:31', '2025-07-07 06:49:31', 6, NULL), -(285, '2025-07-08', 10, 4, 3, 1, NULL, 8.00, '2025-07-08 06:36:57', '2025-07-08 06:36:57', 3, NULL), -(286, '2025-07-08', 9, 4, 3, 1, NULL, 8.00, '2025-07-08 06:36:58', '2025-07-08 06:36:58', 3, NULL), -(287, '2025-07-08', 8, 4, 3, 1, NULL, 8.00, '2025-07-08 06:36:58', '2025-07-08 06:36:58', 3, NULL), -(288, '2025-07-08', 7, 4, 3, 1, NULL, 8.00, '2025-07-08 06:36:58', '2025-07-08 06:36:58', 3, NULL), -(289, '2025-07-08', 6, 4, 3, 1, NULL, 8.00, '2025-07-08 06:36:58', '2025-07-08 06:36:58', 3, NULL), -(290, '2025-07-08', 1, 4, 3, 1, NULL, 8.00, '2025-07-08 06:36:58', '2025-07-08 06:36:58', 3, NULL), -(291, '2025-07-08', 2, 4, 3, 1, NULL, 8.00, '2025-07-08 06:36:58', '2025-07-08 06:36:58', 3, NULL), -(292, '2025-07-08', 3, 4, 3, 1, NULL, 8.00, '2025-07-08 06:36:58', '2025-07-08 06:36:58', 3, NULL), -(293, '2025-07-08', 5, 4, 3, 1, NULL, 8.00, '2025-07-08 06:36:58', '2025-07-08 06:36:58', 3, NULL), -(294, '2025-07-08', 4, 4, 3, 1, NULL, 8.00, '2025-07-08 06:36:58', '2025-07-08 06:36:58', 3, NULL), -(295, '2025-07-09', 10, 4, 3, 1, NULL, 8.00, '2025-07-09 22:08:40', '2025-07-09 22:08:40', 5, NULL), -(296, '2025-07-09', 9, 4, 3, 1, NULL, 8.00, '2025-07-09 22:08:40', '2025-07-09 22:08:40', 5, NULL), -(297, '2025-07-09', 8, 4, 3, 1, NULL, 8.00, '2025-07-09 22:08:40', '2025-07-09 22:08:40', 5, NULL), -(298, '2025-07-09', 7, 4, 3, 1, NULL, 8.00, '2025-07-09 22:08:41', '2025-07-09 22:08:41', 5, NULL), -(299, '2025-07-09', 6, 4, 3, 1, NULL, 8.00, '2025-07-09 22:08:41', '2025-07-09 22:08:41', 5, NULL), -(300, '2025-07-09', 2, 4, 3, 1, NULL, 8.00, '2025-07-09 22:08:41', '2025-07-09 22:08:41', 5, NULL), -(301, '2025-07-09', 3, 4, 3, 1, NULL, 8.00, '2025-07-09 22:08:42', '2025-07-09 22:08:42', 5, NULL), -(302, '2025-07-09', 4, 4, 3, 1, NULL, 8.00, '2025-07-09 22:08:42', '2025-07-09 22:08:42', 5, NULL), -(303, '2025-07-09', 5, 4, 3, 1, NULL, 8.00, '2025-07-09 22:08:42', '2025-07-09 22:08:42', 5, NULL), -(304, '2025-07-09', 1, 4, 3, 1, NULL, 4.00, '2025-07-09 22:09:10', '2025-07-09 22:09:10', 5, NULL), -(305, '2025-07-10', 9, 4, 3, 1, NULL, 8.00, '2025-07-10 06:33:58', '2025-07-10 06:33:58', 3, NULL), -(306, '2025-07-10', 8, 4, 3, 1, NULL, 8.00, '2025-07-10 06:33:58', '2025-07-10 06:33:58', 3, NULL), -(307, '2025-07-10', 5, 4, 3, 1, NULL, 8.00, '2025-07-10 06:33:58', '2025-07-10 06:33:58', 3, NULL), -(308, '2025-07-10', 6, 4, 3, 1, NULL, 8.00, '2025-07-10 06:33:59', '2025-07-10 06:33:59', 3, NULL), -(309, '2025-07-10', 2, 4, 3, 1, NULL, 8.00, '2025-07-10 06:33:59', '2025-07-10 06:33:59', 3, NULL), -(310, '2025-07-10', 3, 4, 3, 1, NULL, 8.00, '2025-07-10 06:33:59', '2025-07-10 06:33:59', 3, NULL), -(311, '2025-07-10', 4, 4, 3, 1, NULL, 8.00, '2025-07-10 06:33:59', '2025-07-10 06:33:59', 3, NULL), -(312, '2025-07-10', 1, 4, 3, 1, NULL, 8.00, '2025-07-10 06:33:59', '2025-07-10 06:33:59', 3, NULL), -(313, '2025-07-10', 7, 4, 3, 1, NULL, 8.00, '2025-07-10 06:33:59', '2025-07-10 06:33:59', 3, NULL), -(314, '2025-07-10', 10, 4, 3, 1, NULL, 8.00, '2025-07-10 06:33:59', '2025-07-10 06:33:59', 3, NULL), -(315, '2025-07-12', 9, 4, 3, 1, NULL, 8.00, '2025-07-12 05:41:30', '2025-07-12 05:41:30', 3, NULL), -(316, '2025-07-12', 8, 4, 3, 1, NULL, 8.00, '2025-07-12 05:41:30', '2025-07-12 05:41:30', 3, NULL), -(317, '2025-07-12', 6, 4, 3, 1, NULL, 8.00, '2025-07-12 05:41:30', '2025-07-12 05:41:30', 3, NULL), -(318, '2025-07-12', 5, 4, 3, 1, NULL, 8.00, '2025-07-12 05:41:30', '2025-07-12 05:41:30', 3, NULL), -(319, '2025-07-12', 4, 4, 3, 1, NULL, 8.00, '2025-07-12 05:41:30', '2025-07-12 05:41:30', 3, NULL), -(320, '2025-07-12', 2, 4, 3, 1, NULL, 8.00, '2025-07-12 05:41:30', '2025-07-12 05:41:30', 3, NULL), -(321, '2025-07-12', 1, 4, 3, 1, NULL, 8.00, '2025-07-12 05:41:30', '2025-07-12 05:41:30', 3, NULL), -(322, '2025-07-14', 8, 4, 3, 1, NULL, 6.00, '2025-07-14 06:46:30', '2025-07-14 06:46:30', 3, NULL), -(323, '2025-07-14', 10, 4, 3, 1, NULL, 8.00, '2025-07-14 06:46:57', '2025-07-14 06:46:57', 3, NULL), -(324, '2025-07-14', 9, 4, 3, 1, NULL, 8.00, '2025-07-14 06:46:57', '2025-07-14 06:46:57', 3, NULL), -(325, '2025-07-14', 7, 4, 3, 1, NULL, 8.00, '2025-07-14 06:46:57', '2025-07-14 06:46:57', 3, NULL), -(326, '2025-07-14', 6, 4, 3, 1, NULL, 8.00, '2025-07-14 06:46:57', '2025-07-14 06:46:57', 3, NULL), -(327, '2025-07-14', 1, 4, 3, 1, NULL, 8.00, '2025-07-14 06:46:57', '2025-07-14 06:46:57', 3, NULL), -(328, '2025-07-14', 2, 4, 3, 1, NULL, 8.00, '2025-07-14 06:46:57', '2025-07-14 06:46:57', 3, NULL), -(329, '2025-07-14', 3, 4, 3, 1, NULL, 8.00, '2025-07-14 06:46:57', '2025-07-14 06:46:57', 3, NULL), -(330, '2025-07-14', 4, 4, 3, 1, NULL, 8.00, '2025-07-14 06:46:57', '2025-07-14 06:46:57', 3, NULL), -(331, '2025-07-15', 3, 3, 2, 1, NULL, 8.00, '2025-07-15 05:57:06', '2025-07-15 05:57:06', 5, NULL), -(332, '2025-07-15', 9, 3, 2, 1, NULL, 8.00, '2025-07-15 05:57:06', '2025-07-15 05:57:06', 5, NULL), -(333, '2025-07-15', 5, 3, 2, 2, 4, 4.00, '2025-07-15 05:57:47', '2025-07-15 05:57:47', 5, NULL), -(334, '2025-07-15', 5, 4, 3, 1, NULL, 4.00, '2025-07-15 05:57:47', '2025-07-15 05:57:47', 5, NULL), -(335, '2025-07-15', 10, 4, 3, 1, NULL, 8.00, '2025-07-15 05:58:19', '2025-07-15 05:58:19', 5, NULL), -(336, '2025-07-15', 8, 4, 3, 1, NULL, 8.00, '2025-07-15 05:58:19', '2025-07-15 05:58:19', 5, NULL), -(337, '2025-07-15', 7, 4, 3, 1, NULL, 8.00, '2025-07-15 05:58:19', '2025-07-15 05:58:19', 5, NULL), -(338, '2025-07-15', 6, 4, 3, 1, NULL, 8.00, '2025-07-15 05:58:19', '2025-07-15 05:58:19', 5, NULL), -(339, '2025-07-15', 2, 4, 3, 1, NULL, 8.00, '2025-07-15 05:58:19', '2025-07-15 05:58:19', 5, NULL), -(340, '2025-07-15', 1, 4, 3, 1, NULL, 8.00, '2025-07-15 05:58:19', '2025-07-15 05:58:19', 5, NULL), -(341, '2025-07-14', 5, 4, 3, 1, NULL, 8.00, '2025-07-15 06:57:26', '2025-07-15 06:57:26', 3, NULL), -(342, '2025-07-16', 4, 4, 3, 1, NULL, 2.00, '2025-07-16 06:46:46', '2025-07-16 06:46:46', 5, NULL), -(343, '2025-07-16', 4, 3, 2, 1, NULL, 4.00, '2025-07-16 06:46:46', '2025-07-16 06:46:46', 5, NULL), -(344, '2025-07-16', 4, 3, 2, 1, NULL, 2.00, '2025-07-16 06:46:46', '2025-07-16 06:46:46', 5, NULL), -(345, '2025-07-16', 5, 4, 3, 1, NULL, 2.00, '2025-07-16 06:46:46', '2025-07-16 06:46:46', 5, NULL), -(346, '2025-07-16', 5, 3, 2, 1, NULL, 4.00, '2025-07-16 06:46:46', '2025-07-16 06:46:46', 5, NULL), -(347, '2025-07-16', 5, 3, 2, 1, NULL, 2.00, '2025-07-16 06:46:46', '2025-07-16 06:46:46', 5, NULL), -(348, '2025-07-16', 10, 4, 3, 1, NULL, 2.00, '2025-07-16 06:47:53', '2025-07-16 06:47:53', 5, NULL), -(349, '2025-07-16', 10, 3, 2, 1, NULL, 4.00, '2025-07-16 06:47:53', '2025-07-16 06:47:53', 5, NULL), -(350, '2025-07-16', 10, 3, 2, 1, NULL, 2.00, '2025-07-16 06:47:53', '2025-07-16 06:47:53', 5, NULL), -(351, '2025-07-16', 6, 4, 3, 1, NULL, 2.00, '2025-07-16 06:47:53', '2025-07-16 06:47:53', 5, NULL), -(352, '2025-07-16', 6, 3, 2, 1, NULL, 4.00, '2025-07-16 06:47:53', '2025-07-16 06:47:53', 5, NULL), -(353, '2025-07-16', 6, 3, 2, 1, NULL, 2.00, '2025-07-16 06:47:53', '2025-07-16 06:47:53', 5, NULL), -(354, '2025-07-16', 9, 3, 2, 1, NULL, 8.00, '2025-07-16 06:48:32', '2025-07-16 06:48:32', 5, NULL), -(355, '2025-07-16', 8, 3, 2, 1, NULL, 8.00, '2025-07-16 06:48:32', '2025-07-16 06:48:32', 5, NULL), -(356, '2025-07-16', 3, 3, 2, 1, NULL, 8.00, '2025-07-16 06:48:32', '2025-07-16 06:48:32', 5, NULL), -(357, '2025-07-16', 2, 3, 2, 1, NULL, 8.00, '2025-07-16 06:48:32', '2025-07-16 06:48:32', 5, NULL), -(358, '2025-07-16', 1, 4, 3, 1, NULL, 8.00, '2025-07-16 06:51:31', '2025-07-16 06:51:31', 3, NULL), -(359, '2025-07-16', 7, 4, 3, 1, NULL, 8.00, '2025-07-16 06:51:31', '2025-07-16 06:51:31', 3, NULL), -(360, '2025-07-17', 1, 3, 3, 1, NULL, 8.00, '2025-07-17 06:45:22', '2025-07-17 06:45:22', 3, NULL), -(361, '2025-07-17', 5, 3, 2, 1, NULL, 4.00, '2025-07-17 06:46:48', '2025-07-17 06:46:48', 5, NULL), -(362, '2025-07-17', 5, 3, 2, 2, 4, 4.00, '2025-07-17 06:46:48', '2025-07-17 06:46:48', 5, NULL), -(363, '2025-07-17', 4, 3, 2, 1, NULL, 4.00, '2025-07-17 06:46:48', '2025-07-17 06:46:48', 5, NULL), -(364, '2025-07-17', 4, 3, 2, 2, 4, 4.00, '2025-07-17 06:46:48', '2025-07-17 06:46:48', 5, NULL), -(365, '2025-07-17', 2, 3, 2, 1, NULL, 4.00, '2025-07-17 06:46:48', '2025-07-17 06:46:48', 5, NULL), -(366, '2025-07-17', 2, 3, 2, 2, 4, 4.00, '2025-07-17 06:46:48', '2025-07-17 06:46:48', 5, NULL), -(367, '2025-07-17', 10, 3, 2, 1, NULL, 8.00, '2025-07-17 06:47:19', '2025-07-17 06:47:19', 5, NULL), -(368, '2025-07-17', 9, 3, 2, 1, NULL, 8.00, '2025-07-17 06:47:19', '2025-07-17 06:47:19', 5, NULL), -(369, '2025-07-17', 8, 3, 2, 1, NULL, 8.00, '2025-07-17 06:47:19', '2025-07-17 06:47:19', 5, NULL), -(370, '2025-07-17', 7, 3, 2, 1, NULL, 8.00, '2025-07-17 06:47:19', '2025-07-17 06:47:19', 5, NULL), -(371, '2025-07-17', 6, 3, 2, 1, NULL, 8.00, '2025-07-17 06:47:19', '2025-07-17 06:47:19', 5, NULL), -(372, '2025-07-17', 3, 3, 2, 1, NULL, 8.00, '2025-07-17 06:47:19', '2025-07-17 06:47:19', 5, NULL), -(373, '2025-07-18', 7, 4, 3, 2, 1, 2.00, '2025-07-18 05:54:47', '2025-07-18 05:54:47', 3, NULL), -(374, '2025-07-18', 1, 4, 3, 2, 1, 2.00, '2025-07-18 05:54:48', '2025-07-18 05:54:48', 3, NULL), -(376, '2025-07-18', 5, 4, 3, 1, NULL, 2.00, '2025-07-18 05:58:33', '2025-07-18 05:58:33', 3, NULL), -(377, '2025-07-18', 5, 3, 2, 1, NULL, 6.00, '2025-07-18 05:58:33', '2025-07-18 05:58:33', 3, NULL), -(378, '2025-07-18', 7, 3, 2, 1, NULL, 6.00, '2025-07-18 05:59:42', '2025-07-18 05:59:42', 3, NULL), -(379, '2025-07-18', 1, 3, 3, 1, NULL, 6.00, '2025-07-18 06:00:15', '2025-07-18 06:00:15', 3, NULL), -(380, '2025-07-18', 10, 3, 2, 1, NULL, 8.00, '2025-07-18 06:36:13', '2025-07-18 06:36:13', 5, NULL), -(381, '2025-07-18', 9, 3, 2, 1, NULL, 8.00, '2025-07-18 06:36:13', '2025-07-18 06:36:13', 5, NULL), -(382, '2025-07-18', 8, 3, 2, 1, NULL, 8.00, '2025-07-18 06:36:13', '2025-07-18 06:36:13', 5, NULL), -(383, '2025-07-18', 6, 3, 2, 1, NULL, 8.00, '2025-07-18 06:36:13', '2025-07-18 06:36:13', 5, NULL), -(384, '2025-07-18', 4, 3, 2, 1, NULL, 8.00, '2025-07-18 06:36:13', '2025-07-18 06:36:13', 5, NULL), -(385, '2025-07-18', 3, 3, 2, 1, NULL, 8.00, '2025-07-18 06:36:13', '2025-07-18 06:36:13', 5, NULL), -(386, '2025-07-18', 2, 3, 2, 1, NULL, 8.00, '2025-07-18 06:36:13', '2025-07-18 06:36:13', 5, NULL), -(387, '2025-07-21', 5, 4, 3, 2, 1, 4.00, '2025-07-21 06:40:08', '2025-07-21 06:40:08', 5, NULL), -(388, '2025-07-21', 5, 3, 2, 1, NULL, 4.00, '2025-07-21 06:40:08', '2025-07-21 06:40:08', 5, NULL), -(389, '2025-07-21', 4, 4, 3, 2, 1, 4.00, '2025-07-21 06:40:08', '2025-07-21 06:40:08', 5, NULL), -(390, '2025-07-21', 4, 3, 2, 1, NULL, 4.00, '2025-07-21 06:40:08', '2025-07-21 06:40:08', 5, NULL), -(391, '2025-07-21', 10, 3, 2, 1, NULL, 6.00, '2025-07-21 06:40:32', '2025-07-22 06:58:42', 5, 3), -(392, '2025-07-21', 9, 3, 2, 1, NULL, 8.00, '2025-07-21 06:40:32', '2025-07-21 06:40:32', 5, NULL), -(393, '2025-07-21', 8, 3, 2, 1, NULL, 8.00, '2025-07-21 06:40:32', '2025-07-21 06:40:32', 5, NULL), -(394, '2025-07-21', 7, 3, 2, 1, NULL, 8.00, '2025-07-21 06:40:32', '2025-07-21 06:40:32', 5, NULL), -(395, '2025-07-21', 6, 3, 2, 1, NULL, 8.00, '2025-07-21 06:40:32', '2025-07-21 06:40:32', 5, NULL), -(396, '2025-07-21', 3, 3, 2, 1, NULL, 8.00, '2025-07-21 06:40:32', '2025-07-21 06:40:32', 5, NULL), -(397, '2025-07-21', 2, 3, 2, 1, NULL, 8.00, '2025-07-21 06:40:32', '2025-07-21 06:40:32', 5, NULL), -(398, '2025-07-21', 1, 3, 3, 1, NULL, 8.00, '2025-07-21 06:53:37', '2025-07-21 06:53:37', 3, NULL), -(399, '2025-07-22', 10, 3, 2, 1, NULL, 8.00, '2025-07-22 06:45:47', '2025-07-22 06:45:47', 5, NULL), -(400, '2025-07-22', 9, 3, 2, 1, NULL, 8.00, '2025-07-22 06:45:48', '2025-07-22 06:45:48', 5, NULL), -(401, '2025-07-22', 8, 3, 2, 1, NULL, 8.00, '2025-07-22 06:45:48', '2025-07-22 06:45:48', 5, NULL), -(402, '2025-07-22', 7, 3, 2, 1, NULL, 8.00, '2025-07-22 06:45:48', '2025-07-22 06:45:48', 5, NULL), -(403, '2025-07-22', 6, 3, 2, 1, NULL, 8.00, '2025-07-22 06:45:48', '2025-07-22 06:45:48', 5, NULL), -(404, '2025-07-22', 4, 3, 2, 1, NULL, 8.00, '2025-07-22 06:45:48', '2025-07-22 06:45:48', 5, NULL), -(405, '2025-07-22', 3, 3, 2, 1, NULL, 8.00, '2025-07-22 06:45:48', '2025-07-22 06:45:48', 5, NULL), -(406, '2025-07-22', 2, 4, 3, 2, 1, 8.00, '2025-07-22 06:46:11', '2025-07-22 06:46:11', 5, NULL), -(407, '2025-07-22', 5, 3, 3, 1, NULL, 8.00, '2025-07-22 06:46:11', '2025-07-22 06:46:11', 3, NULL), -(408, '2025-07-22', 1, 3, 3, 1, NULL, 8.00, '2025-07-22 06:46:11', '2025-07-22 06:46:11', 3, NULL), -(409, '2025-07-23', 4, 3, 3, 1, NULL, 8.00, '2025-07-23 06:45:06', '2025-07-23 06:45:06', 5, NULL), -(410, '2025-07-23', 5, 3, 3, 1, NULL, 8.00, '2025-07-23 06:45:28', '2025-07-23 06:45:28', 3, NULL), -(411, '2025-07-23', 1, 3, 3, 1, NULL, 8.00, '2025-07-23 06:45:28', '2025-07-23 06:45:28', 3, NULL), -(412, '2025-07-23', 10, 3, 2, 1, NULL, 8.00, '2025-07-23 06:45:30', '2025-07-23 06:45:30', 5, NULL), -(413, '2025-07-23', 9, 3, 2, 1, NULL, 8.00, '2025-07-23 06:45:30', '2025-07-23 06:45:30', 5, NULL), -(414, '2025-07-23', 7, 3, 2, 1, NULL, 8.00, '2025-07-23 06:45:30', '2025-07-23 06:45:30', 5, NULL), -(415, '2025-07-23', 6, 3, 2, 1, NULL, 8.00, '2025-07-23 06:45:30', '2025-07-23 06:45:30', 5, NULL), -(416, '2025-07-23', 3, 3, 2, 1, NULL, 8.00, '2025-07-23 06:45:30', '2025-07-23 06:45:30', 5, NULL), -(417, '2025-07-23', 2, 3, 2, 1, NULL, 8.00, '2025-07-23 06:45:30', '2025-07-23 06:45:30', 5, NULL), -(418, '2025-07-24', 4, 3, 3, 1, NULL, 8.00, '2025-07-24 06:36:55', '2025-07-24 06:36:55', 5, NULL), -(419, '2025-07-24', 10, 3, 2, 1, NULL, 8.00, '2025-07-24 06:37:18', '2025-07-24 06:37:18', 5, NULL), -(420, '2025-07-24', 9, 3, 2, 1, NULL, 8.00, '2025-07-24 06:37:18', '2025-07-24 06:37:18', 5, NULL), -(421, '2025-07-24', 7, 3, 2, 1, NULL, 8.00, '2025-07-24 06:37:18', '2025-07-24 06:37:18', 5, NULL), -(422, '2025-07-24', 6, 3, 2, 1, NULL, 8.00, '2025-07-24 06:37:18', '2025-07-24 06:37:18', 5, NULL), -(423, '2025-07-24', 3, 3, 2, 1, NULL, 8.00, '2025-07-24 06:37:18', '2025-07-24 06:37:18', 5, NULL), -(424, '2025-07-24', 2, 3, 2, 1, NULL, 8.00, '2025-07-24 06:37:18', '2025-07-24 06:37:18', 5, NULL), -(425, '2025-07-24', 5, 3, 3, 1, NULL, 8.00, '2025-07-24 06:47:04', '2025-07-24 06:47:04', 3, NULL), -(426, '2025-07-24', 1, 3, 3, 1, NULL, 8.00, '2025-07-24 06:47:04', '2025-07-24 06:47:04', 3, NULL), -(427, '2025-07-25', 4, 3, 3, 1, NULL, 8.00, '2025-07-25 06:44:23', '2025-07-25 06:44:23', 5, NULL), -(428, '2025-07-25', 10, 3, 2, 1, NULL, 8.00, '2025-07-25 06:45:15', '2025-07-25 06:45:15', 5, NULL), -(429, '2025-07-25', 9, 3, 2, 1, NULL, 8.00, '2025-07-25 06:45:15', '2025-07-25 06:45:15', 5, NULL), -(430, '2025-07-25', 8, 3, 2, 1, NULL, 8.00, '2025-07-25 06:45:15', '2025-07-25 06:45:15', 5, NULL), -(431, '2025-07-25', 6, 3, 2, 1, NULL, 8.00, '2025-07-25 06:45:15', '2025-07-25 06:45:15', 5, NULL), -(432, '2025-07-25', 3, 3, 2, 1, NULL, 8.00, '2025-07-25 06:45:15', '2025-07-25 06:45:15', 5, NULL), -(433, '2025-07-25', 2, 3, 2, 1, NULL, 8.00, '2025-07-25 06:45:15', '2025-07-25 06:45:15', 5, NULL), -(434, '2025-07-25', 5, 4, 3, 1, NULL, 8.00, '2025-07-25 06:45:18', '2025-07-25 06:45:18', 3, NULL), -(435, '2025-07-25', 7, 4, 3, 1, NULL, 8.00, '2025-07-25 06:45:19', '2025-07-25 06:45:19', 3, NULL), -(436, '2025-07-25', 1, 4, 3, 1, NULL, 8.00, '2025-07-25 06:45:19', '2025-07-25 06:45:19', 3, NULL), -(437, '2025-07-28', 5, 3, 3, 1, NULL, 8.00, '2025-07-28 06:30:39', '2025-07-28 06:30:39', 3, NULL), -(438, '2025-07-28', 4, 3, 3, 1, NULL, 8.00, '2025-07-28 06:30:39', '2025-07-28 06:30:39', 3, NULL), -(439, '2025-07-28', 1, 3, 3, 1, NULL, 8.00, '2025-07-28 06:30:39', '2025-07-28 06:30:39', 3, NULL), -(440, '2025-07-28', 2, 5, 2, 1, NULL, 4.00, '2025-07-28 06:33:08', '2025-07-28 06:33:08', 5, NULL), -(441, '2025-07-28', 2, 3, 2, 1, NULL, 4.00, '2025-07-28 06:33:08', '2025-07-28 06:33:08', 5, NULL), -(442, '2025-07-28', 10, 3, 2, 1, NULL, 8.00, '2025-07-28 06:33:34', '2025-07-28 06:33:34', 5, NULL), -(443, '2025-07-28', 9, 3, 2, 1, NULL, 8.00, '2025-07-28 06:33:34', '2025-07-28 06:33:34', 5, NULL), -(444, '2025-07-28', 8, 3, 2, 1, NULL, 8.00, '2025-07-28 06:33:34', '2025-07-28 06:33:34', 5, NULL), -(445, '2025-07-28', 7, 3, 2, 1, NULL, 8.00, '2025-07-28 06:33:34', '2025-07-28 06:33:34', 5, NULL), -(446, '2025-07-28', 6, 3, 2, 1, NULL, 8.00, '2025-07-28 06:33:34', '2025-07-28 06:33:34', 5, NULL), -(447, '2025-07-28', 3, 3, 2, 1, NULL, 8.00, '2025-07-28 06:33:34', '2025-07-28 06:33:34', 5, NULL), -(448, '2025-07-29', 5, 3, 3, 1, NULL, 8.00, '2025-07-29 06:39:13', '2025-07-29 06:39:13', 3, NULL), -(449, '2025-07-29', 4, 3, 3, 1, NULL, 8.00, '2025-07-29 06:39:13', '2025-07-29 06:39:13', 3, NULL), -(450, '2025-07-29', 1, 3, 3, 1, NULL, 8.00, '2025-07-29 06:39:13', '2025-07-29 06:39:13', 3, NULL), -(451, '2025-07-30', 5, 3, 3, 1, NULL, 8.00, '2025-07-30 06:50:30', '2025-07-30 06:50:30', 3, NULL), -(452, '2025-07-30', 4, 3, 3, 1, NULL, 8.00, '2025-07-30 06:50:30', '2025-07-30 06:50:30', 3, NULL), -(453, '2025-07-30', 1, 3, 3, 1, NULL, 8.00, '2025-07-30 06:50:30', '2025-07-30 06:50:30', 3, NULL), -(454, '2025-07-30', 10, 3, 2, 1, NULL, 8.00, '2025-07-30 06:52:16', '2025-07-30 06:52:16', 5, NULL), -(455, '2025-07-30', 9, 3, 2, 1, NULL, 8.00, '2025-07-30 06:52:16', '2025-07-30 06:52:16', 5, NULL), -(456, '2025-07-30', 8, 3, 2, 1, NULL, 8.00, '2025-07-30 06:52:16', '2025-07-30 06:52:16', 5, NULL), -(457, '2025-07-30', 7, 3, 2, 1, NULL, 8.00, '2025-07-30 06:52:16', '2025-07-30 06:52:16', 5, NULL), -(458, '2025-07-30', 6, 3, 2, 1, NULL, 8.00, '2025-07-30 06:52:16', '2025-07-30 06:52:16', 5, NULL), -(459, '2025-07-30', 3, 3, 2, 1, NULL, 8.00, '2025-07-30 06:52:16', '2025-07-30 06:52:16', 5, NULL), -(460, '2025-07-30', 2, 3, 2, 1, NULL, 8.00, '2025-07-30 06:52:16', '2025-07-30 06:52:16', 5, NULL), -(461, '2025-07-31', 1, 3, 3, 1, NULL, 4.00, '2025-07-31 06:42:56', '2025-07-31 06:42:56', 5, NULL), -(462, '2025-07-31', 4, 3, 3, 1, NULL, 4.00, '2025-07-31 06:43:32', '2025-07-31 06:43:32', 5, NULL), -(463, '2025-07-31', 4, 3, 2, 1, NULL, 4.00, '2025-07-31 06:43:32', '2025-07-31 06:43:32', 5, NULL), -(464, '2025-07-31', 5, 3, 3, 1, NULL, 4.00, '2025-07-31 06:43:32', '2025-07-31 06:43:32', 5, NULL), -(465, '2025-07-31', 5, 3, 2, 1, NULL, 4.00, '2025-07-31 06:43:32', '2025-07-31 06:43:32', 5, NULL), -(466, '2025-07-31', 10, 3, 2, 1, NULL, 8.00, '2025-07-31 06:44:00', '2025-07-31 06:44:00', 5, NULL), -(467, '2025-07-31', 9, 3, 2, 1, NULL, 8.00, '2025-07-31 06:44:00', '2025-07-31 06:44:00', 5, NULL), -(468, '2025-07-31', 8, 3, 2, 1, NULL, 8.00, '2025-07-31 06:44:00', '2025-07-31 06:44:00', 5, NULL), -(469, '2025-07-31', 7, 3, 2, 1, NULL, 8.00, '2025-07-31 06:44:00', '2025-07-31 06:44:00', 5, NULL), -(470, '2025-07-31', 6, 3, 2, 1, NULL, 8.00, '2025-07-31 06:44:00', '2025-07-31 06:44:00', 5, NULL), -(471, '2025-07-31', 3, 3, 2, 1, NULL, 8.00, '2025-07-31 06:44:00', '2025-07-31 06:44:00', 5, NULL), -(472, '2025-07-31', 2, 3, 2, 1, NULL, 8.00, '2025-07-31 06:44:00', '2025-07-31 06:44:00', 5, NULL), -(473, '2025-07-11', 10, 3, 2, 1, NULL, 8.00, '2025-07-31 22:24:47', '2025-07-31 22:24:47', 3, NULL), -(474, '2025-07-11', 5, 3, 2, 1, NULL, 8.00, '2025-07-31 22:24:47', '2025-07-31 22:24:47', 3, NULL), -(475, '2025-07-11', 4, 3, 2, 1, NULL, 8.00, '2025-07-31 22:24:47', '2025-07-31 22:24:47', 3, NULL), -(476, '2025-07-11', 9, 3, 2, 1, NULL, 8.00, '2025-07-31 22:24:47', '2025-07-31 22:24:47', 3, NULL), -(477, '2025-07-11', 8, 3, 2, 1, NULL, 8.00, '2025-07-31 22:24:47', '2025-07-31 22:24:47', 3, NULL), -(478, '2025-07-11', 3, 3, 2, 1, NULL, 8.00, '2025-07-31 22:24:47', '2025-07-31 22:24:47', 3, NULL), -(479, '2025-07-11', 2, 3, 2, 1, NULL, 8.00, '2025-07-31 22:24:47', '2025-07-31 22:24:47', 3, NULL), -(480, '2025-07-11', 7, 3, 2, 1, NULL, 8.00, '2025-07-31 22:24:47', '2025-07-31 22:24:47', 3, NULL), -(481, '2025-07-11', 6, 3, 2, 1, NULL, 8.00, '2025-07-31 22:24:47', '2025-07-31 22:24:47', 3, NULL), -(482, '2025-07-11', 1, 3, 2, 1, NULL, 8.00, '2025-07-31 22:24:47', '2025-07-31 22:24:47', 3, NULL), -(483, '2025-08-01', 10, 3, 2, 1, NULL, 8.00, '2025-08-01 04:57:47', '2025-08-01 04:57:47', 5, NULL), -(484, '2025-08-01', 9, 3, 2, 1, NULL, 8.00, '2025-08-01 04:57:47', '2025-08-01 04:57:47', 5, NULL), -(485, '2025-08-01', 8, 3, 2, 1, NULL, 8.00, '2025-08-01 04:57:47', '2025-08-01 04:57:47', 5, NULL), -(486, '2025-08-01', 7, 3, 2, 1, NULL, 8.00, '2025-08-01 04:57:47', '2025-08-01 04:57:47', 5, NULL), -(487, '2025-08-01', 6, 3, 2, 1, NULL, 8.00, '2025-08-01 04:57:47', '2025-08-01 04:57:47', 5, NULL), -(488, '2025-08-01', 3, 3, 2, 1, NULL, 8.00, '2025-08-01 04:57:47', '2025-08-01 04:57:47', 5, NULL), -(489, '2025-08-01', 2, 3, 2, 1, NULL, 8.00, '2025-08-01 04:57:48', '2025-08-01 04:57:48', 5, NULL), -(490, '2025-08-01', 4, 3, 3, 1, NULL, 4.00, '2025-08-01 05:02:28', '2025-08-01 05:02:28', 3, NULL), -(491, '2025-08-01', 4, 5, 1, 1, NULL, 4.00, '2025-08-01 05:02:28', '2025-08-01 05:02:28', 3, NULL), -(492, '2025-08-01', 5, 3, 3, 1, NULL, 4.00, '2025-08-01 05:02:28', '2025-08-01 05:02:28', 3, NULL), -(493, '2025-08-01', 5, 5, 1, 1, NULL, 4.00, '2025-08-01 05:02:28', '2025-08-01 05:02:28', 3, NULL), -(494, '2025-08-07', 9, 3, 2, 2, 4, 4.00, '2025-08-07 06:42:39', '2025-08-07 06:42:39', 5, NULL), -(495, '2025-08-07', 9, 3, 2, 1, NULL, 4.00, '2025-08-07 06:42:39', '2025-08-07 06:42:39', 5, NULL), -(496, '2025-08-07', 7, 3, 2, 2, 4, 4.00, '2025-08-07 06:42:39', '2025-08-07 06:42:39', 5, NULL), -(497, '2025-08-07', 7, 3, 2, 1, NULL, 4.00, '2025-08-07 06:42:39', '2025-08-07 06:42:39', 5, NULL), -(498, '2025-08-07', 10, 5, 2, 1, NULL, 8.00, '2025-08-07 06:43:14', '2025-08-07 06:43:14', 5, NULL), -(499, '2025-08-07', 4, 5, 2, 1, NULL, 8.00, '2025-08-07 06:43:15', '2025-08-07 06:43:15', 5, NULL), -(500, '2025-08-07', 2, 5, 2, 1, NULL, 8.00, '2025-08-07 06:43:15', '2025-08-07 06:43:15', 5, NULL), -(501, '2025-08-07', 6, 3, 2, 1, NULL, 8.00, '2025-08-07 06:43:39', '2025-08-07 06:43:39', 5, NULL), -(502, '2025-08-07', 3, 3, 2, 1, NULL, 8.00, '2025-08-07 06:43:39', '2025-08-07 06:43:39', 5, NULL), -(503, '2025-08-07', 8, 3, 2, 1, NULL, 8.00, '2025-08-07 06:43:39', '2025-08-07 06:43:39', 5, NULL), -(504, '2025-08-07', 1, 3, 3, 1, NULL, 8.00, '2025-08-07 06:43:52', '2025-08-07 06:43:52', 3, NULL), -(505, '2025-08-08', 1, 3, 3, 1, NULL, 8.00, '2025-08-08 06:45:20', '2025-08-08 06:45:20', 3, NULL), -(506, '2025-08-08', 10, 5, 2, 1, NULL, 8.00, '2025-08-08 06:58:42', '2025-08-08 06:58:42', 5, NULL), -(507, '2025-08-08', 2, 5, 2, 1, NULL, 8.00, '2025-08-08 06:58:42', '2025-08-08 06:58:42', 5, NULL), -(508, '2025-08-08', 9, 3, 2, 1, NULL, 8.00, '2025-08-08 06:59:18', '2025-08-08 06:59:18', 5, NULL), -(509, '2025-08-08', 8, 3, 2, 1, NULL, 8.00, '2025-08-08 06:59:19', '2025-08-08 06:59:19', 5, NULL), -(510, '2025-08-08', 3, 3, 2, 1, NULL, 8.00, '2025-08-08 06:59:19', '2025-08-08 06:59:19', 5, NULL), -(511, '2025-08-08', 4, 3, 2, 1, NULL, 8.00, '2025-08-08 06:59:19', '2025-08-08 06:59:19', 5, NULL), -(512, '2025-08-08', 6, 3, 2, 1, NULL, 8.00, '2025-08-08 06:59:19', '2025-08-08 06:59:19', 5, NULL), -(513, '2025-08-11', 1, 3, 3, 1, NULL, 8.00, '2025-08-11 06:27:37', '2025-08-11 06:27:37', 3, NULL), -(514, '2025-08-11', 1, 3, 3, 1, NULL, 8.00, '2025-08-11 06:27:37', '2025-08-11 06:27:37', 3, NULL), -(515, '2025-08-11', 10, 5, 2, 1, NULL, 8.00, '2025-08-11 06:46:23', '2025-08-11 06:46:23', 5, NULL), -(516, '2025-08-11', 2, 5, 2, 1, NULL, 8.00, '2025-08-11 06:46:23', '2025-08-11 06:46:23', 5, NULL), -(517, '2025-08-11', 8, 3, 2, 1, NULL, 8.00, '2025-08-11 06:46:49', '2025-08-11 06:46:49', 5, NULL), -(518, '2025-08-11', 7, 3, 2, 1, NULL, 8.00, '2025-08-11 06:46:49', '2025-08-11 06:46:49', 5, NULL), -(519, '2025-08-11', 6, 3, 2, 1, NULL, 8.00, '2025-08-11 06:46:50', '2025-08-11 06:46:50', 5, NULL), -(520, '2025-08-11', 5, 3, 2, 1, NULL, 8.00, '2025-08-11 06:46:50', '2025-08-11 06:46:50', 5, NULL), -(521, '2025-08-11', 4, 3, 2, 1, NULL, 8.00, '2025-08-11 06:46:50', '2025-08-11 06:46:50', 5, NULL), -(522, '2025-08-11', 3, 3, 2, 1, NULL, 8.00, '2025-08-11 06:46:50', '2025-08-11 06:46:50', 5, NULL), -(523, '2025-08-12', 10, 3, 2, 1, NULL, 8.00, '2025-08-12 06:47:24', '2025-08-12 06:47:24', 3, NULL), -(524, '2025-08-12', 9, 3, 2, 1, NULL, 8.00, '2025-08-12 06:47:24', '2025-08-12 06:47:24', 3, NULL), -(525, '2025-08-12', 8, 3, 2, 1, NULL, 8.00, '2025-08-12 06:47:24', '2025-08-12 06:47:24', 3, NULL), -(526, '2025-08-12', 7, 3, 2, 1, NULL, 8.00, '2025-08-12 06:47:24', '2025-08-12 06:47:24', 3, NULL), -(527, '2025-08-12', 5, 3, 2, 1, NULL, 8.00, '2025-08-12 06:47:24', '2025-08-12 06:47:24', 3, NULL), -(528, '2025-08-12', 4, 3, 2, 1, NULL, 8.00, '2025-08-12 06:47:24', '2025-08-12 06:47:24', 3, NULL), -(529, '2025-08-12', 3, 3, 2, 1, NULL, 8.00, '2025-08-12 06:47:24', '2025-08-12 06:47:24', 3, NULL), -(530, '2025-08-12', 1, 3, 2, 1, NULL, 8.00, '2025-08-12 06:47:24', '2025-08-12 06:47:24', 3, NULL), -(531, '2025-08-13', 1, 3, 3, 1, NULL, 8.00, '2025-08-13 06:31:32', '2025-08-13 06:31:32', 3, NULL), -(532, '2025-08-13', 2, 3, 2, 1, NULL, 4.00, '2025-08-13 06:36:13', '2025-08-13 06:36:13', 5, NULL); -INSERT INTO `daily_work_reports` (`id`, `report_date`, `worker_id`, `project_id`, `work_type_id`, `work_status_id`, `error_type_id`, `work_hours`, `created_at`, `updated_at`, `created_by`, `updated_by`) VALUES -(533, '2025-08-13', 2, 5, 2, 1, NULL, 4.00, '2025-08-13 06:36:13', '2025-08-13 06:36:13', 5, NULL), -(534, '2025-08-13', 9, 3, 2, 1, NULL, 8.00, '2025-08-13 06:36:48', '2025-08-13 06:36:48', 5, NULL), -(535, '2025-08-13', 8, 3, 2, 1, NULL, 8.00, '2025-08-13 06:36:48', '2025-08-13 06:36:48', 5, NULL), -(536, '2025-08-13', 7, 3, 2, 1, NULL, 8.00, '2025-08-13 06:36:48', '2025-08-13 06:36:48', 5, NULL), -(537, '2025-08-13', 6, 3, 2, 1, NULL, 8.00, '2025-08-13 06:36:48', '2025-08-13 06:36:48', 5, NULL), -(538, '2025-08-13', 5, 3, 2, 1, NULL, 8.00, '2025-08-13 06:36:48', '2025-08-13 06:36:48', 5, NULL), -(539, '2025-08-13', 4, 3, 2, 1, NULL, 8.00, '2025-08-13 06:36:48', '2025-08-13 06:36:48', 5, NULL), -(540, '2025-08-13', 3, 3, 2, 1, NULL, 8.00, '2025-08-13 06:36:48', '2025-08-13 06:36:48', 5, NULL), -(541, '2025-08-13', 10, 5, 2, 1, NULL, 8.00, '2025-08-13 06:37:19', '2025-08-13 06:37:19', 5, NULL), -(542, '2025-08-14', 1, 3, 3, 2, 1, 4.00, '2025-08-14 06:35:27', '2025-08-14 06:35:27', 3, NULL), -(543, '2025-08-14', 1, 3, 3, 1, NULL, 4.00, '2025-08-14 06:35:27', '2025-08-14 06:35:27', 3, NULL), -(544, '2025-08-14', 10, 5, 2, 1, NULL, 4.00, '2025-08-14 06:39:03', '2025-08-14 06:39:03', 5, NULL), -(545, '2025-08-14', 10, 5, 3, 1, NULL, 4.00, '2025-08-14 06:39:03', '2025-08-14 06:39:03', 5, NULL), -(546, '2025-08-14', 2, 5, 2, 1, NULL, 2.00, '2025-08-14 06:39:44', '2025-08-14 06:39:44', 5, NULL), -(547, '2025-08-14', 2, 3, 2, 1, NULL, 6.00, '2025-08-14 06:39:44', '2025-08-14 06:39:44', 5, NULL), -(548, '2025-08-14', 9, 3, 2, 1, NULL, 8.00, '2025-08-14 06:40:10', '2025-08-14 06:40:10', 5, NULL), -(549, '2025-08-14', 8, 3, 2, 1, NULL, 8.00, '2025-08-14 06:40:10', '2025-08-14 06:40:10', 5, NULL), -(550, '2025-08-14', 7, 3, 2, 1, NULL, 8.00, '2025-08-14 06:40:10', '2025-08-14 06:40:10', 5, NULL), -(551, '2025-08-14', 6, 3, 2, 1, NULL, 8.00, '2025-08-14 06:40:10', '2025-08-14 06:40:10', 5, NULL), -(552, '2025-08-14', 5, 3, 2, 1, NULL, 8.00, '2025-08-14 06:40:10', '2025-08-14 06:40:10', 5, NULL), -(553, '2025-08-14', 4, 3, 2, 1, NULL, 8.00, '2025-08-14 06:40:10', '2025-08-14 06:40:10', 5, NULL), -(554, '2025-08-18', 2, 3, 2, 1, NULL, 8.00, '2025-08-18 06:21:36', '2025-08-18 06:21:36', 5, NULL), -(555, '2025-08-18', 8, 3, 2, 1, NULL, 8.00, '2025-08-18 06:21:36', '2025-08-18 06:21:36', 5, NULL), -(556, '2025-08-18', 4, 3, 2, 1, NULL, 8.00, '2025-08-18 06:22:01', '2025-08-18 06:22:01', 5, NULL), -(557, '2025-08-18', 10, 5, 3, 1, NULL, 6.00, '2025-08-18 06:22:53', '2025-08-18 06:22:53', 5, NULL), -(558, '2025-08-18', 10, 3, 2, 1, NULL, 2.00, '2025-08-18 06:22:53', '2025-08-18 06:22:53', 5, NULL), -(559, '2025-08-18', 9, 3, 2, 1, NULL, 4.00, '2025-08-18 06:23:34', '2025-08-18 06:23:34', 5, NULL), -(560, '2025-08-18', 9, 3, 3, 1, NULL, 4.00, '2025-08-18 06:23:34', '2025-08-18 06:23:34', 5, NULL), -(561, '2025-08-18', 5, 3, 3, 2, 1, 4.00, '2025-08-18 06:41:24', '2025-08-18 06:41:24', 3, NULL), -(562, '2025-08-18', 1, 3, 3, 2, 1, 4.00, '2025-08-18 06:41:24', '2025-08-18 06:41:24', 3, NULL), -(563, '2025-08-18', 7, 3, 3, 2, 1, 4.00, '2025-08-18 06:41:24', '2025-08-18 06:41:24', 3, NULL), -(564, '2025-08-18', 7, 3, 3, 1, NULL, 4.00, '2025-08-18 06:43:10', '2025-08-18 06:43:10', 3, NULL), -(565, '2025-08-18', 5, 3, 3, 1, NULL, 4.00, '2025-08-18 06:43:10', '2025-08-18 06:43:10', 3, NULL), -(566, '2025-08-18', 1, 3, 3, 1, NULL, 4.00, '2025-08-18 06:43:10', '2025-08-18 06:43:10', 3, NULL), -(567, '2025-08-18', 6, 3, 3, 1, NULL, 8.00, '2025-08-18 06:43:35', '2025-08-18 06:43:35', 6, NULL), -(568, '2025-08-18', 3, 3, 3, 1, NULL, 8.00, '2025-08-18 06:43:35', '2025-08-18 06:43:35', 6, NULL), -(569, '2025-08-19', 1, 3, 3, 1, NULL, 6.00, '2025-08-19 08:02:49', '2025-08-19 08:02:49', 5, NULL), -(573, '2025-08-19', 9, 3, 3, 1, NULL, 10.00, '2025-08-19 08:03:30', '2025-08-19 08:03:30', 5, NULL), -(574, '2025-08-19', 10, 3, 2, 1, NULL, 10.00, '2025-08-19 08:04:05', '2025-08-19 08:04:05', 5, NULL), -(575, '2025-08-19', 8, 3, 2, 1, NULL, 10.00, '2025-08-19 08:04:05', '2025-08-19 08:04:05', 5, NULL), -(576, '2025-08-19', 5, 3, 2, 1, NULL, 10.00, '2025-08-19 08:04:05', '2025-08-19 08:04:05', 5, NULL), -(577, '2025-08-19', 4, 3, 2, 1, NULL, 10.00, '2025-08-19 08:04:05', '2025-08-19 08:04:05', 5, NULL), -(578, '2025-08-19', 2, 3, 2, 1, NULL, 10.00, '2025-08-19 08:04:05', '2025-08-19 08:04:05', 5, NULL), -(579, '2025-08-19', 3, 3, 3, 1, NULL, 10.00, '2025-08-19 08:36:51', '2025-08-19 08:36:51', 6, NULL), -(580, '2025-08-19', 7, 3, 3, 1, NULL, 10.00, '2025-08-19 08:36:51', '2025-08-19 08:36:51', 6, NULL), -(581, '2025-08-19', 6, 3, 3, 1, NULL, 10.00, '2025-08-19 08:36:51', '2025-08-19 08:36:51', 6, NULL), -(582, '2025-08-20', 2, 3, 2, 1, NULL, 8.00, '2025-08-20 06:19:36', '2025-08-20 06:19:36', 5, NULL), -(583, '2025-08-20', 5, 3, 1, 1, NULL, 2.00, '2025-08-20 06:21:28', '2025-08-20 06:21:28', 5, NULL), -(584, '2025-08-20', 5, 3, 2, 1, NULL, 6.00, '2025-08-20 06:21:28', '2025-08-20 06:21:28', 5, NULL), -(585, '2025-08-20', 4, 3, 1, 1, NULL, 2.00, '2025-08-20 06:21:28', '2025-08-20 06:21:28', 5, NULL), -(586, '2025-08-20', 4, 3, 2, 1, NULL, 6.00, '2025-08-20 06:21:28', '2025-08-20 06:21:28', 5, NULL), -(587, '2025-08-20', 6, 3, 3, 1, NULL, 4.00, '2025-08-20 06:43:46', '2025-08-20 06:43:46', 3, NULL), -(589, '2025-08-20', 9, 3, 3, 1, NULL, 8.00, '2025-08-20 06:44:23', '2025-08-20 06:44:23', 3, NULL), -(590, '2025-08-20', 8, 3, 3, 1, NULL, 8.00, '2025-08-20 06:44:23', '2025-08-20 06:44:23', 3, NULL), -(591, '2025-08-20', 7, 3, 3, 1, NULL, 8.00, '2025-08-20 06:44:24', '2025-08-20 06:44:24', 3, NULL), -(593, '2025-08-20', 1, 3, 3, 1, NULL, 8.00, '2025-08-20 06:44:24', '2025-08-20 06:44:24', 3, NULL), -(594, '2025-08-20', 10, 3, 3, 1, NULL, 8.00, '2025-08-20 06:44:26', '2025-08-20 06:44:26', 6, NULL), -(595, '2025-08-20', 3, 3, 3, 1, NULL, 8.00, '2025-08-20 06:44:26', '2025-08-20 06:44:26', 6, NULL), -(596, '2025-08-21', 7, 3, 3, 1, NULL, 8.00, '2025-08-21 06:30:36', '2025-08-21 06:30:36', 3, NULL), -(597, '2025-08-21', 1, 3, 3, 1, NULL, 8.00, '2025-08-21 06:30:36', '2025-08-21 06:30:36', 3, NULL), -(600, '2025-08-21', 10, 3, 3, 1, NULL, 8.00, '2025-08-21 07:51:23', '2025-08-21 07:51:23', 5, NULL), -(601, '2025-08-21', 10, 3, 3, 1, NULL, 2.00, '2025-08-21 07:51:23', '2025-08-21 07:51:23', 5, NULL), -(602, '2025-08-21', 9, 3, 3, 1, NULL, 8.00, '2025-08-21 07:51:23', '2025-08-21 07:51:23', 5, NULL), -(603, '2025-08-21', 9, 3, 3, 1, NULL, 2.00, '2025-08-21 07:51:23', '2025-08-21 07:51:23', 5, NULL), -(608, '2025-08-21', 2, 3, 2, 1, NULL, 8.00, '2025-08-21 07:54:46', '2025-08-21 07:54:46', 5, NULL), -(609, '2025-08-21', 2, 5, 2, 1, NULL, 2.00, '2025-08-21 07:54:46', '2025-08-21 07:54:46', 5, NULL), -(610, '2025-08-21', 8, 3, 3, 1, NULL, 4.00, '2025-08-21 07:55:25', '2025-08-21 07:55:25', 5, NULL), -(611, '2025-08-21', 8, 3, 2, 1, NULL, 6.00, '2025-08-21 07:55:25', '2025-08-21 07:55:25', 5, NULL), -(612, '2025-08-21', 6, 3, 3, 1, NULL, 10.00, '2025-08-21 08:24:50', '2025-08-21 08:24:50', 6, NULL), -(613, '2025-08-21', 3, 3, 3, 1, NULL, 10.00, '2025-08-21 08:24:50', '2025-08-21 08:24:50', 6, NULL), -(614, '2025-08-22', 2, 3, 2, 1, NULL, 8.00, '2025-08-22 06:21:15', '2025-08-22 06:21:15', 5, NULL), -(615, '2025-08-22', 8, 3, 2, 1, NULL, 4.00, '2025-08-22 06:23:12', '2025-08-22 06:23:12', 5, NULL), -(616, '2025-08-22', 8, 3, 3, 1, NULL, 4.00, '2025-08-22 06:23:12', '2025-08-22 06:23:12', 5, NULL), -(617, '2025-08-22', 5, 3, 3, 1, NULL, 8.00, '2025-08-22 06:23:55', '2025-08-22 06:23:55', 5, NULL), -(618, '2025-08-22', 6, 3, 2, 1, NULL, 4.00, '2025-08-22 06:27:43', '2025-08-22 06:27:43', 3, NULL), -(619, '2025-08-22', 10, 3, 3, 1, NULL, 8.00, '2025-08-22 06:28:15', '2025-08-22 06:28:15', 3, NULL), -(620, '2025-08-22', 9, 3, 3, 1, NULL, 8.00, '2025-08-22 06:28:15', '2025-08-22 06:28:15', 3, NULL), -(621, '2025-08-22', 7, 3, 3, 1, NULL, 8.00, '2025-08-22 06:28:15', '2025-08-22 06:28:15', 3, NULL), -(622, '2025-08-22', 4, 3, 3, 1, NULL, 8.00, '2025-08-22 06:28:15', '2025-08-22 06:28:15', 3, NULL), -(623, '2025-08-22', 3, 3, 3, 1, NULL, 8.00, '2025-08-22 06:28:15', '2025-08-22 06:28:15', 3, NULL), -(624, '2025-08-22', 1, 3, 3, 1, NULL, 8.00, '2025-08-22 06:28:15', '2025-08-22 06:28:15', 3, NULL), -(625, '2025-08-23', 4, 3, 2, 1, NULL, 2.00, '2025-08-23 04:57:02', '2025-08-23 04:57:02', 5, NULL), -(626, '2025-08-23', 4, 3, 3, 1, NULL, 6.00, '2025-08-23 04:57:02', '2025-08-23 04:57:02', 5, NULL), -(627, '2025-08-23', 2, 3, 2, 1, NULL, 8.00, '2025-08-23 04:57:25', '2025-08-23 04:57:25', 5, NULL), -(628, '2025-08-23', 10, 3, 3, 1, NULL, 8.00, '2025-08-23 04:57:54', '2025-08-23 04:57:54', 5, NULL), -(629, '2025-08-23', 9, 3, 3, 1, NULL, 8.00, '2025-08-23 04:57:54', '2025-08-23 04:57:54', 5, NULL), -(630, '2025-08-23', 8, 3, 3, 1, NULL, 8.00, '2025-08-23 04:57:54', '2025-08-23 04:57:54', 5, NULL), -(631, '2025-08-23', 6, 3, 3, 1, NULL, 8.00, '2025-08-23 04:57:54', '2025-08-23 04:57:54', 5, NULL), -(632, '2025-08-23', 5, 3, 3, 1, NULL, 8.00, '2025-08-23 04:57:54', '2025-08-23 04:57:54', 5, NULL), -(633, '2025-08-23', 3, 3, 3, 1, NULL, 8.00, '2025-08-23 04:57:54', '2025-08-23 04:57:54', 5, NULL), -(634, '2025-08-23', 1, 3, 3, 1, NULL, 8.00, '2025-08-23 04:57:54', '2025-08-23 04:57:54', 5, NULL), -(635, '2025-08-25', 10, 3, 3, 1, NULL, 8.00, '2025-08-25 06:48:34', '2025-08-25 06:48:34', 3, NULL), -(636, '2025-08-25', 9, 3, 3, 1, NULL, 8.00, '2025-08-25 06:48:34', '2025-08-25 06:48:34', 3, NULL), -(637, '2025-08-25', 8, 3, 3, 1, NULL, 8.00, '2025-08-25 06:48:34', '2025-08-25 06:48:34', 3, NULL), -(638, '2025-08-25', 7, 3, 3, 1, NULL, 8.00, '2025-08-25 06:48:34', '2025-08-25 06:48:34', 3, NULL), -(640, '2025-08-25', 5, 3, 3, 1, NULL, 8.00, '2025-08-25 06:48:34', '2025-08-25 06:48:34', 3, NULL), -(641, '2025-08-25', 4, 3, 3, 1, NULL, 8.00, '2025-08-25 06:48:34', '2025-08-25 06:48:34', 3, NULL), -(643, '2025-08-25', 2, 3, 3, 1, NULL, 8.00, '2025-08-25 06:48:34', '2025-08-25 06:48:34', 3, NULL), -(644, '2025-08-25', 1, 3, 3, 1, NULL, 8.00, '2025-08-25 06:48:34', '2025-08-25 06:48:34', 3, NULL), -(645, '2025-08-25', 6, 3, 3, 1, NULL, 8.00, '2025-08-25 06:49:16', '2025-08-25 06:49:16', 6, NULL), -(646, '2025-08-25', 3, 3, 3, 1, NULL, 8.00, '2025-08-25 06:49:17', '2025-08-25 06:49:17', 6, NULL), -(647, '2025-08-26', 4, 8, 3, 1, NULL, 8.00, '2025-08-26 07:28:03', '2025-08-26 07:28:03', 5, NULL), -(648, '2025-08-26', 4, 3, 3, 1, NULL, 2.00, '2025-08-26 07:28:03', '2025-08-26 07:28:03', 5, NULL), -(649, '2025-08-26', 2, 8, 3, 1, NULL, 10.00, '2025-08-26 07:28:35', '2025-08-26 07:28:35', 5, NULL), -(651, '2025-08-26', 9, 3, 3, 1, NULL, 10.00, '2025-08-26 07:29:02', '2025-08-26 07:29:02', 5, NULL), -(652, '2025-08-26', 8, 3, 3, 1, NULL, 10.00, '2025-08-26 07:29:02', '2025-08-26 07:29:02', 5, NULL), -(653, '2025-08-26', 7, 3, 3, 1, NULL, 10.00, '2025-08-26 07:29:02', '2025-08-26 07:29:02', 5, NULL), -(655, '2025-08-26', 5, 3, 3, 1, NULL, 10.00, '2025-08-26 07:29:02', '2025-08-26 07:29:02', 5, NULL), -(657, '2025-08-26', 1, 3, 3, 1, NULL, 10.00, '2025-08-26 07:29:03', '2025-08-26 07:29:03', 5, NULL), -(658, '2025-08-26', 6, 3, 3, 1, NULL, 10.00, '2025-08-26 08:22:12', '2025-08-26 08:22:12', 6, NULL), -(659, '2025-08-26', 10, 3, 3, 1, NULL, 10.00, '2025-08-26 08:22:12', '2025-08-26 08:22:12', 6, NULL), -(660, '2025-08-26', 3, 3, 3, 1, NULL, 10.00, '2025-08-26 08:22:12', '2025-08-26 08:22:12', 6, NULL), -(661, '2025-08-27', 10, 3, 3, 2, 5, 8.00, '2025-08-27 06:44:47', '2025-08-27 06:44:47', 3, NULL), -(662, '2025-08-27', 9, 3, 3, 2, 5, 8.00, '2025-08-27 06:44:47', '2025-08-27 06:44:47', 3, NULL), -(663, '2025-08-27', 7, 3, 3, 2, 5, 8.00, '2025-08-27 06:44:47', '2025-08-27 06:44:47', 3, NULL), -(664, '2025-08-27', 6, 3, 3, 2, 5, 8.00, '2025-08-27 06:44:47', '2025-08-27 06:44:47', 3, NULL), -(665, '2025-08-27', 5, 3, 3, 2, 5, 8.00, '2025-08-27 06:44:47', '2025-08-27 06:44:47', 3, NULL), -(666, '2025-08-27', 4, 3, 3, 2, 5, 8.00, '2025-08-27 06:44:47', '2025-08-27 06:44:47', 3, NULL), -(667, '2025-08-27', 3, 3, 3, 2, 5, 8.00, '2025-08-27 06:44:47', '2025-08-27 06:44:47', 3, NULL), -(668, '2025-08-27', 1, 3, 3, 2, 5, 8.00, '2025-08-27 06:44:48', '2025-08-27 06:44:48', 3, NULL), -(669, '2025-08-27', 2, 3, 3, 2, 1, 2.00, '2025-08-27 06:45:32', '2025-08-27 06:45:32', 5, NULL), -(670, '2025-08-27', 2, 8, 2, 1, NULL, 6.00, '2025-08-27 06:45:32', '2025-08-27 06:45:32', 5, NULL), -(671, '2025-08-27', 8, 3, 3, 2, 1, 2.00, '2025-08-27 06:45:32', '2025-08-27 06:45:32', 5, NULL), -(672, '2025-08-27', 8, 8, 2, 1, NULL, 6.00, '2025-08-27 06:45:32', '2025-08-27 06:45:32', 5, NULL), -(673, '2025-08-28', 10, 3, 3, 1, NULL, 6.00, '2025-08-28 08:31:42', '2025-08-28 08:31:42', 6, NULL), -(674, '2025-08-28', 10, 3, 3, 2, 1, 4.00, '2025-08-28 08:31:42', '2025-08-28 08:31:42', 6, NULL), -(675, '2025-08-28', 5, 3, 3, 1, NULL, 6.00, '2025-08-28 08:31:42', '2025-08-28 08:31:42', 6, NULL), -(676, '2025-08-28', 5, 3, 3, 2, 1, 4.00, '2025-08-28 08:31:42', '2025-08-28 08:31:42', 6, NULL), -(677, '2025-08-28', 6, 3, 3, 1, NULL, 6.00, '2025-08-28 08:31:42', '2025-08-28 08:31:42', 6, NULL), -(678, '2025-08-28', 6, 3, 3, 2, 1, 4.00, '2025-08-28 08:31:42', '2025-08-28 08:31:42', 6, NULL), -(679, '2025-08-28', 3, 3, 3, 1, NULL, 6.00, '2025-08-28 08:31:42', '2025-08-28 08:31:42', 6, NULL), -(680, '2025-08-28', 3, 3, 3, 2, 1, 4.00, '2025-08-28 08:31:42', '2025-08-28 08:31:42', 6, NULL), -(681, '2025-08-28', 4, 3, 3, 1, NULL, 4.00, '2025-08-28 08:37:46', '2025-08-28 08:37:46', 5, NULL), -(682, '2025-08-28', 4, 5, 3, 1, NULL, 4.00, '2025-08-28 08:37:46', '2025-08-28 08:37:46', 5, NULL), -(683, '2025-08-28', 8, 8, 2, 1, NULL, 4.00, '2025-08-28 08:38:15', '2025-08-28 08:38:15', 5, NULL), -(684, '2025-08-28', 8, 5, 3, 1, NULL, 4.00, '2025-08-28 08:38:15', '2025-08-28 08:38:15', 5, NULL), -(685, '2025-08-28', 2, 3, 3, 2, 1, 2.00, '2025-08-28 08:38:50', '2025-08-28 08:38:50', 5, NULL), -(686, '2025-08-28', 2, 5, 3, 1, NULL, 6.00, '2025-08-28 08:38:50', '2025-08-28 08:38:50', 5, NULL), -(687, '2025-08-28', 1, 3, 3, 2, 1, 8.00, '2025-08-28 08:39:24', '2025-08-28 08:39:24', 5, NULL), -(689, '2025-08-28', 9, 3, 3, 2, 4, 8.00, '2025-08-28 08:40:00', '2025-08-28 08:40:00', 5, NULL), -(690, '2025-08-28', 7, 3, 3, 2, 4, 8.00, '2025-08-28 08:40:00', '2025-08-28 08:40:00', 5, NULL), -(694, '2025-08-28', 4, 5, 3, 1, NULL, 2.00, '2025-08-28 08:44:56', '2025-08-28 08:44:56', 5, NULL), -(695, '2025-08-28', 8, 5, 3, 1, NULL, 2.00, '2025-08-28 08:44:56', '2025-08-28 08:44:56', 5, NULL), -(696, '2025-08-28', 2, 5, 3, 1, NULL, 2.00, '2025-08-28 08:44:56', '2025-08-28 08:44:56', 5, NULL), -(698, '2025-08-28', 9, 3, 3, 1, NULL, 2.00, '2025-08-28 08:45:19', '2025-08-28 08:45:19', 5, NULL), -(699, '2025-08-28', 7, 3, 3, 1, NULL, 2.00, '2025-08-28 08:45:19', '2025-08-28 08:45:19', 5, NULL), -(703, '2025-08-29', 10, 3, 3, 2, 5, 8.00, '2025-08-29 06:47:02', '2025-08-29 06:47:02', 3, NULL), -(704, '2025-08-29', 9, 3, 3, 2, 5, 8.00, '2025-08-29 06:47:02', '2025-08-29 06:47:02', 3, NULL), -(706, '2025-08-29', 7, 3, 3, 2, 5, 8.00, '2025-08-29 06:47:02', '2025-08-29 06:47:02', 3, NULL), -(710, '2025-08-29', 1, 3, 3, 2, 5, 8.00, '2025-08-29 06:47:02', '2025-08-29 06:47:02', 3, NULL), -(713, '2025-08-29', 5, 3, 3, 1, NULL, 6.00, '2025-08-29 06:47:35', '2025-08-29 06:47:35', 6, NULL), -(714, '2025-08-29', 5, 3, 3, 2, 1, 2.00, '2025-08-29 06:47:35', '2025-08-29 06:47:35', 6, NULL), -(715, '2025-08-29', 3, 3, 3, 1, NULL, 6.00, '2025-08-29 06:47:35', '2025-08-29 06:47:35', 6, NULL), -(716, '2025-08-29', 3, 3, 3, 2, 1, 2.00, '2025-08-29 06:47:35', '2025-08-29 06:47:35', 6, NULL), -(717, '2025-08-29', 6, 3, 3, 1, NULL, 6.00, '2025-08-29 06:47:35', '2025-08-29 06:47:35', 6, NULL), -(718, '2025-08-29', 6, 3, 3, 2, 1, 2.00, '2025-08-29 06:47:35', '2025-08-29 06:47:35', 6, NULL), -(719, '2025-08-29', 8, 5, 3, 1, NULL, 8.00, '2025-08-29 21:55:56', '2025-08-29 21:55:56', 5, NULL), -(720, '2025-08-29', 4, 5, 3, 1, NULL, 8.00, '2025-08-29 21:55:56', '2025-08-29 21:55:56', 5, NULL), -(721, '2025-08-29', 2, 5, 3, 1, NULL, 8.00, '2025-08-29 21:55:56', '2025-08-29 21:55:56', 5, NULL), -(722, '2025-08-30', 2, 5, 3, 1, NULL, 8.00, '2025-08-30 05:12:03', '2025-08-30 05:12:03', 5, NULL), -(723, '2025-08-30', 8, 5, 3, 1, NULL, 8.00, '2025-08-30 05:12:03', '2025-08-30 05:12:03', 5, NULL), -(724, '2025-08-30', 4, 5, 3, 1, NULL, 8.00, '2025-08-30 05:12:03', '2025-08-30 05:12:03', 5, NULL), -(725, '2025-08-30', 10, 3, 3, 2, 1, 8.00, '2025-08-30 05:36:49', '2025-08-30 05:36:49', 3, NULL), -(726, '2025-08-30', 9, 3, 3, 2, 1, 8.00, '2025-08-30 05:36:49', '2025-08-30 05:36:49', 3, NULL), -(727, '2025-08-30', 7, 3, 3, 2, 1, 8.00, '2025-08-30 05:36:49', '2025-08-30 05:36:49', 3, NULL), -(728, '2025-08-30', 6, 3, 3, 2, 1, 8.00, '2025-08-30 05:36:49', '2025-08-30 05:36:49', 3, NULL), -(729, '2025-08-30', 5, 3, 3, 2, 1, 8.00, '2025-08-30 05:36:49', '2025-08-30 05:36:49', 3, NULL), -(730, '2025-08-30', 3, 3, 3, 2, 1, 8.00, '2025-08-30 05:36:49', '2025-08-30 05:36:49', 3, NULL), -(731, '2025-08-30', 1, 3, 3, 2, 1, 8.00, '2025-08-30 05:36:49', '2025-08-30 05:36:49', 3, NULL), -(732, '2025-09-01', 7, 3, 3, 1, NULL, 8.00, '2025-09-01 06:18:28', '2025-09-01 06:18:28', 3, NULL), -(733, '2025-09-01', 9, 3, 3, 1, NULL, 8.00, '2025-09-01 06:18:28', '2025-09-01 06:18:28', 3, NULL), -(734, '2025-09-01', 10, 3, 3, 2, 5, 4.00, '2025-09-01 06:19:11', '2025-09-01 06:19:11', 3, NULL), -(735, '2025-09-01', 3, 3, 3, 2, 5, 4.00, '2025-09-01 06:19:11', '2025-09-01 06:19:11', 3, NULL), -(736, '2025-09-01', 1, 3, 3, 2, 5, 4.00, '2025-09-01 06:19:11', '2025-09-01 06:19:11', 3, NULL), -(737, '2025-09-01', 10, 3, 3, 1, NULL, 4.00, '2025-09-01 06:19:35', '2025-09-01 06:19:35', 3, NULL), -(738, '2025-09-01', 3, 3, 3, 1, NULL, 4.00, '2025-09-01 06:19:35', '2025-09-01 06:19:35', 3, NULL), -(739, '2025-09-01', 1, 3, 3, 1, NULL, 4.00, '2025-09-01 06:19:35', '2025-09-01 06:19:35', 3, NULL), -(740, '2025-09-01', 5, 3, 3, 2, 1, 8.00, '2025-09-01 06:20:03', '2025-09-01 06:20:03', 3, NULL), -(741, '2025-08-21', 4, 3, 3, 1, NULL, 10.00, '2025-09-01 23:18:03', '2025-09-01 23:18:03', 3, NULL), -(742, '2025-08-21', 5, 3, 3, 1, NULL, 10.00, '2025-09-01 23:18:03', '2025-09-01 23:18:03', 3, NULL), -(745, '2025-09-02', 10, 3, 3, 2, 1, 6.00, '2025-09-02 07:36:04', '2025-09-02 07:36:04', 3, NULL), -(746, '2025-09-02', 9, 3, 3, 2, 1, 6.00, '2025-09-02 07:36:04', '2025-09-02 07:36:04', 3, NULL), -(747, '2025-09-02', 6, 3, 3, 2, 1, 6.00, '2025-09-02 07:36:04', '2025-09-02 07:36:04', 3, NULL), -(748, '2025-09-02', 5, 3, 3, 2, 1, 6.00, '2025-09-02 07:36:04', '2025-09-02 07:36:04', 3, NULL), -(749, '2025-09-02', 3, 3, 3, 2, 1, 6.00, '2025-09-02 07:36:04', '2025-09-02 07:36:04', 3, NULL), -(750, '2025-09-02', 1, 3, 3, 2, 1, 6.00, '2025-09-02 07:36:04', '2025-09-02 07:36:04', 3, NULL), -(751, '2025-09-02', 10, 3, 3, 1, NULL, 4.00, '2025-09-02 07:36:31', '2025-09-02 07:36:31', 3, NULL), -(752, '2025-09-02', 9, 3, 3, 1, NULL, 4.00, '2025-09-02 07:36:31', '2025-09-02 07:36:31', 3, NULL), -(753, '2025-09-02', 6, 3, 3, 1, NULL, 4.00, '2025-09-02 07:36:31', '2025-09-02 07:36:31', 3, NULL), -(754, '2025-09-02', 5, 3, 3, 1, NULL, 4.00, '2025-09-02 07:36:31', '2025-09-02 07:36:31', 3, NULL), -(755, '2025-09-02', 3, 3, 3, 1, NULL, 4.00, '2025-09-02 07:36:31', '2025-09-02 07:36:31', 3, NULL), -(756, '2025-09-02', 1, 3, 3, 1, NULL, 4.00, '2025-09-02 07:36:31', '2025-09-02 07:36:31', 3, NULL), -(757, '2025-09-02', 8, 3, 3, 1, NULL, 10.00, '2025-09-02 07:37:19', '2025-09-02 07:37:19', 3, NULL), -(758, '2025-09-02', 7, 3, 3, 1, NULL, 10.00, '2025-09-02 07:37:19', '2025-09-02 07:37:19', 3, NULL), -(759, '2025-09-02', 2, 5, 3, 1, NULL, 8.00, '2025-09-02 08:16:14', '2025-09-02 08:16:14', 5, NULL), -(760, '2025-09-02', 2, 5, 3, 1, NULL, 2.00, '2025-09-02 08:16:14', '2025-09-02 08:16:14', 5, NULL), -(761, '2025-09-02', 4, 5, 3, 1, NULL, 8.00, '2025-09-02 08:16:14', '2025-09-02 08:16:14', 5, NULL), -(762, '2025-09-02', 4, 5, 3, 1, NULL, 2.00, '2025-09-02 08:16:14', '2025-09-02 08:16:14', 5, NULL), -(763, '2025-09-03', 10, 3, 3, 1, NULL, 8.00, '2025-09-03 06:34:47', '2025-09-03 06:34:47', 3, NULL), -(764, '2025-09-03', 9, 3, 3, 1, NULL, 8.00, '2025-09-03 06:34:47', '2025-09-03 06:34:47', 3, NULL), -(765, '2025-09-03', 8, 3, 3, 1, NULL, 8.00, '2025-09-03 06:34:48', '2025-09-03 06:34:48', 3, NULL), -(766, '2025-09-03', 7, 3, 3, 1, NULL, 8.00, '2025-09-03 06:34:48', '2025-09-03 06:34:48', 3, NULL), -(767, '2025-09-03', 6, 3, 3, 1, NULL, 8.00, '2025-09-03 06:34:48', '2025-09-03 06:34:48', 3, NULL), -(768, '2025-09-03', 5, 3, 3, 1, NULL, 8.00, '2025-09-03 06:34:48', '2025-09-03 06:34:48', 3, NULL), -(769, '2025-09-03', 3, 3, 3, 1, NULL, 8.00, '2025-09-03 06:34:48', '2025-09-03 06:34:48', 3, NULL), -(770, '2025-09-03', 1, 3, 3, 1, NULL, 8.00, '2025-09-03 06:34:48', '2025-09-03 06:34:48', 3, NULL), -(771, '2025-09-03', 2, 5, 3, 1, NULL, 8.00, '2025-09-03 06:44:18', '2025-09-03 06:44:18', 5, NULL), -(772, '2025-09-04', 10, 3, 3, 1, NULL, 8.00, '2025-09-04 06:41:32', '2025-09-04 06:41:32', 6, NULL), -(773, '2025-09-04', 5, 3, 3, 1, NULL, 8.00, '2025-09-04 06:41:32', '2025-09-04 06:41:32', 6, NULL), -(774, '2025-09-04', 9, 3, 3, 1, NULL, 8.00, '2025-09-04 06:41:32', '2025-09-04 06:41:32', 6, NULL), -(775, '2025-09-04', 8, 3, 3, 1, NULL, 8.00, '2025-09-04 06:41:32', '2025-09-04 06:41:32', 6, NULL), -(776, '2025-09-04', 3, 3, 3, 1, NULL, 8.00, '2025-09-04 06:41:33', '2025-09-04 06:41:33', 6, NULL), -(777, '2025-09-04', 7, 3, 3, 1, NULL, 8.00, '2025-09-04 06:41:33', '2025-09-04 06:41:33', 6, NULL), -(778, '2025-09-04', 1, 3, 3, 1, NULL, 8.00, '2025-09-04 06:41:33', '2025-09-04 06:41:33', 6, NULL), -(779, '2025-09-04', 6, 3, 3, 1, NULL, 8.00, '2025-09-04 06:41:33', '2025-09-04 06:41:33', 6, NULL), -(780, '2025-09-04', 2, 5, 3, 1, NULL, 8.00, '2025-09-04 06:48:34', '2025-09-04 06:48:34', 5, NULL), -(781, '2025-09-04', 4, 5, 3, 1, NULL, 8.00, '2025-09-04 06:48:34', '2025-09-04 06:48:34', 5, NULL), -(782, '2025-09-05', 10, 3, 3, 1, NULL, 8.00, '2025-09-05 06:39:30', '2025-09-05 06:39:30', 3, NULL), -(783, '2025-09-05', 9, 3, 3, 1, NULL, 8.00, '2025-09-05 06:39:30', '2025-09-05 06:39:30', 3, NULL), -(784, '2025-09-05', 7, 3, 3, 1, NULL, 8.00, '2025-09-05 06:39:30', '2025-09-05 06:39:30', 3, NULL), -(785, '2025-09-05', 6, 3, 3, 1, NULL, 8.00, '2025-09-05 06:39:31', '2025-09-05 06:39:31', 3, NULL), -(786, '2025-09-05', 5, 3, 3, 1, NULL, 8.00, '2025-09-05 06:39:31', '2025-09-05 06:39:31', 3, NULL), -(787, '2025-09-05', 3, 3, 3, 1, NULL, 8.00, '2025-09-05 06:39:31', '2025-09-05 06:39:31', 3, NULL), -(788, '2025-09-05', 1, 3, 3, 1, NULL, 8.00, '2025-09-05 06:39:31', '2025-09-05 06:39:31', 3, NULL), -(789, '2025-09-05', 2, 5, 3, 1, NULL, 8.00, '2025-09-05 22:09:55', '2025-09-05 22:09:55', 5, NULL), -(790, '2025-09-05', 8, 5, 3, 1, NULL, 8.00, '2025-09-05 22:09:55', '2025-09-05 22:09:55', 5, NULL), -(791, '2025-09-05', 4, 5, 3, 1, NULL, 8.00, '2025-09-05 22:09:55', '2025-09-05 22:09:55', 5, NULL), -(792, '2025-09-06', 8, 10, 3, 1, NULL, 8.00, '2025-09-06 04:21:10', '2025-09-06 04:21:10', 5, NULL), -(793, '2025-09-06', 4, 10, 3, 1, NULL, 8.00, '2025-09-06 04:21:10', '2025-09-06 04:21:10', 5, NULL), -(794, '2025-09-06', 2, 10, 3, 1, NULL, 8.00, '2025-09-06 04:21:10', '2025-09-06 04:21:10', 5, NULL), -(795, '2025-09-06', 10, 3, 3, 1, NULL, 8.00, '2025-09-06 05:28:18', '2025-09-06 05:28:18', 3, NULL), -(796, '2025-09-06', 9, 3, 3, 1, NULL, 8.00, '2025-09-06 05:28:18', '2025-09-06 05:28:18', 3, NULL), -(797, '2025-09-06', 7, 3, 3, 1, NULL, 8.00, '2025-09-06 05:28:18', '2025-09-06 05:28:18', 3, NULL), -(798, '2025-09-06', 6, 3, 3, 1, NULL, 8.00, '2025-09-06 05:28:19', '2025-09-06 05:28:19', 3, NULL), -(799, '2025-09-06', 5, 3, 3, 1, NULL, 8.00, '2025-09-06 05:28:19', '2025-09-06 05:28:19', 3, NULL), -(800, '2025-09-06', 3, 3, 3, 1, NULL, 8.00, '2025-09-06 05:28:19', '2025-09-06 05:28:19', 3, NULL), -(801, '2025-09-06', 1, 3, 3, 1, NULL, 8.00, '2025-09-06 05:28:19', '2025-09-06 05:28:19', 3, NULL), -(802, '2025-09-08', 10, 3, 3, 1, NULL, 8.00, '2025-09-08 06:15:43', '2025-09-08 06:15:43', 3, NULL), -(803, '2025-09-08', 9, 3, 3, 1, NULL, 8.00, '2025-09-08 06:15:43', '2025-09-08 06:15:43', 3, NULL), -(804, '2025-09-08', 7, 3, 3, 1, NULL, 8.00, '2025-09-08 06:15:43', '2025-09-08 06:15:43', 3, NULL), -(805, '2025-09-08', 6, 3, 3, 1, NULL, 8.00, '2025-09-08 06:15:43', '2025-09-08 06:15:43', 3, NULL), -(806, '2025-09-08', 5, 3, 3, 1, NULL, 8.00, '2025-09-08 06:15:43', '2025-09-08 06:15:43', 3, NULL), -(807, '2025-09-08', 3, 3, 3, 1, NULL, 8.00, '2025-09-08 06:15:43', '2025-09-08 06:15:43', 3, NULL), -(808, '2025-09-08', 1, 3, 3, 1, NULL, 8.00, '2025-09-08 06:15:43', '2025-09-08 06:15:43', 3, NULL), -(809, '2025-09-08', 8, 5, 3, 1, NULL, 8.00, '2025-09-08 06:47:37', '2025-09-08 06:47:37', 5, NULL), -(810, '2025-09-08', 4, 5, 3, 1, NULL, 8.00, '2025-09-08 06:47:37', '2025-09-08 06:47:37', 5, NULL), -(811, '2025-09-08', 2, 5, 3, 1, NULL, 8.00, '2025-09-08 06:47:37', '2025-09-08 06:47:37', 5, NULL), -(812, '2025-09-09', 10, 3, 3, 1, NULL, 8.00, '2025-09-09 06:03:27', '2025-09-09 06:03:27', 3, NULL), -(813, '2025-09-09', 9, 3, 3, 1, NULL, 8.00, '2025-09-09 06:03:27', '2025-09-09 06:03:27', 3, NULL), -(814, '2025-09-09', 7, 3, 3, 1, NULL, 8.00, '2025-09-09 06:03:27', '2025-09-09 06:03:27', 3, NULL), -(815, '2025-09-09', 6, 3, 3, 1, NULL, 8.00, '2025-09-09 06:03:27', '2025-09-09 06:03:27', 3, NULL), -(816, '2025-09-09', 5, 3, 3, 1, NULL, 8.00, '2025-09-09 06:03:27', '2025-09-09 06:03:27', 3, NULL), -(817, '2025-09-09', 3, 3, 3, 1, NULL, 8.00, '2025-09-09 06:03:27', '2025-09-09 06:03:27', 3, NULL), -(818, '2025-09-09', 1, 3, 3, 1, NULL, 8.00, '2025-09-09 06:03:27', '2025-09-09 06:03:27', 3, NULL), -(819, '2025-09-09', 8, 5, 3, 1, NULL, 8.00, '2025-09-09 06:44:29', '2025-09-09 06:44:29', 5, NULL), -(820, '2025-09-09', 4, 5, 3, 1, NULL, 8.00, '2025-09-09 06:44:29', '2025-09-09 06:44:29', 5, NULL), -(821, '2025-09-09', 2, 5, 3, 1, NULL, 8.00, '2025-09-09 06:44:29', '2025-09-09 06:44:29', 5, NULL), -(822, '2025-09-10', 10, 3, 3, 1, NULL, 8.00, '2025-09-10 06:27:52', '2025-09-10 06:27:52', 3, NULL), -(823, '2025-09-10', 9, 3, 3, 1, NULL, 8.00, '2025-09-10 06:27:52', '2025-09-10 06:27:52', 3, NULL), -(824, '2025-09-10', 7, 3, 3, 1, NULL, 8.00, '2025-09-10 06:27:52', '2025-09-10 06:27:52', 3, NULL), -(825, '2025-09-10', 6, 3, 3, 1, NULL, 8.00, '2025-09-10 06:27:52', '2025-09-10 06:27:52', 3, NULL), -(826, '2025-09-10', 5, 3, 3, 1, NULL, 8.00, '2025-09-10 06:27:52', '2025-09-10 06:27:52', 3, NULL), -(827, '2025-09-10', 3, 3, 3, 1, NULL, 8.00, '2025-09-10 06:27:52', '2025-09-10 06:27:52', 3, NULL), -(828, '2025-09-10', 1, 3, 3, 1, NULL, 8.00, '2025-09-10 06:27:52', '2025-09-10 06:27:52', 3, NULL), -(829, '2025-09-10', 8, 5, 3, 1, NULL, 8.00, '2025-09-10 06:48:43', '2025-09-10 06:48:43', 5, NULL), -(830, '2025-09-10', 4, 5, 3, 1, NULL, 8.00, '2025-09-10 06:48:43', '2025-09-10 06:48:43', 5, NULL), -(831, '2025-09-10', 2, 5, 3, 1, NULL, 8.00, '2025-09-10 06:48:43', '2025-09-10 06:48:43', 5, NULL), -(832, '2025-09-11', 2, 5, 3, 1, NULL, 2.00, '2025-09-11 06:37:11', '2025-09-11 06:37:11', 5, NULL), -(833, '2025-09-11', 2, 8, 3, 1, NULL, 6.00, '2025-09-11 06:37:11', '2025-09-11 06:37:11', 5, NULL), -(834, '2025-09-11', 4, 5, 3, 1, NULL, 2.00, '2025-09-11 06:38:24', '2025-09-11 06:38:24', 5, NULL), -(835, '2025-09-11', 4, 8, 3, 1, NULL, 2.00, '2025-09-11 06:38:24', '2025-09-11 06:38:24', 5, NULL), -(836, '2025-09-11', 4, 3, 3, 1, NULL, 4.00, '2025-09-11 06:38:24', '2025-09-11 06:38:24', 5, NULL), -(838, '2025-09-11', 1, 3, 1, 1, NULL, 4.00, '2025-09-11 06:40:48', '2025-09-11 06:40:48', 5, NULL), -(840, '2025-09-11', 5, 3, 2, 1, NULL, 8.00, '2025-09-11 06:41:47', '2025-09-11 06:41:47', 6, NULL), -(841, '2025-09-11', 8, 3, 2, 1, NULL, 8.00, '2025-09-11 06:41:47', '2025-09-11 06:41:47', 6, NULL), -(842, '2025-09-11', 3, 3, 2, 1, NULL, 8.00, '2025-09-11 06:41:47', '2025-09-11 06:41:47', 6, NULL), -(843, '2025-09-11', 7, 3, 2, 1, NULL, 8.00, '2025-09-11 06:41:47', '2025-09-11 06:41:47', 6, NULL), -(844, '2025-09-11', 6, 3, 2, 1, NULL, 8.00, '2025-09-11 06:41:47', '2025-09-11 06:41:47', 6, NULL), -(845, '2025-09-11', 10, 3, 2, 1, NULL, 4.00, '2025-09-11 06:41:51', '2025-09-11 06:41:51', 5, NULL), -(846, '2025-09-11', 10, 3, 3, 1, NULL, 4.00, '2025-09-11 06:41:51', '2025-09-11 06:41:51', 5, NULL), -(847, '2025-09-11', 9, 3, 2, 1, NULL, 4.00, '2025-09-11 06:41:51', '2025-09-11 06:41:51', 5, NULL), -(848, '2025-09-11', 9, 3, 3, 1, NULL, 4.00, '2025-09-11 06:41:51', '2025-09-11 06:41:51', 5, NULL), -(851, '2025-09-12', 10, 3, 3, 1, NULL, 8.00, '2025-09-12 06:45:29', '2025-09-12 06:45:29', 3, NULL), -(852, '2025-09-12', 9, 3, 3, 1, NULL, 8.00, '2025-09-12 06:45:29', '2025-09-12 06:45:29', 3, NULL), -(853, '2025-09-12', 8, 3, 3, 1, NULL, 8.00, '2025-09-12 06:45:29', '2025-09-12 06:45:29', 3, NULL), -(854, '2025-09-12', 6, 3, 3, 1, NULL, 8.00, '2025-09-12 06:45:29', '2025-09-12 06:45:29', 3, NULL), -(855, '2025-09-12', 5, 3, 3, 1, NULL, 8.00, '2025-09-12 06:45:29', '2025-09-12 06:45:29', 3, NULL), -(856, '2025-09-12', 4, 3, 3, 1, NULL, 8.00, '2025-09-12 06:45:29', '2025-09-12 06:45:29', 3, NULL), -(857, '2025-09-12', 3, 3, 3, 1, NULL, 8.00, '2025-09-12 06:45:29', '2025-09-12 06:45:29', 3, NULL), -(858, '2025-09-12', 2, 3, 3, 1, NULL, 8.00, '2025-09-12 06:45:29', '2025-09-12 06:45:29', 3, NULL), -(859, '2025-09-12', 1, 3, 3, 1, NULL, 8.00, '2025-09-12 06:45:29', '2025-09-12 06:45:29', 3, NULL), -(860, '2025-09-12', 7, 3, 3, 1, NULL, 8.00, '2025-09-12 06:45:29', '2025-09-12 06:45:29', 3, NULL), -(861, '2025-09-13', 10, 3, 3, 1, NULL, 8.00, '2025-09-13 06:38:14', '2025-09-13 06:38:14', 3, NULL), -(862, '2025-09-13', 8, 3, 3, 1, NULL, 8.00, '2025-09-13 06:38:14', '2025-09-13 06:38:14', 3, NULL), -(863, '2025-09-13', 7, 3, 3, 1, NULL, 8.00, '2025-09-13 06:38:14', '2025-09-13 06:38:14', 3, NULL), -(864, '2025-09-13', 6, 3, 3, 1, NULL, 8.00, '2025-09-13 06:38:14', '2025-09-13 06:38:14', 3, NULL), -(865, '2025-09-13', 5, 3, 3, 1, NULL, 8.00, '2025-09-13 06:38:14', '2025-09-13 06:38:14', 3, NULL), -(866, '2025-09-13', 4, 3, 3, 1, NULL, 8.00, '2025-09-13 06:38:14', '2025-09-13 06:38:14', 3, NULL), -(867, '2025-09-13', 3, 3, 3, 1, NULL, 8.00, '2025-09-13 06:38:14', '2025-09-13 06:38:14', 3, NULL), -(868, '2025-09-13', 2, 3, 3, 1, NULL, 8.00, '2025-09-13 06:38:14', '2025-09-13 06:38:14', 3, NULL), -(869, '2025-09-13', 1, 3, 3, 1, NULL, 8.00, '2025-09-13 06:38:14', '2025-09-13 06:38:14', 3, NULL), -(870, '2025-09-14', 9, 3, 3, 1, NULL, 8.00, '2025-09-14 04:47:40', '2025-09-14 04:47:40', 3, NULL), -(871, '2025-09-14', 8, 3, 3, 1, NULL, 8.00, '2025-09-14 04:47:40', '2025-09-14 04:47:40', 3, NULL), -(872, '2025-09-14', 7, 3, 3, 1, NULL, 8.00, '2025-09-14 04:47:40', '2025-09-14 04:47:40', 3, NULL), -(873, '2025-09-14', 6, 3, 3, 1, NULL, 8.00, '2025-09-14 04:47:40', '2025-09-14 04:47:40', 3, NULL), -(874, '2025-09-14', 5, 3, 3, 1, NULL, 8.00, '2025-09-14 04:47:41', '2025-09-14 04:47:41', 3, NULL), -(875, '2025-09-14', 4, 3, 3, 1, NULL, 8.00, '2025-09-14 04:47:41', '2025-09-14 04:47:41', 3, NULL), -(876, '2025-09-14', 3, 3, 3, 1, NULL, 8.00, '2025-09-14 04:47:41', '2025-09-14 04:47:41', 3, NULL), -(877, '2025-09-14', 2, 3, 3, 1, NULL, 8.00, '2025-09-14 04:47:41', '2025-09-14 04:47:41', 3, NULL), -(878, '2025-09-14', 1, 3, 3, 1, NULL, 8.00, '2025-09-14 04:47:41', '2025-09-14 04:47:41', 3, NULL), -(879, '2025-09-15', 5, 3, 3, 1, NULL, 8.00, '2025-09-15 06:50:00', '2025-09-15 06:50:00', 3, NULL), -(880, '2025-09-15', 10, 3, 3, 1, NULL, 8.00, '2025-09-15 06:50:00', '2025-09-15 06:50:00', 3, NULL), -(881, '2025-09-15', 9, 3, 3, 1, NULL, 8.00, '2025-09-15 06:50:00', '2025-09-15 06:50:00', 3, NULL), -(882, '2025-09-15', 8, 3, 3, 1, NULL, 8.00, '2025-09-15 06:50:00', '2025-09-15 06:50:00', 3, NULL), -(883, '2025-09-15', 7, 3, 3, 1, NULL, 8.00, '2025-09-15 06:50:01', '2025-09-15 06:50:01', 3, NULL), -(884, '2025-09-15', 6, 3, 3, 1, NULL, 8.00, '2025-09-15 06:50:01', '2025-09-15 06:50:01', 3, NULL), -(885, '2025-09-15', 4, 3, 3, 1, NULL, 8.00, '2025-09-15 06:50:01', '2025-09-15 06:50:01', 3, NULL), -(886, '2025-09-15', 3, 3, 3, 1, NULL, 8.00, '2025-09-15 06:50:01', '2025-09-15 06:50:01', 3, NULL), -(887, '2025-09-15', 2, 3, 3, 1, NULL, 8.00, '2025-09-15 06:50:01', '2025-09-15 06:50:01', 3, NULL), -(888, '2025-09-15', 1, 3, 3, 1, NULL, 8.00, '2025-09-15 06:50:01', '2025-09-15 06:50:01', 3, NULL), -(889, '2025-09-16', 2, 8, 3, 1, NULL, 8.00, '2025-09-16 06:51:19', '2025-09-16 06:51:19', 5, NULL), -(890, '2025-09-16', 4, 8, 3, 1, NULL, 8.00, '2025-09-16 06:51:19', '2025-09-16 06:51:19', 5, NULL), -(891, '2025-09-16', 8, 8, 2, 1, NULL, 2.00, '2025-09-16 06:52:12', '2025-09-16 06:52:12', 5, NULL), -(892, '2025-09-16', 8, 3, 2, 1, NULL, 6.00, '2025-09-16 06:52:12', '2025-09-16 06:52:12', 5, NULL), -(893, '2025-09-17', 4, 8, 3, 1, NULL, 8.00, '2025-09-17 06:43:08', '2025-09-17 06:43:08', 5, NULL), -(894, '2025-09-17', 2, 8, 3, 1, NULL, 8.00, '2025-09-17 06:43:08', '2025-09-17 06:43:08', 5, NULL), -(895, '2025-09-17', 10, 3, 3, 1, NULL, 8.00, '2025-09-17 06:45:06', '2025-09-17 06:45:06', 3, NULL), -(896, '2025-09-17', 9, 3, 3, 1, NULL, 8.00, '2025-09-17 06:45:06', '2025-09-17 06:45:06', 3, NULL), -(897, '2025-09-17', 8, 3, 3, 1, NULL, 8.00, '2025-09-17 06:45:06', '2025-09-17 06:45:06', 3, NULL), -(898, '2025-09-17', 7, 3, 3, 1, NULL, 8.00, '2025-09-17 06:45:06', '2025-09-17 06:45:06', 3, NULL), -(899, '2025-09-17', 6, 3, 3, 1, NULL, 8.00, '2025-09-17 06:45:06', '2025-09-17 06:45:06', 3, NULL), -(900, '2025-09-17', 5, 3, 3, 1, NULL, 8.00, '2025-09-17 06:45:06', '2025-09-17 06:45:06', 3, NULL), -(901, '2025-09-17', 3, 3, 3, 1, NULL, 8.00, '2025-09-17 06:45:06', '2025-09-17 06:45:06', 3, NULL), -(902, '2025-09-17', 1, 3, 3, 1, NULL, 8.00, '2025-09-17 06:45:06', '2025-09-17 06:45:06', 3, NULL), -(903, '2025-09-18', 7, 3, 3, 1, NULL, 8.00, '2025-09-18 06:43:40', '2025-09-18 06:43:40', 3, NULL), -(904, '2025-09-18', 1, 3, 3, 1, NULL, 8.00, '2025-09-18 06:43:40', '2025-09-18 06:43:40', 3, NULL), -(905, '2025-09-18', 10, 3, 2, 1, NULL, 8.00, '2025-09-18 06:44:42', '2025-09-18 06:44:42', 3, NULL), -(906, '2025-09-18', 9, 3, 2, 1, NULL, 8.00, '2025-09-18 06:44:42', '2025-09-18 06:44:42', 3, NULL), -(907, '2025-09-18', 8, 3, 2, 1, NULL, 8.00, '2025-09-18 06:44:42', '2025-09-18 06:44:42', 3, NULL), -(908, '2025-09-18', 6, 3, 2, 1, NULL, 8.00, '2025-09-18 06:44:42', '2025-09-18 06:44:42', 3, NULL), -(909, '2025-09-18', 3, 3, 2, 1, NULL, 8.00, '2025-09-18 06:44:42', '2025-09-18 06:44:42', 3, NULL), -(910, '2025-09-18', 5, 3, 2, 1, NULL, 6.00, '2025-09-18 06:46:39', '2025-09-18 06:46:39', 3, NULL), -(911, '2025-09-18', 2, 8, 3, 1, NULL, 8.00, '2025-09-18 06:54:48', '2025-09-18 06:54:48', 5, NULL), -(912, '2025-09-18', 4, 8, 3, 1, NULL, 8.00, '2025-09-18 06:54:48', '2025-09-18 06:54:48', 5, NULL), -(913, '2025-09-19', 4, 8, 3, 1, NULL, 8.00, '2025-09-19 06:51:40', '2025-09-19 06:51:40', 5, NULL), -(914, '2025-09-19', 2, 8, 3, 1, NULL, 8.00, '2025-09-19 06:51:40', '2025-09-19 06:51:40', 5, NULL), -(915, '2025-09-19', 10, 3, 2, 1, NULL, 8.00, '2025-09-19 06:52:05', '2025-09-19 06:52:05', 5, NULL), -(916, '2025-09-19', 8, 3, 2, 1, NULL, 8.00, '2025-09-19 06:52:05', '2025-09-19 06:52:05', 5, NULL), -(917, '2025-09-19', 7, 3, 2, 1, NULL, 8.00, '2025-09-19 06:52:05', '2025-09-19 06:52:05', 5, NULL), -(918, '2025-09-19', 6, 3, 2, 1, NULL, 8.00, '2025-09-19 06:52:05', '2025-09-19 06:52:05', 5, NULL), -(919, '2025-09-19', 5, 3, 2, 1, NULL, 8.00, '2025-09-19 06:52:05', '2025-09-19 06:52:05', 5, NULL), -(920, '2025-09-19', 3, 3, 2, 1, NULL, 4.00, '2025-09-19 06:52:23', '2025-09-19 06:52:23', 5, NULL), -(921, '2025-09-20', 4, 8, 3, 1, NULL, 8.00, '2025-09-20 05:30:19', '2025-09-20 05:30:19', 5, NULL), -(922, '2025-09-20', 2, 8, 3, 1, NULL, 8.00, '2025-09-20 05:30:19', '2025-09-20 05:30:19', 5, NULL), -(923, '2025-09-22', 10, 3, 2, 1, NULL, 8.00, '2025-09-22 06:47:25', '2025-09-22 06:47:25', 3, NULL), -(924, '2025-09-22', 9, 3, 2, 1, NULL, 8.00, '2025-09-22 06:47:25', '2025-09-22 06:47:25', 3, NULL), -(925, '2025-09-22', 8, 3, 2, 1, NULL, 8.00, '2025-09-22 06:47:25', '2025-09-22 06:47:25', 3, NULL), -(926, '2025-09-22', 7, 3, 2, 1, NULL, 8.00, '2025-09-22 06:47:25', '2025-09-22 06:47:25', 3, NULL), -(927, '2025-09-22', 5, 3, 2, 1, NULL, 8.00, '2025-09-22 06:47:25', '2025-09-22 06:47:25', 3, NULL), -(928, '2025-09-22', 1, 3, 2, 1, NULL, 8.00, '2025-09-22 06:47:25', '2025-09-22 06:47:25', 3, NULL), -(929, '2025-09-22', 4, 8, 3, 1, NULL, 8.00, '2025-09-22 06:50:29', '2025-09-22 06:50:29', 5, NULL), -(930, '2025-09-22', 2, 8, 3, 1, NULL, 8.00, '2025-09-22 06:50:29', '2025-09-22 06:50:29', 5, NULL), -(931, '2025-09-23', 4, 8, 3, 1, NULL, 8.00, '2025-09-23 05:46:40', '2025-09-23 05:46:40', 5, NULL), -(932, '2025-09-23', 2, 8, 3, 1, NULL, 8.00, '2025-09-23 05:46:40', '2025-09-23 05:46:40', 5, NULL), -(933, '2025-09-24', 4, 8, 3, 1, NULL, 8.00, '2025-09-25 01:14:58', '2025-09-25 01:14:58', 5, NULL), -(934, '2025-09-24', 2, 8, 3, 1, NULL, 8.00, '2025-09-25 01:14:58', '2025-09-25 01:14:58', 5, NULL), -(935, '2025-09-29', 7, 14, 1, 1, NULL, 8.00, '2025-09-29 06:36:07', '2025-09-29 06:36:07', 3, NULL), -(936, '2025-09-29', 1, 14, 1, 1, NULL, 8.00, '2025-09-29 06:36:07', '2025-09-29 06:36:07', 3, NULL), -(937, '2025-09-29', 10, 3, 2, 1, NULL, 8.00, '2025-09-29 06:36:47', '2025-09-29 06:36:47', 3, NULL), -(938, '2025-09-29', 8, 3, 2, 1, NULL, 8.00, '2025-09-29 06:36:47', '2025-09-29 06:36:47', 3, NULL), -(939, '2025-09-29', 6, 3, 2, 1, NULL, 8.00, '2025-09-29 06:36:47', '2025-09-29 06:36:47', 3, NULL), -(940, '2025-09-29', 9, 3, 2, 1, NULL, 8.00, '2025-09-29 06:36:47', '2025-09-29 06:36:47', 3, NULL), -(941, '2025-09-29', 5, 3, 2, 1, NULL, 8.00, '2025-09-29 06:36:47', '2025-09-29 06:36:47', 3, NULL), -(942, '2025-09-29', 4, 3, 2, 1, NULL, 8.00, '2025-09-29 06:36:47', '2025-09-29 06:36:47', 3, NULL), -(943, '2025-09-29', 3, 3, 2, 1, NULL, 8.00, '2025-09-29 06:36:47', '2025-09-29 06:36:47', 3, NULL), -(944, '2025-09-29', 2, 3, 2, 1, NULL, 8.00, '2025-09-29 06:36:47', '2025-09-29 06:36:47', 3, NULL), -(945, '2025-09-30', 10, 3, 2, 1, NULL, 8.00, '2025-09-30 06:52:26', '2025-09-30 06:52:26', 3, NULL), -(946, '2025-09-30', 9, 3, 2, 1, NULL, 8.00, '2025-09-30 06:52:26', '2025-09-30 06:52:26', 3, NULL), -(947, '2025-09-30', 8, 3, 2, 1, NULL, 8.00, '2025-09-30 06:52:26', '2025-09-30 06:52:26', 3, NULL), -(948, '2025-09-30', 6, 3, 2, 1, NULL, 8.00, '2025-09-30 06:52:26', '2025-09-30 06:52:26', 3, NULL), -(949, '2025-09-30', 5, 3, 2, 1, NULL, 8.00, '2025-09-30 06:52:26', '2025-09-30 06:52:26', 3, NULL), -(950, '2025-09-30', 4, 3, 2, 1, NULL, 8.00, '2025-09-30 06:52:26', '2025-09-30 06:52:26', 3, NULL), -(951, '2025-09-30', 3, 3, 2, 1, NULL, 8.00, '2025-09-30 06:52:27', '2025-09-30 06:52:27', 3, NULL), -(953, '2025-09-30', 1, 3, 2, 1, NULL, 8.00, '2025-09-30 06:52:27', '2025-09-30 06:52:27', 3, NULL), -(954, '2025-09-30', 2, 8, 3, 1, NULL, 8.00, '2025-09-30 06:56:55', '2025-09-30 06:56:55', 5, NULL), -(955, '2025-10-02', 5, 3, 2, 1, NULL, 6.00, '2025-10-02 05:25:58', '2025-10-02 05:25:58', 3, NULL), -(956, '2025-10-02', 8, 3, 2, 1, NULL, 6.00, '2025-10-02 05:25:59', '2025-10-02 05:25:59', 3, NULL), -(957, '2025-10-02', 10, 3, 2, 1, NULL, 8.00, '2025-10-02 06:22:32', '2025-10-02 06:22:32', 3, NULL), -(958, '2025-10-02', 9, 3, 2, 1, NULL, 8.00, '2025-10-02 06:22:32', '2025-10-02 06:22:32', 3, NULL), -(959, '2025-10-02', 7, 3, 2, 1, NULL, 8.00, '2025-10-02 06:22:32', '2025-10-02 06:22:32', 3, NULL), -(960, '2025-10-02', 6, 3, 2, 1, NULL, 8.00, '2025-10-02 06:22:32', '2025-10-02 06:22:32', 3, NULL), -(961, '2025-10-02', 4, 3, 2, 1, NULL, 8.00, '2025-10-02 06:22:33', '2025-10-02 06:22:33', 3, NULL), -(962, '2025-10-02', 2, 3, 2, 1, NULL, 8.00, '2025-10-02 06:22:33', '2025-10-02 06:22:33', 3, NULL), -(963, '2025-10-02', 1, 3, 2, 1, NULL, 8.00, '2025-10-02 06:22:33', '2025-10-02 06:22:33', 3, NULL), -(964, '2025-09-01', 8, 5, 3, 1, NULL, 8.00, '2025-10-10 23:35:07', '2025-10-10 23:35:07', 3, NULL), -(965, '2025-09-01', 4, 5, 3, 1, NULL, 8.00, '2025-10-10 23:35:07', '2025-10-10 23:35:07', 3, NULL), -(966, '2025-09-01', 2, 5, 3, 1, NULL, 8.00, '2025-10-10 23:35:07', '2025-10-10 23:35:07', 3, NULL); - --- -------------------------------------------------------- +INSERT INTO `daily_work_reports` (`id`, `report_date`, `worker_id`, `project_id`, `work_type_id`, `work_status_id`, `error_type_id`, `work_hours`, `description`, `created_at`, `updated_at`, `created_by`, `updated_by`) VALUES +(14, '2025-06-02', 1, 4, 3, 1, NULL, 8.00, NULL, '2025-06-16 05:10:23', '2025-06-16 05:10:23', 1, NULL), +(15, '2025-06-02', 3, 4, 3, 1, NULL, 8.00, NULL, '2025-06-16 05:10:23', '2025-06-16 05:10:23', 1, NULL), +(16, '2025-06-02', 4, 4, 3, 1, NULL, 8.00, NULL, '2025-06-16 05:10:23', '2025-06-16 05:10:23', 1, NULL), +(17, '2025-06-02', 6, 4, 3, 1, NULL, 8.00, NULL, '2025-06-16 05:10:23', '2025-06-16 05:10:23', 1, NULL), +(18, '2025-06-02', 7, 4, 3, 1, NULL, 8.00, NULL, '2025-06-16 05:10:23', '2025-06-16 05:10:23', 1, NULL), +(19, '2025-06-02', 9, 4, 3, 1, NULL, 8.00, NULL, '2025-06-16 05:10:23', '2025-06-16 05:10:23', 1, NULL), +(20, '2025-06-02', 2, 3, 2, 1, NULL, 8.00, NULL, '2025-06-16 05:10:47', '2025-06-16 05:10:47', 1, NULL), +(21, '2025-06-04', 1, 4, 3, 1, NULL, 8.00, NULL, '2025-06-16 05:11:37', '2025-06-16 05:11:37', 1, NULL), +(22, '2025-06-04', 3, 4, 3, 1, NULL, 8.00, NULL, '2025-06-16 05:11:37', '2025-06-16 05:11:37', 1, NULL), +(23, '2025-06-04', 5, 4, 3, 1, NULL, 8.00, NULL, '2025-06-16 05:11:37', '2025-06-16 05:11:37', 1, NULL), +(24, '2025-06-04', 7, 4, 3, 1, NULL, 8.00, NULL, '2025-06-16 05:11:37', '2025-06-16 05:11:37', 1, NULL), +(25, '2025-06-04', 9, 4, 3, 1, NULL, 8.00, NULL, '2025-06-16 05:11:37', '2025-06-16 05:11:37', 1, NULL), +(26, '2025-06-04', 10, 4, 3, 1, NULL, 8.00, NULL, '2025-06-16 05:11:37', '2025-06-16 05:11:37', 1, NULL), +(27, '2025-06-04', 2, 3, 2, 1, NULL, 8.00, NULL, '2025-06-16 05:12:07', '2025-06-16 05:12:07', 1, NULL), +(28, '2025-06-04', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-06-16 05:12:07', '2025-06-16 05:12:07', 1, NULL), +(29, '2025-06-04', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-06-16 05:12:07', '2025-06-16 05:12:07', 1, NULL), +(30, '2025-06-05', 1, 4, 3, 2, 1, 8.00, NULL, '2025-06-16 05:12:57', '2025-06-16 05:12:57', 1, NULL), +(31, '2025-06-05', 3, 4, 3, 2, 1, 8.00, NULL, '2025-06-16 05:12:57', '2025-06-16 05:12:57', 1, NULL), +(32, '2025-06-05', 4, 4, 3, 2, 1, 8.00, NULL, '2025-06-16 05:12:57', '2025-06-16 05:12:57', 1, NULL), +(33, '2025-06-05', 7, 4, 3, 2, 1, 8.00, NULL, '2025-06-16 05:12:57', '2025-06-16 05:12:57', 1, NULL), +(34, '2025-06-05', 10, 4, 3, 2, 1, 8.00, NULL, '2025-06-16 05:12:57', '2025-06-16 05:12:57', 1, NULL), +(35, '2025-06-05', 9, 4, 3, 2, 1, 8.00, NULL, '2025-06-16 05:12:57', '2025-06-16 05:12:57', 1, NULL), +(36, '2025-06-05', 2, 3, 2, 1, NULL, 8.00, NULL, '2025-06-16 05:13:56', '2025-06-16 05:13:56', 1, NULL), +(37, '2025-06-05', 5, 3, 2, 1, NULL, 8.00, NULL, '2025-06-16 05:13:56', '2025-06-16 05:13:56', 1, NULL), +(38, '2025-06-05', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-06-16 05:13:56', '2025-06-16 05:13:56', 1, NULL), +(39, '2025-06-05', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-06-16 05:13:56', '2025-06-16 05:13:56', 1, NULL), +(40, '2025-06-16', 5, 3, 2, 1, NULL, 8.00, NULL, '2025-06-16 06:12:01', '2025-06-16 06:12:01', 5, NULL), +(43, '2025-06-16', 2, 3, 2, 1, NULL, 8.00, NULL, '2025-06-16 06:12:01', '2025-06-16 06:12:01', 5, NULL), +(44, '2025-06-16', 6, 3, 2, 2, 4, 4.00, NULL, '2025-06-16 06:13:02', '2025-06-16 06:13:02', 5, NULL), +(45, '2025-06-16', 6, 3, 2, 1, NULL, 4.00, NULL, '2025-06-16 06:13:50', '2025-06-16 06:13:50', 5, NULL), +(46, '2025-06-16', 8, 3, 2, 2, 4, 4.00, NULL, '2025-06-16 06:15:22', '2025-06-16 06:15:22', 5, NULL), +(47, '2025-06-16', 8, 3, 2, 1, NULL, 4.00, NULL, '2025-06-16 06:15:22', '2025-06-16 06:15:22', 5, NULL), +(48, '2025-06-16', 4, 4, 3, 2, 1, 8.00, NULL, '2025-06-16 06:46:44', '2025-06-16 06:46:44', 3, NULL), +(50, '2025-06-16', 1, 4, 3, 2, 1, 8.00, NULL, '2025-06-16 06:46:44', '2025-06-16 06:46:44', 3, NULL), +(51, '2025-06-16', 9, 4, 3, 1, NULL, 8.00, NULL, '2025-06-16 06:48:29', '2025-06-16 06:48:29', 3, NULL), +(52, '2025-06-16', 10, 4, 3, 1, NULL, 6.00, NULL, '2025-06-16 06:50:09', '2025-06-16 06:50:09', 6, NULL), +(53, '2025-06-16', 10, 4, 3, 2, 1, 2.00, NULL, '2025-06-16 06:50:09', '2025-06-16 06:50:09', 6, NULL), +(54, '2025-06-16', 3, 4, 3, 1, NULL, 6.00, NULL, '2025-06-16 06:50:09', '2025-06-16 06:50:09', 6, NULL), +(55, '2025-06-16', 3, 4, 3, 2, 1, 2.00, NULL, '2025-06-16 06:50:09', '2025-06-16 06:50:09', 6, NULL), +(56, '2025-06-17', 2, 3, 2, 1, NULL, 8.00, NULL, '2025-06-17 08:23:41', '2025-06-17 08:23:41', 5, NULL), +(57, '2025-06-17', 2, 3, 2, 1, NULL, 2.00, NULL, '2025-06-17 08:23:41', '2025-06-17 08:23:41', 5, NULL), +(58, '2025-06-17', 5, 3, 2, 1, NULL, 8.00, NULL, '2025-06-17 08:23:41', '2025-06-17 08:23:41', 5, NULL), +(59, '2025-06-17', 5, 3, 2, 1, NULL, 2.00, NULL, '2025-06-17 08:23:41', '2025-06-17 08:23:41', 5, NULL), +(60, '2025-06-17', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-06-17 08:24:33', '2025-06-17 08:24:33', 5, NULL), +(61, '2025-06-17', 6, 3, 2, 2, 4, 2.00, NULL, '2025-06-17 08:24:33', '2025-06-17 08:24:33', 5, NULL), +(62, '2025-06-17', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-06-17 08:24:33', '2025-06-17 08:24:33', 5, NULL), +(63, '2025-06-17', 8, 3, 2, 2, 4, 2.00, NULL, '2025-06-17 08:24:33', '2025-06-17 08:24:33', 5, NULL), +(65, '2025-06-17', 9, 4, 3, 2, 1, 4.00, NULL, '2025-06-17 08:25:24', '2025-06-17 08:25:24', 3, NULL), +(66, '2025-06-17', 1, 4, 3, 2, 1, 4.00, NULL, '2025-06-17 08:27:06', '2025-06-17 08:27:06', 3, NULL), +(67, '2025-06-17', 4, 4, 3, 2, 1, 4.00, NULL, '2025-06-17 08:27:06', '2025-06-17 08:27:06', 3, NULL), +(68, '2025-06-17', 1, 4, 3, 1, NULL, 4.00, NULL, '2025-06-17 08:31:06', '2025-06-17 08:31:06', 3, NULL), +(69, '2025-06-17', 9, 4, 3, 1, NULL, 4.00, NULL, '2025-06-17 08:31:06', '2025-06-17 08:31:06', 3, NULL), +(70, '2025-06-17', 4, 4, 3, 1, NULL, 4.00, NULL, '2025-06-17 08:31:06', '2025-06-17 08:31:06', 3, NULL), +(71, '2025-06-17', 9, 4, 3, 1, NULL, 2.00, NULL, '2025-06-17 08:33:06', '2025-06-17 08:33:06', 3, NULL), +(72, '2025-06-17', 4, 4, 3, 1, NULL, 2.00, NULL, '2025-06-17 08:33:06', '2025-06-17 08:33:06', 3, NULL), +(73, '2025-06-17', 1, 4, 3, 1, NULL, 2.00, NULL, '2025-06-17 08:33:06', '2025-06-17 08:33:06', 3, NULL), +(74, '2025-06-17', 10, 4, 3, 1, NULL, 8.00, NULL, '2025-06-17 08:34:11', '2025-06-17 08:34:11', 6, NULL), +(75, '2025-06-17', 10, 4, 3, 2, 1, 2.00, NULL, '2025-06-17 08:34:11', '2025-06-17 08:34:11', 6, NULL), +(76, '2025-06-17', 3, 4, 3, 1, NULL, 8.00, NULL, '2025-06-17 08:34:11', '2025-06-17 08:34:11', 6, NULL), +(77, '2025-06-17', 3, 4, 3, 2, 1, 2.00, NULL, '2025-06-17 08:34:11', '2025-06-17 08:34:11', 6, NULL), +(78, '2025-06-18', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-06-18 08:40:27', '2025-06-18 08:40:27', 5, NULL), +(79, '2025-06-18', 2, 3, 2, 1, NULL, 8.00, NULL, '2025-06-18 08:40:27', '2025-06-18 08:40:27', 5, NULL), +(80, '2025-06-18', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-06-18 08:40:27', '2025-06-18 08:40:27', 5, NULL), +(81, '2025-06-18', 2, 3, 2, 1, NULL, 2.00, NULL, '2025-06-18 08:41:02', '2025-06-18 08:41:02', 5, NULL), +(82, '2025-06-18', 6, 3, 2, 1, NULL, 2.00, NULL, '2025-06-18 08:41:03', '2025-06-18 08:41:03', 5, NULL), +(83, '2025-06-18', 8, 3, 2, 1, NULL, 2.00, NULL, '2025-06-18 08:41:03', '2025-06-18 08:41:03', 5, NULL), +(84, '2025-06-18', 5, 4, 3, 1, NULL, 8.00, NULL, '2025-06-18 08:41:45', '2025-06-18 08:41:45', 5, NULL), +(85, '2025-06-18', 5, 4, 3, 1, NULL, 2.00, NULL, '2025-06-18 08:41:45', '2025-06-18 08:41:45', 5, NULL), +(86, '2025-06-18', 10, 4, 3, 1, NULL, 9.00, NULL, '2025-06-18 08:47:55', '2025-06-18 08:47:55', 6, NULL), +(87, '2025-06-18', 10, 4, 3, 2, 1, 1.00, NULL, '2025-06-18 08:47:55', '2025-06-18 08:47:55', 6, NULL), +(88, '2025-06-18', 3, 4, 3, 1, NULL, 9.00, NULL, '2025-06-18 08:47:55', '2025-06-18 08:47:55', 6, NULL), +(89, '2025-06-18', 3, 4, 3, 2, 1, 1.00, NULL, '2025-06-18 08:47:55', '2025-06-18 08:47:55', 6, NULL), +(90, '2025-06-18', 4, 4, 3, 2, 1, 4.00, NULL, '2025-06-18 08:50:19', '2025-06-18 08:50:19', 3, NULL), +(91, '2025-06-18', 4, 4, 3, 1, NULL, 6.00, NULL, '2025-06-18 08:50:19', '2025-06-18 08:50:19', 3, NULL), +(92, '2025-06-18', 9, 4, 3, 2, 1, 4.00, NULL, '2025-06-18 08:50:19', '2025-06-18 08:50:19', 3, NULL), +(93, '2025-06-18', 9, 4, 3, 1, NULL, 6.00, NULL, '2025-06-18 08:50:19', '2025-06-18 08:50:19', 3, NULL), +(94, '2025-06-18', 1, 4, 3, 2, 1, 4.00, NULL, '2025-06-18 08:50:19', '2025-06-18 08:50:19', 3, NULL), +(95, '2025-06-18', 1, 4, 3, 1, NULL, 6.00, NULL, '2025-06-18 08:50:19', '2025-06-18 08:50:19', 3, NULL), +(96, '2025-06-18', 7, 4, 3, 2, 1, 4.00, NULL, '2025-06-18 09:00:17', '2025-06-18 09:00:17', 3, NULL), +(97, '2025-06-18', 7, 4, 3, 1, NULL, 6.00, NULL, '2025-06-18 09:00:17', '2025-06-18 09:00:17', 3, NULL), +(98, '2025-06-19', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-06-19 06:37:59', '2025-06-19 06:37:59', 5, NULL), +(99, '2025-06-19', 2, 3, 2, 1, NULL, 8.00, NULL, '2025-06-19 06:37:59', '2025-06-19 06:37:59', 5, NULL), +(100, '2025-06-19', 10, 4, 3, 1, NULL, 8.00, NULL, '2025-06-19 06:59:36', '2025-06-19 06:59:36', 6, NULL), +(101, '2025-06-19', 3, 4, 3, 1, NULL, 8.00, NULL, '2025-06-19 06:59:36', '2025-06-19 06:59:36', 6, NULL), +(102, '2025-06-19', 5, 4, 3, 1, NULL, 8.00, NULL, '2025-06-19 06:59:36', '2025-06-19 06:59:36', 6, NULL), +(103, '2025-06-19', 9, 4, 3, 1, NULL, 6.00, NULL, '2025-06-19 07:01:02', '2025-06-19 07:01:02', 3, NULL), +(104, '2025-06-19', 9, 4, 3, 2, 1, 2.00, NULL, '2025-06-19 07:01:02', '2025-06-19 07:01:02', 3, NULL), +(105, '2025-06-19', 4, 4, 3, 1, NULL, 6.00, NULL, '2025-06-19 07:01:02', '2025-06-19 07:01:02', 3, NULL), +(106, '2025-06-19', 4, 4, 3, 2, 1, 2.00, NULL, '2025-06-19 07:01:02', '2025-06-19 07:01:02', 3, NULL), +(107, '2025-06-19', 1, 4, 3, 1, NULL, 6.00, NULL, '2025-06-19 07:01:02', '2025-06-19 07:01:02', 3, NULL), +(108, '2025-06-19', 1, 4, 3, 2, 1, 2.00, NULL, '2025-06-19 07:01:02', '2025-06-19 07:01:02', 3, NULL), +(109, '2025-06-19', 7, 4, 3, 1, NULL, 6.00, NULL, '2025-06-19 07:01:02', '2025-06-19 07:01:02', 3, NULL), +(110, '2025-06-19', 7, 4, 3, 2, 1, 2.00, NULL, '2025-06-19 07:01:02', '2025-06-19 07:01:02', 3, NULL), +(111, '2025-06-19', 6, 4, 3, 1, NULL, 6.00, NULL, '2025-06-19 07:01:02', '2025-06-19 07:01:02', 3, NULL), +(112, '2025-06-19', 6, 4, 3, 2, 1, 2.00, NULL, '2025-06-19 07:01:02', '2025-06-19 07:01:02', 3, NULL), +(113, '2025-06-20', 9, 4, 3, 2, 1, 2.00, NULL, '2025-06-20 06:44:01', '2025-06-20 06:44:01', 3, NULL), +(114, '2025-06-20', 9, 4, 3, 1, NULL, 6.00, NULL, '2025-06-20 06:44:01', '2025-06-20 06:44:01', 3, NULL), +(115, '2025-06-20', 4, 4, 3, 2, 1, 2.00, NULL, '2025-06-20 06:44:01', '2025-06-20 06:44:01', 3, NULL), +(116, '2025-06-20', 4, 4, 3, 1, NULL, 6.00, NULL, '2025-06-20 06:44:01', '2025-06-20 06:44:01', 3, NULL), +(117, '2025-06-20', 7, 4, 3, 2, 1, 2.00, NULL, '2025-06-20 06:44:01', '2025-06-20 06:44:01', 3, NULL), +(118, '2025-06-20', 7, 4, 3, 1, NULL, 6.00, NULL, '2025-06-20 06:44:01', '2025-06-20 06:44:01', 3, NULL), +(119, '2025-06-20', 6, 4, 3, 2, 1, 2.00, NULL, '2025-06-20 06:44:02', '2025-06-20 06:44:02', 3, NULL), +(120, '2025-06-20', 6, 4, 3, 1, NULL, 6.00, NULL, '2025-06-20 06:44:02', '2025-06-20 06:44:02', 3, NULL), +(121, '2025-06-20', 1, 4, 3, 2, 1, 2.00, NULL, '2025-06-20 06:44:02', '2025-06-20 06:44:02', 3, NULL), +(122, '2025-06-20', 1, 4, 3, 1, NULL, 6.00, NULL, '2025-06-20 06:44:02', '2025-06-20 06:44:02', 3, NULL), +(123, '2025-06-20', 5, 4, 3, 2, 1, 2.00, NULL, '2025-06-20 06:44:02', '2025-06-20 06:44:02', 3, NULL), +(124, '2025-06-20', 5, 4, 3, 1, NULL, 6.00, NULL, '2025-06-20 06:44:02', '2025-06-20 06:44:02', 3, NULL), +(125, '2025-06-20', 10, 4, 3, 1, NULL, 8.00, NULL, '2025-06-20 06:45:30', '2025-06-20 06:45:30', 6, NULL), +(126, '2025-06-20', 3, 4, 3, 1, NULL, 8.00, NULL, '2025-06-20 06:45:31', '2025-06-20 06:45:31', 6, NULL), +(127, '2025-06-23', 10, 4, 3, 1, NULL, 8.00, NULL, '2025-06-23 06:42:58', '2025-06-23 06:42:58', 6, NULL), +(128, '2025-06-23', 3, 4, 3, 1, NULL, 8.00, NULL, '2025-06-23 06:42:58', '2025-06-23 06:42:58', 6, NULL), +(129, '2025-06-23', 5, 4, 3, 2, 1, 2.00, NULL, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), +(130, '2025-06-23', 5, 4, 3, 1, NULL, 6.00, NULL, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), +(131, '2025-06-23', 1, 4, 3, 2, 1, 2.00, NULL, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), +(132, '2025-06-23', 1, 4, 3, 1, NULL, 6.00, NULL, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), +(133, '2025-06-23', 9, 4, 3, 2, 1, 2.00, NULL, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), +(134, '2025-06-23', 9, 4, 3, 1, NULL, 6.00, NULL, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), +(135, '2025-06-23', 4, 4, 3, 2, 1, 2.00, NULL, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), +(136, '2025-06-23', 4, 4, 3, 1, NULL, 6.00, NULL, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), +(137, '2025-06-23', 7, 4, 3, 2, 1, 2.00, NULL, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), +(138, '2025-06-23', 7, 4, 3, 1, NULL, 6.00, NULL, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), +(139, '2025-06-23', 6, 4, 3, 2, 1, 2.00, NULL, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), +(140, '2025-06-23', 6, 4, 3, 1, NULL, 6.00, NULL, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), +(141, '2025-06-24', 10, 4, 3, 1, NULL, 12.00, NULL, '2025-06-24 11:10:32', '2025-06-24 11:10:32', 6, NULL), +(142, '2025-06-24', 3, 4, 3, 1, NULL, 12.00, NULL, '2025-06-24 11:10:32', '2025-06-24 11:10:32', 6, NULL), +(143, '2025-06-24', 9, 4, 3, 2, 1, 2.00, NULL, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), +(144, '2025-06-24', 9, 4, 3, 1, NULL, 10.00, NULL, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), +(145, '2025-06-24', 5, 4, 3, 2, 1, 2.00, NULL, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), +(146, '2025-06-24', 5, 4, 3, 1, NULL, 10.00, NULL, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), +(147, '2025-06-24', 4, 4, 3, 2, 1, 2.00, NULL, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), +(148, '2025-06-24', 4, 4, 3, 1, NULL, 10.00, NULL, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), +(149, '2025-06-24', 7, 4, 3, 2, 1, 2.00, NULL, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), +(150, '2025-06-24', 7, 4, 3, 1, NULL, 10.00, NULL, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), +(151, '2025-06-24', 6, 4, 3, 2, 1, 2.00, NULL, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), +(152, '2025-06-24', 6, 4, 3, 1, NULL, 10.00, NULL, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), +(153, '2025-06-24', 1, 4, 3, 2, 1, 2.00, NULL, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), +(154, '2025-06-24', 1, 4, 3, 1, NULL, 10.00, NULL, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), +(155, '2025-06-24', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-06-24 11:11:05', '2025-06-24 11:11:05', 5, NULL), +(156, '2025-06-24', 8, 3, 2, 1, NULL, 4.00, NULL, '2025-06-24 11:11:05', '2025-06-24 11:11:05', 5, NULL), +(157, '2025-06-24', 2, 3, 2, 1, NULL, 8.00, NULL, '2025-06-24 11:11:05', '2025-06-24 11:11:05', 5, NULL), +(158, '2025-06-24', 2, 3, 2, 1, NULL, 4.00, NULL, '2025-06-24 11:11:05', '2025-06-24 11:11:05', 5, NULL), +(159, '2025-06-25', 2, 3, 2, 1, NULL, 8.00, NULL, '2025-06-25 11:08:04', '2025-06-25 11:08:04', 5, NULL), +(160, '2025-06-25', 2, 3, 2, 1, NULL, 4.00, NULL, '2025-06-25 11:08:04', '2025-06-25 11:08:04', 5, NULL), +(161, '2025-06-25', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-06-25 11:08:05', '2025-06-25 11:08:05', 5, NULL), +(162, '2025-06-25', 8, 3, 2, 1, NULL, 4.00, NULL, '2025-06-25 11:08:05', '2025-06-25 11:08:05', 5, NULL), +(163, '2025-06-25', 10, 4, 3, 1, NULL, 12.00, NULL, '2025-06-25 11:11:30', '2025-06-25 11:11:30', 6, NULL), +(164, '2025-06-25', 9, 4, 3, 1, NULL, 12.00, NULL, '2025-06-25 11:11:30', '2025-06-25 11:11:30', 6, NULL), +(165, '2025-06-25', 3, 4, 3, 1, NULL, 12.00, NULL, '2025-06-25 11:11:30', '2025-06-25 11:11:30', 6, NULL), +(166, '2025-06-25', 6, 4, 3, 1, NULL, 12.00, NULL, '2025-06-25 11:11:30', '2025-06-25 11:11:30', 6, NULL), +(167, '2025-06-26', 10, 4, 3, 1, NULL, 12.00, NULL, '2025-06-26 10:29:38', '2025-06-26 10:29:38', 3, NULL), +(168, '2025-06-26', 5, 4, 3, 1, NULL, 12.00, NULL, '2025-06-26 10:29:38', '2025-06-26 10:29:38', 3, NULL), +(169, '2025-06-26', 7, 4, 3, 1, NULL, 12.00, NULL, '2025-06-26 10:29:38', '2025-06-26 10:29:38', 3, NULL), +(170, '2025-06-26', 1, 4, 3, 1, NULL, 12.00, NULL, '2025-06-26 10:29:38', '2025-06-26 10:29:38', 3, NULL), +(171, '2025-06-26', 4, 4, 3, 1, NULL, 12.00, NULL, '2025-06-26 10:29:38', '2025-06-26 10:29:38', 3, NULL), +(172, '2025-06-26', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-06-26 11:11:31', '2025-06-26 11:11:31', 5, NULL), +(173, '2025-06-26', 8, 3, 2, 1, NULL, 4.00, NULL, '2025-06-26 11:11:31', '2025-06-26 11:11:31', 5, NULL), +(174, '2025-06-26', 2, 3, 2, 1, NULL, 8.00, NULL, '2025-06-26 11:11:32', '2025-06-26 11:11:32', 5, NULL), +(175, '2025-06-26', 2, 3, 2, 1, NULL, 4.00, NULL, '2025-06-26 11:11:32', '2025-06-26 11:11:32', 5, NULL), +(176, '2025-06-26', 9, 3, 2, 1, NULL, 8.00, NULL, '2025-06-26 11:11:32', '2025-06-26 11:11:32', 5, NULL), +(177, '2025-06-26', 9, 3, 2, 1, NULL, 4.00, NULL, '2025-06-26 11:11:32', '2025-06-26 11:11:32', 5, NULL), +(178, '2025-06-26', 3, 3, 2, 1, NULL, 12.00, NULL, '2025-06-26 11:19:34', '2025-06-26 11:19:34', 6, NULL), +(179, '2025-06-26', 6, 3, 2, 1, NULL, 12.00, NULL, '2025-06-26 11:19:34', '2025-06-26 11:19:34', 6, NULL), +(182, '2025-06-27', 2, 3, 2, 1, NULL, 4.00, NULL, '2025-06-27 01:54:40', '2025-06-27 01:54:40', 5, NULL), +(183, '2025-06-27', 9, 4, 3, 1, NULL, 8.00, NULL, '2025-06-27 06:47:43', '2025-06-27 06:47:43', 3, NULL), +(184, '2025-06-27', 10, 4, 3, 1, NULL, 8.00, NULL, '2025-06-27 06:47:43', '2025-06-27 06:47:43', 3, NULL), +(185, '2025-06-27', 7, 4, 3, 1, NULL, 8.00, NULL, '2025-06-27 06:47:43', '2025-06-27 06:47:43', 3, NULL), +(186, '2025-06-27', 5, 4, 3, 1, NULL, 8.00, NULL, '2025-06-27 06:47:43', '2025-06-27 06:47:43', 3, NULL), +(187, '2025-06-27', 4, 4, 3, 1, NULL, 8.00, NULL, '2025-06-27 06:47:43', '2025-06-27 06:47:43', 3, NULL), +(188, '2025-06-27', 1, 4, 3, 1, NULL, 8.00, NULL, '2025-06-27 06:47:43', '2025-06-27 06:47:43', 3, NULL), +(189, '2025-06-27', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-06-27 06:49:08', '2025-06-27 06:49:08', 6, NULL), +(191, '2025-06-27', 6, 3, 2, 1, NULL, 4.00, NULL, '2025-06-27 06:58:46', '2025-06-27 06:58:46', 6, NULL), +(192, '2025-06-27', 8, 3, 2, 1, NULL, 6.00, NULL, '2025-06-27 07:00:10', '2025-06-27 07:00:10', 5, NULL), +(193, '2025-06-30', 6, 3, 2, 2, 4, 2.00, NULL, '2025-07-05 01:37:29', '2025-07-05 01:37:29', 3, NULL), +(194, '2025-06-30', 6, 3, 2, 1, NULL, 2.00, NULL, '2025-07-05 01:37:29', '2025-07-07 04:15:25', 3, 3), +(195, '2025-06-30', 2, 3, 2, 1, NULL, 4.00, NULL, '2025-07-05 01:38:19', '2025-07-07 04:15:40', 3, 3), +(196, '2025-06-30', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-07-05 01:38:19', '2025-07-05 01:38:19', 3, NULL), +(197, '2025-06-30', 8, 3, 2, 1, NULL, 6.00, NULL, '2025-07-05 01:38:19', '2025-07-07 04:15:02', 3, 3), +(198, '2025-07-01', 3, 3, 2, 1, NULL, 10.00, NULL, '2025-07-05 01:39:21', '2025-07-05 01:39:21', 3, NULL), +(199, '2025-07-01', 2, 3, 2, 1, NULL, 10.00, NULL, '2025-07-05 01:39:21', '2025-07-05 01:39:21', 3, NULL), +(200, '2025-07-01', 6, 3, 2, 1, NULL, 10.00, NULL, '2025-07-05 01:39:21', '2025-07-05 01:39:21', 3, NULL), +(201, '2025-07-01', 8, 3, 2, 1, NULL, 10.00, NULL, '2025-07-05 01:39:21', '2025-07-05 01:39:21', 3, NULL), +(202, '2025-07-01', 10, 3, 2, 1, NULL, 10.00, NULL, '2025-07-05 01:39:21', '2025-07-05 01:39:21', 3, NULL), +(203, '2025-07-01', 9, 3, 2, 1, NULL, 10.00, NULL, '2025-07-05 01:39:21', '2025-07-05 01:39:21', 3, NULL), +(204, '2025-07-01', 2, 3, 2, 1, NULL, 2.00, NULL, '2025-07-05 01:39:48', '2025-07-05 01:42:08', 3, 3), +(205, '2025-07-01', 3, 3, 2, 1, NULL, 2.00, NULL, '2025-07-05 01:39:48', '2025-07-05 01:42:02', 3, 3), +(206, '2025-07-01', 6, 3, 2, 1, NULL, 2.00, NULL, '2025-07-05 01:39:48', '2025-07-05 01:41:56', 3, 3), +(207, '2025-07-01', 8, 3, 2, 1, NULL, 2.00, NULL, '2025-07-05 01:39:48', '2025-07-05 01:41:48', 3, 3), +(208, '2025-07-01', 9, 3, 2, 2, 4, 2.00, NULL, '2025-07-05 01:40:10', '2025-07-05 01:40:10', 3, NULL), +(209, '2025-07-01', 10, 3, 2, 2, 4, 2.00, NULL, '2025-07-05 01:40:10', '2025-07-05 01:40:10', 3, NULL), +(210, '2025-07-01', 7, 4, 3, 1, NULL, 5.00, NULL, '2025-07-05 01:42:57', '2025-07-05 01:42:57', 3, NULL), +(211, '2025-07-01', 7, 4, 3, 2, 2, 3.00, NULL, '2025-07-05 01:42:57', '2025-07-05 01:42:57', 3, NULL), +(212, '2025-07-01', 5, 4, 3, 1, NULL, 8.00, NULL, '2025-07-05 01:42:57', '2025-07-07 04:21:24', 3, 3), +(213, '2025-07-01', 5, 4, 3, 2, 2, 4.00, NULL, '2025-07-05 01:42:57', '2025-07-07 04:21:10', 3, 3), +(214, '2025-07-01', 4, 4, 3, 1, NULL, 8.00, NULL, '2025-07-05 01:42:57', '2025-07-07 04:21:41', 3, 3), +(215, '2025-07-01', 4, 4, 3, 2, 2, 4.00, NULL, '2025-07-05 01:42:57', '2025-07-07 04:21:32', 3, 3), +(216, '2025-07-01', 1, 4, 3, 1, NULL, 5.00, NULL, '2025-07-05 01:42:57', '2025-07-05 01:42:57', 3, NULL), +(217, '2025-07-01', 1, 4, 3, 2, 2, 3.00, NULL, '2025-07-05 01:42:57', '2025-07-05 01:42:57', 3, NULL), +(218, '2025-07-02', 2, 3, 2, 1, NULL, 10.00, NULL, '2025-07-05 01:43:36', '2025-07-05 01:43:36', 3, NULL), +(219, '2025-07-02', 3, 3, 2, 1, NULL, 10.00, NULL, '2025-07-05 01:43:36', '2025-07-05 01:43:36', 3, NULL), +(220, '2025-07-02', 10, 3, 2, 1, NULL, 10.00, NULL, '2025-07-05 01:43:36', '2025-07-05 01:43:36', 3, NULL), +(221, '2025-07-02', 9, 3, 2, 1, NULL, 10.00, NULL, '2025-07-05 01:43:36', '2025-07-05 01:43:36', 3, NULL), +(222, '2025-07-02', 8, 3, 2, 1, NULL, 10.00, NULL, '2025-07-05 01:43:36', '2025-07-05 01:43:36', 3, NULL), +(223, '2025-07-02', 6, 3, 2, 1, NULL, 10.00, NULL, '2025-07-05 01:43:36', '2025-07-05 01:43:36', 3, NULL), +(224, '2025-07-02', 7, 3, 2, 1, NULL, 10.00, NULL, '2025-07-05 01:43:36', '2025-07-05 01:43:36', 3, NULL), +(225, '2025-07-02', 5, 4, 3, 2, 2, 4.00, NULL, '2025-07-05 01:44:11', '2025-07-05 01:44:11', 3, NULL), +(226, '2025-07-02', 5, 4, 3, 1, NULL, 6.00, NULL, '2025-07-05 01:44:11', '2025-07-05 01:44:54', 3, 3), +(227, '2025-07-02', 4, 4, 3, 2, 2, 4.00, NULL, '2025-07-05 01:44:11', '2025-07-05 01:44:11', 3, NULL), +(228, '2025-07-02', 4, 4, 3, 1, NULL, 6.00, NULL, '2025-07-05 01:44:11', '2025-07-05 01:44:59', 3, 3), +(229, '2025-07-02', 1, 4, 3, 2, 2, 4.00, NULL, '2025-07-05 01:44:11', '2025-07-05 01:44:11', 3, NULL), +(230, '2025-07-02', 1, 4, 3, 1, NULL, 6.00, NULL, '2025-07-05 01:44:11', '2025-07-05 01:45:05', 3, 3), +(231, '2025-07-03', 2, 3, 2, 1, NULL, 10.00, NULL, '2025-07-05 01:45:44', '2025-07-05 01:45:44', 3, NULL), +(232, '2025-07-03', 6, 3, 2, 1, NULL, 10.00, NULL, '2025-07-05 01:45:45', '2025-07-05 01:45:45', 3, NULL), +(233, '2025-07-03', 9, 3, 2, 1, NULL, 10.00, NULL, '2025-07-05 01:45:45', '2025-07-05 01:45:45', 3, NULL), +(234, '2025-07-03', 8, 3, 2, 1, NULL, 10.00, NULL, '2025-07-05 01:45:45', '2025-07-05 01:45:45', 3, NULL), +(235, '2025-07-03', 7, 4, 3, 1, NULL, 10.00, NULL, '2025-07-05 01:46:07', '2025-07-05 01:46:07', 3, NULL), +(236, '2025-07-03', 1, 4, 3, 1, NULL, 10.00, NULL, '2025-07-05 01:46:07', '2025-07-05 01:46:07', 3, NULL), +(237, '2025-07-03', 3, 4, 3, 1, NULL, 10.00, NULL, '2025-07-05 01:46:08', '2025-07-05 01:46:08', 3, NULL), +(238, '2025-07-03', 4, 4, 3, 1, NULL, 10.00, NULL, '2025-07-05 01:46:08', '2025-07-05 01:46:08', 3, NULL), +(239, '2025-07-03', 5, 4, 3, 1, NULL, 10.00, NULL, '2025-07-05 01:46:08', '2025-07-05 01:46:08', 3, NULL), +(240, '2025-07-03', 10, 4, 3, 1, NULL, 10.00, NULL, '2025-07-05 01:46:08', '2025-07-05 01:46:08', 3, NULL), +(241, '2025-07-04', 10, 4, 3, 2, 2, 2.00, NULL, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), +(242, '2025-07-04', 10, 4, 3, 1, NULL, 6.00, NULL, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), +(243, '2025-07-04', 5, 4, 3, 2, 2, 2.00, NULL, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), +(244, '2025-07-04', 5, 4, 3, 1, NULL, 6.00, NULL, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), +(245, '2025-07-04', 4, 4, 3, 2, 2, 2.00, NULL, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), +(246, '2025-07-04', 4, 4, 3, 1, NULL, 6.00, NULL, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), +(247, '2025-07-04', 9, 4, 3, 2, 2, 2.00, NULL, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), +(248, '2025-07-04', 9, 4, 3, 1, NULL, 6.00, NULL, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), +(249, '2025-07-04', 8, 4, 3, 2, 2, 2.00, NULL, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), +(250, '2025-07-04', 8, 4, 3, 1, NULL, 6.00, NULL, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), +(251, '2025-07-04', 3, 4, 3, 2, 2, 2.00, NULL, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), +(252, '2025-07-04', 3, 4, 3, 1, NULL, 6.00, NULL, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), +(253, '2025-07-04', 2, 4, 3, 2, 2, 2.00, NULL, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), +(254, '2025-07-04', 2, 4, 3, 1, NULL, 6.00, NULL, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), +(255, '2025-07-04', 7, 4, 3, 2, 2, 2.00, NULL, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), +(256, '2025-07-04', 7, 4, 3, 1, NULL, 6.00, NULL, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), +(257, '2025-07-04', 6, 4, 3, 2, 2, 2.00, NULL, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), +(258, '2025-07-04', 6, 4, 3, 1, NULL, 6.00, NULL, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), +(259, '2025-07-04', 1, 4, 3, 2, 2, 2.00, NULL, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), +(260, '2025-07-04', 1, 4, 3, 1, NULL, 6.00, NULL, '2025-07-05 01:51:47', '2025-07-05 01:51:47', 3, NULL), +(261, '2025-07-05', 8, 4, 2, 1, NULL, 8.00, NULL, '2025-07-05 05:36:38', '2025-07-05 05:36:38', 5, NULL), +(262, '2025-07-05', 5, 4, 2, 1, NULL, 8.00, NULL, '2025-07-05 05:36:38', '2025-07-05 05:36:38', 5, NULL), +(263, '2025-07-05', 4, 4, 2, 1, NULL, 8.00, NULL, '2025-07-05 05:36:39', '2025-07-05 05:36:39', 5, NULL), +(264, '2025-07-05', 3, 4, 2, 1, NULL, 8.00, NULL, '2025-07-05 05:36:39', '2025-07-05 05:36:39', 5, NULL), +(265, '2025-07-05', 2, 4, 2, 1, NULL, 8.00, NULL, '2025-07-05 05:36:39', '2025-07-05 05:36:39', 5, NULL), +(266, '2025-07-05', 1, 4, 2, 1, NULL, 8.00, NULL, '2025-07-05 05:36:39', '2025-07-05 05:36:39', 5, NULL), +(267, '2025-07-06', 10, 4, 3, 1, NULL, 8.00, NULL, '2025-07-06 05:34:32', '2025-07-06 05:46:08', 5, 3), +(268, '2025-07-06', 9, 4, 3, 1, NULL, 8.00, NULL, '2025-07-06 05:34:32', '2025-07-06 05:46:16', 5, 3), +(269, '2025-07-06', 7, 4, 3, 1, NULL, 8.00, NULL, '2025-07-06 05:34:32', '2025-07-06 05:46:22', 5, 3), +(270, '2025-07-06', 6, 4, 3, 1, NULL, 8.00, NULL, '2025-07-06 05:34:32', '2025-07-06 05:46:27', 5, 3), +(271, '2025-07-06', 4, 4, 3, 1, NULL, 8.00, NULL, '2025-07-06 05:34:32', '2025-07-06 05:46:33', 5, 3), +(272, '2025-07-06', 3, 4, 3, 1, NULL, 8.00, NULL, '2025-07-06 05:34:32', '2025-07-06 05:46:39', 5, 3), +(273, '2025-07-06', 2, 4, 3, 1, NULL, 8.00, NULL, '2025-07-06 05:34:32', '2025-07-06 05:46:44', 5, 3), +(274, '2025-07-06', 1, 4, 3, 1, NULL, 8.00, NULL, '2025-07-06 05:34:32', '2025-07-06 05:46:49', 5, 3), +(275, '2025-07-07', 10, 4, 3, 1, NULL, 8.00, NULL, '2025-07-07 06:49:31', '2025-07-07 06:49:31', 6, NULL), +(276, '2025-07-07', 9, 4, 3, 1, NULL, 8.00, NULL, '2025-07-07 06:49:31', '2025-07-07 06:49:31', 6, NULL), +(277, '2025-07-07', 8, 4, 3, 1, NULL, 8.00, NULL, '2025-07-07 06:49:31', '2025-07-07 06:49:31', 6, NULL), +(278, '2025-07-07', 7, 4, 3, 1, NULL, 8.00, NULL, '2025-07-07 06:49:31', '2025-07-07 06:49:31', 6, NULL), +(279, '2025-07-07', 3, 4, 3, 1, NULL, 8.00, NULL, '2025-07-07 06:49:31', '2025-07-07 06:49:31', 6, NULL), +(280, '2025-07-07', 4, 4, 3, 1, NULL, 8.00, NULL, '2025-07-07 06:49:31', '2025-07-07 06:49:31', 6, NULL), +(281, '2025-07-07', 5, 4, 3, 1, NULL, 8.00, NULL, '2025-07-07 06:49:31', '2025-07-07 06:49:31', 6, NULL), +(282, '2025-07-07', 6, 4, 3, 1, NULL, 8.00, NULL, '2025-07-07 06:49:31', '2025-07-07 06:49:31', 6, NULL), +(283, '2025-07-07', 2, 4, 3, 1, NULL, 8.00, NULL, '2025-07-07 06:49:31', '2025-07-07 06:49:31', 6, NULL), +(284, '2025-07-07', 1, 4, 3, 1, NULL, 8.00, NULL, '2025-07-07 06:49:31', '2025-07-07 06:49:31', 6, NULL), +(285, '2025-07-08', 10, 4, 3, 1, NULL, 8.00, NULL, '2025-07-08 06:36:57', '2025-07-08 06:36:57', 3, NULL), +(286, '2025-07-08', 9, 4, 3, 1, NULL, 8.00, NULL, '2025-07-08 06:36:58', '2025-07-08 06:36:58', 3, NULL), +(287, '2025-07-08', 8, 4, 3, 1, NULL, 8.00, NULL, '2025-07-08 06:36:58', '2025-07-08 06:36:58', 3, NULL), +(288, '2025-07-08', 7, 4, 3, 1, NULL, 8.00, NULL, '2025-07-08 06:36:58', '2025-07-08 06:36:58', 3, NULL), +(289, '2025-07-08', 6, 4, 3, 1, NULL, 8.00, NULL, '2025-07-08 06:36:58', '2025-07-08 06:36:58', 3, NULL), +(290, '2025-07-08', 1, 4, 3, 1, NULL, 8.00, NULL, '2025-07-08 06:36:58', '2025-07-08 06:36:58', 3, NULL), +(291, '2025-07-08', 2, 4, 3, 1, NULL, 8.00, NULL, '2025-07-08 06:36:58', '2025-07-08 06:36:58', 3, NULL), +(292, '2025-07-08', 3, 4, 3, 1, NULL, 8.00, NULL, '2025-07-08 06:36:58', '2025-07-08 06:36:58', 3, NULL), +(293, '2025-07-08', 5, 4, 3, 1, NULL, 8.00, NULL, '2025-07-08 06:36:58', '2025-07-08 06:36:58', 3, NULL), +(294, '2025-07-08', 4, 4, 3, 1, NULL, 8.00, NULL, '2025-07-08 06:36:58', '2025-07-08 06:36:58', 3, NULL), +(295, '2025-07-09', 10, 4, 3, 1, NULL, 8.00, NULL, '2025-07-09 22:08:40', '2025-07-09 22:08:40', 5, NULL), +(296, '2025-07-09', 9, 4, 3, 1, NULL, 8.00, NULL, '2025-07-09 22:08:40', '2025-07-09 22:08:40', 5, NULL), +(297, '2025-07-09', 8, 4, 3, 1, NULL, 8.00, NULL, '2025-07-09 22:08:40', '2025-07-09 22:08:40', 5, NULL), +(298, '2025-07-09', 7, 4, 3, 1, NULL, 8.00, NULL, '2025-07-09 22:08:41', '2025-07-09 22:08:41', 5, NULL), +(299, '2025-07-09', 6, 4, 3, 1, NULL, 8.00, NULL, '2025-07-09 22:08:41', '2025-07-09 22:08:41', 5, NULL), +(300, '2025-07-09', 2, 4, 3, 1, NULL, 8.00, NULL, '2025-07-09 22:08:41', '2025-07-09 22:08:41', 5, NULL), +(301, '2025-07-09', 3, 4, 3, 1, NULL, 8.00, NULL, '2025-07-09 22:08:42', '2025-07-09 22:08:42', 5, NULL), +(302, '2025-07-09', 4, 4, 3, 1, NULL, 8.00, NULL, '2025-07-09 22:08:42', '2025-07-09 22:08:42', 5, NULL), +(303, '2025-07-09', 5, 4, 3, 1, NULL, 8.00, NULL, '2025-07-09 22:08:42', '2025-07-09 22:08:42', 5, NULL), +(304, '2025-07-09', 1, 4, 3, 1, NULL, 4.00, NULL, '2025-07-09 22:09:10', '2025-07-09 22:09:10', 5, NULL), +(305, '2025-07-10', 9, 4, 3, 1, NULL, 8.00, NULL, '2025-07-10 06:33:58', '2025-07-10 06:33:58', 3, NULL), +(306, '2025-07-10', 8, 4, 3, 1, NULL, 8.00, NULL, '2025-07-10 06:33:58', '2025-07-10 06:33:58', 3, NULL), +(307, '2025-07-10', 5, 4, 3, 1, NULL, 8.00, NULL, '2025-07-10 06:33:58', '2025-07-10 06:33:58', 3, NULL), +(308, '2025-07-10', 6, 4, 3, 1, NULL, 8.00, NULL, '2025-07-10 06:33:59', '2025-07-10 06:33:59', 3, NULL), +(309, '2025-07-10', 2, 4, 3, 1, NULL, 8.00, NULL, '2025-07-10 06:33:59', '2025-07-10 06:33:59', 3, NULL), +(310, '2025-07-10', 3, 4, 3, 1, NULL, 8.00, NULL, '2025-07-10 06:33:59', '2025-07-10 06:33:59', 3, NULL), +(311, '2025-07-10', 4, 4, 3, 1, NULL, 8.00, NULL, '2025-07-10 06:33:59', '2025-07-10 06:33:59', 3, NULL), +(312, '2025-07-10', 1, 4, 3, 1, NULL, 8.00, NULL, '2025-07-10 06:33:59', '2025-07-10 06:33:59', 3, NULL), +(313, '2025-07-10', 7, 4, 3, 1, NULL, 8.00, NULL, '2025-07-10 06:33:59', '2025-07-10 06:33:59', 3, NULL), +(314, '2025-07-10', 10, 4, 3, 1, NULL, 8.00, NULL, '2025-07-10 06:33:59', '2025-07-10 06:33:59', 3, NULL), +(315, '2025-07-12', 9, 4, 3, 1, NULL, 8.00, NULL, '2025-07-12 05:41:30', '2025-07-12 05:41:30', 3, NULL), +(316, '2025-07-12', 8, 4, 3, 1, NULL, 8.00, NULL, '2025-07-12 05:41:30', '2025-07-12 05:41:30', 3, NULL), +(317, '2025-07-12', 6, 4, 3, 1, NULL, 8.00, NULL, '2025-07-12 05:41:30', '2025-07-12 05:41:30', 3, NULL), +(318, '2025-07-12', 5, 4, 3, 1, NULL, 8.00, NULL, '2025-07-12 05:41:30', '2025-07-12 05:41:30', 3, NULL), +(319, '2025-07-12', 4, 4, 3, 1, NULL, 8.00, NULL, '2025-07-12 05:41:30', '2025-07-12 05:41:30', 3, NULL), +(320, '2025-07-12', 2, 4, 3, 1, NULL, 8.00, NULL, '2025-07-12 05:41:30', '2025-07-12 05:41:30', 3, NULL), +(321, '2025-07-12', 1, 4, 3, 1, NULL, 8.00, NULL, '2025-07-12 05:41:30', '2025-07-12 05:41:30', 3, NULL), +(322, '2025-07-14', 8, 4, 3, 1, NULL, 6.00, NULL, '2025-07-14 06:46:30', '2025-07-14 06:46:30', 3, NULL), +(323, '2025-07-14', 10, 4, 3, 1, NULL, 8.00, NULL, '2025-07-14 06:46:57', '2025-07-14 06:46:57', 3, NULL), +(324, '2025-07-14', 9, 4, 3, 1, NULL, 8.00, NULL, '2025-07-14 06:46:57', '2025-07-14 06:46:57', 3, NULL), +(325, '2025-07-14', 7, 4, 3, 1, NULL, 8.00, NULL, '2025-07-14 06:46:57', '2025-07-14 06:46:57', 3, NULL), +(326, '2025-07-14', 6, 4, 3, 1, NULL, 8.00, NULL, '2025-07-14 06:46:57', '2025-07-14 06:46:57', 3, NULL), +(327, '2025-07-14', 1, 4, 3, 1, NULL, 8.00, NULL, '2025-07-14 06:46:57', '2025-07-14 06:46:57', 3, NULL), +(328, '2025-07-14', 2, 4, 3, 1, NULL, 8.00, NULL, '2025-07-14 06:46:57', '2025-07-14 06:46:57', 3, NULL), +(329, '2025-07-14', 3, 4, 3, 1, NULL, 8.00, NULL, '2025-07-14 06:46:57', '2025-07-14 06:46:57', 3, NULL), +(330, '2025-07-14', 4, 4, 3, 1, NULL, 8.00, NULL, '2025-07-14 06:46:57', '2025-07-14 06:46:57', 3, NULL), +(331, '2025-07-15', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-07-15 05:57:06', '2025-07-15 05:57:06', 5, NULL), +(332, '2025-07-15', 9, 3, 2, 1, NULL, 8.00, NULL, '2025-07-15 05:57:06', '2025-07-15 05:57:06', 5, NULL), +(333, '2025-07-15', 5, 3, 2, 2, 4, 4.00, NULL, '2025-07-15 05:57:47', '2025-07-15 05:57:47', 5, NULL), +(334, '2025-07-15', 5, 4, 3, 1, NULL, 4.00, NULL, '2025-07-15 05:57:47', '2025-07-15 05:57:47', 5, NULL), +(335, '2025-07-15', 10, 4, 3, 1, NULL, 8.00, NULL, '2025-07-15 05:58:19', '2025-07-15 05:58:19', 5, NULL), +(336, '2025-07-15', 8, 4, 3, 1, NULL, 8.00, NULL, '2025-07-15 05:58:19', '2025-07-15 05:58:19', 5, NULL), +(337, '2025-07-15', 7, 4, 3, 1, NULL, 8.00, NULL, '2025-07-15 05:58:19', '2025-07-15 05:58:19', 5, NULL), +(338, '2025-07-15', 6, 4, 3, 1, NULL, 8.00, NULL, '2025-07-15 05:58:19', '2025-07-15 05:58:19', 5, NULL), +(339, '2025-07-15', 2, 4, 3, 1, NULL, 8.00, NULL, '2025-07-15 05:58:19', '2025-07-15 05:58:19', 5, NULL), +(340, '2025-07-15', 1, 4, 3, 1, NULL, 8.00, NULL, '2025-07-15 05:58:19', '2025-07-15 05:58:19', 5, NULL), +(341, '2025-07-14', 5, 4, 3, 1, NULL, 8.00, NULL, '2025-07-15 06:57:26', '2025-07-15 06:57:26', 3, NULL), +(342, '2025-07-16', 4, 4, 3, 1, NULL, 2.00, NULL, '2025-07-16 06:46:46', '2025-07-16 06:46:46', 5, NULL), +(343, '2025-07-16', 4, 3, 2, 1, NULL, 4.00, NULL, '2025-07-16 06:46:46', '2025-07-16 06:46:46', 5, NULL), +(344, '2025-07-16', 4, 3, 2, 1, NULL, 2.00, NULL, '2025-07-16 06:46:46', '2025-07-16 06:46:46', 5, NULL), +(345, '2025-07-16', 5, 4, 3, 1, NULL, 2.00, NULL, '2025-07-16 06:46:46', '2025-07-16 06:46:46', 5, NULL), +(346, '2025-07-16', 5, 3, 2, 1, NULL, 4.00, NULL, '2025-07-16 06:46:46', '2025-07-16 06:46:46', 5, NULL), +(347, '2025-07-16', 5, 3, 2, 1, NULL, 2.00, NULL, '2025-07-16 06:46:46', '2025-07-16 06:46:46', 5, NULL), +(348, '2025-07-16', 10, 4, 3, 1, NULL, 2.00, NULL, '2025-07-16 06:47:53', '2025-07-16 06:47:53', 5, NULL), +(349, '2025-07-16', 10, 3, 2, 1, NULL, 4.00, NULL, '2025-07-16 06:47:53', '2025-07-16 06:47:53', 5, NULL), +(350, '2025-07-16', 10, 3, 2, 1, NULL, 2.00, NULL, '2025-07-16 06:47:53', '2025-07-16 06:47:53', 5, NULL), +(351, '2025-07-16', 6, 4, 3, 1, NULL, 2.00, NULL, '2025-07-16 06:47:53', '2025-07-16 06:47:53', 5, NULL), +(352, '2025-07-16', 6, 3, 2, 1, NULL, 4.00, NULL, '2025-07-16 06:47:53', '2025-07-16 06:47:53', 5, NULL), +(353, '2025-07-16', 6, 3, 2, 1, NULL, 2.00, NULL, '2025-07-16 06:47:53', '2025-07-16 06:47:53', 5, NULL), +(354, '2025-07-16', 9, 3, 2, 1, NULL, 8.00, NULL, '2025-07-16 06:48:32', '2025-07-16 06:48:32', 5, NULL), +(355, '2025-07-16', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-07-16 06:48:32', '2025-07-16 06:48:32', 5, NULL), +(356, '2025-07-16', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-07-16 06:48:32', '2025-07-16 06:48:32', 5, NULL), +(357, '2025-07-16', 2, 3, 2, 1, NULL, 8.00, NULL, '2025-07-16 06:48:32', '2025-07-16 06:48:32', 5, NULL), +(358, '2025-07-16', 1, 4, 3, 1, NULL, 8.00, NULL, '2025-07-16 06:51:31', '2025-07-16 06:51:31', 3, NULL), +(359, '2025-07-16', 7, 4, 3, 1, NULL, 8.00, NULL, '2025-07-16 06:51:31', '2025-07-16 06:51:31', 3, NULL), +(360, '2025-07-17', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-07-17 06:45:22', '2025-07-17 06:45:22', 3, NULL), +(361, '2025-07-17', 5, 3, 2, 1, NULL, 4.00, NULL, '2025-07-17 06:46:48', '2025-07-17 06:46:48', 5, NULL), +(362, '2025-07-17', 5, 3, 2, 2, 4, 4.00, NULL, '2025-07-17 06:46:48', '2025-07-17 06:46:48', 5, NULL), +(363, '2025-07-17', 4, 3, 2, 1, NULL, 4.00, NULL, '2025-07-17 06:46:48', '2025-07-17 06:46:48', 5, NULL), +(364, '2025-07-17', 4, 3, 2, 2, 4, 4.00, NULL, '2025-07-17 06:46:48', '2025-07-17 06:46:48', 5, NULL), +(365, '2025-07-17', 2, 3, 2, 1, NULL, 4.00, NULL, '2025-07-17 06:46:48', '2025-07-17 06:46:48', 5, NULL), +(366, '2025-07-17', 2, 3, 2, 2, 4, 4.00, NULL, '2025-07-17 06:46:48', '2025-07-17 06:46:48', 5, NULL), +(367, '2025-07-17', 10, 3, 2, 1, NULL, 8.00, NULL, '2025-07-17 06:47:19', '2025-07-17 06:47:19', 5, NULL), +(368, '2025-07-17', 9, 3, 2, 1, NULL, 8.00, NULL, '2025-07-17 06:47:19', '2025-07-17 06:47:19', 5, NULL), +(369, '2025-07-17', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-07-17 06:47:19', '2025-07-17 06:47:19', 5, NULL), +(370, '2025-07-17', 7, 3, 2, 1, NULL, 8.00, NULL, '2025-07-17 06:47:19', '2025-07-17 06:47:19', 5, NULL), +(371, '2025-07-17', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-07-17 06:47:19', '2025-07-17 06:47:19', 5, NULL), +(372, '2025-07-17', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-07-17 06:47:19', '2025-07-17 06:47:19', 5, NULL), +(373, '2025-07-18', 7, 4, 3, 2, 1, 2.00, NULL, '2025-07-18 05:54:47', '2025-07-18 05:54:47', 3, NULL), +(374, '2025-07-18', 1, 4, 3, 2, 1, 2.00, NULL, '2025-07-18 05:54:48', '2025-07-18 05:54:48', 3, NULL), +(376, '2025-07-18', 5, 4, 3, 1, NULL, 2.00, NULL, '2025-07-18 05:58:33', '2025-07-18 05:58:33', 3, NULL), +(377, '2025-07-18', 5, 3, 2, 1, NULL, 6.00, NULL, '2025-07-18 05:58:33', '2025-07-18 05:58:33', 3, NULL), +(378, '2025-07-18', 7, 3, 2, 1, NULL, 6.00, NULL, '2025-07-18 05:59:42', '2025-07-18 05:59:42', 3, NULL), +(379, '2025-07-18', 1, 3, 3, 1, NULL, 6.00, NULL, '2025-07-18 06:00:15', '2025-07-18 06:00:15', 3, NULL), +(380, '2025-07-18', 10, 3, 2, 1, NULL, 8.00, NULL, '2025-07-18 06:36:13', '2025-07-18 06:36:13', 5, NULL), +(381, '2025-07-18', 9, 3, 2, 1, NULL, 8.00, NULL, '2025-07-18 06:36:13', '2025-07-18 06:36:13', 5, NULL), +(382, '2025-07-18', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-07-18 06:36:13', '2025-07-18 06:36:13', 5, NULL), +(383, '2025-07-18', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-07-18 06:36:13', '2025-07-18 06:36:13', 5, NULL), +(384, '2025-07-18', 4, 3, 2, 1, NULL, 8.00, NULL, '2025-07-18 06:36:13', '2025-07-18 06:36:13', 5, NULL), +(385, '2025-07-18', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-07-18 06:36:13', '2025-07-18 06:36:13', 5, NULL), +(386, '2025-07-18', 2, 3, 2, 1, NULL, 8.00, NULL, '2025-07-18 06:36:13', '2025-07-18 06:36:13', 5, NULL), +(387, '2025-07-21', 5, 4, 3, 2, 1, 4.00, NULL, '2025-07-21 06:40:08', '2025-07-21 06:40:08', 5, NULL), +(388, '2025-07-21', 5, 3, 2, 1, NULL, 4.00, NULL, '2025-07-21 06:40:08', '2025-07-21 06:40:08', 5, NULL), +(389, '2025-07-21', 4, 4, 3, 2, 1, 4.00, NULL, '2025-07-21 06:40:08', '2025-07-21 06:40:08', 5, NULL), +(390, '2025-07-21', 4, 3, 2, 1, NULL, 4.00, NULL, '2025-07-21 06:40:08', '2025-07-21 06:40:08', 5, NULL), +(391, '2025-07-21', 10, 3, 2, 1, NULL, 6.00, NULL, '2025-07-21 06:40:32', '2025-07-22 06:58:42', 5, 3), +(392, '2025-07-21', 9, 3, 2, 1, NULL, 8.00, NULL, '2025-07-21 06:40:32', '2025-07-21 06:40:32', 5, NULL), +(393, '2025-07-21', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-07-21 06:40:32', '2025-07-21 06:40:32', 5, NULL), +(394, '2025-07-21', 7, 3, 2, 1, NULL, 8.00, NULL, '2025-07-21 06:40:32', '2025-07-21 06:40:32', 5, NULL), +(395, '2025-07-21', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-07-21 06:40:32', '2025-07-21 06:40:32', 5, NULL), +(396, '2025-07-21', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-07-21 06:40:32', '2025-07-21 06:40:32', 5, NULL), +(397, '2025-07-21', 2, 3, 2, 1, NULL, 8.00, NULL, '2025-07-21 06:40:32', '2025-07-21 06:40:32', 5, NULL), +(398, '2025-07-21', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-07-21 06:53:37', '2025-07-21 06:53:37', 3, NULL), +(399, '2025-07-22', 10, 3, 2, 1, NULL, 8.00, NULL, '2025-07-22 06:45:47', '2025-07-22 06:45:47', 5, NULL), +(400, '2025-07-22', 9, 3, 2, 1, NULL, 8.00, NULL, '2025-07-22 06:45:48', '2025-07-22 06:45:48', 5, NULL), +(401, '2025-07-22', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-07-22 06:45:48', '2025-07-22 06:45:48', 5, NULL), +(402, '2025-07-22', 7, 3, 2, 1, NULL, 8.00, NULL, '2025-07-22 06:45:48', '2025-07-22 06:45:48', 5, NULL), +(403, '2025-07-22', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-07-22 06:45:48', '2025-07-22 06:45:48', 5, NULL), +(404, '2025-07-22', 4, 3, 2, 1, NULL, 8.00, NULL, '2025-07-22 06:45:48', '2025-07-22 06:45:48', 5, NULL), +(405, '2025-07-22', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-07-22 06:45:48', '2025-07-22 06:45:48', 5, NULL), +(406, '2025-07-22', 2, 4, 3, 2, 1, 8.00, NULL, '2025-07-22 06:46:11', '2025-07-22 06:46:11', 5, NULL), +(407, '2025-07-22', 5, 3, 3, 1, NULL, 8.00, NULL, '2025-07-22 06:46:11', '2025-07-22 06:46:11', 3, NULL), +(408, '2025-07-22', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-07-22 06:46:11', '2025-07-22 06:46:11', 3, NULL), +(409, '2025-07-23', 4, 3, 3, 1, NULL, 8.00, NULL, '2025-07-23 06:45:06', '2025-07-23 06:45:06', 5, NULL), +(410, '2025-07-23', 5, 3, 3, 1, NULL, 8.00, NULL, '2025-07-23 06:45:28', '2025-07-23 06:45:28', 3, NULL), +(411, '2025-07-23', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-07-23 06:45:28', '2025-07-23 06:45:28', 3, NULL), +(412, '2025-07-23', 10, 3, 2, 1, NULL, 8.00, NULL, '2025-07-23 06:45:30', '2025-07-23 06:45:30', 5, NULL), +(413, '2025-07-23', 9, 3, 2, 1, NULL, 8.00, NULL, '2025-07-23 06:45:30', '2025-07-23 06:45:30', 5, NULL), +(414, '2025-07-23', 7, 3, 2, 1, NULL, 8.00, NULL, '2025-07-23 06:45:30', '2025-07-23 06:45:30', 5, NULL), +(415, '2025-07-23', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-07-23 06:45:30', '2025-07-23 06:45:30', 5, NULL), +(416, '2025-07-23', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-07-23 06:45:30', '2025-07-23 06:45:30', 5, NULL), +(417, '2025-07-23', 2, 3, 2, 1, NULL, 8.00, NULL, '2025-07-23 06:45:30', '2025-07-23 06:45:30', 5, NULL), +(418, '2025-07-24', 4, 3, 3, 1, NULL, 8.00, NULL, '2025-07-24 06:36:55', '2025-07-24 06:36:55', 5, NULL), +(419, '2025-07-24', 10, 3, 2, 1, NULL, 8.00, NULL, '2025-07-24 06:37:18', '2025-07-24 06:37:18', 5, NULL), +(420, '2025-07-24', 9, 3, 2, 1, NULL, 8.00, NULL, '2025-07-24 06:37:18', '2025-07-24 06:37:18', 5, NULL), +(421, '2025-07-24', 7, 3, 2, 1, NULL, 8.00, NULL, '2025-07-24 06:37:18', '2025-07-24 06:37:18', 5, NULL), +(422, '2025-07-24', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-07-24 06:37:18', '2025-07-24 06:37:18', 5, NULL), +(423, '2025-07-24', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-07-24 06:37:18', '2025-07-24 06:37:18', 5, NULL), +(424, '2025-07-24', 2, 3, 2, 1, NULL, 8.00, NULL, '2025-07-24 06:37:18', '2025-07-24 06:37:18', 5, NULL), +(425, '2025-07-24', 5, 3, 3, 1, NULL, 8.00, NULL, '2025-07-24 06:47:04', '2025-07-24 06:47:04', 3, NULL), +(426, '2025-07-24', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-07-24 06:47:04', '2025-07-24 06:47:04', 3, NULL), +(427, '2025-07-25', 4, 3, 3, 1, NULL, 8.00, NULL, '2025-07-25 06:44:23', '2025-07-25 06:44:23', 5, NULL), +(428, '2025-07-25', 10, 3, 2, 1, NULL, 8.00, NULL, '2025-07-25 06:45:15', '2025-07-25 06:45:15', 5, NULL), +(429, '2025-07-25', 9, 3, 2, 1, NULL, 8.00, NULL, '2025-07-25 06:45:15', '2025-07-25 06:45:15', 5, NULL), +(430, '2025-07-25', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-07-25 06:45:15', '2025-07-25 06:45:15', 5, NULL), +(431, '2025-07-25', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-07-25 06:45:15', '2025-07-25 06:45:15', 5, NULL), +(432, '2025-07-25', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-07-25 06:45:15', '2025-07-25 06:45:15', 5, NULL), +(433, '2025-07-25', 2, 3, 2, 1, NULL, 8.00, NULL, '2025-07-25 06:45:15', '2025-07-25 06:45:15', 5, NULL), +(434, '2025-07-25', 5, 4, 3, 1, NULL, 8.00, NULL, '2025-07-25 06:45:18', '2025-07-25 06:45:18', 3, NULL), +(435, '2025-07-25', 7, 4, 3, 1, NULL, 8.00, NULL, '2025-07-25 06:45:19', '2025-07-25 06:45:19', 3, NULL), +(436, '2025-07-25', 1, 4, 3, 1, NULL, 8.00, NULL, '2025-07-25 06:45:19', '2025-07-25 06:45:19', 3, NULL), +(437, '2025-07-28', 5, 3, 3, 1, NULL, 8.00, NULL, '2025-07-28 06:30:39', '2025-07-28 06:30:39', 3, NULL), +(438, '2025-07-28', 4, 3, 3, 1, NULL, 8.00, NULL, '2025-07-28 06:30:39', '2025-07-28 06:30:39', 3, NULL), +(439, '2025-07-28', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-07-28 06:30:39', '2025-07-28 06:30:39', 3, NULL), +(440, '2025-07-28', 2, 5, 2, 1, NULL, 4.00, NULL, '2025-07-28 06:33:08', '2025-07-28 06:33:08', 5, NULL), +(441, '2025-07-28', 2, 3, 2, 1, NULL, 4.00, NULL, '2025-07-28 06:33:08', '2025-07-28 06:33:08', 5, NULL), +(442, '2025-07-28', 10, 3, 2, 1, NULL, 8.00, NULL, '2025-07-28 06:33:34', '2025-07-28 06:33:34', 5, NULL), +(443, '2025-07-28', 9, 3, 2, 1, NULL, 8.00, NULL, '2025-07-28 06:33:34', '2025-07-28 06:33:34', 5, NULL), +(444, '2025-07-28', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-07-28 06:33:34', '2025-07-28 06:33:34', 5, NULL), +(445, '2025-07-28', 7, 3, 2, 1, NULL, 8.00, NULL, '2025-07-28 06:33:34', '2025-07-28 06:33:34', 5, NULL), +(446, '2025-07-28', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-07-28 06:33:34', '2025-07-28 06:33:34', 5, NULL), +(447, '2025-07-28', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-07-28 06:33:34', '2025-07-28 06:33:34', 5, NULL), +(448, '2025-07-29', 5, 3, 3, 1, NULL, 8.00, NULL, '2025-07-29 06:39:13', '2025-07-29 06:39:13', 3, NULL), +(449, '2025-07-29', 4, 3, 3, 1, NULL, 8.00, NULL, '2025-07-29 06:39:13', '2025-07-29 06:39:13', 3, NULL), +(450, '2025-07-29', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-07-29 06:39:13', '2025-07-29 06:39:13', 3, NULL), +(451, '2025-07-30', 5, 3, 3, 1, NULL, 8.00, NULL, '2025-07-30 06:50:30', '2025-07-30 06:50:30', 3, NULL), +(452, '2025-07-30', 4, 3, 3, 1, NULL, 8.00, NULL, '2025-07-30 06:50:30', '2025-07-30 06:50:30', 3, NULL), +(453, '2025-07-30', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-07-30 06:50:30', '2025-07-30 06:50:30', 3, NULL), +(454, '2025-07-30', 10, 3, 2, 1, NULL, 8.00, NULL, '2025-07-30 06:52:16', '2025-07-30 06:52:16', 5, NULL), +(455, '2025-07-30', 9, 3, 2, 1, NULL, 8.00, NULL, '2025-07-30 06:52:16', '2025-07-30 06:52:16', 5, NULL), +(456, '2025-07-30', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-07-30 06:52:16', '2025-07-30 06:52:16', 5, NULL), +(457, '2025-07-30', 7, 3, 2, 1, NULL, 8.00, NULL, '2025-07-30 06:52:16', '2025-07-30 06:52:16', 5, NULL), +(458, '2025-07-30', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-07-30 06:52:16', '2025-07-30 06:52:16', 5, NULL), +(459, '2025-07-30', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-07-30 06:52:16', '2025-07-30 06:52:16', 5, NULL), +(460, '2025-07-30', 2, 3, 2, 1, NULL, 8.00, NULL, '2025-07-30 06:52:16', '2025-07-30 06:52:16', 5, NULL), +(461, '2025-07-31', 1, 3, 3, 1, NULL, 4.00, NULL, '2025-07-31 06:42:56', '2025-07-31 06:42:56', 5, NULL), +(462, '2025-07-31', 4, 3, 3, 1, NULL, 4.00, NULL, '2025-07-31 06:43:32', '2025-07-31 06:43:32', 5, NULL), +(463, '2025-07-31', 4, 3, 2, 1, NULL, 4.00, NULL, '2025-07-31 06:43:32', '2025-07-31 06:43:32', 5, NULL), +(464, '2025-07-31', 5, 3, 3, 1, NULL, 4.00, NULL, '2025-07-31 06:43:32', '2025-07-31 06:43:32', 5, NULL), +(465, '2025-07-31', 5, 3, 2, 1, NULL, 4.00, NULL, '2025-07-31 06:43:32', '2025-07-31 06:43:32', 5, NULL), +(466, '2025-07-31', 10, 3, 2, 1, NULL, 8.00, NULL, '2025-07-31 06:44:00', '2025-07-31 06:44:00', 5, NULL), +(467, '2025-07-31', 9, 3, 2, 1, NULL, 8.00, NULL, '2025-07-31 06:44:00', '2025-07-31 06:44:00', 5, NULL), +(468, '2025-07-31', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-07-31 06:44:00', '2025-07-31 06:44:00', 5, NULL), +(469, '2025-07-31', 7, 3, 2, 1, NULL, 8.00, NULL, '2025-07-31 06:44:00', '2025-07-31 06:44:00', 5, NULL), +(470, '2025-07-31', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-07-31 06:44:00', '2025-07-31 06:44:00', 5, NULL), +(471, '2025-07-31', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-07-31 06:44:00', '2025-07-31 06:44:00', 5, NULL), +(472, '2025-07-31', 2, 3, 2, 1, NULL, 8.00, NULL, '2025-07-31 06:44:00', '2025-07-31 06:44:00', 5, NULL), +(473, '2025-07-11', 10, 3, 2, 1, NULL, 8.00, NULL, '2025-07-31 22:24:47', '2025-07-31 22:24:47', 3, NULL), +(474, '2025-07-11', 5, 3, 2, 1, NULL, 8.00, NULL, '2025-07-31 22:24:47', '2025-07-31 22:24:47', 3, NULL), +(475, '2025-07-11', 4, 3, 2, 1, NULL, 8.00, NULL, '2025-07-31 22:24:47', '2025-07-31 22:24:47', 3, NULL), +(476, '2025-07-11', 9, 3, 2, 1, NULL, 8.00, NULL, '2025-07-31 22:24:47', '2025-07-31 22:24:47', 3, NULL), +(477, '2025-07-11', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-07-31 22:24:47', '2025-07-31 22:24:47', 3, NULL), +(478, '2025-07-11', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-07-31 22:24:47', '2025-07-31 22:24:47', 3, NULL), +(479, '2025-07-11', 2, 3, 2, 1, NULL, 8.00, NULL, '2025-07-31 22:24:47', '2025-07-31 22:24:47', 3, NULL), +(480, '2025-07-11', 7, 3, 2, 1, NULL, 8.00, NULL, '2025-07-31 22:24:47', '2025-07-31 22:24:47', 3, NULL), +(481, '2025-07-11', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-07-31 22:24:47', '2025-07-31 22:24:47', 3, NULL), +(482, '2025-07-11', 1, 3, 2, 1, NULL, 8.00, NULL, '2025-07-31 22:24:47', '2025-07-31 22:24:47', 3, NULL), +(483, '2025-08-01', 10, 3, 2, 1, NULL, 8.00, NULL, '2025-08-01 04:57:47', '2025-08-01 04:57:47', 5, NULL), +(484, '2025-08-01', 9, 3, 2, 1, NULL, 8.00, NULL, '2025-08-01 04:57:47', '2025-08-01 04:57:47', 5, NULL), +(485, '2025-08-01', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-08-01 04:57:47', '2025-08-01 04:57:47', 5, NULL), +(486, '2025-08-01', 7, 3, 2, 1, NULL, 8.00, NULL, '2025-08-01 04:57:47', '2025-08-01 04:57:47', 5, NULL), +(487, '2025-08-01', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-08-01 04:57:47', '2025-08-01 04:57:47', 5, NULL), +(488, '2025-08-01', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-08-01 04:57:47', '2025-08-01 04:57:47', 5, NULL), +(489, '2025-08-01', 2, 3, 2, 1, NULL, 8.00, NULL, '2025-08-01 04:57:48', '2025-08-01 04:57:48', 5, NULL), +(490, '2025-08-01', 4, 3, 3, 1, NULL, 4.00, NULL, '2025-08-01 05:02:28', '2025-08-01 05:02:28', 3, NULL), +(491, '2025-08-01', 4, 5, 1, 1, NULL, 4.00, NULL, '2025-08-01 05:02:28', '2025-08-01 05:02:28', 3, NULL), +(492, '2025-08-01', 5, 3, 3, 1, NULL, 4.00, NULL, '2025-08-01 05:02:28', '2025-08-01 05:02:28', 3, NULL), +(493, '2025-08-01', 5, 5, 1, 1, NULL, 4.00, NULL, '2025-08-01 05:02:28', '2025-08-01 05:02:28', 3, NULL), +(494, '2025-08-07', 9, 3, 2, 2, 4, 4.00, NULL, '2025-08-07 06:42:39', '2025-08-07 06:42:39', 5, NULL), +(495, '2025-08-07', 9, 3, 2, 1, NULL, 4.00, NULL, '2025-08-07 06:42:39', '2025-08-07 06:42:39', 5, NULL), +(496, '2025-08-07', 7, 3, 2, 2, 4, 4.00, NULL, '2025-08-07 06:42:39', '2025-08-07 06:42:39', 5, NULL), +(497, '2025-08-07', 7, 3, 2, 1, NULL, 4.00, NULL, '2025-08-07 06:42:39', '2025-08-07 06:42:39', 5, NULL), +(498, '2025-08-07', 10, 5, 2, 1, NULL, 8.00, NULL, '2025-08-07 06:43:14', '2025-08-07 06:43:14', 5, NULL), +(499, '2025-08-07', 4, 5, 2, 1, NULL, 8.00, NULL, '2025-08-07 06:43:15', '2025-08-07 06:43:15', 5, NULL), +(500, '2025-08-07', 2, 5, 2, 1, NULL, 8.00, NULL, '2025-08-07 06:43:15', '2025-08-07 06:43:15', 5, NULL), +(501, '2025-08-07', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-08-07 06:43:39', '2025-08-07 06:43:39', 5, NULL), +(502, '2025-08-07', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-08-07 06:43:39', '2025-08-07 06:43:39', 5, NULL); +INSERT INTO `daily_work_reports` (`id`, `report_date`, `worker_id`, `project_id`, `work_type_id`, `work_status_id`, `error_type_id`, `work_hours`, `description`, `created_at`, `updated_at`, `created_by`, `updated_by`) VALUES +(503, '2025-08-07', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-08-07 06:43:39', '2025-08-07 06:43:39', 5, NULL), +(504, '2025-08-07', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-08-07 06:43:52', '2025-08-07 06:43:52', 3, NULL), +(505, '2025-08-08', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-08-08 06:45:20', '2025-08-08 06:45:20', 3, NULL), +(506, '2025-08-08', 10, 5, 2, 1, NULL, 8.00, NULL, '2025-08-08 06:58:42', '2025-08-08 06:58:42', 5, NULL), +(507, '2025-08-08', 2, 5, 2, 1, NULL, 8.00, NULL, '2025-08-08 06:58:42', '2025-08-08 06:58:42', 5, NULL), +(508, '2025-08-08', 9, 3, 2, 1, NULL, 8.00, NULL, '2025-08-08 06:59:18', '2025-08-08 06:59:18', 5, NULL), +(509, '2025-08-08', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-08-08 06:59:19', '2025-08-08 06:59:19', 5, NULL), +(510, '2025-08-08', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-08-08 06:59:19', '2025-08-08 06:59:19', 5, NULL), +(511, '2025-08-08', 4, 3, 2, 1, NULL, 8.00, NULL, '2025-08-08 06:59:19', '2025-08-08 06:59:19', 5, NULL), +(512, '2025-08-08', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-08-08 06:59:19', '2025-08-08 06:59:19', 5, NULL), +(513, '2025-08-11', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-08-11 06:27:37', '2025-08-11 06:27:37', 3, NULL), +(514, '2025-08-11', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-08-11 06:27:37', '2025-08-11 06:27:37', 3, NULL), +(515, '2025-08-11', 10, 5, 2, 1, NULL, 8.00, NULL, '2025-08-11 06:46:23', '2025-08-11 06:46:23', 5, NULL), +(516, '2025-08-11', 2, 5, 2, 1, NULL, 8.00, NULL, '2025-08-11 06:46:23', '2025-08-11 06:46:23', 5, NULL), +(517, '2025-08-11', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-08-11 06:46:49', '2025-08-11 06:46:49', 5, NULL), +(518, '2025-08-11', 7, 3, 2, 1, NULL, 8.00, NULL, '2025-08-11 06:46:49', '2025-08-11 06:46:49', 5, NULL), +(519, '2025-08-11', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-08-11 06:46:50', '2025-08-11 06:46:50', 5, NULL), +(520, '2025-08-11', 5, 3, 2, 1, NULL, 8.00, NULL, '2025-08-11 06:46:50', '2025-08-11 06:46:50', 5, NULL), +(521, '2025-08-11', 4, 3, 2, 1, NULL, 8.00, NULL, '2025-08-11 06:46:50', '2025-08-11 06:46:50', 5, NULL), +(522, '2025-08-11', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-08-11 06:46:50', '2025-08-11 06:46:50', 5, NULL), +(523, '2025-08-12', 10, 3, 2, 1, NULL, 8.00, NULL, '2025-08-12 06:47:24', '2025-08-12 06:47:24', 3, NULL), +(524, '2025-08-12', 9, 3, 2, 1, NULL, 8.00, NULL, '2025-08-12 06:47:24', '2025-08-12 06:47:24', 3, NULL), +(525, '2025-08-12', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-08-12 06:47:24', '2025-08-12 06:47:24', 3, NULL), +(526, '2025-08-12', 7, 3, 2, 1, NULL, 8.00, NULL, '2025-08-12 06:47:24', '2025-08-12 06:47:24', 3, NULL), +(527, '2025-08-12', 5, 3, 2, 1, NULL, 8.00, NULL, '2025-08-12 06:47:24', '2025-08-12 06:47:24', 3, NULL), +(528, '2025-08-12', 4, 3, 2, 1, NULL, 8.00, NULL, '2025-08-12 06:47:24', '2025-08-12 06:47:24', 3, NULL), +(529, '2025-08-12', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-08-12 06:47:24', '2025-08-12 06:47:24', 3, NULL), +(530, '2025-08-12', 1, 3, 2, 1, NULL, 8.00, NULL, '2025-08-12 06:47:24', '2025-08-12 06:47:24', 3, NULL), +(531, '2025-08-13', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-08-13 06:31:32', '2025-08-13 06:31:32', 3, NULL), +(532, '2025-08-13', 2, 3, 2, 1, NULL, 4.00, NULL, '2025-08-13 06:36:13', '2025-08-13 06:36:13', 5, NULL), +(533, '2025-08-13', 2, 5, 2, 1, NULL, 4.00, NULL, '2025-08-13 06:36:13', '2025-08-13 06:36:13', 5, NULL), +(534, '2025-08-13', 9, 3, 2, 1, NULL, 8.00, NULL, '2025-08-13 06:36:48', '2025-08-13 06:36:48', 5, NULL), +(535, '2025-08-13', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-08-13 06:36:48', '2025-08-13 06:36:48', 5, NULL), +(536, '2025-08-13', 7, 3, 2, 1, NULL, 8.00, NULL, '2025-08-13 06:36:48', '2025-08-13 06:36:48', 5, NULL), +(537, '2025-08-13', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-08-13 06:36:48', '2025-08-13 06:36:48', 5, NULL), +(538, '2025-08-13', 5, 3, 2, 1, NULL, 8.00, NULL, '2025-08-13 06:36:48', '2025-08-13 06:36:48', 5, NULL), +(539, '2025-08-13', 4, 3, 2, 1, NULL, 8.00, NULL, '2025-08-13 06:36:48', '2025-08-13 06:36:48', 5, NULL), +(540, '2025-08-13', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-08-13 06:36:48', '2025-08-13 06:36:48', 5, NULL), +(541, '2025-08-13', 10, 5, 2, 1, NULL, 8.00, NULL, '2025-08-13 06:37:19', '2025-08-13 06:37:19', 5, NULL), +(542, '2025-08-14', 1, 3, 3, 2, 1, 4.00, NULL, '2025-08-14 06:35:27', '2025-08-14 06:35:27', 3, NULL), +(543, '2025-08-14', 1, 3, 3, 1, NULL, 4.00, NULL, '2025-08-14 06:35:27', '2025-08-14 06:35:27', 3, NULL), +(544, '2025-08-14', 10, 5, 2, 1, NULL, 4.00, NULL, '2025-08-14 06:39:03', '2025-08-14 06:39:03', 5, NULL), +(545, '2025-08-14', 10, 5, 3, 1, NULL, 4.00, NULL, '2025-08-14 06:39:03', '2025-08-14 06:39:03', 5, NULL), +(546, '2025-08-14', 2, 5, 2, 1, NULL, 2.00, NULL, '2025-08-14 06:39:44', '2025-08-14 06:39:44', 5, NULL), +(547, '2025-08-14', 2, 3, 2, 1, NULL, 6.00, NULL, '2025-08-14 06:39:44', '2025-08-14 06:39:44', 5, NULL), +(548, '2025-08-14', 9, 3, 2, 1, NULL, 8.00, NULL, '2025-08-14 06:40:10', '2025-08-14 06:40:10', 5, NULL), +(549, '2025-08-14', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-08-14 06:40:10', '2025-08-14 06:40:10', 5, NULL), +(550, '2025-08-14', 7, 3, 2, 1, NULL, 8.00, NULL, '2025-08-14 06:40:10', '2025-08-14 06:40:10', 5, NULL), +(551, '2025-08-14', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-08-14 06:40:10', '2025-08-14 06:40:10', 5, NULL), +(552, '2025-08-14', 5, 3, 2, 1, NULL, 8.00, NULL, '2025-08-14 06:40:10', '2025-08-14 06:40:10', 5, NULL), +(553, '2025-08-14', 4, 3, 2, 1, NULL, 8.00, NULL, '2025-08-14 06:40:10', '2025-08-14 06:40:10', 5, NULL), +(554, '2025-08-18', 2, 3, 2, 1, NULL, 8.00, NULL, '2025-08-18 06:21:36', '2025-08-18 06:21:36', 5, NULL), +(555, '2025-08-18', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-08-18 06:21:36', '2025-08-18 06:21:36', 5, NULL), +(556, '2025-08-18', 4, 3, 2, 1, NULL, 8.00, NULL, '2025-08-18 06:22:01', '2025-08-18 06:22:01', 5, NULL), +(557, '2025-08-18', 10, 5, 3, 1, NULL, 6.00, NULL, '2025-08-18 06:22:53', '2025-08-18 06:22:53', 5, NULL), +(558, '2025-08-18', 10, 3, 2, 1, NULL, 2.00, NULL, '2025-08-18 06:22:53', '2025-08-18 06:22:53', 5, NULL), +(559, '2025-08-18', 9, 3, 2, 1, NULL, 4.00, NULL, '2025-08-18 06:23:34', '2025-08-18 06:23:34', 5, NULL), +(560, '2025-08-18', 9, 3, 3, 1, NULL, 4.00, NULL, '2025-08-18 06:23:34', '2025-08-18 06:23:34', 5, NULL), +(561, '2025-08-18', 5, 3, 3, 2, 1, 4.00, NULL, '2025-08-18 06:41:24', '2025-08-18 06:41:24', 3, NULL), +(562, '2025-08-18', 1, 3, 3, 2, 1, 4.00, NULL, '2025-08-18 06:41:24', '2025-08-18 06:41:24', 3, NULL), +(563, '2025-08-18', 7, 3, 3, 2, 1, 4.00, NULL, '2025-08-18 06:41:24', '2025-08-18 06:41:24', 3, NULL), +(564, '2025-08-18', 7, 3, 3, 1, NULL, 4.00, NULL, '2025-08-18 06:43:10', '2025-08-18 06:43:10', 3, NULL), +(565, '2025-08-18', 5, 3, 3, 1, NULL, 4.00, NULL, '2025-08-18 06:43:10', '2025-08-18 06:43:10', 3, NULL), +(566, '2025-08-18', 1, 3, 3, 1, NULL, 4.00, NULL, '2025-08-18 06:43:10', '2025-08-18 06:43:10', 3, NULL), +(567, '2025-08-18', 6, 3, 3, 1, NULL, 8.00, NULL, '2025-08-18 06:43:35', '2025-08-18 06:43:35', 6, NULL), +(568, '2025-08-18', 3, 3, 3, 1, NULL, 8.00, NULL, '2025-08-18 06:43:35', '2025-08-18 06:43:35', 6, NULL), +(569, '2025-08-19', 1, 3, 3, 1, NULL, 6.00, NULL, '2025-08-19 08:02:49', '2025-08-19 08:02:49', 5, NULL), +(573, '2025-08-19', 9, 3, 3, 1, NULL, 10.00, NULL, '2025-08-19 08:03:30', '2025-08-19 08:03:30', 5, NULL), +(574, '2025-08-19', 10, 3, 2, 1, NULL, 10.00, NULL, '2025-08-19 08:04:05', '2025-08-19 08:04:05', 5, NULL), +(575, '2025-08-19', 8, 3, 2, 1, NULL, 10.00, NULL, '2025-08-19 08:04:05', '2025-08-19 08:04:05', 5, NULL), +(576, '2025-08-19', 5, 3, 2, 1, NULL, 10.00, NULL, '2025-08-19 08:04:05', '2025-08-19 08:04:05', 5, NULL), +(577, '2025-08-19', 4, 3, 2, 1, NULL, 10.00, NULL, '2025-08-19 08:04:05', '2025-08-19 08:04:05', 5, NULL), +(578, '2025-08-19', 2, 3, 2, 1, NULL, 10.00, NULL, '2025-08-19 08:04:05', '2025-08-19 08:04:05', 5, NULL), +(579, '2025-08-19', 3, 3, 3, 1, NULL, 10.00, NULL, '2025-08-19 08:36:51', '2025-08-19 08:36:51', 6, NULL), +(580, '2025-08-19', 7, 3, 3, 1, NULL, 10.00, NULL, '2025-08-19 08:36:51', '2025-08-19 08:36:51', 6, NULL), +(581, '2025-08-19', 6, 3, 3, 1, NULL, 10.00, NULL, '2025-08-19 08:36:51', '2025-08-19 08:36:51', 6, NULL), +(582, '2025-08-20', 2, 3, 2, 1, NULL, 8.00, NULL, '2025-08-20 06:19:36', '2025-08-20 06:19:36', 5, NULL), +(583, '2025-08-20', 5, 3, 1, 1, NULL, 2.00, NULL, '2025-08-20 06:21:28', '2025-08-20 06:21:28', 5, NULL), +(584, '2025-08-20', 5, 3, 2, 1, NULL, 6.00, NULL, '2025-08-20 06:21:28', '2025-08-20 06:21:28', 5, NULL), +(585, '2025-08-20', 4, 3, 1, 1, NULL, 2.00, NULL, '2025-08-20 06:21:28', '2025-08-20 06:21:28', 5, NULL), +(586, '2025-08-20', 4, 3, 2, 1, NULL, 6.00, NULL, '2025-08-20 06:21:28', '2025-08-20 06:21:28', 5, NULL), +(587, '2025-08-20', 6, 3, 3, 1, NULL, 4.00, NULL, '2025-08-20 06:43:46', '2025-08-20 06:43:46', 3, NULL), +(589, '2025-08-20', 9, 3, 3, 1, NULL, 8.00, NULL, '2025-08-20 06:44:23', '2025-08-20 06:44:23', 3, NULL), +(590, '2025-08-20', 8, 3, 3, 1, NULL, 8.00, NULL, '2025-08-20 06:44:23', '2025-08-20 06:44:23', 3, NULL), +(591, '2025-08-20', 7, 3, 3, 1, NULL, 8.00, NULL, '2025-08-20 06:44:24', '2025-08-20 06:44:24', 3, NULL), +(593, '2025-08-20', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-08-20 06:44:24', '2025-08-20 06:44:24', 3, NULL), +(594, '2025-08-20', 10, 3, 3, 1, NULL, 8.00, NULL, '2025-08-20 06:44:26', '2025-08-20 06:44:26', 6, NULL), +(595, '2025-08-20', 3, 3, 3, 1, NULL, 8.00, NULL, '2025-08-20 06:44:26', '2025-08-20 06:44:26', 6, NULL), +(596, '2025-08-21', 7, 3, 3, 1, NULL, 8.00, NULL, '2025-08-21 06:30:36', '2025-08-21 06:30:36', 3, NULL), +(597, '2025-08-21', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-08-21 06:30:36', '2025-08-21 06:30:36', 3, NULL), +(600, '2025-08-21', 10, 3, 3, 1, NULL, 8.00, NULL, '2025-08-21 07:51:23', '2025-08-21 07:51:23', 5, NULL), +(601, '2025-08-21', 10, 3, 3, 1, NULL, 2.00, NULL, '2025-08-21 07:51:23', '2025-08-21 07:51:23', 5, NULL), +(602, '2025-08-21', 9, 3, 3, 1, NULL, 8.00, NULL, '2025-08-21 07:51:23', '2025-08-21 07:51:23', 5, NULL), +(603, '2025-08-21', 9, 3, 3, 1, NULL, 2.00, NULL, '2025-08-21 07:51:23', '2025-08-21 07:51:23', 5, NULL), +(608, '2025-08-21', 2, 3, 2, 1, NULL, 8.00, NULL, '2025-08-21 07:54:46', '2025-08-21 07:54:46', 5, NULL), +(609, '2025-08-21', 2, 5, 2, 1, NULL, 2.00, NULL, '2025-08-21 07:54:46', '2025-08-21 07:54:46', 5, NULL), +(610, '2025-08-21', 8, 3, 3, 1, NULL, 4.00, NULL, '2025-08-21 07:55:25', '2025-08-21 07:55:25', 5, NULL), +(611, '2025-08-21', 8, 3, 2, 1, NULL, 6.00, NULL, '2025-08-21 07:55:25', '2025-08-21 07:55:25', 5, NULL), +(612, '2025-08-21', 6, 3, 3, 1, NULL, 10.00, NULL, '2025-08-21 08:24:50', '2025-08-21 08:24:50', 6, NULL), +(613, '2025-08-21', 3, 3, 3, 1, NULL, 10.00, NULL, '2025-08-21 08:24:50', '2025-08-21 08:24:50', 6, NULL), +(614, '2025-08-22', 2, 3, 2, 1, NULL, 8.00, NULL, '2025-08-22 06:21:15', '2025-08-22 06:21:15', 5, NULL), +(615, '2025-08-22', 8, 3, 2, 1, NULL, 4.00, NULL, '2025-08-22 06:23:12', '2025-08-22 06:23:12', 5, NULL), +(616, '2025-08-22', 8, 3, 3, 1, NULL, 4.00, NULL, '2025-08-22 06:23:12', '2025-08-22 06:23:12', 5, NULL), +(617, '2025-08-22', 5, 3, 3, 1, NULL, 8.00, NULL, '2025-08-22 06:23:55', '2025-08-22 06:23:55', 5, NULL), +(618, '2025-08-22', 6, 3, 2, 1, NULL, 4.00, NULL, '2025-08-22 06:27:43', '2025-08-22 06:27:43', 3, NULL), +(619, '2025-08-22', 10, 3, 3, 1, NULL, 8.00, NULL, '2025-08-22 06:28:15', '2025-08-22 06:28:15', 3, NULL), +(620, '2025-08-22', 9, 3, 3, 1, NULL, 8.00, NULL, '2025-08-22 06:28:15', '2025-08-22 06:28:15', 3, NULL), +(621, '2025-08-22', 7, 3, 3, 1, NULL, 8.00, NULL, '2025-08-22 06:28:15', '2025-08-22 06:28:15', 3, NULL), +(622, '2025-08-22', 4, 3, 3, 1, NULL, 8.00, NULL, '2025-08-22 06:28:15', '2025-08-22 06:28:15', 3, NULL), +(623, '2025-08-22', 3, 3, 3, 1, NULL, 8.00, NULL, '2025-08-22 06:28:15', '2025-08-22 06:28:15', 3, NULL), +(624, '2025-08-22', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-08-22 06:28:15', '2025-08-22 06:28:15', 3, NULL), +(625, '2025-08-23', 4, 3, 2, 1, NULL, 2.00, NULL, '2025-08-23 04:57:02', '2025-08-23 04:57:02', 5, NULL), +(626, '2025-08-23', 4, 3, 3, 1, NULL, 6.00, NULL, '2025-08-23 04:57:02', '2025-08-23 04:57:02', 5, NULL), +(627, '2025-08-23', 2, 3, 2, 1, NULL, 8.00, NULL, '2025-08-23 04:57:25', '2025-08-23 04:57:25', 5, NULL), +(628, '2025-08-23', 10, 3, 3, 1, NULL, 8.00, NULL, '2025-08-23 04:57:54', '2025-08-23 04:57:54', 5, NULL), +(629, '2025-08-23', 9, 3, 3, 1, NULL, 8.00, NULL, '2025-08-23 04:57:54', '2025-08-23 04:57:54', 5, NULL), +(630, '2025-08-23', 8, 3, 3, 1, NULL, 8.00, NULL, '2025-08-23 04:57:54', '2025-08-23 04:57:54', 5, NULL), +(631, '2025-08-23', 6, 3, 3, 1, NULL, 8.00, NULL, '2025-08-23 04:57:54', '2025-08-23 04:57:54', 5, NULL), +(632, '2025-08-23', 5, 3, 3, 1, NULL, 8.00, NULL, '2025-08-23 04:57:54', '2025-08-23 04:57:54', 5, NULL), +(633, '2025-08-23', 3, 3, 3, 1, NULL, 8.00, NULL, '2025-08-23 04:57:54', '2025-08-23 04:57:54', 5, NULL), +(634, '2025-08-23', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-08-23 04:57:54', '2025-08-23 04:57:54', 5, NULL), +(635, '2025-08-25', 10, 3, 3, 1, NULL, 8.00, NULL, '2025-08-25 06:48:34', '2025-08-25 06:48:34', 3, NULL), +(636, '2025-08-25', 9, 3, 3, 1, NULL, 8.00, NULL, '2025-08-25 06:48:34', '2025-08-25 06:48:34', 3, NULL), +(637, '2025-08-25', 8, 3, 3, 1, NULL, 8.00, NULL, '2025-08-25 06:48:34', '2025-08-25 06:48:34', 3, NULL), +(638, '2025-08-25', 7, 3, 3, 1, NULL, 8.00, NULL, '2025-08-25 06:48:34', '2025-08-25 06:48:34', 3, NULL), +(640, '2025-08-25', 5, 3, 3, 1, NULL, 8.00, NULL, '2025-08-25 06:48:34', '2025-08-25 06:48:34', 3, NULL), +(641, '2025-08-25', 4, 3, 3, 1, NULL, 8.00, NULL, '2025-08-25 06:48:34', '2025-08-25 06:48:34', 3, NULL), +(643, '2025-08-25', 2, 3, 3, 1, NULL, 8.00, NULL, '2025-08-25 06:48:34', '2025-08-25 06:48:34', 3, NULL), +(644, '2025-08-25', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-08-25 06:48:34', '2025-08-25 06:48:34', 3, NULL), +(645, '2025-08-25', 6, 3, 3, 1, NULL, 8.00, NULL, '2025-08-25 06:49:16', '2025-08-25 06:49:16', 6, NULL), +(646, '2025-08-25', 3, 3, 3, 1, NULL, 8.00, NULL, '2025-08-25 06:49:17', '2025-08-25 06:49:17', 6, NULL), +(647, '2025-08-26', 4, 8, 3, 1, NULL, 8.00, NULL, '2025-08-26 07:28:03', '2025-08-26 07:28:03', 5, NULL), +(648, '2025-08-26', 4, 3, 3, 1, NULL, 2.00, NULL, '2025-08-26 07:28:03', '2025-08-26 07:28:03', 5, NULL), +(649, '2025-08-26', 2, 8, 3, 1, NULL, 10.00, NULL, '2025-08-26 07:28:35', '2025-08-26 07:28:35', 5, NULL), +(651, '2025-08-26', 9, 3, 3, 1, NULL, 10.00, NULL, '2025-08-26 07:29:02', '2025-08-26 07:29:02', 5, NULL), +(652, '2025-08-26', 8, 3, 3, 1, NULL, 10.00, NULL, '2025-08-26 07:29:02', '2025-08-26 07:29:02', 5, NULL), +(653, '2025-08-26', 7, 3, 3, 1, NULL, 10.00, NULL, '2025-08-26 07:29:02', '2025-08-26 07:29:02', 5, NULL), +(655, '2025-08-26', 5, 3, 3, 1, NULL, 10.00, NULL, '2025-08-26 07:29:02', '2025-08-26 07:29:02', 5, NULL), +(657, '2025-08-26', 1, 3, 3, 1, NULL, 10.00, NULL, '2025-08-26 07:29:03', '2025-08-26 07:29:03', 5, NULL), +(658, '2025-08-26', 6, 3, 3, 1, NULL, 10.00, NULL, '2025-08-26 08:22:12', '2025-08-26 08:22:12', 6, NULL), +(659, '2025-08-26', 10, 3, 3, 1, NULL, 10.00, NULL, '2025-08-26 08:22:12', '2025-08-26 08:22:12', 6, NULL), +(660, '2025-08-26', 3, 3, 3, 1, NULL, 10.00, NULL, '2025-08-26 08:22:12', '2025-08-26 08:22:12', 6, NULL), +(661, '2025-08-27', 10, 3, 3, 2, 5, 8.00, NULL, '2025-08-27 06:44:47', '2025-08-27 06:44:47', 3, NULL), +(662, '2025-08-27', 9, 3, 3, 2, 5, 8.00, NULL, '2025-08-27 06:44:47', '2025-08-27 06:44:47', 3, NULL), +(663, '2025-08-27', 7, 3, 3, 2, 5, 8.00, NULL, '2025-08-27 06:44:47', '2025-08-27 06:44:47', 3, NULL), +(664, '2025-08-27', 6, 3, 3, 2, 5, 8.00, NULL, '2025-08-27 06:44:47', '2025-08-27 06:44:47', 3, NULL), +(665, '2025-08-27', 5, 3, 3, 2, 5, 8.00, NULL, '2025-08-27 06:44:47', '2025-08-27 06:44:47', 3, NULL), +(666, '2025-08-27', 4, 3, 3, 2, 5, 8.00, NULL, '2025-08-27 06:44:47', '2025-08-27 06:44:47', 3, NULL), +(667, '2025-08-27', 3, 3, 3, 2, 5, 8.00, NULL, '2025-08-27 06:44:47', '2025-08-27 06:44:47', 3, NULL), +(668, '2025-08-27', 1, 3, 3, 2, 5, 8.00, NULL, '2025-08-27 06:44:48', '2025-08-27 06:44:48', 3, NULL), +(669, '2025-08-27', 2, 3, 3, 2, 1, 2.00, NULL, '2025-08-27 06:45:32', '2025-08-27 06:45:32', 5, NULL), +(670, '2025-08-27', 2, 8, 2, 1, NULL, 6.00, NULL, '2025-08-27 06:45:32', '2025-08-27 06:45:32', 5, NULL), +(671, '2025-08-27', 8, 3, 3, 2, 1, 2.00, NULL, '2025-08-27 06:45:32', '2025-08-27 06:45:32', 5, NULL), +(672, '2025-08-27', 8, 8, 2, 1, NULL, 6.00, NULL, '2025-08-27 06:45:32', '2025-08-27 06:45:32', 5, NULL), +(673, '2025-08-28', 10, 3, 3, 1, NULL, 6.00, NULL, '2025-08-28 08:31:42', '2025-08-28 08:31:42', 6, NULL), +(674, '2025-08-28', 10, 3, 3, 2, 1, 4.00, NULL, '2025-08-28 08:31:42', '2025-08-28 08:31:42', 6, NULL), +(675, '2025-08-28', 5, 3, 3, 1, NULL, 6.00, NULL, '2025-08-28 08:31:42', '2025-08-28 08:31:42', 6, NULL), +(676, '2025-08-28', 5, 3, 3, 2, 1, 4.00, NULL, '2025-08-28 08:31:42', '2025-08-28 08:31:42', 6, NULL), +(677, '2025-08-28', 6, 3, 3, 1, NULL, 6.00, NULL, '2025-08-28 08:31:42', '2025-08-28 08:31:42', 6, NULL), +(678, '2025-08-28', 6, 3, 3, 2, 1, 4.00, NULL, '2025-08-28 08:31:42', '2025-08-28 08:31:42', 6, NULL), +(679, '2025-08-28', 3, 3, 3, 1, NULL, 6.00, NULL, '2025-08-28 08:31:42', '2025-08-28 08:31:42', 6, NULL), +(680, '2025-08-28', 3, 3, 3, 2, 1, 4.00, NULL, '2025-08-28 08:31:42', '2025-08-28 08:31:42', 6, NULL), +(681, '2025-08-28', 4, 3, 3, 1, NULL, 4.00, NULL, '2025-08-28 08:37:46', '2025-08-28 08:37:46', 5, NULL), +(682, '2025-08-28', 4, 5, 3, 1, NULL, 4.00, NULL, '2025-08-28 08:37:46', '2025-08-28 08:37:46', 5, NULL), +(683, '2025-08-28', 8, 8, 2, 1, NULL, 4.00, NULL, '2025-08-28 08:38:15', '2025-08-28 08:38:15', 5, NULL), +(684, '2025-08-28', 8, 5, 3, 1, NULL, 4.00, NULL, '2025-08-28 08:38:15', '2025-08-28 08:38:15', 5, NULL), +(685, '2025-08-28', 2, 3, 3, 2, 1, 2.00, NULL, '2025-08-28 08:38:50', '2025-08-28 08:38:50', 5, NULL), +(686, '2025-08-28', 2, 5, 3, 1, NULL, 6.00, NULL, '2025-08-28 08:38:50', '2025-08-28 08:38:50', 5, NULL), +(687, '2025-08-28', 1, 3, 3, 2, 1, 8.00, NULL, '2025-08-28 08:39:24', '2025-08-28 08:39:24', 5, NULL), +(689, '2025-08-28', 9, 3, 3, 2, 4, 8.00, NULL, '2025-08-28 08:40:00', '2025-08-28 08:40:00', 5, NULL), +(690, '2025-08-28', 7, 3, 3, 2, 4, 8.00, NULL, '2025-08-28 08:40:00', '2025-08-28 08:40:00', 5, NULL), +(694, '2025-08-28', 4, 5, 3, 1, NULL, 2.00, NULL, '2025-08-28 08:44:56', '2025-08-28 08:44:56', 5, NULL), +(695, '2025-08-28', 8, 5, 3, 1, NULL, 2.00, NULL, '2025-08-28 08:44:56', '2025-08-28 08:44:56', 5, NULL), +(696, '2025-08-28', 2, 5, 3, 1, NULL, 2.00, NULL, '2025-08-28 08:44:56', '2025-08-28 08:44:56', 5, NULL), +(698, '2025-08-28', 9, 3, 3, 1, NULL, 2.00, NULL, '2025-08-28 08:45:19', '2025-08-28 08:45:19', 5, NULL), +(699, '2025-08-28', 7, 3, 3, 1, NULL, 2.00, NULL, '2025-08-28 08:45:19', '2025-08-28 08:45:19', 5, NULL), +(703, '2025-08-29', 10, 3, 3, 2, 5, 8.00, NULL, '2025-08-29 06:47:02', '2025-08-29 06:47:02', 3, NULL), +(704, '2025-08-29', 9, 3, 3, 2, 5, 8.00, NULL, '2025-08-29 06:47:02', '2025-08-29 06:47:02', 3, NULL), +(706, '2025-08-29', 7, 3, 3, 2, 5, 8.00, NULL, '2025-08-29 06:47:02', '2025-08-29 06:47:02', 3, NULL), +(710, '2025-08-29', 1, 3, 3, 2, 5, 8.00, NULL, '2025-08-29 06:47:02', '2025-08-29 06:47:02', 3, NULL), +(713, '2025-08-29', 5, 3, 3, 1, NULL, 6.00, NULL, '2025-08-29 06:47:35', '2025-08-29 06:47:35', 6, NULL), +(714, '2025-08-29', 5, 3, 3, 2, 1, 2.00, NULL, '2025-08-29 06:47:35', '2025-08-29 06:47:35', 6, NULL), +(715, '2025-08-29', 3, 3, 3, 1, NULL, 6.00, NULL, '2025-08-29 06:47:35', '2025-08-29 06:47:35', 6, NULL), +(716, '2025-08-29', 3, 3, 3, 2, 1, 2.00, NULL, '2025-08-29 06:47:35', '2025-08-29 06:47:35', 6, NULL), +(717, '2025-08-29', 6, 3, 3, 1, NULL, 6.00, NULL, '2025-08-29 06:47:35', '2025-08-29 06:47:35', 6, NULL), +(718, '2025-08-29', 6, 3, 3, 2, 1, 2.00, NULL, '2025-08-29 06:47:35', '2025-08-29 06:47:35', 6, NULL), +(719, '2025-08-29', 8, 5, 3, 1, NULL, 8.00, NULL, '2025-08-29 21:55:56', '2025-08-29 21:55:56', 5, NULL), +(720, '2025-08-29', 4, 5, 3, 1, NULL, 8.00, NULL, '2025-08-29 21:55:56', '2025-08-29 21:55:56', 5, NULL), +(721, '2025-08-29', 2, 5, 3, 1, NULL, 8.00, NULL, '2025-08-29 21:55:56', '2025-08-29 21:55:56', 5, NULL), +(722, '2025-08-30', 2, 5, 3, 1, NULL, 8.00, NULL, '2025-08-30 05:12:03', '2025-08-30 05:12:03', 5, NULL), +(723, '2025-08-30', 8, 5, 3, 1, NULL, 8.00, NULL, '2025-08-30 05:12:03', '2025-08-30 05:12:03', 5, NULL), +(724, '2025-08-30', 4, 5, 3, 1, NULL, 8.00, NULL, '2025-08-30 05:12:03', '2025-08-30 05:12:03', 5, NULL), +(725, '2025-08-30', 10, 3, 3, 2, 1, 8.00, NULL, '2025-08-30 05:36:49', '2025-08-30 05:36:49', 3, NULL), +(726, '2025-08-30', 9, 3, 3, 2, 1, 8.00, NULL, '2025-08-30 05:36:49', '2025-08-30 05:36:49', 3, NULL), +(727, '2025-08-30', 7, 3, 3, 2, 1, 8.00, NULL, '2025-08-30 05:36:49', '2025-08-30 05:36:49', 3, NULL), +(728, '2025-08-30', 6, 3, 3, 2, 1, 8.00, NULL, '2025-08-30 05:36:49', '2025-08-30 05:36:49', 3, NULL), +(729, '2025-08-30', 5, 3, 3, 2, 1, 8.00, NULL, '2025-08-30 05:36:49', '2025-08-30 05:36:49', 3, NULL), +(730, '2025-08-30', 3, 3, 3, 2, 1, 8.00, NULL, '2025-08-30 05:36:49', '2025-08-30 05:36:49', 3, NULL), +(731, '2025-08-30', 1, 3, 3, 2, 1, 8.00, NULL, '2025-08-30 05:36:49', '2025-08-30 05:36:49', 3, NULL), +(732, '2025-09-01', 7, 3, 3, 1, NULL, 8.00, NULL, '2025-09-01 06:18:28', '2025-09-01 06:18:28', 3, NULL), +(733, '2025-09-01', 9, 3, 3, 1, NULL, 8.00, NULL, '2025-09-01 06:18:28', '2025-09-01 06:18:28', 3, NULL), +(734, '2025-09-01', 10, 3, 3, 2, 5, 4.00, NULL, '2025-09-01 06:19:11', '2025-09-01 06:19:11', 3, NULL), +(735, '2025-09-01', 3, 3, 3, 2, 5, 4.00, NULL, '2025-09-01 06:19:11', '2025-09-01 06:19:11', 3, NULL), +(736, '2025-09-01', 1, 3, 3, 2, 5, 4.00, NULL, '2025-09-01 06:19:11', '2025-09-01 06:19:11', 3, NULL), +(737, '2025-09-01', 10, 3, 3, 1, NULL, 4.00, NULL, '2025-09-01 06:19:35', '2025-09-01 06:19:35', 3, NULL), +(738, '2025-09-01', 3, 3, 3, 1, NULL, 4.00, NULL, '2025-09-01 06:19:35', '2025-09-01 06:19:35', 3, NULL), +(739, '2025-09-01', 1, 3, 3, 1, NULL, 4.00, NULL, '2025-09-01 06:19:35', '2025-09-01 06:19:35', 3, NULL), +(740, '2025-09-01', 5, 3, 3, 2, 1, 8.00, NULL, '2025-09-01 06:20:03', '2025-09-01 06:20:03', 3, NULL), +(741, '2025-08-21', 4, 3, 3, 1, NULL, 10.00, NULL, '2025-09-01 23:18:03', '2025-09-01 23:18:03', 3, NULL), +(742, '2025-08-21', 5, 3, 3, 1, NULL, 10.00, NULL, '2025-09-01 23:18:03', '2025-09-01 23:18:03', 3, NULL), +(745, '2025-09-02', 10, 3, 3, 2, 1, 6.00, NULL, '2025-09-02 07:36:04', '2025-09-02 07:36:04', 3, NULL), +(746, '2025-09-02', 9, 3, 3, 2, 1, 6.00, NULL, '2025-09-02 07:36:04', '2025-09-02 07:36:04', 3, NULL), +(747, '2025-09-02', 6, 3, 3, 2, 1, 6.00, NULL, '2025-09-02 07:36:04', '2025-09-02 07:36:04', 3, NULL), +(748, '2025-09-02', 5, 3, 3, 2, 1, 6.00, NULL, '2025-09-02 07:36:04', '2025-09-02 07:36:04', 3, NULL), +(749, '2025-09-02', 3, 3, 3, 2, 1, 6.00, NULL, '2025-09-02 07:36:04', '2025-09-02 07:36:04', 3, NULL), +(750, '2025-09-02', 1, 3, 3, 2, 1, 6.00, NULL, '2025-09-02 07:36:04', '2025-09-02 07:36:04', 3, NULL), +(751, '2025-09-02', 10, 3, 3, 1, NULL, 4.00, NULL, '2025-09-02 07:36:31', '2025-09-02 07:36:31', 3, NULL), +(752, '2025-09-02', 9, 3, 3, 1, NULL, 4.00, NULL, '2025-09-02 07:36:31', '2025-09-02 07:36:31', 3, NULL), +(753, '2025-09-02', 6, 3, 3, 1, NULL, 4.00, NULL, '2025-09-02 07:36:31', '2025-09-02 07:36:31', 3, NULL), +(754, '2025-09-02', 5, 3, 3, 1, NULL, 4.00, NULL, '2025-09-02 07:36:31', '2025-09-02 07:36:31', 3, NULL), +(755, '2025-09-02', 3, 3, 3, 1, NULL, 4.00, NULL, '2025-09-02 07:36:31', '2025-09-02 07:36:31', 3, NULL), +(756, '2025-09-02', 1, 3, 3, 1, NULL, 4.00, NULL, '2025-09-02 07:36:31', '2025-09-02 07:36:31', 3, NULL), +(757, '2025-09-02', 8, 3, 3, 1, NULL, 10.00, NULL, '2025-09-02 07:37:19', '2025-09-02 07:37:19', 3, NULL), +(758, '2025-09-02', 7, 3, 3, 1, NULL, 10.00, NULL, '2025-09-02 07:37:19', '2025-09-02 07:37:19', 3, NULL), +(759, '2025-09-02', 2, 5, 3, 1, NULL, 8.00, NULL, '2025-09-02 08:16:14', '2025-09-02 08:16:14', 5, NULL), +(760, '2025-09-02', 2, 5, 3, 1, NULL, 2.00, NULL, '2025-09-02 08:16:14', '2025-09-02 08:16:14', 5, NULL), +(761, '2025-09-02', 4, 5, 3, 1, NULL, 8.00, NULL, '2025-09-02 08:16:14', '2025-09-02 08:16:14', 5, NULL), +(762, '2025-09-02', 4, 5, 3, 1, NULL, 2.00, NULL, '2025-09-02 08:16:14', '2025-09-02 08:16:14', 5, NULL), +(763, '2025-09-03', 10, 3, 3, 1, NULL, 8.00, NULL, '2025-09-03 06:34:47', '2025-09-03 06:34:47', 3, NULL), +(764, '2025-09-03', 9, 3, 3, 1, NULL, 8.00, NULL, '2025-09-03 06:34:47', '2025-09-03 06:34:47', 3, NULL), +(765, '2025-09-03', 8, 3, 3, 1, NULL, 8.00, NULL, '2025-09-03 06:34:48', '2025-09-03 06:34:48', 3, NULL), +(766, '2025-09-03', 7, 3, 3, 1, NULL, 8.00, NULL, '2025-09-03 06:34:48', '2025-09-03 06:34:48', 3, NULL), +(767, '2025-09-03', 6, 3, 3, 1, NULL, 8.00, NULL, '2025-09-03 06:34:48', '2025-09-03 06:34:48', 3, NULL), +(768, '2025-09-03', 5, 3, 3, 1, NULL, 8.00, NULL, '2025-09-03 06:34:48', '2025-09-03 06:34:48', 3, NULL), +(769, '2025-09-03', 3, 3, 3, 1, NULL, 8.00, NULL, '2025-09-03 06:34:48', '2025-09-03 06:34:48', 3, NULL), +(770, '2025-09-03', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-09-03 06:34:48', '2025-09-03 06:34:48', 3, NULL), +(771, '2025-09-03', 2, 5, 3, 1, NULL, 8.00, NULL, '2025-09-03 06:44:18', '2025-09-03 06:44:18', 5, NULL), +(772, '2025-09-04', 10, 3, 3, 1, NULL, 8.00, NULL, '2025-09-04 06:41:32', '2025-09-04 06:41:32', 6, NULL), +(773, '2025-09-04', 5, 3, 3, 1, NULL, 8.00, NULL, '2025-09-04 06:41:32', '2025-09-04 06:41:32', 6, NULL), +(774, '2025-09-04', 9, 3, 3, 1, NULL, 8.00, NULL, '2025-09-04 06:41:32', '2025-09-04 06:41:32', 6, NULL), +(775, '2025-09-04', 8, 3, 3, 1, NULL, 8.00, NULL, '2025-09-04 06:41:32', '2025-09-04 06:41:32', 6, NULL), +(776, '2025-09-04', 3, 3, 3, 1, NULL, 8.00, NULL, '2025-09-04 06:41:33', '2025-09-04 06:41:33', 6, NULL), +(777, '2025-09-04', 7, 3, 3, 1, NULL, 8.00, NULL, '2025-09-04 06:41:33', '2025-09-04 06:41:33', 6, NULL), +(778, '2025-09-04', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-09-04 06:41:33', '2025-09-04 06:41:33', 6, NULL), +(779, '2025-09-04', 6, 3, 3, 1, NULL, 8.00, NULL, '2025-09-04 06:41:33', '2025-09-04 06:41:33', 6, NULL), +(780, '2025-09-04', 2, 5, 3, 1, NULL, 8.00, NULL, '2025-09-04 06:48:34', '2025-09-04 06:48:34', 5, NULL), +(781, '2025-09-04', 4, 5, 3, 1, NULL, 8.00, NULL, '2025-09-04 06:48:34', '2025-09-04 06:48:34', 5, NULL), +(782, '2025-09-05', 10, 3, 3, 1, NULL, 8.00, NULL, '2025-09-05 06:39:30', '2025-09-05 06:39:30', 3, NULL), +(783, '2025-09-05', 9, 3, 3, 1, NULL, 8.00, NULL, '2025-09-05 06:39:30', '2025-09-05 06:39:30', 3, NULL), +(784, '2025-09-05', 7, 3, 3, 1, NULL, 8.00, NULL, '2025-09-05 06:39:30', '2025-09-05 06:39:30', 3, NULL), +(785, '2025-09-05', 6, 3, 3, 1, NULL, 8.00, NULL, '2025-09-05 06:39:31', '2025-09-05 06:39:31', 3, NULL), +(786, '2025-09-05', 5, 3, 3, 1, NULL, 8.00, NULL, '2025-09-05 06:39:31', '2025-09-05 06:39:31', 3, NULL), +(787, '2025-09-05', 3, 3, 3, 1, NULL, 8.00, NULL, '2025-09-05 06:39:31', '2025-09-05 06:39:31', 3, NULL), +(788, '2025-09-05', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-09-05 06:39:31', '2025-09-05 06:39:31', 3, NULL), +(789, '2025-09-05', 2, 5, 3, 1, NULL, 8.00, NULL, '2025-09-05 22:09:55', '2025-09-05 22:09:55', 5, NULL), +(790, '2025-09-05', 8, 5, 3, 1, NULL, 8.00, NULL, '2025-09-05 22:09:55', '2025-09-05 22:09:55', 5, NULL), +(791, '2025-09-05', 4, 5, 3, 1, NULL, 8.00, NULL, '2025-09-05 22:09:55', '2025-09-05 22:09:55', 5, NULL), +(792, '2025-09-06', 8, 10, 3, 1, NULL, 8.00, NULL, '2025-09-06 04:21:10', '2025-09-06 04:21:10', 5, NULL), +(793, '2025-09-06', 4, 10, 3, 1, NULL, 8.00, NULL, '2025-09-06 04:21:10', '2025-09-06 04:21:10', 5, NULL), +(794, '2025-09-06', 2, 10, 3, 1, NULL, 8.00, NULL, '2025-09-06 04:21:10', '2025-09-06 04:21:10', 5, NULL), +(795, '2025-09-06', 10, 3, 3, 1, NULL, 8.00, NULL, '2025-09-06 05:28:18', '2025-09-06 05:28:18', 3, NULL), +(796, '2025-09-06', 9, 3, 3, 1, NULL, 8.00, NULL, '2025-09-06 05:28:18', '2025-09-06 05:28:18', 3, NULL), +(797, '2025-09-06', 7, 3, 3, 1, NULL, 8.00, NULL, '2025-09-06 05:28:18', '2025-09-06 05:28:18', 3, NULL), +(798, '2025-09-06', 6, 3, 3, 1, NULL, 8.00, NULL, '2025-09-06 05:28:19', '2025-09-06 05:28:19', 3, NULL), +(799, '2025-09-06', 5, 3, 3, 1, NULL, 8.00, NULL, '2025-09-06 05:28:19', '2025-09-06 05:28:19', 3, NULL), +(800, '2025-09-06', 3, 3, 3, 1, NULL, 8.00, NULL, '2025-09-06 05:28:19', '2025-09-06 05:28:19', 3, NULL), +(801, '2025-09-06', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-09-06 05:28:19', '2025-09-06 05:28:19', 3, NULL), +(802, '2025-09-08', 10, 3, 3, 1, NULL, 8.00, NULL, '2025-09-08 06:15:43', '2025-09-08 06:15:43', 3, NULL), +(803, '2025-09-08', 9, 3, 3, 1, NULL, 8.00, NULL, '2025-09-08 06:15:43', '2025-09-08 06:15:43', 3, NULL), +(804, '2025-09-08', 7, 3, 3, 1, NULL, 8.00, NULL, '2025-09-08 06:15:43', '2025-09-08 06:15:43', 3, NULL), +(805, '2025-09-08', 6, 3, 3, 1, NULL, 8.00, NULL, '2025-09-08 06:15:43', '2025-09-08 06:15:43', 3, NULL), +(806, '2025-09-08', 5, 3, 3, 1, NULL, 8.00, NULL, '2025-09-08 06:15:43', '2025-09-08 06:15:43', 3, NULL), +(807, '2025-09-08', 3, 3, 3, 1, NULL, 8.00, NULL, '2025-09-08 06:15:43', '2025-09-08 06:15:43', 3, NULL), +(808, '2025-09-08', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-09-08 06:15:43', '2025-09-08 06:15:43', 3, NULL), +(809, '2025-09-08', 8, 5, 3, 1, NULL, 8.00, NULL, '2025-09-08 06:47:37', '2025-09-08 06:47:37', 5, NULL), +(810, '2025-09-08', 4, 5, 3, 1, NULL, 8.00, NULL, '2025-09-08 06:47:37', '2025-09-08 06:47:37', 5, NULL), +(811, '2025-09-08', 2, 5, 3, 1, NULL, 8.00, NULL, '2025-09-08 06:47:37', '2025-09-08 06:47:37', 5, NULL), +(812, '2025-09-09', 10, 3, 3, 1, NULL, 8.00, NULL, '2025-09-09 06:03:27', '2025-09-09 06:03:27', 3, NULL), +(813, '2025-09-09', 9, 3, 3, 1, NULL, 8.00, NULL, '2025-09-09 06:03:27', '2025-09-09 06:03:27', 3, NULL), +(814, '2025-09-09', 7, 3, 3, 1, NULL, 8.00, NULL, '2025-09-09 06:03:27', '2025-09-09 06:03:27', 3, NULL), +(815, '2025-09-09', 6, 3, 3, 1, NULL, 8.00, NULL, '2025-09-09 06:03:27', '2025-09-09 06:03:27', 3, NULL), +(816, '2025-09-09', 5, 3, 3, 1, NULL, 8.00, NULL, '2025-09-09 06:03:27', '2025-09-09 06:03:27', 3, NULL), +(817, '2025-09-09', 3, 3, 3, 1, NULL, 8.00, NULL, '2025-09-09 06:03:27', '2025-09-09 06:03:27', 3, NULL), +(818, '2025-09-09', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-09-09 06:03:27', '2025-09-09 06:03:27', 3, NULL), +(819, '2025-09-09', 8, 5, 3, 1, NULL, 8.00, NULL, '2025-09-09 06:44:29', '2025-09-09 06:44:29', 5, NULL), +(820, '2025-09-09', 4, 5, 3, 1, NULL, 8.00, NULL, '2025-09-09 06:44:29', '2025-09-09 06:44:29', 5, NULL), +(821, '2025-09-09', 2, 5, 3, 1, NULL, 8.00, NULL, '2025-09-09 06:44:29', '2025-09-09 06:44:29', 5, NULL), +(822, '2025-09-10', 10, 3, 3, 1, NULL, 8.00, NULL, '2025-09-10 06:27:52', '2025-09-10 06:27:52', 3, NULL), +(823, '2025-09-10', 9, 3, 3, 1, NULL, 8.00, NULL, '2025-09-10 06:27:52', '2025-09-10 06:27:52', 3, NULL), +(824, '2025-09-10', 7, 3, 3, 1, NULL, 8.00, NULL, '2025-09-10 06:27:52', '2025-09-10 06:27:52', 3, NULL), +(825, '2025-09-10', 6, 3, 3, 1, NULL, 8.00, NULL, '2025-09-10 06:27:52', '2025-09-10 06:27:52', 3, NULL), +(826, '2025-09-10', 5, 3, 3, 1, NULL, 8.00, NULL, '2025-09-10 06:27:52', '2025-09-10 06:27:52', 3, NULL), +(827, '2025-09-10', 3, 3, 3, 1, NULL, 8.00, NULL, '2025-09-10 06:27:52', '2025-09-10 06:27:52', 3, NULL), +(828, '2025-09-10', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-09-10 06:27:52', '2025-09-10 06:27:52', 3, NULL), +(829, '2025-09-10', 8, 5, 3, 1, NULL, 8.00, NULL, '2025-09-10 06:48:43', '2025-09-10 06:48:43', 5, NULL), +(830, '2025-09-10', 4, 5, 3, 1, NULL, 8.00, NULL, '2025-09-10 06:48:43', '2025-09-10 06:48:43', 5, NULL), +(831, '2025-09-10', 2, 5, 3, 1, NULL, 8.00, NULL, '2025-09-10 06:48:43', '2025-09-10 06:48:43', 5, NULL), +(832, '2025-09-11', 2, 5, 3, 1, NULL, 2.00, NULL, '2025-09-11 06:37:11', '2025-09-11 06:37:11', 5, NULL), +(833, '2025-09-11', 2, 8, 3, 1, NULL, 6.00, NULL, '2025-09-11 06:37:11', '2025-09-11 06:37:11', 5, NULL), +(834, '2025-09-11', 4, 5, 3, 1, NULL, 2.00, NULL, '2025-09-11 06:38:24', '2025-09-11 06:38:24', 5, NULL), +(835, '2025-09-11', 4, 8, 3, 1, NULL, 2.00, NULL, '2025-09-11 06:38:24', '2025-09-11 06:38:24', 5, NULL), +(836, '2025-09-11', 4, 3, 3, 1, NULL, 4.00, NULL, '2025-09-11 06:38:24', '2025-09-11 06:38:24', 5, NULL), +(838, '2025-09-11', 1, 3, 1, 1, NULL, 4.00, NULL, '2025-09-11 06:40:48', '2025-09-11 06:40:48', 5, NULL), +(840, '2025-09-11', 5, 3, 2, 1, NULL, 8.00, NULL, '2025-09-11 06:41:47', '2025-09-11 06:41:47', 6, NULL), +(841, '2025-09-11', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-09-11 06:41:47', '2025-09-11 06:41:47', 6, NULL), +(842, '2025-09-11', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-09-11 06:41:47', '2025-09-11 06:41:47', 6, NULL), +(843, '2025-09-11', 7, 3, 2, 1, NULL, 8.00, NULL, '2025-09-11 06:41:47', '2025-09-11 06:41:47', 6, NULL), +(844, '2025-09-11', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-09-11 06:41:47', '2025-09-11 06:41:47', 6, NULL), +(845, '2025-09-11', 10, 3, 2, 1, NULL, 4.00, NULL, '2025-09-11 06:41:51', '2025-09-11 06:41:51', 5, NULL), +(846, '2025-09-11', 10, 3, 3, 1, NULL, 4.00, NULL, '2025-09-11 06:41:51', '2025-09-11 06:41:51', 5, NULL), +(847, '2025-09-11', 9, 3, 2, 1, NULL, 4.00, NULL, '2025-09-11 06:41:51', '2025-09-11 06:41:51', 5, NULL), +(848, '2025-09-11', 9, 3, 3, 1, NULL, 4.00, NULL, '2025-09-11 06:41:51', '2025-09-11 06:41:51', 5, NULL), +(851, '2025-09-12', 10, 3, 3, 1, NULL, 8.00, NULL, '2025-09-12 06:45:29', '2025-09-12 06:45:29', 3, NULL), +(852, '2025-09-12', 9, 3, 3, 1, NULL, 8.00, NULL, '2025-09-12 06:45:29', '2025-09-12 06:45:29', 3, NULL), +(853, '2025-09-12', 8, 3, 3, 1, NULL, 8.00, NULL, '2025-09-12 06:45:29', '2025-09-12 06:45:29', 3, NULL), +(854, '2025-09-12', 6, 3, 3, 1, NULL, 8.00, NULL, '2025-09-12 06:45:29', '2025-09-12 06:45:29', 3, NULL), +(855, '2025-09-12', 5, 3, 3, 1, NULL, 8.00, NULL, '2025-09-12 06:45:29', '2025-09-12 06:45:29', 3, NULL), +(856, '2025-09-12', 4, 3, 3, 1, NULL, 8.00, NULL, '2025-09-12 06:45:29', '2025-09-12 06:45:29', 3, NULL), +(857, '2025-09-12', 3, 3, 3, 1, NULL, 8.00, NULL, '2025-09-12 06:45:29', '2025-09-12 06:45:29', 3, NULL), +(858, '2025-09-12', 2, 3, 3, 1, NULL, 8.00, NULL, '2025-09-12 06:45:29', '2025-09-12 06:45:29', 3, NULL), +(859, '2025-09-12', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-09-12 06:45:29', '2025-09-12 06:45:29', 3, NULL), +(860, '2025-09-12', 7, 3, 3, 1, NULL, 8.00, NULL, '2025-09-12 06:45:29', '2025-09-12 06:45:29', 3, NULL), +(861, '2025-09-13', 10, 3, 3, 1, NULL, 8.00, NULL, '2025-09-13 06:38:14', '2025-09-13 06:38:14', 3, NULL), +(862, '2025-09-13', 8, 3, 3, 1, NULL, 8.00, NULL, '2025-09-13 06:38:14', '2025-09-13 06:38:14', 3, NULL), +(863, '2025-09-13', 7, 3, 3, 1, NULL, 8.00, NULL, '2025-09-13 06:38:14', '2025-09-13 06:38:14', 3, NULL), +(864, '2025-09-13', 6, 3, 3, 1, NULL, 8.00, NULL, '2025-09-13 06:38:14', '2025-09-13 06:38:14', 3, NULL), +(865, '2025-09-13', 5, 3, 3, 1, NULL, 8.00, NULL, '2025-09-13 06:38:14', '2025-09-13 06:38:14', 3, NULL), +(866, '2025-09-13', 4, 3, 3, 1, NULL, 8.00, NULL, '2025-09-13 06:38:14', '2025-09-13 06:38:14', 3, NULL), +(867, '2025-09-13', 3, 3, 3, 1, NULL, 8.00, NULL, '2025-09-13 06:38:14', '2025-09-13 06:38:14', 3, NULL), +(868, '2025-09-13', 2, 3, 3, 1, NULL, 8.00, NULL, '2025-09-13 06:38:14', '2025-09-13 06:38:14', 3, NULL), +(869, '2025-09-13', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-09-13 06:38:14', '2025-09-13 06:38:14', 3, NULL), +(870, '2025-09-14', 9, 3, 3, 1, NULL, 8.00, NULL, '2025-09-14 04:47:40', '2025-09-14 04:47:40', 3, NULL), +(871, '2025-09-14', 8, 3, 3, 1, NULL, 8.00, NULL, '2025-09-14 04:47:40', '2025-09-14 04:47:40', 3, NULL), +(872, '2025-09-14', 7, 3, 3, 1, NULL, 8.00, NULL, '2025-09-14 04:47:40', '2025-09-14 04:47:40', 3, NULL), +(873, '2025-09-14', 6, 3, 3, 1, NULL, 8.00, NULL, '2025-09-14 04:47:40', '2025-09-14 04:47:40', 3, NULL), +(874, '2025-09-14', 5, 3, 3, 1, NULL, 8.00, NULL, '2025-09-14 04:47:41', '2025-09-14 04:47:41', 3, NULL), +(875, '2025-09-14', 4, 3, 3, 1, NULL, 8.00, NULL, '2025-09-14 04:47:41', '2025-09-14 04:47:41', 3, NULL), +(876, '2025-09-14', 3, 3, 3, 1, NULL, 8.00, NULL, '2025-09-14 04:47:41', '2025-09-14 04:47:41', 3, NULL), +(877, '2025-09-14', 2, 3, 3, 1, NULL, 8.00, NULL, '2025-09-14 04:47:41', '2025-09-14 04:47:41', 3, NULL), +(878, '2025-09-14', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-09-14 04:47:41', '2025-09-14 04:47:41', 3, NULL), +(879, '2025-09-15', 5, 3, 3, 1, NULL, 8.00, NULL, '2025-09-15 06:50:00', '2025-09-15 06:50:00', 3, NULL), +(880, '2025-09-15', 10, 3, 3, 1, NULL, 8.00, NULL, '2025-09-15 06:50:00', '2025-09-15 06:50:00', 3, NULL), +(881, '2025-09-15', 9, 3, 3, 1, NULL, 8.00, NULL, '2025-09-15 06:50:00', '2025-09-15 06:50:00', 3, NULL), +(882, '2025-09-15', 8, 3, 3, 1, NULL, 8.00, NULL, '2025-09-15 06:50:00', '2025-09-15 06:50:00', 3, NULL), +(883, '2025-09-15', 7, 3, 3, 1, NULL, 8.00, NULL, '2025-09-15 06:50:01', '2025-09-15 06:50:01', 3, NULL), +(884, '2025-09-15', 6, 3, 3, 1, NULL, 8.00, NULL, '2025-09-15 06:50:01', '2025-09-15 06:50:01', 3, NULL), +(885, '2025-09-15', 4, 3, 3, 1, NULL, 8.00, NULL, '2025-09-15 06:50:01', '2025-09-15 06:50:01', 3, NULL), +(886, '2025-09-15', 3, 3, 3, 1, NULL, 8.00, NULL, '2025-09-15 06:50:01', '2025-09-15 06:50:01', 3, NULL), +(887, '2025-09-15', 2, 3, 3, 1, NULL, 8.00, NULL, '2025-09-15 06:50:01', '2025-09-15 06:50:01', 3, NULL), +(888, '2025-09-15', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-09-15 06:50:01', '2025-09-15 06:50:01', 3, NULL), +(889, '2025-09-16', 2, 8, 3, 1, NULL, 8.00, NULL, '2025-09-16 06:51:19', '2025-09-16 06:51:19', 5, NULL), +(890, '2025-09-16', 4, 8, 3, 1, NULL, 8.00, NULL, '2025-09-16 06:51:19', '2025-09-16 06:51:19', 5, NULL), +(891, '2025-09-16', 8, 8, 2, 1, NULL, 2.00, NULL, '2025-09-16 06:52:12', '2025-09-16 06:52:12', 5, NULL), +(892, '2025-09-16', 8, 3, 2, 1, NULL, 6.00, NULL, '2025-09-16 06:52:12', '2025-09-16 06:52:12', 5, NULL), +(893, '2025-09-17', 4, 8, 3, 1, NULL, 8.00, NULL, '2025-09-17 06:43:08', '2025-09-17 06:43:08', 5, NULL), +(894, '2025-09-17', 2, 8, 3, 1, NULL, 8.00, NULL, '2025-09-17 06:43:08', '2025-09-17 06:43:08', 5, NULL), +(895, '2025-09-17', 10, 3, 3, 1, NULL, 8.00, NULL, '2025-09-17 06:45:06', '2025-09-17 06:45:06', 3, NULL), +(896, '2025-09-17', 9, 3, 3, 1, NULL, 8.00, NULL, '2025-09-17 06:45:06', '2025-09-17 06:45:06', 3, NULL), +(897, '2025-09-17', 8, 3, 3, 1, NULL, 8.00, NULL, '2025-09-17 06:45:06', '2025-09-17 06:45:06', 3, NULL), +(898, '2025-09-17', 7, 3, 3, 1, NULL, 8.00, NULL, '2025-09-17 06:45:06', '2025-09-17 06:45:06', 3, NULL), +(899, '2025-09-17', 6, 3, 3, 1, NULL, 8.00, NULL, '2025-09-17 06:45:06', '2025-09-17 06:45:06', 3, NULL), +(900, '2025-09-17', 5, 3, 3, 1, NULL, 8.00, NULL, '2025-09-17 06:45:06', '2025-09-17 06:45:06', 3, NULL), +(901, '2025-09-17', 3, 3, 3, 1, NULL, 8.00, NULL, '2025-09-17 06:45:06', '2025-09-17 06:45:06', 3, NULL), +(902, '2025-09-17', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-09-17 06:45:06', '2025-09-17 06:45:06', 3, NULL), +(903, '2025-09-18', 7, 3, 3, 1, NULL, 8.00, NULL, '2025-09-18 06:43:40', '2025-09-18 06:43:40', 3, NULL), +(904, '2025-09-18', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-09-18 06:43:40', '2025-09-18 06:43:40', 3, NULL), +(905, '2025-09-18', 10, 3, 2, 1, NULL, 8.00, NULL, '2025-09-18 06:44:42', '2025-09-18 06:44:42', 3, NULL), +(906, '2025-09-18', 9, 3, 2, 1, NULL, 8.00, NULL, '2025-09-18 06:44:42', '2025-09-18 06:44:42', 3, NULL), +(907, '2025-09-18', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-09-18 06:44:42', '2025-09-18 06:44:42', 3, NULL), +(908, '2025-09-18', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-09-18 06:44:42', '2025-09-18 06:44:42', 3, NULL), +(909, '2025-09-18', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-09-18 06:44:42', '2025-09-18 06:44:42', 3, NULL), +(910, '2025-09-18', 5, 3, 2, 1, NULL, 6.00, NULL, '2025-09-18 06:46:39', '2025-09-18 06:46:39', 3, NULL), +(911, '2025-09-18', 2, 8, 3, 1, NULL, 8.00, NULL, '2025-09-18 06:54:48', '2025-09-18 06:54:48', 5, NULL), +(912, '2025-09-18', 4, 8, 3, 1, NULL, 8.00, NULL, '2025-09-18 06:54:48', '2025-09-18 06:54:48', 5, NULL), +(913, '2025-09-19', 4, 8, 3, 1, NULL, 8.00, NULL, '2025-09-19 06:51:40', '2025-09-19 06:51:40', 5, NULL), +(914, '2025-09-19', 2, 8, 3, 1, NULL, 8.00, NULL, '2025-09-19 06:51:40', '2025-09-19 06:51:40', 5, NULL), +(915, '2025-09-19', 10, 3, 2, 1, NULL, 8.00, NULL, '2025-09-19 06:52:05', '2025-09-19 06:52:05', 5, NULL), +(916, '2025-09-19', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-09-19 06:52:05', '2025-09-19 06:52:05', 5, NULL), +(917, '2025-09-19', 7, 3, 2, 1, NULL, 8.00, NULL, '2025-09-19 06:52:05', '2025-09-19 06:52:05', 5, NULL), +(918, '2025-09-19', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-09-19 06:52:05', '2025-09-19 06:52:05', 5, NULL), +(919, '2025-09-19', 5, 3, 2, 1, NULL, 8.00, NULL, '2025-09-19 06:52:05', '2025-09-19 06:52:05', 5, NULL), +(920, '2025-09-19', 3, 3, 2, 1, NULL, 4.00, NULL, '2025-09-19 06:52:23', '2025-09-19 06:52:23', 5, NULL), +(921, '2025-09-20', 4, 8, 3, 1, NULL, 8.00, NULL, '2025-09-20 05:30:19', '2025-09-20 05:30:19', 5, NULL), +(922, '2025-09-20', 2, 8, 3, 1, NULL, 8.00, NULL, '2025-09-20 05:30:19', '2025-09-20 05:30:19', 5, NULL), +(923, '2025-09-22', 10, 3, 2, 1, NULL, 8.00, NULL, '2025-09-22 06:47:25', '2025-09-22 06:47:25', 3, NULL), +(924, '2025-09-22', 9, 3, 2, 1, NULL, 8.00, NULL, '2025-09-22 06:47:25', '2025-09-22 06:47:25', 3, NULL), +(925, '2025-09-22', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-09-22 06:47:25', '2025-09-22 06:47:25', 3, NULL), +(926, '2025-09-22', 7, 3, 2, 1, NULL, 8.00, NULL, '2025-09-22 06:47:25', '2025-09-22 06:47:25', 3, NULL), +(927, '2025-09-22', 5, 3, 2, 1, NULL, 8.00, NULL, '2025-09-22 06:47:25', '2025-09-22 06:47:25', 3, NULL), +(928, '2025-09-22', 1, 3, 2, 1, NULL, 8.00, NULL, '2025-09-22 06:47:25', '2025-09-22 06:47:25', 3, NULL), +(929, '2025-09-22', 4, 8, 3, 1, NULL, 8.00, NULL, '2025-09-22 06:50:29', '2025-09-22 06:50:29', 5, NULL), +(930, '2025-09-22', 2, 8, 3, 1, NULL, 8.00, NULL, '2025-09-22 06:50:29', '2025-09-22 06:50:29', 5, NULL), +(931, '2025-09-23', 4, 8, 3, 1, NULL, 8.00, NULL, '2025-09-23 05:46:40', '2025-09-23 05:46:40', 5, NULL), +(932, '2025-09-23', 2, 8, 3, 1, NULL, 8.00, NULL, '2025-09-23 05:46:40', '2025-09-23 05:46:40', 5, NULL), +(933, '2025-09-24', 4, 8, 3, 1, NULL, 8.00, NULL, '2025-09-25 01:14:58', '2025-09-25 01:14:58', 5, NULL), +(934, '2025-09-24', 2, 8, 3, 1, NULL, 8.00, NULL, '2025-09-25 01:14:58', '2025-09-25 01:14:58', 5, NULL), +(935, '2025-09-29', 7, 14, 1, 1, NULL, 8.00, NULL, '2025-09-29 06:36:07', '2025-09-29 06:36:07', 3, NULL), +(936, '2025-09-29', 1, 14, 1, 1, NULL, 8.00, NULL, '2025-09-29 06:36:07', '2025-09-29 06:36:07', 3, NULL), +(937, '2025-09-29', 10, 3, 2, 1, NULL, 8.00, NULL, '2025-09-29 06:36:47', '2025-09-29 06:36:47', 3, NULL), +(938, '2025-09-29', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-09-29 06:36:47', '2025-09-29 06:36:47', 3, NULL), +(939, '2025-09-29', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-09-29 06:36:47', '2025-09-29 06:36:47', 3, NULL), +(940, '2025-09-29', 9, 3, 2, 1, NULL, 8.00, NULL, '2025-09-29 06:36:47', '2025-09-29 06:36:47', 3, NULL), +(941, '2025-09-29', 5, 3, 2, 1, NULL, 8.00, NULL, '2025-09-29 06:36:47', '2025-09-29 06:36:47', 3, NULL), +(942, '2025-09-29', 4, 3, 2, 1, NULL, 8.00, NULL, '2025-09-29 06:36:47', '2025-09-29 06:36:47', 3, NULL), +(943, '2025-09-29', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-09-29 06:36:47', '2025-09-29 06:36:47', 3, NULL), +(944, '2025-09-29', 2, 3, 2, 1, NULL, 8.00, NULL, '2025-09-29 06:36:47', '2025-09-29 06:36:47', 3, NULL), +(945, '2025-09-30', 10, 3, 2, 1, NULL, 8.00, NULL, '2025-09-30 06:52:26', '2025-09-30 06:52:26', 3, NULL), +(946, '2025-09-30', 9, 3, 2, 1, NULL, 8.00, NULL, '2025-09-30 06:52:26', '2025-09-30 06:52:26', 3, NULL), +(947, '2025-09-30', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-09-30 06:52:26', '2025-09-30 06:52:26', 3, NULL), +(948, '2025-09-30', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-09-30 06:52:26', '2025-09-30 06:52:26', 3, NULL), +(949, '2025-09-30', 5, 3, 2, 1, NULL, 8.00, NULL, '2025-09-30 06:52:26', '2025-09-30 06:52:26', 3, NULL), +(950, '2025-09-30', 4, 3, 2, 1, NULL, 8.00, NULL, '2025-09-30 06:52:26', '2025-09-30 06:52:26', 3, NULL), +(951, '2025-09-30', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-09-30 06:52:27', '2025-09-30 06:52:27', 3, NULL), +(953, '2025-09-30', 1, 3, 2, 1, NULL, 8.00, NULL, '2025-09-30 06:52:27', '2025-09-30 06:52:27', 3, NULL), +(954, '2025-09-30', 2, 8, 3, 1, NULL, 8.00, NULL, '2025-09-30 06:56:55', '2025-09-30 06:56:55', 5, NULL), +(955, '2025-10-02', 5, 3, 2, 1, NULL, 6.00, NULL, '2025-10-02 05:25:58', '2025-10-02 05:25:58', 3, NULL), +(956, '2025-10-02', 8, 3, 2, 1, NULL, 6.00, NULL, '2025-10-02 05:25:59', '2025-10-02 05:25:59', 3, NULL), +(957, '2025-10-02', 10, 3, 2, 1, NULL, 8.00, NULL, '2025-10-02 06:22:32', '2025-10-02 06:22:32', 3, NULL), +(958, '2025-10-02', 9, 3, 2, 1, NULL, 8.00, NULL, '2025-10-02 06:22:32', '2025-10-02 06:22:32', 3, NULL), +(959, '2025-10-02', 7, 3, 2, 1, NULL, 8.00, NULL, '2025-10-02 06:22:32', '2025-10-02 06:22:32', 3, NULL), +(960, '2025-10-02', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-10-02 06:22:32', '2025-10-02 06:22:32', 3, NULL), +(961, '2025-10-02', 4, 3, 2, 1, NULL, 8.00, NULL, '2025-10-02 06:22:33', '2025-10-02 06:22:33', 3, NULL), +(962, '2025-10-02', 2, 3, 2, 1, NULL, 8.00, NULL, '2025-10-02 06:22:33', '2025-10-02 06:22:33', 3, NULL), +(963, '2025-10-02', 1, 3, 2, 1, NULL, 8.00, NULL, '2025-10-02 06:22:33', '2025-10-02 06:22:33', 3, NULL), +(964, '2025-09-01', 8, 5, 3, 1, NULL, 8.00, NULL, '2025-10-10 23:35:07', '2025-10-10 23:35:07', 3, NULL), +(965, '2025-09-01', 4, 5, 3, 1, NULL, 8.00, NULL, '2025-10-10 23:35:07', '2025-10-10 23:35:07', 3, NULL), +(966, '2025-09-01', 2, 5, 3, 1, NULL, 8.00, NULL, '2025-10-10 23:35:07', '2025-10-10 23:35:07', 3, NULL), +(967, '2025-10-13', 10, 10, 3, 1, NULL, 8.00, NULL, '2025-10-13 06:53:05', '2025-10-13 06:53:05', 5, NULL), +(968, '2025-10-13', 7, 10, 3, 1, NULL, 8.00, NULL, '2025-10-13 06:53:05', '2025-10-13 06:53:05', 5, NULL), +(969, '2025-10-13', 2, 10, 3, 1, NULL, 8.00, NULL, '2025-10-13 06:53:05', '2025-10-13 06:53:05', 5, NULL), +(970, '2025-10-13', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-10-13 06:53:30', '2025-10-13 06:53:30', 5, NULL), +(971, '2025-10-13', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-10-13 06:53:30', '2025-10-13 06:53:30', 5, NULL), +(972, '2025-10-13', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-10-13 06:53:30', '2025-10-13 06:53:30', 5, NULL), +(973, '2025-10-13', 5, 3, 3, 1, NULL, 8.00, NULL, '2025-10-13 06:53:53', '2025-10-13 06:53:53', 5, NULL), +(974, '2025-10-13', 4, 3, 3, 1, NULL, 8.00, NULL, '2025-10-13 06:53:53', '2025-10-13 06:53:53', 5, NULL), +(975, '2025-10-13', 9, 3, 2, 1, NULL, 4.00, NULL, '2025-10-13 06:54:19', '2025-10-13 06:54:19', 5, NULL), +(976, '2025-10-13', 9, 10, 3, 1, NULL, 4.00, NULL, '2025-10-13 06:54:19', '2025-10-13 06:54:19', 5, NULL), +(977, '2025-10-13', 1, 3, 1, 1, NULL, 8.00, NULL, '2025-10-13 06:54:41', '2025-10-13 06:54:41', 5, NULL), +(978, '2025-10-14', 10, 10, 3, 1, NULL, 8.00, NULL, '2025-10-14 06:55:49', '2025-10-14 06:55:49', 5, NULL), +(979, '2025-10-14', 2, 10, 3, 1, NULL, 8.00, NULL, '2025-10-14 06:55:49', '2025-10-14 06:55:49', 5, NULL), +(980, '2025-10-14', 9, 3, 2, 1, NULL, 8.00, NULL, '2025-10-14 06:56:57', '2025-10-14 06:56:57', 3, NULL), +(981, '2025-10-14', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-10-14 06:56:57', '2025-10-14 06:56:57', 3, NULL), +(982, '2025-10-14', 7, 3, 2, 1, NULL, 8.00, NULL, '2025-10-14 06:56:57', '2025-10-14 06:56:57', 3, NULL), +(983, '2025-10-14', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-10-14 06:56:57', '2025-10-14 06:56:57', 3, NULL), +(984, '2025-10-14', 5, 3, 2, 1, NULL, 8.00, NULL, '2025-10-14 06:56:57', '2025-10-14 06:56:57', 3, NULL), +(985, '2025-10-14', 4, 3, 2, 1, NULL, 8.00, NULL, '2025-10-14 06:56:57', '2025-10-14 06:56:57', 3, NULL), +(986, '2025-10-14', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-10-14 06:56:57', '2025-10-14 06:56:57', 3, NULL), +(987, '2025-10-14', 1, 3, 2, 1, NULL, 8.00, NULL, '2025-10-14 06:56:57', '2025-10-14 06:56:57', 3, NULL), +(988, '2025-10-15', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-10-15 06:58:52', '2025-10-15 06:58:52', 3, NULL), +(989, '2025-10-15', 7, 3, 2, 1, NULL, 8.00, NULL, '2025-10-15 06:58:52', '2025-10-15 06:58:52', 3, NULL), +(990, '2025-10-15', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-10-15 06:58:52', '2025-10-15 06:58:52', 3, NULL), +(991, '2025-10-15', 5, 3, 2, 1, NULL, 8.00, NULL, '2025-10-15 06:58:52', '2025-10-15 06:58:52', 3, NULL), +(992, '2025-10-15', 4, 3, 2, 1, NULL, 8.00, NULL, '2025-10-15 06:58:53', '2025-10-15 06:58:53', 3, NULL), +(993, '2025-10-15', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-10-15 06:58:53', '2025-10-15 06:58:53', 3, NULL), +(994, '2025-10-15', 1, 3, 2, 1, NULL, 8.00, NULL, '2025-10-15 06:58:53', '2025-10-15 06:58:53', 3, NULL), +(995, '2025-10-15', 10, 10, 3, 1, NULL, 8.00, NULL, '2025-10-15 06:59:41', '2025-10-15 06:59:41', 3, NULL), +(996, '2025-10-15', 9, 10, 3, 1, NULL, 8.00, NULL, '2025-10-15 06:59:41', '2025-10-15 06:59:41', 3, NULL), +(997, '2025-10-15', 2, 10, 3, 1, NULL, 4.00, NULL, '2025-10-15 07:00:06', '2025-10-15 07:00:06', 3, NULL), +(998, '2025-10-16', 9, 3, 2, 1, NULL, 8.00, NULL, '2025-10-16 06:51:59', '2025-10-16 06:51:59', 3, NULL), +(999, '2025-10-16', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-10-16 06:51:59', '2025-10-16 06:51:59', 3, NULL), +(1000, '2025-10-16', 7, 3, 2, 1, NULL, 8.00, NULL, '2025-10-16 06:51:59', '2025-10-16 06:51:59', 3, NULL), +(1001, '2025-10-16', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-10-16 06:51:59', '2025-10-16 06:51:59', 3, NULL), +(1002, '2025-10-16', 5, 3, 2, 1, NULL, 8.00, NULL, '2025-10-16 06:51:59', '2025-10-16 06:51:59', 3, NULL), +(1003, '2025-10-16', 4, 3, 2, 1, NULL, 8.00, NULL, '2025-10-16 06:51:59', '2025-10-16 06:51:59', 3, NULL), +(1004, '2025-10-16', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-10-16 06:51:59', '2025-10-16 06:51:59', 3, NULL), +(1005, '2025-10-16', 1, 3, 2, 1, NULL, 8.00, NULL, '2025-10-16 06:52:00', '2025-10-16 06:52:00', 3, NULL), +(1006, '2025-10-20', 9, 3, 2, 1, NULL, 8.00, NULL, '2025-10-20 06:49:45', '2025-10-20 06:49:45', 3, NULL), +(1007, '2025-10-20', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-10-20 06:49:45', '2025-10-20 06:49:45', 3, NULL), +(1008, '2025-10-20', 7, 3, 2, 1, NULL, 8.00, NULL, '2025-10-20 06:49:45', '2025-10-20 06:49:45', 3, NULL), +(1009, '2025-10-20', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-10-20 06:49:45', '2025-10-20 06:49:45', 3, NULL), +(1010, '2025-10-20', 5, 3, 2, 1, NULL, 8.00, NULL, '2025-10-20 06:49:45', '2025-10-20 06:49:45', 3, NULL), +(1011, '2025-10-20', 4, 3, 2, 1, NULL, 8.00, NULL, '2025-10-20 06:49:45', '2025-10-20 06:49:45', 3, NULL), +(1012, '2025-10-20', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-10-20 06:49:45', '2025-10-20 06:49:45', 3, NULL), +(1013, '2025-10-20', 1, 3, 2, 1, NULL, 8.00, NULL, '2025-10-20 06:49:46', '2025-10-20 06:49:46', 3, NULL), +(1014, '2025-10-20', 2, 10, 3, 1, NULL, 8.00, NULL, '2025-10-20 06:50:55', '2025-10-20 06:50:55', 5, NULL), +(1015, '2025-10-20', 10, 10, 3, 1, NULL, 8.00, NULL, '2025-10-20 06:50:55', '2025-10-20 06:50:55', 5, NULL), +(1017, '2025-10-21', 10, 3, 3, 1, NULL, 4.00, NULL, '2025-10-21 08:42:41', '2025-10-21 08:42:41', 5, NULL), +(1019, '2025-10-21', 2, 3, 3, 1, NULL, 4.00, NULL, '2025-10-21 08:42:41', '2025-10-21 08:42:41', 5, NULL); +INSERT INTO `daily_work_reports` (`id`, `report_date`, `worker_id`, `project_id`, `work_type_id`, `work_status_id`, `error_type_id`, `work_hours`, `description`, `created_at`, `updated_at`, `created_by`, `updated_by`) VALUES +(1020, '2025-10-21', 8, 3, 2, 1, NULL, 10.00, NULL, '2025-10-21 08:43:34', '2025-10-21 08:43:34', 5, NULL), +(1021, '2025-10-21', 6, 3, 2, 1, NULL, 10.00, NULL, '2025-10-21 08:43:34', '2025-10-21 08:43:34', 5, NULL), +(1022, '2025-10-21', 3, 3, 2, 1, NULL, 10.00, NULL, '2025-10-21 08:43:34', '2025-10-21 08:43:34', 5, NULL), +(1023, '2025-10-21', 10, 10, 3, 1, NULL, 6.00, NULL, '2025-10-21 08:44:26', '2025-10-21 08:44:26', 5, NULL), +(1024, '2025-10-21', 2, 10, 3, 1, NULL, 6.00, NULL, '2025-10-21 08:44:27', '2025-10-21 08:44:27', 5, NULL), +(1025, '2025-10-21', 5, 3, 3, 1, NULL, 10.00, NULL, '2025-10-21 08:45:01', '2025-10-21 08:45:01', 5, NULL), +(1026, '2025-10-21', 4, 3, 3, 1, NULL, 10.00, NULL, '2025-10-21 08:45:01', '2025-10-21 08:45:01', 5, NULL), +(1027, '2025-10-21', 9, 3, 3, 1, NULL, 10.00, NULL, '2025-10-21 08:45:28', '2025-10-21 08:45:28', 5, NULL), +(1028, '2025-10-21', 1, 3, 3, 1, NULL, 10.00, NULL, '2025-10-21 08:45:28', '2025-10-21 08:45:28', 5, NULL), +(1029, '2025-10-21', 7, 3, 3, 1, NULL, 10.00, NULL, '2025-10-21 08:45:28', '2025-10-21 08:45:28', 5, NULL), +(1030, '2025-10-22', 2, 11, 2, 1, NULL, 4.00, NULL, '2025-10-22 06:47:36', '2025-10-22 06:47:36', 5, NULL), +(1031, '2025-10-22', 2, 10, 1, 1, NULL, 4.00, NULL, '2025-10-22 06:47:36', '2025-10-22 06:47:36', 5, NULL), +(1032, '2025-10-22', 10, 11, 2, 1, NULL, 4.00, NULL, '2025-10-22 06:47:36', '2025-10-22 06:47:36', 5, NULL), +(1033, '2025-10-22', 10, 10, 1, 1, NULL, 4.00, NULL, '2025-10-22 06:47:36', '2025-10-22 06:47:36', 5, NULL), +(1034, '2025-10-22', 9, 3, 3, 1, NULL, 8.00, NULL, '2025-10-22 06:48:06', '2025-10-22 06:48:06', 5, NULL), +(1035, '2025-10-22', 8, 3, 3, 1, NULL, 8.00, NULL, '2025-10-22 06:48:06', '2025-10-22 06:48:06', 5, NULL), +(1036, '2025-10-22', 6, 3, 3, 1, NULL, 8.00, NULL, '2025-10-22 06:48:06', '2025-10-22 06:48:06', 5, NULL), +(1039, '2025-10-22', 7, 3, 3, 1, NULL, 8.00, NULL, '2025-10-22 06:48:11', '2025-10-22 06:48:11', 3, NULL), +(1043, '2025-10-22', 3, 3, 3, 1, NULL, 8.00, NULL, '2025-10-22 06:48:11', '2025-10-22 06:48:11', 3, NULL), +(1044, '2025-10-22', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-10-22 06:48:11', '2025-10-22 06:48:11', 3, NULL), +(1047, '2025-10-22', 5, 11, 3, 1, NULL, 8.00, NULL, '2025-10-22 06:48:50', '2025-10-22 06:48:50', 5, NULL), +(1048, '2025-10-22', 4, 11, 3, 1, NULL, 8.00, NULL, '2025-10-22 06:48:50', '2025-10-22 06:48:50', 5, NULL), +(1051, '2025-10-24', 9, 3, 3, 1, NULL, 8.00, NULL, '2025-10-24 06:47:05', '2025-10-24 06:47:05', 3, NULL), +(1052, '2025-10-24', 8, 3, 3, 1, NULL, 8.00, NULL, '2025-10-24 06:47:06', '2025-10-24 06:47:06', 3, NULL), +(1053, '2025-10-24', 7, 3, 3, 1, NULL, 8.00, NULL, '2025-10-24 06:47:06', '2025-10-24 06:47:06', 3, NULL), +(1054, '2025-10-24', 6, 3, 3, 1, NULL, 8.00, NULL, '2025-10-24 06:47:06', '2025-10-24 06:47:06', 3, NULL), +(1055, '2025-10-24', 5, 3, 3, 1, NULL, 8.00, NULL, '2025-10-24 06:47:06', '2025-10-24 06:47:06', 3, NULL), +(1056, '2025-10-24', 3, 3, 3, 1, NULL, 8.00, NULL, '2025-10-24 06:47:06', '2025-10-24 06:47:06', 3, NULL), +(1057, '2025-10-24', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-10-24 06:47:06', '2025-10-24 06:47:06', 3, NULL), +(1058, '2025-10-24', 4, 3, 3, 1, NULL, 4.00, NULL, '2025-10-24 06:48:13', '2025-10-24 06:48:13', 3, NULL), +(1059, '2025-10-25', 10, 3, 3, 1, NULL, 8.00, NULL, '2025-10-25 05:32:47', '2025-10-25 05:32:47', 3, NULL), +(1060, '2025-10-25', 8, 3, 3, 1, NULL, 8.00, NULL, '2025-10-25 05:32:47', '2025-10-25 05:32:47', 3, NULL), +(1061, '2025-10-25', 6, 3, 3, 1, NULL, 8.00, NULL, '2025-10-25 05:32:47', '2025-10-25 05:32:47', 3, NULL), +(1062, '2025-10-25', 5, 3, 3, 1, NULL, 8.00, NULL, '2025-10-25 05:32:47', '2025-10-25 05:32:47', 3, NULL), +(1063, '2025-10-25', 4, 3, 3, 1, NULL, 8.00, NULL, '2025-10-25 05:32:47', '2025-10-25 05:32:47', 3, NULL), +(1064, '2025-10-25', 3, 3, 3, 1, NULL, 8.00, NULL, '2025-10-25 05:32:47', '2025-10-25 05:32:47', 3, NULL), +(1065, '2025-10-25', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-10-25 05:32:47', '2025-10-25 05:32:47', 3, NULL), +(1066, '2025-10-27', 9, 3, 3, 1, NULL, 8.00, NULL, '2025-10-27 06:41:58', '2025-10-27 06:41:58', 3, NULL), +(1067, '2025-10-27', 8, 3, 3, 1, NULL, 8.00, NULL, '2025-10-27 06:41:58', '2025-10-27 06:41:58', 3, NULL), +(1070, '2025-10-27', 5, 3, 3, 1, NULL, 8.00, NULL, '2025-10-27 06:41:58', '2025-10-27 06:41:58', 3, NULL), +(1071, '2025-10-27', 4, 3, 3, 1, NULL, 8.00, NULL, '2025-10-27 06:41:58', '2025-10-27 06:41:58', 3, NULL), +(1072, '2025-10-27', 3, 3, 3, 1, NULL, 8.00, NULL, '2025-10-27 06:41:58', '2025-10-27 06:41:58', 3, NULL), +(1074, '2025-10-27', 6, 3, 3, 1, NULL, 4.00, NULL, '2025-10-27 06:43:11', '2025-10-27 06:43:11', 3, NULL), +(1075, '2025-10-27', 10, 10, 3, 1, NULL, 8.00, NULL, '2025-10-28 08:44:41', '2025-10-28 08:44:41', 5, NULL), +(1076, '2025-10-27', 2, 10, 3, 1, NULL, 8.00, NULL, '2025-10-28 08:44:41', '2025-10-28 08:44:41', 5, NULL), +(1077, '2025-10-28', 10, 10, 3, 1, NULL, 10.00, NULL, '2025-10-28 08:45:05', '2025-10-28 08:45:05', 5, NULL), +(1078, '2025-10-28', 2, 10, 3, 1, NULL, 10.00, NULL, '2025-10-28 08:45:05', '2025-10-28 08:45:05', 5, NULL), +(1079, '2025-10-28', 7, 3, 1, 2, 1, 10.00, NULL, '2025-10-28 08:47:28', '2025-10-28 08:47:28', 3, NULL), +(1080, '2025-10-28', 1, 3, 1, 2, 1, 10.00, NULL, '2025-10-28 08:47:28', '2025-10-28 08:47:28', 3, NULL), +(1081, '2025-10-28', 9, 3, 3, 1, NULL, 10.00, NULL, '2025-10-28 08:48:02', '2025-10-28 08:48:02', 3, NULL), +(1082, '2025-10-28', 8, 3, 3, 1, NULL, 10.00, NULL, '2025-10-28 08:48:02', '2025-10-28 08:48:02', 3, NULL), +(1083, '2025-10-28', 6, 3, 3, 1, NULL, 10.00, NULL, '2025-10-28 08:48:02', '2025-10-28 08:48:02', 3, NULL), +(1084, '2025-10-28', 5, 3, 3, 1, NULL, 10.00, NULL, '2025-10-28 08:48:02', '2025-10-28 08:48:02', 3, NULL), +(1085, '2025-10-28', 4, 3, 3, 1, NULL, 10.00, NULL, '2025-10-28 08:48:03', '2025-10-28 08:48:03', 3, NULL), +(1086, '2025-10-28', 3, 3, 3, 1, NULL, 10.00, NULL, '2025-10-28 08:48:03', '2025-10-28 08:48:03', 3, NULL), +(1087, '2025-10-29', 8, 3, 3, 1, NULL, 8.00, NULL, '2025-10-29 06:51:34', '2025-10-29 06:51:34', 3, NULL), +(1089, '2025-10-29', 6, 3, 3, 1, NULL, 8.00, NULL, '2025-10-29 06:51:34', '2025-10-29 06:51:34', 3, NULL), +(1090, '2025-10-29', 5, 3, 3, 1, NULL, 8.00, NULL, '2025-10-29 06:51:34', '2025-10-29 06:51:34', 3, NULL), +(1091, '2025-10-29', 4, 3, 3, 1, NULL, 8.00, NULL, '2025-10-29 06:51:34', '2025-10-29 06:51:34', 3, NULL), +(1092, '2025-10-29', 3, 3, 3, 1, NULL, 8.00, NULL, '2025-10-29 06:51:34', '2025-10-29 06:51:34', 3, NULL), +(1094, '2025-10-29', 10, 10, 3, 1, NULL, 8.00, NULL, '2025-10-29 06:51:44', '2025-10-29 06:51:44', 5, NULL), +(1095, '2025-10-29', 2, 10, 3, 1, NULL, 8.00, NULL, '2025-10-29 06:51:44', '2025-10-29 06:51:44', 5, NULL), +(1097, '2025-10-30', 8, 3, 3, 1, NULL, 8.00, NULL, '2025-10-30 08:49:06', '2025-10-30 08:49:06', 5, NULL), +(1098, '2025-10-30', 8, 10, 3, 1, NULL, 2.00, NULL, '2025-10-30 08:49:06', '2025-10-30 08:49:06', 5, NULL), +(1099, '2025-10-30', 9, 13, 4, 1, NULL, 0.00, NULL, '2025-10-30 08:49:47', '2025-10-30 08:49:47', 5, NULL), +(1100, '2025-10-30', 7, 3, 3, 1, NULL, 10.00, NULL, '2025-10-30 08:50:19', '2025-10-30 08:50:19', 5, NULL), +(1101, '2025-10-30', 5, 11, 3, 1, NULL, 10.00, NULL, '2025-10-30 08:50:43', '2025-10-30 08:50:43', 5, NULL), +(1102, '2025-10-30', 4, 11, 3, 1, NULL, 10.00, NULL, '2025-10-30 08:50:43', '2025-10-30 08:50:43', 5, NULL), +(1104, '2025-10-30', 2, 10, 3, 1, NULL, 10.00, NULL, '2025-10-30 08:51:30', '2025-10-30 08:51:30', 5, NULL), +(1105, '2025-10-30', 6, 3, 3, 1, NULL, 10.00, NULL, '2025-10-30 08:52:04', '2025-10-30 08:52:04', 5, NULL), +(1106, '2025-10-30', 3, 3, 3, 1, NULL, 10.00, NULL, '2025-10-30 08:52:04', '2025-10-30 08:52:04', 5, NULL), +(1107, '2025-10-31', 9, 10, 3, 2, 1, 8.00, NULL, '2025-10-31 06:53:09', '2025-10-31 06:53:09', 5, NULL), +(1108, '2025-10-31', 2, 10, 3, 2, 1, 8.00, NULL, '2025-10-31 06:53:09', '2025-10-31 06:53:09', 5, NULL), +(1110, '2025-11-01', 10, 10, 3, 1, NULL, 8.00, NULL, '2025-11-01 05:55:09', '2025-11-01 05:55:09', 5, NULL), +(1111, '2025-11-01', 9, 10, 3, 1, NULL, 8.00, NULL, '2025-11-01 05:55:09', '2025-11-01 05:55:09', 5, NULL), +(1112, '2025-11-01', 2, 10, 3, 1, NULL, 8.00, NULL, '2025-11-01 05:55:09', '2025-11-01 05:55:09', 5, NULL), +(1113, '2025-10-30', 1, 13, 1, 1, NULL, 2.00, '반반차 처리', '2025-11-03 21:48:30', '2025-11-03 21:48:30', 3, NULL), +(1114, '2025-10-30', 9, 13, 1, 1, NULL, 8.00, '연차 처리', '2025-11-03 21:56:32', '2025-11-03 21:56:32', 3, NULL), +(1115, '2025-10-01', 10, 3, 2, 1, NULL, 8.00, NULL, '2025-11-04 05:29:09', '2025-11-04 05:29:09', 1, NULL), +(1116, '2025-10-01', 4, 3, 2, 1, NULL, 8.00, NULL, '2025-11-04 05:29:09', '2025-11-04 05:29:09', 1, NULL), +(1117, '2025-10-01', 3, 3, 2, 1, NULL, 8.00, NULL, '2025-11-04 05:29:09', '2025-11-04 05:29:09', 1, NULL), +(1118, '2025-10-01', 9, 3, 2, 1, NULL, 8.00, NULL, '2025-11-04 05:29:09', '2025-11-04 05:29:09', 1, NULL), +(1119, '2025-10-01', 8, 3, 2, 1, NULL, 8.00, NULL, '2025-11-04 05:29:09', '2025-11-04 05:29:09', 1, NULL), +(1120, '2025-10-01', 2, 3, 2, 1, NULL, 8.00, NULL, '2025-11-04 05:29:09', '2025-11-04 05:29:09', 1, NULL), +(1121, '2025-10-01', 1, 3, 2, 1, NULL, 8.00, NULL, '2025-11-04 05:29:09', '2025-11-04 05:29:09', 1, NULL), +(1122, '2025-10-01', 7, 3, 2, 1, NULL, 8.00, NULL, '2025-11-04 05:29:09', '2025-11-04 05:29:09', 1, NULL), +(1123, '2025-10-01', 6, 3, 2, 1, NULL, 8.00, NULL, '2025-11-04 05:29:09', '2025-11-04 05:29:09', 1, NULL), +(1124, '2025-10-01', 5, 3, 2, 1, NULL, 8.00, NULL, '2025-11-04 05:29:09', '2025-11-04 05:29:09', 1, NULL), +(1125, '2025-10-02', 5, 13, 1, 1, NULL, 2.00, '반반차 처리', '2025-11-04 05:30:23', '2025-11-04 05:30:23', 1, NULL), +(1126, '2025-10-02', 8, 13, 1, 1, NULL, 2.00, '반반차 처리', '2025-11-04 05:31:11', '2025-11-04 05:31:11', 1, NULL), +(1127, '2025-10-02', 3, 13, 11, 1, NULL, 8.00, NULL, '2025-11-04 06:09:53', '2025-11-04 06:09:53', 1, NULL), +(1128, '2025-10-15', 2, 13, 11, 1, NULL, 4.00, NULL, '2025-11-04 06:10:29', '2025-11-04 06:10:29', 1, NULL), +(1130, '2025-10-16', 2, 10, 3, 2, 1, 8.00, NULL, '2025-11-04 06:11:29', '2025-11-04 06:11:29', 1, NULL), +(1131, '2025-10-16', 10, 10, 3, 2, 1, 8.00, NULL, '2025-11-04 06:11:47', '2025-11-04 06:11:47', 1, NULL), +(1132, '2025-10-24', 10, 10, 3, 2, 1, 8.00, NULL, '2025-11-04 06:12:35', '2025-11-04 06:12:35', 1, NULL), +(1133, '2025-10-24', 2, 10, 3, 2, 1, 8.00, NULL, '2025-11-04 06:12:51', '2025-11-04 06:12:51', 1, NULL), +(1134, '2025-10-24', 4, 13, 11, 1, NULL, 4.00, NULL, '2025-11-04 06:13:01', '2025-11-04 06:13:01', 1, NULL), +(1135, '2025-10-27', 6, 13, 11, 1, NULL, 4.00, NULL, '2025-11-04 06:13:24', '2025-11-04 06:13:24', 1, NULL), +(1136, '2025-10-30', 10, 10, 3, 1, NULL, 8.00, NULL, '2025-11-04 06:15:07', '2025-11-04 06:15:07', 1, NULL), +(1137, '2025-10-29', 9, 3, 3, 1, NULL, 8.00, NULL, '2025-11-04 06:15:43', '2025-11-04 06:15:43', 1, NULL), +(1138, '2025-10-25', 9, 13, 11, 1, NULL, 8.00, NULL, '2025-11-04 06:17:02', '2025-11-04 06:17:02', 1, NULL), +(1139, '2025-10-25', 7, 13, 11, 1, NULL, 8.00, NULL, '2025-11-04 06:17:15', '2025-11-04 06:17:15', 1, NULL), +(1140, '2025-10-25', 2, 13, 11, 1, NULL, 8.00, NULL, '2025-11-04 06:17:29', '2025-11-04 06:17:29', 1, NULL), +(1141, '2025-10-17', 10, 10, 3, 2, 1, 8.00, NULL, '2025-11-04 06:31:47', '2025-11-04 06:31:47', 1, NULL), +(1142, '2025-10-17', 2, 10, 3, 2, 1, 8.00, NULL, '2025-11-04 06:31:47', '2025-11-04 06:31:47', 1, NULL), +(1143, '2025-10-17', 9, 3, 3, 2, 1, 8.00, NULL, '2025-11-04 06:36:54', '2025-11-04 06:36:54', 1, NULL), +(1144, '2025-10-17', 8, 3, 3, 2, 1, 8.00, NULL, '2025-11-04 06:36:54', '2025-11-04 06:36:54', 1, NULL), +(1145, '2025-10-17', 7, 3, 3, 2, 1, 8.00, NULL, '2025-11-04 06:36:54', '2025-11-04 06:36:54', 1, NULL), +(1146, '2025-10-17', 6, 3, 3, 2, 1, 8.00, NULL, '2025-11-04 06:36:54', '2025-11-04 06:36:54', 1, NULL), +(1147, '2025-10-17', 5, 3, 3, 2, 1, 8.00, NULL, '2025-11-04 06:36:54', '2025-11-04 06:36:54', 1, NULL), +(1148, '2025-10-17', 4, 3, 3, 2, 1, 8.00, NULL, '2025-11-04 06:36:54', '2025-11-04 06:36:54', 1, NULL), +(1149, '2025-10-17', 3, 3, 3, 2, 1, 8.00, NULL, '2025-11-04 06:36:54', '2025-11-04 06:36:54', 1, NULL), +(1150, '2025-10-17', 1, 3, 3, 2, 1, 8.00, NULL, '2025-11-04 06:36:54', '2025-11-04 06:36:54', 1, NULL), +(1151, '2025-10-23', 2, 10, 3, 2, 1, 10.00, NULL, '2025-11-04 06:37:19', '2025-11-04 06:37:19', 1, NULL), +(1152, '2025-10-23', 10, 10, 3, 2, 1, 10.00, NULL, '2025-11-04 06:37:19', '2025-11-04 06:37:19', 1, NULL), +(1153, '2025-10-23', 9, 3, 3, 2, 1, 10.00, NULL, '2025-11-04 06:37:41', '2025-11-04 06:37:41', 1, NULL), +(1154, '2025-10-23', 8, 3, 3, 2, 1, 10.00, NULL, '2025-11-04 06:37:41', '2025-11-04 06:37:41', 1, NULL), +(1155, '2025-10-23', 7, 3, 3, 2, 1, 10.00, NULL, '2025-11-04 06:37:41', '2025-11-04 06:37:41', 1, NULL), +(1156, '2025-10-23', 6, 3, 3, 2, 1, 10.00, NULL, '2025-11-04 06:37:41', '2025-11-04 06:37:41', 1, NULL), +(1157, '2025-10-23', 5, 3, 3, 2, 1, 10.00, NULL, '2025-11-04 06:37:41', '2025-11-04 06:37:41', 1, NULL), +(1159, '2025-10-23', 3, 3, 3, 2, 1, 10.00, NULL, '2025-11-04 06:37:41', '2025-11-04 06:37:41', 1, NULL), +(1160, '2025-10-23', 4, 3, 3, 2, 1, 10.00, NULL, '2025-11-04 06:37:41', '2025-11-04 06:37:41', 1, NULL), +(1161, '2025-10-31', 10, 10, 3, 2, 1, 8.00, NULL, '2025-11-04 06:38:35', '2025-11-04 06:38:35', 1, NULL), +(1164, '2025-10-31', 3, 3, 3, 2, 1, 8.00, NULL, '2025-11-04 06:39:13', '2025-11-04 06:39:13', 1, NULL), +(1165, '2025-10-31', 4, 3, 3, 2, 1, 8.00, NULL, '2025-11-04 06:39:13', '2025-11-04 06:39:13', 1, NULL), +(1166, '2025-10-31', 1, 3, 3, 2, 1, 8.00, NULL, '2025-11-04 06:39:13', '2025-11-04 06:39:13', 1, NULL), +(1167, '2025-10-31', 7, 3, 3, 2, 1, 8.00, NULL, '2025-11-04 06:39:13', '2025-11-04 06:39:13', 1, NULL), +(1168, '2025-10-31', 5, 3, 3, 2, 1, 8.00, NULL, '2025-11-04 06:39:13', '2025-11-04 06:39:13', 1, NULL), +(1169, '2025-10-31', 8, 3, 3, 2, 1, 8.00, NULL, '2025-11-04 06:39:13', '2025-11-04 06:39:13', 1, NULL), +(1170, '2025-10-31', 6, 3, 3, 2, 1, 8.00, NULL, '2025-11-04 06:39:13', '2025-11-04 06:39:13', 1, NULL), +(1171, '2025-10-23', 1, 3, 3, 2, 1, 8.00, NULL, '2025-11-04 06:43:18', '2025-11-04 06:43:18', 1, NULL), +(1172, '2025-10-30', 1, 3, 3, 1, NULL, 5.00, NULL, '2025-11-04 22:27:07', '2025-11-04 22:27:07', 1, NULL), +(1173, '2025-10-30', 1, 14, 1, 1, NULL, 1.00, NULL, '2025-11-04 22:27:22', '2025-11-04 22:27:22', 1, NULL), +(1174, '2025-10-29', 1, 3, 3, 1, NULL, 7.00, NULL, '2025-11-04 22:27:49', '2025-11-04 22:27:49', 1, NULL), +(1175, '2025-10-29', 1, 14, 1, 1, NULL, 1.00, NULL, '2025-11-04 22:28:03', '2025-11-04 22:28:03', 1, NULL), +(1176, '2025-10-29', 7, 14, 1, 1, NULL, 1.00, NULL, '2025-11-04 22:28:22', '2025-11-04 22:28:22', 1, NULL), +(1177, '2025-10-29', 7, 3, 3, 1, NULL, 7.00, NULL, '2025-11-04 22:28:32', '2025-11-04 22:28:32', 1, NULL), +(1178, '2025-10-27', 1, 3, 3, 1, NULL, 6.00, NULL, '2025-11-04 22:29:03', '2025-11-04 22:29:03', 1, NULL), +(1179, '2025-10-27', 1, 14, 1, 1, NULL, 2.00, NULL, '2025-11-04 22:29:13', '2025-11-04 22:29:13', 1, NULL), +(1180, '2025-10-27', 7, 14, 1, 1, NULL, 2.00, NULL, '2025-11-04 22:29:34', '2025-11-04 22:29:34', 1, NULL), +(1181, '2025-10-27', 7, 3, 3, 1, NULL, 6.00, NULL, '2025-11-04 22:29:45', '2025-11-04 22:29:45', 1, NULL), +(1192, '2025-11-03', 2, 10, 3, 2, 1, 8.00, NULL, '2025-11-05 02:54:31', '2025-11-05 02:54:31', 1, NULL), +(1193, '2025-11-03', 10, 10, 3, 2, 1, 8.00, NULL, '2025-11-05 02:54:31', '2025-11-05 02:54:31', 1, NULL), +(1194, '2025-11-03', 9, 10, 3, 2, 1, 6.00, NULL, '2025-11-05 02:55:16', '2025-11-05 02:55:16', 1, NULL), +(1195, '2025-11-03', 9, 3, 3, 1, NULL, 2.00, NULL, '2025-11-05 02:55:16', '2025-11-05 02:55:16', 1, NULL), +(1196, '2025-11-03', 6, 10, 3, 2, 1, 6.00, NULL, '2025-11-05 02:55:16', '2025-11-05 02:55:16', 1, NULL), +(1197, '2025-11-03', 6, 3, 3, 1, NULL, 2.00, NULL, '2025-11-05 02:55:16', '2025-11-05 02:55:16', 1, NULL), +(1199, '2025-11-05', 10, 10, 3, 1, NULL, 8.00, NULL, '2025-11-05 06:54:26', '2025-11-05 06:54:26', 5, NULL), +(1200, '2025-11-05', 2, 10, 3, 1, NULL, 8.00, NULL, '2025-11-05 06:54:26', '2025-11-05 06:54:26', 5, NULL), +(1201, '2025-11-05', 9, 10, 3, 1, NULL, 4.00, NULL, '2025-11-05 06:54:40', '2025-11-05 06:54:40', 5, NULL), +(1202, '2025-11-06', 10, 10, 3, 2, 1, 4.00, NULL, '2025-11-06 08:44:42', '2025-11-06 08:44:42', 5, NULL), +(1203, '2025-11-06', 10, 11, 3, 1, NULL, 6.00, NULL, '2025-11-06 08:44:42', '2025-11-06 08:44:42', 5, NULL), +(1204, '2025-11-06', 4, 11, 1, 1, NULL, 10.00, NULL, '2025-11-06 08:45:59', '2025-11-06 08:45:59', 5, NULL), +(1205, '2025-11-06', 5, 11, 1, 1, NULL, 10.00, NULL, '2025-11-06 08:45:59', '2025-11-06 08:45:59', 5, NULL), +(1206, '2025-11-06', 2, 10, 3, 2, 1, 1.00, NULL, '2025-11-06 08:46:46', '2025-11-06 08:46:46', 5, NULL), +(1207, '2025-11-06', 2, 11, 3, 1, NULL, 9.00, NULL, '2025-11-06 08:46:46', '2025-11-06 08:46:46', 5, NULL), +(1208, '2025-11-06', 9, 3, 3, 1, NULL, 10.00, NULL, '2025-11-06 08:48:17', '2025-11-06 08:48:17', 3, NULL), +(1209, '2025-11-06', 8, 3, 3, 1, NULL, 10.00, NULL, '2025-11-06 08:48:17', '2025-11-06 08:48:17', 3, NULL), +(1210, '2025-11-06', 7, 3, 3, 1, NULL, 10.00, NULL, '2025-11-06 08:48:17', '2025-11-06 08:48:17', 3, NULL), +(1211, '2025-11-06', 6, 3, 3, 1, NULL, 10.00, NULL, '2025-11-06 08:48:17', '2025-11-06 08:48:17', 3, NULL), +(1212, '2025-11-06', 3, 3, 3, 1, NULL, 10.00, NULL, '2025-11-06 08:48:17', '2025-11-06 08:48:17', 3, NULL), +(1213, '2025-11-06', 1, 3, 3, 1, NULL, 10.00, NULL, '2025-11-06 08:48:17', '2025-11-06 08:48:17', 3, NULL), +(1214, '2025-11-07', 7, 3, 3, 1, NULL, 4.00, NULL, '2025-11-07 06:48:19', '2025-11-07 06:48:19', 3, NULL), +(1217, '2025-11-07', 9, 3, 3, 1, NULL, 8.00, NULL, '2025-11-07 06:48:57', '2025-11-07 06:48:57', 3, NULL), +(1218, '2025-11-07', 8, 3, 3, 1, NULL, 8.00, NULL, '2025-11-07 06:48:57', '2025-11-07 06:48:57', 3, NULL), +(1219, '2025-11-07', 6, 3, 3, 1, NULL, 8.00, NULL, '2025-11-07 06:48:57', '2025-11-07 06:48:57', 3, NULL), +(1222, '2025-11-07', 3, 3, 3, 1, NULL, 8.00, NULL, '2025-11-07 06:48:57', '2025-11-07 06:48:57', 3, NULL), +(1223, '2025-11-07', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-11-07 06:48:57', '2025-11-07 06:48:57', 3, NULL), +(1224, '2025-11-07', 4, 10, 3, 1, NULL, 2.00, NULL, '2025-11-07 06:49:20', '2025-11-07 06:49:20', 5, NULL), +(1225, '2025-11-07', 4, 3, 3, 1, NULL, 6.00, NULL, '2025-11-07 06:49:20', '2025-11-07 06:49:20', 5, NULL), +(1226, '2025-11-07', 5, 10, 3, 1, NULL, 2.00, NULL, '2025-11-07 06:49:20', '2025-11-07 06:49:20', 5, NULL), +(1227, '2025-11-07', 5, 3, 3, 1, NULL, 6.00, NULL, '2025-11-07 06:49:20', '2025-11-07 06:49:20', 5, NULL), +(1228, '2025-11-07', 2, 11, 3, 1, NULL, 8.00, NULL, '2025-11-07 06:50:15', '2025-11-07 06:50:15', 5, NULL), +(1229, '2025-11-07', 10, 11, 3, 1, NULL, 8.00, NULL, '2025-11-07 06:50:55', '2025-11-07 06:50:55', 5, NULL), +(1230, '2025-11-08', 10, 11, 3, 1, NULL, 8.00, NULL, '2025-11-08 05:53:23', '2025-11-08 05:53:23', 5, NULL), +(1231, '2025-11-08', 2, 11, 3, 1, NULL, 8.00, NULL, '2025-11-08 05:53:24', '2025-11-08 05:53:24', 5, NULL), +(1232, '2025-11-09', 10, 10, 3, 1, NULL, 8.00, NULL, '2025-11-09 05:39:09', '2025-11-09 05:39:09', 5, NULL), +(1233, '2025-11-09', 2, 10, 3, 1, NULL, 8.00, NULL, '2025-11-09 05:39:09', '2025-11-09 05:39:09', 5, NULL), +(1234, '2025-11-09', 9, 3, 3, 1, NULL, 8.00, NULL, '2025-11-09 05:40:41', '2025-11-09 05:40:41', 5, NULL), +(1235, '2025-11-09', 8, 3, 3, 1, NULL, 8.00, NULL, '2025-11-09 05:40:41', '2025-11-09 05:40:41', 5, NULL), +(1236, '2025-11-09', 7, 3, 3, 1, NULL, 8.00, NULL, '2025-11-09 05:40:41', '2025-11-09 05:40:41', 5, NULL), +(1237, '2025-11-09', 6, 3, 3, 1, NULL, 8.00, NULL, '2025-11-09 05:40:41', '2025-11-09 05:40:41', 5, NULL), +(1238, '2025-11-09', 3, 3, 3, 1, NULL, 8.00, NULL, '2025-11-09 05:40:41', '2025-11-09 05:40:41', 5, NULL), +(1239, '2025-11-10', 10, 10, 3, 1, NULL, 8.00, NULL, '2025-11-11 08:28:29', '2025-11-11 08:28:29', 5, NULL), +(1240, '2025-11-10', 4, 10, 3, 1, NULL, 8.00, NULL, '2025-11-11 08:28:29', '2025-11-11 08:28:29', 5, NULL), +(1241, '2025-11-10', 2, 10, 3, 1, NULL, 8.00, NULL, '2025-11-11 08:28:29', '2025-11-11 08:28:29', 5, NULL), +(1242, '2025-11-11', 10, 11, 3, 1, NULL, 8.00, NULL, '2025-11-11 08:29:03', '2025-11-11 08:29:03', 5, NULL), +(1243, '2025-11-11', 9, 11, 3, 1, NULL, 8.00, NULL, '2025-11-11 08:29:03', '2025-11-11 08:29:03', 5, NULL), +(1244, '2025-11-11', 4, 10, 3, 1, NULL, 4.00, NULL, '2025-11-11 08:29:45', '2025-11-11 08:29:45', 5, NULL), +(1245, '2025-11-11', 4, 11, 3, 1, NULL, 6.00, NULL, '2025-11-11 08:29:45', '2025-11-11 08:29:45', 5, NULL), +(1246, '2025-11-11', 2, 10, 3, 1, NULL, 10.00, NULL, '2025-11-11 08:30:08', '2025-11-11 08:30:08', 5, NULL), +(1247, '2025-11-11', 10, 11, 3, 1, NULL, 2.00, NULL, '2025-11-11 08:30:35', '2025-11-11 08:30:35', 5, NULL), +(1248, '2025-11-11', 9, 11, 3, 1, NULL, 2.00, NULL, '2025-11-11 08:30:35', '2025-11-11 08:30:35', 5, NULL), +(1249, '2025-11-11', 7, 3, 3, 1, NULL, 8.00, NULL, '2025-11-11 08:45:23', '2025-11-11 08:45:23', 3, NULL), +(1251, '2025-11-11', 8, 3, 3, 1, NULL, 10.00, NULL, '2025-11-11 08:46:26', '2025-11-11 08:46:26', 3, NULL), +(1252, '2025-11-11', 6, 3, 3, 1, NULL, 10.00, NULL, '2025-11-11 08:46:26', '2025-11-11 08:46:26', 3, NULL), +(1253, '2025-11-11', 5, 3, 3, 1, NULL, 10.00, NULL, '2025-11-11 08:46:26', '2025-11-11 08:46:26', 3, NULL), +(1254, '2025-11-11', 3, 3, 3, 1, NULL, 10.00, NULL, '2025-11-11 08:46:26', '2025-11-11 08:46:26', 3, NULL), +(1255, '2025-11-11', 1, 3, 3, 1, NULL, 10.00, NULL, '2025-11-11 08:46:26', '2025-11-11 08:46:26', 3, NULL), +(1256, '2025-11-12', 10, 11, 3, 1, NULL, 8.00, NULL, '2025-11-12 06:47:21', '2025-11-12 06:47:21', 5, NULL), +(1257, '2025-11-12', 2, 11, 3, 1, NULL, 8.00, NULL, '2025-11-12 06:47:21', '2025-11-12 06:47:21', 5, NULL), +(1258, '2025-11-12', 9, 11, 3, 1, NULL, 8.00, NULL, '2025-11-12 06:47:21', '2025-11-12 06:47:21', 5, NULL), +(1259, '2025-11-12', 8, 3, 3, 1, NULL, 8.00, NULL, '2025-11-12 06:52:00', '2025-11-12 06:52:00', 3, NULL), +(1260, '2025-11-12', 7, 3, 3, 1, NULL, 8.00, NULL, '2025-11-12 06:52:00', '2025-11-12 06:52:00', 3, NULL), +(1261, '2025-11-12', 6, 3, 3, 1, NULL, 8.00, NULL, '2025-11-12 06:52:00', '2025-11-12 06:52:00', 3, NULL), +(1262, '2025-11-12', 5, 3, 3, 1, NULL, 8.00, NULL, '2025-11-12 06:52:00', '2025-11-12 06:52:00', 3, NULL), +(1263, '2025-11-12', 3, 3, 3, 1, NULL, 8.00, NULL, '2025-11-12 06:52:00', '2025-11-12 06:52:00', 3, NULL), +(1264, '2025-11-12', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-11-12 06:52:00', '2025-11-12 06:52:00', 3, NULL), +(1265, '2025-11-13', 10, 11, 3, 1, NULL, 10.00, NULL, '2025-11-13 08:46:09', '2025-11-13 08:46:09', 3, NULL), +(1266, '2025-11-13', 4, 11, 3, 1, NULL, 10.00, NULL, '2025-11-13 08:46:09', '2025-11-13 08:46:09', 3, NULL), +(1267, '2025-11-13', 2, 11, 3, 1, NULL, 4.00, NULL, '2025-11-13 08:46:32', '2025-11-13 08:46:32', 3, NULL), +(1268, '2025-11-13', 9, 3, 3, 1, NULL, 10.00, NULL, '2025-11-13 08:47:12', '2025-11-13 08:47:12', 3, NULL), +(1269, '2025-11-13', 8, 3, 3, 1, NULL, 10.00, NULL, '2025-11-13 08:47:12', '2025-11-13 08:47:12', 3, NULL), +(1270, '2025-11-13', 7, 3, 3, 1, NULL, 10.00, NULL, '2025-11-13 08:47:12', '2025-11-13 08:47:12', 3, NULL), +(1271, '2025-11-13', 6, 3, 3, 1, NULL, 10.00, NULL, '2025-11-13 08:47:12', '2025-11-13 08:47:12', 3, NULL), +(1272, '2025-11-13', 5, 3, 3, 1, NULL, 10.00, NULL, '2025-11-13 08:47:12', '2025-11-13 08:47:12', 3, NULL), +(1273, '2025-11-13', 3, 3, 3, 1, NULL, 10.00, NULL, '2025-11-13 08:47:12', '2025-11-13 08:47:12', 3, NULL), +(1274, '2025-11-13', 1, 3, 3, 1, NULL, 10.00, NULL, '2025-11-13 08:47:12', '2025-11-13 08:47:12', 3, NULL), +(1275, '2025-11-14', 10, 11, 3, 1, NULL, 6.00, NULL, '2025-11-14 07:00:16', '2025-11-14 07:00:16', 3, NULL), +(1276, '2025-11-14', 10, 11, 3, 2, 1, 2.00, NULL, '2025-11-14 07:00:16', '2025-11-14 07:00:16', 3, NULL), +(1277, '2025-11-14', 9, 11, 3, 1, NULL, 6.00, NULL, '2025-11-14 07:00:16', '2025-11-14 07:00:16', 3, NULL), +(1278, '2025-11-14', 9, 11, 3, 2, 1, 2.00, NULL, '2025-11-14 07:00:16', '2025-11-14 07:00:16', 3, NULL), +(1279, '2025-11-14', 2, 11, 3, 1, NULL, 6.00, NULL, '2025-11-14 07:00:17', '2025-11-14 07:00:17', 3, NULL), +(1280, '2025-11-14', 2, 11, 3, 2, 1, 2.00, NULL, '2025-11-14 07:00:17', '2025-11-14 07:00:17', 3, NULL), +(1281, '2025-11-14', 8, 3, 3, 1, NULL, 3.00, NULL, '2025-11-14 07:00:51', '2025-11-14 07:00:51', 3, NULL), +(1282, '2025-11-14', 8, 3, 3, 2, 1, 5.00, NULL, '2025-11-14 07:00:51', '2025-11-14 07:00:51', 3, NULL), +(1283, '2025-11-14', 7, 3, 3, 1, NULL, 3.00, NULL, '2025-11-14 07:00:51', '2025-11-14 07:00:51', 3, NULL), +(1284, '2025-11-14', 7, 3, 3, 2, 1, 5.00, NULL, '2025-11-14 07:00:51', '2025-11-14 07:00:51', 3, NULL), +(1285, '2025-11-14', 5, 3, 3, 1, NULL, 3.00, NULL, '2025-11-14 07:00:51', '2025-11-14 07:00:51', 3, NULL), +(1286, '2025-11-14', 5, 3, 3, 2, 1, 5.00, NULL, '2025-11-14 07:00:51', '2025-11-14 07:00:51', 3, NULL), +(1287, '2025-11-14', 6, 3, 3, 1, NULL, 3.00, NULL, '2025-11-14 07:00:51', '2025-11-14 07:00:51', 3, NULL), +(1288, '2025-11-14', 6, 3, 3, 2, 1, 5.00, NULL, '2025-11-14 07:00:51', '2025-11-14 07:00:51', 3, NULL), +(1289, '2025-11-14', 4, 3, 3, 1, NULL, 3.00, NULL, '2025-11-14 07:00:51', '2025-11-14 07:00:51', 3, NULL), +(1290, '2025-11-14', 4, 3, 3, 2, 1, 5.00, NULL, '2025-11-14 07:00:51', '2025-11-14 07:00:51', 3, NULL), +(1291, '2025-11-14', 3, 3, 3, 1, NULL, 3.00, NULL, '2025-11-14 07:00:51', '2025-11-14 07:00:51', 3, NULL), +(1292, '2025-11-14', 3, 3, 3, 2, 1, 5.00, NULL, '2025-11-14 07:00:51', '2025-11-14 07:00:51', 3, NULL), +(1293, '2025-11-14', 1, 3, 3, 1, NULL, 3.00, NULL, '2025-11-14 07:00:51', '2025-11-14 07:00:51', 3, NULL), +(1294, '2025-11-14', 1, 3, 3, 2, 1, 5.00, NULL, '2025-11-14 07:00:51', '2025-11-14 07:00:51', 3, NULL), +(1295, '2025-11-15', 10, 11, 3, 1, NULL, 8.00, NULL, '2025-11-15 05:46:53', '2025-11-15 05:46:53', 5, NULL), +(1296, '2025-11-15', 9, 11, 3, 1, NULL, 8.00, NULL, '2025-11-15 05:46:53', '2025-11-15 05:46:53', 5, NULL), +(1297, '2025-11-15', 2, 11, 3, 1, NULL, 8.00, NULL, '2025-11-15 05:46:53', '2025-11-15 05:46:53', 5, NULL), +(1298, '2025-11-17', 10, 11, 3, 1, NULL, 8.00, NULL, '2025-11-18 08:45:07', '2025-11-18 08:45:07', 5, NULL), +(1300, '2025-11-17', 2, 11, 3, 1, NULL, 8.00, NULL, '2025-11-18 08:45:08', '2025-11-18 08:45:08', 5, NULL), +(1301, '2025-11-18', 4, 11, 3, 1, NULL, 6.00, NULL, '2025-11-18 08:46:01', '2025-11-18 08:46:01', 5, NULL), +(1302, '2025-11-18', 4, 10, 3, 1, NULL, 4.00, NULL, '2025-11-18 08:46:01', '2025-11-18 08:46:01', 5, NULL), +(1303, '2025-11-18', 2, 11, 3, 1, NULL, 6.00, NULL, '2025-11-18 08:46:01', '2025-11-18 08:46:01', 5, NULL), +(1304, '2025-11-18', 2, 10, 3, 1, NULL, 4.00, NULL, '2025-11-18 08:46:01', '2025-11-18 08:46:01', 5, NULL), +(1305, '2025-11-18', 10, 11, 3, 1, NULL, 10.00, NULL, '2025-11-18 08:46:23', '2025-11-18 08:46:23', 5, NULL), +(1306, '2025-11-24', 2, 11, 3, 1, NULL, 8.00, NULL, '2025-11-25 08:47:55', '2025-11-25 08:47:55', 5, NULL), +(1307, '2025-11-24', 4, 11, 3, 1, NULL, 8.00, NULL, '2025-11-25 08:47:55', '2025-11-25 08:47:55', 5, NULL), +(1308, '2025-11-22', 4, 11, 3, 1, NULL, 8.00, NULL, '2025-11-25 08:48:18', '2025-11-25 08:48:18', 5, NULL), +(1309, '2025-11-22', 2, 11, 3, 1, NULL, 8.00, NULL, '2025-11-25 08:48:18', '2025-11-25 08:48:18', 5, NULL), +(1310, '2025-11-21', 4, 11, 3, 1, NULL, 8.00, NULL, '2025-11-25 08:48:39', '2025-11-25 08:48:39', 5, NULL), +(1311, '2025-11-21', 2, 11, 3, 1, NULL, 8.00, NULL, '2025-11-25 08:48:39', '2025-11-25 08:48:39', 5, NULL), +(1312, '2025-11-25', 4, 11, 3, 1, NULL, 10.00, NULL, '2025-11-25 08:49:02', '2025-11-25 08:49:02', 5, NULL), +(1313, '2025-11-25', 2, 11, 3, 1, NULL, 10.00, NULL, '2025-11-25 08:49:02', '2025-11-25 08:49:02', 5, NULL), +(1314, '2025-11-26', 10, 11, 3, 1, NULL, 8.00, NULL, '2025-11-26 06:51:13', '2025-11-26 06:51:13', 5, NULL), +(1315, '2025-11-26', 4, 11, 3, 1, NULL, 8.00, NULL, '2025-11-26 06:51:13', '2025-11-26 06:51:13', 5, NULL), +(1316, '2025-11-26', 2, 11, 3, 1, NULL, 8.00, NULL, '2025-11-26 06:51:13', '2025-11-26 06:51:13', 5, NULL), +(1317, '2025-11-27', 10, 11, 3, 1, NULL, 10.00, NULL, '2025-11-27 07:34:37', '2025-11-27 07:34:37', 5, NULL), +(1318, '2025-11-27', 4, 11, 3, 1, NULL, 10.00, NULL, '2025-11-27 07:34:37', '2025-11-27 07:34:37', 5, NULL), +(1319, '2025-11-27', 2, 11, 3, 1, NULL, 10.00, NULL, '2025-11-27 07:34:37', '2025-11-27 07:34:37', 5, NULL), +(1320, '2025-11-27', 9, 11, 3, 1, NULL, 6.00, NULL, '2025-11-27 07:35:24', '2025-11-27 07:35:24', 5, NULL), +(1321, '2025-11-27', 9, 3, 3, 1, NULL, 4.00, NULL, '2025-11-27 07:35:24', '2025-11-27 07:35:24', 5, NULL), +(1322, '2025-11-28', 10, 11, 3, 1, NULL, 8.00, NULL, '2025-11-28 06:47:35', '2025-11-28 06:47:35', 5, NULL), +(1323, '2025-11-28', 9, 11, 3, 1, NULL, 8.00, NULL, '2025-11-28 06:47:35', '2025-11-28 06:47:35', 5, NULL), +(1324, '2025-11-28', 2, 11, 3, 1, NULL, 8.00, NULL, '2025-11-28 06:47:35', '2025-11-28 06:47:35', 5, NULL), +(1325, '2025-11-28', 4, 13, 11, 1, NULL, 1.00, NULL, '2025-11-28 06:48:24', '2025-11-28 06:48:24', 5, NULL), +(1326, '2025-11-29', 10, 11, 3, 1, NULL, 8.00, NULL, '2025-11-29 05:12:39', '2025-11-29 05:12:39', 5, NULL), +(1327, '2025-11-29', 4, 11, 3, 1, NULL, 8.00, NULL, '2025-11-29 05:12:39', '2025-11-29 05:12:39', 5, NULL), +(1328, '2025-11-29', 2, 11, 3, 1, NULL, 8.00, NULL, '2025-11-29 05:12:39', '2025-11-29 05:12:39', 5, NULL), +(1329, '2025-11-29', 1, 3, 3, 1, NULL, 4.00, NULL, '2025-11-29 05:17:02', '2025-11-29 05:17:02', 5, NULL), +(1331, '2025-11-29', 8, 3, 3, 1, NULL, 8.00, NULL, '2025-11-29 05:17:46', '2025-11-29 05:17:46', 5, NULL), +(1332, '2025-11-29', 6, 3, 3, 1, NULL, 8.00, NULL, '2025-11-29 05:17:46', '2025-11-29 05:17:46', 5, NULL), +(1333, '2025-11-29', 5, 3, 3, 1, NULL, 8.00, NULL, '2025-11-29 05:17:46', '2025-11-29 05:17:46', 5, NULL), +(1334, '2025-11-29', 3, 3, 3, 1, NULL, 8.00, NULL, '2025-11-29 05:17:46', '2025-11-29 05:17:46', 5, NULL), +(1335, '2025-12-01', 10, 11, 3, 1, NULL, 8.00, NULL, '2025-12-01 06:55:15', '2025-12-01 06:55:15', 5, NULL), +(1336, '2025-12-01', 9, 11, 3, 1, NULL, 8.00, NULL, '2025-12-01 06:55:15', '2025-12-01 06:55:15', 5, NULL), +(1337, '2025-12-01', 4, 11, 3, 1, NULL, 8.00, NULL, '2025-12-01 06:55:15', '2025-12-01 06:55:15', 5, NULL), +(1338, '2025-12-01', 2, 11, 3, 1, NULL, 8.00, NULL, '2025-12-01 06:55:15', '2025-12-01 06:55:15', 5, NULL), +(1339, '2025-11-01', 8, 3, 3, 1, NULL, 4.00, NULL, '2025-12-02 02:07:51', '2025-12-02 02:07:51', 3, NULL), +(1340, '2025-11-01', 8, 3, 3, 2, 1, 4.00, NULL, '2025-12-02 02:07:51', '2025-12-02 02:07:51', 3, NULL), +(1341, '2025-11-01', 7, 3, 3, 1, NULL, 4.00, NULL, '2025-12-02 02:07:52', '2025-12-02 02:07:52', 3, NULL), +(1342, '2025-11-01', 7, 3, 3, 2, 1, 4.00, NULL, '2025-12-02 02:07:52', '2025-12-02 02:07:52', 3, NULL), +(1345, '2025-11-01', 5, 3, 3, 1, NULL, 4.00, NULL, '2025-12-02 02:07:52', '2025-12-02 02:07:52', 3, NULL), +(1346, '2025-11-01', 5, 3, 3, 2, 1, 4.00, NULL, '2025-12-02 02:07:52', '2025-12-02 02:07:52', 3, NULL), +(1347, '2025-11-01', 4, 3, 3, 1, NULL, 4.00, NULL, '2025-12-02 02:07:52', '2025-12-02 02:07:52', 3, NULL), +(1348, '2025-11-01', 4, 3, 3, 2, 1, 4.00, NULL, '2025-12-02 02:07:52', '2025-12-02 02:07:52', 3, NULL), +(1349, '2025-11-01', 3, 3, 3, 1, NULL, 4.00, NULL, '2025-12-02 02:07:52', '2025-12-02 02:07:52', 3, NULL), +(1350, '2025-11-01', 3, 3, 3, 2, 1, 4.00, NULL, '2025-12-02 02:07:52', '2025-12-02 02:07:52', 3, NULL), +(1353, '2025-11-03', 8, 3, 3, 1, NULL, 4.00, NULL, '2025-12-02 02:09:19', '2025-12-02 02:09:19', 3, NULL), +(1354, '2025-11-03', 8, 3, 3, 2, 1, 4.00, NULL, '2025-12-02 02:09:19', '2025-12-02 02:09:19', 3, NULL), +(1356, '2025-11-03', 5, 3, 3, 1, NULL, 4.00, NULL, '2025-12-02 02:09:19', '2025-12-02 02:09:19', 3, NULL), +(1357, '2025-11-03', 5, 3, 3, 2, 1, 4.00, NULL, '2025-12-02 02:09:19', '2025-12-02 02:09:19', 3, NULL), +(1359, '2025-11-03', 4, 3, 3, 1, NULL, 4.00, NULL, '2025-12-02 02:09:19', '2025-12-02 02:09:19', 3, NULL), +(1360, '2025-11-03', 4, 3, 3, 2, 1, 4.00, NULL, '2025-12-02 02:09:19', '2025-12-02 02:09:19', 3, NULL), +(1362, '2025-11-03', 3, 3, 3, 1, NULL, 4.00, NULL, '2025-12-02 02:09:19', '2025-12-02 02:09:19', 3, NULL), +(1363, '2025-11-03', 3, 3, 3, 2, 1, 4.00, NULL, '2025-12-02 02:09:19', '2025-12-02 02:09:19', 3, NULL), +(1369, '2025-11-03', 7, 13, 1, 1, NULL, 8.00, NULL, '2025-12-02 02:11:57', '2025-12-02 02:11:57', 3, NULL), +(1370, '2025-11-04', 10, 10, 3, 1, NULL, 6.00, NULL, '2025-12-02 02:17:03', '2025-12-02 02:17:03', 3, NULL), +(1371, '2025-11-04', 10, 10, 3, 2, 1, 4.00, NULL, '2025-12-02 02:17:03', '2025-12-02 02:17:03', 3, NULL), +(1372, '2025-11-04', 9, 10, 3, 1, NULL, 6.00, NULL, '2025-12-02 02:17:03', '2025-12-02 02:17:03', 3, NULL), +(1373, '2025-11-04', 9, 10, 3, 2, 1, 4.00, NULL, '2025-12-02 02:17:03', '2025-12-02 02:17:03', 3, NULL), +(1374, '2025-11-04', 2, 10, 3, 1, NULL, 6.00, NULL, '2025-12-02 02:17:03', '2025-12-02 02:17:03', 3, NULL), +(1375, '2025-11-04', 2, 10, 3, 2, 1, 4.00, NULL, '2025-12-02 02:17:03', '2025-12-02 02:17:03', 3, NULL), +(1376, '2025-11-04', 8, 3, 3, 1, NULL, 8.00, NULL, '2025-12-02 02:19:20', '2025-12-02 02:19:20', 3, NULL), +(1377, '2025-11-04', 6, 3, 3, 2, 1, 4.00, NULL, '2025-12-02 02:19:51', '2025-12-02 02:19:51', 3, NULL), +(1378, '2025-11-04', 6, 3, 3, 1, NULL, 4.00, NULL, '2025-12-02 02:19:51', '2025-12-02 02:19:51', 3, NULL), +(1379, '2025-11-24', 1, 3, 3, 1, NULL, 4.00, NULL, '2025-12-02 02:43:58', '2025-12-02 02:43:58', 3, NULL), +(1380, '2025-11-24', 1, 3, 3, 2, 1, 4.00, NULL, '2025-12-02 02:43:58', '2025-12-02 02:43:58', 3, NULL), +(1381, '2025-11-24', 7, 3, 3, 1, NULL, 4.00, NULL, '2025-12-02 02:43:58', '2025-12-02 02:43:58', 3, NULL), +(1382, '2025-11-24', 7, 3, 3, 2, 1, 4.00, NULL, '2025-12-02 02:43:58', '2025-12-02 02:43:58', 3, NULL), +(1383, '2025-11-25', 3, 3, 3, 1, NULL, 8.00, NULL, '2025-12-02 04:17:39', '2025-12-02 04:17:39', 1, NULL), +(1384, '2025-11-25', 3, 3, 3, 2, 1, 1.00, NULL, '2025-12-02 04:17:39', '2025-12-02 04:17:39', 1, NULL), +(1385, '2025-11-25', 3, 3, 3, 2, 6, 1.00, NULL, '2025-12-02 04:17:39', '2025-12-02 04:17:39', 1, NULL), +(1386, '2025-11-25', 6, 3, 3, 1, NULL, 8.00, NULL, '2025-12-02 04:17:39', '2025-12-02 04:17:39', 1, NULL), +(1387, '2025-11-25', 6, 3, 3, 2, 1, 1.00, NULL, '2025-12-02 04:17:39', '2025-12-02 04:17:39', 1, NULL), +(1388, '2025-11-25', 6, 3, 3, 2, 6, 1.00, NULL, '2025-12-02 04:17:39', '2025-12-02 04:17:39', 1, NULL), +(1389, '2025-12-03', 10, 11, 3, 1, NULL, 8.00, NULL, '2025-12-03 06:52:28', '2025-12-03 06:52:28', 5, NULL), +(1390, '2025-12-03', 9, 11, 3, 1, NULL, 8.00, NULL, '2025-12-03 06:52:28', '2025-12-03 06:52:28', 5, NULL), +(1391, '2025-12-03', 4, 11, 3, 1, NULL, 8.00, NULL, '2025-12-03 06:52:28', '2025-12-03 06:52:28', 5, NULL), +(1392, '2025-12-03', 2, 11, 3, 1, NULL, 8.00, NULL, '2025-12-03 06:52:28', '2025-12-03 06:52:28', 5, NULL), +(1393, '2025-12-04', 10, 11, 3, 1, NULL, 8.00, NULL, '2025-12-04 06:45:00', '2025-12-04 06:45:00', 5, NULL), +(1394, '2025-12-04', 9, 11, 3, 1, NULL, 8.00, NULL, '2025-12-04 06:45:00', '2025-12-04 06:45:00', 5, NULL), +(1395, '2025-12-04', 4, 11, 3, 1, NULL, 8.00, NULL, '2025-12-04 06:45:00', '2025-12-04 06:45:00', 5, NULL), +(1396, '2025-12-04', 2, 11, 3, 1, NULL, 8.00, NULL, '2025-12-04 06:45:00', '2025-12-04 06:45:00', 5, NULL), +(1397, '2025-11-01', 6, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 00:34:20', '2025-12-05 00:34:20', 3, NULL), +(1398, '2025-11-01', 6, 3, 3, 2, 1, 4.00, NULL, '2025-12-05 00:34:20', '2025-12-05 00:34:20', 3, NULL), +(1399, '2025-11-01', 1, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 00:34:20', '2025-12-05 00:34:20', 3, NULL), +(1400, '2025-11-01', 1, 3, 3, 2, 1, 4.00, NULL, '2025-12-05 00:34:20', '2025-12-05 00:34:20', 3, NULL), +(1401, '2025-11-03', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-12-05 00:35:16', '2025-12-05 00:35:16', 3, NULL), +(1402, '2025-11-04', 6, 3, 3, 1, NULL, 2.00, NULL, '2025-12-05 01:02:21', '2025-12-05 01:02:21', 3, NULL), +(1403, '2025-11-04', 8, 3, 3, 1, NULL, 2.00, NULL, '2025-12-05 01:02:21', '2025-12-05 01:02:21', 3, NULL), +(1404, '2025-11-04', 7, 3, 3, 1, NULL, 6.00, NULL, '2025-12-05 01:03:12', '2025-12-05 01:03:12', 3, NULL), +(1405, '2025-11-04', 7, 3, 3, 2, 1, 4.00, NULL, '2025-12-05 01:03:12', '2025-12-05 01:03:12', 3, NULL), +(1406, '2025-11-04', 5, 3, 3, 1, NULL, 6.00, NULL, '2025-12-05 01:03:12', '2025-12-05 01:03:12', 3, NULL), +(1407, '2025-11-04', 5, 3, 3, 2, 1, 4.00, NULL, '2025-12-05 01:03:12', '2025-12-05 01:03:12', 3, NULL), +(1408, '2025-11-04', 4, 3, 3, 1, NULL, 6.00, NULL, '2025-12-05 01:03:12', '2025-12-05 01:03:12', 3, NULL), +(1409, '2025-11-04', 4, 3, 3, 2, 1, 4.00, NULL, '2025-12-05 01:03:12', '2025-12-05 01:03:12', 3, NULL), +(1410, '2025-11-04', 3, 3, 3, 1, NULL, 6.00, NULL, '2025-12-05 01:03:12', '2025-12-05 01:03:12', 3, NULL), +(1411, '2025-11-04', 3, 3, 3, 2, 1, 4.00, NULL, '2025-12-05 01:03:12', '2025-12-05 01:03:12', 3, NULL), +(1412, '2025-11-04', 1, 3, 3, 1, NULL, 6.00, NULL, '2025-12-05 01:03:12', '2025-12-05 01:03:12', 3, NULL), +(1413, '2025-11-04', 1, 3, 3, 2, 1, 4.00, NULL, '2025-12-05 01:03:12', '2025-12-05 01:03:12', 3, NULL), +(1414, '2025-11-05', 8, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:04:39', '2025-12-05 01:04:39', 3, NULL), +(1415, '2025-11-05', 8, 3, 3, 2, 3, 1.00, NULL, '2025-12-05 01:04:39', '2025-12-05 01:04:39', 3, NULL), +(1416, '2025-11-05', 8, 3, 3, 2, 1, 2.00, NULL, '2025-12-05 01:04:39', '2025-12-05 01:04:39', 3, NULL), +(1417, '2025-11-05', 7, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:04:39', '2025-12-05 01:04:39', 3, NULL), +(1418, '2025-11-05', 7, 3, 3, 2, 3, 1.00, NULL, '2025-12-05 01:04:39', '2025-12-05 01:04:39', 3, NULL), +(1419, '2025-11-05', 7, 3, 3, 2, 1, 2.00, NULL, '2025-12-05 01:04:39', '2025-12-05 01:04:39', 3, NULL), +(1420, '2025-11-05', 6, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:04:39', '2025-12-05 01:04:39', 3, NULL), +(1421, '2025-11-05', 6, 3, 3, 2, 3, 1.00, NULL, '2025-12-05 01:04:39', '2025-12-05 01:04:39', 3, NULL), +(1422, '2025-11-05', 6, 3, 3, 2, 1, 2.00, NULL, '2025-12-05 01:04:39', '2025-12-05 01:04:39', 3, NULL), +(1423, '2025-11-05', 4, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:04:39', '2025-12-05 01:04:39', 3, NULL), +(1424, '2025-11-05', 4, 3, 3, 2, 3, 1.00, NULL, '2025-12-05 01:04:39', '2025-12-05 01:04:39', 3, NULL), +(1425, '2025-11-05', 4, 3, 3, 2, 1, 2.00, NULL, '2025-12-05 01:04:39', '2025-12-05 01:04:39', 3, NULL), +(1426, '2025-11-05', 3, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:04:39', '2025-12-05 01:04:39', 3, NULL), +(1427, '2025-11-05', 3, 3, 3, 2, 3, 1.00, NULL, '2025-12-05 01:04:39', '2025-12-05 01:04:39', 3, NULL), +(1428, '2025-11-05', 3, 3, 3, 2, 1, 2.00, NULL, '2025-12-05 01:04:39', '2025-12-05 01:04:39', 3, NULL), +(1429, '2025-11-05', 1, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:04:39', '2025-12-05 01:04:39', 3, NULL), +(1430, '2025-11-05', 1, 3, 3, 2, 3, 1.00, NULL, '2025-12-05 01:04:39', '2025-12-05 01:04:39', 3, NULL), +(1431, '2025-11-05', 1, 3, 3, 2, 1, 2.00, NULL, '2025-12-05 01:04:39', '2025-12-05 01:04:39', 3, NULL), +(1434, '2025-11-08', 9, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:06:12', '2025-12-05 01:06:12', 3, NULL), +(1435, '2025-11-08', 9, 3, 3, 2, 1, 3.00, NULL, '2025-12-05 01:06:12', '2025-12-05 01:06:12', 3, NULL), +(1436, '2025-11-08', 8, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:06:12', '2025-12-05 01:06:12', 3, NULL), +(1437, '2025-11-08', 8, 3, 3, 2, 1, 3.00, NULL, '2025-12-05 01:06:12', '2025-12-05 01:06:12', 3, NULL), +(1438, '2025-11-08', 7, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:06:12', '2025-12-05 01:06:12', 3, NULL), +(1439, '2025-11-08', 7, 3, 3, 2, 1, 3.00, NULL, '2025-12-05 01:06:12', '2025-12-05 01:06:12', 3, NULL), +(1440, '2025-11-08', 6, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:06:12', '2025-12-05 01:06:12', 3, NULL), +(1441, '2025-11-08', 6, 3, 3, 2, 1, 3.00, NULL, '2025-12-05 01:06:12', '2025-12-05 01:06:12', 3, NULL), +(1442, '2025-11-08', 5, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:06:12', '2025-12-05 01:06:12', 3, NULL), +(1443, '2025-11-08', 5, 3, 3, 2, 1, 3.00, NULL, '2025-12-05 01:06:12', '2025-12-05 01:06:12', 3, NULL), +(1444, '2025-11-08', 3, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:06:12', '2025-12-05 01:06:12', 3, NULL), +(1445, '2025-11-08', 3, 3, 3, 2, 1, 3.00, NULL, '2025-12-05 01:06:12', '2025-12-05 01:06:12', 3, NULL), +(1446, '2025-11-08', 1, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:06:12', '2025-12-05 01:06:12', 3, NULL), +(1447, '2025-11-08', 1, 3, 3, 2, 1, 3.00, NULL, '2025-12-05 01:06:12', '2025-12-05 01:06:12', 3, NULL), +(1448, '2025-11-10', 8, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:06:58', '2025-12-05 01:06:58', 3, NULL), +(1449, '2025-11-10', 8, 13, 11, 1, NULL, 4.00, NULL, '2025-12-05 01:06:58', '2025-12-05 01:06:58', 3, NULL), +(1450, '2025-11-10', 9, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:07:29', '2025-12-05 01:07:29', 3, NULL), +(1451, '2025-11-10', 9, 3, 3, 2, 1, 4.00, NULL, '2025-12-05 01:07:29', '2025-12-05 01:07:29', 3, NULL), +(1452, '2025-11-10', 7, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:07:29', '2025-12-05 01:07:29', 3, NULL), +(1453, '2025-11-10', 7, 3, 3, 2, 1, 4.00, NULL, '2025-12-05 01:07:29', '2025-12-05 01:07:29', 3, NULL), +(1454, '2025-11-10', 6, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:07:29', '2025-12-05 01:07:29', 3, NULL), +(1455, '2025-11-10', 6, 3, 3, 2, 1, 4.00, NULL, '2025-12-05 01:07:29', '2025-12-05 01:07:29', 3, NULL), +(1456, '2025-11-10', 5, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:07:29', '2025-12-05 01:07:29', 3, NULL), +(1457, '2025-11-10', 5, 3, 3, 2, 1, 4.00, NULL, '2025-12-05 01:07:29', '2025-12-05 01:07:29', 3, NULL), +(1458, '2025-11-10', 3, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:07:29', '2025-12-05 01:07:29', 3, NULL), +(1459, '2025-11-10', 3, 3, 3, 2, 1, 4.00, NULL, '2025-12-05 01:07:29', '2025-12-05 01:07:29', 3, NULL), +(1460, '2025-11-10', 1, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:07:29', '2025-12-05 01:07:29', 3, NULL), +(1461, '2025-11-10', 1, 3, 3, 2, 1, 4.00, NULL, '2025-12-05 01:07:29', '2025-12-05 01:07:29', 3, NULL), +(1462, '2025-11-12', 4, 3, 3, 1, NULL, 8.00, NULL, '2025-12-05 01:08:07', '2025-12-05 01:08:07', 3, NULL), +(1463, '2025-11-15', 8, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:08:52', '2025-12-05 01:08:52', 3, NULL), +(1464, '2025-11-15', 8, 3, 3, 2, 1, 4.00, NULL, '2025-12-05 01:08:52', '2025-12-05 01:08:52', 3, NULL), +(1465, '2025-11-15', 7, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:08:52', '2025-12-05 01:08:52', 3, NULL), +(1466, '2025-11-15', 7, 3, 3, 2, 1, 4.00, NULL, '2025-12-05 01:08:52', '2025-12-05 01:08:52', 3, NULL), +(1467, '2025-11-15', 6, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:08:52', '2025-12-05 01:08:52', 3, NULL), +(1468, '2025-11-15', 6, 3, 3, 2, 1, 4.00, NULL, '2025-12-05 01:08:52', '2025-12-05 01:08:52', 3, NULL), +(1469, '2025-11-15', 5, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:08:52', '2025-12-05 01:08:52', 3, NULL), +(1470, '2025-11-15', 5, 3, 3, 2, 1, 4.00, NULL, '2025-12-05 01:08:52', '2025-12-05 01:08:52', 3, NULL), +(1471, '2025-11-15', 4, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:08:52', '2025-12-05 01:08:52', 3, NULL), +(1472, '2025-11-15', 4, 3, 3, 2, 1, 4.00, NULL, '2025-12-05 01:08:52', '2025-12-05 01:08:52', 3, NULL), +(1473, '2025-11-15', 3, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:08:52', '2025-12-05 01:08:52', 3, NULL), +(1474, '2025-11-15', 3, 3, 3, 2, 1, 4.00, NULL, '2025-12-05 01:08:52', '2025-12-05 01:08:52', 3, NULL), +(1475, '2025-11-15', 1, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:08:52', '2025-12-05 01:08:52', 3, NULL), +(1476, '2025-11-15', 1, 3, 3, 2, 1, 4.00, NULL, '2025-12-05 01:08:52', '2025-12-05 01:08:52', 3, NULL), +(1477, '2025-11-17', 9, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:09:53', '2025-12-05 01:09:53', 3, NULL), +(1478, '2025-11-17', 9, 3, 3, 2, 1, 3.00, NULL, '2025-12-05 01:09:53', '2025-12-05 01:09:53', 3, NULL), +(1479, '2025-11-17', 8, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:09:53', '2025-12-05 01:09:53', 3, NULL), +(1480, '2025-11-17', 8, 3, 3, 2, 1, 3.00, NULL, '2025-12-05 01:09:53', '2025-12-05 01:09:53', 3, NULL), +(1481, '2025-11-17', 6, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:09:53', '2025-12-05 01:09:53', 3, NULL), +(1482, '2025-11-17', 6, 3, 3, 2, 1, 3.00, NULL, '2025-12-05 01:09:53', '2025-12-05 01:09:53', 3, NULL), +(1483, '2025-11-17', 5, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:09:53', '2025-12-05 01:09:53', 3, NULL), +(1484, '2025-11-17', 5, 3, 3, 2, 1, 3.00, NULL, '2025-12-05 01:09:53', '2025-12-05 01:09:53', 3, NULL), +(1485, '2025-11-17', 3, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:09:53', '2025-12-05 01:09:53', 3, NULL), +(1486, '2025-11-17', 3, 3, 3, 2, 1, 3.00, NULL, '2025-12-05 01:09:53', '2025-12-05 01:09:53', 3, NULL), +(1487, '2025-11-17', 1, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:09:53', '2025-12-05 01:09:53', 3, NULL), +(1488, '2025-11-17', 1, 3, 3, 2, 1, 3.00, NULL, '2025-12-05 01:09:53', '2025-12-05 01:09:53', 3, NULL), +(1489, '2025-11-18', 8, 3, 3, 1, NULL, 6.00, NULL, '2025-12-05 01:11:02', '2025-12-05 01:11:02', 3, NULL), +(1490, '2025-11-18', 8, 3, 3, 2, 1, 4.00, NULL, '2025-12-05 01:11:02', '2025-12-05 01:11:02', 3, NULL), +(1491, '2025-11-18', 9, 3, 3, 1, NULL, 6.00, NULL, '2025-12-05 01:11:02', '2025-12-05 01:11:02', 3, NULL), +(1492, '2025-11-18', 9, 3, 3, 2, 1, 4.00, NULL, '2025-12-05 01:11:02', '2025-12-05 01:11:02', 3, NULL), +(1493, '2025-11-18', 7, 3, 3, 1, NULL, 6.00, NULL, '2025-12-05 01:11:02', '2025-12-05 01:11:02', 3, NULL), +(1494, '2025-11-18', 7, 3, 3, 2, 1, 4.00, NULL, '2025-12-05 01:11:02', '2025-12-05 01:11:02', 3, NULL), +(1495, '2025-11-18', 6, 3, 3, 1, NULL, 6.00, NULL, '2025-12-05 01:11:02', '2025-12-05 01:11:02', 3, NULL), +(1496, '2025-11-18', 6, 3, 3, 2, 1, 4.00, NULL, '2025-12-05 01:11:02', '2025-12-05 01:11:02', 3, NULL), +(1497, '2025-11-18', 5, 3, 3, 1, NULL, 6.00, NULL, '2025-12-05 01:11:02', '2025-12-05 01:11:02', 3, NULL), +(1498, '2025-11-18', 5, 3, 3, 2, 1, 4.00, NULL, '2025-12-05 01:11:02', '2025-12-05 01:11:02', 3, NULL), +(1499, '2025-11-18', 3, 3, 3, 1, NULL, 6.00, NULL, '2025-12-05 01:11:02', '2025-12-05 01:11:02', 3, NULL), +(1500, '2025-11-18', 3, 3, 3, 2, 1, 4.00, NULL, '2025-12-05 01:11:02', '2025-12-05 01:11:02', 3, NULL), +(1501, '2025-11-18', 1, 3, 3, 1, NULL, 6.00, NULL, '2025-12-05 01:11:02', '2025-12-05 01:11:02', 3, NULL), +(1502, '2025-11-18', 1, 3, 3, 2, 1, 4.00, NULL, '2025-12-05 01:11:02', '2025-12-05 01:11:02', 3, NULL), +(1503, '2025-11-19', 2, 11, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:12:15', '2025-12-05 01:12:15', 3, NULL), +(1504, '2025-11-19', 2, 11, 3, 2, 1, 4.00, NULL, '2025-12-05 01:12:15', '2025-12-05 01:12:15', 3, NULL), +(1505, '2025-11-19', 10, 11, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:12:15', '2025-12-05 01:12:15', 3, NULL), +(1506, '2025-11-19', 10, 11, 3, 2, 1, 4.00, NULL, '2025-12-05 01:12:15', '2025-12-05 01:12:15', 3, NULL), +(1507, '2025-11-19', 9, 11, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:12:15', '2025-12-05 01:12:15', 3, NULL), +(1508, '2025-11-19', 9, 11, 3, 2, 1, 4.00, NULL, '2025-12-05 01:12:15', '2025-12-05 01:12:15', 3, NULL), +(1509, '2025-11-19', 8, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:12:48', '2025-12-05 01:12:48', 3, NULL), +(1510, '2025-11-19', 8, 3, 3, 2, 1, 3.00, NULL, '2025-12-05 01:12:48', '2025-12-05 01:12:48', 3, NULL), +(1511, '2025-11-19', 7, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:12:49', '2025-12-05 01:12:49', 3, NULL), +(1512, '2025-11-19', 7, 3, 3, 2, 1, 3.00, NULL, '2025-12-05 01:12:49', '2025-12-05 01:12:49', 3, NULL), +(1513, '2025-11-19', 6, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:12:49', '2025-12-05 01:12:49', 3, NULL), +(1514, '2025-11-19', 6, 3, 3, 2, 1, 3.00, NULL, '2025-12-05 01:12:49', '2025-12-05 01:12:49', 3, NULL), +(1515, '2025-11-19', 5, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:12:49', '2025-12-05 01:12:49', 3, NULL), +(1516, '2025-11-19', 5, 3, 3, 2, 1, 3.00, NULL, '2025-12-05 01:12:49', '2025-12-05 01:12:49', 3, NULL), +(1517, '2025-11-19', 4, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:12:49', '2025-12-05 01:12:49', 3, NULL), +(1518, '2025-11-19', 4, 3, 3, 2, 1, 3.00, NULL, '2025-12-05 01:12:49', '2025-12-05 01:12:49', 3, NULL), +(1519, '2025-11-19', 3, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:12:49', '2025-12-05 01:12:49', 3, NULL), +(1520, '2025-11-19', 3, 3, 3, 2, 1, 3.00, NULL, '2025-12-05 01:12:49', '2025-12-05 01:12:49', 3, NULL), +(1521, '2025-11-19', 1, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:12:49', '2025-12-05 01:12:49', 3, NULL), +(1522, '2025-11-19', 1, 3, 3, 2, 1, 3.00, NULL, '2025-12-05 01:12:49', '2025-12-05 01:12:49', 3, NULL), +(1523, '2025-11-20', 10, 11, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:13:18', '2025-12-05 01:13:18', 3, NULL), +(1524, '2025-11-20', 10, 11, 3, 2, 1, 3.00, NULL, '2025-12-05 01:13:18', '2025-12-05 01:13:18', 3, NULL), +(1525, '2025-11-20', 9, 11, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:13:18', '2025-12-05 01:13:18', 3, NULL), +(1526, '2025-11-20', 9, 11, 3, 2, 1, 3.00, NULL, '2025-12-05 01:13:18', '2025-12-05 01:13:18', 3, NULL), +(1527, '2025-11-20', 2, 11, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:13:18', '2025-12-05 01:13:18', 3, NULL), +(1528, '2025-11-20', 2, 11, 3, 2, 1, 3.00, NULL, '2025-12-05 01:13:18', '2025-12-05 01:13:18', 3, NULL), +(1529, '2025-11-20', 4, 11, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:13:18', '2025-12-05 01:13:18', 3, NULL), +(1530, '2025-11-20', 4, 11, 3, 2, 1, 3.00, NULL, '2025-12-05 01:13:18', '2025-12-05 01:13:18', 3, NULL), +(1531, '2025-11-20', 8, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:13:48', '2025-12-05 01:13:48', 3, NULL), +(1532, '2025-11-20', 8, 3, 3, 2, 1, 3.00, NULL, '2025-12-05 01:13:48', '2025-12-05 01:13:48', 3, NULL), +(1533, '2025-11-20', 7, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:13:48', '2025-12-05 01:13:48', 3, NULL), +(1534, '2025-11-20', 7, 3, 3, 2, 1, 3.00, NULL, '2025-12-05 01:13:48', '2025-12-05 01:13:48', 3, NULL), +(1535, '2025-11-20', 6, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:13:48', '2025-12-05 01:13:48', 3, NULL), +(1536, '2025-11-20', 6, 3, 3, 2, 1, 3.00, NULL, '2025-12-05 01:13:48', '2025-12-05 01:13:48', 3, NULL), +(1537, '2025-11-20', 5, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:13:48', '2025-12-05 01:13:48', 3, NULL), +(1538, '2025-11-20', 5, 3, 3, 2, 1, 3.00, NULL, '2025-12-05 01:13:48', '2025-12-05 01:13:48', 3, NULL), +(1539, '2025-11-20', 3, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:13:48', '2025-12-05 01:13:48', 3, NULL), +(1540, '2025-11-20', 3, 3, 3, 2, 1, 3.00, NULL, '2025-12-05 01:13:48', '2025-12-05 01:13:48', 3, NULL), +(1541, '2025-11-20', 1, 3, 3, 1, NULL, 5.00, NULL, '2025-12-05 01:13:48', '2025-12-05 01:13:48', 3, NULL), +(1542, '2025-11-20', 1, 3, 3, 2, 1, 3.00, NULL, '2025-12-05 01:13:48', '2025-12-05 01:13:48', 3, NULL), +(1543, '2025-11-21', 9, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:14:50', '2025-12-05 01:14:50', 3, NULL), +(1544, '2025-11-21', 9, 3, 3, 2, 6, 4.00, NULL, '2025-12-05 01:14:50', '2025-12-05 01:14:50', 3, NULL), +(1545, '2025-11-21', 8, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:14:50', '2025-12-05 01:14:50', 3, NULL), +(1546, '2025-11-21', 8, 3, 3, 2, 6, 4.00, NULL, '2025-12-05 01:14:50', '2025-12-05 01:14:50', 3, NULL), +(1547, '2025-11-21', 6, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:14:50', '2025-12-05 01:14:50', 3, NULL); +INSERT INTO `daily_work_reports` (`id`, `report_date`, `worker_id`, `project_id`, `work_type_id`, `work_status_id`, `error_type_id`, `work_hours`, `description`, `created_at`, `updated_at`, `created_by`, `updated_by`) VALUES +(1548, '2025-11-21', 6, 3, 3, 2, 6, 4.00, NULL, '2025-12-05 01:14:50', '2025-12-05 01:14:50', 3, NULL), +(1549, '2025-11-21', 7, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:14:50', '2025-12-05 01:14:50', 3, NULL), +(1550, '2025-11-21', 7, 3, 3, 2, 6, 4.00, NULL, '2025-12-05 01:14:50', '2025-12-05 01:14:50', 3, NULL), +(1551, '2025-11-21', 5, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:14:50', '2025-12-05 01:14:50', 3, NULL), +(1552, '2025-11-21', 5, 3, 3, 2, 6, 4.00, NULL, '2025-12-05 01:14:50', '2025-12-05 01:14:50', 3, NULL), +(1553, '2025-11-21', 3, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:14:50', '2025-12-05 01:14:50', 3, NULL), +(1554, '2025-11-21', 3, 3, 3, 2, 6, 4.00, NULL, '2025-12-05 01:14:50', '2025-12-05 01:14:50', 3, NULL), +(1555, '2025-11-21', 1, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:14:50', '2025-12-05 01:14:50', 3, NULL), +(1556, '2025-11-21', 1, 3, 3, 2, 6, 4.00, NULL, '2025-12-05 01:14:50', '2025-12-05 01:14:50', 3, NULL), +(1557, '2025-11-22', 9, 3, 3, 1, NULL, 8.00, NULL, '2025-12-05 01:15:21', '2025-12-05 01:15:21', 3, NULL), +(1558, '2025-11-22', 8, 3, 3, 1, NULL, 8.00, NULL, '2025-12-05 01:15:22', '2025-12-05 01:15:22', 3, NULL), +(1559, '2025-11-22', 6, 3, 3, 1, NULL, 8.00, NULL, '2025-12-05 01:15:22', '2025-12-05 01:15:22', 3, NULL), +(1560, '2025-11-22', 3, 3, 3, 1, NULL, 8.00, NULL, '2025-12-05 01:15:22', '2025-12-05 01:15:22', 3, NULL), +(1561, '2025-11-22', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-12-05 01:15:22', '2025-12-05 01:15:22', 3, NULL), +(1562, '2025-11-24', 9, 11, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:21:20', '2025-12-05 01:21:20', 3, NULL), +(1563, '2025-11-24', 9, 11, 3, 2, 1, 4.00, NULL, '2025-12-05 01:21:20', '2025-12-05 01:21:20', 3, NULL), +(1564, '2025-11-24', 8, 11, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:21:20', '2025-12-05 01:21:20', 3, NULL), +(1565, '2025-11-24', 8, 11, 3, 2, 1, 4.00, NULL, '2025-12-05 01:21:20', '2025-12-05 01:21:20', 3, NULL), +(1566, '2025-11-24', 6, 11, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:21:20', '2025-12-05 01:21:20', 3, NULL), +(1567, '2025-11-24', 6, 11, 3, 2, 1, 4.00, NULL, '2025-12-05 01:21:20', '2025-12-05 01:21:20', 3, NULL), +(1568, '2025-11-24', 5, 11, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:21:20', '2025-12-05 01:21:20', 3, NULL), +(1569, '2025-11-24', 5, 11, 3, 2, 1, 4.00, NULL, '2025-12-05 01:21:20', '2025-12-05 01:21:20', 3, NULL), +(1570, '2025-11-25', 1, 13, 11, 1, NULL, 2.00, NULL, '2025-12-05 01:21:59', '2025-12-05 01:21:59', 3, NULL), +(1571, '2025-11-25', 1, 3, 3, 1, NULL, 6.00, NULL, '2025-12-05 01:21:59', '2025-12-05 01:21:59', 3, NULL), +(1572, '2025-11-25', 9, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:22:49', '2025-12-05 01:22:49', 3, NULL), +(1573, '2025-11-25', 9, 3, 3, 2, 6, 2.00, NULL, '2025-12-05 01:22:49', '2025-12-05 01:22:49', 3, NULL), +(1574, '2025-11-25', 9, 3, 3, 2, 1, 4.00, NULL, '2025-12-05 01:22:49', '2025-12-05 01:22:49', 3, NULL), +(1575, '2025-11-25', 8, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:22:49', '2025-12-05 01:22:49', 3, NULL), +(1576, '2025-11-25', 8, 3, 3, 2, 6, 2.00, NULL, '2025-12-05 01:22:49', '2025-12-05 01:22:49', 3, NULL), +(1577, '2025-11-25', 8, 3, 3, 2, 1, 4.00, NULL, '2025-12-05 01:22:49', '2025-12-05 01:22:49', 3, NULL), +(1578, '2025-11-25', 5, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:22:49', '2025-12-05 01:22:49', 3, NULL), +(1579, '2025-11-25', 5, 3, 3, 2, 6, 2.00, NULL, '2025-12-05 01:22:49', '2025-12-05 01:22:49', 3, NULL), +(1580, '2025-11-25', 5, 3, 3, 2, 1, 4.00, NULL, '2025-12-05 01:22:49', '2025-12-05 01:22:49', 3, NULL), +(1581, '2025-11-26', 9, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:23:32', '2025-12-05 01:23:32', 3, NULL), +(1582, '2025-11-26', 9, 3, 3, 2, 3, 4.00, NULL, '2025-12-05 01:23:32', '2025-12-05 01:23:32', 3, NULL), +(1583, '2025-11-26', 8, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:23:32', '2025-12-05 01:23:32', 3, NULL), +(1584, '2025-11-26', 8, 3, 3, 2, 3, 4.00, NULL, '2025-12-05 01:23:32', '2025-12-05 01:23:32', 3, NULL), +(1585, '2025-11-26', 6, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:23:32', '2025-12-05 01:23:32', 3, NULL), +(1586, '2025-11-26', 6, 3, 3, 2, 3, 4.00, NULL, '2025-12-05 01:23:32', '2025-12-05 01:23:32', 3, NULL), +(1587, '2025-11-26', 5, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:23:32', '2025-12-05 01:23:32', 3, NULL), +(1588, '2025-11-26', 5, 3, 3, 2, 3, 4.00, NULL, '2025-12-05 01:23:32', '2025-12-05 01:23:32', 3, NULL), +(1589, '2025-11-26', 3, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:23:32', '2025-12-05 01:23:32', 3, NULL), +(1590, '2025-11-26', 3, 3, 3, 2, 3, 4.00, NULL, '2025-12-05 01:23:32', '2025-12-05 01:23:32', 3, NULL), +(1591, '2025-11-26', 1, 3, 3, 1, NULL, 4.00, NULL, '2025-12-05 01:23:32', '2025-12-05 01:23:32', 3, NULL), +(1592, '2025-11-26', 1, 3, 3, 2, 3, 4.00, NULL, '2025-12-05 01:23:32', '2025-12-05 01:23:32', 3, NULL), +(1593, '2025-11-27', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-12-05 01:24:00', '2025-12-05 01:24:00', 3, NULL), +(1594, '2025-11-27', 8, 3, 3, 1, NULL, 10.00, NULL, '2025-12-05 01:24:26', '2025-12-05 01:24:26', 3, NULL), +(1595, '2025-11-27', 6, 3, 3, 1, NULL, 10.00, NULL, '2025-12-05 01:24:26', '2025-12-05 01:24:26', 3, NULL), +(1596, '2025-11-27', 5, 3, 3, 1, NULL, 10.00, NULL, '2025-12-05 01:24:26', '2025-12-05 01:24:26', 3, NULL), +(1597, '2025-11-27', 3, 3, 3, 1, NULL, 10.00, NULL, '2025-12-05 01:24:26', '2025-12-05 01:24:26', 3, NULL), +(1598, '2025-11-28', 4, 13, 11, 1, NULL, 8.00, NULL, '2025-12-05 01:24:50', '2025-12-05 01:24:50', 3, NULL), +(1599, '2025-11-28', 6, 13, 11, 1, NULL, 8.00, NULL, '2025-12-05 01:24:50', '2025-12-05 01:24:50', 3, NULL), +(1600, '2025-11-28', 8, 3, 3, 1, NULL, 8.00, NULL, '2025-12-05 01:25:17', '2025-12-05 01:25:17', 3, NULL), +(1601, '2025-11-28', 5, 3, 3, 1, NULL, 8.00, NULL, '2025-12-05 01:25:17', '2025-12-05 01:25:17', 3, NULL), +(1602, '2025-11-28', 3, 3, 3, 1, NULL, 8.00, NULL, '2025-12-05 01:25:17', '2025-12-05 01:25:17', 3, NULL), +(1603, '2025-11-28', 1, 3, 3, 1, NULL, 8.00, NULL, '2025-12-05 01:25:17', '2025-12-05 01:25:17', 3, NULL), +(1604, '2025-11-05', 5, 3, 3, 1, NULL, 8.00, NULL, '2025-12-05 01:26:26', '2025-12-05 01:26:26', 3, NULL), +(1605, '2025-11-13', 2, 13, 1, 1, NULL, 4.00, NULL, '2025-12-05 01:28:08', '2025-12-05 01:28:08', 3, NULL), +(1606, '2025-11-17', 7, 13, 1, 1, NULL, 8.00, NULL, '2025-12-05 01:28:40', '2025-12-05 01:28:40', 3, NULL), +(1607, '2025-11-17', 4, 11, 3, 1, NULL, 6.00, NULL, '2025-12-05 01:30:38', '2025-12-05 01:30:38', 3, NULL), +(1608, '2025-11-17', 4, 13, 11, 1, NULL, 2.00, NULL, '2025-12-05 01:30:38', '2025-12-05 01:30:38', 3, NULL), +(1609, '2025-11-21', 10, 13, 1, 1, NULL, 8.00, NULL, '2025-12-05 01:31:07', '2025-12-05 01:31:07', 3, NULL), +(1610, '2025-11-24', 10, 13, 1, 1, NULL, 8.00, NULL, '2025-12-05 01:31:34', '2025-12-05 01:31:34', 3, NULL), +(1611, '2025-11-24', 3, 13, 1, 1, NULL, 8.00, NULL, '2025-12-05 01:31:40', '2025-12-05 01:31:40', 3, NULL), +(1612, '2025-11-25', 10, 13, 1, 1, NULL, 8.00, NULL, '2025-12-05 01:31:53', '2025-12-05 01:31:53', 3, NULL), +(1613, '2025-12-05', 10, 11, 3, 1, NULL, 8.00, NULL, '2025-12-05 06:53:42', '2025-12-05 06:53:42', 5, NULL), +(1614, '2025-12-05', 9, 11, 3, 1, NULL, 8.00, NULL, '2025-12-05 06:53:42', '2025-12-05 06:53:42', 5, NULL), +(1615, '2025-12-05', 4, 11, 3, 1, NULL, 8.00, NULL, '2025-12-05 06:53:43', '2025-12-05 06:53:43', 5, NULL), +(1616, '2025-12-05', 2, 11, 3, 1, NULL, 8.00, NULL, '2025-12-05 06:53:43', '2025-12-05 06:53:43', 5, NULL), +(1617, '2025-12-06', 10, 11, 3, 1, NULL, 8.00, NULL, '2025-12-06 05:46:14', '2025-12-06 05:46:14', 5, NULL), +(1618, '2025-12-06', 9, 11, 3, 1, NULL, 8.00, NULL, '2025-12-06 05:46:14', '2025-12-06 05:46:14', 5, NULL), +(1619, '2025-12-06', 4, 11, 3, 1, NULL, 8.00, NULL, '2025-12-06 05:46:14', '2025-12-06 05:46:14', 5, NULL), +(1620, '2025-12-06', 2, 11, 3, 1, NULL, 8.00, NULL, '2025-12-06 05:46:14', '2025-12-06 05:46:14', 5, NULL), +(1621, '2025-12-08', 1, 11, 3, 1, NULL, 4.00, NULL, '2025-12-09 07:33:48', '2025-12-09 07:33:48', 3, NULL), +(1622, '2025-12-08', 1, 3, 3, 1, NULL, 4.00, NULL, '2025-12-09 07:33:48', '2025-12-09 07:33:48', 3, NULL), +(1623, '2025-12-08', 5, 11, 3, 1, NULL, 4.00, NULL, '2025-12-09 07:33:48', '2025-12-09 07:33:48', 3, NULL), +(1624, '2025-12-08', 5, 3, 3, 1, NULL, 4.00, NULL, '2025-12-09 07:33:48', '2025-12-09 07:33:48', 3, NULL), +(1625, '2025-12-08', 3, 11, 3, 1, NULL, 4.00, NULL, '2025-12-09 07:33:48', '2025-12-09 07:33:48', 3, NULL), +(1626, '2025-12-08', 3, 3, 3, 1, NULL, 4.00, NULL, '2025-12-09 07:33:48', '2025-12-09 07:33:48', 3, NULL), +(1627, '2025-12-08', 10, 11, 3, 1, NULL, 4.00, NULL, '2025-12-09 07:33:48', '2025-12-09 07:33:48', 3, NULL), +(1628, '2025-12-08', 10, 3, 3, 1, NULL, 4.00, NULL, '2025-12-09 07:33:48', '2025-12-09 07:33:48', 3, NULL), +(1629, '2025-12-08', 9, 3, 3, 1, NULL, 8.00, NULL, '2025-12-09 07:34:05', '2025-12-09 07:34:05', 3, NULL), +(1630, '2025-12-08', 8, 3, 3, 1, NULL, 8.00, NULL, '2025-12-09 07:34:05', '2025-12-09 07:34:05', 3, NULL), +(1631, '2025-12-08', 2, 3, 3, 1, NULL, 8.00, NULL, '2025-12-09 07:34:05', '2025-12-09 07:34:05', 3, NULL), +(1632, '2025-12-08', 4, 3, 3, 1, NULL, 8.00, NULL, '2025-12-09 07:34:06', '2025-12-09 07:34:06', 3, NULL), +(1634, '2025-12-08', 6, 3, 3, 1, NULL, 8.00, NULL, '2025-12-09 07:34:38', '2025-12-09 07:34:38', 3, NULL), +(1635, '2025-12-10', 4, 3, 3, 1, NULL, 8.00, NULL, '2025-12-10 06:56:21', '2025-12-10 06:56:21', 5, NULL), +(1636, '2025-12-10', 2, 3, 3, 1, NULL, 8.00, NULL, '2025-12-10 06:56:21', '2025-12-10 06:56:21', 5, NULL), +(1637, '2025-12-10', 8, 3, 3, 1, NULL, 8.00, NULL, '2025-12-10 06:56:21', '2025-12-10 06:56:21', 5, NULL), +(1638, '2025-12-10', 6, 3, 3, 1, NULL, 8.00, NULL, '2025-12-10 06:56:21', '2025-12-10 06:56:21', 5, NULL); -- --- 테이블 구조 `EquipmentList` +-- 트리거 `daily_work_reports` -- - -CREATE TABLE `EquipmentList` ( - `equipment_id` int(11) NOT NULL, - `factory_id` int(11) DEFAULT NULL, - `equipment_name` varchar(255) NOT NULL, - `model` varchar(100) DEFAULT NULL, - `status` text DEFAULT 'operational', - `purchase_date` date DEFAULT NULL, - `description` text DEFAULT NULL, - `created_at` timestamp NULL DEFAULT current_timestamp(), - `updated_at` timestamp NULL DEFAULT current_timestamp() -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +DELIMITER $$ +CREATE TRIGGER `tr_daily_work_reports_delete` AFTER DELETE ON `daily_work_reports` FOR EACH ROW BEGIN + CALL UpdateMonthlyWorkerStatus(OLD.report_date, OLD.worker_id); + END +$$ +DELIMITER ; +DELIMITER $$ +CREATE TRIGGER `tr_daily_work_reports_insert` AFTER INSERT ON `daily_work_reports` FOR EACH ROW BEGIN + CALL UpdateMonthlyWorkerStatus(NEW.report_date, NEW.worker_id); + END +$$ +DELIMITER ; +DELIMITER $$ +CREATE TRIGGER `tr_daily_work_reports_update` AFTER UPDATE ON `daily_work_reports` FOR EACH ROW BEGIN + CALL UpdateMonthlyWorkerStatus(OLD.report_date, OLD.worker_id); + + IF OLD.report_date != NEW.report_date OR OLD.worker_id != NEW.worker_id THEN + CALL UpdateMonthlyWorkerStatus(NEW.report_date, NEW.worker_id); + END IF; + END +$$ +DELIMITER ; -- -------------------------------------------------------- @@ -1067,13 +1774,13 @@ CREATE TABLE `EquipmentList` ( -- CREATE TABLE `error_types` ( - `id` int(11) NOT NULL, - `name` varchar(100) NOT NULL COMMENT '에러 유형명', - `description` text DEFAULT NULL COMMENT '에러 설명', - `severity` enum('low','medium','high','critical') DEFAULT 'medium' COMMENT '심각도', - `solution_guide` text DEFAULT NULL COMMENT '해결 가이드', - `created_at` timestamp NOT NULL DEFAULT current_timestamp(), - `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() + `id` int NOT NULL, + `name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '에러 유형명', + `description` text COLLATE utf8mb4_unicode_ci COMMENT '에러 설명', + `severity` enum('low','medium','high','critical') COLLATE utf8mb4_unicode_ci DEFAULT 'medium' COMMENT '심각도', + `solution_guide` text COLLATE utf8mb4_unicode_ci COMMENT '해결 가이드', + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- @@ -1090,53 +1797,16 @@ INSERT INTO `error_types` (`id`, `name`, `description`, `severity`, `solution_gu -- -------------------------------------------------------- --- --- 테이블 구조 `FactoryInfo` --- - -CREATE TABLE `FactoryInfo` ( - `factory_id` int(11) NOT NULL, - `factory_name` varchar(255) NOT NULL, - `address` varchar(255) DEFAULT NULL, - `description` text DEFAULT NULL, - `map_image_url` varchar(255) DEFAULT NULL, - `created_at` timestamp NULL DEFAULT current_timestamp(), - `updated_at` timestamp NULL DEFAULT current_timestamp() -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - --- --- 테이블의 덤프 데이터 `FactoryInfo` --- - -INSERT INTO `FactoryInfo` (`factory_id`, `factory_name`, `address`, `description`, `map_image_url`, `created_at`, `updated_at`) VALUES -(3, '제1공장 휴게공간 및 작업자 사물함', '현대기아로 771-9', '개인 보관함, 컨테이너(휴게공간), 화장실, 흡연장', '/uploads/map_image-1746593523450.png', '2025-05-07 04:52:03', '2025-05-07 04:52:03'), -(4, '제 1공장 공구 및 용접봉 보관 구역', '현대기아로 771-9', '소모품, 공구류, 용접봉 보관 구역', '/uploads/map_image-1746593674259.png', '2025-05-07 04:53:59', '2025-05-07 04:53:59'), -(5, 'ee', 'ee', 'ee', NULL, '2025-06-03 22:13:23', '2025-06-03 22:13:23'); - --- -------------------------------------------------------- - -- -- 테이블 구조 `IssueTypes` -- CREATE TABLE `IssueTypes` ( - `issue_type_id` int(11) NOT NULL, - `category` varchar(100) NOT NULL, - `subcategory` varchar(100) NOT NULL + `issue_type_id` int NOT NULL, + `category` varchar(100) COLLATE utf8mb4_general_ci NOT NULL, + `subcategory` varchar(100) COLLATE utf8mb4_general_ci NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; --- --- 테이블의 덤프 데이터 `IssueTypes` --- - -INSERT INTO `IssueTypes` (`issue_type_id`, `category`, `subcategory`) VALUES -(1, '구매팀', '자재입고지연'), -(2, '구매팀', '자재전달 미흡'), -(3, '품질', '검사 내용 전달 미흡'), -(4, '품질', '검사오류'), -(5, '설계', '설계미스(치수)'), -(6, '설계', '설계미스(작업불가)'); - -- -------------------------------------------------------- -- @@ -1144,14 +1814,14 @@ INSERT INTO `IssueTypes` (`issue_type_id`, `category`, `subcategory`) VALUES -- CREATE TABLE `login_logs` ( - `log_id` int(11) NOT NULL, - `user_id` int(11) DEFAULT NULL, - `login_time` datetime DEFAULT current_timestamp(), + `log_id` int NOT NULL, + `user_id` int DEFAULT NULL, + `login_time` datetime DEFAULT CURRENT_TIMESTAMP, `logout_time` datetime DEFAULT NULL, - `ip_address` varchar(45) DEFAULT NULL, - `user_agent` text DEFAULT NULL, - `login_status` enum('success','failed','locked') DEFAULT 'success', - `failure_reason` varchar(100) DEFAULT NULL + `ip_address` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `user_agent` text COLLATE utf8mb4_unicode_ci, + `login_status` enum('success','failed','locked') COLLATE utf8mb4_unicode_ci DEFAULT 'success', + `failure_reason` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- @@ -1159,350 +1829,2097 @@ CREATE TABLE `login_logs` ( -- INSERT INTO `login_logs` (`log_id`, `user_id`, `login_time`, `logout_time`, `ip_address`, `user_agent`, `login_status`, `failure_reason`) VALUES -(1, 3, '2025-06-15 05:58:39', NULL, '192.168.1.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(3, 4, '2025-06-15 06:04:06', NULL, '192.168.1.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(4, 3, '2025-06-15 06:24:53', NULL, '192.168.1.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'failed', 'invalid_password'), -(5, 3, '2025-06-15 06:24:55', NULL, '192.168.1.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(6, 3, '2025-06-15 06:32:41', NULL, '192.168.1.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(7, 3, '2025-06-15 07:03:19', NULL, '192.168.1.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'failed', 'invalid_password'), -(8, 3, '2025-06-15 07:03:21', NULL, '192.168.1.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'failed', 'invalid_password'), -(9, 3, '2025-06-15 07:03:25', NULL, '192.168.1.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(10, 1, '2025-06-15 07:40:16', NULL, '192.168.1.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(11, 6, '2025-06-15 07:42:02', NULL, '192.168.1.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(12, 3, '2025-06-15 07:43:30', NULL, '118.235.6.135', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(13, 3, '2025-06-15 22:02:59', NULL, '118.235.6.29', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(14, 4, '2025-06-15 22:15:25', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(15, 3, '2025-06-15 22:15:34', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(16, 6, '2025-06-15 22:15:35', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'failed', 'invalid_password'), -(17, 6, '2025-06-15 22:15:52', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(18, 3, '2025-06-15 22:16:39', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(19, 3, '2025-06-15 22:17:14', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(20, 6, '2025-06-15 22:21:44', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(21, 1, '2025-06-15 22:21:52', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(22, 6, '2025-06-15 22:22:06', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(23, 5, '2025-06-15 22:22:44', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(24, 6, '2025-06-15 22:23:58', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(25, 3, '2025-06-15 22:24:49', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(26, 3, '2025-06-15 22:30:18', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(27, 3, '2025-06-15 22:31:21', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(28, 5, '2025-06-15 22:44:31', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(29, 4, '2025-06-15 22:57:51', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'failed', 'invalid_password'), -(30, 4, '2025-06-15 22:57:52', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'failed', 'invalid_password'), -(31, 4, '2025-06-15 22:57:54', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'failed', 'invalid_password'), -(32, 4, '2025-06-15 22:57:55', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(33, 4, '2025-06-15 23:11:30', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(34, 4, '2025-06-15 23:28:04', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(35, 3, '2025-06-15 23:33:35', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(36, 3, '2025-06-16 00:58:53', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(37, 3, '2025-06-16 01:15:46', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(38, 5, '2025-06-16 01:16:43', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(39, 1, '2025-06-16 01:25:57', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'failed', 'invalid_password'), -(40, 1, '2025-06-16 01:26:08', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(41, 3, '2025-06-16 02:27:20', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(42, 3, '2025-06-16 02:45:59', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(43, 3, '2025-06-16 03:04:13', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(44, 3, '2025-06-16 03:17:28', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(45, 5, '2025-06-16 03:17:55', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(46, 3, '2025-06-16 03:18:56', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(47, 5, '2025-06-16 03:19:13', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(48, 1, '2025-06-16 03:55:56', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(49, 1, '2025-06-16 04:24:37', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(50, 1, '2025-06-16 04:51:36', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(51, 1, '2025-06-16 05:07:05', NULL, '118.235.7.233', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(52, 1, '2025-06-16 05:07:59', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(53, 1, '2025-06-16 05:43:14', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(54, 5, '2025-06-16 06:11:09', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(55, 1, '2025-06-16 06:19:46', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(56, 1, '2025-06-16 06:23:35', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(57, 1, '2025-06-16 06:39:12', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(58, 3, '2025-06-16 06:45:26', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(59, 6, '2025-06-16 06:46:11', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(60, 1, '2025-06-16 21:18:09', NULL, '118.235.7.45', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(61, 1, '2025-06-17 08:15:45', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(62, 5, '2025-06-17 08:22:58', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(63, 3, '2025-06-17 08:23:05', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'failed', 'invalid_password'), -(64, 3, '2025-06-17 08:23:21', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(65, 3, '2025-06-17 08:28:02', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(66, 3, '2025-06-17 08:32:25', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(67, 6, '2025-06-17 08:33:07', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(68, 1, '2025-06-17 08:36:01', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(69, 5, '2025-06-17 09:00:56', NULL, '118.235.7.173', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(70, 3, '2025-06-18 02:30:13', NULL, '118.235.6.77', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(71, 1, '2025-06-18 08:07:27', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'failed', 'invalid_password'), -(72, 1, '2025-06-18 08:07:47', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(73, 5, '2025-06-18 08:39:59', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(74, 6, '2025-06-18 08:46:53', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(75, 3, '2025-06-18 08:47:03', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(76, 6, '2025-06-18 08:57:48', NULL, '118.235.7.5', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(77, 5, '2025-06-18 08:58:14', NULL, '118.235.7.5', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(78, 3, '2025-06-18 08:59:12', NULL, '118.235.7.5', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(79, 5, '2025-06-19 06:37:35', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(80, 3, '2025-06-19 06:57:01', NULL, '123.142.67.74', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(81, 6, '2025-06-19 06:57:22', NULL, '123.142.67.74', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(82, 5, '2025-06-19 06:57:56', NULL, '123.142.67.74', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(83, 6, '2025-06-19 06:58:58', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(84, 3, '2025-06-19 06:59:30', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(85, 3, '2025-06-20 06:42:26', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(86, 6, '2025-06-20 06:45:06', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(87, 5, '2025-06-20 06:49:26', NULL, '118.235.7.134', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(88, 3, '2025-06-20 06:49:47', NULL, '118.235.7.134', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(89, 6, '2025-06-20 06:50:17', NULL, '118.235.7.134', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(90, 3, '2025-06-20 22:46:20', NULL, '192.168.1.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(91, 1, '2025-06-23 05:03:09', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(92, 6, '2025-06-23 06:41:16', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(93, 3, '2025-06-23 06:49:11', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(94, 6, '2025-06-23 06:50:01', NULL, '123.142.67.74', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(95, 5, '2025-06-23 06:50:28', NULL, '123.142.67.74', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(96, 1, '2025-06-24 05:24:17', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(97, 3, '2025-06-24 05:25:52', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(98, 1, '2025-06-24 09:22:29', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(99, 3, '2025-06-24 11:09:38', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(100, 6, '2025-06-24 11:09:48', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(101, 5, '2025-06-24 11:10:23', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(102, 3, '2025-06-24 11:11:29', NULL, '123.142.67.74', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(103, 5, '2025-06-24 11:12:06', NULL, '123.142.67.74', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(104, 6, '2025-06-24 11:12:31', NULL, '123.142.67.74', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(105, 3, '2025-06-24 21:41:01', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(106, 3, '2025-06-25 04:40:44', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(107, 3, '2025-06-25 05:24:57', NULL, '118.235.6.179', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(108, 1, '2025-06-25 07:05:20', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(109, 1, '2025-06-25 07:06:41', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(110, 3, '2025-06-25 07:09:27', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(111, 3, '2025-06-25 08:49:02', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(112, 3, '2025-06-25 09:20:05', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(113, 3, '2025-06-25 09:40:11', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(114, 3, '2025-06-25 09:57:27', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(115, 1, '2025-06-25 10:11:03', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(116, 1, '2025-06-25 10:26:30', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(117, 1, '2025-06-25 10:49:29', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(118, 5, '2025-06-25 11:07:16', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(119, 6, '2025-06-25 11:10:41', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(120, 6, '2025-06-25 11:13:55', NULL, '123.142.67.74', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(121, 5, '2025-06-25 11:14:25', NULL, '123.142.67.74', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(122, 6, '2025-06-25 11:20:16', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(123, 1, '2025-06-25 11:24:57', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(124, 3, '2025-06-26 10:27:57', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(125, 5, '2025-06-26 11:10:47', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(126, 6, '2025-06-26 11:15:57', NULL, '118.235.6.58', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(127, 3, '2025-06-26 11:17:07', NULL, '118.235.6.58', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(128, 5, '2025-06-26 11:17:40', NULL, '118.235.6.58', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(129, 6, '2025-06-26 11:19:00', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(130, 1, '2025-06-26 22:15:30', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(131, 1, '2025-06-26 22:31:02', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(132, 1, '2025-06-26 22:47:22', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(133, 5, '2025-06-27 01:52:48', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(134, 5, '2025-06-27 01:53:58', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(135, 3, '2025-06-27 06:47:09', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(136, 6, '2025-06-27 06:48:39', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), -(137, 3, '2025-06-27 06:57:15', NULL, '123.142.67.74', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(138, 5, '2025-06-27 06:57:34', NULL, '123.142.67.74', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(139, 6, '2025-06-27 06:57:59', NULL, '123.142.67.74', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(140, 3, '2025-06-27 06:59:04', NULL, '123.142.67.74', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(141, 5, '2025-06-27 06:59:29', NULL, '123.142.67.74', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(142, 3, '2025-07-05 01:25:41', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(143, 3, '2025-07-05 01:26:24', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(144, 3, '2025-07-05 01:41:35', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(145, 3, '2025-07-05 01:46:29', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(146, 3, '2025-07-05 01:46:57', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(147, 3, '2025-07-05 01:47:17', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(148, 5, '2025-07-05 01:48:23', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(149, 3, '2025-07-05 01:49:42', NULL, '172.18.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(150, 3, '2025-07-05 01:50:41', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(151, 1, '2025-07-05 01:52:14', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(152, 3, '2025-07-05 02:12:19', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(153, 3, '2025-07-05 04:48:01', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(154, 5, '2025-07-05 05:36:08', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(155, 3, '2025-07-05 05:52:08', NULL, '172.18.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(156, 5, '2025-07-06 05:33:53', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(157, 3, '2025-07-06 05:45:19', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(158, 1, '2025-07-07 01:40:15', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(159, 1, '2025-07-07 01:40:39', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(160, 3, '2025-07-07 01:54:37', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(161, 3, '2025-07-07 02:13:32', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(162, 1, '2025-07-07 02:28:26', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(163, 3, '2025-07-07 02:45:15', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(164, 1, '2025-07-07 03:33:06', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(165, 1, '2025-07-07 03:51:07', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(166, 1, '2025-07-07 03:56:23', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(167, 1, '2025-07-07 03:57:20', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(168, 1, '2025-07-07 03:58:02', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(169, 1, '2025-07-07 03:58:37', NULL, '172.18.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(170, 3, '2025-07-07 04:00:06', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(171, 1, '2025-07-07 04:03:01', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(172, 1, '2025-07-07 04:10:13', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(173, 3, '2025-07-07 04:13:46', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(174, 1, '2025-07-07 04:23:24', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(175, 3, '2025-07-07 04:25:09', NULL, '172.18.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(176, 6, '2025-07-07 06:48:30', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(177, 3, '2025-07-07 06:51:59', NULL, '172.18.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(178, 1, '2025-07-07 23:33:26', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(179, 1, '2025-07-07 23:37:30', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(180, 3, '2025-07-08 06:36:19', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(181, 3, '2025-07-08 06:59:17', NULL, '172.18.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(182, 3, '2025-07-09 06:59:29', NULL, '172.18.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(183, 5, '2025-07-09 22:07:24', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(184, 3, '2025-07-10 02:09:48', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(185, 1, '2025-07-10 02:11:20', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(186, 3, '2025-07-10 06:28:37', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(187, 3, '2025-07-10 06:57:12', NULL, '172.18.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(188, 3, '2025-07-11 06:59:42', NULL, '172.18.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(189, 3, '2025-07-12 05:39:34', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(190, 3, '2025-07-12 05:41:00', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(191, 3, '2025-07-12 05:58:31', NULL, '172.18.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(192, 3, '2025-07-14 06:45:52', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(193, 3, '2025-07-15 00:09:52', NULL, '172.18.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(194, 5, '2025-07-15 05:56:33', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(195, 3, '2025-07-15 06:56:35', NULL, '172.18.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(196, 5, '2025-07-16 06:45:52', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(197, 3, '2025-07-16 06:51:11', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(198, 3, '2025-07-17 06:44:45', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(199, 5, '2025-07-17 06:45:54', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(200, 3, '2025-07-17 06:58:06', NULL, '172.18.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(201, 3, '2025-07-18 05:54:03', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(202, 5, '2025-07-18 06:35:45', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(203, 5, '2025-07-21 06:39:22', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(204, 3, '2025-07-21 06:53:15', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(205, 5, '2025-07-22 06:45:21', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(206, 3, '2025-07-22 06:45:41', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(207, 3, '2025-07-22 06:46:38', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(208, 3, '2025-07-22 06:57:45', NULL, '172.18.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(209, 5, '2025-07-23 06:44:46', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(210, 3, '2025-07-23 06:44:59', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(211, 3, '2025-07-23 06:59:50', NULL, '172.18.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(212, 5, '2025-07-24 06:36:37', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(213, 3, '2025-07-24 06:46:42', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(214, 5, '2025-07-25 06:44:01', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(215, 3, '2025-07-25 06:44:45', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(216, 5, '2025-07-27 21:28:11', NULL, '172.18.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(217, 3, '2025-07-28 06:30:12', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(218, 3, '2025-07-28 06:31:32', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(219, 5, '2025-07-28 06:32:30', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(220, 3, '2025-07-28 06:54:43', NULL, '172.18.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(221, 3, '2025-07-29 06:38:49', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(222, 1, '2025-07-30 01:57:11', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(223, 1, '2025-07-30 02:03:46', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(224, 3, '2025-07-30 02:04:01', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(225, 1, '2025-07-30 02:20:29', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(226, 1, '2025-07-30 02:24:55', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(227, 3, '2025-07-30 05:01:07', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(228, 3, '2025-07-30 06:50:12', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(229, 5, '2025-07-30 06:51:38', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(230, 1, '2025-07-30 22:38:28', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(231, 5, '2025-07-31 06:42:33', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(232, 3, '2025-07-31 22:23:54', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(233, 5, '2025-08-01 04:56:06', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(234, 5, '2025-08-01 04:57:13', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(235, 3, '2025-08-01 05:01:42', NULL, '172.18.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(236, 5, '2025-08-07 06:41:51', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(237, 3, '2025-08-07 06:43:30', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(238, 3, '2025-08-08 06:44:56', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(239, 3, '2025-08-08 06:55:18', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), -(240, 5, '2025-08-08 06:58:09', NULL, '172.18.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(241, 3, '2025-08-11 02:06:53', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(242, 1, '2025-08-11 04:16:44', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'failed', 'invalid_password'), -(243, 1, '2025-08-11 04:17:13', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), -(244, 3, '2025-08-11 06:27:03', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(245, 5, '2025-08-11 06:45:58', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(246, 3, '2025-08-12 06:46:57', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(247, 6, '2025-08-13 05:14:19', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(248, 3, '2025-08-13 06:30:59', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(249, 5, '2025-08-13 06:35:40', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(250, 5, '2025-08-14 02:02:04', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0', 'success', NULL), -(251, 3, '2025-08-14 06:34:37', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(252, 5, '2025-08-14 06:38:26', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(253, 5, '2025-08-18 06:21:07', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL); -INSERT INTO `login_logs` (`log_id`, `user_id`, `login_time`, `logout_time`, `ip_address`, `user_agent`, `login_status`, `failure_reason`) VALUES -(254, 3, '2025-08-18 06:40:43', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(255, 6, '2025-08-18 06:42:10', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(256, 3, '2025-08-18 06:47:57', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(257, 5, '2025-08-19 08:02:10', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(258, 6, '2025-08-19 08:35:46', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(259, 5, '2025-08-20 06:19:13', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(260, 3, '2025-08-20 06:42:31', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(261, 6, '2025-08-20 06:43:54', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(262, 3, '2025-08-21 06:29:56', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(263, 5, '2025-08-21 07:50:19', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(264, 6, '2025-08-21 08:23:19', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(265, 5, '2025-08-22 06:20:28', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(266, 5, '2025-08-22 06:22:28', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(267, 3, '2025-08-22 06:27:17', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(268, 5, '2025-08-23 04:56:25', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(269, 3, '2025-08-25 06:48:11', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(270, 6, '2025-08-25 06:48:48', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(271, 5, '2025-08-26 07:07:36', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(272, 1, '2025-08-26 07:11:06', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), -(273, 5, '2025-08-26 07:27:16', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(274, 6, '2025-08-26 08:21:22', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(275, 3, '2025-08-27 00:51:26', NULL, '172.18.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), -(276, 3, '2025-08-27 06:43:38', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(277, 5, '2025-08-27 06:44:44', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(278, 1, '2025-08-28 01:48:08', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), -(279, 3, '2025-08-28 01:49:21', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), -(280, 3, '2025-08-28 03:28:24', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), -(281, 6, '2025-08-28 08:29:27', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(282, 5, '2025-08-28 08:37:06', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(283, 5, '2025-08-28 08:44:24', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(284, 3, '2025-08-29 06:45:33', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(285, 6, '2025-08-29 06:46:13', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(286, 5, '2025-08-29 21:54:56', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(287, 3, '2025-08-30 02:57:31', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), -(288, 5, '2025-08-30 05:11:35', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(289, 3, '2025-08-30 05:35:51', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(290, 3, '2025-09-01 06:17:50', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(291, 3, '2025-09-01 23:13:28', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), -(292, 3, '2025-09-02 03:59:38', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), -(293, 3, '2025-09-02 07:33:36', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(294, 5, '2025-09-02 08:15:36', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(295, 3, '2025-09-02 23:36:25', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), -(296, 3, '2025-09-03 01:32:24', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), -(297, 3, '2025-09-03 06:32:44', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(298, 5, '2025-09-03 06:43:58', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(299, 6, '2025-09-04 06:40:35', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(300, 5, '2025-09-04 06:48:15', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(301, 3, '2025-09-05 06:39:03', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(302, 5, '2025-09-05 22:09:08', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(303, 5, '2025-09-06 04:20:51', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(304, 3, '2025-09-06 05:27:55', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(305, 3, '2025-09-08 06:15:03', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(306, 5, '2025-09-08 06:47:15', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(307, 3, '2025-09-09 06:02:53', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0', 'success', NULL), -(308, 5, '2025-09-09 06:44:09', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(309, 3, '2025-09-10 06:27:30', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0', 'success', NULL), -(310, 5, '2025-09-10 06:48:23', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(311, 5, '2025-09-11 06:36:20', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(312, 6, '2025-09-11 06:40:19', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(313, 3, '2025-09-12 06:43:55', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0', 'success', NULL), -(314, 3, '2025-09-13 06:37:35', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0', 'success', NULL), -(315, 5, '2025-09-13 23:16:18', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(316, 3, '2025-09-14 04:47:13', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0', 'success', NULL), -(317, 3, '2025-09-15 06:49:28', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0', 'success', NULL), -(318, 5, '2025-09-16 06:50:55', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(319, 5, '2025-09-17 06:42:49', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(320, 3, '2025-09-17 06:44:41', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0', 'success', NULL), -(321, 1, '2025-09-17 23:51:39', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), -(322, 3, '2025-09-18 06:43:14', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0', 'success', NULL), -(323, 3, '2025-09-18 06:46:17', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0', 'success', NULL), -(324, 5, '2025-09-18 06:54:31', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(325, 5, '2025-09-19 06:51:14', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(326, 5, '2025-09-20 05:30:00', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(327, 3, '2025-09-22 06:46:29', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0', 'success', NULL), -(328, 5, '2025-09-22 06:50:11', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(329, 5, '2025-09-23 05:46:19', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(330, 3, '2025-09-23 06:46:57', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0', 'success', NULL), -(331, 3, '2025-09-23 06:47:27', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0', 'success', NULL), -(332, 5, '2025-09-25 01:14:07', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(333, 3, '2025-09-25 06:56:18', NULL, '172.18.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Mobile/15E148 Safari/604.1', 'success', NULL), -(334, 1, '2025-09-28 22:11:51', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), -(335, 3, '2025-09-29 06:35:29', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0', 'success', NULL), -(336, 3, '2025-09-30 06:52:01', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0', 'success', NULL), -(337, 5, '2025-09-30 06:56:12', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(338, 5, '2025-10-01 06:55:37', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', 'success', NULL), -(339, 1, '2025-10-01 23:48:39', NULL, '172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), -(340, 3, '2025-10-02 05:25:11', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0', 'success', NULL), -(341, 3, '2025-10-02 06:21:56', NULL, '172.18.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0', 'success', NULL), -(342, 1, '2025-10-06 01:01:56', NULL, '::ffff:172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), -(343, 1, '2025-10-10 23:13:57', NULL, '::ffff:172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), -(344, 3, '2025-10-10 23:32:38', NULL, '::ffff:172.18.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL); +(146, 3, '2025-11-02 23:53:02', NULL, '::ffff:185.199.111.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(147, 3, '2025-11-03 02:10:26', NULL, '::ffff:185.199.111.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(148, 3, '2025-11-03 02:10:33', NULL, '::ffff:185.199.111.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(149, 1, '2025-11-03 02:11:06', NULL, '::ffff:185.199.111.133', 'curl/8.7.1', 'failed', 'invalid_password'), +(150, 1, '2025-11-03 02:11:06', NULL, '::ffff:185.199.111.133', 'curl/8.7.1', 'failed', 'invalid_password'), +(151, 3, '2025-11-03 02:11:43', NULL, '::ffff:185.199.111.133', 'curl/8.7.1', 'success', NULL), +(152, 3, '2025-11-03 02:11:49', NULL, '::ffff:185.199.111.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(153, 3, '2025-11-03 02:12:44', NULL, '::ffff:185.199.111.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(154, 3, '2025-11-03 02:12:58', NULL, '::ffff:185.199.111.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(155, 3, '2025-11-03 02:12:58', NULL, '::ffff:185.199.111.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(156, 3, '2025-11-03 02:13:02', NULL, '::ffff:185.199.111.133', 'curl/8.7.1', 'success', NULL), +(157, 3, '2025-11-03 02:13:43', NULL, '::ffff:185.199.111.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(158, 3, '2025-11-03 02:15:28', NULL, '::ffff:185.199.111.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(159, 3, '2025-11-03 03:07:23', NULL, '::ffff:185.199.111.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(160, 3, '2025-11-03 03:27:50', NULL, '::ffff:185.199.111.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(161, 3, '2025-11-03 03:44:52', NULL, '::ffff:185.199.111.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(162, 3, '2025-11-03 04:02:14', NULL, '::ffff:185.199.111.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(163, 3, '2025-11-03 04:36:14', NULL, '::ffff:185.199.111.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(164, 3, '2025-11-03 06:21:57', NULL, '::ffff:185.199.111.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(165, 3, '2025-11-03 06:50:04', NULL, '::ffff:192.168.65.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(166, 3, '2025-11-03 22:39:38', NULL, '::ffff:192.168.65.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(167, 1, '2025-11-04 01:38:28', NULL, '::ffff:192.168.65.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(168, 1, '2025-11-04 01:58:20', NULL, '::ffff:192.168.65.1', 'curl/8.7.1', 'failed', 'invalid_password'), +(169, 1, '2025-11-04 21:34:47', NULL, '::ffff:185.199.109.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(170, 1, '2025-11-04 23:55:43', NULL, '::ffff:185.199.109.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(171, 1, '2025-11-04 23:56:47', NULL, '::ffff:185.199.109.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'failed', 'invalid_password'), +(172, 1, '2025-11-04 23:56:59', NULL, '::ffff:185.199.109.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(173, 1, '2025-11-05 01:35:01', NULL, '::ffff:185.199.109.133', 'curl/8.7.1', 'failed', 'invalid_password'), +(174, 1, '2025-11-05 01:36:09', NULL, '::ffff:185.199.109.133', 'curl/8.7.1', 'failed', 'invalid_password'), +(175, 1, '2025-11-05 01:37:45', NULL, '::ffff:185.199.109.133', 'curl/8.7.1', 'success', NULL), +(176, 1, '2025-11-05 01:44:59', NULL, '::ffff:185.199.109.133', 'curl/8.7.1', 'success', NULL), +(177, 6, '2025-11-05 01:46:07', NULL, '::ffff:185.199.109.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(178, 3, '2025-11-05 01:46:14', NULL, '::ffff:185.199.109.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(179, 5, '2025-11-05 01:47:15', NULL, '::ffff:185.199.109.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(180, 3, '2025-11-05 01:49:12', NULL, '::ffff:185.199.109.133', 'curl/8.7.1', 'failed', 'invalid_password'), +(181, 3, '2025-11-05 01:49:27', NULL, '::ffff:185.199.109.133', 'curl/8.7.1', 'success', NULL), +(182, 6, '2025-11-05 01:49:37', NULL, '::ffff:185.199.109.133', 'curl/8.7.1', 'success', NULL), +(183, 5, '2025-11-05 01:49:44', NULL, '::ffff:185.199.109.133', 'curl/8.7.1', 'success', NULL), +(184, 5, '2025-11-05 01:50:08', NULL, '::ffff:185.199.109.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(185, 5, '2025-11-05 01:55:59', NULL, '::ffff:185.199.109.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(186, 6, '2025-11-05 01:56:13', NULL, '::ffff:185.199.109.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(187, 3, '2025-11-05 01:56:20', NULL, '::ffff:185.199.109.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(188, 1, '2025-11-05 01:56:35', NULL, '::ffff:185.199.109.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(189, 1, '2025-11-05 02:01:27', NULL, '::ffff:192.168.65.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(190, 3, '2025-11-05 02:01:53', NULL, '::ffff:192.168.65.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(191, 5, '2025-11-05 02:02:02', NULL, '::ffff:192.168.65.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(192, 1, '2025-11-05 02:03:10', NULL, '::ffff:192.168.65.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'failed', 'invalid_password'), +(193, 1, '2025-11-05 02:03:20', NULL, '::ffff:192.168.65.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(194, 5, '2025-11-05 02:18:31', NULL, '::ffff:185.199.110.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(195, 7, '2025-11-05 02:20:22', NULL, '::ffff:185.199.110.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(196, 1, '2025-11-05 02:20:37', NULL, '::ffff:185.199.110.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(197, 7, '2025-11-05 02:23:43', NULL, '::ffff:185.199.110.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(198, 1, '2025-11-05 02:25:08', NULL, '::ffff:185.199.110.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(199, 3, '2025-11-05 02:25:45', NULL, '::ffff:185.199.110.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(200, 7, '2025-11-05 02:25:54', NULL, '::ffff:185.199.110.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(201, 7, '2025-11-05 02:26:31', NULL, '::ffff:185.199.110.133', 'curl/8.7.1', 'failed', 'invalid_password'), +(202, 7, '2025-11-05 02:27:52', NULL, '::ffff:185.199.110.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(203, 9, '2025-11-05 02:51:57', NULL, '::ffff:185.199.110.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(204, 8, '2025-11-05 02:52:07', NULL, '::ffff:185.199.110.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL), +(205, 1, '2025-11-05 02:52:20', NULL, '::ffff:185.199.110.133', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15', 'success', NULL); + +-- -------------------------------------------------------- + +-- +-- 테이블 구조 `monthly_summary` +-- + +CREATE TABLE `monthly_summary` ( + `id` int NOT NULL, + `year` int NOT NULL COMMENT '연도', + `month` int NOT NULL COMMENT '월 (1-12)', + `date` date NOT NULL COMMENT '날짜', + `total_workers` int DEFAULT '0' COMMENT '총 작업자 수', + `working_workers` int DEFAULT '0' COMMENT '작업한 작업자 수', + `incomplete_workers` int DEFAULT '0' COMMENT '미입력 작업자 수', + `partial_workers` int DEFAULT '0' COMMENT '부분입력 작업자 수', + `complete_workers` int DEFAULT '0' COMMENT '완료 작업자 수', + `overtime_workers` int DEFAULT '0' COMMENT '연장근로 작업자 수', + `vacation_workers` int DEFAULT '0' COMMENT '휴가 작업자 수', + `error_workers` int DEFAULT '0' COMMENT '오류 작업자 수', + `overtime_warning_workers` int DEFAULT '0' COMMENT '확인필요(12시간초과) 작업자 수', + `total_work_hours` decimal(8,2) DEFAULT '0.00' COMMENT '총 작업시간', + `total_work_count` int DEFAULT '0' COMMENT '총 작업 건수', + `total_error_count` int DEFAULT '0' COMMENT '총 오류 건수', + `has_issues` tinyint(1) DEFAULT '0' COMMENT '문제 있음 (미입력/부분입력)', + `has_errors` tinyint(1) DEFAULT '0' COMMENT '오류 있음', + `has_overtime_warning` tinyint(1) DEFAULT '0' COMMENT '확인필요 상태 있음', + `last_updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='월별 일자별 요약 테이블 (캘린더 최적화용)'; + +-- +-- 테이블의 덤프 데이터 `monthly_summary` +-- + +INSERT INTO `monthly_summary` (`id`, `year`, `month`, `date`, `total_workers`, `working_workers`, `incomplete_workers`, `partial_workers`, `complete_workers`, `overtime_workers`, `vacation_workers`, `error_workers`, `overtime_warning_workers`, `total_work_hours`, `total_work_count`, `total_error_count`, `has_issues`, `has_errors`, `has_overtime_warning`, `last_updated`, `created_at`) VALUES +(880, 2025, 6, '2025-06-02', 7, 7, 0, 0, 7, 0, 0, 0, 0, 56.00, 7, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(887, 2025, 6, '2025-06-04', 9, 9, 0, 0, 9, 0, 0, 0, 0, 72.00, 9, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(896, 2025, 6, '2025-06-05', 10, 10, 0, 0, 4, 0, 0, 6, 0, 80.00, 10, 6, 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(906, 2025, 6, '2025-06-16', 9, 9, 0, 0, 3, 0, 0, 6, 0, 72.00, 13, 6, 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(915, 2025, 6, '2025-06-17', 9, 9, 0, 0, 2, 2, 0, 7, 0, 90.00, 21, 7, 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(924, 2025, 6, '2025-06-18', 10, 10, 0, 0, 4, 4, 0, 6, 0, 100.00, 20, 6, 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(934, 2025, 6, '2025-06-19', 10, 10, 0, 0, 5, 0, 0, 5, 0, 80.00, 15, 5, 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(944, 2025, 6, '2025-06-20', 8, 8, 0, 0, 2, 0, 0, 6, 0, 64.00, 14, 6, 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(952, 2025, 6, '2025-06-23', 8, 8, 0, 0, 2, 0, 0, 6, 0, 64.00, 14, 6, 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(960, 2025, 6, '2025-06-24', 10, 10, 0, 0, 4, 4, 0, 6, 0, 120.00, 18, 6, 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(970, 2025, 6, '2025-06-25', 6, 6, 0, 0, 6, 6, 0, 0, 0, 72.00, 8, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(976, 2025, 6, '2025-06-26', 10, 10, 0, 0, 10, 10, 0, 0, 0, 120.00, 13, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(986, 2025, 6, '2025-06-27', 10, 10, 0, 3, 7, 0, 0, 0, 0, 70.00, 10, 0, 1, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(996, 2025, 6, '2025-06-30', 4, 4, 0, 2, 1, 0, 0, 1, 0, 22.00, 5, 1, 1, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1000, 2025, 7, '2025-07-01', 10, 10, 0, 0, 4, 4, 0, 6, 0, 112.00, 20, 6, 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1010, 2025, 7, '2025-07-02', 10, 10, 0, 0, 7, 7, 0, 3, 0, 100.00, 13, 3, 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1020, 2025, 7, '2025-07-03', 10, 10, 0, 0, 10, 10, 0, 0, 0, 100.00, 10, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1030, 2025, 7, '2025-07-04', 10, 10, 0, 0, 0, 0, 0, 10, 0, 80.00, 20, 10, 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1040, 2025, 7, '2025-07-05', 6, 6, 0, 0, 6, 0, 0, 0, 0, 48.00, 6, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1046, 2025, 7, '2025-07-06', 8, 8, 0, 0, 8, 0, 0, 0, 0, 64.00, 8, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1054, 2025, 7, '2025-07-07', 10, 10, 0, 0, 10, 0, 0, 0, 0, 80.00, 10, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1064, 2025, 7, '2025-07-08', 10, 10, 0, 0, 10, 0, 0, 0, 0, 80.00, 10, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1074, 2025, 7, '2025-07-09', 10, 10, 0, 1, 9, 0, 0, 0, 0, 76.00, 10, 0, 1, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1084, 2025, 7, '2025-07-10', 10, 10, 0, 0, 10, 0, 0, 0, 0, 80.00, 10, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1094, 2025, 7, '2025-07-11', 10, 10, 0, 0, 10, 0, 0, 0, 0, 80.00, 10, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1104, 2025, 7, '2025-07-12', 7, 7, 0, 0, 7, 0, 0, 0, 0, 56.00, 7, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1111, 2025, 7, '2025-07-14', 10, 10, 0, 1, 9, 0, 0, 0, 0, 78.00, 10, 0, 1, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1121, 2025, 7, '2025-07-15', 9, 9, 0, 0, 8, 0, 0, 1, 0, 72.00, 10, 1, 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1130, 2025, 7, '2025-07-16', 10, 10, 0, 0, 10, 0, 0, 0, 0, 80.00, 18, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1140, 2025, 7, '2025-07-17', 10, 10, 0, 0, 7, 0, 0, 3, 0, 80.00, 13, 3, 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1150, 2025, 7, '2025-07-18', 10, 10, 0, 0, 8, 0, 0, 2, 0, 80.00, 13, 2, 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1160, 2025, 7, '2025-07-21', 10, 10, 0, 1, 7, 0, 0, 2, 0, 78.00, 12, 2, 1, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1170, 2025, 7, '2025-07-22', 10, 10, 0, 0, 9, 0, 0, 1, 0, 80.00, 10, 1, 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1180, 2025, 7, '2025-07-23', 9, 9, 0, 0, 9, 0, 0, 0, 0, 72.00, 9, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1189, 2025, 7, '2025-07-24', 9, 9, 0, 0, 9, 0, 0, 0, 0, 72.00, 9, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1198, 2025, 7, '2025-07-25', 10, 10, 0, 0, 10, 0, 0, 0, 0, 80.00, 10, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1208, 2025, 7, '2025-07-28', 10, 10, 0, 0, 10, 0, 0, 0, 0, 80.00, 11, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1218, 2025, 7, '2025-07-29', 3, 3, 0, 0, 3, 0, 0, 0, 0, 24.00, 3, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1221, 2025, 7, '2025-07-30', 10, 10, 0, 0, 10, 0, 0, 0, 0, 80.00, 10, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1231, 2025, 7, '2025-07-31', 10, 10, 0, 1, 9, 0, 0, 0, 0, 76.00, 12, 0, 1, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1241, 2025, 8, '2025-08-01', 9, 9, 0, 0, 9, 0, 0, 0, 0, 72.00, 11, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1250, 2025, 8, '2025-08-07', 9, 9, 0, 0, 7, 0, 0, 2, 0, 72.00, 11, 2, 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1259, 2025, 8, '2025-08-08', 8, 8, 0, 0, 8, 0, 0, 0, 0, 64.00, 8, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1267, 2025, 8, '2025-08-11', 9, 9, 0, 0, 8, 0, 0, 0, 1, 80.00, 10, 0, 1, 0, 1, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1276, 2025, 8, '2025-08-12', 8, 8, 0, 0, 8, 0, 0, 0, 0, 64.00, 8, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1284, 2025, 8, '2025-08-13', 10, 10, 0, 0, 10, 0, 0, 0, 0, 80.00, 11, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1294, 2025, 8, '2025-08-14', 9, 9, 0, 0, 8, 0, 0, 1, 0, 72.00, 12, 1, 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1303, 2025, 8, '2025-08-18', 10, 10, 0, 0, 7, 0, 0, 3, 0, 80.00, 15, 3, 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1313, 2025, 8, '2025-08-19', 10, 10, 0, 1, 9, 9, 0, 0, 0, 96.00, 10, 0, 1, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1323, 2025, 8, '2025-08-20', 10, 10, 0, 1, 9, 0, 0, 0, 0, 76.00, 12, 0, 1, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1333, 2025, 8, '2025-08-21', 10, 10, 0, 0, 10, 8, 0, 0, 0, 96.00, 14, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1343, 2025, 8, '2025-08-22', 10, 10, 0, 1, 9, 0, 0, 0, 0, 76.00, 11, 0, 1, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1353, 2025, 8, '2025-08-23', 9, 9, 0, 0, 9, 0, 0, 0, 0, 72.00, 10, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1362, 2025, 8, '2025-08-25', 10, 10, 0, 0, 10, 0, 0, 0, 0, 80.00, 10, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1372, 2025, 8, '2025-08-26', 10, 10, 0, 0, 10, 10, 0, 0, 0, 100.00, 11, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1382, 2025, 8, '2025-08-27', 10, 10, 0, 0, 0, 0, 0, 10, 0, 80.00, 12, 10, 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1392, 2025, 8, '2025-08-28', 10, 10, 0, 0, 2, 2, 0, 8, 0, 98.00, 22, 8, 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1402, 2025, 8, '2025-08-29', 10, 10, 0, 0, 3, 0, 0, 7, 0, 80.00, 13, 7, 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1412, 2025, 8, '2025-08-30', 10, 10, 0, 0, 3, 0, 0, 7, 0, 80.00, 10, 7, 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1422, 2025, 9, '2025-09-01', 9, 9, 0, 0, 5, 0, 0, 4, 0, 72.00, 12, 4, 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1431, 2025, 9, '2025-09-02', 10, 10, 0, 0, 4, 4, 0, 6, 0, 100.00, 18, 6, 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1441, 2025, 9, '2025-09-03', 9, 9, 0, 0, 9, 0, 0, 0, 0, 72.00, 9, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1450, 2025, 9, '2025-09-04', 10, 10, 0, 0, 10, 0, 0, 0, 0, 80.00, 10, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1460, 2025, 9, '2025-09-05', 10, 10, 0, 0, 10, 0, 0, 0, 0, 80.00, 10, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1470, 2025, 9, '2025-09-06', 10, 10, 0, 0, 10, 0, 0, 0, 0, 80.00, 10, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1480, 2025, 9, '2025-09-08', 10, 10, 0, 0, 10, 0, 0, 0, 0, 80.00, 10, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1490, 2025, 9, '2025-09-09', 10, 10, 0, 0, 10, 0, 0, 0, 0, 80.00, 10, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1500, 2025, 9, '2025-09-10', 10, 10, 0, 0, 10, 0, 0, 0, 0, 80.00, 10, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1510, 2025, 9, '2025-09-11', 10, 10, 0, 1, 9, 0, 0, 0, 0, 76.00, 15, 0, 1, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1520, 2025, 9, '2025-09-12', 10, 10, 0, 0, 10, 0, 0, 0, 0, 80.00, 10, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1530, 2025, 9, '2025-09-13', 9, 9, 0, 0, 9, 0, 0, 0, 0, 72.00, 9, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1539, 2025, 9, '2025-09-14', 9, 9, 0, 0, 9, 0, 0, 0, 0, 72.00, 9, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1548, 2025, 9, '2025-09-15', 10, 10, 0, 0, 10, 0, 0, 0, 0, 80.00, 10, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1558, 2025, 9, '2025-09-16', 3, 3, 0, 0, 3, 0, 0, 0, 0, 24.00, 4, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1561, 2025, 9, '2025-09-17', 10, 10, 0, 0, 10, 0, 0, 0, 0, 80.00, 10, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1571, 2025, 9, '2025-09-18', 10, 10, 0, 1, 9, 0, 0, 0, 0, 78.00, 10, 0, 1, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1581, 2025, 9, '2025-09-19', 8, 8, 0, 1, 7, 0, 0, 0, 0, 60.00, 8, 0, 1, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1589, 2025, 9, '2025-09-20', 2, 2, 0, 0, 2, 0, 0, 0, 0, 16.00, 2, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1591, 2025, 9, '2025-09-22', 8, 8, 0, 0, 8, 0, 0, 0, 0, 64.00, 8, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1599, 2025, 9, '2025-09-23', 2, 2, 0, 0, 2, 0, 0, 0, 0, 16.00, 2, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1601, 2025, 9, '2025-09-24', 2, 2, 0, 0, 2, 0, 0, 0, 0, 16.00, 2, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1603, 2025, 9, '2025-09-29', 10, 10, 0, 0, 10, 0, 0, 0, 0, 80.00, 10, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1613, 2025, 9, '2025-09-30', 9, 9, 0, 0, 9, 0, 0, 0, 0, 72.00, 9, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1622, 2025, 10, '2025-10-02', 10, 10, 0, 0, 10, 0, 3, 0, 0, 80.00, 12, 0, 0, 0, 0, '2025-11-04 06:09:53', '2025-11-03 23:39:41'), +(1631, 2025, 10, '2025-10-13', 10, 10, 0, 0, 10, 0, 0, 0, 0, 80.00, 11, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1641, 2025, 10, '2025-10-14', 10, 10, 0, 0, 10, 0, 0, 0, 0, 80.00, 10, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1651, 2025, 10, '2025-10-15', 10, 10, 0, 0, 10, 0, 1, 0, 0, 80.00, 11, 0, 0, 0, 0, '2025-11-04 06:10:29', '2025-11-03 23:39:41'), +(1661, 2025, 10, '2025-10-16', 10, 10, 0, 0, 8, 0, 0, 2, 0, 80.00, 10, 2, 0, 1, 0, '2025-11-04 06:11:47', '2025-11-03 23:39:41'), +(1669, 2025, 10, '2025-10-20', 10, 10, 0, 0, 10, 0, 0, 0, 0, 80.00, 10, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1679, 2025, 10, '2025-10-21', 10, 10, 0, 0, 10, 10, 0, 0, 0, 100.00, 12, 0, 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1689, 2025, 10, '2025-10-22', 10, 10, 0, 0, 10, 0, 0, 0, 0, 80.00, 12, 0, 0, 0, 0, '2025-11-04 03:24:54', '2025-11-03 23:39:41'), +(1699, 2025, 10, '2025-10-24', 10, 10, 0, 0, 8, 0, 1, 2, 0, 80.00, 11, 2, 0, 1, 0, '2025-11-04 06:13:01', '2025-11-03 23:39:41'), +(1707, 2025, 10, '2025-10-25', 10, 10, 0, 0, 10, 0, 3, 0, 0, 80.00, 10, 0, 0, 0, 0, '2025-11-04 06:17:29', '2025-11-03 23:39:41'), +(1714, 2025, 10, '2025-10-27', 10, 10, 0, 0, 10, 0, 1, 0, 0, 80.00, 13, 0, 0, 0, 0, '2025-11-04 22:29:45', '2025-11-03 23:39:41'), +(1724, 2025, 10, '2025-10-28', 10, 10, 0, 0, 8, 8, 0, 2, 0, 100.00, 10, 2, 0, 1, 0, '2025-11-03 23:39:42', '2025-11-03 23:39:41'), +(1734, 2025, 10, '2025-10-29', 10, 10, 0, 0, 10, 0, 0, 0, 0, 80.00, 12, 0, 0, 0, 0, '2025-11-04 22:28:32', '2025-11-03 23:39:42'), +(1743, 2025, 10, '2025-10-30', 10, 10, 0, 0, 10, 7, 2, 0, 0, 94.00, 14, 0, 0, 0, 0, '2025-11-04 22:27:22', '2025-11-03 23:39:42'), +(1753, 2025, 10, '2025-10-31', 10, 10, 0, 0, 0, 0, 0, 10, 0, 80.00, 10, 10, 0, 1, 0, '2025-11-04 06:40:51', '2025-11-03 23:39:42'), +(1756, 2025, 11, '2025-11-01', 3, 3, 0, 0, 3, 0, 0, 0, 0, 24.00, 3, 0, 0, 0, 0, '2025-11-03 23:39:42', '2025-11-03 23:39:42'), +(1767, 2025, 10, '2025-10-01', 10, 10, 0, 0, 10, 0, 0, 0, 0, 80.00, 10, 0, 0, 0, 0, '2025-11-04 05:29:09', '2025-11-04 05:29:09'), +(1795, 2025, 10, '2025-10-17', 10, 10, 0, 0, 0, 0, 0, 10, 0, 80.00, 10, 10, 0, 1, 0, '2025-11-04 06:36:54', '2025-11-04 06:31:47'), +(1805, 2025, 10, '2025-10-23', 10, 10, 0, 0, 0, 0, 0, 10, 0, 98.00, 10, 10, 0, 1, 0, '2025-11-04 06:43:18', '2025-11-04 06:37:19'), +(1845, 2025, 11, '2025-11-05', 2, 0, 2, 0, 0, 0, 0, 0, 0, 0.00, 0, 0, 1, NULL, 0, '2025-11-05 02:19:26', '2025-11-05 00:00:02'), +(1865, 2025, 11, '2025-11-03', 4, 4, 0, 0, 0, 0, 0, 4, 0, 32.00, 6, 4, 0, 1, 0, '2025-11-05 02:55:16', '2025-11-05 02:54:31'), +(0, 2025, 11, '2025-11-05', 3, 1, 2, 1, 0, 0, 0, 0, 0, 1.00, 1, 0, 1, 0, 0, '2025-11-05 05:58:03', '2025-11-05 05:58:03'), +(0, 2025, 11, '2025-11-05', 4, 1, 3, 1, 0, 0, 0, 0, 0, 1.00, 1, 0, 1, 0, 0, '2025-11-05 05:58:08', '2025-11-05 05:58:08'), +(0, 2025, 11, '2025-11-05', 5, 2, 3, 1, 1, 0, 0, 0, 0, 9.00, 2, 0, 1, 0, 0, '2025-11-05 06:54:26', '2025-11-05 06:54:26'), +(0, 2025, 11, '2025-11-05', 6, 3, 3, 1, 2, 0, 0, 0, 0, 17.00, 3, 0, 1, 0, 0, '2025-11-05 06:54:26', '2025-11-05 06:54:26'), +(0, 2025, 11, '2025-11-05', 7, 4, 3, 2, 2, 0, 0, 0, 0, 21.00, 4, 0, 1, 0, 0, '2025-11-05 06:54:40', '2025-11-05 06:54:40'), +(0, 2025, 11, '2025-11-06', 1, 1, 0, 0, 0, 0, 0, 1, 0, 4.00, 1, 1, 0, 1, 0, '2025-11-06 08:44:42', '2025-11-06 08:44:42'), +(0, 2025, 11, '2025-11-06', 2, 2, 0, 0, 0, 0, 0, 2, 0, 14.00, 3, 2, 0, 1, 0, '2025-11-06 08:44:42', '2025-11-06 08:44:42'), +(0, 2025, 11, '2025-11-06', 3, 3, 0, 0, 1, 1, 0, 2, 0, 24.00, 4, 2, 0, 1, 0, '2025-11-06 08:45:59', '2025-11-06 08:45:59'), +(0, 2025, 11, '2025-11-06', 4, 4, 0, 0, 2, 2, 0, 2, 0, 34.00, 5, 2, 0, 1, 0, '2025-11-06 08:45:59', '2025-11-06 08:45:59'), +(0, 2025, 11, '2025-11-06', 5, 5, 0, 0, 2, 2, 0, 3, 0, 35.00, 6, 3, 0, 1, 0, '2025-11-06 08:46:46', '2025-11-06 08:46:46'), +(0, 2025, 11, '2025-11-06', 6, 6, 0, 0, 2, 2, 0, 4, 0, 45.00, 8, 4, 0, 1, 0, '2025-11-06 08:46:46', '2025-11-06 08:46:46'), +(0, 2025, 11, '2025-11-06', 7, 7, 0, 0, 3, 3, 0, 4, 0, 55.00, 9, 4, 0, 1, 0, '2025-11-06 08:48:17', '2025-11-06 08:48:17'), +(0, 2025, 11, '2025-11-06', 8, 8, 0, 0, 4, 4, 0, 4, 0, 65.00, 10, 4, 0, 1, 0, '2025-11-06 08:48:17', '2025-11-06 08:48:17'), +(0, 2025, 11, '2025-11-06', 9, 9, 0, 0, 5, 5, 0, 4, 0, 75.00, 11, 4, 0, 1, 0, '2025-11-06 08:48:17', '2025-11-06 08:48:17'), +(0, 2025, 11, '2025-11-06', 10, 10, 0, 0, 6, 6, 0, 4, 0, 85.00, 12, 4, 0, 1, 0, '2025-11-06 08:48:17', '2025-11-06 08:48:17'), +(0, 2025, 11, '2025-11-06', 11, 11, 0, 0, 7, 7, 0, 4, 0, 95.00, 13, 4, 0, 1, 0, '2025-11-06 08:48:17', '2025-11-06 08:48:17'), +(0, 2025, 11, '2025-11-06', 12, 12, 0, 0, 8, 8, 0, 4, 0, 105.00, 14, 4, 0, 1, 0, '2025-11-06 08:48:17', '2025-11-06 08:48:17'), +(0, 2025, 11, '2025-11-07', 1, 1, 0, 1, 0, 0, 0, 0, 0, 4.00, 1, 0, 1, 0, 0, '2025-11-07 06:48:19', '2025-11-07 06:48:19'), +(0, 2025, 11, '2025-11-07', 2, 2, 0, 1, 1, 0, 0, 0, 0, 12.00, 2, 0, 1, 0, 0, '2025-11-07 06:48:27', '2025-11-07 06:48:27'), +(0, 2025, 11, '2025-11-07', 3, 3, 0, 1, 2, 0, 0, 0, 0, 20.00, 3, 0, 1, 0, 0, '2025-11-07 06:48:27', '2025-11-07 06:48:27'), +(0, 2025, 11, '2025-11-07', 4, 4, 0, 1, 3, 0, 0, 0, 0, 28.00, 4, 0, 1, 0, 0, '2025-11-07 06:48:57', '2025-11-07 06:48:57'), +(0, 2025, 11, '2025-11-07', 5, 5, 0, 1, 4, 0, 0, 0, 0, 36.00, 5, 0, 1, 0, 0, '2025-11-07 06:48:57', '2025-11-07 06:48:57'), +(0, 2025, 11, '2025-11-07', 6, 6, 0, 1, 5, 0, 0, 0, 0, 44.00, 6, 0, 1, 0, 0, '2025-11-07 06:48:57', '2025-11-07 06:48:57'), +(0, 2025, 11, '2025-11-07', 7, 7, 0, 1, 6, 0, 0, 0, 0, 52.00, 7, 0, 1, 0, 0, '2025-11-07 06:48:57', '2025-11-07 06:48:57'), +(0, 2025, 11, '2025-11-07', 8, 8, 0, 1, 7, 0, 0, 0, 0, 60.00, 8, 0, 1, 0, 0, '2025-11-07 06:48:57', '2025-11-07 06:48:57'), +(0, 2025, 11, '2025-11-07', 9, 9, 0, 1, 8, 0, 0, 0, 0, 68.00, 9, 0, 1, 0, 0, '2025-11-07 06:48:57', '2025-11-07 06:48:57'), +(0, 2025, 11, '2025-11-07', 10, 10, 0, 1, 9, 0, 0, 0, 0, 76.00, 10, 0, 1, 0, 0, '2025-11-07 06:48:57', '2025-11-07 06:48:57'), +(0, 2025, 11, '2025-11-07', 11, 11, 0, 1, 10, 1, 0, 0, 0, 86.00, 12, 0, 1, 0, 0, '2025-11-07 06:49:20', '2025-11-07 06:49:20'), +(0, 2025, 11, '2025-11-07', 12, 12, 0, 1, 10, 1, 0, 0, 1, 102.00, 15, 0, 1, 0, 1, '2025-11-07 06:49:20', '2025-11-07 06:49:20'), +(0, 2025, 11, '2025-11-07', 13, 13, 0, 1, 11, 2, 0, 0, 1, 112.00, 17, 0, 1, 0, 1, '2025-11-07 06:49:20', '2025-11-07 06:49:20'), +(0, 2025, 11, '2025-11-07', 14, 14, 0, 1, 11, 2, 0, 0, 2, 128.00, 20, 0, 1, 0, 1, '2025-11-07 06:49:20', '2025-11-07 06:49:20'), +(0, 2025, 11, '2025-11-07', 15, 14, 1, 1, 11, 2, 0, 0, 2, 128.00, 20, 0, 1, 0, 1, '2025-11-07 06:49:50', '2025-11-07 06:49:50'), +(0, 2025, 11, '2025-11-07', 16, 15, 1, 1, 12, 2, 0, 0, 2, 136.00, 21, 0, 1, 0, 1, '2025-11-07 06:50:15', '2025-11-07 06:50:15'), +(0, 2025, 11, '2025-11-07', 17, 15, 2, 1, 12, 2, 0, 0, 2, 136.00, 21, 0, 1, 0, 1, '2025-11-07 06:50:38', '2025-11-07 06:50:38'), +(0, 2025, 11, '2025-11-07', 18, 16, 2, 1, 13, 2, 0, 0, 2, 144.00, 22, 0, 1, 0, 1, '2025-11-07 06:50:55', '2025-11-07 06:50:55'), +(0, 2025, 11, '2025-11-08', 1, 1, 0, 0, 1, 0, 0, 0, 0, 8.00, 1, 0, 0, 0, 0, '2025-11-08 05:53:23', '2025-11-08 05:53:23'), +(0, 2025, 11, '2025-11-08', 2, 2, 0, 0, 2, 0, 0, 0, 0, 16.00, 2, 0, 0, 0, 0, '2025-11-08 05:53:24', '2025-11-08 05:53:24'), +(0, 2025, 11, '2025-11-09', 1, 1, 0, 0, 1, 0, 0, 0, 0, 8.00, 1, 0, 0, 0, 0, '2025-11-09 05:39:09', '2025-11-09 05:39:09'), +(0, 2025, 11, '2025-11-09', 2, 2, 0, 0, 2, 0, 0, 0, 0, 16.00, 2, 0, 0, 0, 0, '2025-11-09 05:39:09', '2025-11-09 05:39:09'), +(0, 2025, 11, '2025-11-09', 3, 3, 0, 0, 3, 0, 0, 0, 0, 24.00, 3, 0, 0, 0, 0, '2025-11-09 05:40:41', '2025-11-09 05:40:41'), +(0, 2025, 11, '2025-11-09', 4, 4, 0, 0, 4, 0, 0, 0, 0, 32.00, 4, 0, 0, 0, 0, '2025-11-09 05:40:41', '2025-11-09 05:40:41'), +(0, 2025, 11, '2025-11-09', 5, 5, 0, 0, 5, 0, 0, 0, 0, 40.00, 5, 0, 0, 0, 0, '2025-11-09 05:40:41', '2025-11-09 05:40:41'), +(0, 2025, 11, '2025-11-09', 6, 6, 0, 0, 6, 0, 0, 0, 0, 48.00, 6, 0, 0, 0, 0, '2025-11-09 05:40:41', '2025-11-09 05:40:41'), +(0, 2025, 11, '2025-11-09', 7, 7, 0, 0, 7, 0, 0, 0, 0, 56.00, 7, 0, 0, 0, 0, '2025-11-09 05:40:41', '2025-11-09 05:40:41'), +(0, 2025, 11, '2025-11-10', 1, 1, 0, 0, 1, 0, 0, 0, 0, 8.00, 1, 0, 0, 0, 0, '2025-11-11 08:28:29', '2025-11-11 08:28:29'), +(0, 2025, 11, '2025-11-10', 2, 2, 0, 0, 2, 0, 0, 0, 0, 16.00, 2, 0, 0, 0, 0, '2025-11-11 08:28:29', '2025-11-11 08:28:29'), +(0, 2025, 11, '2025-11-10', 3, 3, 0, 0, 3, 0, 0, 0, 0, 24.00, 3, 0, 0, 0, 0, '2025-11-11 08:28:29', '2025-11-11 08:28:29'), +(0, 2025, 11, '2025-11-11', 1, 1, 0, 0, 1, 0, 0, 0, 0, 8.00, 1, 0, 0, 0, 0, '2025-11-11 08:29:03', '2025-11-11 08:29:03'), +(0, 2025, 11, '2025-11-11', 2, 2, 0, 0, 2, 0, 0, 0, 0, 16.00, 2, 0, 0, 0, 0, '2025-11-11 08:29:03', '2025-11-11 08:29:03'), +(0, 2025, 11, '2025-11-11', 3, 3, 0, 1, 2, 0, 0, 0, 0, 20.00, 3, 0, 1, 0, 0, '2025-11-11 08:29:45', '2025-11-11 08:29:45'), +(0, 2025, 11, '2025-11-11', 4, 4, 0, 1, 3, 1, 0, 0, 0, 30.00, 5, 0, 1, 0, 0, '2025-11-11 08:29:45', '2025-11-11 08:29:45'), +(0, 2025, 11, '2025-11-11', 5, 5, 0, 1, 4, 2, 0, 0, 0, 40.00, 6, 0, 1, 0, 0, '2025-11-11 08:30:08', '2025-11-11 08:30:08'), +(0, 2025, 11, '2025-11-11', 6, 6, 0, 1, 5, 3, 0, 0, 0, 50.00, 8, 0, 1, 0, 0, '2025-11-11 08:30:35', '2025-11-11 08:30:35'), +(0, 2025, 11, '2025-11-11', 7, 7, 0, 1, 6, 4, 0, 0, 0, 60.00, 10, 0, 1, 0, 0, '2025-11-11 08:30:35', '2025-11-11 08:30:35'), +(0, 2025, 11, '2025-11-11', 8, 8, 0, 1, 7, 4, 0, 0, 0, 68.00, 11, 0, 1, 0, 0, '2025-11-11 08:45:23', '2025-11-11 08:45:23'), +(0, 2025, 11, '2025-11-11', 9, 9, 0, 1, 7, 4, 0, 0, 1, 88.00, 14, 0, 1, 0, 1, '2025-11-11 08:46:26', '2025-11-11 08:46:26'), +(0, 2025, 11, '2025-11-11', 10, 10, 0, 1, 8, 5, 0, 0, 1, 98.00, 15, 0, 1, 0, 1, '2025-11-11 08:46:26', '2025-11-11 08:46:26'), +(0, 2025, 11, '2025-11-11', 11, 11, 0, 1, 9, 6, 0, 0, 1, 108.00, 16, 0, 1, 0, 1, '2025-11-11 08:46:26', '2025-11-11 08:46:26'), +(0, 2025, 11, '2025-11-11', 12, 12, 0, 1, 10, 7, 0, 0, 1, 118.00, 17, 0, 1, 0, 1, '2025-11-11 08:46:26', '2025-11-11 08:46:26'), +(0, 2025, 11, '2025-11-11', 13, 13, 0, 1, 11, 8, 0, 0, 1, 128.00, 18, 0, 1, 0, 1, '2025-11-11 08:46:26', '2025-11-11 08:46:26'), +(0, 2025, 11, '2025-11-11', 14, 14, 0, 1, 12, 9, 0, 0, 1, 138.00, 19, 0, 1, 0, 1, '2025-11-11 08:46:26', '2025-11-11 08:46:26'), +(0, 2025, 11, '2025-11-12', 1, 1, 0, 0, 1, 0, 0, 0, 0, 8.00, 1, 0, 0, 0, 0, '2025-11-12 06:47:21', '2025-11-12 06:47:21'), +(0, 2025, 11, '2025-11-12', 2, 2, 0, 0, 2, 0, 0, 0, 0, 16.00, 2, 0, 0, 0, 0, '2025-11-12 06:47:21', '2025-11-12 06:47:21'), +(0, 2025, 11, '2025-11-12', 3, 3, 0, 0, 3, 0, 0, 0, 0, 24.00, 3, 0, 0, 0, 0, '2025-11-12 06:47:21', '2025-11-12 06:47:21'), +(0, 2025, 11, '2025-11-12', 4, 4, 0, 0, 4, 0, 0, 0, 0, 32.00, 4, 0, 0, 0, 0, '2025-11-12 06:52:00', '2025-11-12 06:52:00'), +(0, 2025, 11, '2025-11-12', 5, 5, 0, 0, 5, 0, 0, 0, 0, 40.00, 5, 0, 0, 0, 0, '2025-11-12 06:52:00', '2025-11-12 06:52:00'), +(0, 2025, 11, '2025-11-12', 6, 6, 0, 0, 6, 0, 0, 0, 0, 48.00, 6, 0, 0, 0, 0, '2025-11-12 06:52:00', '2025-11-12 06:52:00'), +(0, 2025, 11, '2025-11-12', 7, 7, 0, 0, 7, 0, 0, 0, 0, 56.00, 7, 0, 0, 0, 0, '2025-11-12 06:52:00', '2025-11-12 06:52:00'), +(0, 2025, 11, '2025-11-12', 8, 8, 0, 0, 8, 0, 0, 0, 0, 64.00, 8, 0, 0, 0, 0, '2025-11-12 06:52:00', '2025-11-12 06:52:00'), +(0, 2025, 11, '2025-11-12', 9, 9, 0, 0, 9, 0, 0, 0, 0, 72.00, 9, 0, 0, 0, 0, '2025-11-12 06:52:00', '2025-11-12 06:52:00'), +(0, 2025, 11, '2025-11-13', 1, 1, 0, 0, 1, 1, 0, 0, 0, 10.00, 1, 0, 0, 0, 0, '2025-11-13 08:46:09', '2025-11-13 08:46:09'), +(0, 2025, 11, '2025-11-13', 2, 2, 0, 0, 2, 2, 0, 0, 0, 20.00, 2, 0, 0, 0, 0, '2025-11-13 08:46:09', '2025-11-13 08:46:09'), +(0, 2025, 11, '2025-11-13', 3, 3, 0, 1, 2, 2, 0, 0, 0, 24.00, 3, 0, 1, 0, 0, '2025-11-13 08:46:32', '2025-11-13 08:46:32'), +(0, 2025, 11, '2025-11-13', 4, 4, 0, 1, 3, 3, 0, 0, 0, 34.00, 4, 0, 1, 0, 0, '2025-11-13 08:47:12', '2025-11-13 08:47:12'), +(0, 2025, 11, '2025-11-13', 5, 5, 0, 1, 4, 4, 0, 0, 0, 44.00, 5, 0, 1, 0, 0, '2025-11-13 08:47:12', '2025-11-13 08:47:12'), +(0, 2025, 11, '2025-11-13', 6, 6, 0, 1, 5, 5, 0, 0, 0, 54.00, 6, 0, 1, 0, 0, '2025-11-13 08:47:12', '2025-11-13 08:47:12'), +(0, 2025, 11, '2025-11-13', 7, 7, 0, 1, 6, 6, 0, 0, 0, 64.00, 7, 0, 1, 0, 0, '2025-11-13 08:47:12', '2025-11-13 08:47:12'), +(0, 2025, 11, '2025-11-13', 8, 8, 0, 1, 7, 7, 0, 0, 0, 74.00, 8, 0, 1, 0, 0, '2025-11-13 08:47:12', '2025-11-13 08:47:12'), +(0, 2025, 11, '2025-11-13', 9, 9, 0, 1, 8, 8, 0, 0, 0, 84.00, 9, 0, 1, 0, 0, '2025-11-13 08:47:12', '2025-11-13 08:47:12'), +(0, 2025, 11, '2025-11-13', 10, 10, 0, 1, 9, 9, 0, 0, 0, 94.00, 10, 0, 1, 0, 0, '2025-11-13 08:47:12', '2025-11-13 08:47:12'), +(0, 2025, 11, '2025-11-14', 1, 1, 0, 1, 0, 0, 0, 0, 0, 6.00, 1, 0, 1, 0, 0, '2025-11-14 07:00:16', '2025-11-14 07:00:16'), +(0, 2025, 11, '2025-11-14', 2, 2, 0, 1, 0, 0, 0, 1, 0, 14.00, 3, 1, 1, 1, 0, '2025-11-14 07:00:16', '2025-11-14 07:00:16'), +(0, 2025, 11, '2025-11-14', 3, 3, 0, 2, 0, 0, 0, 1, 0, 20.00, 4, 1, 1, 1, 0, '2025-11-14 07:00:16', '2025-11-14 07:00:16'), +(0, 2025, 11, '2025-11-14', 4, 4, 0, 2, 0, 0, 0, 2, 0, 28.00, 6, 2, 1, 1, 0, '2025-11-14 07:00:16', '2025-11-14 07:00:16'), +(0, 2025, 11, '2025-11-14', 5, 5, 0, 3, 0, 0, 0, 2, 0, 34.00, 7, 2, 1, 1, 0, '2025-11-14 07:00:17', '2025-11-14 07:00:17'), +(0, 2025, 11, '2025-11-14', 6, 6, 0, 3, 0, 0, 0, 3, 0, 42.00, 9, 3, 1, 1, 0, '2025-11-14 07:00:17', '2025-11-14 07:00:17'), +(0, 2025, 11, '2025-11-14', 7, 7, 0, 4, 0, 0, 0, 3, 0, 45.00, 10, 3, 1, 1, 0, '2025-11-14 07:00:51', '2025-11-14 07:00:51'), +(0, 2025, 11, '2025-11-14', 8, 8, 0, 4, 0, 0, 0, 4, 0, 53.00, 12, 4, 1, 1, 0, '2025-11-14 07:00:51', '2025-11-14 07:00:51'), +(0, 2025, 11, '2025-11-14', 9, 9, 0, 5, 0, 0, 0, 4, 0, 56.00, 13, 4, 1, 1, 0, '2025-11-14 07:00:51', '2025-11-14 07:00:51'), +(0, 2025, 11, '2025-11-14', 10, 10, 0, 5, 0, 0, 0, 5, 0, 64.00, 15, 5, 1, 1, 0, '2025-11-14 07:00:51', '2025-11-14 07:00:51'), +(0, 2025, 11, '2025-11-14', 11, 11, 0, 6, 0, 0, 0, 5, 0, 67.00, 16, 5, 1, 1, 0, '2025-11-14 07:00:51', '2025-11-14 07:00:51'), +(0, 2025, 11, '2025-11-14', 12, 12, 0, 6, 0, 0, 0, 6, 0, 75.00, 18, 6, 1, 1, 0, '2025-11-14 07:00:51', '2025-11-14 07:00:51'), +(0, 2025, 11, '2025-11-14', 13, 13, 0, 7, 0, 0, 0, 6, 0, 78.00, 19, 6, 1, 1, 0, '2025-11-14 07:00:51', '2025-11-14 07:00:51'), +(0, 2025, 11, '2025-11-14', 14, 14, 0, 7, 0, 0, 0, 7, 0, 86.00, 21, 7, 1, 1, 0, '2025-11-14 07:00:51', '2025-11-14 07:00:51'), +(0, 2025, 11, '2025-11-14', 15, 15, 0, 8, 0, 0, 0, 7, 0, 89.00, 22, 7, 1, 1, 0, '2025-11-14 07:00:51', '2025-11-14 07:00:51'), +(0, 2025, 11, '2025-11-14', 16, 16, 0, 8, 0, 0, 0, 8, 0, 97.00, 24, 8, 1, 1, 0, '2025-11-14 07:00:51', '2025-11-14 07:00:51'), +(0, 2025, 11, '2025-11-14', 17, 17, 0, 9, 0, 0, 0, 8, 0, 100.00, 25, 8, 1, 1, 0, '2025-11-14 07:00:51', '2025-11-14 07:00:51'), +(0, 2025, 11, '2025-11-14', 18, 18, 0, 9, 0, 0, 0, 9, 0, 108.00, 27, 9, 1, 1, 0, '2025-11-14 07:00:51', '2025-11-14 07:00:51'), +(0, 2025, 11, '2025-11-14', 19, 19, 0, 10, 0, 0, 0, 9, 0, 111.00, 28, 9, 1, 1, 0, '2025-11-14 07:00:51', '2025-11-14 07:00:51'), +(0, 2025, 11, '2025-11-14', 20, 20, 0, 10, 0, 0, 0, 10, 0, 119.00, 30, 10, 1, 1, 0, '2025-11-14 07:00:51', '2025-11-14 07:00:51'), +(0, 2025, 11, '2025-11-15', 1, 1, 0, 0, 1, 0, 0, 0, 0, 8.00, 1, 0, 0, 0, 0, '2025-11-15 05:46:53', '2025-11-15 05:46:53'), +(0, 2025, 11, '2025-11-15', 2, 2, 0, 0, 2, 0, 0, 0, 0, 16.00, 2, 0, 0, 0, 0, '2025-11-15 05:46:53', '2025-11-15 05:46:53'), +(0, 2025, 11, '2025-11-15', 3, 3, 0, 0, 3, 0, 0, 0, 0, 24.00, 3, 0, 0, 0, 0, '2025-11-15 05:46:53', '2025-11-15 05:46:53'), +(0, 2025, 11, '2025-11-17', 1, 1, 0, 0, 1, 0, 0, 0, 0, 8.00, 1, 0, 0, 0, 0, '2025-11-18 08:45:07', '2025-11-18 08:45:07'), +(0, 2025, 11, '2025-11-17', 2, 2, 0, 0, 2, 0, 0, 0, 0, 16.00, 2, 0, 0, 0, 0, '2025-11-18 08:45:08', '2025-11-18 08:45:08'), +(0, 2025, 11, '2025-11-17', 3, 3, 0, 0, 3, 0, 0, 0, 0, 24.00, 3, 0, 0, 0, 0, '2025-11-18 08:45:08', '2025-11-18 08:45:08'), +(0, 2025, 11, '2025-11-18', 1, 1, 0, 1, 0, 0, 0, 0, 0, 6.00, 1, 0, 1, 0, 0, '2025-11-18 08:46:01', '2025-11-18 08:46:01'), +(0, 2025, 11, '2025-11-18', 2, 2, 0, 1, 1, 1, 0, 0, 0, 16.00, 3, 0, 1, 0, 0, '2025-11-18 08:46:01', '2025-11-18 08:46:01'), +(0, 2025, 11, '2025-11-18', 3, 3, 0, 2, 1, 1, 0, 0, 0, 22.00, 4, 0, 1, 0, 0, '2025-11-18 08:46:01', '2025-11-18 08:46:01'), +(0, 2025, 11, '2025-11-18', 4, 4, 0, 2, 2, 2, 0, 0, 0, 32.00, 6, 0, 1, 0, 0, '2025-11-18 08:46:01', '2025-11-18 08:46:01'), +(0, 2025, 11, '2025-11-18', 5, 5, 0, 2, 3, 3, 0, 0, 0, 42.00, 7, 0, 1, 0, 0, '2025-11-18 08:46:23', '2025-11-18 08:46:23'), +(0, 2025, 11, '2025-11-24', 1, 1, 0, 0, 1, 0, 0, 0, 0, 8.00, 1, 0, 0, 0, 0, '2025-11-25 08:47:55', '2025-11-25 08:47:55'), +(0, 2025, 11, '2025-11-24', 2, 2, 0, 0, 2, 0, 0, 0, 0, 16.00, 2, 0, 0, 0, 0, '2025-11-25 08:47:55', '2025-11-25 08:47:55'), +(0, 2025, 11, '2025-11-22', 1, 1, 0, 0, 1, 0, 0, 0, 0, 8.00, 1, 0, 0, 0, 0, '2025-11-25 08:48:18', '2025-11-25 08:48:18'), +(0, 2025, 11, '2025-11-22', 2, 2, 0, 0, 2, 0, 0, 0, 0, 16.00, 2, 0, 0, 0, 0, '2025-11-25 08:48:18', '2025-11-25 08:48:18'), +(0, 2025, 11, '2025-11-21', 1, 1, 0, 0, 1, 0, 0, 0, 0, 8.00, 1, 0, 0, 0, 0, '2025-11-25 08:48:39', '2025-11-25 08:48:39'), +(0, 2025, 11, '2025-11-21', 2, 2, 0, 0, 2, 0, 0, 0, 0, 16.00, 2, 0, 0, 0, 0, '2025-11-25 08:48:39', '2025-11-25 08:48:39'), +(0, 2025, 11, '2025-11-25', 1, 1, 0, 0, 1, 1, 0, 0, 0, 10.00, 1, 0, 0, 0, 0, '2025-11-25 08:49:02', '2025-11-25 08:49:02'), +(0, 2025, 11, '2025-11-25', 2, 2, 0, 0, 2, 2, 0, 0, 0, 20.00, 2, 0, 0, 0, 0, '2025-11-25 08:49:02', '2025-11-25 08:49:02'), +(0, 2025, 11, '2025-11-26', 1, 1, 0, 0, 1, 0, 0, 0, 0, 8.00, 1, 0, 0, 0, 0, '2025-11-26 06:51:13', '2025-11-26 06:51:13'), +(0, 2025, 11, '2025-11-26', 2, 2, 0, 0, 2, 0, 0, 0, 0, 16.00, 2, 0, 0, 0, 0, '2025-11-26 06:51:13', '2025-11-26 06:51:13'), +(0, 2025, 11, '2025-11-26', 3, 3, 0, 0, 3, 0, 0, 0, 0, 24.00, 3, 0, 0, 0, 0, '2025-11-26 06:51:13', '2025-11-26 06:51:13'), +(0, 2025, 11, '2025-11-27', 1, 1, 0, 0, 1, 1, 0, 0, 0, 10.00, 1, 0, 0, 0, 0, '2025-11-27 07:34:37', '2025-11-27 07:34:37'), +(0, 2025, 11, '2025-11-27', 2, 2, 0, 0, 2, 2, 0, 0, 0, 20.00, 2, 0, 0, 0, 0, '2025-11-27 07:34:37', '2025-11-27 07:34:37'), +(0, 2025, 11, '2025-11-27', 3, 3, 0, 0, 3, 3, 0, 0, 0, 30.00, 3, 0, 0, 0, 0, '2025-11-27 07:34:37', '2025-11-27 07:34:37'), +(0, 2025, 11, '2025-11-27', 4, 4, 0, 1, 3, 3, 0, 0, 0, 36.00, 4, 0, 1, 0, 0, '2025-11-27 07:35:24', '2025-11-27 07:35:24'), +(0, 2025, 11, '2025-11-27', 5, 5, 0, 1, 4, 4, 0, 0, 0, 46.00, 6, 0, 1, 0, 0, '2025-11-27 07:35:24', '2025-11-27 07:35:24'), +(0, 2025, 11, '2025-11-28', 1, 1, 0, 0, 1, 0, 0, 0, 0, 8.00, 1, 0, 0, 0, 0, '2025-11-28 06:47:35', '2025-11-28 06:47:35'), +(0, 2025, 11, '2025-11-28', 2, 2, 0, 0, 2, 0, 0, 0, 0, 16.00, 2, 0, 0, 0, 0, '2025-11-28 06:47:35', '2025-11-28 06:47:35'), +(0, 2025, 11, '2025-11-28', 3, 3, 0, 0, 3, 0, 0, 0, 0, 24.00, 3, 0, 0, 0, 0, '2025-11-28 06:47:35', '2025-11-28 06:47:35'), +(0, 2025, 11, '2025-11-28', 4, 4, 0, 0, 4, 0, 1, 0, 0, 25.00, 4, 0, 0, 0, 0, '2025-11-28 06:48:24', '2025-11-28 06:48:24'), +(0, 2025, 11, '2025-11-29', 1, 1, 0, 0, 1, 0, 0, 0, 0, 8.00, 1, 0, 0, 0, 0, '2025-11-29 05:12:39', '2025-11-29 05:12:39'), +(0, 2025, 11, '2025-11-29', 2, 2, 0, 0, 2, 0, 0, 0, 0, 16.00, 2, 0, 0, 0, 0, '2025-11-29 05:12:39', '2025-11-29 05:12:39'), +(0, 2025, 11, '2025-11-29', 3, 3, 0, 0, 3, 0, 0, 0, 0, 24.00, 3, 0, 0, 0, 0, '2025-11-29 05:12:39', '2025-11-29 05:12:39'), +(0, 2025, 11, '2025-11-29', 4, 4, 0, 1, 3, 0, 0, 0, 0, 28.00, 4, 0, 1, 0, 0, '2025-11-29 05:17:02', '2025-11-29 05:17:02'), +(0, 2025, 11, '2025-11-29', 5, 5, 0, 1, 4, 0, 1, 0, 0, 29.00, 5, 0, 1, 0, 0, '2025-11-29 05:17:21', '2025-11-29 05:17:21'), +(0, 2025, 11, '2025-11-29', 6, 6, 0, 1, 5, 0, 1, 0, 0, 37.00, 6, 0, 1, 0, 0, '2025-11-29 05:17:46', '2025-11-29 05:17:46'), +(0, 2025, 11, '2025-11-29', 7, 7, 0, 1, 6, 0, 1, 0, 0, 45.00, 7, 0, 1, 0, 0, '2025-11-29 05:17:46', '2025-11-29 05:17:46'), +(0, 2025, 11, '2025-11-29', 8, 8, 0, 1, 7, 0, 1, 0, 0, 53.00, 8, 0, 1, 0, 0, '2025-11-29 05:17:46', '2025-11-29 05:17:46'), +(0, 2025, 11, '2025-11-29', 9, 9, 0, 1, 8, 0, 1, 0, 0, 61.00, 9, 0, 1, 0, 0, '2025-11-29 05:17:46', '2025-11-29 05:17:46'), +(0, 2025, 12, '2025-12-01', 1, 1, 0, 0, 1, 0, 0, 0, 0, 8.00, 1, 0, 0, 0, 0, '2025-12-01 06:55:15', '2025-12-01 06:55:15'), +(0, 2025, 12, '2025-12-01', 2, 2, 0, 0, 2, 0, 0, 0, 0, 16.00, 2, 0, 0, 0, 0, '2025-12-01 06:55:15', '2025-12-01 06:55:15'), +(0, 2025, 12, '2025-12-01', 3, 3, 0, 0, 3, 0, 0, 0, 0, 24.00, 3, 0, 0, 0, 0, '2025-12-01 06:55:15', '2025-12-01 06:55:15'), +(0, 2025, 12, '2025-12-01', 4, 4, 0, 0, 4, 0, 0, 0, 0, 32.00, 4, 0, 0, 0, 0, '2025-12-01 06:55:15', '2025-12-01 06:55:15'), +(0, 2025, 11, '2025-11-01', 4, 4, 0, 1, 3, 0, 0, 0, 0, 28.00, 4, 0, 1, 0, 0, '2025-12-02 02:07:51', '2025-12-02 02:07:51'), +(0, 2025, 11, '2025-11-01', 5, 5, 0, 1, 3, 0, 0, 1, 0, 36.00, 6, 1, 1, 1, 0, '2025-12-02 02:07:51', '2025-12-02 02:07:51'), +(0, 2025, 11, '2025-11-01', 6, 6, 0, 2, 3, 0, 0, 1, 0, 40.00, 7, 1, 1, 1, 0, '2025-12-02 02:07:52', '2025-12-02 02:07:52'), +(0, 2025, 11, '2025-11-01', 7, 7, 0, 2, 3, 0, 0, 2, 0, 48.00, 9, 2, 1, 1, 0, '2025-12-02 02:07:52', '2025-12-02 02:07:52'), +(0, 2025, 11, '2025-11-01', 8, 8, 0, 3, 3, 0, 0, 2, 0, 52.00, 10, 2, 1, 1, 0, '2025-12-02 02:07:52', '2025-12-02 02:07:52'), +(0, 2025, 11, '2025-11-01', 9, 9, 0, 3, 3, 0, 0, 3, 0, 60.00, 12, 3, 1, 1, 0, '2025-12-02 02:07:52', '2025-12-02 02:07:52'), +(0, 2025, 11, '2025-11-01', 10, 10, 0, 4, 3, 0, 0, 3, 0, 64.00, 13, 3, 1, 1, 0, '2025-12-02 02:07:52', '2025-12-02 02:07:52'), +(0, 2025, 11, '2025-11-01', 11, 11, 0, 4, 3, 0, 0, 4, 0, 72.00, 15, 4, 1, 1, 0, '2025-12-02 02:07:52', '2025-12-02 02:07:52'), +(0, 2025, 11, '2025-11-01', 12, 12, 0, 5, 3, 0, 0, 4, 0, 76.00, 16, 4, 1, 1, 0, '2025-12-02 02:07:52', '2025-12-02 02:07:52'), +(0, 2025, 11, '2025-11-01', 13, 13, 0, 5, 3, 0, 0, 5, 0, 84.00, 18, 5, 1, 1, 0, '2025-12-02 02:07:52', '2025-12-02 02:07:52'), +(0, 2025, 11, '2025-11-01', 14, 14, 0, 6, 3, 0, 0, 5, 0, 88.00, 19, 5, 1, 1, 0, '2025-12-02 02:07:52', '2025-12-02 02:07:52'), +(0, 2025, 11, '2025-11-01', 15, 15, 0, 6, 3, 0, 0, 6, 0, 96.00, 21, 6, 1, 1, 0, '2025-12-02 02:07:52', '2025-12-02 02:07:52'), +(0, 2025, 11, '2025-11-01', 16, 16, 0, 7, 3, 0, 0, 6, 0, 100.00, 22, 6, 1, 1, 0, '2025-12-02 02:07:52', '2025-12-02 02:07:52'), +(0, 2025, 11, '2025-11-01', 17, 17, 0, 7, 3, 0, 0, 7, 0, 108.00, 24, 7, 1, 1, 0, '2025-12-02 02:07:52', '2025-12-02 02:07:52'), +(0, 2025, 11, '2025-11-03', 5, 5, 0, 1, 0, 0, 0, 4, 0, 36.00, 7, 4, 1, 1, 0, '2025-12-02 02:09:19', '2025-12-02 02:09:19'), +(0, 2025, 11, '2025-11-03', 6, 6, 0, 1, 0, 0, 0, 5, 0, 44.00, 9, 5, 1, 1, 0, '2025-12-02 02:09:19', '2025-12-02 02:09:19'), +(0, 2025, 11, '2025-11-03', 7, 7, 0, 1, 0, 0, 0, 6, 0, 60.00, 12, 6, 1, 1, 0, '2025-12-02 02:09:19', '2025-12-02 02:09:19'), +(0, 2025, 11, '2025-11-03', 8, 8, 0, 2, 0, 0, 0, 6, 0, 64.00, 13, 6, 1, 1, 0, '2025-12-02 02:09:19', '2025-12-02 02:09:19'), +(0, 2025, 11, '2025-11-03', 9, 9, 0, 2, 0, 0, 0, 7, 0, 72.00, 15, 7, 1, 1, 0, '2025-12-02 02:09:19', '2025-12-02 02:09:19'), +(0, 2025, 11, '2025-11-03', 10, 10, 0, 2, 0, 0, 0, 8, 0, 88.00, 18, 8, 1, 1, 0, '2025-12-02 02:09:19', '2025-12-02 02:09:19'), +(0, 2025, 11, '2025-11-03', 11, 11, 0, 3, 0, 0, 0, 8, 0, 92.00, 19, 8, 1, 1, 0, '2025-12-02 02:09:19', '2025-12-02 02:09:19'), +(0, 2025, 11, '2025-11-03', 12, 12, 0, 3, 0, 0, 0, 9, 0, 100.00, 21, 9, 1, 1, 0, '2025-12-02 02:09:19', '2025-12-02 02:09:19'), +(0, 2025, 11, '2025-11-03', 13, 13, 0, 3, 0, 0, 0, 10, 0, 116.00, 24, 10, 1, 1, 0, '2025-12-02 02:09:19', '2025-12-02 02:09:19'), +(0, 2025, 11, '2025-11-03', 14, 14, 0, 4, 0, 0, 0, 10, 0, 120.00, 25, 10, 1, 1, 0, '2025-12-02 02:09:19', '2025-12-02 02:09:19'), +(0, 2025, 11, '2025-11-03', 15, 15, 0, 4, 0, 0, 0, 11, 0, 128.00, 27, 11, 1, 1, 0, '2025-12-02 02:09:19', '2025-12-02 02:09:19'), +(0, 2025, 11, '2025-11-03', 16, 16, 0, 4, 0, 0, 0, 12, 0, 144.00, 30, 12, 1, 1, 0, '2025-12-02 02:09:19', '2025-12-02 02:09:19'), +(0, 2025, 11, '2025-11-03', 17, 17, 0, 5, 0, 0, 0, 12, 0, 148.00, 31, 12, 1, 1, 0, '2025-12-02 02:09:19', '2025-12-02 02:09:19'), +(0, 2025, 11, '2025-11-03', 18, 18, 0, 5, 0, 0, 0, 13, 0, 156.00, 33, 13, 1, 1, 0, '2025-12-02 02:09:19', '2025-12-02 02:09:19'), +(0, 2025, 11, '2025-11-03', 19, 19, 0, 5, 0, 0, 0, 14, 0, 172.00, 36, 14, 1, 1, 0, '2025-12-02 02:09:19', '2025-12-02 02:09:19'), +(0, 2025, 11, '2025-11-03', 20, 20, 0, 5, 0, 0, 0, 15, 0, 180.00, 38, 15, 1, 1, 0, '2025-12-02 02:09:54', '2025-12-02 02:09:54'), +(0, 2025, 11, '2025-11-03', 21, 21, 0, 5, 0, 0, 0, 16, 0, 184.00, 39, 16, 1, 1, 0, '2025-12-02 02:10:27', '2025-12-02 02:10:27'), +(0, 2025, 11, '2025-11-03', 22, 21, 1, 5, 0, 0, 0, 16, 0, 184.00, 39, 16, 1, 1, 0, '2025-12-02 02:10:29', '2025-12-02 02:10:29'), +(0, 2025, 11, '2025-11-03', 23, 22, 1, 5, 0, 0, 0, 17, 0, 192.00, 41, 17, 1, 1, 0, '2025-12-02 02:10:45', '2025-12-02 02:10:45'), +(0, 2025, 11, '2025-11-03', 24, 23, 1, 5, 0, 0, 0, 18, 0, 200.00, 43, 18, 1, 1, 0, '2025-12-02 02:10:51', '2025-12-02 02:10:51'), +(0, 2025, 11, '2025-11-03', 25, 24, 1, 5, 0, 0, 0, 19, 0, 208.00, 45, 19, 1, 1, 0, '2025-12-02 02:10:55', '2025-12-02 02:10:55'), +(0, 2025, 11, '2025-11-03', 26, 25, 1, 5, 0, 0, 0, 20, 0, 216.00, 47, 20, 1, 1, 0, '2025-12-02 02:11:02', '2025-12-02 02:11:02'), +(0, 2025, 11, '2025-11-03', 27, 26, 1, 5, 1, 0, 0, 20, 0, 224.00, 48, 20, 1, 1, 0, '2025-12-02 02:11:47', '2025-12-02 02:11:47'), +(0, 2025, 11, '2025-11-03', 28, 27, 1, 5, 2, 0, 1, 20, 0, 232.00, 49, 20, 1, 1, 0, '2025-12-02 02:11:57', '2025-12-02 02:11:57'), +(0, 2025, 11, '2025-11-03', 29, 27, 2, 5, 2, 0, 1, 20, 0, 232.00, 49, 20, 1, 1, 0, '2025-12-02 02:12:14', '2025-12-02 02:12:14'), +(0, 2025, 11, '2025-11-04', 1, 1, 0, 1, 0, 0, 0, 0, 0, 6.00, 1, 0, 1, 0, 0, '2025-12-02 02:17:03', '2025-12-02 02:17:03'), +(0, 2025, 11, '2025-11-04', 2, 2, 0, 1, 0, 0, 0, 1, 0, 16.00, 3, 1, 1, 1, 0, '2025-12-02 02:17:03', '2025-12-02 02:17:03'), +(0, 2025, 11, '2025-11-04', 3, 3, 0, 2, 0, 0, 0, 1, 0, 22.00, 4, 1, 1, 1, 0, '2025-12-02 02:17:03', '2025-12-02 02:17:03'), +(0, 2025, 11, '2025-11-04', 4, 4, 0, 2, 0, 0, 0, 2, 0, 32.00, 6, 2, 1, 1, 0, '2025-12-02 02:17:03', '2025-12-02 02:17:03'), +(0, 2025, 11, '2025-11-04', 5, 5, 0, 3, 0, 0, 0, 2, 0, 38.00, 7, 2, 1, 1, 0, '2025-12-02 02:17:03', '2025-12-02 02:17:03'), +(0, 2025, 11, '2025-11-04', 6, 6, 0, 3, 0, 0, 0, 3, 0, 48.00, 9, 3, 1, 1, 0, '2025-12-02 02:17:03', '2025-12-02 02:17:03'), +(0, 2025, 11, '2025-11-01', 18, 18, 0, 7, 3, 0, 0, 8, 0, 112.00, 25, 8, 1, 1, 0, '2025-12-02 02:18:04', '2025-12-02 02:18:04'), +(0, 2025, 11, '2025-11-01', 19, 18, 1, 7, 3, 0, 0, 8, 0, 112.00, 25, 8, 1, 1, 0, '2025-12-02 02:18:05', '2025-12-02 02:18:05'), +(0, 2025, 11, '2025-11-01', 20, 19, 1, 7, 3, 0, 0, 9, 0, 116.00, 26, 9, 1, 1, 0, '2025-12-02 02:18:14', '2025-12-02 02:18:14'), +(0, 2025, 11, '2025-11-01', 21, 19, 2, 7, 3, 0, 0, 9, 0, 116.00, 26, 9, 1, 1, 0, '2025-12-02 02:18:16', '2025-12-02 02:18:16'), +(0, 2025, 11, '2025-11-04', 7, 7, 0, 3, 1, 0, 0, 3, 0, 56.00, 10, 3, 1, 1, 0, '2025-12-02 02:19:20', '2025-12-02 02:19:20'), +(0, 2025, 11, '2025-11-04', 8, 8, 0, 3, 1, 0, 0, 4, 0, 60.00, 11, 4, 1, 1, 0, '2025-12-02 02:19:51', '2025-12-02 02:19:51'), +(0, 2025, 11, '2025-11-04', 9, 9, 0, 3, 1, 0, 0, 5, 0, 68.00, 13, 5, 1, 1, 0, '2025-12-02 02:19:51', '2025-12-02 02:19:51'), +(0, 2025, 11, '2025-11-24', 3, 3, 0, 1, 2, 0, 0, 0, 0, 20.00, 3, 0, 1, 0, 0, '2025-12-02 02:43:58', '2025-12-02 02:43:58'), +(0, 2025, 11, '2025-11-24', 4, 4, 0, 1, 2, 0, 0, 1, 0, 28.00, 5, 1, 1, 1, 0, '2025-12-02 02:43:58', '2025-12-02 02:43:58'), +(0, 2025, 11, '2025-11-24', 5, 5, 0, 2, 2, 0, 0, 1, 0, 32.00, 6, 1, 1, 1, 0, '2025-12-02 02:43:58', '2025-12-02 02:43:58'), +(0, 2025, 11, '2025-11-24', 6, 6, 0, 2, 2, 0, 0, 2, 0, 40.00, 8, 2, 1, 1, 0, '2025-12-02 02:43:58', '2025-12-02 02:43:58'), +(0, 2025, 11, '2025-11-25', 3, 3, 0, 0, 3, 2, 0, 0, 0, 28.00, 3, 0, 0, 0, 0, '2025-12-02 04:17:39', '2025-12-02 04:17:39'), +(0, 2025, 11, '2025-11-25', 4, 4, 0, 0, 3, 2, 0, 1, 0, 37.00, 5, 1, 0, 1, 0, '2025-12-02 04:17:39', '2025-12-02 04:17:39'), +(0, 2025, 11, '2025-11-25', 5, 5, 0, 0, 3, 2, 0, 2, 0, 47.00, 8, 3, 0, 1, 0, '2025-12-02 04:17:39', '2025-12-02 04:17:39'), +(0, 2025, 11, '2025-11-25', 6, 6, 0, 0, 4, 2, 0, 2, 0, 55.00, 9, 3, 0, 1, 0, '2025-12-02 04:17:39', '2025-12-02 04:17:39'), +(0, 2025, 11, '2025-11-25', 7, 7, 0, 0, 4, 2, 0, 3, 0, 64.00, 11, 4, 0, 1, 0, '2025-12-02 04:17:39', '2025-12-02 04:17:39'), +(0, 2025, 11, '2025-11-25', 8, 8, 0, 0, 4, 2, 0, 4, 0, 74.00, 14, 6, 0, 1, 0, '2025-12-02 04:17:39', '2025-12-02 04:17:39'), +(0, 2025, 12, '2025-12-03', 1, 1, 0, 0, 1, 0, 0, 0, 0, 8.00, 1, 0, 0, 0, 0, '2025-12-03 06:52:28', '2025-12-03 06:52:28'), +(0, 2025, 12, '2025-12-03', 2, 2, 0, 0, 2, 0, 0, 0, 0, 16.00, 2, 0, 0, 0, 0, '2025-12-03 06:52:28', '2025-12-03 06:52:28'), +(0, 2025, 12, '2025-12-03', 3, 3, 0, 0, 3, 0, 0, 0, 0, 24.00, 3, 0, 0, 0, 0, '2025-12-03 06:52:28', '2025-12-03 06:52:28'), +(0, 2025, 12, '2025-12-03', 4, 4, 0, 0, 4, 0, 0, 0, 0, 32.00, 4, 0, 0, 0, 0, '2025-12-03 06:52:28', '2025-12-03 06:52:28'), +(0, 2025, 12, '2025-12-04', 1, 1, 0, 0, 1, 0, 0, 0, 0, 8.00, 1, 0, 0, 0, 0, '2025-12-04 06:45:00', '2025-12-04 06:45:00'), +(0, 2025, 12, '2025-12-04', 2, 2, 0, 0, 2, 0, 0, 0, 0, 16.00, 2, 0, 0, 0, 0, '2025-12-04 06:45:00', '2025-12-04 06:45:00'), +(0, 2025, 12, '2025-12-04', 3, 3, 0, 0, 3, 0, 0, 0, 0, 24.00, 3, 0, 0, 0, 0, '2025-12-04 06:45:00', '2025-12-04 06:45:00'), +(0, 2025, 12, '2025-12-04', 4, 4, 0, 0, 4, 0, 0, 0, 0, 32.00, 4, 0, 0, 0, 0, '2025-12-04 06:45:00', '2025-12-04 06:45:00'), +(0, 2025, 11, '2025-11-01', 22, 20, 2, 8, 3, 0, 0, 9, 0, 120.00, 27, 9, 1, 1, 0, '2025-12-05 00:34:20', '2025-12-05 00:34:20'), +(0, 2025, 11, '2025-11-01', 23, 21, 2, 8, 3, 0, 0, 10, 0, 128.00, 29, 10, 1, 1, 0, '2025-12-05 00:34:20', '2025-12-05 00:34:20'), +(0, 2025, 11, '2025-11-01', 24, 22, 2, 9, 3, 0, 0, 10, 0, 132.00, 30, 10, 1, 1, 0, '2025-12-05 00:34:20', '2025-12-05 00:34:20'), +(0, 2025, 11, '2025-11-01', 25, 23, 2, 9, 3, 0, 0, 11, 0, 140.00, 32, 11, 1, 1, 0, '2025-12-05 00:34:20', '2025-12-05 00:34:20'), +(0, 2025, 11, '2025-11-03', 30, 28, 2, 5, 3, 0, 1, 20, 0, 240.00, 50, 20, 1, 1, 0, '2025-12-05 00:35:16', '2025-12-05 00:35:16'), +(0, 2025, 11, '2025-11-11', 15, 15, 0, 1, 13, 10, 0, 0, 1, 148.00, 21, 0, 1, 0, 1, '2025-12-05 00:44:37', '2025-12-05 00:44:37'), +(0, 2025, 11, '2025-11-04', 10, 10, 0, 3, 1, 0, 0, 6, 0, 78.00, 16, 6, 1, 1, 0, '2025-12-05 01:02:21', '2025-12-05 01:02:21'), +(0, 2025, 11, '2025-11-04', 11, 11, 0, 3, 2, 1, 0, 6, 0, 88.00, 18, 6, 1, 1, 0, '2025-12-05 01:02:21', '2025-12-05 01:02:21'), +(0, 2025, 11, '2025-11-04', 12, 12, 0, 4, 2, 1, 0, 6, 0, 94.00, 19, 6, 1, 1, 0, '2025-12-05 01:03:12', '2025-12-05 01:03:12'), +(0, 2025, 11, '2025-11-04', 13, 13, 0, 4, 2, 1, 0, 7, 0, 104.00, 21, 7, 1, 1, 0, '2025-12-05 01:03:12', '2025-12-05 01:03:12'), +(0, 2025, 11, '2025-11-04', 14, 14, 0, 5, 2, 1, 0, 7, 0, 110.00, 22, 7, 1, 1, 0, '2025-12-05 01:03:12', '2025-12-05 01:03:12'), +(0, 2025, 11, '2025-11-04', 15, 15, 0, 5, 2, 1, 0, 8, 0, 120.00, 24, 8, 1, 1, 0, '2025-12-05 01:03:12', '2025-12-05 01:03:12'), +(0, 2025, 11, '2025-11-04', 16, 16, 0, 6, 2, 1, 0, 8, 0, 126.00, 25, 8, 1, 1, 0, '2025-12-05 01:03:12', '2025-12-05 01:03:12'), +(0, 2025, 11, '2025-11-04', 17, 17, 0, 6, 2, 1, 0, 9, 0, 136.00, 27, 9, 1, 1, 0, '2025-12-05 01:03:12', '2025-12-05 01:03:12'), +(0, 2025, 11, '2025-11-04', 18, 18, 0, 7, 2, 1, 0, 9, 0, 142.00, 28, 9, 1, 1, 0, '2025-12-05 01:03:12', '2025-12-05 01:03:12'), +(0, 2025, 11, '2025-11-04', 19, 19, 0, 7, 2, 1, 0, 10, 0, 152.00, 30, 10, 1, 1, 0, '2025-12-05 01:03:12', '2025-12-05 01:03:12'), +(0, 2025, 11, '2025-11-04', 20, 20, 0, 8, 2, 1, 0, 10, 0, 158.00, 31, 10, 1, 1, 0, '2025-12-05 01:03:12', '2025-12-05 01:03:12'), +(0, 2025, 11, '2025-11-04', 21, 21, 0, 8, 2, 1, 0, 11, 0, 168.00, 33, 11, 1, 1, 0, '2025-12-05 01:03:12', '2025-12-05 01:03:12'), +(0, 2025, 11, '2025-11-05', 4, 2, 2, 1, 1, 0, 0, 0, 0, 13.00, 2, 0, 1, 0, 0, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, '2025-11-05', 5, 3, 2, 1, 1, 0, 0, 1, 0, 19.00, 4, 1, 1, 1, 0, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, '2025-11-05', 6, 4, 2, 1, 1, 0, 0, 2, 0, 27.00, 7, 3, 1, 1, 0, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, '2025-11-05', 7, 5, 2, 2, 1, 0, 0, 2, 0, 32.00, 8, 3, 1, 1, 0, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, '2025-11-05', 8, 6, 2, 2, 1, 0, 0, 3, 0, 38.00, 10, 4, 1, 1, 0, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, '2025-11-05', 9, 7, 2, 2, 1, 0, 0, 4, 0, 46.00, 13, 6, 1, 1, 0, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, '2025-11-05', 10, 8, 2, 3, 1, 0, 0, 4, 0, 51.00, 14, 6, 1, 1, 0, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, '2025-11-05', 11, 9, 2, 3, 1, 0, 0, 5, 0, 57.00, 16, 7, 1, 1, 0, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, '2025-11-05', 12, 10, 2, 3, 1, 0, 0, 6, 0, 65.00, 19, 9, 1, 1, 0, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, '2025-11-05', 13, 11, 2, 4, 1, 0, 0, 6, 0, 70.00, 20, 9, 1, 1, 0, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, '2025-11-05', 14, 12, 2, 4, 1, 0, 0, 7, 0, 76.00, 22, 10, 1, 1, 0, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, '2025-11-05', 15, 13, 2, 4, 1, 0, 0, 8, 0, 84.00, 25, 12, 1, 1, 0, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, '2025-11-05', 16, 14, 2, 5, 1, 0, 0, 8, 0, 89.00, 26, 12, 1, 1, 0, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, '2025-11-05', 17, 15, 2, 5, 1, 0, 0, 9, 0, 95.00, 28, 13, 1, 1, 0, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, '2025-11-05', 18, 16, 2, 5, 1, 0, 0, 10, 0, 103.00, 31, 15, 1, 1, 0, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, '2025-11-05', 19, 17, 2, 6, 1, 0, 0, 10, 0, 108.00, 32, 15, 1, 1, 0, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, '2025-11-05', 20, 18, 2, 6, 1, 0, 0, 11, 0, 114.00, 34, 16, 1, 1, 0, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, '2025-11-05', 21, 19, 2, 6, 1, 0, 0, 12, 0, 122.00, 37, 18, 1, 1, 0, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, '2025-11-07', 19, 17, 2, 1, 13, 2, 0, 0, 3, 168.00, 26, 0, 1, 0, 1, '2025-12-05 01:05:21', '2025-12-05 01:05:21'), +(0, 2025, 11, '2025-11-07', 20, 18, 2, 1, 13, 2, 0, 0, 4, 192.00, 30, 0, 1, 0, 1, '2025-12-05 01:05:21', '2025-12-05 01:05:21'), +(0, 2025, 11, '2025-11-08', 3, 3, 0, 1, 2, 0, 0, 0, 0, 21.00, 3, 0, 1, 0, 0, '2025-12-05 01:06:12', '2025-12-05 01:06:12'), +(0, 2025, 11, '2025-11-08', 4, 4, 0, 1, 2, 0, 0, 1, 0, 29.00, 5, 1, 1, 1, 0, '2025-12-05 01:06:12', '2025-12-05 01:06:12'), +(0, 2025, 11, '2025-11-08', 5, 5, 0, 2, 2, 0, 0, 1, 0, 34.00, 6, 1, 1, 1, 0, '2025-12-05 01:06:12', '2025-12-05 01:06:12'), +(0, 2025, 11, '2025-11-08', 6, 6, 0, 2, 2, 0, 0, 2, 0, 42.00, 8, 2, 1, 1, 0, '2025-12-05 01:06:12', '2025-12-05 01:06:12'), +(0, 2025, 11, '2025-11-08', 7, 7, 0, 3, 2, 0, 0, 2, 0, 47.00, 9, 2, 1, 1, 0, '2025-12-05 01:06:12', '2025-12-05 01:06:12'), +(0, 2025, 11, '2025-11-08', 8, 8, 0, 3, 2, 0, 0, 3, 0, 55.00, 11, 3, 1, 1, 0, '2025-12-05 01:06:12', '2025-12-05 01:06:12'), +(0, 2025, 11, '2025-11-08', 9, 9, 0, 4, 2, 0, 0, 3, 0, 60.00, 12, 3, 1, 1, 0, '2025-12-05 01:06:12', '2025-12-05 01:06:12'), +(0, 2025, 11, '2025-11-08', 10, 10, 0, 4, 2, 0, 0, 4, 0, 68.00, 14, 4, 1, 1, 0, '2025-12-05 01:06:12', '2025-12-05 01:06:12'), +(0, 2025, 11, '2025-11-08', 11, 11, 0, 5, 2, 0, 0, 4, 0, 73.00, 15, 4, 1, 1, 0, '2025-12-05 01:06:12', '2025-12-05 01:06:12'), +(0, 2025, 11, '2025-11-08', 12, 12, 0, 5, 2, 0, 0, 5, 0, 81.00, 17, 5, 1, 1, 0, '2025-12-05 01:06:12', '2025-12-05 01:06:12'), +(0, 2025, 11, '2025-11-08', 13, 13, 0, 6, 2, 0, 0, 5, 0, 86.00, 18, 5, 1, 1, 0, '2025-12-05 01:06:12', '2025-12-05 01:06:12'), +(0, 2025, 11, '2025-11-08', 14, 14, 0, 6, 2, 0, 0, 6, 0, 94.00, 20, 6, 1, 1, 0, '2025-12-05 01:06:12', '2025-12-05 01:06:12'), +(0, 2025, 11, '2025-11-08', 15, 15, 0, 7, 2, 0, 0, 6, 0, 99.00, 21, 6, 1, 1, 0, '2025-12-05 01:06:12', '2025-12-05 01:06:12'), +(0, 2025, 11, '2025-11-08', 16, 16, 0, 7, 2, 0, 0, 7, 0, 107.00, 23, 7, 1, 1, 0, '2025-12-05 01:06:12', '2025-12-05 01:06:12'), +(0, 2025, 11, '2025-11-10', 4, 4, 0, 1, 3, 0, 0, 0, 0, 28.00, 4, 0, 1, 0, 0, '2025-12-05 01:06:58', '2025-12-05 01:06:58'), +(0, 2025, 11, '2025-11-10', 5, 5, 0, 1, 4, 0, 1, 0, 0, 36.00, 6, 0, 1, 0, 0, '2025-12-05 01:06:58', '2025-12-05 01:06:58'), +(0, 2025, 11, '2025-11-10', 6, 6, 0, 2, 4, 0, 1, 0, 0, 40.00, 7, 0, 1, 0, 0, '2025-12-05 01:07:29', '2025-12-05 01:07:29'), +(0, 2025, 11, '2025-11-10', 7, 7, 0, 2, 4, 0, 1, 1, 0, 48.00, 9, 1, 1, 1, 0, '2025-12-05 01:07:29', '2025-12-05 01:07:29'), +(0, 2025, 11, '2025-11-10', 8, 8, 0, 3, 4, 0, 1, 1, 0, 52.00, 10, 1, 1, 1, 0, '2025-12-05 01:07:29', '2025-12-05 01:07:29'), +(0, 2025, 11, '2025-11-10', 9, 9, 0, 3, 4, 0, 1, 2, 0, 60.00, 12, 2, 1, 1, 0, '2025-12-05 01:07:29', '2025-12-05 01:07:29'), +(0, 2025, 11, '2025-11-10', 10, 10, 0, 4, 4, 0, 1, 2, 0, 64.00, 13, 2, 1, 1, 0, '2025-12-05 01:07:29', '2025-12-05 01:07:29'), +(0, 2025, 11, '2025-11-10', 11, 11, 0, 4, 4, 0, 1, 3, 0, 72.00, 15, 3, 1, 1, 0, '2025-12-05 01:07:29', '2025-12-05 01:07:29'), +(0, 2025, 11, '2025-11-10', 12, 12, 0, 5, 4, 0, 1, 3, 0, 76.00, 16, 3, 1, 1, 0, '2025-12-05 01:07:29', '2025-12-05 01:07:29'), +(0, 2025, 11, '2025-11-10', 13, 13, 0, 5, 4, 0, 1, 4, 0, 84.00, 18, 4, 1, 1, 0, '2025-12-05 01:07:29', '2025-12-05 01:07:29'), +(0, 2025, 11, '2025-11-10', 14, 14, 0, 6, 4, 0, 1, 4, 0, 88.00, 19, 4, 1, 1, 0, '2025-12-05 01:07:29', '2025-12-05 01:07:29'), +(0, 2025, 11, '2025-11-10', 15, 15, 0, 6, 4, 0, 1, 5, 0, 96.00, 21, 5, 1, 1, 0, '2025-12-05 01:07:29', '2025-12-05 01:07:29'), +(0, 2025, 11, '2025-11-10', 16, 16, 0, 7, 4, 0, 1, 5, 0, 100.00, 22, 5, 1, 1, 0, '2025-12-05 01:07:29', '2025-12-05 01:07:29'), +(0, 2025, 11, '2025-11-10', 17, 17, 0, 7, 4, 0, 1, 6, 0, 108.00, 24, 6, 1, 1, 0, '2025-12-05 01:07:29', '2025-12-05 01:07:29'), +(0, 2025, 11, '2025-11-12', 10, 10, 0, 0, 10, 0, 0, 0, 0, 80.00, 10, 0, 0, 0, 0, '2025-12-05 01:08:07', '2025-12-05 01:08:07'), +(0, 2025, 11, '2025-11-15', 4, 4, 0, 1, 3, 0, 0, 0, 0, 28.00, 4, 0, 1, 0, 0, '2025-12-05 01:08:52', '2025-12-05 01:08:52'), +(0, 2025, 11, '2025-11-15', 5, 5, 0, 1, 3, 0, 0, 1, 0, 36.00, 6, 1, 1, 1, 0, '2025-12-05 01:08:52', '2025-12-05 01:08:52'), +(0, 2025, 11, '2025-11-15', 6, 6, 0, 2, 3, 0, 0, 1, 0, 40.00, 7, 1, 1, 1, 0, '2025-12-05 01:08:52', '2025-12-05 01:08:52'), +(0, 2025, 11, '2025-11-15', 7, 7, 0, 2, 3, 0, 0, 2, 0, 48.00, 9, 2, 1, 1, 0, '2025-12-05 01:08:52', '2025-12-05 01:08:52'), +(0, 2025, 11, '2025-11-15', 8, 8, 0, 3, 3, 0, 0, 2, 0, 52.00, 10, 2, 1, 1, 0, '2025-12-05 01:08:52', '2025-12-05 01:08:52'), +(0, 2025, 11, '2025-11-15', 9, 9, 0, 3, 3, 0, 0, 3, 0, 60.00, 12, 3, 1, 1, 0, '2025-12-05 01:08:52', '2025-12-05 01:08:52'), +(0, 2025, 11, '2025-11-15', 10, 10, 0, 4, 3, 0, 0, 3, 0, 64.00, 13, 3, 1, 1, 0, '2025-12-05 01:08:52', '2025-12-05 01:08:52'), +(0, 2025, 11, '2025-11-15', 11, 11, 0, 4, 3, 0, 0, 4, 0, 72.00, 15, 4, 1, 1, 0, '2025-12-05 01:08:52', '2025-12-05 01:08:52'), +(0, 2025, 11, '2025-11-15', 12, 12, 0, 5, 3, 0, 0, 4, 0, 76.00, 16, 4, 1, 1, 0, '2025-12-05 01:08:52', '2025-12-05 01:08:52'), +(0, 2025, 11, '2025-11-15', 13, 13, 0, 5, 3, 0, 0, 5, 0, 84.00, 18, 5, 1, 1, 0, '2025-12-05 01:08:52', '2025-12-05 01:08:52'), +(0, 2025, 11, '2025-11-15', 14, 14, 0, 6, 3, 0, 0, 5, 0, 88.00, 19, 5, 1, 1, 0, '2025-12-05 01:08:52', '2025-12-05 01:08:52'), +(0, 2025, 11, '2025-11-15', 15, 15, 0, 6, 3, 0, 0, 6, 0, 96.00, 21, 6, 1, 1, 0, '2025-12-05 01:08:52', '2025-12-05 01:08:52'), +(0, 2025, 11, '2025-11-15', 16, 16, 0, 7, 3, 0, 0, 6, 0, 100.00, 22, 6, 1, 1, 0, '2025-12-05 01:08:52', '2025-12-05 01:08:52'); +INSERT INTO `monthly_summary` (`id`, `year`, `month`, `date`, `total_workers`, `working_workers`, `incomplete_workers`, `partial_workers`, `complete_workers`, `overtime_workers`, `vacation_workers`, `error_workers`, `overtime_warning_workers`, `total_work_hours`, `total_work_count`, `total_error_count`, `has_issues`, `has_errors`, `has_overtime_warning`, `last_updated`, `created_at`) VALUES +(0, 2025, 11, '2025-11-15', 17, 17, 0, 7, 3, 0, 0, 7, 0, 108.00, 24, 7, 1, 1, 0, '2025-12-05 01:08:52', '2025-12-05 01:08:52'), +(0, 2025, 11, '2025-11-17', 4, 4, 0, 1, 3, 0, 0, 0, 0, 29.00, 4, 0, 1, 0, 0, '2025-12-05 01:09:53', '2025-12-05 01:09:53'), +(0, 2025, 11, '2025-11-17', 5, 5, 0, 1, 3, 0, 0, 1, 0, 37.00, 6, 1, 1, 1, 0, '2025-12-05 01:09:53', '2025-12-05 01:09:53'), +(0, 2025, 11, '2025-11-17', 6, 6, 0, 2, 3, 0, 0, 1, 0, 42.00, 7, 1, 1, 1, 0, '2025-12-05 01:09:53', '2025-12-05 01:09:53'), +(0, 2025, 11, '2025-11-17', 7, 7, 0, 2, 3, 0, 0, 2, 0, 50.00, 9, 2, 1, 1, 0, '2025-12-05 01:09:53', '2025-12-05 01:09:53'), +(0, 2025, 11, '2025-11-17', 8, 8, 0, 3, 3, 0, 0, 2, 0, 55.00, 10, 2, 1, 1, 0, '2025-12-05 01:09:53', '2025-12-05 01:09:53'), +(0, 2025, 11, '2025-11-17', 9, 9, 0, 3, 3, 0, 0, 3, 0, 63.00, 12, 3, 1, 1, 0, '2025-12-05 01:09:53', '2025-12-05 01:09:53'), +(0, 2025, 11, '2025-11-17', 10, 10, 0, 4, 3, 0, 0, 3, 0, 68.00, 13, 3, 1, 1, 0, '2025-12-05 01:09:53', '2025-12-05 01:09:53'), +(0, 2025, 11, '2025-11-17', 11, 11, 0, 4, 3, 0, 0, 4, 0, 76.00, 15, 4, 1, 1, 0, '2025-12-05 01:09:53', '2025-12-05 01:09:53'), +(0, 2025, 11, '2025-11-17', 12, 12, 0, 5, 3, 0, 0, 4, 0, 81.00, 16, 4, 1, 1, 0, '2025-12-05 01:09:53', '2025-12-05 01:09:53'), +(0, 2025, 11, '2025-11-17', 13, 13, 0, 5, 3, 0, 0, 5, 0, 89.00, 18, 5, 1, 1, 0, '2025-12-05 01:09:53', '2025-12-05 01:09:53'), +(0, 2025, 11, '2025-11-17', 14, 14, 0, 6, 3, 0, 0, 5, 0, 94.00, 19, 5, 1, 1, 0, '2025-12-05 01:09:53', '2025-12-05 01:09:53'), +(0, 2025, 11, '2025-11-17', 15, 15, 0, 6, 3, 0, 0, 6, 0, 102.00, 21, 6, 1, 1, 0, '2025-12-05 01:09:53', '2025-12-05 01:09:53'), +(0, 2025, 11, '2025-11-18', 6, 6, 0, 3, 3, 3, 0, 0, 0, 48.00, 8, 0, 1, 0, 0, '2025-12-05 01:11:02', '2025-12-05 01:11:02'), +(0, 2025, 11, '2025-11-18', 7, 7, 0, 3, 3, 3, 0, 1, 0, 58.00, 10, 1, 1, 1, 0, '2025-12-05 01:11:02', '2025-12-05 01:11:02'), +(0, 2025, 11, '2025-11-18', 8, 8, 0, 4, 3, 3, 0, 1, 0, 64.00, 11, 1, 1, 1, 0, '2025-12-05 01:11:02', '2025-12-05 01:11:02'), +(0, 2025, 11, '2025-11-18', 9, 9, 0, 4, 3, 3, 0, 2, 0, 74.00, 13, 2, 1, 1, 0, '2025-12-05 01:11:02', '2025-12-05 01:11:02'), +(0, 2025, 11, '2025-11-18', 10, 10, 0, 5, 3, 3, 0, 2, 0, 80.00, 14, 2, 1, 1, 0, '2025-12-05 01:11:02', '2025-12-05 01:11:02'), +(0, 2025, 11, '2025-11-18', 11, 11, 0, 5, 3, 3, 0, 3, 0, 90.00, 16, 3, 1, 1, 0, '2025-12-05 01:11:02', '2025-12-05 01:11:02'), +(0, 2025, 11, '2025-11-18', 12, 12, 0, 6, 3, 3, 0, 3, 0, 96.00, 17, 3, 1, 1, 0, '2025-12-05 01:11:02', '2025-12-05 01:11:02'), +(0, 2025, 11, '2025-11-18', 13, 13, 0, 6, 3, 3, 0, 4, 0, 106.00, 19, 4, 1, 1, 0, '2025-12-05 01:11:02', '2025-12-05 01:11:02'), +(0, 2025, 11, '2025-11-18', 14, 14, 0, 7, 3, 3, 0, 4, 0, 112.00, 20, 4, 1, 1, 0, '2025-12-05 01:11:02', '2025-12-05 01:11:02'), +(0, 2025, 11, '2025-11-18', 15, 15, 0, 7, 3, 3, 0, 5, 0, 122.00, 22, 5, 1, 1, 0, '2025-12-05 01:11:02', '2025-12-05 01:11:02'), +(0, 2025, 11, '2025-11-18', 16, 16, 0, 8, 3, 3, 0, 5, 0, 128.00, 23, 5, 1, 1, 0, '2025-12-05 01:11:02', '2025-12-05 01:11:02'), +(0, 2025, 11, '2025-11-18', 17, 17, 0, 8, 3, 3, 0, 6, 0, 138.00, 25, 6, 1, 1, 0, '2025-12-05 01:11:02', '2025-12-05 01:11:02'), +(0, 2025, 11, '2025-11-18', 18, 18, 0, 9, 3, 3, 0, 6, 0, 144.00, 26, 6, 1, 1, 0, '2025-12-05 01:11:02', '2025-12-05 01:11:02'), +(0, 2025, 11, '2025-11-18', 19, 19, 0, 9, 3, 3, 0, 7, 0, 154.00, 28, 7, 1, 1, 0, '2025-12-05 01:11:02', '2025-12-05 01:11:02'), +(0, 2025, 11, '2025-11-19', 1, 1, 0, 1, 0, 0, 0, 0, 0, 4.00, 1, 0, 1, 0, 0, '2025-12-05 01:12:15', '2025-12-05 01:12:15'), +(0, 2025, 11, '2025-11-19', 2, 2, 0, 1, 0, 0, 0, 1, 0, 12.00, 3, 1, 1, 1, 0, '2025-12-05 01:12:15', '2025-12-05 01:12:15'), +(0, 2025, 11, '2025-11-19', 3, 3, 0, 2, 0, 0, 0, 1, 0, 16.00, 4, 1, 1, 1, 0, '2025-12-05 01:12:15', '2025-12-05 01:12:15'), +(0, 2025, 11, '2025-11-19', 4, 4, 0, 2, 0, 0, 0, 2, 0, 24.00, 6, 2, 1, 1, 0, '2025-12-05 01:12:15', '2025-12-05 01:12:15'), +(0, 2025, 11, '2025-11-19', 5, 5, 0, 3, 0, 0, 0, 2, 0, 28.00, 7, 2, 1, 1, 0, '2025-12-05 01:12:15', '2025-12-05 01:12:15'), +(0, 2025, 11, '2025-11-19', 6, 6, 0, 3, 0, 0, 0, 3, 0, 36.00, 9, 3, 1, 1, 0, '2025-12-05 01:12:15', '2025-12-05 01:12:15'), +(0, 2025, 11, '2025-11-19', 7, 7, 0, 4, 0, 0, 0, 3, 0, 41.00, 10, 3, 1, 1, 0, '2025-12-05 01:12:48', '2025-12-05 01:12:48'), +(0, 2025, 11, '2025-11-19', 8, 8, 0, 4, 0, 0, 0, 4, 0, 49.00, 12, 4, 1, 1, 0, '2025-12-05 01:12:48', '2025-12-05 01:12:48'), +(0, 2025, 11, '2025-11-19', 9, 9, 0, 5, 0, 0, 0, 4, 0, 54.00, 13, 4, 1, 1, 0, '2025-12-05 01:12:49', '2025-12-05 01:12:49'), +(0, 2025, 11, '2025-11-19', 10, 10, 0, 5, 0, 0, 0, 5, 0, 62.00, 15, 5, 1, 1, 0, '2025-12-05 01:12:49', '2025-12-05 01:12:49'), +(0, 2025, 11, '2025-11-19', 11, 11, 0, 6, 0, 0, 0, 5, 0, 67.00, 16, 5, 1, 1, 0, '2025-12-05 01:12:49', '2025-12-05 01:12:49'), +(0, 2025, 11, '2025-11-19', 12, 12, 0, 6, 0, 0, 0, 6, 0, 75.00, 18, 6, 1, 1, 0, '2025-12-05 01:12:49', '2025-12-05 01:12:49'), +(0, 2025, 11, '2025-11-19', 13, 13, 0, 7, 0, 0, 0, 6, 0, 80.00, 19, 6, 1, 1, 0, '2025-12-05 01:12:49', '2025-12-05 01:12:49'), +(0, 2025, 11, '2025-11-19', 14, 14, 0, 7, 0, 0, 0, 7, 0, 88.00, 21, 7, 1, 1, 0, '2025-12-05 01:12:49', '2025-12-05 01:12:49'), +(0, 2025, 11, '2025-11-19', 15, 15, 0, 8, 0, 0, 0, 7, 0, 93.00, 22, 7, 1, 1, 0, '2025-12-05 01:12:49', '2025-12-05 01:12:49'), +(0, 2025, 11, '2025-11-19', 16, 16, 0, 8, 0, 0, 0, 8, 0, 101.00, 24, 8, 1, 1, 0, '2025-12-05 01:12:49', '2025-12-05 01:12:49'), +(0, 2025, 11, '2025-11-19', 17, 17, 0, 9, 0, 0, 0, 8, 0, 106.00, 25, 8, 1, 1, 0, '2025-12-05 01:12:49', '2025-12-05 01:12:49'), +(0, 2025, 11, '2025-11-19', 18, 18, 0, 9, 0, 0, 0, 9, 0, 114.00, 27, 9, 1, 1, 0, '2025-12-05 01:12:49', '2025-12-05 01:12:49'), +(0, 2025, 11, '2025-11-19', 19, 19, 0, 10, 0, 0, 0, 9, 0, 119.00, 28, 9, 1, 1, 0, '2025-12-05 01:12:49', '2025-12-05 01:12:49'), +(0, 2025, 11, '2025-11-19', 20, 20, 0, 10, 0, 0, 0, 10, 0, 127.00, 30, 10, 1, 1, 0, '2025-12-05 01:12:49', '2025-12-05 01:12:49'), +(0, 2025, 11, '2025-11-20', 1, 1, 0, 1, 0, 0, 0, 0, 0, 5.00, 1, 0, 1, 0, 0, '2025-12-05 01:13:18', '2025-12-05 01:13:18'), +(0, 2025, 11, '2025-11-20', 2, 2, 0, 1, 0, 0, 0, 1, 0, 13.00, 3, 1, 1, 1, 0, '2025-12-05 01:13:18', '2025-12-05 01:13:18'), +(0, 2025, 11, '2025-11-20', 3, 3, 0, 2, 0, 0, 0, 1, 0, 18.00, 4, 1, 1, 1, 0, '2025-12-05 01:13:18', '2025-12-05 01:13:18'), +(0, 2025, 11, '2025-11-20', 4, 4, 0, 2, 0, 0, 0, 2, 0, 26.00, 6, 2, 1, 1, 0, '2025-12-05 01:13:18', '2025-12-05 01:13:18'), +(0, 2025, 11, '2025-11-20', 5, 5, 0, 3, 0, 0, 0, 2, 0, 31.00, 7, 2, 1, 1, 0, '2025-12-05 01:13:18', '2025-12-05 01:13:18'), +(0, 2025, 11, '2025-11-20', 6, 6, 0, 3, 0, 0, 0, 3, 0, 39.00, 9, 3, 1, 1, 0, '2025-12-05 01:13:18', '2025-12-05 01:13:18'), +(0, 2025, 11, '2025-11-20', 7, 7, 0, 4, 0, 0, 0, 3, 0, 44.00, 10, 3, 1, 1, 0, '2025-12-05 01:13:18', '2025-12-05 01:13:18'), +(0, 2025, 11, '2025-11-20', 8, 8, 0, 4, 0, 0, 0, 4, 0, 52.00, 12, 4, 1, 1, 0, '2025-12-05 01:13:18', '2025-12-05 01:13:18'), +(0, 2025, 11, '2025-11-20', 9, 9, 0, 5, 0, 0, 0, 4, 0, 57.00, 13, 4, 1, 1, 0, '2025-12-05 01:13:48', '2025-12-05 01:13:48'), +(0, 2025, 11, '2025-11-20', 10, 10, 0, 5, 0, 0, 0, 5, 0, 65.00, 15, 5, 1, 1, 0, '2025-12-05 01:13:48', '2025-12-05 01:13:48'), +(0, 2025, 11, '2025-11-20', 11, 11, 0, 6, 0, 0, 0, 5, 0, 70.00, 16, 5, 1, 1, 0, '2025-12-05 01:13:48', '2025-12-05 01:13:48'), +(0, 2025, 11, '2025-11-20', 12, 12, 0, 6, 0, 0, 0, 6, 0, 78.00, 18, 6, 1, 1, 0, '2025-12-05 01:13:48', '2025-12-05 01:13:48'), +(0, 2025, 11, '2025-11-20', 13, 13, 0, 7, 0, 0, 0, 6, 0, 83.00, 19, 6, 1, 1, 0, '2025-12-05 01:13:48', '2025-12-05 01:13:48'), +(0, 2025, 11, '2025-11-20', 14, 14, 0, 7, 0, 0, 0, 7, 0, 91.00, 21, 7, 1, 1, 0, '2025-12-05 01:13:48', '2025-12-05 01:13:48'), +(0, 2025, 11, '2025-11-20', 15, 15, 0, 8, 0, 0, 0, 7, 0, 96.00, 22, 7, 1, 1, 0, '2025-12-05 01:13:48', '2025-12-05 01:13:48'), +(0, 2025, 11, '2025-11-20', 16, 16, 0, 8, 0, 0, 0, 8, 0, 104.00, 24, 8, 1, 1, 0, '2025-12-05 01:13:48', '2025-12-05 01:13:48'), +(0, 2025, 11, '2025-11-20', 17, 17, 0, 9, 0, 0, 0, 8, 0, 109.00, 25, 8, 1, 1, 0, '2025-12-05 01:13:48', '2025-12-05 01:13:48'), +(0, 2025, 11, '2025-11-20', 18, 18, 0, 9, 0, 0, 0, 9, 0, 117.00, 27, 9, 1, 1, 0, '2025-12-05 01:13:48', '2025-12-05 01:13:48'), +(0, 2025, 11, '2025-11-20', 19, 19, 0, 10, 0, 0, 0, 9, 0, 122.00, 28, 9, 1, 1, 0, '2025-12-05 01:13:48', '2025-12-05 01:13:48'), +(0, 2025, 11, '2025-11-20', 20, 20, 0, 10, 0, 0, 0, 10, 0, 130.00, 30, 10, 1, 1, 0, '2025-12-05 01:13:48', '2025-12-05 01:13:48'), +(0, 2025, 11, '2025-11-21', 3, 3, 0, 1, 2, 0, 0, 0, 0, 20.00, 3, 0, 1, 0, 0, '2025-12-05 01:14:50', '2025-12-05 01:14:50'), +(0, 2025, 11, '2025-11-21', 4, 4, 0, 1, 2, 0, 0, 1, 0, 28.00, 5, 1, 1, 1, 0, '2025-12-05 01:14:50', '2025-12-05 01:14:50'), +(0, 2025, 11, '2025-11-21', 5, 5, 0, 2, 2, 0, 0, 1, 0, 32.00, 6, 1, 1, 1, 0, '2025-12-05 01:14:50', '2025-12-05 01:14:50'), +(0, 2025, 11, '2025-11-21', 6, 6, 0, 2, 2, 0, 0, 2, 0, 40.00, 8, 2, 1, 1, 0, '2025-12-05 01:14:50', '2025-12-05 01:14:50'), +(0, 2025, 11, '2025-11-21', 7, 7, 0, 3, 2, 0, 0, 2, 0, 44.00, 9, 2, 1, 1, 0, '2025-12-05 01:14:50', '2025-12-05 01:14:50'), +(0, 2025, 11, '2025-11-21', 8, 8, 0, 3, 2, 0, 0, 3, 0, 52.00, 11, 3, 1, 1, 0, '2025-12-05 01:14:50', '2025-12-05 01:14:50'), +(0, 2025, 11, '2025-11-21', 9, 9, 0, 4, 2, 0, 0, 3, 0, 56.00, 12, 3, 1, 1, 0, '2025-12-05 01:14:50', '2025-12-05 01:14:50'), +(0, 2025, 11, '2025-11-21', 10, 10, 0, 4, 2, 0, 0, 4, 0, 64.00, 14, 4, 1, 1, 0, '2025-12-05 01:14:50', '2025-12-05 01:14:50'), +(0, 2025, 11, '2025-11-21', 11, 11, 0, 5, 2, 0, 0, 4, 0, 68.00, 15, 4, 1, 1, 0, '2025-12-05 01:14:50', '2025-12-05 01:14:50'), +(0, 2025, 11, '2025-11-21', 12, 12, 0, 5, 2, 0, 0, 5, 0, 76.00, 17, 5, 1, 1, 0, '2025-12-05 01:14:50', '2025-12-05 01:14:50'), +(0, 2025, 11, '2025-11-21', 13, 13, 0, 6, 2, 0, 0, 5, 0, 80.00, 18, 5, 1, 1, 0, '2025-12-05 01:14:50', '2025-12-05 01:14:50'), +(0, 2025, 11, '2025-11-21', 14, 14, 0, 6, 2, 0, 0, 6, 0, 88.00, 20, 6, 1, 1, 0, '2025-12-05 01:14:50', '2025-12-05 01:14:50'), +(0, 2025, 11, '2025-11-21', 15, 15, 0, 7, 2, 0, 0, 6, 0, 92.00, 21, 6, 1, 1, 0, '2025-12-05 01:14:50', '2025-12-05 01:14:50'), +(0, 2025, 11, '2025-11-21', 16, 16, 0, 7, 2, 0, 0, 7, 0, 100.00, 23, 7, 1, 1, 0, '2025-12-05 01:14:50', '2025-12-05 01:14:50'), +(0, 2025, 11, '2025-11-22', 3, 3, 0, 0, 3, 0, 0, 0, 0, 24.00, 3, 0, 0, 0, 0, '2025-12-05 01:15:21', '2025-12-05 01:15:21'), +(0, 2025, 11, '2025-11-22', 4, 4, 0, 0, 4, 0, 0, 0, 0, 32.00, 4, 0, 0, 0, 0, '2025-12-05 01:15:22', '2025-12-05 01:15:22'), +(0, 2025, 11, '2025-11-22', 5, 5, 0, 0, 5, 0, 0, 0, 0, 40.00, 5, 0, 0, 0, 0, '2025-12-05 01:15:22', '2025-12-05 01:15:22'), +(0, 2025, 11, '2025-11-22', 6, 6, 0, 0, 6, 0, 0, 0, 0, 48.00, 6, 0, 0, 0, 0, '2025-12-05 01:15:22', '2025-12-05 01:15:22'), +(0, 2025, 11, '2025-11-22', 7, 7, 0, 0, 7, 0, 0, 0, 0, 56.00, 7, 0, 0, 0, 0, '2025-12-05 01:15:22', '2025-12-05 01:15:22'), +(0, 2025, 11, '2025-11-24', 7, 7, 0, 3, 2, 0, 0, 2, 0, 44.00, 9, 2, 1, 1, 0, '2025-12-05 01:21:20', '2025-12-05 01:21:20'), +(0, 2025, 11, '2025-11-24', 8, 8, 0, 3, 2, 0, 0, 3, 0, 52.00, 11, 3, 1, 1, 0, '2025-12-05 01:21:20', '2025-12-05 01:21:20'), +(0, 2025, 11, '2025-11-24', 9, 9, 0, 4, 2, 0, 0, 3, 0, 56.00, 12, 3, 1, 1, 0, '2025-12-05 01:21:20', '2025-12-05 01:21:20'), +(0, 2025, 11, '2025-11-24', 10, 10, 0, 4, 2, 0, 0, 4, 0, 64.00, 14, 4, 1, 1, 0, '2025-12-05 01:21:20', '2025-12-05 01:21:20'), +(0, 2025, 11, '2025-11-24', 11, 11, 0, 5, 2, 0, 0, 4, 0, 68.00, 15, 4, 1, 1, 0, '2025-12-05 01:21:20', '2025-12-05 01:21:20'), +(0, 2025, 11, '2025-11-24', 12, 12, 0, 5, 2, 0, 0, 5, 0, 76.00, 17, 5, 1, 1, 0, '2025-12-05 01:21:20', '2025-12-05 01:21:20'), +(0, 2025, 11, '2025-11-24', 13, 13, 0, 6, 2, 0, 0, 5, 0, 80.00, 18, 5, 1, 1, 0, '2025-12-05 01:21:20', '2025-12-05 01:21:20'), +(0, 2025, 11, '2025-11-24', 14, 14, 0, 6, 2, 0, 0, 6, 0, 88.00, 20, 6, 1, 1, 0, '2025-12-05 01:21:20', '2025-12-05 01:21:20'), +(0, 2025, 11, '2025-11-25', 9, 9, 0, 0, 5, 2, 1, 4, 0, 76.00, 15, 6, 0, 1, 0, '2025-12-05 01:21:59', '2025-12-05 01:21:59'), +(0, 2025, 11, '2025-11-25', 10, 10, 0, 0, 6, 2, 2, 4, 0, 84.00, 17, 6, 0, 1, 0, '2025-12-05 01:21:59', '2025-12-05 01:21:59'), +(0, 2025, 11, '2025-11-25', 11, 11, 0, 1, 6, 2, 2, 4, 0, 88.00, 18, 6, 1, 1, 0, '2025-12-05 01:22:49', '2025-12-05 01:22:49'), +(0, 2025, 11, '2025-11-25', 12, 12, 0, 1, 6, 2, 2, 5, 0, 94.00, 20, 7, 1, 1, 0, '2025-12-05 01:22:49', '2025-12-05 01:22:49'), +(0, 2025, 11, '2025-11-25', 13, 13, 0, 1, 6, 2, 2, 6, 0, 104.00, 23, 9, 1, 1, 0, '2025-12-05 01:22:49', '2025-12-05 01:22:49'), +(0, 2025, 11, '2025-11-25', 14, 14, 0, 2, 6, 2, 2, 6, 0, 108.00, 24, 9, 1, 1, 0, '2025-12-05 01:22:49', '2025-12-05 01:22:49'), +(0, 2025, 11, '2025-11-25', 15, 15, 0, 2, 6, 2, 2, 7, 0, 114.00, 26, 10, 1, 1, 0, '2025-12-05 01:22:49', '2025-12-05 01:22:49'), +(0, 2025, 11, '2025-11-25', 16, 16, 0, 2, 6, 2, 2, 8, 0, 124.00, 29, 12, 1, 1, 0, '2025-12-05 01:22:49', '2025-12-05 01:22:49'), +(0, 2025, 11, '2025-11-25', 17, 17, 0, 3, 6, 2, 2, 8, 0, 128.00, 30, 12, 1, 1, 0, '2025-12-05 01:22:49', '2025-12-05 01:22:49'), +(0, 2025, 11, '2025-11-25', 18, 18, 0, 3, 6, 2, 2, 9, 0, 134.00, 32, 13, 1, 1, 0, '2025-12-05 01:22:49', '2025-12-05 01:22:49'), +(0, 2025, 11, '2025-11-25', 19, 19, 0, 3, 6, 2, 2, 10, 0, 144.00, 35, 15, 1, 1, 0, '2025-12-05 01:22:49', '2025-12-05 01:22:49'), +(0, 2025, 11, '2025-11-26', 4, 4, 0, 1, 3, 0, 0, 0, 0, 28.00, 4, 0, 1, 0, 0, '2025-12-05 01:23:32', '2025-12-05 01:23:32'), +(0, 2025, 11, '2025-11-26', 5, 5, 0, 1, 3, 0, 0, 1, 0, 36.00, 6, 1, 1, 1, 0, '2025-12-05 01:23:32', '2025-12-05 01:23:32'), +(0, 2025, 11, '2025-11-26', 6, 6, 0, 2, 3, 0, 0, 1, 0, 40.00, 7, 1, 1, 1, 0, '2025-12-05 01:23:32', '2025-12-05 01:23:32'), +(0, 2025, 11, '2025-11-26', 7, 7, 0, 2, 3, 0, 0, 2, 0, 48.00, 9, 2, 1, 1, 0, '2025-12-05 01:23:32', '2025-12-05 01:23:32'), +(0, 2025, 11, '2025-11-26', 8, 8, 0, 3, 3, 0, 0, 2, 0, 52.00, 10, 2, 1, 1, 0, '2025-12-05 01:23:32', '2025-12-05 01:23:32'), +(0, 2025, 11, '2025-11-26', 9, 9, 0, 3, 3, 0, 0, 3, 0, 60.00, 12, 3, 1, 1, 0, '2025-12-05 01:23:32', '2025-12-05 01:23:32'), +(0, 2025, 11, '2025-11-26', 10, 10, 0, 4, 3, 0, 0, 3, 0, 64.00, 13, 3, 1, 1, 0, '2025-12-05 01:23:32', '2025-12-05 01:23:32'), +(0, 2025, 11, '2025-11-26', 11, 11, 0, 4, 3, 0, 0, 4, 0, 72.00, 15, 4, 1, 1, 0, '2025-12-05 01:23:32', '2025-12-05 01:23:32'), +(0, 2025, 11, '2025-11-26', 12, 12, 0, 5, 3, 0, 0, 4, 0, 76.00, 16, 4, 1, 1, 0, '2025-12-05 01:23:32', '2025-12-05 01:23:32'), +(0, 2025, 11, '2025-11-26', 13, 13, 0, 5, 3, 0, 0, 5, 0, 84.00, 18, 5, 1, 1, 0, '2025-12-05 01:23:32', '2025-12-05 01:23:32'), +(0, 2025, 11, '2025-11-26', 14, 14, 0, 6, 3, 0, 0, 5, 0, 88.00, 19, 5, 1, 1, 0, '2025-12-05 01:23:32', '2025-12-05 01:23:32'), +(0, 2025, 11, '2025-11-26', 15, 15, 0, 6, 3, 0, 0, 6, 0, 96.00, 21, 6, 1, 1, 0, '2025-12-05 01:23:32', '2025-12-05 01:23:32'), +(0, 2025, 11, '2025-11-27', 6, 6, 0, 1, 5, 4, 0, 0, 0, 54.00, 7, 0, 1, 0, 0, '2025-12-05 01:24:00', '2025-12-05 01:24:00'), +(0, 2025, 11, '2025-11-27', 7, 7, 0, 1, 6, 5, 0, 0, 0, 64.00, 8, 0, 1, 0, 0, '2025-12-05 01:24:26', '2025-12-05 01:24:26'), +(0, 2025, 11, '2025-11-27', 8, 8, 0, 1, 7, 6, 0, 0, 0, 74.00, 9, 0, 1, 0, 0, '2025-12-05 01:24:26', '2025-12-05 01:24:26'), +(0, 2025, 11, '2025-11-27', 9, 9, 0, 1, 8, 7, 0, 0, 0, 84.00, 10, 0, 1, 0, 0, '2025-12-05 01:24:26', '2025-12-05 01:24:26'), +(0, 2025, 11, '2025-11-27', 10, 10, 0, 1, 9, 8, 0, 0, 0, 94.00, 11, 0, 1, 0, 0, '2025-12-05 01:24:26', '2025-12-05 01:24:26'), +(0, 2025, 11, '2025-11-28', 5, 5, 0, 0, 5, 0, 2, 0, 0, 34.00, 6, 0, 0, 0, 0, '2025-12-05 01:24:50', '2025-12-05 01:24:50'), +(0, 2025, 11, '2025-11-28', 6, 6, 0, 0, 6, 0, 3, 0, 0, 42.00, 7, 0, 0, 0, 0, '2025-12-05 01:24:50', '2025-12-05 01:24:50'), +(0, 2025, 11, '2025-11-28', 7, 7, 0, 0, 7, 0, 3, 0, 0, 50.00, 8, 0, 0, 0, 0, '2025-12-05 01:25:17', '2025-12-05 01:25:17'), +(0, 2025, 11, '2025-11-28', 8, 8, 0, 0, 8, 0, 3, 0, 0, 58.00, 9, 0, 0, 0, 0, '2025-12-05 01:25:17', '2025-12-05 01:25:17'), +(0, 2025, 11, '2025-11-28', 9, 9, 0, 0, 9, 0, 3, 0, 0, 66.00, 10, 0, 0, 0, 0, '2025-12-05 01:25:17', '2025-12-05 01:25:17'), +(0, 2025, 11, '2025-11-28', 10, 10, 0, 0, 10, 0, 3, 0, 0, 74.00, 11, 0, 0, 0, 0, '2025-12-05 01:25:17', '2025-12-05 01:25:17'), +(0, 2025, 11, '2025-11-05', 22, 20, 2, 6, 2, 0, 0, 12, 0, 130.00, 38, 18, 1, 1, 0, '2025-12-05 01:26:26', '2025-12-05 01:26:26'), +(0, 2025, 11, '2025-11-07', 21, 19, 2, 1, 13, 2, 0, 0, 5, 208.00, 33, 0, 1, 0, 1, '2025-12-05 01:27:02', '2025-12-05 01:27:02'), +(0, 2025, 11, '2025-11-07', 22, 20, 2, 1, 14, 2, 0, 0, 5, 216.00, 35, 0, 1, 0, 1, '2025-12-05 01:27:04', '2025-12-05 01:27:04'), +(0, 2025, 11, '2025-11-07', 23, 21, 2, 1, 14, 2, 0, 0, 6, 232.00, 38, 0, 1, 0, 1, '2025-12-05 01:27:10', '2025-12-05 01:27:10'), +(0, 2025, 11, '2025-11-07', 24, 22, 2, 1, 15, 2, 0, 0, 6, 240.00, 40, 0, 1, 0, 1, '2025-12-05 01:27:13', '2025-12-05 01:27:13'), +(0, 2025, 11, '2025-11-13', 11, 11, 0, 1, 10, 9, 1, 0, 0, 102.00, 12, 0, 1, 0, 0, '2025-12-05 01:28:08', '2025-12-05 01:28:08'), +(0, 2025, 11, '2025-11-17', 16, 16, 0, 6, 4, 0, 1, 6, 0, 110.00, 22, 6, 1, 1, 0, '2025-12-05 01:28:40', '2025-12-05 01:28:40'), +(0, 2025, 11, '2025-11-17', 17, 16, 1, 6, 4, 0, 1, 6, 0, 110.00, 22, 6, 1, 1, 0, '2025-12-05 01:29:07', '2025-12-05 01:29:07'), +(0, 2025, 11, '2025-11-17', 18, 17, 1, 7, 4, 0, 1, 6, 0, 116.00, 23, 6, 1, 1, 0, '2025-12-05 01:30:38', '2025-12-05 01:30:38'), +(0, 2025, 11, '2025-11-17', 19, 18, 1, 7, 5, 0, 2, 6, 0, 124.00, 25, 6, 1, 1, 0, '2025-12-05 01:30:38', '2025-12-05 01:30:38'), +(0, 2025, 11, '2025-11-21', 17, 17, 0, 7, 3, 0, 1, 7, 0, 108.00, 24, 7, 1, 1, 0, '2025-12-05 01:31:07', '2025-12-05 01:31:07'), +(0, 2025, 11, '2025-11-24', 15, 15, 0, 6, 3, 0, 1, 6, 0, 96.00, 21, 6, 1, 1, 0, '2025-12-05 01:31:34', '2025-12-05 01:31:34'), +(0, 2025, 11, '2025-11-24', 16, 16, 0, 6, 4, 0, 2, 6, 0, 104.00, 22, 6, 1, 1, 0, '2025-12-05 01:31:40', '2025-12-05 01:31:40'), +(0, 2025, 11, '2025-11-25', 20, 20, 0, 3, 7, 2, 3, 10, 0, 152.00, 36, 15, 1, 1, 0, '2025-12-05 01:31:53', '2025-12-05 01:31:53'), +(0, 2025, 11, '2025-11-29', 10, 9, 1, 1, 8, 0, 1, 0, 0, 61.00, 9, 0, 1, 0, 0, '2025-12-05 01:32:29', '2025-12-05 01:32:29'), +(0, 2025, 12, '2025-12-05', 1, 1, 0, 0, 1, 0, 0, 0, 0, 8.00, 1, 0, 0, 0, 0, '2025-12-05 06:53:42', '2025-12-05 06:53:42'), +(0, 2025, 12, '2025-12-05', 2, 2, 0, 0, 2, 0, 0, 0, 0, 16.00, 2, 0, 0, 0, 0, '2025-12-05 06:53:42', '2025-12-05 06:53:42'), +(0, 2025, 12, '2025-12-05', 3, 3, 0, 0, 3, 0, 0, 0, 0, 24.00, 3, 0, 0, 0, 0, '2025-12-05 06:53:43', '2025-12-05 06:53:43'), +(0, 2025, 12, '2025-12-05', 4, 4, 0, 0, 4, 0, 0, 0, 0, 32.00, 4, 0, 0, 0, 0, '2025-12-05 06:53:43', '2025-12-05 06:53:43'), +(0, 2025, 12, '2025-12-06', 1, 1, 0, 0, 1, 0, 0, 0, 0, 8.00, 1, 0, 0, 0, 0, '2025-12-06 05:46:14', '2025-12-06 05:46:14'), +(0, 2025, 12, '2025-12-06', 2, 2, 0, 0, 2, 0, 0, 0, 0, 16.00, 2, 0, 0, 0, 0, '2025-12-06 05:46:14', '2025-12-06 05:46:14'), +(0, 2025, 12, '2025-12-06', 3, 3, 0, 0, 3, 0, 0, 0, 0, 24.00, 3, 0, 0, 0, 0, '2025-12-06 05:46:14', '2025-12-06 05:46:14'), +(0, 2025, 12, '2025-12-06', 4, 4, 0, 0, 4, 0, 0, 0, 0, 32.00, 4, 0, 0, 0, 0, '2025-12-06 05:46:14', '2025-12-06 05:46:14'), +(0, 2025, 12, '2025-12-08', 1, 1, 0, 1, 0, 0, 0, 0, 0, 4.00, 1, 0, 1, 0, 0, '2025-12-09 07:33:48', '2025-12-09 07:33:48'), +(0, 2025, 12, '2025-12-08', 2, 2, 0, 1, 1, 0, 0, 0, 0, 12.00, 3, 0, 1, 0, 0, '2025-12-09 07:33:48', '2025-12-09 07:33:48'), +(0, 2025, 12, '2025-12-08', 3, 3, 0, 2, 1, 0, 0, 0, 0, 16.00, 4, 0, 1, 0, 0, '2025-12-09 07:33:48', '2025-12-09 07:33:48'), +(0, 2025, 12, '2025-12-08', 4, 4, 0, 2, 2, 0, 0, 0, 0, 24.00, 6, 0, 1, 0, 0, '2025-12-09 07:33:48', '2025-12-09 07:33:48'), +(0, 2025, 12, '2025-12-08', 5, 5, 0, 3, 2, 0, 0, 0, 0, 28.00, 7, 0, 1, 0, 0, '2025-12-09 07:33:48', '2025-12-09 07:33:48'), +(0, 2025, 12, '2025-12-08', 6, 6, 0, 3, 3, 0, 0, 0, 0, 36.00, 9, 0, 1, 0, 0, '2025-12-09 07:33:48', '2025-12-09 07:33:48'), +(0, 2025, 12, '2025-12-08', 7, 7, 0, 4, 3, 0, 0, 0, 0, 40.00, 10, 0, 1, 0, 0, '2025-12-09 07:33:48', '2025-12-09 07:33:48'), +(0, 2025, 12, '2025-12-08', 8, 8, 0, 4, 4, 0, 0, 0, 0, 48.00, 12, 0, 1, 0, 0, '2025-12-09 07:33:48', '2025-12-09 07:33:48'), +(0, 2025, 12, '2025-12-08', 9, 9, 0, 4, 5, 0, 0, 0, 0, 56.00, 13, 0, 1, 0, 0, '2025-12-09 07:34:05', '2025-12-09 07:34:05'), +(0, 2025, 12, '2025-12-08', 10, 10, 0, 4, 6, 0, 0, 0, 0, 64.00, 14, 0, 1, 0, 0, '2025-12-09 07:34:05', '2025-12-09 07:34:05'), +(0, 2025, 12, '2025-12-08', 11, 11, 0, 4, 7, 0, 0, 0, 0, 72.00, 15, 0, 1, 0, 0, '2025-12-09 07:34:05', '2025-12-09 07:34:05'), +(0, 2025, 12, '2025-12-08', 12, 12, 0, 4, 8, 0, 0, 0, 0, 80.00, 16, 0, 1, 0, 0, '2025-12-09 07:34:06', '2025-12-09 07:34:06'), +(0, 2025, 12, '2025-12-08', 13, 13, 0, 4, 9, 0, 0, 0, 0, 88.00, 17, 0, 1, 0, 0, '2025-12-09 07:34:36', '2025-12-09 07:34:36'), +(0, 2025, 12, '2025-12-08', 14, 14, 0, 4, 9, 0, 0, 0, 1, 104.00, 19, 0, 1, 0, 1, '2025-12-09 07:34:38', '2025-12-09 07:34:38'), +(0, 2025, 12, '2025-12-08', 15, 15, 0, 4, 10, 0, 0, 0, 1, 112.00, 20, 0, 1, 0, 1, '2025-12-09 07:34:43', '2025-12-09 07:34:43'), +(0, 2025, 12, '2025-12-10', 1, 1, 0, 0, 1, 0, 0, 0, 0, 8.00, 1, 0, 0, 0, 0, '2025-12-10 06:56:21', '2025-12-10 06:56:21'), +(0, 2025, 12, '2025-12-10', 2, 2, 0, 0, 2, 0, 0, 0, 0, 16.00, 2, 0, 0, 0, 0, '2025-12-10 06:56:21', '2025-12-10 06:56:21'), +(0, 2025, 12, '2025-12-10', 3, 3, 0, 0, 3, 0, 0, 0, 0, 24.00, 3, 0, 0, 0, 0, '2025-12-10 06:56:21', '2025-12-10 06:56:21'), +(0, 2025, 12, '2025-12-10', 4, 4, 0, 0, 4, 0, 0, 0, 0, 32.00, 4, 0, 0, 0, 0, '2025-12-10 06:56:21', '2025-12-10 06:56:21'); + +-- -------------------------------------------------------- + +-- +-- 테이블 구조 `monthly_worker_status` +-- + +CREATE TABLE `monthly_worker_status` ( + `id` int NOT NULL, + `year` int NOT NULL COMMENT '연도', + `month` int NOT NULL COMMENT '월 (1-12)', + `worker_id` int NOT NULL COMMENT '작업자 ID', + `date` date NOT NULL COMMENT '날짜', + `total_work_hours` decimal(5,2) DEFAULT '0.00' COMMENT '총 작업시간', + `actual_work_hours` decimal(5,2) DEFAULT '0.00' COMMENT '실제 작업시간 (휴가 제외)', + `vacation_hours` decimal(5,2) DEFAULT '0.00' COMMENT '휴가 시간', + `total_work_count` int DEFAULT '0' COMMENT '총 작업 건수', + `regular_work_count` int DEFAULT '0' COMMENT '정규 작업 건수', + `error_work_count` int DEFAULT '0' COMMENT '오류 작업 건수', + `work_status` enum('incomplete','partial','complete','overtime','vacation-full','vacation-half','vacation-quarter','vacation-half-half','error','overtime-warning') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'incomplete' COMMENT '작업 상태', + `has_vacation` tinyint(1) DEFAULT '0' COMMENT '휴가 여부', + `has_error` tinyint(1) DEFAULT '0' COMMENT '오류 여부', + `has_issues` tinyint(1) DEFAULT '0' COMMENT '문제 여부 (미입력/부분입력)', + `last_updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='월별 작업자 상태 집계 테이블'; + +-- +-- 테이블의 덤프 데이터 `monthly_worker_status` +-- + +INSERT INTO `monthly_worker_status` (`id`, `year`, `month`, `worker_id`, `date`, `total_work_hours`, `actual_work_hours`, `vacation_hours`, `total_work_count`, `regular_work_count`, `error_work_count`, `work_status`, `has_vacation`, `has_error`, `has_issues`, `last_updated`, `created_at`) VALUES +(880, 2025, 6, 1, '2025-06-02', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(881, 2025, 6, 2, '2025-06-02', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(882, 2025, 6, 3, '2025-06-02', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(883, 2025, 6, 4, '2025-06-02', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(884, 2025, 6, 6, '2025-06-02', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(885, 2025, 6, 7, '2025-06-02', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(886, 2025, 6, 9, '2025-06-02', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(887, 2025, 6, 1, '2025-06-04', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(888, 2025, 6, 2, '2025-06-04', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(889, 2025, 6, 3, '2025-06-04', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(890, 2025, 6, 5, '2025-06-04', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(891, 2025, 6, 6, '2025-06-04', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(892, 2025, 6, 7, '2025-06-04', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(893, 2025, 6, 8, '2025-06-04', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(894, 2025, 6, 9, '2025-06-04', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(895, 2025, 6, 10, '2025-06-04', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(896, 2025, 6, 1, '2025-06-05', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(897, 2025, 6, 2, '2025-06-05', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(898, 2025, 6, 3, '2025-06-05', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(899, 2025, 6, 4, '2025-06-05', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(900, 2025, 6, 5, '2025-06-05', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(901, 2025, 6, 6, '2025-06-05', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(902, 2025, 6, 7, '2025-06-05', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(903, 2025, 6, 8, '2025-06-05', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(904, 2025, 6, 9, '2025-06-05', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(905, 2025, 6, 10, '2025-06-05', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(906, 2025, 6, 1, '2025-06-16', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(907, 2025, 6, 2, '2025-06-16', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(908, 2025, 6, 3, '2025-06-16', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(909, 2025, 6, 4, '2025-06-16', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(910, 2025, 6, 5, '2025-06-16', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(911, 2025, 6, 6, '2025-06-16', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(912, 2025, 6, 8, '2025-06-16', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(913, 2025, 6, 9, '2025-06-16', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(914, 2025, 6, 10, '2025-06-16', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(915, 2025, 6, 1, '2025-06-17', 10.00, 10.00, 0.00, 3, 2, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(916, 2025, 6, 2, '2025-06-17', 10.00, 10.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(917, 2025, 6, 3, '2025-06-17', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(918, 2025, 6, 4, '2025-06-17', 10.00, 10.00, 0.00, 3, 2, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(919, 2025, 6, 5, '2025-06-17', 10.00, 10.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(920, 2025, 6, 6, '2025-06-17', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(921, 2025, 6, 8, '2025-06-17', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(922, 2025, 6, 9, '2025-06-17', 10.00, 10.00, 0.00, 3, 2, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(923, 2025, 6, 10, '2025-06-17', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(924, 2025, 6, 1, '2025-06-18', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(925, 2025, 6, 2, '2025-06-18', 10.00, 10.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(926, 2025, 6, 3, '2025-06-18', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(927, 2025, 6, 4, '2025-06-18', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(928, 2025, 6, 5, '2025-06-18', 10.00, 10.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(929, 2025, 6, 6, '2025-06-18', 10.00, 10.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(930, 2025, 6, 7, '2025-06-18', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(931, 2025, 6, 8, '2025-06-18', 10.00, 10.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(932, 2025, 6, 9, '2025-06-18', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(933, 2025, 6, 10, '2025-06-18', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(934, 2025, 6, 1, '2025-06-19', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(935, 2025, 6, 2, '2025-06-19', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(936, 2025, 6, 3, '2025-06-19', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(937, 2025, 6, 4, '2025-06-19', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(938, 2025, 6, 5, '2025-06-19', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(939, 2025, 6, 6, '2025-06-19', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(940, 2025, 6, 7, '2025-06-19', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(941, 2025, 6, 8, '2025-06-19', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(942, 2025, 6, 9, '2025-06-19', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(943, 2025, 6, 10, '2025-06-19', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(944, 2025, 6, 1, '2025-06-20', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(945, 2025, 6, 3, '2025-06-20', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(946, 2025, 6, 4, '2025-06-20', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(947, 2025, 6, 5, '2025-06-20', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(948, 2025, 6, 6, '2025-06-20', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(949, 2025, 6, 7, '2025-06-20', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(950, 2025, 6, 9, '2025-06-20', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(951, 2025, 6, 10, '2025-06-20', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(952, 2025, 6, 1, '2025-06-23', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(953, 2025, 6, 3, '2025-06-23', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(954, 2025, 6, 4, '2025-06-23', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(955, 2025, 6, 5, '2025-06-23', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(956, 2025, 6, 6, '2025-06-23', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(957, 2025, 6, 7, '2025-06-23', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(958, 2025, 6, 9, '2025-06-23', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(959, 2025, 6, 10, '2025-06-23', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(960, 2025, 6, 1, '2025-06-24', 12.00, 12.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(961, 2025, 6, 2, '2025-06-24', 12.00, 12.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(962, 2025, 6, 3, '2025-06-24', 12.00, 12.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(963, 2025, 6, 4, '2025-06-24', 12.00, 12.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(964, 2025, 6, 5, '2025-06-24', 12.00, 12.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(965, 2025, 6, 6, '2025-06-24', 12.00, 12.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(966, 2025, 6, 7, '2025-06-24', 12.00, 12.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(967, 2025, 6, 8, '2025-06-24', 12.00, 12.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(968, 2025, 6, 9, '2025-06-24', 12.00, 12.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(969, 2025, 6, 10, '2025-06-24', 12.00, 12.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(970, 2025, 6, 2, '2025-06-25', 12.00, 12.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(971, 2025, 6, 3, '2025-06-25', 12.00, 12.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(972, 2025, 6, 6, '2025-06-25', 12.00, 12.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(973, 2025, 6, 8, '2025-06-25', 12.00, 12.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(974, 2025, 6, 9, '2025-06-25', 12.00, 12.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(975, 2025, 6, 10, '2025-06-25', 12.00, 12.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(976, 2025, 6, 1, '2025-06-26', 12.00, 12.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(977, 2025, 6, 2, '2025-06-26', 12.00, 12.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(978, 2025, 6, 3, '2025-06-26', 12.00, 12.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(979, 2025, 6, 4, '2025-06-26', 12.00, 12.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(980, 2025, 6, 5, '2025-06-26', 12.00, 12.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(981, 2025, 6, 6, '2025-06-26', 12.00, 12.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(982, 2025, 6, 7, '2025-06-26', 12.00, 12.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(983, 2025, 6, 8, '2025-06-26', 12.00, 12.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(984, 2025, 6, 9, '2025-06-26', 12.00, 12.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(985, 2025, 6, 10, '2025-06-26', 12.00, 12.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(986, 2025, 6, 1, '2025-06-27', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(987, 2025, 6, 2, '2025-06-27', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(988, 2025, 6, 3, '2025-06-27', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(989, 2025, 6, 4, '2025-06-27', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(990, 2025, 6, 5, '2025-06-27', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(991, 2025, 6, 6, '2025-06-27', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(992, 2025, 6, 7, '2025-06-27', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(993, 2025, 6, 8, '2025-06-27', 6.00, 6.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(994, 2025, 6, 9, '2025-06-27', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(995, 2025, 6, 10, '2025-06-27', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(996, 2025, 6, 2, '2025-06-30', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(997, 2025, 6, 3, '2025-06-30', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(998, 2025, 6, 6, '2025-06-30', 4.00, 4.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(999, 2025, 6, 8, '2025-06-30', 6.00, 6.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1000, 2025, 7, 1, '2025-07-01', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1001, 2025, 7, 2, '2025-07-01', 12.00, 12.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1002, 2025, 7, 3, '2025-07-01', 12.00, 12.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1003, 2025, 7, 4, '2025-07-01', 12.00, 12.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1004, 2025, 7, 5, '2025-07-01', 12.00, 12.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1005, 2025, 7, 6, '2025-07-01', 12.00, 12.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1006, 2025, 7, 7, '2025-07-01', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1007, 2025, 7, 8, '2025-07-01', 12.00, 12.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1008, 2025, 7, 9, '2025-07-01', 12.00, 12.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1009, 2025, 7, 10, '2025-07-01', 12.00, 12.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1010, 2025, 7, 1, '2025-07-02', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1011, 2025, 7, 2, '2025-07-02', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1012, 2025, 7, 3, '2025-07-02', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1013, 2025, 7, 4, '2025-07-02', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1014, 2025, 7, 5, '2025-07-02', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1015, 2025, 7, 6, '2025-07-02', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1016, 2025, 7, 7, '2025-07-02', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1017, 2025, 7, 8, '2025-07-02', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1018, 2025, 7, 9, '2025-07-02', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1019, 2025, 7, 10, '2025-07-02', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1020, 2025, 7, 1, '2025-07-03', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1021, 2025, 7, 2, '2025-07-03', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1022, 2025, 7, 3, '2025-07-03', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1023, 2025, 7, 4, '2025-07-03', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1024, 2025, 7, 5, '2025-07-03', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1025, 2025, 7, 6, '2025-07-03', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1026, 2025, 7, 7, '2025-07-03', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1027, 2025, 7, 8, '2025-07-03', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1028, 2025, 7, 9, '2025-07-03', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1029, 2025, 7, 10, '2025-07-03', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1030, 2025, 7, 1, '2025-07-04', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1031, 2025, 7, 2, '2025-07-04', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1032, 2025, 7, 3, '2025-07-04', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1033, 2025, 7, 4, '2025-07-04', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1034, 2025, 7, 5, '2025-07-04', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1035, 2025, 7, 6, '2025-07-04', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1036, 2025, 7, 7, '2025-07-04', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1037, 2025, 7, 8, '2025-07-04', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1038, 2025, 7, 9, '2025-07-04', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1039, 2025, 7, 10, '2025-07-04', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1040, 2025, 7, 1, '2025-07-05', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1041, 2025, 7, 2, '2025-07-05', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1042, 2025, 7, 3, '2025-07-05', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1043, 2025, 7, 4, '2025-07-05', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1044, 2025, 7, 5, '2025-07-05', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1045, 2025, 7, 8, '2025-07-05', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1046, 2025, 7, 1, '2025-07-06', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1047, 2025, 7, 2, '2025-07-06', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1048, 2025, 7, 3, '2025-07-06', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1049, 2025, 7, 4, '2025-07-06', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1050, 2025, 7, 6, '2025-07-06', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1051, 2025, 7, 7, '2025-07-06', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1052, 2025, 7, 9, '2025-07-06', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1053, 2025, 7, 10, '2025-07-06', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1054, 2025, 7, 1, '2025-07-07', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1055, 2025, 7, 2, '2025-07-07', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1056, 2025, 7, 3, '2025-07-07', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1057, 2025, 7, 4, '2025-07-07', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1058, 2025, 7, 5, '2025-07-07', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1059, 2025, 7, 6, '2025-07-07', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1060, 2025, 7, 7, '2025-07-07', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1061, 2025, 7, 8, '2025-07-07', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1062, 2025, 7, 9, '2025-07-07', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1063, 2025, 7, 10, '2025-07-07', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1064, 2025, 7, 1, '2025-07-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1065, 2025, 7, 2, '2025-07-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1066, 2025, 7, 3, '2025-07-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1067, 2025, 7, 4, '2025-07-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1068, 2025, 7, 5, '2025-07-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1069, 2025, 7, 6, '2025-07-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1070, 2025, 7, 7, '2025-07-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1071, 2025, 7, 8, '2025-07-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1072, 2025, 7, 9, '2025-07-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1073, 2025, 7, 10, '2025-07-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1074, 2025, 7, 1, '2025-07-09', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1075, 2025, 7, 2, '2025-07-09', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1076, 2025, 7, 3, '2025-07-09', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1077, 2025, 7, 4, '2025-07-09', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1078, 2025, 7, 5, '2025-07-09', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1079, 2025, 7, 6, '2025-07-09', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1080, 2025, 7, 7, '2025-07-09', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1081, 2025, 7, 8, '2025-07-09', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1082, 2025, 7, 9, '2025-07-09', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1083, 2025, 7, 10, '2025-07-09', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1084, 2025, 7, 1, '2025-07-10', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1085, 2025, 7, 2, '2025-07-10', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1086, 2025, 7, 3, '2025-07-10', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1087, 2025, 7, 4, '2025-07-10', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1088, 2025, 7, 5, '2025-07-10', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1089, 2025, 7, 6, '2025-07-10', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1090, 2025, 7, 7, '2025-07-10', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1091, 2025, 7, 8, '2025-07-10', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1092, 2025, 7, 9, '2025-07-10', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1093, 2025, 7, 10, '2025-07-10', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1094, 2025, 7, 1, '2025-07-11', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1095, 2025, 7, 2, '2025-07-11', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1096, 2025, 7, 3, '2025-07-11', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1097, 2025, 7, 4, '2025-07-11', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1098, 2025, 7, 5, '2025-07-11', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1099, 2025, 7, 6, '2025-07-11', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1100, 2025, 7, 7, '2025-07-11', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1101, 2025, 7, 8, '2025-07-11', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1102, 2025, 7, 9, '2025-07-11', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1103, 2025, 7, 10, '2025-07-11', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1104, 2025, 7, 1, '2025-07-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1105, 2025, 7, 2, '2025-07-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1106, 2025, 7, 4, '2025-07-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1107, 2025, 7, 5, '2025-07-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1108, 2025, 7, 6, '2025-07-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1109, 2025, 7, 8, '2025-07-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1110, 2025, 7, 9, '2025-07-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1111, 2025, 7, 1, '2025-07-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1112, 2025, 7, 2, '2025-07-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1113, 2025, 7, 3, '2025-07-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1114, 2025, 7, 4, '2025-07-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1115, 2025, 7, 5, '2025-07-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1116, 2025, 7, 6, '2025-07-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1117, 2025, 7, 7, '2025-07-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1118, 2025, 7, 8, '2025-07-14', 6.00, 6.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1119, 2025, 7, 9, '2025-07-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1120, 2025, 7, 10, '2025-07-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1121, 2025, 7, 1, '2025-07-15', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1122, 2025, 7, 2, '2025-07-15', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1123, 2025, 7, 3, '2025-07-15', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1124, 2025, 7, 5, '2025-07-15', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1125, 2025, 7, 6, '2025-07-15', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1126, 2025, 7, 7, '2025-07-15', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1127, 2025, 7, 8, '2025-07-15', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1128, 2025, 7, 9, '2025-07-15', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1129, 2025, 7, 10, '2025-07-15', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1130, 2025, 7, 1, '2025-07-16', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1131, 2025, 7, 2, '2025-07-16', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1132, 2025, 7, 3, '2025-07-16', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1133, 2025, 7, 4, '2025-07-16', 8.00, 8.00, 0.00, 3, 3, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1134, 2025, 7, 5, '2025-07-16', 8.00, 8.00, 0.00, 3, 3, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1135, 2025, 7, 6, '2025-07-16', 8.00, 8.00, 0.00, 3, 3, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1136, 2025, 7, 7, '2025-07-16', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1137, 2025, 7, 8, '2025-07-16', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1138, 2025, 7, 9, '2025-07-16', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1139, 2025, 7, 10, '2025-07-16', 8.00, 8.00, 0.00, 3, 3, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1140, 2025, 7, 1, '2025-07-17', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1141, 2025, 7, 2, '2025-07-17', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1142, 2025, 7, 3, '2025-07-17', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1143, 2025, 7, 4, '2025-07-17', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1144, 2025, 7, 5, '2025-07-17', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1145, 2025, 7, 6, '2025-07-17', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1146, 2025, 7, 7, '2025-07-17', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1147, 2025, 7, 8, '2025-07-17', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1148, 2025, 7, 9, '2025-07-17', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1149, 2025, 7, 10, '2025-07-17', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1150, 2025, 7, 1, '2025-07-18', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1151, 2025, 7, 2, '2025-07-18', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1152, 2025, 7, 3, '2025-07-18', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1153, 2025, 7, 4, '2025-07-18', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1154, 2025, 7, 5, '2025-07-18', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1155, 2025, 7, 6, '2025-07-18', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1156, 2025, 7, 7, '2025-07-18', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1157, 2025, 7, 8, '2025-07-18', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1158, 2025, 7, 9, '2025-07-18', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1159, 2025, 7, 10, '2025-07-18', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1160, 2025, 7, 1, '2025-07-21', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1161, 2025, 7, 2, '2025-07-21', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1162, 2025, 7, 3, '2025-07-21', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1163, 2025, 7, 4, '2025-07-21', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1164, 2025, 7, 5, '2025-07-21', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1165, 2025, 7, 6, '2025-07-21', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1166, 2025, 7, 7, '2025-07-21', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1167, 2025, 7, 8, '2025-07-21', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1168, 2025, 7, 9, '2025-07-21', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1169, 2025, 7, 10, '2025-07-21', 6.00, 6.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1170, 2025, 7, 1, '2025-07-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1171, 2025, 7, 2, '2025-07-22', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1172, 2025, 7, 3, '2025-07-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1173, 2025, 7, 4, '2025-07-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1174, 2025, 7, 5, '2025-07-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1175, 2025, 7, 6, '2025-07-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1176, 2025, 7, 7, '2025-07-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1177, 2025, 7, 8, '2025-07-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1178, 2025, 7, 9, '2025-07-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1179, 2025, 7, 10, '2025-07-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1180, 2025, 7, 1, '2025-07-23', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1181, 2025, 7, 2, '2025-07-23', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1182, 2025, 7, 3, '2025-07-23', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1183, 2025, 7, 4, '2025-07-23', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1184, 2025, 7, 5, '2025-07-23', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1185, 2025, 7, 6, '2025-07-23', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1186, 2025, 7, 7, '2025-07-23', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1187, 2025, 7, 9, '2025-07-23', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1188, 2025, 7, 10, '2025-07-23', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1189, 2025, 7, 1, '2025-07-24', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1190, 2025, 7, 2, '2025-07-24', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1191, 2025, 7, 3, '2025-07-24', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1192, 2025, 7, 4, '2025-07-24', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1193, 2025, 7, 5, '2025-07-24', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1194, 2025, 7, 6, '2025-07-24', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1195, 2025, 7, 7, '2025-07-24', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1196, 2025, 7, 9, '2025-07-24', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1197, 2025, 7, 10, '2025-07-24', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1198, 2025, 7, 1, '2025-07-25', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1199, 2025, 7, 2, '2025-07-25', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1200, 2025, 7, 3, '2025-07-25', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1201, 2025, 7, 4, '2025-07-25', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1202, 2025, 7, 5, '2025-07-25', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1203, 2025, 7, 6, '2025-07-25', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1204, 2025, 7, 7, '2025-07-25', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1205, 2025, 7, 8, '2025-07-25', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1206, 2025, 7, 9, '2025-07-25', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1207, 2025, 7, 10, '2025-07-25', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1208, 2025, 7, 1, '2025-07-28', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1209, 2025, 7, 2, '2025-07-28', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1210, 2025, 7, 3, '2025-07-28', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1211, 2025, 7, 4, '2025-07-28', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1212, 2025, 7, 5, '2025-07-28', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1213, 2025, 7, 6, '2025-07-28', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1214, 2025, 7, 7, '2025-07-28', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1215, 2025, 7, 8, '2025-07-28', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1216, 2025, 7, 9, '2025-07-28', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1217, 2025, 7, 10, '2025-07-28', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1218, 2025, 7, 1, '2025-07-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1219, 2025, 7, 4, '2025-07-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1220, 2025, 7, 5, '2025-07-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1221, 2025, 7, 1, '2025-07-30', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1222, 2025, 7, 2, '2025-07-30', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1223, 2025, 7, 3, '2025-07-30', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1224, 2025, 7, 4, '2025-07-30', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1225, 2025, 7, 5, '2025-07-30', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1226, 2025, 7, 6, '2025-07-30', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1227, 2025, 7, 7, '2025-07-30', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1228, 2025, 7, 8, '2025-07-30', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1229, 2025, 7, 9, '2025-07-30', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1230, 2025, 7, 10, '2025-07-30', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1231, 2025, 7, 1, '2025-07-31', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1232, 2025, 7, 2, '2025-07-31', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1233, 2025, 7, 3, '2025-07-31', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1234, 2025, 7, 4, '2025-07-31', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1235, 2025, 7, 5, '2025-07-31', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1236, 2025, 7, 6, '2025-07-31', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1237, 2025, 7, 7, '2025-07-31', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1238, 2025, 7, 8, '2025-07-31', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1239, 2025, 7, 9, '2025-07-31', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1240, 2025, 7, 10, '2025-07-31', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1241, 2025, 8, 2, '2025-08-01', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1242, 2025, 8, 3, '2025-08-01', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1243, 2025, 8, 4, '2025-08-01', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1244, 2025, 8, 5, '2025-08-01', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1245, 2025, 8, 6, '2025-08-01', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1246, 2025, 8, 7, '2025-08-01', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1247, 2025, 8, 8, '2025-08-01', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1248, 2025, 8, 9, '2025-08-01', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1249, 2025, 8, 10, '2025-08-01', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1250, 2025, 8, 1, '2025-08-07', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1251, 2025, 8, 2, '2025-08-07', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1252, 2025, 8, 3, '2025-08-07', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1253, 2025, 8, 4, '2025-08-07', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1254, 2025, 8, 6, '2025-08-07', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1255, 2025, 8, 7, '2025-08-07', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1256, 2025, 8, 8, '2025-08-07', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1257, 2025, 8, 9, '2025-08-07', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1258, 2025, 8, 10, '2025-08-07', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1259, 2025, 8, 1, '2025-08-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1260, 2025, 8, 2, '2025-08-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1261, 2025, 8, 3, '2025-08-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1262, 2025, 8, 4, '2025-08-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1263, 2025, 8, 6, '2025-08-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1264, 2025, 8, 8, '2025-08-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1265, 2025, 8, 9, '2025-08-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1266, 2025, 8, 10, '2025-08-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1267, 2025, 8, 1, '2025-08-11', 16.00, 16.00, 0.00, 2, 2, 0, 'overtime-warning', 0, 0, 1, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1268, 2025, 8, 2, '2025-08-11', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1269, 2025, 8, 3, '2025-08-11', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1270, 2025, 8, 4, '2025-08-11', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1271, 2025, 8, 5, '2025-08-11', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1272, 2025, 8, 6, '2025-08-11', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1273, 2025, 8, 7, '2025-08-11', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1274, 2025, 8, 8, '2025-08-11', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'); +INSERT INTO `monthly_worker_status` (`id`, `year`, `month`, `worker_id`, `date`, `total_work_hours`, `actual_work_hours`, `vacation_hours`, `total_work_count`, `regular_work_count`, `error_work_count`, `work_status`, `has_vacation`, `has_error`, `has_issues`, `last_updated`, `created_at`) VALUES +(1275, 2025, 8, 10, '2025-08-11', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1276, 2025, 8, 1, '2025-08-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1277, 2025, 8, 3, '2025-08-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1278, 2025, 8, 4, '2025-08-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1279, 2025, 8, 5, '2025-08-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1280, 2025, 8, 7, '2025-08-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1281, 2025, 8, 8, '2025-08-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1282, 2025, 8, 9, '2025-08-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1283, 2025, 8, 10, '2025-08-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1284, 2025, 8, 1, '2025-08-13', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1285, 2025, 8, 2, '2025-08-13', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1286, 2025, 8, 3, '2025-08-13', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1287, 2025, 8, 4, '2025-08-13', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1288, 2025, 8, 5, '2025-08-13', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1289, 2025, 8, 6, '2025-08-13', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1290, 2025, 8, 7, '2025-08-13', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1291, 2025, 8, 8, '2025-08-13', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1292, 2025, 8, 9, '2025-08-13', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1293, 2025, 8, 10, '2025-08-13', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1294, 2025, 8, 1, '2025-08-14', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1295, 2025, 8, 2, '2025-08-14', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1296, 2025, 8, 4, '2025-08-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1297, 2025, 8, 5, '2025-08-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1298, 2025, 8, 6, '2025-08-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1299, 2025, 8, 7, '2025-08-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1300, 2025, 8, 8, '2025-08-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1301, 2025, 8, 9, '2025-08-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1302, 2025, 8, 10, '2025-08-14', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1303, 2025, 8, 1, '2025-08-18', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1304, 2025, 8, 2, '2025-08-18', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1305, 2025, 8, 3, '2025-08-18', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1306, 2025, 8, 4, '2025-08-18', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1307, 2025, 8, 5, '2025-08-18', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1308, 2025, 8, 6, '2025-08-18', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1309, 2025, 8, 7, '2025-08-18', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1310, 2025, 8, 8, '2025-08-18', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1311, 2025, 8, 9, '2025-08-18', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1312, 2025, 8, 10, '2025-08-18', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1313, 2025, 8, 1, '2025-08-19', 6.00, 6.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1314, 2025, 8, 2, '2025-08-19', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1315, 2025, 8, 3, '2025-08-19', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1316, 2025, 8, 4, '2025-08-19', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1317, 2025, 8, 5, '2025-08-19', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1318, 2025, 8, 6, '2025-08-19', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1319, 2025, 8, 7, '2025-08-19', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1320, 2025, 8, 8, '2025-08-19', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1321, 2025, 8, 9, '2025-08-19', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1322, 2025, 8, 10, '2025-08-19', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1323, 2025, 8, 1, '2025-08-20', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1324, 2025, 8, 2, '2025-08-20', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1325, 2025, 8, 3, '2025-08-20', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1326, 2025, 8, 4, '2025-08-20', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1327, 2025, 8, 5, '2025-08-20', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1328, 2025, 8, 6, '2025-08-20', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1329, 2025, 8, 7, '2025-08-20', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1330, 2025, 8, 8, '2025-08-20', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1331, 2025, 8, 9, '2025-08-20', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1332, 2025, 8, 10, '2025-08-20', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1333, 2025, 8, 1, '2025-08-21', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1334, 2025, 8, 2, '2025-08-21', 10.00, 10.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1335, 2025, 8, 3, '2025-08-21', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1336, 2025, 8, 4, '2025-08-21', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1337, 2025, 8, 5, '2025-08-21', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1338, 2025, 8, 6, '2025-08-21', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1339, 2025, 8, 7, '2025-08-21', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1340, 2025, 8, 8, '2025-08-21', 10.00, 10.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1341, 2025, 8, 9, '2025-08-21', 10.00, 10.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1342, 2025, 8, 10, '2025-08-21', 10.00, 10.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1343, 2025, 8, 1, '2025-08-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1344, 2025, 8, 2, '2025-08-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1345, 2025, 8, 3, '2025-08-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1346, 2025, 8, 4, '2025-08-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1347, 2025, 8, 5, '2025-08-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1348, 2025, 8, 6, '2025-08-22', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1349, 2025, 8, 7, '2025-08-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1350, 2025, 8, 8, '2025-08-22', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1351, 2025, 8, 9, '2025-08-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1352, 2025, 8, 10, '2025-08-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1353, 2025, 8, 1, '2025-08-23', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1354, 2025, 8, 2, '2025-08-23', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1355, 2025, 8, 3, '2025-08-23', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1356, 2025, 8, 4, '2025-08-23', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1357, 2025, 8, 5, '2025-08-23', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1358, 2025, 8, 6, '2025-08-23', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1359, 2025, 8, 8, '2025-08-23', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1360, 2025, 8, 9, '2025-08-23', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1361, 2025, 8, 10, '2025-08-23', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1362, 2025, 8, 1, '2025-08-25', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1363, 2025, 8, 2, '2025-08-25', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1364, 2025, 8, 3, '2025-08-25', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1365, 2025, 8, 4, '2025-08-25', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1366, 2025, 8, 5, '2025-08-25', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1367, 2025, 8, 6, '2025-08-25', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1368, 2025, 8, 7, '2025-08-25', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1369, 2025, 8, 8, '2025-08-25', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1370, 2025, 8, 9, '2025-08-25', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1371, 2025, 8, 10, '2025-08-25', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1372, 2025, 8, 1, '2025-08-26', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1373, 2025, 8, 2, '2025-08-26', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1374, 2025, 8, 3, '2025-08-26', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1375, 2025, 8, 4, '2025-08-26', 10.00, 10.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1376, 2025, 8, 5, '2025-08-26', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1377, 2025, 8, 6, '2025-08-26', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1378, 2025, 8, 7, '2025-08-26', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1379, 2025, 8, 8, '2025-08-26', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1380, 2025, 8, 9, '2025-08-26', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1381, 2025, 8, 10, '2025-08-26', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1382, 2025, 8, 1, '2025-08-27', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1383, 2025, 8, 2, '2025-08-27', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1384, 2025, 8, 3, '2025-08-27', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1385, 2025, 8, 4, '2025-08-27', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1386, 2025, 8, 5, '2025-08-27', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1387, 2025, 8, 6, '2025-08-27', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1388, 2025, 8, 7, '2025-08-27', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1389, 2025, 8, 8, '2025-08-27', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1390, 2025, 8, 9, '2025-08-27', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1391, 2025, 8, 10, '2025-08-27', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1392, 2025, 8, 1, '2025-08-28', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1393, 2025, 8, 2, '2025-08-28', 10.00, 10.00, 0.00, 3, 2, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1394, 2025, 8, 3, '2025-08-28', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1395, 2025, 8, 4, '2025-08-28', 10.00, 10.00, 0.00, 3, 3, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1396, 2025, 8, 5, '2025-08-28', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1397, 2025, 8, 6, '2025-08-28', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1398, 2025, 8, 7, '2025-08-28', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1399, 2025, 8, 8, '2025-08-28', 10.00, 10.00, 0.00, 3, 3, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1400, 2025, 8, 9, '2025-08-28', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1401, 2025, 8, 10, '2025-08-28', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1402, 2025, 8, 1, '2025-08-29', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1403, 2025, 8, 2, '2025-08-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1404, 2025, 8, 3, '2025-08-29', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1405, 2025, 8, 4, '2025-08-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1406, 2025, 8, 5, '2025-08-29', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1407, 2025, 8, 6, '2025-08-29', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1408, 2025, 8, 7, '2025-08-29', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1409, 2025, 8, 8, '2025-08-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1410, 2025, 8, 9, '2025-08-29', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1411, 2025, 8, 10, '2025-08-29', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1412, 2025, 8, 1, '2025-08-30', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1413, 2025, 8, 2, '2025-08-30', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1414, 2025, 8, 3, '2025-08-30', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1415, 2025, 8, 4, '2025-08-30', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1416, 2025, 8, 5, '2025-08-30', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1417, 2025, 8, 6, '2025-08-30', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1418, 2025, 8, 7, '2025-08-30', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1419, 2025, 8, 8, '2025-08-30', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1420, 2025, 8, 9, '2025-08-30', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1421, 2025, 8, 10, '2025-08-30', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1422, 2025, 9, 1, '2025-09-01', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1423, 2025, 9, 2, '2025-09-01', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1424, 2025, 9, 3, '2025-09-01', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1425, 2025, 9, 4, '2025-09-01', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1426, 2025, 9, 5, '2025-09-01', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1427, 2025, 9, 7, '2025-09-01', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1428, 2025, 9, 8, '2025-09-01', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1429, 2025, 9, 9, '2025-09-01', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1430, 2025, 9, 10, '2025-09-01', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1431, 2025, 9, 1, '2025-09-02', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1432, 2025, 9, 2, '2025-09-02', 10.00, 10.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1433, 2025, 9, 3, '2025-09-02', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1434, 2025, 9, 4, '2025-09-02', 10.00, 10.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1435, 2025, 9, 5, '2025-09-02', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1436, 2025, 9, 6, '2025-09-02', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1437, 2025, 9, 7, '2025-09-02', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1438, 2025, 9, 8, '2025-09-02', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1439, 2025, 9, 9, '2025-09-02', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1440, 2025, 9, 10, '2025-09-02', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1441, 2025, 9, 1, '2025-09-03', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1442, 2025, 9, 2, '2025-09-03', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1443, 2025, 9, 3, '2025-09-03', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1444, 2025, 9, 5, '2025-09-03', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1445, 2025, 9, 6, '2025-09-03', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1446, 2025, 9, 7, '2025-09-03', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1447, 2025, 9, 8, '2025-09-03', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1448, 2025, 9, 9, '2025-09-03', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1449, 2025, 9, 10, '2025-09-03', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1450, 2025, 9, 1, '2025-09-04', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1451, 2025, 9, 2, '2025-09-04', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1452, 2025, 9, 3, '2025-09-04', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1453, 2025, 9, 4, '2025-09-04', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1454, 2025, 9, 5, '2025-09-04', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1455, 2025, 9, 6, '2025-09-04', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1456, 2025, 9, 7, '2025-09-04', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1457, 2025, 9, 8, '2025-09-04', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1458, 2025, 9, 9, '2025-09-04', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1459, 2025, 9, 10, '2025-09-04', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1460, 2025, 9, 1, '2025-09-05', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1461, 2025, 9, 2, '2025-09-05', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1462, 2025, 9, 3, '2025-09-05', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1463, 2025, 9, 4, '2025-09-05', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1464, 2025, 9, 5, '2025-09-05', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1465, 2025, 9, 6, '2025-09-05', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1466, 2025, 9, 7, '2025-09-05', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1467, 2025, 9, 8, '2025-09-05', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1468, 2025, 9, 9, '2025-09-05', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1469, 2025, 9, 10, '2025-09-05', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1470, 2025, 9, 1, '2025-09-06', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1471, 2025, 9, 2, '2025-09-06', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1472, 2025, 9, 3, '2025-09-06', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1473, 2025, 9, 4, '2025-09-06', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1474, 2025, 9, 5, '2025-09-06', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1475, 2025, 9, 6, '2025-09-06', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1476, 2025, 9, 7, '2025-09-06', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1477, 2025, 9, 8, '2025-09-06', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1478, 2025, 9, 9, '2025-09-06', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1479, 2025, 9, 10, '2025-09-06', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1480, 2025, 9, 1, '2025-09-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1481, 2025, 9, 2, '2025-09-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1482, 2025, 9, 3, '2025-09-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1483, 2025, 9, 4, '2025-09-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1484, 2025, 9, 5, '2025-09-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1485, 2025, 9, 6, '2025-09-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1486, 2025, 9, 7, '2025-09-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1487, 2025, 9, 8, '2025-09-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1488, 2025, 9, 9, '2025-09-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1489, 2025, 9, 10, '2025-09-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1490, 2025, 9, 1, '2025-09-09', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1491, 2025, 9, 2, '2025-09-09', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1492, 2025, 9, 3, '2025-09-09', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1493, 2025, 9, 4, '2025-09-09', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1494, 2025, 9, 5, '2025-09-09', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1495, 2025, 9, 6, '2025-09-09', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1496, 2025, 9, 7, '2025-09-09', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1497, 2025, 9, 8, '2025-09-09', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1498, 2025, 9, 9, '2025-09-09', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1499, 2025, 9, 10, '2025-09-09', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1500, 2025, 9, 1, '2025-09-10', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1501, 2025, 9, 2, '2025-09-10', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1502, 2025, 9, 3, '2025-09-10', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1503, 2025, 9, 4, '2025-09-10', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1504, 2025, 9, 5, '2025-09-10', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1505, 2025, 9, 6, '2025-09-10', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1506, 2025, 9, 7, '2025-09-10', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1507, 2025, 9, 8, '2025-09-10', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1508, 2025, 9, 9, '2025-09-10', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1509, 2025, 9, 10, '2025-09-10', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1510, 2025, 9, 1, '2025-09-11', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1511, 2025, 9, 2, '2025-09-11', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1512, 2025, 9, 3, '2025-09-11', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1513, 2025, 9, 4, '2025-09-11', 8.00, 8.00, 0.00, 3, 3, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1514, 2025, 9, 5, '2025-09-11', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1515, 2025, 9, 6, '2025-09-11', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1516, 2025, 9, 7, '2025-09-11', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1517, 2025, 9, 8, '2025-09-11', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1518, 2025, 9, 9, '2025-09-11', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1519, 2025, 9, 10, '2025-09-11', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1520, 2025, 9, 1, '2025-09-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1521, 2025, 9, 2, '2025-09-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1522, 2025, 9, 3, '2025-09-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1523, 2025, 9, 4, '2025-09-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1524, 2025, 9, 5, '2025-09-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1525, 2025, 9, 6, '2025-09-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1526, 2025, 9, 7, '2025-09-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1527, 2025, 9, 8, '2025-09-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1528, 2025, 9, 9, '2025-09-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1529, 2025, 9, 10, '2025-09-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1530, 2025, 9, 1, '2025-09-13', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1531, 2025, 9, 2, '2025-09-13', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1532, 2025, 9, 3, '2025-09-13', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1533, 2025, 9, 4, '2025-09-13', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1534, 2025, 9, 5, '2025-09-13', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1535, 2025, 9, 6, '2025-09-13', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1536, 2025, 9, 7, '2025-09-13', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1537, 2025, 9, 8, '2025-09-13', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1538, 2025, 9, 10, '2025-09-13', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1539, 2025, 9, 1, '2025-09-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1540, 2025, 9, 2, '2025-09-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1541, 2025, 9, 3, '2025-09-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1542, 2025, 9, 4, '2025-09-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1543, 2025, 9, 5, '2025-09-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1544, 2025, 9, 6, '2025-09-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1545, 2025, 9, 7, '2025-09-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1546, 2025, 9, 8, '2025-09-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1547, 2025, 9, 9, '2025-09-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1548, 2025, 9, 1, '2025-09-15', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1549, 2025, 9, 2, '2025-09-15', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1550, 2025, 9, 3, '2025-09-15', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1551, 2025, 9, 4, '2025-09-15', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1552, 2025, 9, 5, '2025-09-15', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1553, 2025, 9, 6, '2025-09-15', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1554, 2025, 9, 7, '2025-09-15', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1555, 2025, 9, 8, '2025-09-15', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1556, 2025, 9, 9, '2025-09-15', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1557, 2025, 9, 10, '2025-09-15', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1558, 2025, 9, 2, '2025-09-16', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1559, 2025, 9, 4, '2025-09-16', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1560, 2025, 9, 8, '2025-09-16', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1561, 2025, 9, 1, '2025-09-17', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1562, 2025, 9, 2, '2025-09-17', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1563, 2025, 9, 3, '2025-09-17', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1564, 2025, 9, 4, '2025-09-17', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1565, 2025, 9, 5, '2025-09-17', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1566, 2025, 9, 6, '2025-09-17', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1567, 2025, 9, 7, '2025-09-17', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1568, 2025, 9, 8, '2025-09-17', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1569, 2025, 9, 9, '2025-09-17', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1570, 2025, 9, 10, '2025-09-17', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1571, 2025, 9, 1, '2025-09-18', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1572, 2025, 9, 2, '2025-09-18', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1573, 2025, 9, 3, '2025-09-18', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1574, 2025, 9, 4, '2025-09-18', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1575, 2025, 9, 5, '2025-09-18', 6.00, 6.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1576, 2025, 9, 6, '2025-09-18', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1577, 2025, 9, 7, '2025-09-18', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1578, 2025, 9, 8, '2025-09-18', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1579, 2025, 9, 9, '2025-09-18', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1580, 2025, 9, 10, '2025-09-18', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1581, 2025, 9, 2, '2025-09-19', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1582, 2025, 9, 3, '2025-09-19', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1583, 2025, 9, 4, '2025-09-19', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1584, 2025, 9, 5, '2025-09-19', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1585, 2025, 9, 6, '2025-09-19', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1586, 2025, 9, 7, '2025-09-19', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1587, 2025, 9, 8, '2025-09-19', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1588, 2025, 9, 10, '2025-09-19', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1589, 2025, 9, 2, '2025-09-20', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1590, 2025, 9, 4, '2025-09-20', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1591, 2025, 9, 1, '2025-09-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1592, 2025, 9, 2, '2025-09-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1593, 2025, 9, 4, '2025-09-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1594, 2025, 9, 5, '2025-09-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1595, 2025, 9, 7, '2025-09-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1596, 2025, 9, 8, '2025-09-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1597, 2025, 9, 9, '2025-09-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1598, 2025, 9, 10, '2025-09-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1599, 2025, 9, 2, '2025-09-23', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1600, 2025, 9, 4, '2025-09-23', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1601, 2025, 9, 2, '2025-09-24', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1602, 2025, 9, 4, '2025-09-24', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1603, 2025, 9, 1, '2025-09-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1604, 2025, 9, 2, '2025-09-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1605, 2025, 9, 3, '2025-09-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1606, 2025, 9, 4, '2025-09-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1607, 2025, 9, 5, '2025-09-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1608, 2025, 9, 6, '2025-09-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1609, 2025, 9, 7, '2025-09-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1610, 2025, 9, 8, '2025-09-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1611, 2025, 9, 9, '2025-09-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1612, 2025, 9, 10, '2025-09-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1613, 2025, 9, 1, '2025-09-30', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1614, 2025, 9, 2, '2025-09-30', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1615, 2025, 9, 3, '2025-09-30', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1616, 2025, 9, 4, '2025-09-30', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1617, 2025, 9, 5, '2025-09-30', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1618, 2025, 9, 6, '2025-09-30', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1619, 2025, 9, 8, '2025-09-30', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1620, 2025, 9, 9, '2025-09-30', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1621, 2025, 9, 10, '2025-09-30', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1622, 2025, 10, 1, '2025-10-02', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1623, 2025, 10, 2, '2025-10-02', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1624, 2025, 10, 4, '2025-10-02', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1625, 2025, 10, 5, '2025-10-02', 8.00, 6.00, 2.00, 2, 1, 0, 'vacation-quarter', 1, 0, 0, '2025-11-04 05:30:23', '2025-11-03 23:39:41'), +(1626, 2025, 10, 6, '2025-10-02', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1627, 2025, 10, 7, '2025-10-02', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1628, 2025, 10, 8, '2025-10-02', 8.00, 6.00, 2.00, 2, 1, 0, 'vacation-quarter', 1, 0, 0, '2025-11-04 05:31:11', '2025-11-03 23:39:41'), +(1629, 2025, 10, 9, '2025-10-02', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1630, 2025, 10, 10, '2025-10-02', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1631, 2025, 10, 1, '2025-10-13', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1632, 2025, 10, 2, '2025-10-13', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1633, 2025, 10, 3, '2025-10-13', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1634, 2025, 10, 4, '2025-10-13', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1635, 2025, 10, 5, '2025-10-13', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1636, 2025, 10, 6, '2025-10-13', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1637, 2025, 10, 7, '2025-10-13', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1638, 2025, 10, 8, '2025-10-13', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1639, 2025, 10, 9, '2025-10-13', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1640, 2025, 10, 10, '2025-10-13', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1641, 2025, 10, 1, '2025-10-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1642, 2025, 10, 2, '2025-10-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1643, 2025, 10, 3, '2025-10-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1644, 2025, 10, 4, '2025-10-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1645, 2025, 10, 5, '2025-10-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1646, 2025, 10, 6, '2025-10-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1647, 2025, 10, 7, '2025-10-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1648, 2025, 10, 8, '2025-10-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1649, 2025, 10, 9, '2025-10-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1650, 2025, 10, 10, '2025-10-14', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1651, 2025, 10, 1, '2025-10-15', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1652, 2025, 10, 2, '2025-10-15', 8.00, 4.00, 4.00, 2, 1, 0, 'vacation-half', 1, 0, 0, '2025-11-04 06:10:29', '2025-11-03 23:39:41'), +(1653, 2025, 10, 3, '2025-10-15', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1654, 2025, 10, 4, '2025-10-15', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1655, 2025, 10, 5, '2025-10-15', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1656, 2025, 10, 6, '2025-10-15', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1657, 2025, 10, 7, '2025-10-15', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1658, 2025, 10, 8, '2025-10-15', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1659, 2025, 10, 9, '2025-10-15', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1660, 2025, 10, 10, '2025-10-15', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1661, 2025, 10, 1, '2025-10-16', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1662, 2025, 10, 3, '2025-10-16', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1663, 2025, 10, 4, '2025-10-16', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1664, 2025, 10, 5, '2025-10-16', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1665, 2025, 10, 6, '2025-10-16', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1666, 2025, 10, 7, '2025-10-16', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1667, 2025, 10, 8, '2025-10-16', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1668, 2025, 10, 9, '2025-10-16', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'); +INSERT INTO `monthly_worker_status` (`id`, `year`, `month`, `worker_id`, `date`, `total_work_hours`, `actual_work_hours`, `vacation_hours`, `total_work_count`, `regular_work_count`, `error_work_count`, `work_status`, `has_vacation`, `has_error`, `has_issues`, `last_updated`, `created_at`) VALUES +(1669, 2025, 10, 1, '2025-10-20', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1670, 2025, 10, 2, '2025-10-20', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1671, 2025, 10, 3, '2025-10-20', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1672, 2025, 10, 4, '2025-10-20', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1673, 2025, 10, 5, '2025-10-20', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1674, 2025, 10, 6, '2025-10-20', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1675, 2025, 10, 7, '2025-10-20', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1676, 2025, 10, 8, '2025-10-20', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1677, 2025, 10, 9, '2025-10-20', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1678, 2025, 10, 10, '2025-10-20', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1679, 2025, 10, 1, '2025-10-21', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1680, 2025, 10, 2, '2025-10-21', 10.00, 10.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1681, 2025, 10, 3, '2025-10-21', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1682, 2025, 10, 4, '2025-10-21', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1683, 2025, 10, 5, '2025-10-21', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1684, 2025, 10, 6, '2025-10-21', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1685, 2025, 10, 7, '2025-10-21', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1686, 2025, 10, 8, '2025-10-21', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1687, 2025, 10, 9, '2025-10-21', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1688, 2025, 10, 10, '2025-10-21', 10.00, 10.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1689, 2025, 10, 1, '2025-10-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-04 03:24:03', '2025-11-03 23:39:41'), +(1690, 2025, 10, 2, '2025-10-22', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1691, 2025, 10, 3, '2025-10-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-04 03:24:20', '2025-11-03 23:39:41'), +(1692, 2025, 10, 4, '2025-10-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-04 03:24:54', '2025-11-03 23:39:41'), +(1693, 2025, 10, 5, '2025-10-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-04 03:24:51', '2025-11-03 23:39:41'), +(1694, 2025, 10, 6, '2025-10-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-04 03:24:12', '2025-11-03 23:39:41'), +(1695, 2025, 10, 7, '2025-10-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-04 03:24:23', '2025-11-03 23:39:41'), +(1696, 2025, 10, 8, '2025-10-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-04 03:24:46', '2025-11-03 23:39:41'), +(1697, 2025, 10, 9, '2025-10-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-04 03:24:15', '2025-11-03 23:39:41'), +(1698, 2025, 10, 10, '2025-10-22', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1699, 2025, 10, 1, '2025-10-24', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1700, 2025, 10, 3, '2025-10-24', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1701, 2025, 10, 4, '2025-10-24', 8.00, 4.00, 4.00, 2, 1, 0, 'vacation-half', 1, 0, 0, '2025-11-04 06:13:01', '2025-11-03 23:39:41'), +(1702, 2025, 10, 5, '2025-10-24', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1703, 2025, 10, 6, '2025-10-24', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1704, 2025, 10, 7, '2025-10-24', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1705, 2025, 10, 8, '2025-10-24', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1706, 2025, 10, 9, '2025-10-24', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1707, 2025, 10, 1, '2025-10-25', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1708, 2025, 10, 3, '2025-10-25', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1709, 2025, 10, 4, '2025-10-25', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1710, 2025, 10, 5, '2025-10-25', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1711, 2025, 10, 6, '2025-10-25', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1712, 2025, 10, 8, '2025-10-25', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1713, 2025, 10, 10, '2025-10-25', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1714, 2025, 10, 1, '2025-10-27', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-11-04 22:29:13', '2025-11-03 23:39:41'), +(1715, 2025, 10, 2, '2025-10-27', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1716, 2025, 10, 3, '2025-10-27', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1717, 2025, 10, 4, '2025-10-27', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1718, 2025, 10, 5, '2025-10-27', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1719, 2025, 10, 6, '2025-10-27', 8.00, 4.00, 4.00, 2, 1, 0, 'vacation-half', 1, 0, 0, '2025-11-04 06:13:24', '2025-11-03 23:39:41'), +(1720, 2025, 10, 7, '2025-10-27', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-11-04 22:29:45', '2025-11-03 23:39:41'), +(1721, 2025, 10, 8, '2025-10-27', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1722, 2025, 10, 9, '2025-10-27', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1723, 2025, 10, 10, '2025-10-27', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1724, 2025, 10, 1, '2025-10-28', 10.00, 10.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1725, 2025, 10, 2, '2025-10-28', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1726, 2025, 10, 3, '2025-10-28', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1727, 2025, 10, 4, '2025-10-28', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1728, 2025, 10, 5, '2025-10-28', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1729, 2025, 10, 6, '2025-10-28', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1730, 2025, 10, 7, '2025-10-28', 10.00, 10.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1731, 2025, 10, 8, '2025-10-28', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1732, 2025, 10, 9, '2025-10-28', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:41', '2025-11-03 23:39:41'), +(1733, 2025, 10, 10, '2025-10-28', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:42', '2025-11-03 23:39:42'), +(1734, 2025, 10, 1, '2025-10-29', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-11-04 22:28:03', '2025-11-03 23:39:42'), +(1735, 2025, 10, 2, '2025-10-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:42', '2025-11-03 23:39:42'), +(1736, 2025, 10, 3, '2025-10-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:42', '2025-11-03 23:39:42'), +(1737, 2025, 10, 4, '2025-10-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:42', '2025-11-03 23:39:42'), +(1738, 2025, 10, 5, '2025-10-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:42', '2025-11-03 23:39:42'), +(1739, 2025, 10, 6, '2025-10-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:42', '2025-11-03 23:39:42'), +(1740, 2025, 10, 7, '2025-10-29', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-11-04 22:28:32', '2025-11-03 23:39:42'), +(1741, 2025, 10, 8, '2025-10-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:42', '2025-11-03 23:39:42'), +(1742, 2025, 10, 10, '2025-10-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:42', '2025-11-03 23:39:42'), +(1743, 2025, 10, 1, '2025-10-30', 8.00, 6.00, 2.00, 3, 2, 0, 'vacation-quarter', 1, 0, 0, '2025-11-04 22:27:22', '2025-11-03 23:39:42'), +(1744, 2025, 10, 2, '2025-10-30', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:42', '2025-11-03 23:39:42'), +(1745, 2025, 10, 3, '2025-10-30', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:42', '2025-11-03 23:39:42'), +(1746, 2025, 10, 4, '2025-10-30', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:42', '2025-11-03 23:39:42'), +(1747, 2025, 10, 5, '2025-10-30', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:42', '2025-11-03 23:39:42'), +(1748, 2025, 10, 6, '2025-10-30', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:42', '2025-11-03 23:39:42'), +(1749, 2025, 10, 7, '2025-10-30', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:42', '2025-11-03 23:39:42'), +(1750, 2025, 10, 8, '2025-10-30', 10.00, 10.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-03 23:39:42', '2025-11-03 23:39:42'), +(1751, 2025, 10, 9, '2025-10-30', 8.00, 0.00, 8.00, 2, 0, 0, 'vacation-full', 1, 0, 0, '2025-11-03 23:39:42', '2025-11-03 23:39:42'), +(1752, 2025, 10, 10, '2025-10-30', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-04 06:15:07', '2025-11-03 23:39:42'), +(1753, 2025, 10, 2, '2025-10-31', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:40:45', '2025-11-03 23:39:42'), +(1754, 2025, 10, 9, '2025-10-31', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:40:37', '2025-11-03 23:39:42'), +(1755, 2025, 10, 10, '2025-10-31', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:40:51', '2025-11-03 23:39:42'), +(1756, 2025, 11, 2, '2025-11-01', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:42', '2025-11-03 23:39:42'), +(1757, 2025, 11, 9, '2025-11-01', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:42', '2025-11-03 23:39:42'), +(1758, 2025, 11, 10, '2025-11-01', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-03 23:39:42', '2025-11-03 23:39:42'), +(1767, 2025, 10, 10, '2025-10-01', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-04 05:29:09', '2025-11-04 05:29:09'), +(1768, 2025, 10, 4, '2025-10-01', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-04 05:29:09', '2025-11-04 05:29:09'), +(1769, 2025, 10, 3, '2025-10-01', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-04 05:29:09', '2025-11-04 05:29:09'), +(1770, 2025, 10, 9, '2025-10-01', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-04 05:29:09', '2025-11-04 05:29:09'), +(1771, 2025, 10, 8, '2025-10-01', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-04 05:29:09', '2025-11-04 05:29:09'), +(1772, 2025, 10, 2, '2025-10-01', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-04 05:29:09', '2025-11-04 05:29:09'), +(1773, 2025, 10, 1, '2025-10-01', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-04 05:29:09', '2025-11-04 05:29:09'), +(1774, 2025, 10, 7, '2025-10-01', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-04 05:29:09', '2025-11-04 05:29:09'), +(1775, 2025, 10, 6, '2025-10-01', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-04 05:29:09', '2025-11-04 05:29:09'), +(1776, 2025, 10, 5, '2025-10-01', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-04 05:29:09', '2025-11-04 05:29:09'), +(1779, 2025, 10, 3, '2025-10-02', 8.00, 0.00, 8.00, 1, 0, 0, 'vacation-full', 1, 0, 0, '2025-11-04 06:09:53', '2025-11-04 06:09:53'), +(1781, 2025, 10, 10, '2025-10-16', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:11:47', '2025-11-04 06:11:14'), +(1782, 2025, 10, 2, '2025-10-16', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:11:29', '2025-11-04 06:11:29'), +(1785, 2025, 10, 10, '2025-10-24', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:12:35', '2025-11-04 06:12:35'), +(1786, 2025, 10, 2, '2025-10-24', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:12:51', '2025-11-04 06:12:51'), +(1791, 2025, 10, 9, '2025-10-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-04 06:15:43', '2025-11-04 06:15:43'), +(1792, 2025, 10, 9, '2025-10-25', 8.00, 0.00, 8.00, 1, 0, 0, 'vacation-full', 1, 0, 0, '2025-11-04 06:17:02', '2025-11-04 06:17:02'), +(1793, 2025, 10, 7, '2025-10-25', 8.00, 0.00, 8.00, 1, 0, 0, 'vacation-full', 1, 0, 0, '2025-11-04 06:17:15', '2025-11-04 06:17:15'), +(1794, 2025, 10, 2, '2025-10-25', 8.00, 0.00, 8.00, 1, 0, 0, 'vacation-full', 1, 0, 0, '2025-11-04 06:17:29', '2025-11-04 06:17:29'), +(1795, 2025, 10, 10, '2025-10-17', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:31:47', '2025-11-04 06:31:47'), +(1796, 2025, 10, 2, '2025-10-17', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:31:47', '2025-11-04 06:31:47'), +(1797, 2025, 10, 9, '2025-10-17', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:36:54', '2025-11-04 06:36:54'), +(1798, 2025, 10, 8, '2025-10-17', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:36:54', '2025-11-04 06:36:54'), +(1799, 2025, 10, 7, '2025-10-17', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:36:54', '2025-11-04 06:36:54'), +(1800, 2025, 10, 6, '2025-10-17', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:36:54', '2025-11-04 06:36:54'), +(1801, 2025, 10, 5, '2025-10-17', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:36:54', '2025-11-04 06:36:54'), +(1802, 2025, 10, 4, '2025-10-17', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:36:54', '2025-11-04 06:36:54'), +(1803, 2025, 10, 3, '2025-10-17', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:36:54', '2025-11-04 06:36:54'), +(1804, 2025, 10, 1, '2025-10-17', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:36:54', '2025-11-04 06:36:54'), +(1805, 2025, 10, 2, '2025-10-23', 10.00, 10.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:37:19', '2025-11-04 06:37:19'), +(1806, 2025, 10, 10, '2025-10-23', 10.00, 10.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:37:19', '2025-11-04 06:37:19'), +(1807, 2025, 10, 9, '2025-10-23', 10.00, 10.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:37:41', '2025-11-04 06:37:41'), +(1808, 2025, 10, 8, '2025-10-23', 10.00, 10.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:37:41', '2025-11-04 06:37:41'), +(1809, 2025, 10, 7, '2025-10-23', 10.00, 10.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:37:41', '2025-11-04 06:37:41'), +(1810, 2025, 10, 6, '2025-10-23', 10.00, 10.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:37:41', '2025-11-04 06:37:41'), +(1811, 2025, 10, 5, '2025-10-23', 10.00, 10.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:37:41', '2025-11-04 06:37:41'), +(1812, 2025, 10, 1, '2025-10-23', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:43:18', '2025-11-04 06:37:41'), +(1813, 2025, 10, 3, '2025-10-23', 10.00, 10.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:37:41', '2025-11-04 06:37:41'), +(1814, 2025, 10, 4, '2025-10-23', 10.00, 10.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:37:41', '2025-11-04 06:37:41'), +(1818, 2025, 10, 3, '2025-10-31', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:39:13', '2025-11-04 06:39:13'), +(1819, 2025, 10, 4, '2025-10-31', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:39:13', '2025-11-04 06:39:13'), +(1820, 2025, 10, 1, '2025-10-31', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:39:13', '2025-11-04 06:39:13'), +(1821, 2025, 10, 7, '2025-10-31', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:39:13', '2025-11-04 06:39:13'), +(1822, 2025, 10, 5, '2025-10-31', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:39:13', '2025-11-04 06:39:13'), +(1823, 2025, 10, 8, '2025-10-31', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:39:13', '2025-11-04 06:39:13'), +(1824, 2025, 10, 6, '2025-10-31', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-04 06:39:13', '2025-11-04 06:39:13'), +(1845, 2025, 11, 10, '2025-11-05', 0.00, 0.00, 0.00, 0, 0, 0, 'incomplete', NULL, NULL, 1, '2025-11-05 02:18:59', '2025-11-05 00:00:02'), +(1863, 2025, 11, 9, '2025-11-05', 0.00, 0.00, 0.00, 0, 0, 0, 'incomplete', NULL, NULL, 1, '2025-11-05 02:19:26', '2025-11-05 02:19:17'), +(1865, 2025, 11, 2, '2025-11-03', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-05 02:54:31', '2025-11-05 02:54:31'), +(1866, 2025, 11, 10, '2025-11-03', 8.00, 8.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-05 02:54:31', '2025-11-05 02:54:31'), +(1867, 2025, 11, 9, '2025-11-03', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-05 02:55:16', '2025-11-05 02:55:16'), +(1869, 2025, 11, 6, '2025-11-03', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-05 02:55:16', '2025-11-05 02:55:16'), +(0, 2025, 11, 2, '2025-11-05', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-05 06:54:26', '2025-11-05 06:54:26'), +(0, 2025, 11, 10, '2025-11-06', 4.00, 4.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-06 08:44:42', '2025-11-06 08:44:42'), +(0, 2025, 11, 10, '2025-11-06', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-06 08:44:42', '2025-11-06 08:44:42'), +(0, 2025, 11, 4, '2025-11-06', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-06 08:45:59', '2025-11-06 08:45:59'), +(0, 2025, 11, 5, '2025-11-06', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-06 08:45:59', '2025-11-06 08:45:59'), +(0, 2025, 11, 2, '2025-11-06', 1.00, 1.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-11-06 08:46:46', '2025-11-06 08:46:46'), +(0, 2025, 11, 2, '2025-11-06', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-06 08:46:46', '2025-11-06 08:46:46'), +(0, 2025, 11, 9, '2025-11-06', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-06 08:48:17', '2025-11-06 08:48:17'), +(0, 2025, 11, 8, '2025-11-06', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-06 08:48:17', '2025-11-06 08:48:17'), +(0, 2025, 11, 7, '2025-11-06', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-06 08:48:17', '2025-11-06 08:48:17'), +(0, 2025, 11, 6, '2025-11-06', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-06 08:48:17', '2025-11-06 08:48:17'), +(0, 2025, 11, 3, '2025-11-06', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-06 08:48:17', '2025-11-06 08:48:17'), +(0, 2025, 11, 1, '2025-11-06', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-06 08:48:17', '2025-11-06 08:48:17'), +(0, 2025, 11, 7, '2025-11-07', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-07 06:48:19', '2025-11-07 06:48:19'), +(0, 2025, 11, 10, '2025-11-07', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-07 06:48:27', '2025-11-07 06:48:27'), +(0, 2025, 11, 2, '2025-11-07', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-07 06:48:27', '2025-11-07 06:48:27'), +(0, 2025, 11, 9, '2025-11-07', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-07 06:48:57', '2025-11-07 06:48:57'), +(0, 2025, 11, 8, '2025-11-07', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-07 06:48:57', '2025-11-07 06:48:57'), +(0, 2025, 11, 6, '2025-11-07', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-07 06:48:57', '2025-11-07 06:48:57'), +(0, 2025, 11, 5, '2025-11-07', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-07 06:48:57', '2025-11-07 06:48:57'), +(0, 2025, 11, 4, '2025-11-07', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-07 06:48:57', '2025-11-07 06:48:57'), +(0, 2025, 11, 3, '2025-11-07', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-07 06:48:57', '2025-11-07 06:48:57'), +(0, 2025, 11, 1, '2025-11-07', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-07 06:48:57', '2025-11-07 06:48:57'), +(0, 2025, 11, 4, '2025-11-07', 10.00, 10.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-07 06:49:20', '2025-11-07 06:49:20'), +(0, 2025, 11, 4, '2025-11-07', 16.00, 16.00, 0.00, 3, 3, 0, 'overtime-warning', 0, 0, 1, '2025-11-07 06:49:20', '2025-11-07 06:49:20'), +(0, 2025, 11, 5, '2025-11-07', 10.00, 10.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-07 06:49:20', '2025-11-07 06:49:20'), +(0, 2025, 11, 5, '2025-11-07', 16.00, 16.00, 0.00, 3, 3, 0, 'overtime-warning', 0, 0, 1, '2025-11-07 06:49:20', '2025-11-07 06:49:20'), +(0, 2025, 11, 2, '2025-11-07', 0.00, 0.00, 0.00, 0, 0, 0, 'incomplete', NULL, NULL, 1, '2025-11-07 06:49:50', '2025-11-07 06:49:50'), +(0, 2025, 11, 2, '2025-11-07', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-07 06:50:15', '2025-11-07 06:50:15'), +(0, 2025, 11, 10, '2025-11-07', 0.00, 0.00, 0.00, 0, 0, 0, 'incomplete', NULL, NULL, 1, '2025-11-07 06:50:38', '2025-11-07 06:50:38'), +(0, 2025, 11, 10, '2025-11-07', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-07 06:50:55', '2025-11-07 06:50:55'), +(0, 2025, 11, 10, '2025-11-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-08 05:53:23', '2025-11-08 05:53:23'), +(0, 2025, 11, 2, '2025-11-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-08 05:53:24', '2025-11-08 05:53:24'), +(0, 2025, 11, 10, '2025-11-09', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-09 05:39:09', '2025-11-09 05:39:09'), +(0, 2025, 11, 2, '2025-11-09', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-09 05:39:09', '2025-11-09 05:39:09'), +(0, 2025, 11, 9, '2025-11-09', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-09 05:40:41', '2025-11-09 05:40:41'), +(0, 2025, 11, 8, '2025-11-09', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-09 05:40:41', '2025-11-09 05:40:41'), +(0, 2025, 11, 7, '2025-11-09', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-09 05:40:41', '2025-11-09 05:40:41'), +(0, 2025, 11, 6, '2025-11-09', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-09 05:40:41', '2025-11-09 05:40:41'), +(0, 2025, 11, 3, '2025-11-09', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-09 05:40:41', '2025-11-09 05:40:41'), +(0, 2025, 11, 10, '2025-11-10', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-11 08:28:29', '2025-11-11 08:28:29'), +(0, 2025, 11, 4, '2025-11-10', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-11 08:28:29', '2025-11-11 08:28:29'), +(0, 2025, 11, 2, '2025-11-10', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-11 08:28:29', '2025-11-11 08:28:29'), +(0, 2025, 11, 10, '2025-11-11', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-11 08:29:03', '2025-11-11 08:29:03'), +(0, 2025, 11, 9, '2025-11-11', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-11 08:29:03', '2025-11-11 08:29:03'), +(0, 2025, 11, 4, '2025-11-11', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-11 08:29:45', '2025-11-11 08:29:45'), +(0, 2025, 11, 4, '2025-11-11', 10.00, 10.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-11 08:29:45', '2025-11-11 08:29:45'), +(0, 2025, 11, 2, '2025-11-11', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-11 08:30:08', '2025-11-11 08:30:08'), +(0, 2025, 11, 10, '2025-11-11', 10.00, 10.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-11 08:30:35', '2025-11-11 08:30:35'), +(0, 2025, 11, 9, '2025-11-11', 10.00, 10.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-11 08:30:35', '2025-11-11 08:30:35'), +(0, 2025, 11, 7, '2025-11-11', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-11 08:45:23', '2025-11-11 08:45:23'), +(0, 2025, 11, 9, '2025-11-11', 20.00, 20.00, 0.00, 3, 3, 0, 'overtime-warning', 0, 0, 1, '2025-11-11 08:46:26', '2025-11-11 08:46:26'), +(0, 2025, 11, 8, '2025-11-11', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-11 08:46:26', '2025-11-11 08:46:26'), +(0, 2025, 11, 6, '2025-11-11', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-11 08:46:26', '2025-11-11 08:46:26'), +(0, 2025, 11, 5, '2025-11-11', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-11 08:46:26', '2025-11-11 08:46:26'), +(0, 2025, 11, 3, '2025-11-11', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-11 08:46:26', '2025-11-11 08:46:26'), +(0, 2025, 11, 1, '2025-11-11', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-11 08:46:26', '2025-11-11 08:46:26'), +(0, 2025, 11, 10, '2025-11-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-12 06:47:21', '2025-11-12 06:47:21'), +(0, 2025, 11, 2, '2025-11-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-12 06:47:21', '2025-11-12 06:47:21'), +(0, 2025, 11, 9, '2025-11-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-12 06:47:21', '2025-11-12 06:47:21'), +(0, 2025, 11, 8, '2025-11-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-12 06:52:00', '2025-11-12 06:52:00'), +(0, 2025, 11, 7, '2025-11-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-12 06:52:00', '2025-11-12 06:52:00'), +(0, 2025, 11, 6, '2025-11-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-12 06:52:00', '2025-11-12 06:52:00'), +(0, 2025, 11, 5, '2025-11-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-12 06:52:00', '2025-11-12 06:52:00'), +(0, 2025, 11, 3, '2025-11-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-12 06:52:00', '2025-11-12 06:52:00'), +(0, 2025, 11, 1, '2025-11-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-12 06:52:00', '2025-11-12 06:52:00'), +(0, 2025, 11, 10, '2025-11-13', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-13 08:46:09', '2025-11-13 08:46:09'), +(0, 2025, 11, 4, '2025-11-13', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-13 08:46:09', '2025-11-13 08:46:09'), +(0, 2025, 11, 2, '2025-11-13', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-13 08:46:32', '2025-11-13 08:46:32'), +(0, 2025, 11, 9, '2025-11-13', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-13 08:47:12', '2025-11-13 08:47:12'), +(0, 2025, 11, 8, '2025-11-13', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-13 08:47:12', '2025-11-13 08:47:12'), +(0, 2025, 11, 7, '2025-11-13', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-13 08:47:12', '2025-11-13 08:47:12'), +(0, 2025, 11, 6, '2025-11-13', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-13 08:47:12', '2025-11-13 08:47:12'), +(0, 2025, 11, 5, '2025-11-13', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-13 08:47:12', '2025-11-13 08:47:12'), +(0, 2025, 11, 3, '2025-11-13', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-13 08:47:12', '2025-11-13 08:47:12'), +(0, 2025, 11, 1, '2025-11-13', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-13 08:47:12', '2025-11-13 08:47:12'), +(0, 2025, 11, 10, '2025-11-14', 6.00, 6.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-14 07:00:16', '2025-11-14 07:00:16'), +(0, 2025, 11, 10, '2025-11-14', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-14 07:00:16', '2025-11-14 07:00:16'), +(0, 2025, 11, 9, '2025-11-14', 6.00, 6.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-14 07:00:16', '2025-11-14 07:00:16'), +(0, 2025, 11, 9, '2025-11-14', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-14 07:00:16', '2025-11-14 07:00:16'), +(0, 2025, 11, 2, '2025-11-14', 6.00, 6.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-14 07:00:17', '2025-11-14 07:00:17'), +(0, 2025, 11, 2, '2025-11-14', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-14 07:00:17', '2025-11-14 07:00:17'), +(0, 2025, 11, 8, '2025-11-14', 3.00, 3.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-14 07:00:51', '2025-11-14 07:00:51'), +(0, 2025, 11, 8, '2025-11-14', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-14 07:00:51', '2025-11-14 07:00:51'), +(0, 2025, 11, 7, '2025-11-14', 3.00, 3.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-14 07:00:51', '2025-11-14 07:00:51'), +(0, 2025, 11, 7, '2025-11-14', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-14 07:00:51', '2025-11-14 07:00:51'), +(0, 2025, 11, 5, '2025-11-14', 3.00, 3.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-14 07:00:51', '2025-11-14 07:00:51'), +(0, 2025, 11, 5, '2025-11-14', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-14 07:00:51', '2025-11-14 07:00:51'), +(0, 2025, 11, 6, '2025-11-14', 3.00, 3.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-14 07:00:51', '2025-11-14 07:00:51'), +(0, 2025, 11, 6, '2025-11-14', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-14 07:00:51', '2025-11-14 07:00:51'), +(0, 2025, 11, 4, '2025-11-14', 3.00, 3.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-14 07:00:51', '2025-11-14 07:00:51'), +(0, 2025, 11, 4, '2025-11-14', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-14 07:00:51', '2025-11-14 07:00:51'), +(0, 2025, 11, 3, '2025-11-14', 3.00, 3.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-14 07:00:51', '2025-11-14 07:00:51'), +(0, 2025, 11, 3, '2025-11-14', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-14 07:00:51', '2025-11-14 07:00:51'), +(0, 2025, 11, 1, '2025-11-14', 3.00, 3.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-14 07:00:51', '2025-11-14 07:00:51'), +(0, 2025, 11, 1, '2025-11-14', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-11-14 07:00:51', '2025-11-14 07:00:51'), +(0, 2025, 11, 10, '2025-11-15', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-15 05:46:53', '2025-11-15 05:46:53'), +(0, 2025, 11, 9, '2025-11-15', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-15 05:46:53', '2025-11-15 05:46:53'), +(0, 2025, 11, 2, '2025-11-15', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-15 05:46:53', '2025-11-15 05:46:53'), +(0, 2025, 11, 10, '2025-11-17', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-18 08:45:07', '2025-11-18 08:45:07'), +(0, 2025, 11, 4, '2025-11-17', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-18 08:45:08', '2025-11-18 08:45:08'), +(0, 2025, 11, 2, '2025-11-17', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-18 08:45:08', '2025-11-18 08:45:08'), +(0, 2025, 11, 4, '2025-11-18', 6.00, 6.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-18 08:46:01', '2025-11-18 08:46:01'), +(0, 2025, 11, 4, '2025-11-18', 10.00, 10.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-18 08:46:01', '2025-11-18 08:46:01'), +(0, 2025, 11, 2, '2025-11-18', 6.00, 6.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-18 08:46:01', '2025-11-18 08:46:01'), +(0, 2025, 11, 2, '2025-11-18', 10.00, 10.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-18 08:46:01', '2025-11-18 08:46:01'), +(0, 2025, 11, 10, '2025-11-18', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-18 08:46:23', '2025-11-18 08:46:23'), +(0, 2025, 11, 2, '2025-11-24', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-25 08:47:55', '2025-11-25 08:47:55'), +(0, 2025, 11, 4, '2025-11-24', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-25 08:47:55', '2025-11-25 08:47:55'), +(0, 2025, 11, 4, '2025-11-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-25 08:48:18', '2025-11-25 08:48:18'), +(0, 2025, 11, 2, '2025-11-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-25 08:48:18', '2025-11-25 08:48:18'), +(0, 2025, 11, 4, '2025-11-21', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-25 08:48:39', '2025-11-25 08:48:39'), +(0, 2025, 11, 2, '2025-11-21', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-25 08:48:39', '2025-11-25 08:48:39'), +(0, 2025, 11, 4, '2025-11-25', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-25 08:49:02', '2025-11-25 08:49:02'), +(0, 2025, 11, 2, '2025-11-25', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-25 08:49:02', '2025-11-25 08:49:02'), +(0, 2025, 11, 10, '2025-11-26', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-26 06:51:13', '2025-11-26 06:51:13'), +(0, 2025, 11, 4, '2025-11-26', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-26 06:51:13', '2025-11-26 06:51:13'), +(0, 2025, 11, 2, '2025-11-26', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-26 06:51:13', '2025-11-26 06:51:13'), +(0, 2025, 11, 10, '2025-11-27', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-27 07:34:37', '2025-11-27 07:34:37'), +(0, 2025, 11, 4, '2025-11-27', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-27 07:34:37', '2025-11-27 07:34:37'), +(0, 2025, 11, 2, '2025-11-27', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-11-27 07:34:37', '2025-11-27 07:34:37'), +(0, 2025, 11, 9, '2025-11-27', 6.00, 6.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-27 07:35:24', '2025-11-27 07:35:24'), +(0, 2025, 11, 9, '2025-11-27', 10.00, 10.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-11-27 07:35:24', '2025-11-27 07:35:24'), +(0, 2025, 11, 10, '2025-11-28', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-28 06:47:35', '2025-11-28 06:47:35'), +(0, 2025, 11, 9, '2025-11-28', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-28 06:47:35', '2025-11-28 06:47:35'), +(0, 2025, 11, 2, '2025-11-28', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-28 06:47:35', '2025-11-28 06:47:35'), +(0, 2025, 11, 4, '2025-11-28', 1.00, 0.00, 1.00, 1, 0, 0, 'vacation-full', 1, 0, 0, '2025-11-28 06:48:24', '2025-11-28 06:48:24'), +(0, 2025, 11, 10, '2025-11-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-29 05:12:39', '2025-11-29 05:12:39'), +(0, 2025, 11, 4, '2025-11-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-29 05:12:39', '2025-11-29 05:12:39'), +(0, 2025, 11, 2, '2025-11-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-29 05:12:39', '2025-11-29 05:12:39'), +(0, 2025, 11, 1, '2025-11-29', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-11-29 05:17:02', '2025-11-29 05:17:02'), +(0, 2025, 11, 9, '2025-11-29', 1.00, 0.00, 1.00, 1, 0, 0, 'vacation-full', 1, 0, 0, '2025-11-29 05:17:21', '2025-11-29 05:17:21'), +(0, 2025, 11, 8, '2025-11-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-29 05:17:46', '2025-11-29 05:17:46'), +(0, 2025, 11, 6, '2025-11-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-29 05:17:46', '2025-11-29 05:17:46'), +(0, 2025, 11, 5, '2025-11-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-29 05:17:46', '2025-11-29 05:17:46'), +(0, 2025, 11, 3, '2025-11-29', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-11-29 05:17:46', '2025-11-29 05:17:46'), +(0, 2025, 12, 10, '2025-12-01', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-01 06:55:15', '2025-12-01 06:55:15'), +(0, 2025, 12, 9, '2025-12-01', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-01 06:55:15', '2025-12-01 06:55:15'), +(0, 2025, 12, 4, '2025-12-01', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-01 06:55:15', '2025-12-01 06:55:15'), +(0, 2025, 12, 2, '2025-12-01', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-01 06:55:15', '2025-12-01 06:55:15'), +(0, 2025, 11, 8, '2025-11-01', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-02 02:07:51', '2025-12-02 02:07:51'), +(0, 2025, 11, 8, '2025-11-01', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-02 02:07:51', '2025-12-02 02:07:51'), +(0, 2025, 11, 7, '2025-11-01', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-02 02:07:52', '2025-12-02 02:07:52'), +(0, 2025, 11, 7, '2025-11-01', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-02 02:07:52', '2025-12-02 02:07:52'), +(0, 2025, 11, 6, '2025-11-01', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-02 02:07:52', '2025-12-02 02:07:52'), +(0, 2025, 11, 6, '2025-11-01', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-02 02:07:52', '2025-12-02 02:07:52'), +(0, 2025, 11, 5, '2025-11-01', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-02 02:07:52', '2025-12-02 02:07:52'), +(0, 2025, 11, 5, '2025-11-01', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-02 02:07:52', '2025-12-02 02:07:52'), +(0, 2025, 11, 4, '2025-11-01', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-02 02:07:52', '2025-12-02 02:07:52'), +(0, 2025, 11, 4, '2025-11-01', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-02 02:07:52', '2025-12-02 02:07:52'), +(0, 2025, 11, 3, '2025-11-01', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-02 02:07:52', '2025-12-02 02:07:52'), +(0, 2025, 11, 3, '2025-11-01', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-02 02:07:52', '2025-12-02 02:07:52'), +(0, 2025, 11, 1, '2025-11-01', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-02 02:07:52', '2025-12-02 02:07:52'), +(0, 2025, 11, 1, '2025-11-01', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-02 02:07:52', '2025-12-02 02:07:52'), +(0, 2025, 11, 8, '2025-11-03', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-02 02:09:19', '2025-12-02 02:09:19'), +(0, 2025, 11, 8, '2025-11-03', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-02 02:09:19', '2025-12-02 02:09:19'), +(0, 2025, 11, 8, '2025-11-03', 16.00, 8.00, 8.00, 3, 1, 1, 'error', 1, 1, 0, '2025-12-02 02:09:19', '2025-12-02 02:09:19'), +(0, 2025, 11, 5, '2025-11-03', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-02 02:09:19', '2025-12-02 02:09:19'), +(0, 2025, 11, 5, '2025-11-03', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-02 02:09:19', '2025-12-02 02:09:19'), +(0, 2025, 11, 5, '2025-11-03', 16.00, 8.00, 8.00, 3, 1, 1, 'error', 1, 1, 0, '2025-12-02 02:09:19', '2025-12-02 02:09:19'), +(0, 2025, 11, 4, '2025-11-03', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-02 02:09:19', '2025-12-02 02:09:19'), +(0, 2025, 11, 4, '2025-11-03', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-02 02:09:19', '2025-12-02 02:09:19'), +(0, 2025, 11, 4, '2025-11-03', 16.00, 8.00, 8.00, 3, 1, 1, 'error', 1, 1, 0, '2025-12-02 02:09:19', '2025-12-02 02:09:19'), +(0, 2025, 11, 3, '2025-11-03', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-02 02:09:19', '2025-12-02 02:09:19'), +(0, 2025, 11, 3, '2025-11-03', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-02 02:09:19', '2025-12-02 02:09:19'), +(0, 2025, 11, 3, '2025-11-03', 16.00, 8.00, 8.00, 3, 1, 1, 'error', 1, 1, 0, '2025-12-02 02:09:19', '2025-12-02 02:09:19'), +(0, 2025, 11, 1, '2025-11-03', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-02 02:09:19', '2025-12-02 02:09:19'), +(0, 2025, 11, 1, '2025-11-03', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-02 02:09:19', '2025-12-02 02:09:19'), +(0, 2025, 11, 1, '2025-11-03', 16.00, 8.00, 8.00, 3, 1, 1, 'error', 1, 1, 0, '2025-12-02 02:09:19', '2025-12-02 02:09:19'), +(0, 2025, 11, 1, '2025-11-03', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-02 02:09:54', '2025-12-02 02:09:54'), +(0, 2025, 11, 1, '2025-11-03', 4.00, 4.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-12-02 02:10:27', '2025-12-02 02:10:27'), +(0, 2025, 11, 1, '2025-11-03', 0.00, 0.00, 0.00, 0, 0, 0, 'incomplete', NULL, NULL, 1, '2025-12-02 02:10:29', '2025-12-02 02:10:29'), +(0, 2025, 11, 4, '2025-11-03', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-02 02:10:45', '2025-12-02 02:10:45'), +(0, 2025, 11, 5, '2025-11-03', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-02 02:10:51', '2025-12-02 02:10:51'), +(0, 2025, 11, 8, '2025-11-03', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-02 02:10:55', '2025-12-02 02:10:55'), +(0, 2025, 11, 3, '2025-11-03', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-02 02:11:02', '2025-12-02 02:11:02'), +(0, 2025, 11, 1, '2025-11-03', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-02 02:11:47', '2025-12-02 02:11:47'), +(0, 2025, 11, 7, '2025-11-03', 8.00, 0.00, 8.00, 1, 0, 0, 'vacation-full', 1, 0, 0, '2025-12-02 02:11:57', '2025-12-02 02:11:57'), +(0, 2025, 11, 1, '2025-11-03', 0.00, 0.00, 0.00, 0, 0, 0, 'incomplete', NULL, NULL, 1, '2025-12-02 02:12:14', '2025-12-02 02:12:14'), +(0, 2025, 11, 10, '2025-11-04', 6.00, 6.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-02 02:17:03', '2025-12-02 02:17:03'), +(0, 2025, 11, 10, '2025-11-04', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-02 02:17:03', '2025-12-02 02:17:03'), +(0, 2025, 11, 9, '2025-11-04', 6.00, 6.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-02 02:17:03', '2025-12-02 02:17:03'), +(0, 2025, 11, 9, '2025-11-04', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-02 02:17:03', '2025-12-02 02:17:03'), +(0, 2025, 11, 2, '2025-11-04', 6.00, 6.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-02 02:17:03', '2025-12-02 02:17:03'), +(0, 2025, 11, 2, '2025-11-04', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-02 02:17:03', '2025-12-02 02:17:03'), +(0, 2025, 11, 1, '2025-11-01', 4.00, 4.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-12-02 02:18:04', '2025-12-02 02:18:04'), +(0, 2025, 11, 1, '2025-11-01', 0.00, 0.00, 0.00, 0, 0, 0, 'incomplete', NULL, NULL, 1, '2025-12-02 02:18:05', '2025-12-02 02:18:05'), +(0, 2025, 11, 6, '2025-11-01', 4.00, 4.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-12-02 02:18:14', '2025-12-02 02:18:14'), +(0, 2025, 11, 6, '2025-11-01', 0.00, 0.00, 0.00, 0, 0, 0, 'incomplete', NULL, NULL, 1, '2025-12-02 02:18:16', '2025-12-02 02:18:16'), +(0, 2025, 11, 8, '2025-11-04', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-02 02:19:20', '2025-12-02 02:19:20'), +(0, 2025, 11, 6, '2025-11-04', 4.00, 4.00, 0.00, 1, 0, 1, 'error', 0, 1, 0, '2025-12-02 02:19:51', '2025-12-02 02:19:51'), +(0, 2025, 11, 6, '2025-11-04', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-02 02:19:51', '2025-12-02 02:19:51'), +(0, 2025, 11, 1, '2025-11-24', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-02 02:43:58', '2025-12-02 02:43:58'), +(0, 2025, 11, 1, '2025-11-24', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-02 02:43:58', '2025-12-02 02:43:58'), +(0, 2025, 11, 7, '2025-11-24', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-02 02:43:58', '2025-12-02 02:43:58'), +(0, 2025, 11, 7, '2025-11-24', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-02 02:43:58', '2025-12-02 02:43:58'), +(0, 2025, 11, 3, '2025-11-25', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-02 04:17:39', '2025-12-02 04:17:39'), +(0, 2025, 11, 3, '2025-11-25', 9.00, 9.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-02 04:17:39', '2025-12-02 04:17:39'), +(0, 2025, 11, 3, '2025-11-25', 10.00, 10.00, 0.00, 3, 1, 2, 'error', 0, 1, 0, '2025-12-02 04:17:39', '2025-12-02 04:17:39'), +(0, 2025, 11, 6, '2025-11-25', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-02 04:17:39', '2025-12-02 04:17:39'), +(0, 2025, 11, 6, '2025-11-25', 9.00, 9.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-02 04:17:39', '2025-12-02 04:17:39'), +(0, 2025, 11, 6, '2025-11-25', 10.00, 10.00, 0.00, 3, 1, 2, 'error', 0, 1, 0, '2025-12-02 04:17:39', '2025-12-02 04:17:39'), +(0, 2025, 12, 10, '2025-12-03', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-03 06:52:28', '2025-12-03 06:52:28'), +(0, 2025, 12, 9, '2025-12-03', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-03 06:52:28', '2025-12-03 06:52:28'), +(0, 2025, 12, 4, '2025-12-03', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-03 06:52:28', '2025-12-03 06:52:28'), +(0, 2025, 12, 2, '2025-12-03', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-03 06:52:28', '2025-12-03 06:52:28'), +(0, 2025, 12, 10, '2025-12-04', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-04 06:45:00', '2025-12-04 06:45:00'), +(0, 2025, 12, 9, '2025-12-04', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-04 06:45:00', '2025-12-04 06:45:00'), +(0, 2025, 12, 4, '2025-12-04', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-04 06:45:00', '2025-12-04 06:45:00'), +(0, 2025, 12, 2, '2025-12-04', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-04 06:45:00', '2025-12-04 06:45:00'), +(0, 2025, 11, 6, '2025-11-01', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 00:34:20', '2025-12-05 00:34:20'), +(0, 2025, 11, 6, '2025-11-01', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 00:34:20', '2025-12-05 00:34:20'), +(0, 2025, 11, 1, '2025-11-01', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 00:34:20', '2025-12-05 00:34:20'), +(0, 2025, 11, 1, '2025-11-01', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 00:34:20', '2025-12-05 00:34:20'), +(0, 2025, 11, 1, '2025-11-03', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-05 00:35:16', '2025-12-05 00:35:16'), +(0, 2025, 11, 9, '2025-11-11', 10.00, 10.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-12-05 00:44:37', '2025-12-05 00:44:37'), +(0, 2025, 11, 6, '2025-11-04', 10.00, 10.00, 0.00, 3, 2, 1, 'error', 0, 1, 0, '2025-12-05 01:02:21', '2025-12-05 01:02:21'), +(0, 2025, 11, 8, '2025-11-04', 10.00, 10.00, 0.00, 2, 2, 0, 'overtime', 0, 0, 0, '2025-12-05 01:02:21', '2025-12-05 01:02:21'), +(0, 2025, 11, 7, '2025-11-04', 6.00, 6.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:03:12', '2025-12-05 01:03:12'), +(0, 2025, 11, 7, '2025-11-04', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:03:12', '2025-12-05 01:03:12'), +(0, 2025, 11, 5, '2025-11-04', 6.00, 6.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:03:12', '2025-12-05 01:03:12'), +(0, 2025, 11, 5, '2025-11-04', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:03:12', '2025-12-05 01:03:12'), +(0, 2025, 11, 4, '2025-11-04', 6.00, 6.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:03:12', '2025-12-05 01:03:12'), +(0, 2025, 11, 4, '2025-11-04', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:03:12', '2025-12-05 01:03:12'), +(0, 2025, 11, 3, '2025-11-04', 6.00, 6.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:03:12', '2025-12-05 01:03:12'), +(0, 2025, 11, 3, '2025-11-04', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:03:12', '2025-12-05 01:03:12'), +(0, 2025, 11, 1, '2025-11-04', 6.00, 6.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:03:12', '2025-12-05 01:03:12'), +(0, 2025, 11, 1, '2025-11-04', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:03:12', '2025-12-05 01:03:12'), +(0, 2025, 11, 8, '2025-11-05', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, 8, '2025-11-05', 6.00, 6.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, 8, '2025-11-05', 8.00, 8.00, 0.00, 3, 1, 2, 'error', 0, 1, 0, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, 7, '2025-11-05', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, 7, '2025-11-05', 6.00, 6.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, 7, '2025-11-05', 8.00, 8.00, 0.00, 3, 1, 2, 'error', 0, 1, 0, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, 6, '2025-11-05', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, 6, '2025-11-05', 6.00, 6.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, 6, '2025-11-05', 8.00, 8.00, 0.00, 3, 1, 2, 'error', 0, 1, 0, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, 4, '2025-11-05', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, 4, '2025-11-05', 6.00, 6.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, 4, '2025-11-05', 8.00, 8.00, 0.00, 3, 1, 2, 'error', 0, 1, 0, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, 3, '2025-11-05', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, 3, '2025-11-05', 6.00, 6.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, 3, '2025-11-05', 8.00, 8.00, 0.00, 3, 1, 2, 'error', 0, 1, 0, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, 1, '2025-11-05', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, 1, '2025-11-05', 6.00, 6.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, 1, '2025-11-05', 8.00, 8.00, 0.00, 3, 1, 2, 'error', 0, 1, 0, '2025-12-05 01:04:39', '2025-12-05 01:04:39'), +(0, 2025, 11, 5, '2025-11-07', 24.00, 24.00, 0.00, 4, 4, 0, 'overtime-warning', 0, 0, 1, '2025-12-05 01:05:21', '2025-12-05 01:05:21'), +(0, 2025, 11, 4, '2025-11-07', 24.00, 24.00, 0.00, 4, 4, 0, 'overtime-warning', 0, 0, 1, '2025-12-05 01:05:21', '2025-12-05 01:05:21'), +(0, 2025, 11, 9, '2025-11-08', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:06:12', '2025-12-05 01:06:12'), +(0, 2025, 11, 9, '2025-11-08', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:06:12', '2025-12-05 01:06:12'), +(0, 2025, 11, 8, '2025-11-08', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:06:12', '2025-12-05 01:06:12'), +(0, 2025, 11, 8, '2025-11-08', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:06:12', '2025-12-05 01:06:12'), +(0, 2025, 11, 7, '2025-11-08', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:06:12', '2025-12-05 01:06:12'), +(0, 2025, 11, 7, '2025-11-08', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:06:12', '2025-12-05 01:06:12'), +(0, 2025, 11, 6, '2025-11-08', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:06:12', '2025-12-05 01:06:12'); +INSERT INTO `monthly_worker_status` (`id`, `year`, `month`, `worker_id`, `date`, `total_work_hours`, `actual_work_hours`, `vacation_hours`, `total_work_count`, `regular_work_count`, `error_work_count`, `work_status`, `has_vacation`, `has_error`, `has_issues`, `last_updated`, `created_at`) VALUES +(0, 2025, 11, 6, '2025-11-08', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:06:12', '2025-12-05 01:06:12'), +(0, 2025, 11, 5, '2025-11-08', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:06:12', '2025-12-05 01:06:12'), +(0, 2025, 11, 5, '2025-11-08', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:06:12', '2025-12-05 01:06:12'), +(0, 2025, 11, 3, '2025-11-08', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:06:12', '2025-12-05 01:06:12'), +(0, 2025, 11, 3, '2025-11-08', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:06:12', '2025-12-05 01:06:12'), +(0, 2025, 11, 1, '2025-11-08', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:06:12', '2025-12-05 01:06:12'), +(0, 2025, 11, 1, '2025-11-08', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:06:12', '2025-12-05 01:06:12'), +(0, 2025, 11, 8, '2025-11-10', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:06:58', '2025-12-05 01:06:58'), +(0, 2025, 11, 8, '2025-11-10', 8.00, 4.00, 4.00, 2, 1, 0, 'vacation-half', 1, 0, 0, '2025-12-05 01:06:58', '2025-12-05 01:06:58'), +(0, 2025, 11, 9, '2025-11-10', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:07:29', '2025-12-05 01:07:29'), +(0, 2025, 11, 9, '2025-11-10', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:07:29', '2025-12-05 01:07:29'), +(0, 2025, 11, 7, '2025-11-10', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:07:29', '2025-12-05 01:07:29'), +(0, 2025, 11, 7, '2025-11-10', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:07:29', '2025-12-05 01:07:29'), +(0, 2025, 11, 6, '2025-11-10', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:07:29', '2025-12-05 01:07:29'), +(0, 2025, 11, 6, '2025-11-10', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:07:29', '2025-12-05 01:07:29'), +(0, 2025, 11, 5, '2025-11-10', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:07:29', '2025-12-05 01:07:29'), +(0, 2025, 11, 5, '2025-11-10', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:07:29', '2025-12-05 01:07:29'), +(0, 2025, 11, 3, '2025-11-10', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:07:29', '2025-12-05 01:07:29'), +(0, 2025, 11, 3, '2025-11-10', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:07:29', '2025-12-05 01:07:29'), +(0, 2025, 11, 1, '2025-11-10', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:07:29', '2025-12-05 01:07:29'), +(0, 2025, 11, 1, '2025-11-10', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:07:29', '2025-12-05 01:07:29'), +(0, 2025, 11, 4, '2025-11-12', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-05 01:08:07', '2025-12-05 01:08:07'), +(0, 2025, 11, 8, '2025-11-15', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:08:52', '2025-12-05 01:08:52'), +(0, 2025, 11, 8, '2025-11-15', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:08:52', '2025-12-05 01:08:52'), +(0, 2025, 11, 7, '2025-11-15', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:08:52', '2025-12-05 01:08:52'), +(0, 2025, 11, 7, '2025-11-15', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:08:52', '2025-12-05 01:08:52'), +(0, 2025, 11, 6, '2025-11-15', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:08:52', '2025-12-05 01:08:52'), +(0, 2025, 11, 6, '2025-11-15', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:08:52', '2025-12-05 01:08:52'), +(0, 2025, 11, 5, '2025-11-15', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:08:52', '2025-12-05 01:08:52'), +(0, 2025, 11, 5, '2025-11-15', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:08:52', '2025-12-05 01:08:52'), +(0, 2025, 11, 4, '2025-11-15', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:08:52', '2025-12-05 01:08:52'), +(0, 2025, 11, 4, '2025-11-15', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:08:52', '2025-12-05 01:08:52'), +(0, 2025, 11, 3, '2025-11-15', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:08:52', '2025-12-05 01:08:52'), +(0, 2025, 11, 3, '2025-11-15', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:08:52', '2025-12-05 01:08:52'), +(0, 2025, 11, 1, '2025-11-15', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:08:52', '2025-12-05 01:08:52'), +(0, 2025, 11, 1, '2025-11-15', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:08:52', '2025-12-05 01:08:52'), +(0, 2025, 11, 9, '2025-11-17', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:09:53', '2025-12-05 01:09:53'), +(0, 2025, 11, 9, '2025-11-17', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:09:53', '2025-12-05 01:09:53'), +(0, 2025, 11, 8, '2025-11-17', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:09:53', '2025-12-05 01:09:53'), +(0, 2025, 11, 8, '2025-11-17', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:09:53', '2025-12-05 01:09:53'), +(0, 2025, 11, 6, '2025-11-17', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:09:53', '2025-12-05 01:09:53'), +(0, 2025, 11, 6, '2025-11-17', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:09:53', '2025-12-05 01:09:53'), +(0, 2025, 11, 5, '2025-11-17', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:09:53', '2025-12-05 01:09:53'), +(0, 2025, 11, 5, '2025-11-17', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:09:53', '2025-12-05 01:09:53'), +(0, 2025, 11, 3, '2025-11-17', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:09:53', '2025-12-05 01:09:53'), +(0, 2025, 11, 3, '2025-11-17', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:09:53', '2025-12-05 01:09:53'), +(0, 2025, 11, 1, '2025-11-17', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:09:53', '2025-12-05 01:09:53'), +(0, 2025, 11, 1, '2025-11-17', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:09:53', '2025-12-05 01:09:53'), +(0, 2025, 11, 8, '2025-11-18', 6.00, 6.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:11:02', '2025-12-05 01:11:02'), +(0, 2025, 11, 8, '2025-11-18', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:11:02', '2025-12-05 01:11:02'), +(0, 2025, 11, 9, '2025-11-18', 6.00, 6.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:11:02', '2025-12-05 01:11:02'), +(0, 2025, 11, 9, '2025-11-18', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:11:02', '2025-12-05 01:11:02'), +(0, 2025, 11, 7, '2025-11-18', 6.00, 6.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:11:02', '2025-12-05 01:11:02'), +(0, 2025, 11, 7, '2025-11-18', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:11:02', '2025-12-05 01:11:02'), +(0, 2025, 11, 6, '2025-11-18', 6.00, 6.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:11:02', '2025-12-05 01:11:02'), +(0, 2025, 11, 6, '2025-11-18', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:11:02', '2025-12-05 01:11:02'), +(0, 2025, 11, 5, '2025-11-18', 6.00, 6.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:11:02', '2025-12-05 01:11:02'), +(0, 2025, 11, 5, '2025-11-18', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:11:02', '2025-12-05 01:11:02'), +(0, 2025, 11, 3, '2025-11-18', 6.00, 6.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:11:02', '2025-12-05 01:11:02'), +(0, 2025, 11, 3, '2025-11-18', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:11:02', '2025-12-05 01:11:02'), +(0, 2025, 11, 1, '2025-11-18', 6.00, 6.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:11:02', '2025-12-05 01:11:02'), +(0, 2025, 11, 1, '2025-11-18', 10.00, 10.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:11:02', '2025-12-05 01:11:02'), +(0, 2025, 11, 2, '2025-11-19', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:12:15', '2025-12-05 01:12:15'), +(0, 2025, 11, 2, '2025-11-19', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:12:15', '2025-12-05 01:12:15'), +(0, 2025, 11, 10, '2025-11-19', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:12:15', '2025-12-05 01:12:15'), +(0, 2025, 11, 10, '2025-11-19', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:12:15', '2025-12-05 01:12:15'), +(0, 2025, 11, 9, '2025-11-19', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:12:15', '2025-12-05 01:12:15'), +(0, 2025, 11, 9, '2025-11-19', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:12:15', '2025-12-05 01:12:15'), +(0, 2025, 11, 8, '2025-11-19', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:12:48', '2025-12-05 01:12:48'), +(0, 2025, 11, 8, '2025-11-19', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:12:48', '2025-12-05 01:12:48'), +(0, 2025, 11, 7, '2025-11-19', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:12:49', '2025-12-05 01:12:49'), +(0, 2025, 11, 7, '2025-11-19', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:12:49', '2025-12-05 01:12:49'), +(0, 2025, 11, 6, '2025-11-19', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:12:49', '2025-12-05 01:12:49'), +(0, 2025, 11, 6, '2025-11-19', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:12:49', '2025-12-05 01:12:49'), +(0, 2025, 11, 5, '2025-11-19', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:12:49', '2025-12-05 01:12:49'), +(0, 2025, 11, 5, '2025-11-19', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:12:49', '2025-12-05 01:12:49'), +(0, 2025, 11, 4, '2025-11-19', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:12:49', '2025-12-05 01:12:49'), +(0, 2025, 11, 4, '2025-11-19', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:12:49', '2025-12-05 01:12:49'), +(0, 2025, 11, 3, '2025-11-19', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:12:49', '2025-12-05 01:12:49'), +(0, 2025, 11, 3, '2025-11-19', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:12:49', '2025-12-05 01:12:49'), +(0, 2025, 11, 1, '2025-11-19', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:12:49', '2025-12-05 01:12:49'), +(0, 2025, 11, 1, '2025-11-19', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:12:49', '2025-12-05 01:12:49'), +(0, 2025, 11, 10, '2025-11-20', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:13:18', '2025-12-05 01:13:18'), +(0, 2025, 11, 10, '2025-11-20', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:13:18', '2025-12-05 01:13:18'), +(0, 2025, 11, 9, '2025-11-20', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:13:18', '2025-12-05 01:13:18'), +(0, 2025, 11, 9, '2025-11-20', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:13:18', '2025-12-05 01:13:18'), +(0, 2025, 11, 2, '2025-11-20', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:13:18', '2025-12-05 01:13:18'), +(0, 2025, 11, 2, '2025-11-20', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:13:18', '2025-12-05 01:13:18'), +(0, 2025, 11, 4, '2025-11-20', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:13:18', '2025-12-05 01:13:18'), +(0, 2025, 11, 4, '2025-11-20', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:13:18', '2025-12-05 01:13:18'), +(0, 2025, 11, 8, '2025-11-20', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:13:48', '2025-12-05 01:13:48'), +(0, 2025, 11, 8, '2025-11-20', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:13:48', '2025-12-05 01:13:48'), +(0, 2025, 11, 7, '2025-11-20', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:13:48', '2025-12-05 01:13:48'), +(0, 2025, 11, 7, '2025-11-20', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:13:48', '2025-12-05 01:13:48'), +(0, 2025, 11, 6, '2025-11-20', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:13:48', '2025-12-05 01:13:48'), +(0, 2025, 11, 6, '2025-11-20', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:13:48', '2025-12-05 01:13:48'), +(0, 2025, 11, 5, '2025-11-20', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:13:48', '2025-12-05 01:13:48'), +(0, 2025, 11, 5, '2025-11-20', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:13:48', '2025-12-05 01:13:48'), +(0, 2025, 11, 3, '2025-11-20', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:13:48', '2025-12-05 01:13:48'), +(0, 2025, 11, 3, '2025-11-20', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:13:48', '2025-12-05 01:13:48'), +(0, 2025, 11, 1, '2025-11-20', 5.00, 5.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:13:48', '2025-12-05 01:13:48'), +(0, 2025, 11, 1, '2025-11-20', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:13:48', '2025-12-05 01:13:48'), +(0, 2025, 11, 9, '2025-11-21', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:14:50', '2025-12-05 01:14:50'), +(0, 2025, 11, 9, '2025-11-21', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:14:50', '2025-12-05 01:14:50'), +(0, 2025, 11, 8, '2025-11-21', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:14:50', '2025-12-05 01:14:50'), +(0, 2025, 11, 8, '2025-11-21', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:14:50', '2025-12-05 01:14:50'), +(0, 2025, 11, 6, '2025-11-21', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:14:50', '2025-12-05 01:14:50'), +(0, 2025, 11, 6, '2025-11-21', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:14:50', '2025-12-05 01:14:50'), +(0, 2025, 11, 7, '2025-11-21', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:14:50', '2025-12-05 01:14:50'), +(0, 2025, 11, 7, '2025-11-21', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:14:50', '2025-12-05 01:14:50'), +(0, 2025, 11, 5, '2025-11-21', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:14:50', '2025-12-05 01:14:50'), +(0, 2025, 11, 5, '2025-11-21', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:14:50', '2025-12-05 01:14:50'), +(0, 2025, 11, 3, '2025-11-21', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:14:50', '2025-12-05 01:14:50'), +(0, 2025, 11, 3, '2025-11-21', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:14:50', '2025-12-05 01:14:50'), +(0, 2025, 11, 1, '2025-11-21', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:14:50', '2025-12-05 01:14:50'), +(0, 2025, 11, 1, '2025-11-21', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:14:50', '2025-12-05 01:14:50'), +(0, 2025, 11, 9, '2025-11-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-05 01:15:21', '2025-12-05 01:15:21'), +(0, 2025, 11, 8, '2025-11-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-05 01:15:22', '2025-12-05 01:15:22'), +(0, 2025, 11, 6, '2025-11-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-05 01:15:22', '2025-12-05 01:15:22'), +(0, 2025, 11, 3, '2025-11-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-05 01:15:22', '2025-12-05 01:15:22'), +(0, 2025, 11, 1, '2025-11-22', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-05 01:15:22', '2025-12-05 01:15:22'), +(0, 2025, 11, 9, '2025-11-24', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:21:20', '2025-12-05 01:21:20'), +(0, 2025, 11, 9, '2025-11-24', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:21:20', '2025-12-05 01:21:20'), +(0, 2025, 11, 8, '2025-11-24', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:21:20', '2025-12-05 01:21:20'), +(0, 2025, 11, 8, '2025-11-24', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:21:20', '2025-12-05 01:21:20'), +(0, 2025, 11, 6, '2025-11-24', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:21:20', '2025-12-05 01:21:20'), +(0, 2025, 11, 6, '2025-11-24', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:21:20', '2025-12-05 01:21:20'), +(0, 2025, 11, 5, '2025-11-24', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:21:20', '2025-12-05 01:21:20'), +(0, 2025, 11, 5, '2025-11-24', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:21:20', '2025-12-05 01:21:20'), +(0, 2025, 11, 1, '2025-11-25', 2.00, 0.00, 2.00, 1, 0, 0, 'vacation-quarter', 1, 0, 0, '2025-12-05 01:21:59', '2025-12-05 01:21:59'), +(0, 2025, 11, 1, '2025-11-25', 8.00, 6.00, 2.00, 2, 1, 0, 'vacation-quarter', 1, 0, 0, '2025-12-05 01:21:59', '2025-12-05 01:21:59'), +(0, 2025, 11, 9, '2025-11-25', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:22:49', '2025-12-05 01:22:49'), +(0, 2025, 11, 9, '2025-11-25', 6.00, 6.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:22:49', '2025-12-05 01:22:49'), +(0, 2025, 11, 9, '2025-11-25', 10.00, 10.00, 0.00, 3, 1, 2, 'error', 0, 1, 0, '2025-12-05 01:22:49', '2025-12-05 01:22:49'), +(0, 2025, 11, 8, '2025-11-25', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:22:49', '2025-12-05 01:22:49'), +(0, 2025, 11, 8, '2025-11-25', 6.00, 6.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:22:49', '2025-12-05 01:22:49'), +(0, 2025, 11, 8, '2025-11-25', 10.00, 10.00, 0.00, 3, 1, 2, 'error', 0, 1, 0, '2025-12-05 01:22:49', '2025-12-05 01:22:49'), +(0, 2025, 11, 5, '2025-11-25', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:22:49', '2025-12-05 01:22:49'), +(0, 2025, 11, 5, '2025-11-25', 6.00, 6.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:22:49', '2025-12-05 01:22:49'), +(0, 2025, 11, 5, '2025-11-25', 10.00, 10.00, 0.00, 3, 1, 2, 'error', 0, 1, 0, '2025-12-05 01:22:49', '2025-12-05 01:22:49'), +(0, 2025, 11, 9, '2025-11-26', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:23:32', '2025-12-05 01:23:32'), +(0, 2025, 11, 9, '2025-11-26', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:23:32', '2025-12-05 01:23:32'), +(0, 2025, 11, 8, '2025-11-26', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:23:32', '2025-12-05 01:23:32'), +(0, 2025, 11, 8, '2025-11-26', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:23:32', '2025-12-05 01:23:32'), +(0, 2025, 11, 6, '2025-11-26', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:23:32', '2025-12-05 01:23:32'), +(0, 2025, 11, 6, '2025-11-26', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:23:32', '2025-12-05 01:23:32'), +(0, 2025, 11, 5, '2025-11-26', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:23:32', '2025-12-05 01:23:32'), +(0, 2025, 11, 5, '2025-11-26', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:23:32', '2025-12-05 01:23:32'), +(0, 2025, 11, 3, '2025-11-26', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:23:32', '2025-12-05 01:23:32'), +(0, 2025, 11, 3, '2025-11-26', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:23:32', '2025-12-05 01:23:32'), +(0, 2025, 11, 1, '2025-11-26', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:23:32', '2025-12-05 01:23:32'), +(0, 2025, 11, 1, '2025-11-26', 8.00, 8.00, 0.00, 2, 1, 1, 'error', 0, 1, 0, '2025-12-05 01:23:32', '2025-12-05 01:23:32'), +(0, 2025, 11, 1, '2025-11-27', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-05 01:24:00', '2025-12-05 01:24:00'), +(0, 2025, 11, 8, '2025-11-27', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-12-05 01:24:26', '2025-12-05 01:24:26'), +(0, 2025, 11, 6, '2025-11-27', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-12-05 01:24:26', '2025-12-05 01:24:26'), +(0, 2025, 11, 5, '2025-11-27', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-12-05 01:24:26', '2025-12-05 01:24:26'), +(0, 2025, 11, 3, '2025-11-27', 10.00, 10.00, 0.00, 1, 1, 0, 'overtime', 0, 0, 0, '2025-12-05 01:24:26', '2025-12-05 01:24:26'), +(0, 2025, 11, 4, '2025-11-28', 9.00, 0.00, 9.00, 2, 0, 0, 'vacation-full', 1, 0, 0, '2025-12-05 01:24:50', '2025-12-05 01:24:50'), +(0, 2025, 11, 6, '2025-11-28', 8.00, 0.00, 8.00, 1, 0, 0, 'vacation-full', 1, 0, 0, '2025-12-05 01:24:50', '2025-12-05 01:24:50'), +(0, 2025, 11, 8, '2025-11-28', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-05 01:25:17', '2025-12-05 01:25:17'), +(0, 2025, 11, 5, '2025-11-28', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-05 01:25:17', '2025-12-05 01:25:17'), +(0, 2025, 11, 3, '2025-11-28', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-05 01:25:17', '2025-12-05 01:25:17'), +(0, 2025, 11, 1, '2025-11-28', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-05 01:25:17', '2025-12-05 01:25:17'), +(0, 2025, 11, 5, '2025-11-05', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-05 01:26:26', '2025-12-05 01:26:26'), +(0, 2025, 11, 5, '2025-11-07', 16.00, 16.00, 0.00, 3, 3, 0, 'overtime-warning', 0, 0, 1, '2025-12-05 01:27:02', '2025-12-05 01:27:02'), +(0, 2025, 11, 5, '2025-11-07', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-12-05 01:27:04', '2025-12-05 01:27:04'), +(0, 2025, 11, 4, '2025-11-07', 16.00, 16.00, 0.00, 3, 3, 0, 'overtime-warning', 0, 0, 1, '2025-12-05 01:27:10', '2025-12-05 01:27:10'), +(0, 2025, 11, 4, '2025-11-07', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-12-05 01:27:13', '2025-12-05 01:27:13'), +(0, 2025, 11, 2, '2025-11-13', 8.00, 4.00, 4.00, 2, 1, 0, 'vacation-half', 1, 0, 0, '2025-12-05 01:28:08', '2025-12-05 01:28:08'), +(0, 2025, 11, 7, '2025-11-17', 8.00, 0.00, 8.00, 1, 0, 0, 'vacation-full', 1, 0, 0, '2025-12-05 01:28:40', '2025-12-05 01:28:40'), +(0, 2025, 11, 4, '2025-11-17', 0.00, 0.00, 0.00, 0, 0, 0, 'incomplete', NULL, NULL, 1, '2025-12-05 01:29:07', '2025-12-05 01:29:07'), +(0, 2025, 11, 4, '2025-11-17', 6.00, 6.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-05 01:30:38', '2025-12-05 01:30:38'), +(0, 2025, 11, 4, '2025-11-17', 8.00, 6.00, 2.00, 2, 1, 0, 'vacation-quarter', 1, 0, 0, '2025-12-05 01:30:38', '2025-12-05 01:30:38'), +(0, 2025, 11, 10, '2025-11-21', 8.00, 0.00, 8.00, 1, 0, 0, 'vacation-full', 1, 0, 0, '2025-12-05 01:31:07', '2025-12-05 01:31:07'), +(0, 2025, 11, 10, '2025-11-24', 8.00, 0.00, 8.00, 1, 0, 0, 'vacation-full', 1, 0, 0, '2025-12-05 01:31:34', '2025-12-05 01:31:34'), +(0, 2025, 11, 3, '2025-11-24', 8.00, 0.00, 8.00, 1, 0, 0, 'vacation-full', 1, 0, 0, '2025-12-05 01:31:40', '2025-12-05 01:31:40'), +(0, 2025, 11, 10, '2025-11-25', 8.00, 0.00, 8.00, 1, 0, 0, 'vacation-full', 1, 0, 0, '2025-12-05 01:31:53', '2025-12-05 01:31:53'), +(0, 2025, 11, 9, '2025-11-29', 0.00, 0.00, 0.00, 0, 0, 0, 'incomplete', NULL, NULL, 1, '2025-12-05 01:32:29', '2025-12-05 01:32:29'), +(0, 2025, 12, 10, '2025-12-05', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-05 06:53:42', '2025-12-05 06:53:42'), +(0, 2025, 12, 9, '2025-12-05', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-05 06:53:42', '2025-12-05 06:53:42'), +(0, 2025, 12, 4, '2025-12-05', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-05 06:53:43', '2025-12-05 06:53:43'), +(0, 2025, 12, 2, '2025-12-05', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-05 06:53:43', '2025-12-05 06:53:43'), +(0, 2025, 12, 10, '2025-12-06', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-06 05:46:14', '2025-12-06 05:46:14'), +(0, 2025, 12, 9, '2025-12-06', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-06 05:46:14', '2025-12-06 05:46:14'), +(0, 2025, 12, 4, '2025-12-06', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-06 05:46:14', '2025-12-06 05:46:14'), +(0, 2025, 12, 2, '2025-12-06', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-06 05:46:14', '2025-12-06 05:46:14'), +(0, 2025, 12, 1, '2025-12-08', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-09 07:33:48', '2025-12-09 07:33:48'), +(0, 2025, 12, 1, '2025-12-08', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-12-09 07:33:48', '2025-12-09 07:33:48'), +(0, 2025, 12, 5, '2025-12-08', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-09 07:33:48', '2025-12-09 07:33:48'), +(0, 2025, 12, 5, '2025-12-08', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-12-09 07:33:48', '2025-12-09 07:33:48'), +(0, 2025, 12, 3, '2025-12-08', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-09 07:33:48', '2025-12-09 07:33:48'), +(0, 2025, 12, 3, '2025-12-08', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-12-09 07:33:48', '2025-12-09 07:33:48'), +(0, 2025, 12, 10, '2025-12-08', 4.00, 4.00, 0.00, 1, 1, 0, 'partial', 0, 0, 1, '2025-12-09 07:33:48', '2025-12-09 07:33:48'), +(0, 2025, 12, 10, '2025-12-08', 8.00, 8.00, 0.00, 2, 2, 0, 'complete', 0, 0, 0, '2025-12-09 07:33:48', '2025-12-09 07:33:48'), +(0, 2025, 12, 9, '2025-12-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-09 07:34:05', '2025-12-09 07:34:05'), +(0, 2025, 12, 8, '2025-12-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-09 07:34:05', '2025-12-09 07:34:05'), +(0, 2025, 12, 2, '2025-12-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-09 07:34:05', '2025-12-09 07:34:05'), +(0, 2025, 12, 4, '2025-12-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-09 07:34:06', '2025-12-09 07:34:06'), +(0, 2025, 12, 6, '2025-12-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-09 07:34:36', '2025-12-09 07:34:36'), +(0, 2025, 12, 6, '2025-12-08', 16.00, 16.00, 0.00, 2, 2, 0, 'overtime-warning', 0, 0, 1, '2025-12-09 07:34:38', '2025-12-09 07:34:38'), +(0, 2025, 12, 6, '2025-12-08', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-09 07:34:43', '2025-12-09 07:34:43'), +(0, 2025, 12, 4, '2025-12-10', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-10 06:56:21', '2025-12-10 06:56:21'), +(0, 2025, 12, 2, '2025-12-10', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-10 06:56:21', '2025-12-10 06:56:21'), +(0, 2025, 12, 8, '2025-12-10', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-10 06:56:21', '2025-12-10 06:56:21'), +(0, 2025, 12, 6, '2025-12-10', 8.00, 8.00, 0.00, 1, 1, 0, 'complete', 0, 0, 0, '2025-12-10 06:56:21', '2025-12-10 06:56:21'); -- -------------------------------------------------------- @@ -1511,2612 +3928,204 @@ INSERT INTO `login_logs` (`log_id`, `user_id`, `login_time`, `logout_time`, `ip_ -- CREATE TABLE `password_change_logs` ( - `log_id` int(11) NOT NULL, - `user_id` int(11) NOT NULL, - `changed_by_user_id` int(11) DEFAULT NULL, - `changed_at` datetime DEFAULT current_timestamp(), - `change_type` enum('self','admin','reset','initial') DEFAULT 'self', - `ip_address` varchar(45) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - --- --- 테이블의 덤프 데이터 `password_change_logs` --- - -INSERT INTO `password_change_logs` (`log_id`, `user_id`, `changed_by_user_id`, `changed_at`, `change_type`, `ip_address`) VALUES -(1, 4, NULL, '2025-06-15 06:03:42', 'admin', NULL), -(2, 3, NULL, '2025-06-15 06:03:52', 'admin', NULL), -(3, 3, 3, '2025-06-15 06:32:30', 'self', NULL), -(4, 3, 1, '2025-06-15 07:40:39', 'admin', NULL), -(5, 5, 1, '2025-06-15 07:41:02', 'initial', NULL), -(6, 6, 1, '2025-06-15 07:41:32', 'initial', NULL); - --- -------------------------------------------------------- - --- --- 테이블 구조 `PipeSpecs` --- - -CREATE TABLE `PipeSpecs` ( - `spec_id` int(11) NOT NULL, - `material` varchar(50) NOT NULL COMMENT '재질 (예: SS400, STS304)', - `diameter_in` varchar(10) NOT NULL COMMENT '직경 (inch, 예: 2")', - `schedule` varchar(50) NOT NULL COMMENT '스케줄 (예: STD, SCH10, SCH40)' -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; - --- --- 테이블의 덤프 데이터 `PipeSpecs` --- - -INSERT INTO `PipeSpecs` (`spec_id`, `material`, `diameter_in`, `schedule`) VALUES -(2, '516-70N', '1', 'SCH80'), -(1, 'A106', '3/4', 'SCH80'); - --- -------------------------------------------------------- - --- --- 테이블 구조 `Processes` --- - -CREATE TABLE `Processes` ( - `process_id` int(11) NOT NULL, - `project_id` int(11) NOT NULL, - `process_name` varchar(255) NOT NULL, - `process_start` date NOT NULL, - `process_end` date DEFAULT NULL, - `planned_worker_count` int(11) NOT NULL, - `process_description` text DEFAULT NULL, - `note` text DEFAULT NULL, - `created_at` timestamp NULL DEFAULT current_timestamp(), - `updated_at` timestamp NULL DEFAULT current_timestamp() + `log_id` int NOT NULL, + `user_id` int NOT NULL, + `changed_by_user_id` int DEFAULT NULL, + `changed_at` datetime DEFAULT CURRENT_TIMESTAMP, + `change_type` enum('self','admin','reset','initial') COLLATE utf8mb4_unicode_ci DEFAULT 'self', + `ip_address` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -------------------------------------------------------- -- --- 테이블 구조 `Projects` +-- 테이블 구조 `projects` -- -CREATE TABLE `Projects` ( - `project_id` int(11) NOT NULL, - `job_no` varchar(50) NOT NULL, - `project_name` varchar(255) NOT NULL, +CREATE TABLE `projects` ( + `project_id` int NOT NULL, + `job_no` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, + `project_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `contract_date` date DEFAULT NULL, `due_date` date DEFAULT NULL, - `delivery_method` varchar(100) DEFAULT NULL, - `site` varchar(100) DEFAULT NULL, - `pm` varchar(100) DEFAULT NULL, - `created_at` timestamp NULL DEFAULT current_timestamp(), - `updated_at` timestamp NULL DEFAULT current_timestamp() + `delivery_method` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `site` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `pm` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `is_active` tinyint(1) DEFAULT '1' COMMENT '프로젝트 활성화 상태 (TRUE: 활성, FALSE: 비활성)', + `completed_date` date DEFAULT NULL COMMENT '프로젝트 완료일 (납품일)', + `project_status` enum('planning','active','completed','cancelled') COLLATE utf8mb4_unicode_ci DEFAULT 'active' COMMENT '프로젝트 진행 상태' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- --- 테이블의 덤프 데이터 `Projects` +-- 테이블의 덤프 데이터 `projects` -- -INSERT INTO `Projects` (`project_id`, `job_no`, `project_name`, `contract_date`, `due_date`, `delivery_method`, `site`, `pm`, `created_at`, `updated_at`) VALUES -(1, 'TKO-24008P', 'YHP Project', '2024-05-16', '2025-05-16', 'FOB', 'Quang Ninh(Vietnam)', '장형태', '2025-04-15 22:40:28', '2025-04-15 22:40:28'), -(2, 'TKG-24009P', '한화에어로스페이스 순천', '2024-06-05', '2025-05-31', '.', '순천', '장형태', '2025-04-15 22:42:41', '2025-04-15 22:42:41'), -(3, 'TKG-24011P', '효성화학 에틸렌 탱크 건설공사', '2024-06-22', '2025-12-25', '.', '울산', '김길종', '2025-04-15 22:43:53', '2025-04-15 22:43:53'), -(4, 'TKG-24013P', '김천 솔라 파워 그린 수소 Project', '2024-10-08', '2025-07-25', '.', '김천', '김길종', '2025-04-15 22:44:57', '2025-04-15 22:44:57'), -(5, 'TKG-24016P', 'LG Chem P3RE Project', '2024-11-27', '2025-09-30', '.', '.', '장형태', '2025-04-15 22:46:36', '2025-04-15 22:46:36'), -(7, 'TKO-25003F', '25년 안전보건시설설비', '2025-01-03', '2025-12-31', '.', '.', '.', '2025-04-15 22:47:32', '2025-04-15 22:47:32'), -(8, 'TKG-25007P', 'P Project', '2025-01-16', '2025-10-31', '.', '오창읍', '장형태', '2025-04-15 22:48:50', '2025-04-15 22:48:50'), -(10, 'TKR-25008P', 'DIG Airgas LG CHEM', '2025-01-23', '2025-10-15', '.', '여수', '서태원', '2025-04-15 22:50:05', '2025-04-15 22:50:05'), -(11, 'TKR-25010P', 'FK FISCHER Project', '2025-03-12', '2025-11-30', '.', '울산', '전상신', '2025-04-15 22:51:12', '2025-04-15 22:51:12'), -(12, 'TKO-24007P', 'MP7 Project', '2024-07-03', '2025-01-05', '.', '.', '윤지민', '2025-04-15 23:56:26', '2025-04-15 23:56:26'), -(13, '연차/휴무', '연차/휴무', '2025-01-01', '2025-12-31', '.', '.', '.', '2025-04-16 01:58:23', '2025-04-16 01:58:23'), -(14, 'TKO-25009R', 'M Project', '2025-08-01', '2025-12-31', '', '', '이민후', '2025-09-28 22:13:33', '2025-09-28 22:13:33'); +INSERT INTO `projects` (`project_id`, `job_no`, `project_name`, `contract_date`, `due_date`, `delivery_method`, `site`, `pm`, `created_at`, `updated_at`, `is_active`, `completed_date`, `project_status`) VALUES +(1, 'TKO-24008P', 'YHP Project', NULL, NULL, NULL, 'Quang Ninh(Vietnam)', '장형태', '2025-04-15 22:40:28', '2025-04-15 22:40:28', 0, NULL, 'active'), +(2, 'TKG-24009P', '한화에어로스페이스 순천', NULL, NULL, NULL, '순천', '장형태', '2025-04-15 22:42:41', '2025-04-15 22:42:41', 0, NULL, 'active'), +(3, 'TKG-24011P', '효성화학 에틸렌 탱크 건설공사', NULL, NULL, NULL, '울산', '김길종', '2025-04-15 22:43:53', '2025-04-15 22:43:53', 0, NULL, 'active'), +(4, 'TKG-24013P', '김천 솔라 파워 그린 수소 Project', NULL, NULL, NULL, '김천', '김길종', '2025-04-15 22:44:57', '2025-04-15 22:44:57', 0, NULL, 'active'), +(5, 'TKG-24016P', 'LG Chem P3RE Project', NULL, NULL, NULL, '.', '장형태', '2025-04-15 22:46:36', '2025-04-15 22:46:36', 0, NULL, 'active'), +(7, 'TKO-25003F', '25년 안전보건시설설비', NULL, NULL, NULL, '.', '.', '2025-04-15 22:47:32', '2025-04-15 22:47:32', 0, NULL, 'active'), +(8, 'TKG-25007P', 'P Project', NULL, NULL, NULL, '오창읍', '장형태', '2025-04-15 22:48:50', '2025-04-15 22:48:50', 0, NULL, 'active'), +(10, 'TKR-25008P', 'DIG Airgas LG CHEM', NULL, NULL, NULL, '여수', '서태원', '2025-04-15 22:50:05', '2025-04-15 22:50:05', 0, NULL, 'active'), +(11, 'TKR-25010P', 'FK FISCHER Project', NULL, NULL, NULL, '울산', '전상신', '2025-04-15 22:51:12', '2025-04-15 22:51:12', 0, NULL, 'active'), +(12, 'TKO-24007P', 'MP7 Project', NULL, NULL, NULL, '.', '윤지민', '2025-04-15 23:56:26', '2025-04-15 23:56:26', 0, NULL, 'active'), +(13, '연차/휴무', '연차/휴무', '2025-01-01', '2025-12-31', '.', '.', '.', '2025-04-16 01:58:23', '2025-04-16 01:58:23', 1, NULL, 'active'), +(14, 'TKO-25009R', 'M Project', NULL, NULL, NULL, NULL, '이민후', '2025-09-28 22:13:33', '2025-09-28 22:13:33', 0, NULL, 'active'), +(15, 'TKR-25013P', 'HAS MCS Plnat', NULL, '2026-03-31', NULL, NULL, NULL, '2026-01-06 06:16:37', '2026-01-06 06:16:37', 1, NULL, 'active'), +(16, 'TKO-26003F', '안전보건시설설비', '2026-01-01', '2026-12-31', NULL, NULL, NULL, '2026-01-06 06:17:33', '2026-01-06 06:17:33', 1, NULL, 'active'); -- -------------------------------------------------------- -- --- 테이블 구조 `Tasks` +-- 테이블 구조 `users` -- -CREATE TABLE `Tasks` ( - `task_id` int(11) NOT NULL, - `category` varchar(255) NOT NULL, - `subcategory` varchar(255) DEFAULT NULL, - `task_name` varchar(255) NOT NULL, - `description` text DEFAULT NULL, - `created_at` timestamp NULL DEFAULT current_timestamp(), - `updated_at` timestamp NULL DEFAULT current_timestamp() -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - --- --- 테이블의 덤프 데이터 `Tasks` --- - -INSERT INTO `Tasks` (`task_id`, `category`, `subcategory`, `task_name`, `description`, `created_at`, `updated_at`) VALUES -(1, 'Base', 'Fabrication', '용접', '...', '2025-04-15 10:41:43', '2025-04-15 10:41:43'), -(3, 'Vessel', 'MI and Marking', 'Marking', '..', '2025-04-15 22:25:58', '2025-04-15 22:25:58'), -(4, 'Vessel', 'Cutting', '자재 커팅', '..', '2025-04-15 22:26:17', '2025-04-15 22:26:17'), -(5, 'Vessel', 'Fabrication', '용접', '..', '2025-04-15 22:26:43', '2025-04-15 22:26:43'), -(7, 'PKG', 'Pipe Pre-Fabrication', '취부&용접', '배관사 1명\n용접사 1명', '2025-04-15 22:37:14', '2025-04-15 22:37:14'), -(8, 'PKG', '1st Piping Assembly', '1차 조립', '.', '2025-04-15 22:38:49', '2025-04-15 22:38:49'), -(9, 'PKG', 'Re-Assembly', '재조립', '.', '2025-04-15 22:39:18', '2025-04-15 22:39:18'), -(13, '작업지원', '구매팀', '.', '.', '2025-04-16 03:03:40', '2025-04-16 03:03:40'), -(14, '기타', '시설설비제작', '.', '.', '2025-04-16 03:30:53', '2025-04-16 03:30:53'), -(15, '기타', '휴가/연차/휴무', '.', '.', '2025-04-16 05:18:13', '2025-04-16 05:18:13'), -(16, 'PKG', '제품설치', '설치작업', 'Skid, 용기 등 설치', '2025-04-29 04:39:36', '2025-04-29 04:39:36'), -(18, '작업지원', '품질팀', 'test지원', '.', '2025-06-25 07:07:08', '2025-06-25 07:07:08'); - --- -------------------------------------------------------- - --- --- 테이블 구조 `uploaded_documents` --- - -CREATE TABLE `uploaded_documents` ( - `id` int(11) NOT NULL, - `title` varchar(255) NOT NULL, - `tags` varchar(255) DEFAULT NULL, - `description` text DEFAULT NULL, - `original_name` varchar(255) DEFAULT NULL, - `stored_name` varchar(255) NOT NULL, - `file_path` varchar(500) DEFAULT NULL, - `file_type` varchar(50) DEFAULT NULL, - `file_size` int(11) DEFAULT NULL, - `submitted_by` varchar(100) DEFAULT NULL, - `dt_imported` tinyint(1) DEFAULT 0, - `dt_uuid` varchar(100) DEFAULT NULL, - `of_task_created` tinyint(1) DEFAULT 0, - `created_at` datetime DEFAULT current_timestamp(), - `updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp() -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - --- -------------------------------------------------------- - --- --- 테이블 구조 `Users` --- - -CREATE TABLE `Users` ( - `user_id` int(11) NOT NULL, - `username` varchar(100) NOT NULL, - `password` varchar(255) NOT NULL, - `role` varchar(30) DEFAULT NULL, - `created_at` timestamp NULL DEFAULT current_timestamp(), - `access_level` varchar(30) DEFAULT NULL, - `worker_id` int(11) DEFAULT NULL, - `is_active` tinyint(1) DEFAULT 1, +CREATE TABLE `users` ( + `user_id` int NOT NULL, + `username` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL, + `password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `role` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `access_level` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `worker_id` int DEFAULT NULL, + `is_active` tinyint(1) DEFAULT '1', `last_login_at` datetime DEFAULT NULL, `password_changed_at` datetime DEFAULT NULL, - `failed_login_attempts` int(11) DEFAULT 0, + `failed_login_attempts` int DEFAULT '0', `locked_until` datetime DEFAULT NULL, - `name` varchar(50) DEFAULT NULL, - `email` varchar(255) DEFAULT NULL, - `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() + `name` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `email` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- --- 테이블의 덤프 데이터 `Users` +-- 테이블의 덤프 데이터 `users` -- -INSERT INTO `Users` (`user_id`, `username`, `password`, `role`, `created_at`, `access_level`, `worker_id`, `is_active`, `last_login_at`, `password_changed_at`, `failed_login_attempts`, `locked_until`, `name`, `email`, `updated_at`) VALUES -(1, 'hyungi', '$2b$10$lwSfKipx0fQ.9nfMUBmzt.WXzerdxuT5MVX4b3YhFeHxyYlUjM7bi', 'admin', '2025-05-06 05:03:02', 'system', NULL, 1, '2025-10-10 23:13:57', '2025-05-06 05:03:02', 0, NULL, NULL, NULL, '2025-10-10 23:13:57'), -(3, '김두수', '$2a$10$z3i2EVOotRFBj.KHzx5LQOKlXD0QHLNFEvJcd6FlO6/1TCYGk6SSu', 'leader', '2025-06-07 23:48:35', 'group_leader', 1, 1, '2025-10-10 23:32:38', '2025-06-15 07:40:39', 0, NULL, '김두수', NULL, '2025-10-10 23:32:38'), -(4, '김아무개', '$2a$10$QAJIoPyi.apz91exp8GsiO/prAD5Xwanht6XImP1jvKsy/7Ba/b8.', 'user', '2025-06-11 08:03:59', 'worker', NULL, 1, '2025-06-15 23:28:04', '2025-06-15 06:03:42', 0, NULL, '김아무개', NULL, '2025-06-15 23:28:04'), -(5, '임영규', '$2a$10$66ps/MEEi4BVABfJc5P0y.yCap09NhTMyd1A/7rFVxESytQGlB3wC', NULL, '2025-06-15 07:41:02', 'group_leader', 3, 1, '2025-10-01 06:55:37', '2025-06-15 07:41:02', 0, NULL, '임영규', NULL, '2025-10-01 06:55:37'), -(6, '반치원', '$2a$10$jcn6f7flRLZlr5yKQcXDIePodRK0rsM4deNnNGjuOlredeTVsRYZ6', NULL, '2025-06-15 07:41:32', 'group_leader', 3, 1, '2025-09-11 06:40:19', '2025-06-15 07:41:32', 0, NULL, '반치원', NULL, '2025-09-11 06:40:19'); +INSERT INTO `users` (`user_id`, `username`, `password`, `role`, `created_at`, `access_level`, `worker_id`, `is_active`, `last_login_at`, `password_changed_at`, `failed_login_attempts`, `locked_until`, `name`, `email`, `updated_at`) VALUES +(1, 'hyungi', '$2b$10$lwSfKipx0fQ.9nfMUBmzt.WXzerdxuT5MVX4b3YhFeHxyYlUjM7bi', 'admin', '2025-05-06 05:03:02', 'system', NULL, 1, '2025-12-02 11:26:49', '2025-05-06 05:03:02', 0, NULL, NULL, NULL, '2025-12-02 02:26:49'), +(3, '김두수', '$2a$10$z3i2EVOotRFBj.KHzx5LQOKlXD0QHLNFEvJcd6FlO6/1TCYGk6SSu', 'leader', '2025-06-07 23:48:35', 'group_leader', 1, 1, '2026-02-03 12:52:32', '2025-06-15 07:40:39', 0, NULL, '김두수', NULL, '2026-02-03 03:52:32'), +(4, '김아무개', '$2a$10$QAJIoPyi.apz91exp8GsiO/prAD5Xwanht6XImP1jvKsy/7Ba/b8.', 'user', '2025-06-11 08:03:59', 'worker', NULL, 0, '2025-06-15 23:28:04', '2025-06-15 06:03:42', 0, NULL, '김아무개', NULL, '2025-11-05 02:48:03'), +(5, '임영규', '$2a$10$66ps/MEEi4BVABfJc5P0y.yCap09NhTMyd1A/7rFVxESytQGlB3wC', 'leader', '2025-06-15 07:41:02', 'group_leader', 3, 1, '2025-12-10 15:55:48', '2025-06-15 07:41:02', 0, NULL, '임영규', NULL, '2025-12-10 06:55:48'), +(6, '반치원', '$2a$10$jcn6f7flRLZlr5yKQcXDIePodRK0rsM4deNnNGjuOlredeTVsRYZ6', 'leader', '2025-06-15 07:41:32', 'group_leader', 3, 1, '2025-11-05 01:56:13', '2025-06-15 07:41:32', 5, '2025-11-25 16:22:46', '반치원', NULL, '2025-11-25 07:07:46'), +(7, 'khahn', '$2a$10$vQcJ3C37TPGweYF8rok2quzN2DK9lgxiqDAXV38vvPVjRdz3l6M8y', 'admin', '2025-11-05 02:18:15', 'admin', NULL, 1, '2025-11-05 15:56:23', NULL, 0, NULL, 'khahn', NULL, '2025-11-05 06:56:23'), +(8, '그룹장', '$2a$10$/8yMaLoMSR0epA3zDH.H7eq2vB.5EmB9jZfZKPepR.S07LCXZzH0C', 'leader', '2025-11-05 02:51:29', 'group_leader', NULL, 1, '2025-11-05 02:52:07', NULL, 0, NULL, '그룹장', NULL, '2025-11-05 02:52:07'), +(9, '작업자', '$2a$10$n8ZY0H0UtBhND7OuUcwzKOjLj26s5oNHmRma9toIV/R5bxB3NoL3q', 'user', '2025-11-05 02:51:45', 'worker', NULL, 1, '2025-11-05 02:51:57', NULL, 0, NULL, '작업자', NULL, '2025-11-05 02:51:57'); -- -------------------------------------------------------- -- --- 테이블 구조 `Workers` +-- 테이블 구조 `vacation_types` -- -CREATE TABLE `Workers` ( - `worker_id` int(11) NOT NULL, - `worker_name` varchar(100) NOT NULL, +CREATE TABLE `vacation_types` ( + `id` int NOT NULL, + `type_code` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '휴가 유형 코드', + `type_name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '휴가 유형명', + `hours_deduction` decimal(4,2) NOT NULL COMMENT '차감 시간', + `description` text COLLATE utf8mb4_unicode_ci COMMENT '설명', + `is_active` tinyint(1) DEFAULT '1' COMMENT '활성 상태', + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='휴가 유형 관리 테이블'; + +-- +-- 테이블의 덤프 데이터 `vacation_types` +-- + +INSERT INTO `vacation_types` (`id`, `type_code`, `type_name`, `hours_deduction`, `description`, `is_active`, `created_at`, `updated_at`) VALUES +(1, 'ANNUAL_FULL', '연차', 8.00, '하루 전체 연차', 1, '2025-11-03 06:48:45', '2025-11-03 06:48:45'), +(2, 'ANNUAL_HALF', '반차', 4.00, '반일 연차', 1, '2025-11-03 06:48:45', '2025-11-03 06:48:45'), +(3, 'ANNUAL_QUARTER', '반반차', 2.00, '1/4일 연차', 1, '2025-11-03 06:48:45', '2025-11-03 06:48:45'), +(4, 'SICK_FULL', '병가', 8.00, '하루 전체 병가', 1, '2025-11-03 06:48:45', '2025-11-03 06:48:45'), +(5, 'SICK_HALF', '반일병가', 4.00, '반일 병가', 1, '2025-11-03 06:48:45', '2025-11-03 06:48:45'); + +-- -------------------------------------------------------- + +-- +-- 테이블 구조 `workers` +-- + +CREATE TABLE `workers` ( + `worker_id` int NOT NULL, + `worker_name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL, `join_date` date DEFAULT NULL, - `job_type` varchar(100) DEFAULT NULL, + `job_type` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `salary` decimal(10,2) DEFAULT NULL, - `annual_leave` int(11) DEFAULT NULL, - `status` text DEFAULT 'active', - `created_at` timestamp NULL DEFAULT current_timestamp(), - `updated_at` timestamp NULL DEFAULT current_timestamp() + `annual_leave` int DEFAULT NULL, + `status` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT 'active', + `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `phone_number` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `email` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `hire_date` date DEFAULT NULL, + `department` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `notes` text COLLATE utf8mb4_unicode_ci ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- --- 테이블의 덤프 데이터 `Workers` +-- 테이블의 덤프 데이터 `workers` -- -INSERT INTO `Workers` (`worker_id`, `worker_name`, `join_date`, `job_type`, `salary`, `annual_leave`, `status`, `created_at`, `updated_at`) VALUES -(1, '김두수', '2025-04-01', '배관', 220000.00, 15, '..', '2025-04-15 22:23:08', '2025-04-15 22:23:08'), -(2, '임영규', '2025-04-01', '배관', 220000.00, 15, '..', '2025-04-15 22:23:17', '2025-04-15 22:23:17'), -(3, '반치원', '2025-04-01', '배관', 220000.00, 15, '..', '2025-04-15 22:23:22', '2025-04-15 22:23:22'), -(4, '황인용', '2025-04-01', '가공,조공', 220000.00, 15, '..', '2025-04-15 22:23:33', '2025-04-15 22:23:33'), -(5, '표영진', '2025-04-01', '가공,조공', 220000.00, 15, '..', '2025-04-15 22:23:38', '2025-04-15 22:23:38'), -(6, '김윤섭', '2025-04-01', '용접', 220000.00, 15, '..', '2025-04-15 22:23:46', '2025-04-15 22:23:46'), -(7, '이창호', '2025-04-01', '용접,배관', 220000.00, 15, '..', '2025-04-15 22:23:51', '2025-04-15 22:23:51'), -(8, '최광욱', '2025-04-01', '용접', 220000.00, 15, '..', '2025-04-15 22:23:57', '2025-04-15 22:23:57'), -(9, '박현수', '2025-04-01', '용접', 220000.00, 15, '..', '2025-04-15 22:24:01', '2025-04-15 22:24:01'), -(10, '조윤호', '2025-04-01', '용접', 220000.00, 15, '..', '2025-04-15 22:24:07', '2025-04-15 22:24:07'); +INSERT INTO `workers` (`worker_id`, `worker_name`, `join_date`, `job_type`, `salary`, `annual_leave`, `status`, `created_at`, `updated_at`, `phone_number`, `email`, `hire_date`, `department`, `notes`) VALUES +(1, '김두수', '2025-04-01', '배관', 2200000.00, 15, 'active', '2025-04-15 13:23:17', '2025-04-15 13:23:17', NULL, NULL, NULL, NULL, NULL), +(2, '임영규', NULL, 'leader', NULL, NULL, 'active', '2025-04-15 13:23:17', '2025-04-15 13:23:17', NULL, NULL, NULL, NULL, NULL), +(3, '반치원', '2025-04-01', '배관', 2200000.00, 15, 'active', '2025-04-15 13:23:22', '2025-04-15 13:23:22', NULL, NULL, NULL, NULL, NULL), +(4, '황인용', '2025-04-01', '가공,조공', 2200000.00, 15, 'active', '2025-04-15 13:23:33', '2025-04-15 13:23:33', NULL, NULL, NULL, NULL, NULL), +(5, '표영진', '2025-04-01', '가공,조공', 2200000.00, 15, 'active', '2025-04-15 13:23:38', '2025-04-15 13:23:38', NULL, NULL, NULL, NULL, NULL), +(6, '김윤섭', NULL, 'worker', NULL, NULL, 'active', '2025-04-15 13:23:46', '2025-04-15 13:23:46', NULL, NULL, NULL, NULL, NULL), +(7, '이창호', NULL, 'worker', NULL, NULL, 'inactive', '2025-04-15 13:23:51', '2025-04-15 13:23:51', NULL, NULL, NULL, NULL, NULL), +(8, '최광욱', '2025-04-01', '용접', 2200000.00, 15, 'active', '2025-04-15 13:23:57', '2025-04-15 13:23:57', NULL, NULL, NULL, NULL, NULL), +(9, '박현수', '2025-04-01', '용접', 2200000.00, 15, 'active', '2025-04-15 13:24:01', '2025-04-15 13:24:01', NULL, NULL, NULL, NULL, NULL), +(10, '조윤호', NULL, 'worker', NULL, NULL, 'active', '2025-04-15 13:24:07', '2025-04-15 13:24:07', NULL, NULL, NULL, NULL, NULL), +(11, '조승민', NULL, 'worker', NULL, NULL, 'active', '2026-01-06 06:18:27', '2026-01-06 06:18:27', NULL, NULL, '2026-01-05', '생산팀', '용접사'); -- -------------------------------------------------------- -- --- 테이블 구조 `worker_groups` +-- 테이블 구조 `worker_vacation_balance` -- -CREATE TABLE `worker_groups` ( - `id` int(11) NOT NULL, - `group_leader_id` int(11) NOT NULL, - `worker_id` int(11) NOT NULL, - `group_name` varchar(100) DEFAULT NULL, - `is_active` tinyint(1) DEFAULT 1, - `created_at` timestamp NOT NULL DEFAULT current_timestamp(), - `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +CREATE TABLE `worker_vacation_balance` ( + `id` int NOT NULL, + `worker_id` int NOT NULL COMMENT '작업자 ID', + `annual_leave_total` decimal(5,2) DEFAULT '15.00' COMMENT '총 연차 일수', + `annual_leave_used` decimal(5,2) DEFAULT '0.00' COMMENT '사용 연차 일수', + `sick_leave_total` decimal(5,2) DEFAULT '10.00' COMMENT '총 병가 일수', + `sick_leave_used` decimal(5,2) DEFAULT '0.00' COMMENT '사용 병가 일수', + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='작업자별 휴가 잔여 관리 테이블'; -- -------------------------------------------------------- -- --- 테이블 구조 `WorkReports` +-- 테이블 구조 `work_attendance_types` -- -CREATE TABLE `WorkReports` ( - `id` int(11) NOT NULL, - `date` date NOT NULL, - `worker_id` int(11) NOT NULL, - `project_id` int(11) NOT NULL, - `morning_task_id` int(11) DEFAULT NULL, - `afternoon_task_id` int(11) DEFAULT NULL, - `overtime_hours` decimal(4,1) DEFAULT 0.0, - `overtime_task_id` int(11) DEFAULT NULL, - `work_details` text DEFAULT NULL, - `note` text DEFAULT NULL, - `memo` text DEFAULT NULL, - `created_at` timestamp NULL DEFAULT current_timestamp(), - `updated_at` timestamp NULL DEFAULT current_timestamp(), - `morning_project_id` int(11) DEFAULT NULL, - `afternoon_project_id` int(11) DEFAULT NULL, - `overtime_project_id` int(11) DEFAULT NULL, - `task_id` int(11) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +CREATE TABLE `work_attendance_types` ( + `id` int NOT NULL, + `type_code` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '근로 유형 코드', + `type_name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '근로 유형명', + `description` text COLLATE utf8mb4_unicode_ci COMMENT '설명', + `is_active` tinyint(1) DEFAULT '1' COMMENT '활성 상태', + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='근로 유형 관리 테이블'; -- --- 테이블의 덤프 데이터 `WorkReports` +-- 테이블의 덤프 데이터 `work_attendance_types` -- -INSERT INTO `WorkReports` (`id`, `date`, `worker_id`, `project_id`, `morning_task_id`, `afternoon_task_id`, `overtime_hours`, `overtime_task_id`, `work_details`, `note`, `memo`, `created_at`, `updated_at`, `morning_project_id`, `afternoon_project_id`, `overtime_project_id`, `task_id`) VALUES -(176, '2025-01-02', 1, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:40:56', '2025-04-16 05:40:56', NULL, NULL, NULL, 9), -(177, '2025-01-02', 2, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:40:56', '2025-04-16 05:40:56', NULL, NULL, NULL, 9), -(178, '2025-01-02', 4, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:40:56', '2025-04-16 05:40:56', NULL, NULL, NULL, 9), -(179, '2025-01-02', 7, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:40:56', '2025-04-16 05:40:56', NULL, NULL, NULL, 9), -(180, '2025-01-02', 8, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:40:56', '2025-04-16 05:40:56', NULL, NULL, NULL, 9), -(181, '2025-01-02', 9, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:40:56', '2025-04-16 05:40:56', NULL, NULL, NULL, 9), -(182, '2025-01-02', 6, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:40:56', '2025-04-16 05:40:56', NULL, NULL, NULL, 9), -(183, '2025-01-02', 3, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 05:40:56', '2025-04-16 05:40:56', NULL, NULL, NULL, 15), -(194, '2025-01-03', 1, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:42:07', '2025-04-16 05:42:07', NULL, NULL, NULL, 9), -(195, '2025-01-03', 2, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:42:07', '2025-04-16 05:42:07', NULL, NULL, NULL, 9), -(196, '2025-01-03', 3, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 05:42:07', '2025-04-16 05:42:07', NULL, NULL, NULL, 15), -(197, '2025-01-03', 7, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:42:07', '2025-04-16 05:42:07', NULL, NULL, NULL, 9), -(198, '2025-01-03', 8, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 05:42:07', '2025-04-16 05:42:07', NULL, NULL, NULL, 15), -(199, '2025-01-03', 9, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:42:07', '2025-04-16 05:42:07', NULL, NULL, NULL, 9), -(200, '2025-01-03', 6, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:42:07', '2025-04-16 05:42:07', NULL, NULL, NULL, 9), -(201, '2025-01-03', 4, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:42:07', '2025-04-16 05:42:07', NULL, NULL, NULL, 9), -(202, '2025-01-03', 5, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:42:07', '2025-04-16 05:42:07', NULL, NULL, NULL, 9), -(203, '2025-01-04', 7, 12, NULL, NULL, NULL, NULL, '휴일근무', NULL, NULL, '2025-04-16 05:43:25', '2025-04-16 05:43:25', NULL, NULL, NULL, 12), -(204, '2025-01-06', 1, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:44:03', '2025-04-16 05:44:03', NULL, NULL, NULL, 12), -(205, '2025-01-06', 3, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:44:03', '2025-04-16 05:44:03', NULL, NULL, NULL, 12), -(206, '2025-01-06', 2, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:44:04', '2025-04-16 05:44:04', NULL, NULL, NULL, 12), -(207, '2025-01-06', 7, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:44:04', '2025-04-16 05:44:04', NULL, NULL, NULL, 12), -(208, '2025-01-06', 8, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:44:04', '2025-04-16 05:44:04', NULL, NULL, NULL, 12), -(209, '2025-01-06', 9, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:44:04', '2025-04-16 05:44:04', NULL, NULL, NULL, 12), -(210, '2025-01-06', 6, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:44:04', '2025-04-16 05:44:04', NULL, NULL, NULL, 12), -(211, '2025-01-06', 4, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:44:04', '2025-04-16 05:44:04', NULL, NULL, NULL, 12), -(212, '2025-01-06', 5, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:44:04', '2025-04-16 05:44:04', NULL, NULL, NULL, 12), -(213, '2025-01-07', 1, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:45:24', '2025-04-16 05:45:24', NULL, NULL, NULL, 12), -(214, '2025-01-07', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:45:24', '2025-04-16 05:45:24', NULL, NULL, NULL, 1), -(215, '2025-01-07', 3, 12, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-16 05:45:24', '2025-04-16 05:45:24', NULL, NULL, NULL, 12), -(216, '2025-01-07', 7, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:45:24', '2025-04-16 05:45:24', NULL, NULL, NULL, 12), -(217, '2025-01-07', 8, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:45:24', '2025-04-16 05:45:24', NULL, NULL, NULL, 1), -(218, '2025-01-07', 9, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:45:24', '2025-04-16 05:45:24', NULL, NULL, NULL, 12), -(219, '2025-01-07', 6, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:45:24', '2025-04-16 05:45:24', NULL, NULL, NULL, 12), -(220, '2025-01-07', 4, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:45:25', '2025-04-16 05:45:25', NULL, NULL, NULL, 12), -(221, '2025-01-07', 5, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:45:25', '2025-04-16 05:45:25', NULL, NULL, NULL, 1), -(222, '2025-01-08', 1, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:46:50', '2025-04-16 05:46:50', NULL, NULL, NULL, 13), -(223, '2025-01-08', 2, 2, NULL, NULL, 1.0, NULL, '근무', NULL, NULL, '2025-04-16 05:46:50', '2025-04-16 05:46:50', NULL, NULL, NULL, 1), -(224, '2025-01-08', 3, 12, NULL, NULL, 1.0, NULL, '근무', NULL, NULL, '2025-04-16 05:46:50', '2025-04-16 05:46:50', NULL, NULL, NULL, 13), -(225, '2025-01-08', 7, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:46:50', '2025-04-16 05:46:50', NULL, NULL, NULL, 13), -(226, '2025-01-08', 8, 2, NULL, NULL, 1.0, NULL, '근무', NULL, NULL, '2025-04-16 05:46:50', '2025-04-16 05:46:50', NULL, NULL, NULL, 1), -(227, '2025-01-08', 9, 12, NULL, NULL, 1.0, NULL, '근무', NULL, NULL, '2025-04-16 05:46:50', '2025-04-16 05:46:50', NULL, NULL, NULL, 13), -(228, '2025-01-08', 6, 12, NULL, NULL, 1.0, NULL, '근무', NULL, NULL, '2025-04-16 05:46:50', '2025-04-16 05:46:50', NULL, NULL, NULL, 13), -(229, '2025-01-08', 4, 2, NULL, NULL, 1.0, NULL, '근무', NULL, NULL, '2025-04-16 05:46:50', '2025-04-16 05:46:50', NULL, NULL, NULL, 1), -(230, '2025-01-08', 5, 12, NULL, NULL, 1.0, NULL, '근무', NULL, NULL, '2025-04-16 05:46:50', '2025-04-16 05:46:50', NULL, NULL, NULL, 13), -(231, '2025-01-09', 1, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:48:02', '2025-04-16 05:48:02', NULL, NULL, NULL, 13), -(232, '2025-01-09', 2, 2, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-16 05:48:02', '2025-04-16 05:48:02', NULL, NULL, NULL, 1), -(233, '2025-01-09', 3, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:48:02', '2025-04-16 05:48:02', NULL, NULL, NULL, 13), -(234, '2025-01-09', 7, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:48:02', '2025-04-16 05:48:02', NULL, NULL, NULL, 13), -(235, '2025-01-09', 8, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:48:02', '2025-04-16 05:48:02', NULL, NULL, NULL, 1), -(236, '2025-01-09', 6, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:48:02', '2025-04-16 05:48:02', NULL, NULL, NULL, 13), -(237, '2025-01-09', 4, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:48:02', '2025-04-16 05:48:02', NULL, NULL, NULL, 1), -(238, '2025-01-09', 5, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:48:02', '2025-04-16 05:48:02', NULL, NULL, NULL, 13), -(239, '2025-01-09', 9, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:48:02', '2025-04-16 05:48:02', NULL, NULL, NULL, 13), -(240, '2025-01-10', 1, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:49:16', '2025-04-16 05:49:16', NULL, NULL, NULL, 13), -(241, '2025-01-10', 2, 2, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-16 05:49:17', '2025-04-16 05:49:17', NULL, NULL, NULL, 1), -(242, '2025-01-10', 3, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:49:17', '2025-04-16 05:49:17', NULL, NULL, NULL, 13), -(243, '2025-01-10', 7, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:49:17', '2025-04-16 05:49:17', NULL, NULL, NULL, 13), -(244, '2025-01-10', 8, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:49:17', '2025-04-16 05:49:17', NULL, NULL, NULL, 1), -(245, '2025-01-10', 9, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:49:17', '2025-04-16 05:49:17', NULL, NULL, NULL, 13), -(246, '2025-01-10', 6, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 05:49:17', '2025-04-16 05:49:17', NULL, NULL, NULL, 15), -(247, '2025-01-10', 4, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:49:17', '2025-04-16 05:49:17', NULL, NULL, NULL, 1), -(248, '2025-01-10', 5, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:49:17', '2025-04-16 05:49:17', NULL, NULL, NULL, 13), -(249, '2025-01-13', 1, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:50:22', '2025-04-16 05:50:22', NULL, NULL, NULL, 13), -(250, '2025-01-13', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:50:22', '2025-04-16 05:50:22', NULL, NULL, NULL, 1), -(251, '2025-01-13', 3, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:50:22', '2025-04-16 05:50:22', NULL, NULL, NULL, 1), -(252, '2025-01-13', 7, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:50:22', '2025-04-16 05:50:22', NULL, NULL, NULL, 13), -(253, '2025-01-13', 8, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:50:22', '2025-04-16 05:50:22', NULL, NULL, NULL, 1), -(254, '2025-01-13', 9, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:50:22', '2025-04-16 05:50:22', NULL, NULL, NULL, 13), -(255, '2025-01-13', 6, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:50:22', '2025-04-16 05:50:22', NULL, NULL, NULL, 1), -(256, '2025-01-13', 4, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 05:50:22', '2025-04-16 05:50:22', NULL, NULL, NULL, 15), -(257, '2025-01-13', 5, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:50:22', '2025-04-16 05:50:22', NULL, NULL, NULL, 13), -(258, '2025-01-14', 1, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:51:24', '2025-04-16 05:51:24', NULL, NULL, NULL, 13), -(259, '2025-01-14', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:51:24', '2025-04-16 05:51:24', NULL, NULL, NULL, 1), -(260, '2025-01-14', 3, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:51:24', '2025-04-16 05:51:24', NULL, NULL, NULL, 1), -(261, '2025-01-14', 7, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:51:24', '2025-04-16 05:51:24', NULL, NULL, NULL, 13), -(262, '2025-01-14', 8, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:51:24', '2025-04-16 05:51:24', NULL, NULL, NULL, 1), -(263, '2025-01-14', 9, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:51:24', '2025-04-16 05:51:24', NULL, NULL, NULL, 13), -(265, '2025-01-14', 4, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:51:24', '2025-04-16 05:51:24', NULL, NULL, NULL, 13), -(266, '2025-01-14', 5, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:51:24', '2025-04-16 05:51:24', NULL, NULL, NULL, 13), -(267, '2025-01-14', 6, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:51:24', '2025-04-16 05:51:24', NULL, NULL, NULL, 1), -(268, '2025-01-15', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:52:37', '2025-04-16 05:52:37', NULL, NULL, NULL, 1), -(269, '2025-01-15', 2, 7, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:52:37', '2025-04-16 05:52:37', NULL, NULL, NULL, 14), -(270, '2025-01-15', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:52:37', '2025-04-16 05:52:37', NULL, NULL, NULL, 1), -(271, '2025-01-15', 7, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:52:37', '2025-04-16 05:52:37', NULL, NULL, NULL, 13), -(272, '2025-01-15', 8, 7, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:52:37', '2025-04-16 05:52:37', NULL, NULL, NULL, 14), -(273, '2025-01-15', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:52:37', '2025-04-16 05:52:37', NULL, NULL, NULL, 1), -(275, '2025-01-15', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:52:37', '2025-04-16 05:52:37', NULL, NULL, NULL, 1), -(276, '2025-01-15', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:52:38', '2025-04-16 05:52:38', NULL, NULL, NULL, 1), -(277, '2025-01-15', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:52:38', '2025-04-16 05:52:38', NULL, NULL, NULL, 1), -(278, '2025-01-16', 1, 1, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-16 05:54:11', '2025-04-16 05:54:11', NULL, NULL, NULL, 1), -(279, '2025-01-16', 2, 7, NULL, NULL, NULL, NULL, '근무', NULL, '볼트 보관함 제작', '2025-04-16 05:54:11', '2025-04-16 05:54:11', NULL, NULL, NULL, 14), -(280, '2025-01-16', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:54:11', '2025-04-16 05:54:11', NULL, NULL, NULL, 1), -(281, '2025-01-16', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:54:11', '2025-04-16 05:54:11', NULL, NULL, NULL, 1), -(282, '2025-01-16', 8, 7, NULL, NULL, NULL, NULL, '근무', NULL, '볼트 보관함 제작', '2025-04-16 05:54:11', '2025-04-16 05:54:11', NULL, NULL, NULL, 14), -(283, '2025-01-16', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:54:12', '2025-04-16 05:54:12', NULL, NULL, NULL, 1), -(285, '2025-01-16', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:54:12', '2025-04-16 05:54:12', NULL, NULL, NULL, 1), -(286, '2025-01-16', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:54:12', '2025-04-16 05:54:12', NULL, NULL, NULL, 1), -(287, '2025-01-16', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:54:12', '2025-04-16 05:54:12', NULL, NULL, NULL, 1), -(288, '2025-01-17', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:55:22', '2025-04-16 05:55:22', NULL, NULL, NULL, 1), -(289, '2025-01-17', 2, 1, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-16 05:55:22', '2025-04-16 05:55:22', NULL, NULL, NULL, 1), -(290, '2025-01-17', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:55:22', '2025-04-16 05:55:22', NULL, NULL, NULL, 1), -(291, '2025-01-17', 7, 1, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-16 05:55:22', '2025-04-16 05:55:22', NULL, NULL, NULL, 1), -(292, '2025-01-17', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:55:22', '2025-04-16 05:55:22', NULL, NULL, NULL, 1), -(293, '2025-01-17', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:55:22', '2025-04-16 05:55:22', NULL, NULL, NULL, 1), -(295, '2025-01-17', 4, 1, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-16 05:55:22', '2025-04-16 05:55:22', NULL, NULL, NULL, 1), -(296, '2025-01-17', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:55:22', '2025-04-16 05:55:22', NULL, NULL, NULL, 1), -(297, '2025-01-17', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:55:22', '2025-04-16 05:55:22', NULL, NULL, NULL, 1), -(298, '2025-01-20', 1, 7, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-16 05:58:05', '2025-04-16 05:58:05', NULL, NULL, NULL, 14), -(299, '2025-01-20', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:58:05', '2025-04-16 05:58:05', NULL, NULL, NULL, 8), -(300, '2025-01-20', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:58:05', '2025-04-16 05:58:05', NULL, NULL, NULL, 1), -(301, '2025-01-20', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:58:05', '2025-04-16 05:58:05', NULL, NULL, NULL, 1), -(302, '2025-01-20', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:58:05', '2025-04-16 05:58:05', NULL, NULL, NULL, 1), -(303, '2025-01-20', 9, 7, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:58:05', '2025-04-16 05:58:05', NULL, NULL, NULL, 14), -(304, '2025-01-20', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:58:05', '2025-04-16 05:58:05', NULL, NULL, NULL, 1), -(305, '2025-01-20', 7, 7, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:58:05', '2025-04-16 05:58:05', NULL, NULL, NULL, 14), -(306, '2025-01-20', 5, 7, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:58:05', '2025-04-16 05:58:05', NULL, NULL, NULL, 14), -(307, '2025-01-21', 1, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 05:59:06', '2025-04-16 05:59:06', NULL, NULL, NULL, 15), -(308, '2025-01-21', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:59:06', '2025-04-16 05:59:06', NULL, NULL, NULL, 8), -(309, '2025-01-21', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:59:06', '2025-04-16 05:59:06', NULL, NULL, NULL, 1), -(310, '2025-01-21', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:59:06', '2025-04-16 05:59:06', NULL, NULL, NULL, 1), -(311, '2025-01-21', 8, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:59:06', '2025-04-16 05:59:06', NULL, NULL, NULL, 8), -(312, '2025-01-21', 9, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 05:59:06', '2025-04-16 05:59:06', NULL, NULL, NULL, 15), -(313, '2025-01-21', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:59:06', '2025-04-16 05:59:06', NULL, NULL, NULL, 1), -(314, '2025-01-21', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:59:06', '2025-04-16 05:59:06', NULL, NULL, NULL, 1), -(315, '2025-01-21', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:59:07', '2025-04-16 05:59:07', NULL, NULL, NULL, 1), -(316, '2025-01-22', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:00:28', '2025-04-16 06:00:28', NULL, NULL, NULL, 1), -(317, '2025-01-22', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:00:28', '2025-04-16 06:00:28', NULL, NULL, NULL, 8), -(318, '2025-01-22', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:00:28', '2025-04-16 06:00:28', NULL, NULL, NULL, 1), -(319, '2025-01-22', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:00:28', '2025-04-16 06:00:28', NULL, NULL, NULL, 1), -(320, '2025-01-22', 8, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:00:28', '2025-04-16 06:00:28', NULL, NULL, NULL, 8), -(321, '2025-01-22', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:00:28', '2025-04-16 06:00:28', NULL, NULL, NULL, 1), -(322, '2025-01-22', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:00:28', '2025-04-16 06:00:28', NULL, NULL, NULL, 1), -(323, '2025-01-22', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:00:28', '2025-04-16 06:00:28', NULL, NULL, NULL, 1), -(324, '2025-01-22', 5, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:00:28', '2025-04-16 06:00:28', NULL, NULL, NULL, 8), -(325, '2025-01-23', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:01:57', '2025-04-16 06:01:57', NULL, NULL, NULL, 1), -(326, '2025-01-23', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:01:57', '2025-04-16 06:01:57', NULL, NULL, NULL, 8), -(327, '2025-01-23', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:01:57', '2025-04-16 06:01:57', NULL, NULL, NULL, 1), -(328, '2025-01-23', 7, 1, NULL, NULL, NULL, NULL, '조퇴', NULL, NULL, '2025-04-16 06:01:57', '2025-04-16 06:01:57', NULL, NULL, NULL, 1), -(329, '2025-01-23', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:01:57', '2025-04-16 06:01:57', NULL, NULL, NULL, 1), -(330, '2025-01-23', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:01:57', '2025-04-16 06:01:57', NULL, NULL, NULL, 1), -(331, '2025-01-23', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:01:57', '2025-04-16 06:01:57', NULL, NULL, NULL, 1), -(332, '2025-01-23', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:01:57', '2025-04-16 06:01:57', NULL, NULL, NULL, 1), -(333, '2025-01-23', 5, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:01:57', '2025-04-16 06:01:57', NULL, NULL, NULL, 8), -(334, '2025-01-24', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:03:43', '2025-04-16 06:03:43', NULL, NULL, NULL, 1), -(335, '2025-01-24', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:03:43', '2025-04-16 06:03:43', NULL, NULL, NULL, 8), -(336, '2025-01-24', 3, 1, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-16 06:03:43', '2025-04-16 06:03:43', NULL, NULL, NULL, 1), -(337, '2025-01-24', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:03:43', '2025-04-16 06:03:43', NULL, NULL, NULL, 1), -(338, '2025-01-24', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:03:43', '2025-04-16 06:03:43', NULL, NULL, NULL, 1), -(339, '2025-01-24', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:03:43', '2025-04-16 06:03:43', NULL, NULL, NULL, 1), -(340, '2025-01-24', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:03:43', '2025-04-16 06:03:43', NULL, NULL, NULL, 1), -(341, '2025-01-24', 5, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:03:43', '2025-04-16 06:03:43', NULL, NULL, NULL, 8), -(342, '2025-01-24', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:03:43', '2025-04-16 06:03:43', NULL, NULL, NULL, 1), -(343, '2025-02-03', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:07:37', '2025-04-16 06:07:37', NULL, NULL, NULL, 1), -(344, '2025-02-03', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:07:37', '2025-04-16 06:07:37', NULL, NULL, NULL, 8), -(345, '2025-02-03', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:07:37', '2025-04-16 06:07:37', NULL, NULL, NULL, 1), -(346, '2025-02-03', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:07:37', '2025-04-16 06:07:37', NULL, NULL, NULL, 1), -(347, '2025-02-03', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:07:37', '2025-04-16 06:07:37', NULL, NULL, NULL, 1), -(348, '2025-02-03', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:07:37', '2025-04-16 06:07:37', NULL, NULL, NULL, 1), -(349, '2025-02-03', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:07:37', '2025-04-16 06:07:37', NULL, NULL, NULL, 1), -(350, '2025-02-03', 4, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:07:37', '2025-04-16 06:07:37', NULL, NULL, NULL, 8), -(351, '2025-02-03', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:07:37', '2025-04-16 06:07:37', NULL, NULL, NULL, 1), -(352, '2025-02-04', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:08:43', '2025-04-16 06:08:43', NULL, NULL, NULL, 1), -(353, '2025-02-04', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:08:43', '2025-04-16 06:08:43', NULL, NULL, NULL, 1), -(354, '2025-02-04', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:08:43', '2025-04-16 06:08:43', NULL, NULL, NULL, 8), -(355, '2025-02-04', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:08:43', '2025-04-16 06:08:43', NULL, NULL, NULL, 1), -(356, '2025-02-04', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:08:43', '2025-04-16 06:08:43', NULL, NULL, NULL, 1), -(357, '2025-02-04', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:08:43', '2025-04-16 06:08:43', NULL, NULL, NULL, 1), -(358, '2025-02-04', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:08:43', '2025-04-16 06:08:43', NULL, NULL, NULL, 1), -(359, '2025-02-04', 4, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:08:43', '2025-04-16 06:08:43', NULL, NULL, NULL, 8), -(360, '2025-02-04', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:08:43', '2025-04-16 06:08:43', NULL, NULL, NULL, 1), -(361, '2025-02-05', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:02', '2025-04-16 06:10:02', NULL, NULL, NULL, 8), -(362, '2025-02-05', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:02', '2025-04-16 06:10:02', NULL, NULL, NULL, 1), -(363, '2025-02-05', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:02', '2025-04-16 06:10:02', NULL, NULL, NULL, 1), -(364, '2025-02-05', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:02', '2025-04-16 06:10:02', NULL, NULL, NULL, 1), -(365, '2025-02-05', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:02', '2025-04-16 06:10:02', NULL, NULL, NULL, 1), -(366, '2025-02-05', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:02', '2025-04-16 06:10:02', NULL, NULL, NULL, 1), -(367, '2025-02-05', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:03', '2025-04-16 06:10:03', NULL, NULL, NULL, 1), -(368, '2025-02-05', 4, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:03', '2025-04-16 06:10:03', NULL, NULL, NULL, 8), -(369, '2025-02-05', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:03', '2025-04-16 06:10:03', NULL, NULL, NULL, 1), -(370, '2025-02-06', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:55', '2025-04-16 06:10:55', NULL, NULL, NULL, 1), -(371, '2025-02-06', 2, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 06:10:55', '2025-04-16 06:10:55', NULL, NULL, NULL, 15), -(372, '2025-02-06', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:55', '2025-04-16 06:10:55', NULL, NULL, NULL, 1), -(373, '2025-02-06', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:55', '2025-04-16 06:10:55', NULL, NULL, NULL, 1), -(374, '2025-02-06', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:55', '2025-04-16 06:10:55', NULL, NULL, NULL, 1), -(375, '2025-02-06', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:55', '2025-04-16 06:10:55', NULL, NULL, NULL, 1), -(376, '2025-02-06', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:55', '2025-04-16 06:10:55', NULL, NULL, NULL, 1), -(377, '2025-02-06', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:55', '2025-04-16 06:10:55', NULL, NULL, NULL, 1), -(378, '2025-02-06', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:55', '2025-04-16 06:10:55', NULL, NULL, NULL, 1), -(379, '2025-02-07', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:11:54', '2025-04-16 06:11:54', NULL, NULL, NULL, 1), -(380, '2025-02-07', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:11:54', '2025-04-16 06:11:54', NULL, NULL, NULL, 8), -(381, '2025-02-07', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:11:54', '2025-04-16 06:11:54', NULL, NULL, NULL, 1), -(382, '2025-02-07', 7, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 06:11:54', '2025-04-16 06:11:54', NULL, NULL, NULL, 15), -(383, '2025-02-07', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:11:54', '2025-04-16 06:11:54', NULL, NULL, NULL, 1), -(384, '2025-02-07', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:11:54', '2025-04-16 06:11:54', NULL, NULL, NULL, 1), -(385, '2025-02-07', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:11:54', '2025-04-16 06:11:54', NULL, NULL, NULL, 1), -(386, '2025-02-07', 4, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:11:54', '2025-04-16 06:11:54', NULL, NULL, NULL, 8), -(387, '2025-02-07', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:11:54', '2025-04-16 06:11:54', NULL, NULL, NULL, 1), -(388, '2025-02-10', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:12:54', '2025-04-16 06:12:54', NULL, NULL, NULL, 1), -(389, '2025-02-10', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:12:54', '2025-04-16 06:12:54', NULL, NULL, NULL, 8), -(390, '2025-02-10', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:12:54', '2025-04-16 06:12:54', NULL, NULL, NULL, 1), -(391, '2025-02-10', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:12:54', '2025-04-16 06:12:54', NULL, NULL, NULL, 1), -(392, '2025-02-10', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:12:54', '2025-04-16 06:12:54', NULL, NULL, NULL, 1), -(393, '2025-02-10', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:12:54', '2025-04-16 06:12:54', NULL, NULL, NULL, 1), -(394, '2025-02-10', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:12:54', '2025-04-16 06:12:54', NULL, NULL, NULL, 1), -(395, '2025-02-10', 4, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:12:54', '2025-04-16 06:12:54', NULL, NULL, NULL, 8), -(396, '2025-02-10', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:12:54', '2025-04-16 06:12:54', NULL, NULL, NULL, 1), -(397, '2025-02-11', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:13:53', '2025-04-16 06:13:53', NULL, NULL, NULL, 1), -(398, '2025-02-11', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:13:53', '2025-04-16 06:13:53', NULL, NULL, NULL, 8), -(399, '2025-02-11', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:13:53', '2025-04-16 06:13:53', NULL, NULL, NULL, 1), -(400, '2025-02-11', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:13:53', '2025-04-16 06:13:53', NULL, NULL, NULL, 1), -(401, '2025-02-11', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:13:53', '2025-04-16 06:13:53', NULL, NULL, NULL, 1), -(402, '2025-02-11', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:13:53', '2025-04-16 06:13:53', NULL, NULL, NULL, 1), -(403, '2025-02-11', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:13:53', '2025-04-16 06:13:53', NULL, NULL, NULL, 1), -(404, '2025-02-11', 4, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:13:53', '2025-04-16 06:13:53', NULL, NULL, NULL, 8), -(405, '2025-02-11', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:13:53', '2025-04-16 06:13:53', NULL, NULL, NULL, 1), -(406, '2025-02-12', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:14:52', '2025-04-16 06:14:52', NULL, NULL, NULL, 1), -(407, '2025-02-12', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:14:52', '2025-04-16 06:14:52', NULL, NULL, NULL, 8), -(408, '2025-02-12', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:14:52', '2025-04-16 06:14:52', NULL, NULL, NULL, 1), -(409, '2025-02-12', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:14:52', '2025-04-16 06:14:52', NULL, NULL, NULL, 1), -(410, '2025-02-12', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:14:52', '2025-04-16 06:14:52', NULL, NULL, NULL, 1), -(411, '2025-02-12', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:14:52', '2025-04-16 06:14:52', NULL, NULL, NULL, 1), -(412, '2025-02-12', 4, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 06:14:52', '2025-04-16 06:14:52', NULL, NULL, NULL, 15), -(413, '2025-02-12', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:14:52', '2025-04-16 06:14:52', NULL, NULL, NULL, 1), -(414, '2025-02-12', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:14:52', '2025-04-16 06:14:52', NULL, NULL, NULL, 1), -(415, '2025-02-13', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:16:00', '2025-04-16 06:16:00', NULL, NULL, NULL, 1), -(416, '2025-02-13', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:16:00', '2025-04-16 06:16:00', NULL, NULL, NULL, 7), -(417, '2025-02-13', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:16:00', '2025-04-16 06:16:00', NULL, NULL, NULL, 1), -(418, '2025-02-13', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:16:00', '2025-04-16 06:16:00', NULL, NULL, NULL, 1), -(419, '2025-02-13', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:16:00', '2025-04-16 06:16:00', NULL, NULL, NULL, 1), -(420, '2025-02-13', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:16:00', '2025-04-16 06:16:00', NULL, NULL, NULL, 1), -(421, '2025-02-13', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:16:00', '2025-04-16 06:16:00', NULL, NULL, NULL, 1), -(422, '2025-02-13', 4, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:16:00', '2025-04-16 06:16:00', NULL, NULL, NULL, 7), -(423, '2025-02-13', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:16:00', '2025-04-16 06:16:00', NULL, NULL, NULL, 1), -(424, '2025-02-14', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:17:21', '2025-04-16 06:17:21', NULL, NULL, NULL, 1), -(425, '2025-02-14', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:17:21', '2025-04-16 06:17:21', NULL, NULL, NULL, 7), -(426, '2025-02-14', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:17:21', '2025-04-16 06:17:21', NULL, NULL, NULL, 1), -(427, '2025-02-14', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:17:21', '2025-04-16 06:17:21', NULL, NULL, NULL, 1), -(428, '2025-02-14', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:17:21', '2025-04-16 06:17:21', NULL, NULL, NULL, 1), -(429, '2025-02-14', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:17:21', '2025-04-16 06:17:21', NULL, NULL, NULL, 1), -(430, '2025-02-14', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:17:21', '2025-04-16 06:17:21', NULL, NULL, NULL, 1), -(431, '2025-02-14', 4, 2, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-16 06:17:21', '2025-04-16 06:17:21', NULL, NULL, NULL, 7), -(432, '2025-02-14', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:17:21', '2025-04-16 06:17:21', NULL, NULL, NULL, 1), -(433, '2025-02-17', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:18:39', '2025-04-16 06:18:39', NULL, NULL, NULL, 1), -(434, '2025-02-17', 2, 2, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-16 06:18:40', '2025-04-16 06:18:40', NULL, NULL, NULL, 8), -(435, '2025-02-17', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:18:40', '2025-04-16 06:18:40', NULL, NULL, NULL, 1), -(436, '2025-02-17', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:18:40', '2025-04-16 06:18:40', NULL, NULL, NULL, 1), -(437, '2025-02-17', 8, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 06:18:40', '2025-04-16 06:18:40', NULL, NULL, NULL, 15), -(438, '2025-02-17', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:18:40', '2025-04-16 06:18:40', NULL, NULL, NULL, 1), -(439, '2025-02-17', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:18:40', '2025-04-16 06:18:40', NULL, NULL, NULL, 1), -(440, '2025-02-17', 4, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:18:40', '2025-04-16 06:18:40', NULL, NULL, NULL, 8), -(441, '2025-02-17', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:18:40', '2025-04-16 06:18:40', NULL, NULL, NULL, 1), -(442, '2025-02-18', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:19:57', '2025-04-16 06:19:57', NULL, NULL, NULL, 1), -(443, '2025-02-18', 2, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 06:19:57', '2025-04-16 06:19:57', NULL, NULL, NULL, 15), -(444, '2025-02-18', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:19:57', '2025-04-16 06:19:57', NULL, NULL, NULL, 1), -(445, '2025-02-18', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:19:57', '2025-04-16 06:19:57', NULL, NULL, NULL, 1), -(446, '2025-02-18', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:19:57', '2025-04-16 06:19:57', NULL, NULL, NULL, 1), -(447, '2025-02-18', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:19:57', '2025-04-16 06:19:57', NULL, NULL, NULL, 1), -(448, '2025-02-18', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:19:57', '2025-04-16 06:19:57', NULL, NULL, NULL, 7), -(449, '2025-02-18', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:19:57', '2025-04-16 06:19:57', NULL, NULL, NULL, 1), -(450, '2025-02-18', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:19:57', '2025-04-16 06:19:57', NULL, NULL, NULL, 1), -(451, '2025-02-19', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:21:01', '2025-04-16 06:21:01', NULL, NULL, NULL, 7), -(452, '2025-02-19', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:21:01', '2025-04-16 06:21:01', NULL, NULL, NULL, 7), -(453, '2025-02-19', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:21:01', '2025-04-16 06:21:01', NULL, NULL, NULL, 7), -(454, '2025-02-19', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:21:01', '2025-04-16 06:21:01', NULL, NULL, NULL, 7), -(455, '2025-02-19', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:21:01', '2025-04-16 06:21:01', NULL, NULL, NULL, 7), -(456, '2025-02-19', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:21:01', '2025-04-16 06:21:01', NULL, NULL, NULL, 7), -(457, '2025-02-19', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:21:01', '2025-04-16 06:21:01', NULL, NULL, NULL, 7), -(458, '2025-02-19', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:21:01', '2025-04-16 06:21:01', NULL, NULL, NULL, 7), -(459, '2025-02-19', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:21:01', '2025-04-16 06:21:01', NULL, NULL, NULL, 7), -(460, '2025-02-20', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:22:23', '2025-04-16 06:22:23', NULL, NULL, NULL, 7), -(461, '2025-02-20', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:22:23', '2025-04-16 06:22:23', NULL, NULL, NULL, 7), -(462, '2025-02-20', 3, 1, NULL, NULL, NULL, NULL, '조퇴', NULL, NULL, '2025-04-16 06:22:23', '2025-04-16 06:22:23', NULL, NULL, NULL, 7), -(463, '2025-02-20', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:22:23', '2025-04-16 06:22:23', NULL, NULL, NULL, 7), -(464, '2025-02-20', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:22:23', '2025-04-16 06:22:23', NULL, NULL, NULL, 7), -(465, '2025-02-20', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:22:23', '2025-04-16 06:22:23', NULL, NULL, NULL, 7), -(466, '2025-02-20', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:22:23', '2025-04-16 06:22:23', NULL, NULL, NULL, 7), -(467, '2025-02-20', 7, 1, NULL, NULL, NULL, NULL, '반반차', NULL, NULL, '2025-04-16 06:22:23', '2025-04-16 06:22:23', NULL, NULL, NULL, 7), -(468, '2025-02-20', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:22:23', '2025-04-16 06:22:23', NULL, NULL, NULL, 7), -(469, '2025-02-21', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:23:40', '2025-04-16 06:23:40', NULL, NULL, NULL, 7), -(470, '2025-02-21', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:23:40', '2025-04-16 06:23:40', NULL, NULL, NULL, 7), -(471, '2025-02-21', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:23:40', '2025-04-16 06:23:40', NULL, NULL, NULL, 7), -(472, '2025-02-21', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:23:40', '2025-04-16 06:23:40', NULL, NULL, NULL, 7), -(473, '2025-02-21', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:23:40', '2025-04-16 06:23:40', NULL, NULL, NULL, 7), -(474, '2025-02-21', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:23:40', '2025-04-16 06:23:40', NULL, NULL, NULL, 7), -(475, '2025-02-21', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:23:40', '2025-04-16 06:23:40', NULL, NULL, NULL, 7), -(476, '2025-02-21', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:23:40', '2025-04-16 06:23:40', NULL, NULL, NULL, 7), -(477, '2025-02-21', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:23:40', '2025-04-16 06:23:40', NULL, NULL, NULL, 7), -(478, '2025-02-24', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:24:32', '2025-04-16 06:24:32', NULL, NULL, NULL, 7), -(479, '2025-02-24', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:24:32', '2025-04-16 06:24:32', NULL, NULL, NULL, 7), -(480, '2025-02-24', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:24:32', '2025-04-16 06:24:32', NULL, NULL, NULL, 7), -(481, '2025-02-24', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:24:32', '2025-04-16 06:24:32', NULL, NULL, NULL, 7), -(482, '2025-02-24', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:24:32', '2025-04-16 06:24:32', NULL, NULL, NULL, 7), -(483, '2025-02-24', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:24:32', '2025-04-16 06:24:32', NULL, NULL, NULL, 7), -(484, '2025-02-24', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:24:32', '2025-04-16 06:24:32', NULL, NULL, NULL, 7), -(485, '2025-02-24', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:24:32', '2025-04-16 06:24:32', NULL, NULL, NULL, 7), -(486, '2025-02-24', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:24:33', '2025-04-16 06:24:33', NULL, NULL, NULL, 7), -(487, '2025-02-24', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, '근무시작', '2025-04-16 06:25:07', '2025-04-16 06:25:07', NULL, NULL, NULL, 7), -(488, '2025-02-25', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:26:02', '2025-04-16 06:26:02', NULL, NULL, NULL, 7), -(489, '2025-02-25', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:26:02', '2025-04-16 06:26:02', NULL, NULL, NULL, 7), -(490, '2025-02-25', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:26:02', '2025-04-16 06:26:02', NULL, NULL, NULL, 7), -(491, '2025-02-25', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:26:02', '2025-04-16 06:26:02', NULL, NULL, NULL, 7), -(492, '2025-02-25', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:26:02', '2025-04-16 06:26:02', NULL, NULL, NULL, 7), -(493, '2025-02-25', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:26:02', '2025-04-16 06:26:02', NULL, NULL, NULL, 7), -(494, '2025-02-25', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:26:02', '2025-04-16 06:26:02', NULL, NULL, NULL, 7), -(495, '2025-02-25', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:26:02', '2025-04-16 06:26:02', NULL, NULL, NULL, 7), -(496, '2025-02-25', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:26:02', '2025-04-16 06:26:02', NULL, NULL, NULL, 7), -(497, '2025-02-25', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:26:02', '2025-04-16 06:26:02', NULL, NULL, NULL, 7), -(498, '2025-02-26', 1, 7, NULL, NULL, NULL, NULL, '근무', NULL, '당진출장 건', '2025-04-16 06:27:50', '2025-04-16 06:27:50', NULL, NULL, NULL, 14), -(499, '2025-02-26', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:27:50', '2025-04-16 06:27:50', NULL, NULL, NULL, 7), -(500, '2025-02-26', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:27:50', '2025-04-16 06:27:50', NULL, NULL, NULL, 7), -(501, '2025-02-26', 7, 7, NULL, NULL, NULL, NULL, '근무', NULL, '당진출장 건', '2025-04-16 06:27:50', '2025-04-16 06:27:50', NULL, NULL, NULL, 14), -(502, '2025-02-26', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:27:50', '2025-04-16 06:27:50', NULL, NULL, NULL, 7), -(503, '2025-02-26', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:27:50', '2025-04-16 06:27:50', NULL, NULL, NULL, 7), -(504, '2025-02-26', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:27:50', '2025-04-16 06:27:50', NULL, NULL, NULL, 7), -(505, '2025-02-26', 4, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 06:27:50', '2025-04-16 06:27:50', NULL, NULL, NULL, 15), -(506, '2025-02-26', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:27:50', '2025-04-16 06:27:50', NULL, NULL, NULL, 7), -(507, '2025-02-26', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:27:50', '2025-04-16 06:27:50', NULL, NULL, NULL, 7), -(508, '2025-02-27', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:28:41', '2025-04-16 06:28:41', NULL, NULL, NULL, 7), -(509, '2025-02-27', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:28:41', '2025-04-16 06:28:41', NULL, NULL, NULL, 7), -(510, '2025-02-27', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:28:41', '2025-04-16 06:28:41', NULL, NULL, NULL, 7), -(511, '2025-02-27', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:28:41', '2025-04-16 06:28:41', NULL, NULL, NULL, 7), -(512, '2025-02-27', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:28:41', '2025-04-16 06:28:41', NULL, NULL, NULL, 7), -(513, '2025-02-27', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:28:41', '2025-04-16 06:28:41', NULL, NULL, NULL, 7), -(514, '2025-02-27', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:28:41', '2025-04-16 06:28:41', NULL, NULL, NULL, 7), -(515, '2025-02-27', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:28:41', '2025-04-16 06:28:41', NULL, NULL, NULL, 7), -(516, '2025-02-27', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:28:41', '2025-04-16 06:28:41', NULL, NULL, NULL, 7), -(517, '2025-02-27', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:28:41', '2025-04-16 06:28:41', NULL, NULL, NULL, 7), -(518, '2025-02-28', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:29:53', '2025-04-16 06:29:53', NULL, NULL, NULL, 13), -(519, '2025-02-28', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:29:53', '2025-04-16 06:29:53', NULL, NULL, NULL, 7), -(520, '2025-02-28', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:29:53', '2025-04-16 06:29:53', NULL, NULL, NULL, 7), -(521, '2025-02-28', 7, 1, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-16 06:29:53', '2025-04-16 06:29:53', NULL, NULL, NULL, 13), -(522, '2025-02-28', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:29:53', '2025-04-16 06:29:53', NULL, NULL, NULL, 7), -(523, '2025-02-28', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:29:53', '2025-04-16 06:29:53', NULL, NULL, NULL, 7), -(524, '2025-02-28', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:29:53', '2025-04-16 06:29:53', NULL, NULL, NULL, 7), -(525, '2025-02-28', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:29:53', '2025-04-16 06:29:53', NULL, NULL, NULL, 7), -(526, '2025-02-28', 5, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 06:29:53', '2025-04-16 06:29:53', NULL, NULL, NULL, 15), -(527, '2025-02-28', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:29:53', '2025-04-16 06:29:53', NULL, NULL, NULL, 7), -(528, '2025-03-04', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:32:11', '2025-04-16 06:32:11', NULL, NULL, NULL, 7), -(529, '2025-03-04', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:32:11', '2025-04-16 06:32:11', NULL, NULL, NULL, 7), -(530, '2025-03-04', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:32:11', '2025-04-16 06:32:11', NULL, NULL, NULL, 8), -(531, '2025-03-04', 7, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 06:32:11', '2025-04-16 06:32:11', NULL, NULL, NULL, 15), -(532, '2025-03-04', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:32:11', '2025-04-16 06:32:11', NULL, NULL, NULL, 7), -(533, '2025-03-04', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:32:11', '2025-04-16 06:32:11', NULL, NULL, NULL, 7), -(534, '2025-03-04', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:32:11', '2025-04-16 06:32:11', NULL, NULL, NULL, 7), -(535, '2025-03-04', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:32:11', '2025-04-16 06:32:11', NULL, NULL, NULL, 7), -(536, '2025-03-04', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:32:11', '2025-04-16 06:32:11', NULL, NULL, NULL, 7), -(537, '2025-03-04', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:32:11', '2025-04-16 06:32:11', NULL, NULL, NULL, 8), -(538, '2025-03-05', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:33:15', '2025-04-16 06:33:15', NULL, NULL, NULL, 7), -(539, '2025-03-05', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:33:15', '2025-04-16 06:33:15', NULL, NULL, NULL, 7), -(540, '2025-03-05', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:33:15', '2025-04-16 06:33:15', NULL, NULL, NULL, 8), -(541, '2025-03-05', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:33:15', '2025-04-16 06:33:15', NULL, NULL, NULL, 7), -(542, '2025-03-05', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:33:15', '2025-04-16 06:33:15', NULL, NULL, NULL, 7), -(543, '2025-03-05', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:33:15', '2025-04-16 06:33:15', NULL, NULL, NULL, 7), -(544, '2025-03-05', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:33:15', '2025-04-16 06:33:15', NULL, NULL, NULL, 7), -(545, '2025-03-05', 7, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 06:33:15', '2025-04-16 06:33:15', NULL, NULL, NULL, 15), -(546, '2025-03-05', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:33:15', '2025-04-16 06:33:15', NULL, NULL, NULL, 7), -(547, '2025-03-05', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:33:15', '2025-04-16 06:33:15', NULL, NULL, NULL, 8), -(548, '2025-03-06', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:34:18', '2025-04-16 06:34:18', NULL, NULL, NULL, 7), -(549, '2025-03-06', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:34:18', '2025-04-16 06:34:18', NULL, NULL, NULL, 7), -(550, '2025-03-06', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:34:18', '2025-04-16 06:34:18', NULL, NULL, NULL, 8), -(551, '2025-03-06', 7, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 06:34:18', '2025-04-16 06:34:18', NULL, NULL, NULL, 15), -(552, '2025-03-06', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:34:18', '2025-04-16 06:34:18', NULL, NULL, NULL, 7), -(553, '2025-03-06', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:34:18', '2025-04-16 06:34:18', NULL, NULL, NULL, 7), -(554, '2025-03-06', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:34:18', '2025-04-16 06:34:18', NULL, NULL, NULL, 7), -(555, '2025-03-06', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:34:18', '2025-04-16 06:34:18', NULL, NULL, NULL, 7), -(556, '2025-03-06', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:34:18', '2025-04-16 06:34:18', NULL, NULL, NULL, 7), -(557, '2025-03-06', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:34:18', '2025-04-16 06:34:18', NULL, NULL, NULL, 8), -(558, '2025-03-07', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:35:36', '2025-04-16 06:35:36', NULL, NULL, NULL, 7); -INSERT INTO `WorkReports` (`id`, `date`, `worker_id`, `project_id`, `morning_task_id`, `afternoon_task_id`, `overtime_hours`, `overtime_task_id`, `work_details`, `note`, `memo`, `created_at`, `updated_at`, `morning_project_id`, `afternoon_project_id`, `overtime_project_id`, `task_id`) VALUES -(559, '2025-03-07', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:35:36', '2025-04-16 06:35:36', NULL, NULL, NULL, 13), -(560, '2025-03-07', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:35:36', '2025-04-16 06:35:36', NULL, NULL, NULL, 8), -(561, '2025-03-07', 7, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 06:35:36', '2025-04-16 06:35:36', NULL, NULL, NULL, 15), -(562, '2025-03-07', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:35:36', '2025-04-16 06:35:36', NULL, NULL, NULL, 7), -(563, '2025-03-07', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:35:36', '2025-04-16 06:35:36', NULL, NULL, NULL, 7), -(564, '2025-03-07', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:35:36', '2025-04-16 06:35:36', NULL, NULL, NULL, 7), -(565, '2025-03-07', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:35:36', '2025-04-16 06:35:36', NULL, NULL, NULL, 13), -(566, '2025-03-07', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:35:36', '2025-04-16 06:35:36', NULL, NULL, NULL, 7), -(567, '2025-03-07', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:35:36', '2025-04-16 06:35:36', NULL, NULL, NULL, 8), -(568, '2025-03-10', 1, 1, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-16 06:37:11', '2025-04-16 06:37:11', NULL, NULL, NULL, 8), -(569, '2025-03-10', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:37:11', '2025-04-16 06:37:11', NULL, NULL, NULL, 3), -(570, '2025-03-10', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:37:11', '2025-04-16 06:37:11', NULL, NULL, NULL, 8), -(571, '2025-03-10', 7, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 06:37:11', '2025-04-16 06:37:11', NULL, NULL, NULL, 15), -(572, '2025-03-10', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:37:11', '2025-04-16 06:37:11', NULL, NULL, NULL, 7), -(573, '2025-03-10', 9, 13, NULL, NULL, NULL, NULL, '유급', NULL, '결혼(5일)', '2025-04-16 06:37:11', '2025-04-16 06:37:11', NULL, NULL, NULL, 15), -(574, '2025-03-10', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:37:11', '2025-04-16 06:37:11', NULL, NULL, NULL, 7), -(575, '2025-03-10', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:37:11', '2025-04-16 06:37:11', NULL, NULL, NULL, 3), -(576, '2025-03-10', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:37:11', '2025-04-16 06:37:11', NULL, NULL, NULL, 8), -(577, '2025-03-10', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:37:11', '2025-04-16 06:37:11', NULL, NULL, NULL, 8), -(578, '2025-03-11', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:39:06', '2025-04-16 06:39:06', NULL, NULL, NULL, 8), -(579, '2025-03-11', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:39:07', '2025-04-16 06:39:07', NULL, NULL, NULL, 8), -(580, '2025-03-11', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:39:07', '2025-04-16 06:39:07', NULL, NULL, NULL, 8), -(581, '2025-03-11', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:39:07', '2025-04-16 06:39:07', NULL, NULL, NULL, 7), -(582, '2025-03-11', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:39:07', '2025-04-16 06:39:07', NULL, NULL, NULL, 7), -(583, '2025-03-11', 9, 13, NULL, NULL, NULL, NULL, '유급', NULL, '결혼(5일)', '2025-04-16 06:39:07', '2025-04-16 06:39:07', NULL, NULL, NULL, 15), -(584, '2025-03-11', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:39:07', '2025-04-16 06:39:07', NULL, NULL, NULL, 7), -(585, '2025-03-11', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:39:07', '2025-04-16 06:39:07', NULL, NULL, NULL, 8), -(586, '2025-03-11', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:39:07', '2025-04-16 06:39:07', NULL, NULL, NULL, 8), -(587, '2025-03-11', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:39:07', '2025-04-16 06:39:07', NULL, NULL, NULL, 8), -(588, '2025-03-12', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:40:08', '2025-04-16 06:40:08', NULL, NULL, NULL, 8), -(589, '2025-03-12', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:40:08', '2025-04-16 06:40:08', NULL, NULL, NULL, 8), -(590, '2025-03-12', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:40:08', '2025-04-16 06:40:08', NULL, NULL, NULL, 8), -(591, '2025-03-12', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:40:08', '2025-04-16 06:40:08', NULL, NULL, NULL, 8), -(592, '2025-03-12', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:40:08', '2025-04-16 06:40:08', NULL, NULL, NULL, 7), -(593, '2025-03-12', 9, 13, NULL, NULL, NULL, NULL, '유급', NULL, '결혼(5일)', '2025-04-16 06:40:08', '2025-04-16 06:40:08', NULL, NULL, NULL, 15), -(594, '2025-03-12', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:40:08', '2025-04-16 06:40:08', NULL, NULL, NULL, 7), -(595, '2025-03-12', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:40:08', '2025-04-16 06:40:08', NULL, NULL, NULL, 7), -(596, '2025-03-12', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:40:08', '2025-04-16 06:40:08', NULL, NULL, NULL, 8), -(597, '2025-03-12', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:40:08', '2025-04-16 06:40:08', NULL, NULL, NULL, 8), -(598, '2025-03-13', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:41:07', '2025-04-16 06:41:07', NULL, NULL, NULL, 8), -(599, '2025-03-13', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:41:07', '2025-04-16 06:41:07', NULL, NULL, NULL, 8), -(600, '2025-03-13', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:41:07', '2025-04-16 06:41:07', NULL, NULL, NULL, 8), -(601, '2025-03-13', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:41:07', '2025-04-16 06:41:07', NULL, NULL, NULL, 7), -(602, '2025-03-13', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:41:07', '2025-04-16 06:41:07', NULL, NULL, NULL, 7), -(603, '2025-03-13', 9, 13, NULL, NULL, NULL, NULL, '유급', NULL, '결혼(5일)', '2025-04-16 06:41:07', '2025-04-16 06:41:07', NULL, NULL, NULL, 15), -(604, '2025-03-13', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:41:07', '2025-04-16 06:41:07', NULL, NULL, NULL, 7), -(605, '2025-03-13', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:41:08', '2025-04-16 06:41:08', NULL, NULL, NULL, 8), -(606, '2025-03-13', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:41:08', '2025-04-16 06:41:08', NULL, NULL, NULL, 8), -(607, '2025-03-13', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:41:08', '2025-04-16 06:41:08', NULL, NULL, NULL, 8), -(608, '2025-03-14', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:42:24', '2025-04-16 06:42:24', NULL, NULL, NULL, 8), -(609, '2025-03-14', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:42:24', '2025-04-16 06:42:24', NULL, NULL, NULL, 4), -(610, '2025-03-14', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:42:24', '2025-04-16 06:42:24', NULL, NULL, NULL, 8), -(612, '2025-03-14', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:42:24', '2025-04-16 06:42:24', NULL, NULL, NULL, 7), -(613, '2025-03-14', 9, 13, NULL, NULL, NULL, NULL, '유급', NULL, '결혼(5일)', '2025-04-16 06:42:24', '2025-04-16 06:42:24', NULL, NULL, NULL, 15), -(614, '2025-03-14', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:42:24', '2025-04-16 06:42:24', NULL, NULL, NULL, 7), -(615, '2025-03-14', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:42:24', '2025-04-16 06:42:24', NULL, NULL, NULL, 8), -(616, '2025-03-14', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:42:24', '2025-04-16 06:42:24', NULL, NULL, NULL, 8), -(617, '2025-03-14', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:42:24', '2025-04-16 06:42:24', NULL, NULL, NULL, 7), -(628, '2025-03-18', 1, 1, NULL, NULL, NULL, NULL, '조퇴', NULL, NULL, '2025-04-16 06:46:29', '2025-04-16 06:46:29', NULL, NULL, NULL, 8), -(629, '2025-03-18', 2, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:46:29', '2025-04-16 06:46:29', NULL, NULL, NULL, 4), -(630, '2025-03-18', 6, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:46:29', '2025-04-16 06:46:29', NULL, NULL, NULL, 8), -(631, '2025-03-18', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:46:29', '2025-04-16 06:46:29', NULL, NULL, NULL, 4), -(632, '2025-03-18', 8, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:46:29', '2025-04-16 06:46:29', NULL, NULL, NULL, 8), -(633, '2025-03-18', 9, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 06:46:29', '2025-04-16 06:46:29', NULL, NULL, NULL, 15), -(634, '2025-03-18', 10, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:46:29', '2025-04-16 06:46:29', NULL, NULL, NULL, 8), -(635, '2025-03-18', 4, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:46:29', '2025-04-16 06:46:29', NULL, NULL, NULL, 4), -(636, '2025-03-18', 5, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:46:29', '2025-04-16 06:46:29', NULL, NULL, NULL, 8), -(637, '2025-03-18', 3, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:46:29', '2025-04-16 06:46:29', NULL, NULL, NULL, 8), -(648, '2025-03-17', 1, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:50:50', '2025-04-16 06:50:50', NULL, NULL, NULL, 8), -(649, '2025-03-17', 2, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:50:50', '2025-04-16 06:50:50', NULL, NULL, NULL, 4), -(650, '2025-03-17', 3, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:50:50', '2025-04-16 06:50:50', NULL, NULL, NULL, 8), -(651, '2025-03-17', 7, 4, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-16 06:50:50', '2025-04-16 06:50:50', NULL, NULL, NULL, 4), -(652, '2025-03-17', 8, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:50:50', '2025-04-16 06:50:50', NULL, NULL, NULL, 7), -(653, '2025-03-17', 9, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 06:50:50', '2025-04-16 06:50:50', NULL, NULL, NULL, 15), -(654, '2025-03-17', 10, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:50:50', '2025-04-16 06:50:50', NULL, NULL, NULL, 7), -(655, '2025-03-17', 4, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:50:50', '2025-04-16 06:50:50', NULL, NULL, NULL, 8), -(656, '2025-03-17', 5, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:50:50', '2025-04-16 06:50:50', NULL, NULL, NULL, 8), -(657, '2025-03-17', 6, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:50:50', '2025-04-16 06:50:50', NULL, NULL, NULL, 7), -(658, '2025-03-19', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:52:33', '2025-04-16 06:52:33', NULL, NULL, NULL, 4), -(659, '2025-03-19', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:52:33', '2025-04-16 06:52:33', NULL, NULL, NULL, 8), -(660, '2025-03-19', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:52:33', '2025-04-16 06:52:33', NULL, NULL, NULL, 8), -(661, '2025-03-19', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:52:33', '2025-04-16 06:52:33', NULL, NULL, NULL, 4), -(662, '2025-03-19', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:52:33', '2025-04-16 06:52:33', NULL, NULL, NULL, 8), -(663, '2025-03-19', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:52:34', '2025-04-16 06:52:34', NULL, NULL, NULL, 8), -(664, '2025-03-19', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:52:34', '2025-04-16 06:52:34', NULL, NULL, NULL, 8), -(665, '2025-03-19', 4, 7, NULL, NULL, NULL, NULL, '근무', NULL, '용접기 보관함 제작', '2025-04-16 06:52:34', '2025-04-16 06:52:34', NULL, NULL, NULL, 14), -(666, '2025-03-19', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:52:34', '2025-04-16 06:52:34', NULL, NULL, NULL, 4), -(667, '2025-03-19', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:52:34', '2025-04-16 06:52:34', NULL, NULL, NULL, 8), -(668, '2025-03-20', 1, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:54:20', '2025-04-16 06:54:20', NULL, NULL, NULL, 8), -(669, '2025-03-20', 2, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:54:20', '2025-04-16 06:54:20', NULL, NULL, NULL, 4), -(670, '2025-03-20', 3, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:54:20', '2025-04-16 06:54:20', NULL, NULL, NULL, 8), -(671, '2025-03-20', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:54:20', '2025-04-16 06:54:20', NULL, NULL, NULL, 4), -(672, '2025-03-20', 8, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:54:20', '2025-04-16 06:54:20', NULL, NULL, NULL, 4), -(673, '2025-03-20', 9, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:54:20', '2025-04-16 06:54:20', NULL, NULL, NULL, 8), -(674, '2025-03-20', 10, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:54:20', '2025-04-16 06:54:20', NULL, NULL, NULL, 8), -(675, '2025-03-20', 4, 7, NULL, NULL, 2.0, NULL, '근무', NULL, '용접기 보관함 제작', '2025-04-16 06:54:20', '2025-04-16 06:54:20', NULL, NULL, NULL, 14), -(676, '2025-03-20', 5, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:54:20', '2025-04-16 06:54:20', NULL, NULL, NULL, 4), -(677, '2025-03-20', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:54:20', '2025-04-16 06:54:20', NULL, NULL, NULL, 8), -(678, '2025-03-21', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:34:27', '2025-04-16 21:34:27', NULL, NULL, NULL, 8), -(679, '2025-03-21', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:34:28', '2025-04-16 21:34:28', NULL, NULL, NULL, 4), -(680, '2025-03-21', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:34:28', '2025-04-16 21:34:28', NULL, NULL, NULL, 8), -(681, '2025-03-21', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:34:28', '2025-04-16 21:34:28', NULL, NULL, NULL, 8), -(682, '2025-03-21', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:34:28', '2025-04-16 21:34:28', NULL, NULL, NULL, 4), -(683, '2025-03-21', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:34:28', '2025-04-16 21:34:28', NULL, NULL, NULL, 8), -(684, '2025-03-21', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:34:28', '2025-04-16 21:34:28', NULL, NULL, NULL, 8), -(685, '2025-03-21', 4, 7, NULL, NULL, NULL, NULL, '근무', NULL, '용기 보관함 제작', '2025-04-16 21:34:28', '2025-04-16 21:34:28', NULL, NULL, NULL, 14), -(686, '2025-03-21', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:34:28', '2025-04-16 21:34:28', NULL, NULL, NULL, 4), -(687, '2025-03-21', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:34:28', '2025-04-16 21:34:28', NULL, NULL, NULL, 8), -(688, '2025-03-24', 1, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:39:47', '2025-04-16 21:39:47', NULL, NULL, NULL, 8), -(689, '2025-03-24', 2, 4, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-16 21:39:47', '2025-04-16 21:39:47', NULL, NULL, NULL, 5), -(690, '2025-03-24', 3, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:39:47', '2025-04-16 21:39:47', NULL, NULL, NULL, 8), -(691, '2025-03-24', 7, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:39:47', '2025-04-16 21:39:47', NULL, NULL, NULL, 5), -(692, '2025-03-24', 8, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:39:47', '2025-04-16 21:39:47', NULL, NULL, NULL, 5), -(693, '2025-03-24', 9, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:39:47', '2025-04-16 21:39:47', NULL, NULL, NULL, 8), -(694, '2025-03-24', 10, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:39:48', '2025-04-16 21:39:48', NULL, NULL, NULL, 8), -(695, '2025-03-24', 4, 7, NULL, NULL, 2.0, NULL, '근무', NULL, '용기 보관함 제작', '2025-04-16 21:39:48', '2025-04-16 21:39:48', NULL, NULL, NULL, 14), -(696, '2025-03-24', 5, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:39:48', '2025-04-16 21:39:48', NULL, NULL, NULL, 8), -(697, '2025-03-24', 6, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:39:48', '2025-04-16 21:39:48', NULL, NULL, NULL, 8), -(698, '2025-03-25', 1, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:42:13', '2025-04-16 21:42:13', NULL, NULL, NULL, 13), -(699, '2025-03-25', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:42:13', '2025-04-16 21:42:13', NULL, NULL, NULL, 5), -(700, '2025-03-25', 3, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:42:13', '2025-04-16 21:42:13', NULL, NULL, NULL, 13), -(701, '2025-03-25', 7, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:42:13', '2025-04-16 21:42:13', NULL, NULL, NULL, 5), -(702, '2025-03-25', 8, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:42:13', '2025-04-16 21:42:13', NULL, NULL, NULL, 13), -(703, '2025-03-25', 9, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:42:13', '2025-04-16 21:42:13', NULL, NULL, NULL, 13), -(704, '2025-03-25', 10, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:42:13', '2025-04-16 21:42:13', NULL, NULL, NULL, 13), -(705, '2025-03-25', 4, 7, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:42:13', '2025-04-16 21:42:13', NULL, NULL, NULL, 14), -(706, '2025-03-25', 5, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:42:13', '2025-04-16 21:42:13', NULL, NULL, NULL, 5), -(707, '2025-03-25', 6, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:42:13', '2025-04-16 21:42:13', NULL, NULL, NULL, 13), -(708, '2025-03-26', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:43:37', '2025-04-16 21:43:37', NULL, NULL, NULL, 13), -(709, '2025-03-26', 2, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 21:43:37', '2025-04-16 21:43:37', NULL, NULL, NULL, 15), -(710, '2025-03-26', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:43:37', '2025-04-16 21:43:37', NULL, NULL, NULL, 5), -(711, '2025-03-26', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:43:37', '2025-04-16 21:43:37', NULL, NULL, NULL, 5), -(712, '2025-03-26', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:43:37', '2025-04-16 21:43:37', NULL, NULL, NULL, 8), -(713, '2025-03-26', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:43:37', '2025-04-16 21:43:37', NULL, NULL, NULL, 8), -(714, '2025-03-26', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:43:37', '2025-04-16 21:43:37', NULL, NULL, NULL, 8), -(715, '2025-03-26', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:43:37', '2025-04-16 21:43:37', NULL, NULL, NULL, 13), -(716, '2025-03-26', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:43:37', '2025-04-16 21:43:37', NULL, NULL, NULL, 5), -(717, '2025-03-26', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:43:37', '2025-04-16 21:43:37', NULL, NULL, NULL, 8), -(718, '2025-03-27', 1, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:45:14', '2025-04-16 21:45:14', NULL, NULL, NULL, 8), -(719, '2025-03-27', 2, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:45:14', '2025-04-16 21:45:14', NULL, NULL, NULL, 5), -(720, '2025-03-27', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:45:14', '2025-04-16 21:45:14', NULL, NULL, NULL, 8), -(721, '2025-03-27', 7, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:45:14', '2025-04-16 21:45:14', NULL, NULL, NULL, 5), -(722, '2025-03-27', 5, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:45:14', '2025-04-16 21:45:14', NULL, NULL, NULL, 5), -(723, '2025-03-27', 9, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:45:14', '2025-04-16 21:45:14', NULL, NULL, NULL, 8), -(724, '2025-03-27', 10, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 21:45:14', '2025-04-16 21:45:14', NULL, NULL, NULL, 15), -(725, '2025-03-27', 4, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:45:14', '2025-04-16 21:45:14', NULL, NULL, NULL, 5), -(726, '2025-03-27', 8, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:45:14', '2025-04-16 21:45:14', NULL, NULL, NULL, 8), -(727, '2025-03-27', 6, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:45:14', '2025-04-16 21:45:14', NULL, NULL, NULL, 8), -(728, '2025-03-28', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:46:31', '2025-04-16 21:46:31', NULL, NULL, NULL, 8), -(729, '2025-03-28', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:46:31', '2025-04-16 21:46:31', NULL, NULL, NULL, 5), -(730, '2025-03-28', 3, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 21:46:31', '2025-04-16 21:46:31', NULL, NULL, NULL, 15), -(731, '2025-03-28', 7, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 21:46:31', '2025-04-16 21:46:31', NULL, NULL, NULL, 15), -(732, '2025-03-28', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:46:31', '2025-04-16 21:46:31', NULL, NULL, NULL, 8), -(733, '2025-03-28', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:46:31', '2025-04-16 21:46:31', NULL, NULL, NULL, 8), -(734, '2025-03-28', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:46:31', '2025-04-16 21:46:31', NULL, NULL, NULL, 8), -(735, '2025-03-28', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:46:31', '2025-04-16 21:46:31', NULL, NULL, NULL, 5), -(736, '2025-03-28', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:46:31', '2025-04-16 21:46:31', NULL, NULL, NULL, 5), -(737, '2025-03-28', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:46:31', '2025-04-16 21:46:31', NULL, NULL, NULL, 8), -(738, '2025-03-31', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:47:37', '2025-04-16 21:47:37', NULL, NULL, NULL, 8), -(739, '2025-03-31', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:47:37', '2025-04-16 21:47:37', NULL, NULL, NULL, 5), -(740, '2025-03-31', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:47:37', '2025-04-16 21:47:37', NULL, NULL, NULL, 8), -(741, '2025-03-31', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:47:37', '2025-04-16 21:47:37', NULL, NULL, NULL, 8), -(742, '2025-03-31', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:47:37', '2025-04-16 21:47:37', NULL, NULL, NULL, 8), -(743, '2025-03-31', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:47:37', '2025-04-16 21:47:37', NULL, NULL, NULL, 8), -(744, '2025-03-31', 10, 13, NULL, NULL, NULL, NULL, '유급', NULL, '외조모상(2일)', '2025-04-16 21:47:37', '2025-04-16 21:47:37', NULL, NULL, NULL, 15), -(745, '2025-03-31', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:47:37', '2025-04-16 21:47:37', NULL, NULL, NULL, 5), -(746, '2025-03-31', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:47:37', '2025-04-16 21:47:37', NULL, NULL, NULL, 8), -(747, '2025-03-31', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:47:37', '2025-04-16 21:47:37', NULL, NULL, NULL, 8), -(748, '2025-03-14', 7, 4, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-17 01:53:24', '2025-04-17 01:53:24', NULL, NULL, NULL, 4), -(749, '2025-04-01', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:22:42', '2025-04-17 04:22:42', NULL, NULL, NULL, 9), -(750, '2025-04-01', 2, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:22:42', '2025-04-17 04:22:42', NULL, NULL, NULL, 5), -(751, '2025-04-01', 3, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:22:42', '2025-04-17 04:22:42', NULL, NULL, NULL, 9), -(752, '2025-04-01', 4, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:22:42', '2025-04-17 04:22:42', NULL, NULL, NULL, 5), -(753, '2025-04-01', 8, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:22:42', '2025-04-17 04:22:42', NULL, NULL, NULL, 9), -(754, '2025-04-01', 9, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:22:42', '2025-04-17 04:22:42', NULL, NULL, NULL, 9), -(755, '2025-04-01', 10, 13, NULL, NULL, NULL, NULL, '유급', NULL, '외조모상', '2025-04-17 04:22:42', '2025-04-17 04:22:42', NULL, NULL, NULL, 15), -(756, '2025-04-01', 7, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:22:42', '2025-04-17 04:22:42', NULL, NULL, NULL, 5), -(757, '2025-04-01', 5, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:22:42', '2025-04-17 04:22:42', NULL, NULL, NULL, 9), -(758, '2025-04-01', 6, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:22:43', '2025-04-17 04:22:43', NULL, NULL, NULL, 9), -(769, '2025-04-02', 1, 1, NULL, NULL, NULL, NULL, '반반차', NULL, NULL, '2025-04-17 04:25:55', '2025-04-17 04:25:55', NULL, NULL, NULL, 9), -(770, '2025-04-02', 2, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:25:56', '2025-04-17 04:25:56', NULL, NULL, NULL, 9), -(771, '2025-04-02', 3, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:25:56', '2025-04-17 04:25:56', NULL, NULL, NULL, 9), -(773, '2025-04-02', 8, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:25:56', '2025-04-17 04:25:56', NULL, NULL, NULL, 9), -(774, '2025-04-02', 9, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:25:56', '2025-04-17 04:25:56', NULL, NULL, NULL, 9), -(775, '2025-04-02', 10, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-17 04:25:56', '2025-04-17 04:25:56', NULL, NULL, NULL, 15), -(776, '2025-04-02', 4, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-17 04:25:56', '2025-04-17 04:25:56', NULL, NULL, NULL, 15), -(777, '2025-04-02', 5, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:25:56', '2025-04-17 04:25:56', NULL, NULL, NULL, 9), -(778, '2025-04-02', 6, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:25:56', '2025-04-17 04:25:56', NULL, NULL, NULL, 9), -(779, '2025-04-03', 1, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:27:12', '2025-04-17 04:27:12', NULL, NULL, NULL, 9), -(780, '2025-04-03', 2, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:27:12', '2025-04-17 04:27:12', NULL, NULL, NULL, 9), -(781, '2025-04-03', 3, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:27:12', '2025-04-17 04:27:12', NULL, NULL, NULL, 9), -(783, '2025-04-03', 8, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:27:12', '2025-04-17 04:27:12', NULL, NULL, NULL, 9), -(784, '2025-04-03', 9, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:27:12', '2025-04-17 04:27:12', NULL, NULL, NULL, 9), -(785, '2025-04-03', 10, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:27:12', '2025-04-17 04:27:12', NULL, NULL, NULL, 9), -(786, '2025-04-03', 4, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:27:12', '2025-04-17 04:27:12', NULL, NULL, NULL, 9), -(787, '2025-04-03', 5, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:27:12', '2025-04-17 04:27:12', NULL, NULL, NULL, 9), -(788, '2025-04-03', 6, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:27:12', '2025-04-17 04:27:12', NULL, NULL, NULL, 9), -(789, '2025-04-04', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:30:07', '2025-04-17 04:30:07', NULL, NULL, NULL, 9), -(790, '2025-04-04', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:30:07', '2025-04-17 04:30:07', NULL, NULL, NULL, 9), -(791, '2025-04-04', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:30:07', '2025-04-17 04:30:07', NULL, NULL, NULL, 5), -(792, '2025-04-04', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:30:07', '2025-04-17 04:30:07', NULL, NULL, NULL, 9), -(793, '2025-04-04', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:30:07', '2025-04-17 04:30:07', NULL, NULL, NULL, 5), -(794, '2025-04-04', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:30:07', '2025-04-17 04:30:07', NULL, NULL, NULL, 9), -(795, '2025-04-04', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:30:07', '2025-04-17 04:30:07', NULL, NULL, NULL, 9), -(796, '2025-04-04', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:30:07', '2025-04-17 04:30:07', NULL, NULL, NULL, 9), -(797, '2025-04-04', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:30:07', '2025-04-17 04:30:07', NULL, NULL, NULL, 9), -(798, '2025-04-04', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:30:07', '2025-04-17 04:30:07', NULL, NULL, NULL, 5), -(799, '2025-04-07', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:39:43', '2025-04-17 04:39:43', NULL, NULL, NULL, 9), -(800, '2025-04-07', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:39:43', '2025-04-17 04:39:43', NULL, NULL, NULL, 9), -(801, '2025-04-07', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:39:43', '2025-04-17 04:39:43', NULL, NULL, NULL, 5), -(802, '2025-04-07', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:39:43', '2025-04-17 04:39:43', NULL, NULL, NULL, 9), -(803, '2025-04-07', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:39:43', '2025-04-17 04:39:43', NULL, NULL, NULL, 5), -(804, '2025-04-07', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:39:43', '2025-04-17 04:39:43', NULL, NULL, NULL, 9), -(805, '2025-04-07', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:39:43', '2025-04-17 04:39:43', NULL, NULL, NULL, 9), -(806, '2025-04-07', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:39:43', '2025-04-17 04:39:43', NULL, NULL, NULL, 9), -(807, '2025-04-07', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:39:43', '2025-04-17 04:39:43', NULL, NULL, NULL, 9), -(808, '2025-04-07', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:39:43', '2025-04-17 04:39:43', NULL, NULL, NULL, 5), -(809, '2025-04-08', 1, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:41:16', '2025-04-17 04:41:16', NULL, NULL, NULL, 9), -(811, '2025-04-08', 3, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:41:16', '2025-04-17 04:41:16', NULL, NULL, NULL, 5), -(812, '2025-04-08', 7, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:41:16', '2025-04-17 04:41:16', NULL, NULL, NULL, 9), -(813, '2025-04-08', 8, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:41:16', '2025-04-17 04:41:16', NULL, NULL, NULL, 5), -(814, '2025-04-08', 9, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:41:16', '2025-04-17 04:41:16', NULL, NULL, NULL, 9), -(815, '2025-04-08', 10, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:41:16', '2025-04-17 04:41:16', NULL, NULL, NULL, 9), -(816, '2025-04-08', 4, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:41:16', '2025-04-17 04:41:16', NULL, NULL, NULL, 9), -(817, '2025-04-08', 5, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:41:16', '2025-04-17 04:41:16', NULL, NULL, NULL, 9), -(818, '2025-04-08', 6, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:41:16', '2025-04-17 04:41:16', NULL, NULL, NULL, 5), -(819, '2025-04-09', 1, 1, NULL, NULL, NULL, NULL, '반반차', NULL, NULL, '2025-04-17 04:43:02', '2025-04-17 04:43:02', NULL, NULL, NULL, 9), -(820, '2025-04-09', 2, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:43:02', '2025-04-17 04:43:02', NULL, NULL, NULL, 9), -(821, '2025-04-09', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:43:03', '2025-04-17 04:43:03', NULL, NULL, NULL, 5), -(822, '2025-04-09', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:43:03', '2025-04-17 04:43:03', NULL, NULL, NULL, 9), -(823, '2025-04-09', 8, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:43:03', '2025-04-17 04:43:03', NULL, NULL, NULL, 5), -(824, '2025-04-09', 9, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:43:03', '2025-04-17 04:43:03', NULL, NULL, NULL, 9), -(825, '2025-04-09', 10, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:43:03', '2025-04-17 04:43:03', NULL, NULL, NULL, 9), -(826, '2025-04-09', 4, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:43:03', '2025-04-17 04:43:03', NULL, NULL, NULL, 9), -(827, '2025-04-09', 5, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:43:03', '2025-04-17 04:43:03', NULL, NULL, NULL, 9), -(828, '2025-04-09', 6, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:43:03', '2025-04-17 04:43:03', NULL, NULL, NULL, 5), -(829, '2025-04-10', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:44:30', '2025-04-17 04:44:30', NULL, NULL, NULL, 9), -(830, '2025-04-10', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:44:30', '2025-04-17 04:44:30', NULL, NULL, NULL, 9), -(831, '2025-04-10', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:44:30', '2025-04-17 04:44:30', NULL, NULL, NULL, 5), -(832, '2025-04-10', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:44:30', '2025-04-17 04:44:30', NULL, NULL, NULL, 9), -(833, '2025-04-10', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:44:30', '2025-04-17 04:44:30', NULL, NULL, NULL, 5), -(834, '2025-04-10', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:44:30', '2025-04-17 04:44:30', NULL, NULL, NULL, 9), -(835, '2025-04-10', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:44:30', '2025-04-17 04:44:30', NULL, NULL, NULL, 9), -(836, '2025-04-10', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:44:30', '2025-04-17 04:44:30', NULL, NULL, NULL, 9), -(837, '2025-04-10', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:44:30', '2025-04-17 04:44:30', NULL, NULL, NULL, 9), -(838, '2025-04-10', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:44:30', '2025-04-17 04:44:30', NULL, NULL, NULL, 5), -(839, '2025-04-11', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:46:24', '2025-04-17 04:46:24', NULL, NULL, NULL, 9), -(840, '2025-04-11', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:46:24', '2025-04-17 04:46:24', NULL, NULL, NULL, 9), -(841, '2025-04-11', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:46:24', '2025-04-17 04:46:24', NULL, NULL, NULL, 5), -(842, '2025-04-11', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:46:25', '2025-04-17 04:46:25', NULL, NULL, NULL, 9), -(843, '2025-04-11', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:46:25', '2025-04-17 04:46:25', NULL, NULL, NULL, 5), -(844, '2025-04-11', 9, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-17 04:46:25', '2025-04-17 04:46:25', NULL, NULL, NULL, 15), -(845, '2025-04-11', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:46:25', '2025-04-17 04:46:25', NULL, NULL, NULL, 5), -(846, '2025-04-11', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:46:25', '2025-04-17 04:46:25', NULL, NULL, NULL, 9), -(847, '2025-04-11', 5, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-17 04:46:25', '2025-04-17 04:46:25', NULL, NULL, NULL, 15), -(848, '2025-04-11', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:46:25', '2025-04-17 04:46:25', NULL, NULL, NULL, 9), -(849, '2025-04-14', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:47:37', '2025-04-17 04:47:37', NULL, NULL, NULL, 9), -(850, '2025-04-14', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:47:37', '2025-04-17 04:47:37', NULL, NULL, NULL, 9), -(851, '2025-04-14', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:47:37', '2025-04-17 04:47:37', NULL, NULL, NULL, 5), -(852, '2025-04-14', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:47:37', '2025-04-17 04:47:37', NULL, NULL, NULL, 9), -(853, '2025-04-14', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:47:38', '2025-04-17 04:47:38', NULL, NULL, NULL, 5), -(854, '2025-04-14', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:47:38', '2025-04-17 04:47:38', NULL, NULL, NULL, 9), -(855, '2025-04-14', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:47:38', '2025-04-17 04:47:38', NULL, NULL, NULL, 9), -(856, '2025-04-14', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:47:38', '2025-04-17 04:47:38', NULL, NULL, NULL, 9), -(857, '2025-04-14', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:47:38', '2025-04-17 04:47:38', NULL, NULL, NULL, 9), -(858, '2025-04-14', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:47:38', '2025-04-17 04:47:38', NULL, NULL, NULL, 9), -(859, '2025-04-17', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:48:39', '2025-04-17 04:48:39', NULL, NULL, NULL, 9), -(860, '2025-04-17', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:48:39', '2025-04-17 04:48:39', NULL, NULL, NULL, 5), -(861, '2025-04-17', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:48:39', '2025-04-17 04:48:39', NULL, NULL, NULL, 5), -(862, '2025-04-17', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:48:39', '2025-04-17 04:48:39', NULL, NULL, NULL, 9), -(863, '2025-04-17', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:48:39', '2025-04-17 04:48:39', NULL, NULL, NULL, 5), -(864, '2025-04-17', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:48:39', '2025-04-17 04:48:39', NULL, NULL, NULL, 9), -(865, '2025-04-17', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:48:39', '2025-04-17 04:48:39', NULL, NULL, NULL, 9), -(866, '2025-04-17', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:48:39', '2025-04-17 04:48:39', NULL, NULL, NULL, 9), -(867, '2025-04-17', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:48:39', '2025-04-17 04:48:39', NULL, NULL, NULL, 9), -(868, '2025-04-17', 6, 4, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-17 04:48:39', '2025-04-17 04:48:39', NULL, NULL, NULL, 5), -(879, '2025-04-21', 1, 7, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-21 06:22:20', '2025-04-21 06:22:20', NULL, NULL, NULL, 14), -(880, '2025-04-21', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-21 06:22:20', '2025-04-21 06:22:20', NULL, NULL, NULL, 5), -(881, '2025-04-21', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-21 06:22:20', '2025-04-21 06:22:20', NULL, NULL, NULL, 5), -(882, '2025-04-21', 7, 7, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-21 06:22:20', '2025-04-21 06:22:20', NULL, NULL, NULL, 14), -(883, '2025-04-21', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-21 06:22:20', '2025-04-21 06:22:20', NULL, NULL, NULL, 5), -(884, '2025-04-21', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-21 06:22:20', '2025-04-21 06:22:20', NULL, NULL, NULL, 5), -(885, '2025-04-21', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-21 06:22:20', '2025-04-21 06:22:20', NULL, NULL, NULL, 5), -(886, '2025-04-21', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-21 06:22:20', '2025-04-21 06:22:20', NULL, NULL, NULL, 5), -(887, '2025-04-21', 5, 7, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-21 06:22:20', '2025-04-21 06:22:20', NULL, NULL, NULL, 14), -(888, '2025-04-21', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-21 06:22:20', '2025-04-21 06:22:20', NULL, NULL, NULL, 5), -(889, '2025-04-22', 1, 7, NULL, NULL, NULL, NULL, '근무', NULL, 'ICK 크레인 공사', '2025-04-22 01:49:11', '2025-04-22 01:49:11', NULL, NULL, NULL, 14), -(890, '2025-04-22', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-22 01:49:11', '2025-04-22 01:49:11', NULL, NULL, NULL, 5), -(891, '2025-04-22', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-22 01:49:11', '2025-04-22 01:49:11', NULL, NULL, NULL, 5), -(892, '2025-04-22', 7, 7, NULL, NULL, NULL, NULL, '근무', NULL, 'ICK 크레인 공사', '2025-04-22 01:49:11', '2025-04-22 01:49:11', NULL, NULL, NULL, 14), -(893, '2025-04-22', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-22 01:49:11', '2025-04-22 01:49:11', NULL, NULL, NULL, 5), -(894, '2025-04-22', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-22 01:49:11', '2025-04-22 01:49:11', NULL, NULL, NULL, 5), -(895, '2025-04-22', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-22 01:49:11', '2025-04-22 01:49:11', NULL, NULL, NULL, 5), -(896, '2025-04-22', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-22 01:49:11', '2025-04-22 01:49:11', NULL, NULL, NULL, 5), -(897, '2025-04-22', 5, 7, NULL, NULL, NULL, NULL, '근무', NULL, 'ICK 크레인 공사', '2025-04-22 01:49:11', '2025-04-22 01:49:11', NULL, NULL, NULL, 14), -(898, '2025-04-22', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-22 01:49:11', '2025-04-22 01:49:11', NULL, NULL, NULL, 5), -(899, '2025-04-23', 1, 7, NULL, NULL, NULL, NULL, '근무', NULL, '제2공장 공사', '2025-04-23 06:57:29', '2025-04-23 06:57:29', NULL, NULL, NULL, 14), -(900, '2025-04-23', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-23 06:57:29', '2025-04-23 06:57:29', NULL, NULL, NULL, 5), -(901, '2025-04-23', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-23 06:57:29', '2025-04-23 06:57:29', NULL, NULL, NULL, 5), -(902, '2025-04-23', 7, 7, NULL, NULL, NULL, NULL, '근무', NULL, '제2공장 공사', '2025-04-23 06:57:29', '2025-04-23 06:57:29', NULL, NULL, NULL, 14), -(903, '2025-04-23', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-23 06:57:29', '2025-04-23 06:57:29', NULL, NULL, NULL, 5), -(904, '2025-04-23', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-23 06:57:29', '2025-04-23 06:57:29', NULL, NULL, NULL, 5), -(905, '2025-04-23', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-23 06:57:29', '2025-04-23 06:57:29', NULL, NULL, NULL, 5), -(906, '2025-04-23', 4, 4, NULL, NULL, NULL, NULL, '반반차', NULL, NULL, '2025-04-23 06:57:29', '2025-04-23 06:57:29', NULL, NULL, NULL, 5), -(907, '2025-04-23', 5, 7, NULL, NULL, NULL, NULL, '근무', NULL, '제2공장 공사', '2025-04-23 06:57:29', '2025-04-23 06:57:29', NULL, NULL, NULL, 14), -(908, '2025-04-23', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-23 06:57:29', '2025-04-23 06:57:29', NULL, NULL, NULL, 5), -(909, '2025-04-24', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, '벨브 부적합 관련 작업 추가', '2025-04-24 05:42:30', '2025-04-24 05:42:30', NULL, NULL, NULL, 9), -(910, '2025-04-24', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-24 05:42:30', '2025-04-24 05:42:30', NULL, NULL, NULL, 9), -(911, '2025-04-24', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-24 05:42:30', '2025-04-24 05:42:30', NULL, NULL, NULL, 9), -(912, '2025-04-24', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-24 05:42:30', '2025-04-24 05:42:30', NULL, NULL, NULL, 9), -(913, '2025-04-24', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-24 05:42:30', '2025-04-24 05:42:30', NULL, NULL, NULL, 9), -(914, '2025-04-24', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-24 05:42:30', '2025-04-24 05:42:30', NULL, NULL, NULL, 9), -(915, '2025-04-24', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-24 05:42:30', '2025-04-24 05:42:30', NULL, NULL, NULL, 9), -(916, '2025-04-24', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-24 05:42:30', '2025-04-24 05:42:30', NULL, NULL, NULL, 9), -(917, '2025-04-24', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-24 05:42:30', '2025-04-24 05:42:30', NULL, NULL, NULL, 9), -(918, '2025-04-24', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-24 05:42:30', '2025-04-24 05:42:30', NULL, NULL, NULL, 9), -(919, '2025-04-25', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-25 04:23:38', '2025-04-25 04:23:38', NULL, NULL, NULL, 9), -(920, '2025-04-25', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-25 04:23:38', '2025-04-25 04:23:38', NULL, NULL, NULL, 9), -(921, '2025-04-25', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-25 04:23:38', '2025-04-25 04:23:38', NULL, NULL, NULL, 5), -(922, '2025-04-25', 7, 1, NULL, NULL, NULL, NULL, '반반차', NULL, NULL, '2025-04-25 04:23:38', '2025-04-25 04:23:38', NULL, NULL, NULL, 9), -(923, '2025-04-25', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-25 04:23:38', '2025-04-25 04:23:38', NULL, NULL, NULL, 9), -(924, '2025-04-25', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-25 04:23:38', '2025-04-25 04:23:38', NULL, NULL, NULL, 9), -(925, '2025-04-25', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-25 04:23:38', '2025-04-25 04:23:38', NULL, NULL, NULL, 9), -(926, '2025-04-25', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, '확관 작업', '2025-04-25 04:23:38', '2025-04-25 04:23:38', NULL, NULL, NULL, 5), -(927, '2025-04-25', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-25 04:23:38', '2025-04-25 04:23:38', NULL, NULL, NULL, 9), -(928, '2025-04-25', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-25 04:23:39', '2025-04-25 04:23:39', NULL, NULL, NULL, 5), -(929, '2025-04-28', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, 'NCR 벨브 라인 설치', '2025-04-28 23:20:22', '2025-04-28 23:20:22', NULL, NULL, NULL, 9), -(930, '2025-04-28', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, 'NCR 벨브 라인 설치', '2025-04-28 23:20:23', '2025-04-28 23:20:23', NULL, NULL, NULL, 9), -(931, '2025-04-28', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, 'NCR 벨브 라인 설치', '2025-04-28 23:20:23', '2025-04-28 23:20:23', NULL, NULL, NULL, 9), -(932, '2025-04-28', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, 'NCR 벨브 라인 설치', '2025-04-28 23:20:23', '2025-04-28 23:20:23', NULL, NULL, NULL, 9), -(934, '2025-04-28', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, 'NCR 벨브 라인 설치', '2025-04-28 23:20:23', '2025-04-28 23:20:23', NULL, NULL, NULL, 9), -(935, '2025-04-28', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, 'NCR 벨브 라인 설치', '2025-04-28 23:20:23', '2025-04-28 23:20:23', NULL, NULL, NULL, 9), -(936, '2025-04-28', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, 'NCR 벨브 라인 설치', '2025-04-28 23:20:23', '2025-04-28 23:20:23', NULL, NULL, NULL, 9), -(937, '2025-04-28', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, 'NCR 벨브 라인 설치', '2025-04-28 23:20:23', '2025-04-28 23:20:23', NULL, NULL, NULL, 9), -(938, '2025-04-28', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, 'NCR 벨브 라인 설치', '2025-04-28 23:20:23', '2025-04-28 23:20:23', NULL, NULL, NULL, 9), -(939, '2025-04-29', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-29 04:41:11', '2025-04-29 04:41:11', NULL, NULL, NULL, 9), -(940, '2025-04-29', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-29 04:41:11', '2025-04-29 04:41:11', NULL, NULL, NULL, 16), -(941, '2025-04-29', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-29 04:41:11', '2025-04-29 04:41:11', NULL, NULL, NULL, 16), -(942, '2025-04-29', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-29 04:41:11', '2025-04-29 04:41:11', NULL, NULL, NULL, 9), -(943, '2025-04-29', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-29 04:41:11', '2025-04-29 04:41:11', NULL, NULL, NULL, 16), -(944, '2025-04-29', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-29 04:41:11', '2025-04-29 04:41:11', NULL, NULL, NULL, 16), -(945, '2025-04-29', 10, 7, NULL, NULL, NULL, NULL, '근무', NULL, '제2공장 공사', '2025-04-29 04:41:11', '2025-04-29 04:41:11', NULL, NULL, NULL, 14), -(946, '2025-04-29', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-29 04:41:11', '2025-04-29 04:41:11', NULL, NULL, NULL, 16), -(947, '2025-04-29', 8, 4, NULL, NULL, NULL, NULL, '반반차', NULL, NULL, '2025-04-29 04:41:11', '2025-04-29 04:41:11', NULL, NULL, NULL, 16), -(948, '2025-04-29', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-29 04:41:11', '2025-04-29 04:41:11', NULL, NULL, NULL, 16), -(949, '2025-04-30', 1, 7, NULL, NULL, NULL, NULL, '근무', NULL, '제2공장 공사', '2025-04-30 03:43:51', '2025-04-30 03:43:51', NULL, NULL, NULL, 14), -(950, '2025-04-30', 2, 4, NULL, NULL, NULL, NULL, '반반차', NULL, NULL, '2025-04-30 03:43:51', '2025-04-30 03:43:51', NULL, NULL, NULL, 16), -(951, '2025-04-30', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-30 03:43:51', '2025-04-30 03:43:51', NULL, NULL, NULL, 16), -(953, '2025-04-30', 5, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-30 03:43:51', '2025-04-30 03:43:51', NULL, NULL, NULL, 15), -(954, '2025-04-30', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-30 03:43:51', '2025-04-30 03:43:51', NULL, NULL, NULL, 16), -(955, '2025-04-30', 10, 7, NULL, NULL, NULL, NULL, '근무', NULL, '제2공장 공사', '2025-04-30 03:43:51', '2025-04-30 03:43:51', NULL, NULL, NULL, 14), -(956, '2025-04-30', 7, 7, NULL, NULL, NULL, NULL, '근무', NULL, '제2공장 공사', '2025-04-30 03:43:51', '2025-04-30 03:43:51', NULL, NULL, NULL, 14), -(957, '2025-04-30', 8, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-30 03:43:51', '2025-04-30 03:43:51', NULL, NULL, NULL, 15), -(958, '2025-04-30', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-30 03:43:51', '2025-04-30 03:43:51', NULL, NULL, NULL, 16), -(959, '2025-04-30', 4, 7, NULL, NULL, NULL, NULL, '반반차', NULL, '제2공장 공사', '2025-04-30 04:22:04', '2025-04-30 04:22:04', NULL, NULL, NULL, 14), -(1023, '2025-04-15', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:01:35', '2025-05-07 01:01:35', NULL, NULL, NULL, 9), -(1024, '2025-04-15', 2, 4, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-05-07 01:01:35', '2025-05-07 01:01:35', NULL, NULL, NULL, 5), -(1025, '2025-04-15', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:01:35', '2025-05-07 01:01:35', NULL, NULL, NULL, 5), -(1026, '2025-04-15', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:01:35', '2025-05-07 01:01:35', NULL, NULL, NULL, 9), -(1027, '2025-04-15', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:01:35', '2025-05-07 01:01:35', NULL, NULL, NULL, 9), -(1028, '2025-04-15', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:01:35', '2025-05-07 01:01:35', NULL, NULL, NULL, 5), -(1029, '2025-04-15', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:01:35', '2025-05-07 01:01:35', NULL, NULL, NULL, 9), -(1030, '2025-04-15', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:01:35', '2025-05-07 01:01:35', NULL, NULL, NULL, 5), -(1031, '2025-04-15', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:01:35', '2025-05-07 01:01:35', NULL, NULL, NULL, 5), -(1032, '2025-04-15', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:01:35', '2025-05-07 01:01:35', NULL, NULL, NULL, 9), -(1033, '2025-04-16', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:03:57', '2025-05-07 01:03:57', NULL, NULL, NULL, 9), -(1034, '2025-04-16', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:03:57', '2025-05-07 01:03:57', NULL, NULL, NULL, 5), -(1035, '2025-04-16', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:03:57', '2025-05-07 01:03:57', NULL, NULL, NULL, 5); -INSERT INTO `WorkReports` (`id`, `date`, `worker_id`, `project_id`, `morning_task_id`, `afternoon_task_id`, `overtime_hours`, `overtime_task_id`, `work_details`, `note`, `memo`, `created_at`, `updated_at`, `morning_project_id`, `afternoon_project_id`, `overtime_project_id`, `task_id`) VALUES -(1036, '2025-04-16', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:03:57', '2025-05-07 01:03:57', NULL, NULL, NULL, 9), -(1037, '2025-04-16', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:03:57', '2025-05-07 01:03:57', NULL, NULL, NULL, 9), -(1038, '2025-04-16', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:03:57', '2025-05-07 01:03:57', NULL, NULL, NULL, 5), -(1039, '2025-04-16', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:03:57', '2025-05-07 01:03:57', NULL, NULL, NULL, 9), -(1040, '2025-04-16', 8, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-05-07 01:03:57', '2025-05-07 01:03:57', NULL, NULL, NULL, 15), -(1041, '2025-04-16', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:03:57', '2025-05-07 01:03:57', NULL, NULL, NULL, 5), -(1042, '2025-04-16', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:03:57', '2025-05-07 01:03:57', NULL, NULL, NULL, 9), -(1043, '2025-04-18', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:05:17', '2025-05-07 01:05:17', NULL, NULL, NULL, 9), -(1044, '2025-04-18', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:05:17', '2025-05-07 01:05:17', NULL, NULL, NULL, 5), -(1045, '2025-04-18', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:05:17', '2025-05-07 01:05:17', NULL, NULL, NULL, 5), -(1046, '2025-04-18', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:05:17', '2025-05-07 01:05:17', NULL, NULL, NULL, 9), -(1047, '2025-04-18', 5, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-05-07 01:05:17', '2025-05-07 01:05:17', NULL, NULL, NULL, 15), -(1048, '2025-04-18', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:05:17', '2025-05-07 01:05:17', NULL, NULL, NULL, 5), -(1049, '2025-04-18', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:05:17', '2025-05-07 01:05:17', NULL, NULL, NULL, 9), -(1050, '2025-04-18', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:05:17', '2025-05-07 01:05:17', NULL, NULL, NULL, 5), -(1051, '2025-04-18', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:05:17', '2025-05-07 01:05:17', NULL, NULL, NULL, 5), -(1052, '2025-04-18', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:05:17', '2025-05-07 01:05:17', NULL, NULL, NULL, 9), -(1053, '2025-04-02', 7, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-07 02:19:00', '2025-05-07 02:19:00', NULL, NULL, NULL, 9), -(1054, '2025-04-03', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 02:19:45', '2025-05-07 02:19:45', NULL, NULL, NULL, 9), -(1055, '2025-04-08', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 02:20:22', '2025-05-07 02:20:22', NULL, NULL, NULL, 9), -(1056, '2025-04-28', 8, 1, NULL, NULL, NULL, NULL, '반반차', NULL, 'NCR 벨브라인 설치', '2025-05-07 02:21:44', '2025-05-07 02:21:44', NULL, NULL, NULL, 9), -(1057, '2025-05-02', 1, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-05-07 03:13:26', '2025-05-07 03:13:26', NULL, NULL, NULL, 15), -(1058, '2025-05-02', 2, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-05-07 03:13:26', '2025-05-07 03:13:26', NULL, NULL, NULL, 15), -(1059, '2025-05-02', 3, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-05-07 03:13:26', '2025-05-07 03:13:26', NULL, NULL, NULL, 15), -(1060, '2025-05-02', 4, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-05-07 03:13:26', '2025-05-07 03:13:26', NULL, NULL, NULL, 15), -(1061, '2025-05-02', 5, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-05-07 03:13:26', '2025-05-07 03:13:26', NULL, NULL, NULL, 15), -(1062, '2025-05-02', 6, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-05-07 03:13:26', '2025-05-07 03:13:26', NULL, NULL, NULL, 15), -(1063, '2025-05-02', 7, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-05-07 03:13:26', '2025-05-07 03:13:26', NULL, NULL, NULL, 15), -(1064, '2025-05-02', 8, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-05-07 03:13:26', '2025-05-07 03:13:26', NULL, NULL, NULL, 15), -(1065, '2025-05-02', 9, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-05-07 03:13:26', '2025-05-07 03:13:26', NULL, NULL, NULL, 15), -(1066, '2025-05-02', 10, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-05-07 03:13:26', '2025-05-07 03:13:26', NULL, NULL, NULL, 15), -(1067, '2025-05-07', 1, 7, NULL, NULL, NULL, NULL, '근무', NULL, '작업장 구역 정리', '2025-05-07 03:19:18', '2025-05-07 03:19:18', NULL, NULL, NULL, 14), -(1068, '2025-05-07', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 03:19:18', '2025-05-07 03:19:18', NULL, NULL, NULL, 16), -(1069, '2025-05-07', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 03:19:18', '2025-05-07 03:19:18', NULL, NULL, NULL, 16), -(1070, '2025-05-07', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 03:19:18', '2025-05-07 03:19:18', NULL, NULL, NULL, 16), -(1071, '2025-05-07', 5, 7, NULL, NULL, NULL, NULL, '근무', NULL, '작업장 구역 정리', '2025-05-07 03:19:18', '2025-05-07 03:19:18', NULL, NULL, NULL, 14), -(1072, '2025-05-07', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 03:19:18', '2025-05-07 03:19:18', NULL, NULL, NULL, 16), -(1073, '2025-05-07', 7, 7, NULL, NULL, NULL, NULL, '근무', NULL, '작업장 구역 정리', '2025-05-07 03:19:18', '2025-05-07 03:19:18', NULL, NULL, NULL, 14), -(1074, '2025-05-07', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 03:19:18', '2025-05-07 03:19:18', NULL, NULL, NULL, 16), -(1075, '2025-05-07', 9, 7, NULL, NULL, NULL, NULL, '근무', NULL, '작업장 구역 정리', '2025-05-07 03:19:18', '2025-05-07 03:19:18', NULL, NULL, NULL, 14), -(1076, '2025-05-07', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 03:19:18', '2025-05-07 03:19:18', NULL, NULL, NULL, 16), -(1078, '2025-05-08', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 23:06:52', '2025-05-07 23:06:52', NULL, NULL, NULL, 16), -(1079, '2025-05-08', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 23:06:52', '2025-05-07 23:06:52', NULL, NULL, NULL, 16), -(1080, '2025-05-08', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 23:06:52', '2025-05-07 23:06:52', NULL, NULL, NULL, 16), -(1081, '2025-05-08', 5, 7, NULL, NULL, NULL, NULL, '근무', NULL, '작업장 구역 정리', '2025-05-07 23:06:52', '2025-05-07 23:06:52', NULL, NULL, NULL, 14), -(1082, '2025-05-08', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 23:06:52', '2025-05-07 23:06:52', NULL, NULL, NULL, 16), -(1083, '2025-05-08', 7, 7, NULL, NULL, NULL, NULL, '근무', NULL, '작업장 구역 정리', '2025-05-07 23:06:52', '2025-05-07 23:06:52', NULL, NULL, NULL, 14), -(1084, '2025-05-08', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 23:06:52', '2025-05-07 23:06:52', NULL, NULL, NULL, 16), -(1085, '2025-05-08', 9, 7, NULL, NULL, NULL, NULL, '근무', NULL, '작업장 구역 정리', '2025-05-07 23:06:52', '2025-05-07 23:06:52', NULL, NULL, NULL, 14), -(1086, '2025-05-08', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 23:06:52', '2025-05-07 23:06:52', NULL, NULL, NULL, 16), -(1087, '2025-05-08', 1, 7, NULL, NULL, NULL, NULL, '반반차', NULL, '작업장 구역 설치', '2025-05-08 06:57:51', '2025-05-08 06:57:51', NULL, NULL, NULL, 14), -(1088, '2025-05-09', 1, 7, NULL, NULL, NULL, NULL, '근무', NULL, '작업장 구역 정리', '2025-05-09 06:12:16', '2025-05-09 06:12:16', NULL, NULL, NULL, 14), -(1089, '2025-05-09', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-09 06:12:16', '2025-05-09 06:12:16', NULL, NULL, NULL, 16), -(1090, '2025-05-09', 3, 4, NULL, NULL, NULL, NULL, '반반차', NULL, NULL, '2025-05-09 06:12:16', '2025-05-09 06:12:16', NULL, NULL, NULL, 16), -(1091, '2025-05-09', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-09 06:12:16', '2025-05-09 06:12:16', NULL, NULL, NULL, 16), -(1092, '2025-05-09', 5, 7, NULL, NULL, NULL, NULL, '근무', NULL, '작업장 구역 정리', '2025-05-09 06:12:16', '2025-05-09 06:12:16', NULL, NULL, NULL, 14), -(1093, '2025-05-09', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-09 06:12:16', '2025-05-09 06:12:16', NULL, NULL, NULL, 16), -(1094, '2025-05-09', 7, 7, NULL, NULL, NULL, NULL, '근무', NULL, '작업장 구역 정리', '2025-05-09 06:12:16', '2025-05-09 06:12:16', NULL, NULL, NULL, 14), -(1095, '2025-05-09', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-09 06:12:16', '2025-05-09 06:12:16', NULL, NULL, NULL, 16), -(1096, '2025-05-09', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-09 06:12:16', '2025-05-09 06:12:16', NULL, NULL, NULL, 16), -(1097, '2025-05-09', 10, 7, NULL, NULL, NULL, NULL, '근무', NULL, '작업장 구역 정리', '2025-05-09 06:12:16', '2025-05-09 06:12:16', NULL, NULL, NULL, 14), -(1100, '2025-05-12', 3, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-05-11 21:52:46', '2025-05-11 21:52:46', NULL, NULL, NULL, 15), -(1108, '2025-05-12', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, '포장', '2025-05-12 23:55:17', '2025-05-12 23:55:17', NULL, NULL, NULL, 13), -(1111, '2025-05-12', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, '포장', '2025-05-12 23:55:17', '2025-05-12 23:55:17', NULL, NULL, NULL, 13), -(1113, '2025-05-12', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, '포장', '2025-05-12 23:55:17', '2025-05-12 23:55:17', NULL, NULL, NULL, 13), -(1115, '2025-05-12', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, '포장', '2025-05-12 23:55:17', '2025-05-12 23:55:17', NULL, NULL, NULL, 13), -(1116, '2025-05-12', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, '포장', '2025-05-12 23:55:17', '2025-05-12 23:55:17', NULL, NULL, NULL, 13), -(1117, '2025-05-13', 1, 7, NULL, NULL, NULL, NULL, '근무', NULL, '제2공장 공사', '2025-05-13 00:00:41', '2025-05-13 00:00:41', NULL, NULL, NULL, 14), -(1118, '2025-05-13', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-13 00:00:41', '2025-05-13 00:00:41', NULL, NULL, NULL, 3), -(1119, '2025-05-13', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-13 00:00:41', '2025-05-13 00:00:41', NULL, NULL, NULL, 7), -(1120, '2025-05-13', 4, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-13 00:00:41', '2025-05-13 00:00:41', NULL, NULL, NULL, 3), -(1121, '2025-05-13', 5, 7, NULL, NULL, NULL, NULL, '근무', NULL, '제2공장 공사', '2025-05-13 00:00:41', '2025-05-13 00:00:41', NULL, NULL, NULL, 14), -(1122, '2025-05-13', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-13 00:00:41', '2025-05-13 00:00:41', NULL, NULL, NULL, 7), -(1123, '2025-05-13', 7, 7, NULL, NULL, NULL, NULL, '근무', NULL, '제2공장 공사', '2025-05-13 00:00:41', '2025-05-13 00:00:41', NULL, NULL, NULL, 14), -(1124, '2025-05-13', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-13 00:00:41', '2025-05-13 00:00:41', NULL, NULL, NULL, 7), -(1125, '2025-05-13', 9, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-13 00:00:41', '2025-05-13 00:00:41', NULL, NULL, NULL, 3), -(1126, '2025-05-13', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-13 00:00:41', '2025-05-13 00:00:41', NULL, NULL, NULL, 7), -(1127, '2025-05-12', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-13 00:01:44', '2025-05-13 00:01:44', NULL, NULL, NULL, 3), -(1128, '2025-05-12', 4, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-13 00:01:44', '2025-05-13 00:01:44', NULL, NULL, NULL, 3), -(1129, '2025-05-12', 6, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-13 00:01:44', '2025-05-13 00:01:44', NULL, NULL, NULL, 3), -(1130, '2025-05-12', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-13 00:01:44', '2025-05-13 00:01:44', NULL, NULL, NULL, 3), -(1131, '2025-05-14', 1, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-14 22:42:17', '2025-05-14 22:42:17', NULL, NULL, NULL, 3), -(1132, '2025-05-14', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-14 22:42:17', '2025-05-14 22:42:17', NULL, NULL, NULL, 3), -(1133, '2025-05-14', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-14 22:42:17', '2025-05-14 22:42:17', NULL, NULL, NULL, 7), -(1134, '2025-05-14', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-14 22:42:17', '2025-05-14 22:42:17', NULL, NULL, NULL, 7), -(1135, '2025-05-14', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-14 22:42:17', '2025-05-14 22:42:17', NULL, NULL, NULL, 7), -(1136, '2025-05-14', 6, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-14 22:42:17', '2025-05-14 22:42:17', NULL, NULL, NULL, 3), -(1137, '2025-05-14', 7, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-14 22:42:17', '2025-05-14 22:42:17', NULL, NULL, NULL, 3), -(1138, '2025-05-14', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-14 22:42:17', '2025-05-14 22:42:17', NULL, NULL, NULL, 7), -(1139, '2025-05-14', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-14 22:42:17', '2025-05-14 22:42:17', NULL, NULL, NULL, 7), -(1140, '2025-05-14', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-14 22:42:17', '2025-05-14 22:42:17', NULL, NULL, NULL, 7), -(1141, '2025-05-15', 1, 7, NULL, NULL, NULL, NULL, '근무', NULL, '제2공장 공사', '2025-05-16 02:53:53', '2025-05-16 02:53:53', NULL, NULL, NULL, 14), -(1142, '2025-05-15', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:53:53', '2025-05-16 02:53:53', NULL, NULL, NULL, 3), -(1143, '2025-05-15', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:53:53', '2025-05-16 02:53:53', NULL, NULL, NULL, 7), -(1144, '2025-05-15', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:53:53', '2025-05-16 02:53:53', NULL, NULL, NULL, 7), -(1145, '2025-05-15', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:53:53', '2025-05-16 02:53:53', NULL, NULL, NULL, 7), -(1146, '2025-05-15', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:53:53', '2025-05-16 02:53:53', NULL, NULL, NULL, 7), -(1147, '2025-05-15', 7, 7, NULL, NULL, NULL, NULL, '근무', NULL, '제2공장 공사', '2025-05-16 02:53:53', '2025-05-16 02:53:53', NULL, NULL, NULL, 14), -(1148, '2025-05-15', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:53:53', '2025-05-16 02:53:53', NULL, NULL, NULL, 3), -(1149, '2025-05-15', 9, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:53:53', '2025-05-16 02:53:53', NULL, NULL, NULL, 3), -(1150, '2025-05-15', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:53:53', '2025-05-16 02:53:53', NULL, NULL, NULL, 7), -(1151, '2025-05-16', 1, 4, NULL, NULL, NULL, NULL, '반반차', NULL, NULL, '2025-05-16 02:55:12', '2025-05-16 02:55:12', NULL, NULL, NULL, 7), -(1152, '2025-05-16', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:55:12', '2025-05-16 02:55:12', NULL, NULL, NULL, 3), -(1153, '2025-05-16', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:55:12', '2025-05-16 02:55:12', NULL, NULL, NULL, 7), -(1154, '2025-05-16', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:55:12', '2025-05-16 02:55:12', NULL, NULL, NULL, 7), -(1155, '2025-05-16', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:55:12', '2025-05-16 02:55:12', NULL, NULL, NULL, 7), -(1156, '2025-05-16', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:55:12', '2025-05-16 02:55:12', NULL, NULL, NULL, 7), -(1157, '2025-05-16', 7, 4, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-05-16 02:55:12', '2025-05-16 02:55:12', NULL, NULL, NULL, 7), -(1158, '2025-05-16', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:55:12', '2025-05-16 02:55:12', NULL, NULL, NULL, 3), -(1159, '2025-05-16', 9, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:55:12', '2025-05-16 02:55:12', NULL, NULL, NULL, 3), -(1160, '2025-05-16', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:55:12', '2025-05-16 02:55:12', NULL, NULL, NULL, 7), -(1171, '2025-05-19', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:47:56', '2025-05-22 04:47:56', NULL, NULL, NULL, 7), -(1172, '2025-05-19', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:47:56', '2025-05-22 04:47:56', NULL, NULL, NULL, 4), -(1173, '2025-05-19', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:47:56', '2025-05-22 04:47:56', NULL, NULL, NULL, 7), -(1174, '2025-05-19', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:47:56', '2025-05-22 04:47:56', NULL, NULL, NULL, 7), -(1175, '2025-05-19', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:47:56', '2025-05-22 04:47:56', NULL, NULL, NULL, 7), -(1176, '2025-05-19', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:47:56', '2025-05-22 04:47:56', NULL, NULL, NULL, 7), -(1177, '2025-05-19', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:47:56', '2025-05-22 04:47:56', NULL, NULL, NULL, 7), -(1179, '2025-05-19', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:47:56', '2025-05-22 04:47:56', NULL, NULL, NULL, 7), -(1180, '2025-05-19', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:47:56', '2025-05-22 04:47:56', NULL, NULL, NULL, 7), -(1181, '2025-05-21', 1, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:49:38', '2025-05-22 04:49:38', NULL, NULL, NULL, 7), -(1183, '2025-05-21', 3, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:49:38', '2025-05-22 04:49:38', NULL, NULL, NULL, 7), -(1184, '2025-05-21', 4, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:49:38', '2025-05-22 04:49:38', NULL, NULL, NULL, 7), -(1185, '2025-05-21', 5, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:49:38', '2025-05-22 04:49:38', NULL, NULL, NULL, 7), -(1186, '2025-05-21', 6, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:49:38', '2025-05-22 04:49:38', NULL, NULL, NULL, 7), -(1187, '2025-05-21', 7, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:49:38', '2025-05-22 04:49:38', NULL, NULL, NULL, 7), -(1188, '2025-05-21', 8, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:49:38', '2025-05-22 04:49:38', NULL, NULL, NULL, 7), -(1189, '2025-05-21', 9, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:49:38', '2025-05-22 04:49:38', NULL, NULL, NULL, 7), -(1190, '2025-05-21', 10, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:49:38', '2025-05-22 04:49:38', NULL, NULL, NULL, 7), -(1191, '2025-05-20', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:51:34', '2025-05-22 04:51:34', NULL, NULL, NULL, 7), -(1192, '2025-05-20', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:51:34', '2025-05-22 04:51:34', NULL, NULL, NULL, 3), -(1193, '2025-05-20', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:51:34', '2025-05-22 04:51:34', NULL, NULL, NULL, 7), -(1194, '2025-05-20', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:51:34', '2025-05-22 04:51:34', NULL, NULL, NULL, 7), -(1195, '2025-05-20', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:51:34', '2025-05-22 04:51:34', NULL, NULL, NULL, 7), -(1196, '2025-05-20', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:51:34', '2025-05-22 04:51:34', NULL, NULL, NULL, 7), -(1197, '2025-05-20', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:51:34', '2025-05-22 04:51:34', NULL, NULL, NULL, 7), -(1198, '2025-05-20', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:51:34', '2025-05-22 04:51:34', NULL, NULL, NULL, 7), -(1199, '2025-05-20', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:51:34', '2025-05-22 04:51:34', NULL, NULL, NULL, 7), -(1200, '2025-05-20', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:51:34', '2025-05-22 04:51:34', NULL, NULL, NULL, 7), -(1201, '2025-05-22', 1, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:53:17', '2025-05-22 04:53:17', NULL, NULL, NULL, 7), -(1202, '2025-05-22', 2, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:53:17', '2025-05-22 04:53:17', NULL, NULL, NULL, 3), -(1203, '2025-05-22', 3, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:53:17', '2025-05-22 04:53:17', NULL, NULL, NULL, 7), -(1204, '2025-05-22', 4, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:53:17', '2025-05-22 04:53:17', NULL, NULL, NULL, 7), -(1205, '2025-05-22', 5, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:53:17', '2025-05-22 04:53:17', NULL, NULL, NULL, 7), -(1206, '2025-05-22', 6, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:53:17', '2025-05-22 04:53:17', NULL, NULL, NULL, 7), -(1207, '2025-05-22', 7, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:53:17', '2025-05-22 04:53:17', NULL, NULL, NULL, 7), -(1208, '2025-05-22', 8, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:53:17', '2025-05-22 04:53:17', NULL, NULL, NULL, 7), -(1209, '2025-05-22', 9, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:53:17', '2025-05-22 04:53:17', NULL, NULL, NULL, 7), -(1210, '2025-05-22', 10, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:53:17', '2025-05-22 04:53:17', NULL, NULL, NULL, 7), -(1211, '2025-05-21', 2, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-05-22 04:54:12', '2025-05-22 04:54:12', NULL, NULL, NULL, 15), -(1215, '2025-05-26', 4, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-05-26 06:58:00', '2025-05-26 06:58:00', NULL, NULL, NULL, 15), -(1222, '2025-05-19', 8, 3, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-06-01 22:34:36', '2025-06-01 22:34:36', NULL, NULL, NULL, 3), -(1223, '2025-05-26', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:37:29', '2025-06-01 22:37:29', NULL, NULL, NULL, 8), -(1224, '2025-05-26', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:37:29', '2025-06-01 22:37:29', NULL, NULL, NULL, 5), -(1225, '2025-05-26', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:37:29', '2025-06-01 22:37:29', NULL, NULL, NULL, 8), -(1226, '2025-05-26', 5, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:37:29', '2025-06-01 22:37:29', NULL, NULL, NULL, 5), -(1227, '2025-05-26', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:37:29', '2025-06-01 22:37:29', NULL, NULL, NULL, 8), -(1228, '2025-05-26', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:37:29', '2025-06-01 22:37:29', NULL, NULL, NULL, 8), -(1229, '2025-05-26', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:37:29', '2025-06-01 22:37:29', NULL, NULL, NULL, 5), -(1230, '2025-05-26', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:37:29', '2025-06-01 22:37:29', NULL, NULL, NULL, 8), -(1231, '2025-05-26', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:37:29', '2025-06-01 22:37:29', NULL, NULL, NULL, 8), -(1232, '2025-05-23', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:41:30', '2025-06-01 22:41:30', NULL, NULL, NULL, 8), -(1233, '2025-05-23', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:41:30', '2025-06-01 22:41:30', NULL, NULL, NULL, 3), -(1234, '2025-05-23', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:41:30', '2025-06-01 22:41:30', NULL, NULL, NULL, 8), -(1235, '2025-05-23', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:41:30', '2025-06-01 22:41:30', NULL, NULL, NULL, 8), -(1236, '2025-05-23', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:41:30', '2025-06-01 22:41:30', NULL, NULL, NULL, 8), -(1237, '2025-05-23', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:41:30', '2025-06-01 22:41:30', NULL, NULL, NULL, 8), -(1238, '2025-05-23', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:41:30', '2025-06-01 22:41:30', NULL, NULL, NULL, 8), -(1239, '2025-05-23', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:41:30', '2025-06-01 22:41:30', NULL, NULL, NULL, 8), -(1240, '2025-05-23', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:41:30', '2025-06-01 22:41:30', NULL, NULL, NULL, 8), -(1241, '2025-05-23', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:41:30', '2025-06-01 22:41:30', NULL, NULL, NULL, 8), -(1242, '2025-05-27', 1, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:45:06', '2025-06-01 22:45:06', NULL, NULL, NULL, 8), -(1243, '2025-05-27', 2, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:45:06', '2025-06-01 22:45:06', NULL, NULL, NULL, 5), -(1244, '2025-05-27', 3, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:45:06', '2025-06-01 22:45:06', NULL, NULL, NULL, 8), -(1245, '2025-05-27', 4, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:45:06', '2025-06-01 22:45:06', NULL, NULL, NULL, 8), -(1246, '2025-05-27', 5, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:45:06', '2025-06-01 22:45:06', NULL, NULL, NULL, 5), -(1247, '2025-05-27', 6, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:45:06', '2025-06-01 22:45:06', NULL, NULL, NULL, 8), -(1248, '2025-05-27', 7, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:45:06', '2025-06-01 22:45:06', NULL, NULL, NULL, 8), -(1249, '2025-05-27', 8, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:45:06', '2025-06-01 22:45:06', NULL, NULL, NULL, 5), -(1250, '2025-05-27', 9, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:45:06', '2025-06-01 22:45:06', NULL, NULL, NULL, 8), -(1251, '2025-05-27', 10, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:45:06', '2025-06-01 22:45:06', NULL, NULL, NULL, 8), -(1252, '2025-05-28', 1, 4, NULL, NULL, NULL, NULL, '반반차', NULL, NULL, '2025-06-01 22:46:40', '2025-06-01 22:46:40', NULL, NULL, NULL, 8), -(1258, '2025-05-28', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:46:40', '2025-06-01 22:46:40', NULL, NULL, NULL, 8), -(1262, '2025-05-28', 2, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:48:21', '2025-06-01 22:48:21', NULL, NULL, NULL, 5), -(1263, '2025-05-28', 3, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:48:21', '2025-06-01 22:48:21', NULL, NULL, NULL, 8), -(1264, '2025-05-28', 4, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:48:21', '2025-06-01 22:48:21', NULL, NULL, NULL, 8), -(1265, '2025-05-28', 5, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:48:21', '2025-06-01 22:48:21', NULL, NULL, NULL, 5), -(1266, '2025-05-28', 6, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:48:21', '2025-06-01 22:48:21', NULL, NULL, NULL, 8), -(1267, '2025-05-28', 8, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:48:21', '2025-06-01 22:48:21', NULL, NULL, NULL, 5), -(1268, '2025-05-28', 9, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:48:21', '2025-06-01 22:48:21', NULL, NULL, NULL, 8), -(1269, '2025-05-28', 10, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:48:21', '2025-06-01 22:48:21', NULL, NULL, NULL, 8), -(1270, '2025-05-29', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:49:55', '2025-06-01 22:49:55', NULL, NULL, NULL, 8), -(1271, '2025-05-29', 2, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:49:55', '2025-06-01 22:49:55', NULL, NULL, NULL, 5), -(1272, '2025-05-29', 3, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:49:55', '2025-06-01 22:49:55', NULL, NULL, NULL, 8), -(1273, '2025-05-29', 4, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:49:55', '2025-06-01 22:49:55', NULL, NULL, NULL, 8), -(1274, '2025-05-29', 5, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:49:55', '2025-06-01 22:49:55', NULL, NULL, NULL, 5), -(1275, '2025-05-29', 6, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:49:55', '2025-06-01 22:49:55', NULL, NULL, NULL, 8), -(1276, '2025-05-29', 7, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:49:55', '2025-06-01 22:49:55', NULL, NULL, NULL, 8), -(1277, '2025-05-29', 8, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:49:55', '2025-06-01 22:49:55', NULL, NULL, NULL, 5), -(1278, '2025-05-29', 9, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:49:55', '2025-06-01 22:49:55', NULL, NULL, NULL, 8), -(1279, '2025-05-29', 10, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:49:55', '2025-06-01 22:49:55', NULL, NULL, NULL, 8), -(1281, '2025-05-30', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:50:53', '2025-06-01 22:50:53', NULL, NULL, NULL, 5), -(1282, '2025-05-30', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:50:53', '2025-06-01 22:50:53', NULL, NULL, NULL, 8), -(1283, '2025-05-30', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:50:53', '2025-06-01 22:50:53', NULL, NULL, NULL, 8), -(1284, '2025-05-30', 5, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:50:53', '2025-06-01 22:50:53', NULL, NULL, NULL, 5), -(1285, '2025-05-30', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:50:53', '2025-06-01 22:50:53', NULL, NULL, NULL, 8), -(1286, '2025-05-30', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:50:53', '2025-06-01 22:50:53', NULL, NULL, NULL, 8), -(1287, '2025-05-30', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:50:53', '2025-06-01 22:50:53', NULL, NULL, NULL, 5), -(1288, '2025-05-30', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:50:53', '2025-06-01 22:50:53', NULL, NULL, NULL, 8), -(1289, '2025-05-30', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:50:53', '2025-06-01 22:50:53', NULL, NULL, NULL, 8), -(1290, '2025-06-02', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:52:18', '2025-06-01 22:52:18', NULL, NULL, NULL, 8), -(1291, '2025-06-02', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:52:19', '2025-06-01 22:52:19', NULL, NULL, NULL, 5), -(1292, '2025-06-02', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:52:19', '2025-06-01 22:52:19', NULL, NULL, NULL, 8), -(1293, '2025-06-02', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:52:19', '2025-06-01 22:52:19', NULL, NULL, NULL, 8), -(1294, '2025-06-02', 5, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-06-01 22:52:19', '2025-06-01 22:52:19', NULL, NULL, NULL, 15), -(1295, '2025-06-02', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:52:19', '2025-06-01 22:52:19', NULL, NULL, NULL, 8), -(1296, '2025-06-02', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:52:19', '2025-06-01 22:52:19', NULL, NULL, NULL, 8), -(1297, '2025-06-02', 8, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-06-01 22:52:19', '2025-06-01 22:52:19', NULL, NULL, NULL, 15), -(1298, '2025-06-02', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:52:19', '2025-06-01 22:52:19', NULL, NULL, NULL, 8), -(1299, '2025-06-02', 10, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-06-01 22:52:19', '2025-06-01 22:52:19', NULL, NULL, NULL, 15), -(1300, '2025-05-30', 1, 4, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-06-01 23:17:51', '2025-06-01 23:17:51', NULL, NULL, NULL, 8), -(1301, '2025-01-02', 5, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-06-01 23:31:26', '2025-06-01 23:31:26', NULL, NULL, NULL, 15), -(1302, '2025-06-04', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-04 22:13:30', '2025-06-04 22:13:30', NULL, NULL, NULL, 8), -(1303, '2025-06-04', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-04 22:13:30', '2025-06-04 22:13:30', NULL, NULL, NULL, 5), -(1304, '2025-06-04', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-04 22:13:30', '2025-06-04 22:13:30', NULL, NULL, NULL, 8), -(1305, '2025-06-04', 4, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-06-04 22:13:30', '2025-06-04 22:13:30', NULL, NULL, NULL, 15), -(1306, '2025-06-04', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-04 22:13:30', '2025-06-04 22:13:30', NULL, NULL, NULL, 8), -(1307, '2025-06-04', 6, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-04 22:13:30', '2025-06-04 22:13:30', NULL, NULL, NULL, 5), -(1308, '2025-06-04', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-04 22:13:30', '2025-06-04 22:13:30', NULL, NULL, NULL, 8), -(1309, '2025-06-04', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-04 22:13:30', '2025-06-04 22:13:30', NULL, NULL, NULL, 5), -(1310, '2025-06-04', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-04 22:13:30', '2025-06-04 22:13:30', NULL, NULL, NULL, 8), -(1311, '2025-06-04', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-04 22:13:30', '2025-06-04 22:13:30', NULL, NULL, NULL, 8), -(1312, '2025-06-09', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-09 06:47:48', '2025-06-13 03:43:28', NULL, NULL, NULL, 8), -(1313, '2025-06-09', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-09 06:47:48', '2025-06-09 06:47:48', NULL, NULL, NULL, 5), -(1314, '2025-06-09', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-09 06:47:48', '2025-06-13 03:43:30', NULL, NULL, NULL, 8), -(1315, '2025-06-09', 4, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-09 06:47:48', '2025-06-09 06:47:48', NULL, NULL, NULL, 5), -(1316, '2025-06-09', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-09 06:47:48', '2025-06-13 03:43:31', NULL, NULL, NULL, 8), -(1317, '2025-06-09', 6, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-09 06:47:48', '2025-06-09 06:47:48', NULL, NULL, NULL, 5), -(1318, '2025-06-09', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-09 06:47:48', '2025-06-13 03:43:32', NULL, NULL, NULL, 8), -(1319, '2025-06-09', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-09 06:47:48', '2025-06-09 06:47:48', NULL, NULL, NULL, 5), -(1320, '2025-06-09', 9, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-06-09 06:47:48', '2025-06-09 06:47:48', NULL, NULL, NULL, 15), -(1321, '2025-06-09', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-09 06:47:48', '2025-06-13 03:43:34', NULL, NULL, NULL, 8), -(1322, '2025-06-10', 1, 4, NULL, NULL, 2.0, NULL, '근무', NULL, '라인수정', '2025-06-10 08:47:03', '2025-06-13 03:43:51', NULL, NULL, NULL, 8), -(1323, '2025-06-10', 2, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-10 08:47:03', '2025-06-10 08:47:03', NULL, NULL, NULL, 5), -(1324, '2025-06-10', 3, 4, NULL, NULL, 2.0, NULL, '근무', NULL, '라인수정', '2025-06-10 08:47:03', '2025-06-13 03:43:53', NULL, NULL, NULL, 8), -(1325, '2025-06-10', 4, 4, NULL, NULL, 2.0, NULL, '근무', NULL, '라인수정', '2025-06-10 08:47:04', '2025-06-13 03:43:54', NULL, NULL, NULL, 8), -(1326, '2025-06-10', 5, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-10 08:47:04', '2025-06-10 08:47:04', NULL, NULL, NULL, 5), -(1327, '2025-06-10', 6, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-10 08:47:04', '2025-06-10 08:47:04', NULL, NULL, NULL, 5), -(1328, '2025-06-10', 7, 4, NULL, NULL, 2.0, NULL, '근무', NULL, '라인수정', '2025-06-10 08:47:04', '2025-06-13 03:43:55', NULL, NULL, NULL, 8), -(1329, '2025-06-10', 8, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-10 08:47:04', '2025-06-10 08:47:04', NULL, NULL, NULL, 5), -(1330, '2025-06-10', 9, 4, NULL, NULL, 2.0, NULL, '근무', NULL, '라인수정', '2025-06-10 08:47:04', '2025-06-13 03:43:56', NULL, NULL, NULL, 8), -(1331, '2025-06-10', 10, 4, NULL, NULL, 2.0, NULL, '근무', NULL, '라인수정', '2025-06-10 08:47:04', '2025-06-13 03:43:56', NULL, NULL, NULL, 8), -(1332, '2025-06-11', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-11 07:59:16', '2025-06-13 03:44:18', NULL, NULL, NULL, 8), -(1333, '2025-06-11', 2, 3, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-06-11 07:59:16', '2025-06-11 07:59:16', NULL, NULL, NULL, 5), -(1334, '2025-06-11', 3, 4, NULL, NULL, 2.0, NULL, '근무', NULL, '라인수정', '2025-06-11 07:59:16', '2025-06-13 03:44:19', NULL, NULL, NULL, 8), -(1335, '2025-06-11', 4, 4, NULL, NULL, 2.0, NULL, '근무', NULL, '라인수정', '2025-06-11 07:59:16', '2025-06-13 03:44:20', NULL, NULL, NULL, 8), -(1336, '2025-06-11', 5, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-11 07:59:16', '2025-06-11 07:59:16', NULL, NULL, NULL, 5), -(1337, '2025-06-11', 6, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-11 07:59:16', '2025-06-11 07:59:16', NULL, NULL, NULL, 5), -(1338, '2025-06-11', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-11 07:59:16', '2025-06-13 03:44:22', NULL, NULL, NULL, 8), -(1339, '2025-06-11', 8, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-11 07:59:16', '2025-06-11 07:59:16', NULL, NULL, NULL, 5), -(1340, '2025-06-11', 9, 4, NULL, NULL, 2.0, NULL, '근무', NULL, '라인수정', '2025-06-11 07:59:16', '2025-06-13 03:44:23', NULL, NULL, NULL, 8), -(1341, '2025-06-11', 10, 4, NULL, NULL, 2.0, NULL, '근무', NULL, '라인수정', '2025-06-11 07:59:16', '2025-06-13 03:44:23', NULL, NULL, NULL, 8), -(1342, '2025-06-13', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-13 03:25:23', '2025-06-13 03:25:23', NULL, NULL, NULL, 8), -(1343, '2025-06-13', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-13 03:25:23', '2025-06-13 03:25:23', NULL, NULL, NULL, 5), -(1344, '2025-06-13', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-13 03:25:23', '2025-06-13 03:25:23', NULL, NULL, NULL, 8), -(1345, '2025-06-13', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-13 03:25:23', '2025-06-13 03:25:23', NULL, NULL, NULL, 8), -(1346, '2025-06-13', 5, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-13 03:25:23', '2025-06-13 03:25:23', NULL, NULL, NULL, 5), -(1347, '2025-06-13', 6, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-13 03:25:23', '2025-06-13 03:25:23', NULL, NULL, NULL, 5), -(1348, '2025-06-13', 7, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-06-13 03:25:23', '2025-06-13 03:25:23', NULL, NULL, NULL, 15), -(1349, '2025-06-13', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-13 03:25:23', '2025-06-13 03:25:23', NULL, NULL, NULL, 5), -(1350, '2025-06-13', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-13 03:25:23', '2025-06-13 03:25:23', NULL, NULL, NULL, 8), -(1351, '2025-06-13', 10, 4, NULL, NULL, NULL, NULL, '반차', NULL, '라인수정', '2025-06-13 03:25:23', '2025-06-13 03:25:23', NULL, NULL, NULL, 8), -(1352, '2025-06-05', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-13 03:34:20', '2025-06-13 03:34:20', NULL, NULL, NULL, 8), -(1353, '2025-06-05', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-13 03:34:20', '2025-06-13 03:34:20', NULL, NULL, NULL, 5), -(1354, '2025-06-05', 3, 4, NULL, NULL, NULL, NULL, '반차', NULL, '라인수정', '2025-06-13 03:34:20', '2025-06-13 03:34:20', NULL, NULL, NULL, 8), -(1355, '2025-06-05', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-13 03:34:20', '2025-06-13 03:34:20', NULL, NULL, NULL, 8), -(1356, '2025-06-05', 5, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-13 03:34:20', '2025-06-13 03:34:20', NULL, NULL, NULL, 5), -(1357, '2025-06-05', 6, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-13 03:34:20', '2025-06-13 03:34:20', NULL, NULL, NULL, 5), -(1358, '2025-06-05', 7, 4, NULL, NULL, NULL, NULL, '반반차', NULL, '라인수정', '2025-06-13 03:34:20', '2025-06-13 03:34:20', NULL, NULL, NULL, 8), -(1359, '2025-06-05', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-13 03:34:20', '2025-06-13 03:34:20', NULL, NULL, NULL, 5), -(1360, '2025-06-05', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-13 03:34:20', '2025-06-13 03:34:20', NULL, NULL, NULL, 8), -(1361, '2025-06-05', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-13 03:34:20', '2025-06-13 03:34:20', NULL, NULL, NULL, 8), -(1362, '2025-06-12', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-13 03:36:11', '2025-06-13 03:36:11', NULL, NULL, NULL, 8), -(1363, '2025-06-12', 2, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-13 03:36:11', '2025-06-13 03:36:11', NULL, NULL, NULL, 5), -(1364, '2025-06-12', 3, 4, NULL, NULL, 2.0, NULL, '근무', NULL, '라인수정', '2025-06-13 03:36:11', '2025-06-13 03:36:11', NULL, NULL, NULL, 8), -(1365, '2025-06-12', 4, 4, NULL, NULL, 2.0, NULL, '근무', NULL, '라인수정', '2025-06-13 03:36:11', '2025-06-13 03:36:11', NULL, NULL, NULL, 8), -(1366, '2025-06-12', 5, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-13 03:36:11', '2025-06-13 03:36:11', NULL, NULL, NULL, 5), -(1367, '2025-06-12', 6, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-13 03:36:11', '2025-06-13 03:36:11', NULL, NULL, NULL, 5), -(1368, '2025-06-12', 7, 4, NULL, NULL, 2.0, NULL, '근무', NULL, '라인수정', '2025-06-13 03:36:11', '2025-06-13 03:36:11', NULL, NULL, NULL, 8), -(1369, '2025-06-12', 8, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-13 03:36:11', '2025-06-13 03:36:11', NULL, NULL, NULL, 5), -(1370, '2025-06-12', 9, 4, NULL, NULL, NULL, NULL, '반차', NULL, '라인수정', '2025-06-13 03:36:11', '2025-06-13 03:36:11', NULL, NULL, NULL, 8), -(1371, '2025-06-12', 10, 4, NULL, NULL, 2.0, NULL, '근무', NULL, '라인수정', '2025-06-13 03:36:11', '2025-06-13 03:36:11', NULL, NULL, NULL, 8), -(1372, '2025-06-16', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-16 04:26:26', '2025-06-16 04:26:26', NULL, NULL, NULL, 8), -(1373, '2025-06-16', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-16 04:26:27', '2025-06-16 04:26:27', NULL, NULL, NULL, 5), -(1374, '2025-06-16', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-16 04:26:27', '2025-06-16 04:26:27', NULL, NULL, NULL, 8), -(1375, '2025-06-16', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-16 04:26:27', '2025-06-16 04:26:27', NULL, NULL, NULL, 8), -(1376, '2025-06-16', 5, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-16 04:26:27', '2025-06-16 04:26:27', NULL, NULL, NULL, 5), -(1377, '2025-06-16', 6, 3, NULL, NULL, NULL, NULL, '근무', NULL, 'Vessel NDE 불량 수리', '2025-06-16 04:26:27', '2025-06-16 04:26:27', NULL, NULL, NULL, 5), -(1378, '2025-06-16', 7, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-06-16 04:26:27', '2025-06-16 04:26:27', NULL, NULL, NULL, 15), -(1379, '2025-06-16', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, 'Vessel NDE 불량 수리', '2025-06-16 04:26:27', '2025-06-16 04:26:27', NULL, NULL, NULL, 5), -(1380, '2025-06-16', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-16 04:26:27', '2025-06-16 04:26:27', NULL, NULL, NULL, 8), -(1381, '2025-06-16', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-16 04:26:27', '2025-06-16 04:26:27', NULL, NULL, NULL, 8), -(1382, '2025-06-17', 1, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-17 08:17:30', '2025-06-17 08:17:30', NULL, NULL, NULL, 8), -(1383, '2025-06-17', 2, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-17 08:17:30', '2025-06-17 08:17:30', NULL, NULL, NULL, 5), -(1384, '2025-06-17', 3, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-17 08:17:30', '2025-06-17 08:17:30', NULL, NULL, NULL, 8), -(1385, '2025-06-17', 4, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-17 08:17:30', '2025-06-17 08:36:28', NULL, NULL, NULL, 5), -(1386, '2025-06-17', 5, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-17 08:17:30', '2025-06-17 08:17:30', NULL, NULL, NULL, 5), -(1387, '2025-06-17', 6, 3, NULL, NULL, 2.0, NULL, '근무', NULL, '용기 비파괴 불량', '2025-06-17 08:17:30', '2025-06-17 08:17:30', NULL, NULL, NULL, 5), -(1388, '2025-06-17', 7, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-17 08:17:30', '2025-06-17 08:17:30', NULL, NULL, NULL, 8), -(1389, '2025-06-17', 8, 3, NULL, NULL, 2.0, NULL, '근무', NULL, '용기 비파괴 불량', '2025-06-17 08:17:30', '2025-06-17 08:17:30', NULL, NULL, NULL, 5), -(1390, '2025-06-17', 9, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-17 08:17:30', '2025-06-17 08:17:30', NULL, NULL, NULL, 8), -(1391, '2025-06-17', 10, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-17 08:17:30', '2025-06-17 08:17:30', NULL, NULL, NULL, 8), -(1392, '2025-06-18', 1, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-18 08:16:50', '2025-06-18 08:16:50', NULL, NULL, NULL, 8), -(1393, '2025-06-18', 2, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-18 08:16:50', '2025-06-18 08:16:50', NULL, NULL, NULL, 5), -(1394, '2025-06-18', 3, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-18 08:16:50', '2025-06-18 08:16:50', NULL, NULL, NULL, 8), -(1395, '2025-06-18', 4, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-18 08:16:50', '2025-06-18 08:16:50', NULL, NULL, NULL, 8), -(1396, '2025-06-18', 5, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-18 08:16:50', '2025-06-18 08:16:50', NULL, NULL, NULL, 5), -(1397, '2025-06-18', 6, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-18 08:16:50', '2025-06-18 08:16:50', NULL, NULL, NULL, 5), -(1398, '2025-06-18', 7, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-18 08:16:50', '2025-06-18 08:16:50', NULL, NULL, NULL, 8), -(1399, '2025-06-18', 8, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-18 08:16:50', '2025-06-18 08:16:50', NULL, NULL, NULL, 5), -(1400, '2025-06-18', 9, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-18 08:16:50', '2025-06-18 08:16:50', NULL, NULL, NULL, 8), -(1401, '2025-06-18', 10, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-18 08:16:50', '2025-06-18 08:16:50', NULL, NULL, NULL, 8), -(1402, '2025-06-24', 1, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-24 09:25:01', '2025-06-24 09:25:01', NULL, NULL, NULL, 8), -(1403, '2025-06-24', 2, 3, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-24 09:25:01', '2025-06-24 09:25:01', NULL, NULL, NULL, 5), -(1404, '2025-06-24', 3, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-24 09:25:01', '2025-06-24 09:25:01', NULL, NULL, NULL, 8), -(1405, '2025-06-24', 4, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-24 09:25:01', '2025-06-24 09:25:01', NULL, NULL, NULL, 8), -(1406, '2025-06-24', 5, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-24 09:25:01', '2025-06-24 09:25:01', NULL, NULL, NULL, 8), -(1407, '2025-06-24', 6, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-24 09:25:01', '2025-06-24 09:25:01', NULL, NULL, NULL, 8), -(1408, '2025-06-24', 7, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-24 09:25:01', '2025-06-24 09:25:01', NULL, NULL, NULL, 8), -(1409, '2025-06-24', 8, 3, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-24 09:25:01', '2025-06-24 09:25:01', NULL, NULL, NULL, 5), -(1410, '2025-06-24', 9, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-24 09:25:01', '2025-06-24 09:25:01', NULL, NULL, NULL, 8), -(1411, '2025-06-24', 10, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-24 09:25:01', '2025-06-24 09:25:01', NULL, NULL, NULL, 8), -(1412, '2025-06-25', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-25 07:08:25', '2025-06-25 07:08:25', NULL, NULL, NULL, 18), -(1413, '2025-06-25', 2, 3, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-25 07:08:25', '2025-06-25 07:08:25', NULL, NULL, NULL, 5), -(1414, '2025-06-25', 3, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-25 07:08:25', '2025-06-25 07:08:25', NULL, NULL, NULL, 18), -(1415, '2025-06-25', 4, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-25 07:08:25', '2025-06-25 07:08:25', NULL, NULL, NULL, 18), -(1416, '2025-06-25', 5, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-25 07:08:25', '2025-06-25 07:08:25', NULL, NULL, NULL, 18), -(1417, '2025-06-25', 6, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-25 07:08:25', '2025-06-25 07:08:25', NULL, NULL, NULL, 18), -(1418, '2025-06-25', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-25 07:08:25', '2025-06-25 07:08:25', NULL, NULL, NULL, 18), -(1419, '2025-06-25', 8, 3, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-25 07:08:25', '2025-06-25 07:08:25', NULL, NULL, NULL, 5), -(1420, '2025-06-25', 9, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-25 07:08:25', '2025-06-25 07:08:25', NULL, NULL, NULL, 18), -(1421, '2025-06-25', 10, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-25 07:08:25', '2025-06-25 07:08:25', NULL, NULL, NULL, 18), -(1422, '2025-06-26', 1, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-26 22:45:15', '2025-06-26 22:45:15', NULL, NULL, NULL, 18), -(1423, '2025-06-26', 2, 3, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-26 22:45:15', '2025-06-26 22:45:15', NULL, NULL, NULL, 5), -(1424, '2025-06-26', 3, 3, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-26 22:45:15', '2025-06-26 22:45:15', NULL, NULL, NULL, 5), -(1425, '2025-06-26', 4, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-26 22:45:15', '2025-06-26 22:45:15', NULL, NULL, NULL, 18), -(1426, '2025-06-26', 5, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-26 22:45:15', '2025-06-26 22:45:15', NULL, NULL, NULL, 18), -(1427, '2025-06-26', 6, 3, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-26 22:45:15', '2025-06-26 22:45:15', NULL, NULL, NULL, 5), -(1428, '2025-06-26', 7, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-26 22:45:15', '2025-06-26 22:45:15', NULL, NULL, NULL, 18), -(1429, '2025-06-26', 8, 3, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-26 22:45:15', '2025-06-26 22:45:15', NULL, NULL, NULL, 5), -(1430, '2025-06-26', 9, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-26 22:45:15', '2025-06-26 22:45:15', NULL, NULL, NULL, 18), -(1431, '2025-06-26', 10, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-26 22:45:15', '2025-06-26 22:45:15', NULL, NULL, NULL, 18), -(1432, '2025-06-27', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-26 22:48:37', '2025-06-26 22:48:37', NULL, NULL, NULL, 18), -(1433, '2025-06-27', 2, 3, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-06-26 22:48:37', '2025-06-26 22:48:37', NULL, NULL, NULL, 5), -(1434, '2025-06-27', 3, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-26 22:48:37', '2025-06-26 22:48:37', NULL, NULL, NULL, 5), -(1435, '2025-06-27', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-26 22:48:37', '2025-06-26 22:48:37', NULL, NULL, NULL, 18), -(1436, '2025-06-27', 5, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-26 22:48:37', '2025-06-26 22:48:37', NULL, NULL, NULL, 5), -(1437, '2025-06-27', 6, 3, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-06-26 22:48:37', '2025-06-26 22:48:37', NULL, NULL, NULL, 5), -(1438, '2025-06-27', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-26 22:48:37', '2025-06-26 22:48:37', NULL, NULL, NULL, 18), -(1439, '2025-06-27', 8, 3, NULL, NULL, NULL, NULL, '반반차', NULL, NULL, '2025-06-26 22:48:37', '2025-06-26 22:48:37', NULL, NULL, NULL, 5), -(1440, '2025-06-27', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-26 22:48:37', '2025-06-26 22:48:37', NULL, NULL, NULL, 18), -(1441, '2025-06-27', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-26 22:48:37', '2025-06-26 22:48:37', NULL, NULL, NULL, 18), -(1442, '2025-06-19', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 03:53:46', '2025-07-07 03:53:46', NULL, NULL, NULL, 8), -(1443, '2025-06-19', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 03:53:46', '2025-07-07 03:53:46', NULL, NULL, NULL, 5), -(1444, '2025-06-19', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 03:53:46', '2025-07-07 03:53:46', NULL, NULL, NULL, 8), -(1445, '2025-06-19', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 03:53:46', '2025-07-07 03:53:46', NULL, NULL, NULL, 8); -INSERT INTO `WorkReports` (`id`, `date`, `worker_id`, `project_id`, `morning_task_id`, `afternoon_task_id`, `overtime_hours`, `overtime_task_id`, `work_details`, `note`, `memo`, `created_at`, `updated_at`, `morning_project_id`, `afternoon_project_id`, `overtime_project_id`, `task_id`) VALUES -(1446, '2025-06-19', 5, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 03:53:46', '2025-07-07 03:53:46', NULL, NULL, NULL, 5), -(1447, '2025-06-19', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 03:53:46', '2025-07-07 03:53:46', NULL, NULL, NULL, 8), -(1448, '2025-06-19', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 03:53:46', '2025-07-07 03:53:46', NULL, NULL, NULL, 8), -(1449, '2025-06-19', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 03:53:46', '2025-07-07 03:53:46', NULL, NULL, NULL, 5), -(1450, '2025-06-19', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 03:53:46', '2025-07-07 03:53:46', NULL, NULL, NULL, 8), -(1451, '2025-06-19', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 03:53:46', '2025-07-07 03:53:46', NULL, NULL, NULL, 8), -(1452, '2025-06-20', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 03:54:44', '2025-07-07 03:54:44', NULL, NULL, NULL, 8), -(1453, '2025-06-20', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 03:54:44', '2025-07-07 03:54:44', NULL, NULL, NULL, 5), -(1454, '2025-06-20', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 03:54:44', '2025-07-07 03:54:44', NULL, NULL, NULL, 8), -(1455, '2025-06-20', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 03:54:44', '2025-07-07 03:54:44', NULL, NULL, NULL, 8), -(1456, '2025-06-20', 5, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 03:54:44', '2025-07-07 03:54:44', NULL, NULL, NULL, 5), -(1457, '2025-06-20', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 03:54:44', '2025-07-07 03:54:44', NULL, NULL, NULL, 8), -(1458, '2025-06-20', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 03:54:44', '2025-07-07 03:54:44', NULL, NULL, NULL, 8), -(1459, '2025-06-20', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 03:54:44', '2025-07-07 03:54:44', NULL, NULL, NULL, 5), -(1460, '2025-06-20', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 03:54:44', '2025-07-07 03:54:44', NULL, NULL, NULL, 8), -(1461, '2025-06-20', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 03:54:44', '2025-07-07 03:54:44', NULL, NULL, NULL, 8), -(1462, '2025-06-23', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 03:55:50', '2025-07-07 03:55:50', NULL, NULL, NULL, 8), -(1463, '2025-06-23', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 03:55:50', '2025-07-07 03:55:50', NULL, NULL, NULL, 5), -(1464, '2025-06-23', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 03:55:50', '2025-07-07 03:55:50', NULL, NULL, NULL, 8), -(1465, '2025-06-23', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 03:55:50', '2025-07-07 03:55:50', NULL, NULL, NULL, 8), -(1466, '2025-06-23', 5, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 03:55:50', '2025-07-07 03:55:50', NULL, NULL, NULL, 5), -(1467, '2025-06-23', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 03:55:50', '2025-07-07 03:55:50', NULL, NULL, NULL, 8), -(1468, '2025-06-23', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 03:55:50', '2025-07-07 03:55:50', NULL, NULL, NULL, 8), -(1469, '2025-06-23', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 03:55:50', '2025-07-07 03:55:50', NULL, NULL, NULL, 5), -(1470, '2025-06-23', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 03:55:50', '2025-07-07 03:55:50', NULL, NULL, NULL, 8), -(1471, '2025-06-23', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 03:55:50', '2025-07-07 03:55:50', NULL, NULL, NULL, 8), -(1472, '2025-06-30', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:24:36', '2025-07-07 04:24:36', NULL, NULL, NULL, 8), -(1473, '2025-06-30', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:24:36', '2025-07-07 04:24:36', NULL, NULL, NULL, 5), -(1474, '2025-06-30', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:24:36', '2025-07-07 04:24:36', NULL, NULL, NULL, 8), -(1475, '2025-06-30', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:24:36', '2025-07-07 04:24:36', NULL, NULL, NULL, 8), -(1476, '2025-06-30', 5, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:24:36', '2025-07-07 04:24:36', NULL, NULL, NULL, 5), -(1477, '2025-06-30', 6, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:24:36', '2025-07-07 04:24:36', NULL, NULL, NULL, 5), -(1478, '2025-06-30', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:24:36', '2025-07-07 04:24:36', NULL, NULL, NULL, 8), -(1479, '2025-06-30', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:24:36', '2025-07-07 04:24:36', NULL, NULL, NULL, 5), -(1480, '2025-06-30', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:24:36', '2025-07-07 04:24:36', NULL, NULL, NULL, 8), -(1481, '2025-06-30', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:24:36', '2025-07-07 04:24:36', NULL, NULL, NULL, 8), -(1482, '2025-07-01', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:26:44', '2025-07-07 04:26:44', NULL, NULL, NULL, 8), -(1483, '2025-07-01', 2, 3, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-07-07 04:26:44', '2025-07-07 04:26:44', NULL, NULL, NULL, 5), -(1484, '2025-07-01', 3, 3, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-07-07 04:26:44', '2025-07-07 04:26:44', NULL, NULL, NULL, 5), -(1485, '2025-07-01', 4, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-07-07 04:26:44', '2025-07-07 04:26:44', NULL, NULL, NULL, 8), -(1486, '2025-07-01', 5, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-07-07 04:26:44', '2025-07-07 04:26:44', NULL, NULL, NULL, 8), -(1487, '2025-07-01', 6, 3, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-07-07 04:26:44', '2025-07-07 04:26:44', NULL, NULL, NULL, 5), -(1488, '2025-07-01', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:26:44', '2025-07-07 04:26:44', NULL, NULL, NULL, 8), -(1489, '2025-07-01', 8, 3, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-07-07 04:26:44', '2025-07-07 04:26:44', NULL, NULL, NULL, 5), -(1490, '2025-07-01', 9, 3, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-07-07 04:26:44', '2025-07-07 04:26:44', NULL, NULL, NULL, 5), -(1491, '2025-07-01', 10, 3, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-07-07 04:26:44', '2025-07-07 04:26:44', NULL, NULL, NULL, 5), -(1492, '2025-07-02', 1, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-07-07 04:28:16', '2025-07-07 04:28:16', NULL, NULL, NULL, 9), -(1493, '2025-07-02', 2, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-07-07 04:28:16', '2025-07-07 04:28:16', NULL, NULL, NULL, 5), -(1494, '2025-07-02', 3, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-07-07 04:28:16', '2025-07-07 04:28:16', NULL, NULL, NULL, 5), -(1495, '2025-07-02', 4, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-07-07 04:28:16', '2025-07-07 04:28:16', NULL, NULL, NULL, 9), -(1496, '2025-07-02', 5, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-07-07 04:28:16', '2025-07-07 04:28:16', NULL, NULL, NULL, 9), -(1497, '2025-07-02', 6, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-07-07 04:28:16', '2025-07-07 04:28:16', NULL, NULL, NULL, 5), -(1498, '2025-07-02', 7, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-07-07 04:28:16', '2025-07-07 04:28:16', NULL, NULL, NULL, 5), -(1499, '2025-07-02', 8, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-07-07 04:28:16', '2025-07-07 04:28:16', NULL, NULL, NULL, 5), -(1500, '2025-07-02', 9, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-07-07 04:28:16', '2025-07-07 04:28:16', NULL, NULL, NULL, 5), -(1501, '2025-07-02', 10, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-07-07 04:28:16', '2025-07-07 04:28:16', NULL, NULL, NULL, 5), -(1502, '2025-07-03', 1, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-07-07 04:30:04', '2025-07-07 04:30:04', NULL, NULL, NULL, 9), -(1503, '2025-07-03', 2, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-07-07 04:30:04', '2025-07-07 04:30:04', NULL, NULL, NULL, 5), -(1504, '2025-07-03', 3, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-07-07 04:30:04', '2025-07-07 04:30:04', NULL, NULL, NULL, 9), -(1505, '2025-07-03', 4, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-07-07 04:30:04', '2025-07-07 04:30:04', NULL, NULL, NULL, 9), -(1506, '2025-07-03', 5, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-07-07 04:30:04', '2025-07-07 04:30:04', NULL, NULL, NULL, 9), -(1507, '2025-07-03', 6, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-07-07 04:30:04', '2025-07-07 04:30:04', NULL, NULL, NULL, 5), -(1508, '2025-07-03', 7, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-07-07 04:30:04', '2025-07-07 04:30:04', NULL, NULL, NULL, 9), -(1509, '2025-07-03', 8, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-07-07 04:30:04', '2025-07-07 04:30:04', NULL, NULL, NULL, 5), -(1510, '2025-07-03', 9, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-07-07 04:30:04', '2025-07-07 04:30:04', NULL, NULL, NULL, 5), -(1511, '2025-07-03', 10, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-07-07 04:30:04', '2025-07-07 04:30:04', NULL, NULL, NULL, 9), -(1512, '2025-07-04', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:31:09', '2025-07-07 04:31:09', NULL, NULL, NULL, 9), -(1513, '2025-07-04', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:31:09', '2025-07-07 04:31:09', NULL, NULL, NULL, 9), -(1514, '2025-07-04', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:31:09', '2025-07-07 04:31:09', NULL, NULL, NULL, 9), -(1515, '2025-07-04', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:31:09', '2025-07-07 04:31:09', NULL, NULL, NULL, 9), -(1516, '2025-07-04', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:31:09', '2025-07-07 04:31:09', NULL, NULL, NULL, 9), -(1517, '2025-07-04', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:31:09', '2025-07-07 04:31:09', NULL, NULL, NULL, 9), -(1518, '2025-07-04', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:31:09', '2025-07-07 04:31:09', NULL, NULL, NULL, 9), -(1519, '2025-07-04', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:31:09', '2025-07-07 04:31:09', NULL, NULL, NULL, 9), -(1520, '2025-07-04', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:31:09', '2025-07-07 04:31:09', NULL, NULL, NULL, 9), -(1521, '2025-07-04', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:31:09', '2025-07-07 04:31:09', NULL, NULL, NULL, 9), -(1522, '2025-07-05', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:31:53', '2025-07-07 04:31:53', NULL, NULL, NULL, 9), -(1523, '2025-07-05', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:31:53', '2025-07-07 04:31:53', NULL, NULL, NULL, 9), -(1524, '2025-07-05', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:31:53', '2025-07-07 04:31:53', NULL, NULL, NULL, 9), -(1525, '2025-07-05', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:31:53', '2025-07-07 04:31:53', NULL, NULL, NULL, 9), -(1526, '2025-07-05', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:31:53', '2025-07-07 04:31:53', NULL, NULL, NULL, 9), -(1527, '2025-07-05', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:31:53', '2025-07-07 04:31:53', NULL, NULL, NULL, 9), -(1528, '2025-07-06', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:32:52', '2025-07-07 04:32:52', NULL, NULL, NULL, 9), -(1529, '2025-07-06', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:32:52', '2025-07-07 04:32:52', NULL, NULL, NULL, 9), -(1530, '2025-07-06', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:32:52', '2025-07-07 04:32:52', NULL, NULL, NULL, 9), -(1531, '2025-07-06', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:32:52', '2025-07-07 04:32:52', NULL, NULL, NULL, 9), -(1532, '2025-07-06', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:32:52', '2025-07-07 04:32:52', NULL, NULL, NULL, 9), -(1533, '2025-07-06', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:32:52', '2025-07-07 04:32:52', NULL, NULL, NULL, 9), -(1534, '2025-07-06', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:32:52', '2025-07-07 04:32:52', NULL, NULL, NULL, 9), -(1535, '2025-07-06', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 04:32:52', '2025-07-07 04:32:52', NULL, NULL, NULL, 9), -(1536, '2025-07-07', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 23:35:13', '2025-07-07 23:35:13', NULL, NULL, NULL, 9), -(1537, '2025-07-07', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, 'tubing', '2025-07-07 23:35:13', '2025-07-07 23:35:13', NULL, NULL, NULL, 9), -(1538, '2025-07-07', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 23:35:13', '2025-07-07 23:35:13', NULL, NULL, NULL, 9), -(1539, '2025-07-07', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, 'tubing', '2025-07-07 23:35:13', '2025-07-07 23:35:13', NULL, NULL, NULL, 9), -(1540, '2025-07-07', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 23:35:13', '2025-07-07 23:35:13', NULL, NULL, NULL, 9), -(1541, '2025-07-07', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 23:35:14', '2025-07-07 23:35:14', NULL, NULL, NULL, 9), -(1542, '2025-07-07', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 23:35:14', '2025-07-07 23:35:14', NULL, NULL, NULL, 9), -(1543, '2025-07-07', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 23:35:14', '2025-07-07 23:35:14', NULL, NULL, NULL, 9), -(1544, '2025-07-07', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 23:35:14', '2025-07-07 23:35:14', NULL, NULL, NULL, 9), -(1545, '2025-07-07', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-07 23:35:14', '2025-07-07 23:35:14', NULL, NULL, NULL, 9), -(1546, '2025-07-08', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-10 02:12:44', '2025-07-10 02:12:44', NULL, NULL, NULL, 9), -(1547, '2025-07-08', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, 'tubing', '2025-07-10 02:12:44', '2025-07-10 02:12:44', NULL, NULL, NULL, 9), -(1548, '2025-07-08', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-10 02:12:44', '2025-07-10 02:12:44', NULL, NULL, NULL, 9), -(1549, '2025-07-08', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, 'tubing', '2025-07-10 02:12:44', '2025-07-10 02:12:44', NULL, NULL, NULL, 9), -(1550, '2025-07-08', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-10 02:12:44', '2025-07-10 02:12:44', NULL, NULL, NULL, 9), -(1551, '2025-07-08', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-10 02:12:44', '2025-07-10 02:12:44', NULL, NULL, NULL, 9), -(1552, '2025-07-08', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-10 02:12:44', '2025-07-10 02:12:44', NULL, NULL, NULL, 9), -(1553, '2025-07-08', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-10 02:12:44', '2025-07-10 02:12:44', NULL, NULL, NULL, 9), -(1554, '2025-07-08', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-10 02:12:44', '2025-07-10 02:12:44', NULL, NULL, NULL, 9), -(1555, '2025-07-08', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-10 02:12:44', '2025-07-10 02:12:44', NULL, NULL, NULL, 9), -(1556, '2025-07-09', 1, 4, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-07-10 02:13:45', '2025-07-10 02:13:45', NULL, NULL, NULL, 9), -(1557, '2025-07-09', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, 'tubing', '2025-07-10 02:13:45', '2025-07-10 02:13:45', NULL, NULL, NULL, 9), -(1558, '2025-07-09', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-10 02:13:45', '2025-07-10 02:13:45', NULL, NULL, NULL, 9), -(1559, '2025-07-09', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, 'tubing', '2025-07-10 02:13:45', '2025-07-10 02:13:45', NULL, NULL, NULL, 9), -(1560, '2025-07-09', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-10 02:13:45', '2025-07-10 02:13:45', NULL, NULL, NULL, 9), -(1561, '2025-07-09', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-10 02:13:45', '2025-07-10 02:13:45', NULL, NULL, NULL, 9), -(1562, '2025-07-09', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-10 02:13:45', '2025-07-10 02:13:45', NULL, NULL, NULL, 9), -(1563, '2025-07-09', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-10 02:13:45', '2025-07-10 02:13:45', NULL, NULL, NULL, 9), -(1564, '2025-07-09', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-10 02:13:45', '2025-07-10 02:13:45', NULL, NULL, NULL, 9), -(1565, '2025-07-09', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-10 02:13:45', '2025-07-10 02:13:45', NULL, NULL, NULL, 9), -(1566, '2025-07-10', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:06:02', '2025-07-30 02:06:02', NULL, NULL, NULL, 8), -(1567, '2025-07-10', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:06:02', '2025-07-30 02:06:02', NULL, NULL, NULL, 8), -(1568, '2025-07-10', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:06:02', '2025-07-30 02:06:02', NULL, NULL, NULL, 8), -(1569, '2025-07-10', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:06:02', '2025-07-30 02:06:02', NULL, NULL, NULL, 8), -(1570, '2025-07-10', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:06:02', '2025-07-30 02:06:02', NULL, NULL, NULL, 8), -(1571, '2025-07-10', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:06:02', '2025-07-30 02:06:02', NULL, NULL, NULL, 8), -(1572, '2025-07-10', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:06:02', '2025-07-30 02:06:02', NULL, NULL, NULL, 8), -(1573, '2025-07-10', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:06:02', '2025-07-30 02:06:02', NULL, NULL, NULL, 8), -(1574, '2025-07-10', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:06:02', '2025-07-30 02:06:02', NULL, NULL, NULL, 8), -(1575, '2025-07-10', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:06:02', '2025-07-30 02:06:02', NULL, NULL, NULL, 8), -(1576, '2025-07-14', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:07:29', '2025-07-30 02:07:29', NULL, NULL, NULL, 8), -(1577, '2025-07-14', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:07:29', '2025-07-30 02:07:29', NULL, NULL, NULL, 8), -(1578, '2025-07-14', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:07:29', '2025-07-30 02:07:29', NULL, NULL, NULL, 8), -(1579, '2025-07-14', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:07:29', '2025-07-30 02:07:29', NULL, NULL, NULL, 8), -(1580, '2025-07-14', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:07:29', '2025-07-30 02:07:29', NULL, NULL, NULL, 8), -(1581, '2025-07-14', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:07:29', '2025-07-30 02:07:29', NULL, NULL, NULL, 8), -(1582, '2025-07-14', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:07:29', '2025-07-30 02:07:29', NULL, NULL, NULL, 8), -(1583, '2025-07-14', 8, 4, NULL, NULL, NULL, NULL, '반반차', NULL, NULL, '2025-07-30 02:07:29', '2025-07-30 02:07:29', NULL, NULL, NULL, 8), -(1584, '2025-07-14', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:07:29', '2025-07-30 02:07:29', NULL, NULL, NULL, 8), -(1585, '2025-07-14', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:07:29', '2025-07-30 02:07:29', NULL, NULL, NULL, 8), -(1586, '2025-07-15', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:08:41', '2025-07-30 02:23:58', NULL, NULL, NULL, 8), -(1587, '2025-07-15', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:08:41', '2025-07-30 02:23:58', NULL, NULL, NULL, 8), -(1588, '2025-07-15', 3, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:08:41', '2025-07-30 02:24:00', NULL, NULL, NULL, 8), -(1589, '2025-07-15', 4, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-07-30 02:08:41', '2025-07-30 02:24:00', NULL, NULL, NULL, 15), -(1590, '2025-07-15', 5, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:08:42', '2025-07-30 02:24:01', NULL, NULL, NULL, 5), -(1591, '2025-07-15', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:08:42', '2025-07-30 02:24:02', NULL, NULL, NULL, 8), -(1592, '2025-07-15', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:08:42', '2025-07-30 02:24:02', NULL, NULL, NULL, 8), -(1593, '2025-07-15', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:08:42', '2025-07-30 02:24:03', NULL, NULL, NULL, 8), -(1594, '2025-07-15', 9, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:08:42', '2025-07-30 02:24:03', NULL, NULL, NULL, 5), -(1595, '2025-07-15', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:08:42', '2025-07-30 02:24:04', NULL, NULL, NULL, 8), -(1596, '2025-07-16', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:10:17', '2025-07-30 02:10:17', NULL, NULL, NULL, 8), -(1597, '2025-07-16', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:10:18', '2025-07-30 02:10:18', NULL, NULL, NULL, 5), -(1598, '2025-07-16', 3, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:10:18', '2025-07-30 02:10:18', NULL, NULL, NULL, 5), -(1599, '2025-07-16', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:10:18', '2025-07-30 02:10:18', NULL, NULL, NULL, 8), -(1600, '2025-07-16', 5, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:10:18', '2025-07-30 02:10:18', NULL, NULL, NULL, 5), -(1601, '2025-07-16', 6, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:10:18', '2025-07-30 02:10:18', NULL, NULL, NULL, 5), -(1602, '2025-07-16', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:10:18', '2025-07-30 02:10:18', NULL, NULL, NULL, 8), -(1603, '2025-07-16', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:10:18', '2025-07-30 02:10:18', NULL, NULL, NULL, 5), -(1604, '2025-07-16', 9, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:10:18', '2025-07-30 02:10:18', NULL, NULL, NULL, 5), -(1605, '2025-07-16', 10, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:10:18', '2025-07-30 02:10:18', NULL, NULL, NULL, 5), -(1606, '2025-07-17', 1, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:11:12', '2025-07-30 02:24:31', NULL, NULL, NULL, 7), -(1607, '2025-07-17', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:11:12', '2025-07-30 02:11:12', NULL, NULL, NULL, 18), -(1608, '2025-07-17', 3, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:11:12', '2025-07-30 02:11:12', NULL, NULL, NULL, 18), -(1609, '2025-07-17', 4, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:11:12', '2025-07-30 02:11:12', NULL, NULL, NULL, 18), -(1610, '2025-07-17', 5, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:11:12', '2025-07-30 02:11:12', NULL, NULL, NULL, 18), -(1611, '2025-07-17', 6, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:11:12', '2025-07-30 02:11:12', NULL, NULL, NULL, 18), -(1612, '2025-07-17', 7, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:11:12', '2025-07-30 02:11:12', NULL, NULL, NULL, 18), -(1613, '2025-07-17', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:11:12', '2025-07-30 02:11:12', NULL, NULL, NULL, 18), -(1614, '2025-07-17', 9, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:11:12', '2025-07-30 02:11:12', NULL, NULL, NULL, 18), -(1615, '2025-07-17', 10, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:11:12', '2025-07-30 02:11:12', NULL, NULL, NULL, 18), -(1616, '2025-07-18', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:13:22', '2025-07-30 02:13:22', NULL, NULL, NULL, 9), -(1617, '2025-07-18', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:13:22', '2025-07-30 02:13:22', NULL, NULL, NULL, 5), -(1618, '2025-07-18', 3, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:13:22', '2025-07-30 02:13:22', NULL, NULL, NULL, 5), -(1619, '2025-07-18', 4, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:13:22', '2025-07-30 02:13:22', NULL, NULL, NULL, 5), -(1620, '2025-07-18', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:13:22', '2025-07-30 02:13:22', NULL, NULL, NULL, 9), -(1621, '2025-07-18', 6, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:13:22', '2025-07-30 02:13:22', NULL, NULL, NULL, 5), -(1622, '2025-07-18', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:13:22', '2025-07-30 02:13:22', NULL, NULL, NULL, 9), -(1623, '2025-07-18', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:13:22', '2025-07-30 02:13:22', NULL, NULL, NULL, 5), -(1624, '2025-07-18', 9, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:13:22', '2025-07-30 02:13:22', NULL, NULL, NULL, 5), -(1625, '2025-07-18', 10, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:13:22', '2025-07-30 02:13:22', NULL, NULL, NULL, 5), -(1626, '2025-07-21', 1, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:14:45', '2025-07-30 02:14:45', NULL, NULL, NULL, 7), -(1627, '2025-07-21', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:14:45', '2025-07-30 02:14:45', NULL, NULL, NULL, 5), -(1628, '2025-07-21', 3, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:14:45', '2025-07-30 02:14:45', NULL, NULL, NULL, 5), -(1629, '2025-07-21', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:14:45', '2025-07-30 02:14:45', NULL, NULL, NULL, 9), -(1630, '2025-07-21', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:14:45', '2025-07-30 02:14:45', NULL, NULL, NULL, 9), -(1631, '2025-07-21', 6, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:14:45', '2025-07-30 02:14:45', NULL, NULL, NULL, 5), -(1632, '2025-07-21', 7, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:14:45', '2025-07-30 02:14:45', NULL, NULL, NULL, 5), -(1633, '2025-07-21', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:14:45', '2025-07-30 02:14:45', NULL, NULL, NULL, 5), -(1634, '2025-07-21', 9, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:14:45', '2025-07-30 02:14:45', NULL, NULL, NULL, 5), -(1635, '2025-07-21', 10, 3, NULL, NULL, NULL, NULL, '반반차', NULL, NULL, '2025-07-30 02:14:45', '2025-07-30 02:14:45', NULL, NULL, NULL, 5), -(1636, '2025-07-22', 1, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:16:04', '2025-07-30 02:16:04', NULL, NULL, NULL, 5), -(1637, '2025-07-22', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:16:04', '2025-07-30 02:16:04', NULL, NULL, NULL, 9), -(1638, '2025-07-22', 3, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:16:04', '2025-07-30 02:16:04', NULL, NULL, NULL, 9), -(1639, '2025-07-22', 4, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:16:04', '2025-07-30 02:16:04', NULL, NULL, NULL, 7), -(1640, '2025-07-22', 5, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:16:04', '2025-07-30 02:16:04', NULL, NULL, NULL, 7), -(1641, '2025-07-22', 6, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:16:04', '2025-07-30 02:16:04', NULL, NULL, NULL, 9), -(1642, '2025-07-22', 7, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:16:04', '2025-07-30 02:16:04', NULL, NULL, NULL, 9), -(1643, '2025-07-22', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:16:04', '2025-07-30 02:16:04', NULL, NULL, NULL, 9), -(1644, '2025-07-22', 9, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:16:04', '2025-07-30 02:16:04', NULL, NULL, NULL, 9), -(1645, '2025-07-22', 10, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:16:04', '2025-07-30 02:16:04', NULL, NULL, NULL, 9), -(1646, '2025-07-23', 1, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:17:15', '2025-07-30 02:17:15', NULL, NULL, NULL, 7), -(1647, '2025-07-23', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:17:15', '2025-07-30 02:17:15', NULL, NULL, NULL, 5), -(1648, '2025-07-23', 3, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:17:15', '2025-07-30 02:17:15', NULL, NULL, NULL, 5), -(1649, '2025-07-23', 4, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:17:15', '2025-07-30 02:17:15', NULL, NULL, NULL, 7), -(1650, '2025-07-23', 5, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:17:15', '2025-07-30 02:17:15', NULL, NULL, NULL, 7), -(1651, '2025-07-23', 6, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:17:15', '2025-07-30 02:17:15', NULL, NULL, NULL, 5), -(1652, '2025-07-23', 7, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:17:15', '2025-07-30 02:17:15', NULL, NULL, NULL, 5), -(1653, '2025-07-23', 8, 13, NULL, NULL, NULL, NULL, '유급', NULL, NULL, '2025-07-30 02:17:15', '2025-07-30 22:39:10', NULL, NULL, NULL, 15), -(1654, '2025-07-23', 9, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:17:15', '2025-07-30 02:17:15', NULL, NULL, NULL, 5), -(1655, '2025-07-23', 10, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:17:15', '2025-07-30 02:17:15', NULL, NULL, NULL, 5), -(1656, '2025-07-24', 1, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:18:29', '2025-07-30 02:18:29', NULL, NULL, NULL, 7), -(1657, '2025-07-24', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:18:29', '2025-07-30 02:18:29', NULL, NULL, NULL, 5), -(1658, '2025-07-24', 3, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:18:29', '2025-07-30 02:18:29', NULL, NULL, NULL, 5), -(1659, '2025-07-24', 4, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:18:29', '2025-07-30 02:18:29', NULL, NULL, NULL, 7), -(1660, '2025-07-24', 5, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:18:29', '2025-07-30 02:18:29', NULL, NULL, NULL, 7), -(1661, '2025-07-24', 6, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:18:29', '2025-07-30 02:18:29', NULL, NULL, NULL, 5), -(1662, '2025-07-24', 7, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:18:29', '2025-07-30 02:18:29', NULL, NULL, NULL, 5), -(1663, '2025-07-24', 8, 13, NULL, NULL, NULL, NULL, '유급', NULL, NULL, '2025-07-30 02:18:29', '2025-07-30 02:18:29', NULL, NULL, NULL, 15), -(1664, '2025-07-24', 9, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:18:29', '2025-07-30 02:18:29', NULL, NULL, NULL, 5), -(1665, '2025-07-24', 10, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:18:29', '2025-07-30 02:18:29', NULL, NULL, NULL, 5), -(1666, '2025-07-25', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:21:24', '2025-07-30 02:21:24', NULL, NULL, NULL, 13), -(1667, '2025-07-25', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:21:24', '2025-07-30 02:21:24', NULL, NULL, NULL, 5), -(1668, '2025-07-25', 3, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:21:24', '2025-07-30 02:21:24', NULL, NULL, NULL, 5), -(1669, '2025-07-25', 4, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:21:24', '2025-07-30 02:21:24', NULL, NULL, NULL, 5), -(1670, '2025-07-25', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:21:24', '2025-07-30 02:21:24', NULL, NULL, NULL, 13), -(1671, '2025-07-25', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:21:24', '2025-07-30 02:21:24', NULL, NULL, NULL, 13), -(1672, '2025-07-25', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:21:24', '2025-07-30 02:21:24', NULL, NULL, NULL, 18), -(1673, '2025-07-25', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:21:24', '2025-07-30 02:21:24', NULL, NULL, NULL, 5), -(1674, '2025-07-25', 9, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:21:24', '2025-07-30 02:21:24', NULL, NULL, NULL, 5), -(1675, '2025-07-25', 10, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:21:24', '2025-07-30 02:21:24', NULL, NULL, NULL, 5), -(1676, '2025-07-28', 1, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:22:32', '2025-07-30 02:22:32', NULL, NULL, NULL, 7), -(1677, '2025-07-28', 2, 5, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:22:32', '2025-07-30 02:22:32', NULL, NULL, NULL, 13), -(1678, '2025-07-28', 3, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:22:32', '2025-07-30 02:22:32', NULL, NULL, NULL, 5), -(1679, '2025-07-28', 4, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:22:32', '2025-07-30 02:22:32', NULL, NULL, NULL, 7), -(1680, '2025-07-28', 5, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:22:32', '2025-07-30 02:22:32', NULL, NULL, NULL, 7), -(1681, '2025-07-28', 6, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:22:32', '2025-07-30 02:22:32', NULL, NULL, NULL, 5), -(1682, '2025-07-28', 7, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:22:32', '2025-07-30 02:22:32', NULL, NULL, NULL, 5), -(1683, '2025-07-28', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:22:32', '2025-07-30 02:22:32', NULL, NULL, NULL, 5), -(1684, '2025-07-28', 9, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:22:32', '2025-07-30 02:22:32', NULL, NULL, NULL, 5), -(1685, '2025-07-28', 10, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 02:22:32', '2025-07-30 02:22:32', NULL, NULL, NULL, 5), -(1686, '2025-07-11', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:48:30', '2025-07-30 22:48:30', NULL, NULL, NULL, 9), -(1687, '2025-07-11', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:48:30', '2025-07-30 22:48:30', NULL, NULL, NULL, 9), -(1688, '2025-07-11', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:48:30', '2025-07-30 22:48:30', NULL, NULL, NULL, 9), -(1689, '2025-07-11', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:48:30', '2025-07-30 22:48:30', NULL, NULL, NULL, 9), -(1690, '2025-07-11', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:48:30', '2025-07-30 22:48:30', NULL, NULL, NULL, 9), -(1691, '2025-07-11', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:48:30', '2025-07-30 22:48:30', NULL, NULL, NULL, 9), -(1692, '2025-07-11', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:48:30', '2025-07-30 22:48:30', NULL, NULL, NULL, 9), -(1693, '2025-07-11', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:48:30', '2025-07-30 22:48:30', NULL, NULL, NULL, 9), -(1694, '2025-07-11', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:48:30', '2025-07-30 22:48:30', NULL, NULL, NULL, 9), -(1695, '2025-07-11', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:48:31', '2025-07-30 22:48:31', NULL, NULL, NULL, 9), -(1696, '2025-07-12', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:49:19', '2025-07-30 22:49:19', NULL, NULL, NULL, 9), -(1697, '2025-07-12', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:49:19', '2025-07-30 22:49:19', NULL, NULL, NULL, 9), -(1698, '2025-07-12', 3, 13, NULL, NULL, NULL, NULL, '휴무', NULL, NULL, '2025-07-30 22:49:19', '2025-07-30 22:49:19', NULL, NULL, NULL, 15), -(1699, '2025-07-12', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:49:19', '2025-07-30 22:49:19', NULL, NULL, NULL, 9), -(1700, '2025-07-12', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:49:19', '2025-07-30 22:49:19', NULL, NULL, NULL, 9), -(1701, '2025-07-12', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:49:19', '2025-07-30 22:49:19', NULL, NULL, NULL, 9), -(1702, '2025-07-12', 7, 13, NULL, NULL, NULL, NULL, '휴무', NULL, NULL, '2025-07-30 22:49:19', '2025-07-30 22:49:19', NULL, NULL, NULL, 15), -(1703, '2025-07-12', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:49:19', '2025-07-30 22:49:19', NULL, NULL, NULL, 9), -(1704, '2025-07-12', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:49:19', '2025-07-30 22:49:19', NULL, NULL, NULL, 9), -(1705, '2025-07-12', 10, 13, NULL, NULL, NULL, NULL, '휴무', NULL, NULL, '2025-07-30 22:49:19', '2025-07-30 22:49:19', NULL, NULL, NULL, 15), -(1706, '2025-07-29', 1, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:50:13', '2025-07-30 22:50:13', NULL, NULL, NULL, 7), -(1707, '2025-07-29', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:50:13', '2025-07-30 22:50:13', NULL, NULL, NULL, 5), -(1708, '2025-07-29', 3, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:50:13', '2025-07-30 22:50:13', NULL, NULL, NULL, 5), -(1709, '2025-07-29', 4, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:50:13', '2025-07-30 22:50:13', NULL, NULL, NULL, 7), -(1710, '2025-07-29', 5, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:50:13', '2025-07-30 22:50:13', NULL, NULL, NULL, 7), -(1711, '2025-07-29', 6, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:50:13', '2025-07-30 22:50:13', NULL, NULL, NULL, 5), -(1712, '2025-07-29', 7, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:50:13', '2025-07-30 22:50:13', NULL, NULL, NULL, 5), -(1713, '2025-07-29', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:50:13', '2025-07-30 22:50:13', NULL, NULL, NULL, 5), -(1714, '2025-07-29', 9, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:50:13', '2025-07-30 22:50:13', NULL, NULL, NULL, 5), -(1715, '2025-07-29', 10, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:50:13', '2025-07-30 22:50:13', NULL, NULL, NULL, 5), -(1716, '2025-07-30', 1, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:51:05', '2025-07-30 22:51:05', NULL, NULL, NULL, 7), -(1717, '2025-07-30', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:51:05', '2025-07-30 22:51:05', NULL, NULL, NULL, 5), -(1718, '2025-07-30', 3, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:51:05', '2025-07-30 22:51:05', NULL, NULL, NULL, 5), -(1719, '2025-07-30', 4, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:51:05', '2025-07-30 22:51:05', NULL, NULL, NULL, 7), -(1720, '2025-07-30', 5, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:51:05', '2025-07-30 22:51:05', NULL, NULL, NULL, 7), -(1721, '2025-07-30', 6, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:51:05', '2025-07-30 22:51:05', NULL, NULL, NULL, 5), -(1722, '2025-07-30', 7, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:51:05', '2025-07-30 22:51:05', NULL, NULL, NULL, 5), -(1723, '2025-07-30', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:51:05', '2025-07-30 22:51:05', NULL, NULL, NULL, 5), -(1724, '2025-07-30', 9, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:51:05', '2025-07-30 22:51:05', NULL, NULL, NULL, 5), -(1725, '2025-07-30', 10, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:51:05', '2025-07-30 22:51:05', NULL, NULL, NULL, 5), -(1726, '2025-07-31', 1, 3, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-07-30 22:51:54', '2025-07-30 22:51:54', NULL, NULL, NULL, 7), -(1727, '2025-07-31', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:51:54', '2025-07-30 22:51:54', NULL, NULL, NULL, 5), -(1728, '2025-07-31', 3, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:51:54', '2025-07-30 22:51:54', NULL, NULL, NULL, 5), -(1729, '2025-07-31', 4, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:51:54', '2025-07-30 22:51:54', NULL, NULL, NULL, 7), -(1730, '2025-07-31', 5, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:51:54', '2025-07-30 22:51:54', NULL, NULL, NULL, 7), -(1731, '2025-07-31', 6, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:51:54', '2025-07-30 22:51:54', NULL, NULL, NULL, 5), -(1732, '2025-07-31', 7, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:51:54', '2025-07-30 22:51:54', NULL, NULL, NULL, 5), -(1733, '2025-07-31', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:51:54', '2025-07-30 22:51:54', NULL, NULL, NULL, 5), -(1734, '2025-07-31', 9, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:51:54', '2025-07-30 22:51:54', NULL, NULL, NULL, 5), -(1735, '2025-07-31', 10, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-07-30 22:51:54', '2025-07-30 22:51:54', NULL, NULL, NULL, 5), -(1736, '2025-09-18', 1, 3, NULL, NULL, NULL, NULL, '근무', NULL, '냉동기', '2025-09-17 23:53:35', '2025-09-17 23:53:35', NULL, NULL, NULL, 18), -(1737, '2025-09-18', 2, 8, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-09-17 23:53:35', '2025-09-17 23:53:35', NULL, NULL, NULL, 8), -(1738, '2025-09-18', 3, 3, NULL, NULL, NULL, NULL, '근무', NULL, 'BOG', '2025-09-17 23:53:35', '2025-09-17 23:53:35', NULL, NULL, NULL, 5), -(1739, '2025-09-18', 4, 8, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-09-17 23:53:35', '2025-09-17 23:53:35', NULL, NULL, NULL, 8), -(1740, '2025-09-18', 5, 3, NULL, NULL, NULL, NULL, '근무', NULL, '냉동기', '2025-09-17 23:53:35', '2025-09-17 23:53:35', NULL, NULL, NULL, 9), -(1741, '2025-09-18', 6, 3, NULL, NULL, NULL, NULL, '근무', NULL, 'BOG', '2025-09-17 23:53:35', '2025-09-17 23:53:35', NULL, NULL, NULL, 5), -(1742, '2025-09-18', 7, 3, NULL, NULL, NULL, NULL, '근무', NULL, '냉동기', '2025-09-17 23:53:35', '2025-09-17 23:53:35', NULL, NULL, NULL, 18), -(1743, '2025-09-18', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, 'BOG', '2025-09-17 23:53:35', '2025-09-17 23:53:35', NULL, NULL, NULL, 5), -(1744, '2025-09-18', 9, 3, NULL, NULL, NULL, NULL, '근무', NULL, 'BOG', '2025-09-17 23:53:35', '2025-09-17 23:53:35', NULL, NULL, NULL, 5), -(1745, '2025-09-18', 10, 3, NULL, NULL, NULL, NULL, '근무', NULL, 'BOG', '2025-09-17 23:53:35', '2025-09-17 23:53:35', NULL, NULL, NULL, 5), -(1746, '2025-10-01', 1, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-10-01 23:49:56', '2025-10-01 23:49:56', NULL, NULL, NULL, 16), -(1747, '2025-10-01', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-10-01 23:49:56', '2025-10-01 23:49:56', NULL, NULL, NULL, 16), -(1748, '2025-10-01', 3, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-10-01 23:49:56', '2025-10-01 23:49:56', NULL, NULL, NULL, 7), -(1749, '2025-10-01', 4, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-10-01 23:49:56', '2025-10-01 23:49:56', NULL, NULL, NULL, 5), -(1750, '2025-10-01', 5, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-10-01 23:49:56', '2025-10-01 23:49:56', NULL, NULL, NULL, 16), -(1751, '2025-10-01', 6, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-10-01 23:49:56', '2025-10-01 23:49:56', NULL, NULL, NULL, 7), -(1752, '2025-10-01', 7, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-10-01 23:49:56', '2025-10-01 23:49:56', NULL, NULL, NULL, 7), -(1753, '2025-10-01', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-10-01 23:49:56', '2025-10-01 23:49:56', NULL, NULL, NULL, 7), -(1754, '2025-10-01', 9, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-10-01 23:49:56', '2025-10-01 23:49:56', NULL, NULL, NULL, 7), -(1755, '2025-10-01', 10, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-10-01 23:49:56', '2025-10-01 23:49:56', NULL, NULL, NULL, 7), -(1756, '2025-10-02', 1, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-10-01 23:50:57', '2025-10-01 23:50:57', NULL, NULL, NULL, 7), -(1757, '2025-10-02', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-10-01 23:50:57', '2025-10-01 23:50:57', NULL, NULL, NULL, 7), -(1758, '2025-10-02', 3, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-10-01 23:50:57', '2025-10-01 23:50:57', NULL, NULL, NULL, 15), -(1759, '2025-10-02', 4, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-10-01 23:50:57', '2025-10-01 23:50:57', NULL, NULL, NULL, 7), -(1760, '2025-10-02', 5, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-10-01 23:50:57', '2025-10-01 23:50:57', NULL, NULL, NULL, 7), -(1761, '2025-10-02', 6, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-10-01 23:50:57', '2025-10-01 23:50:57', NULL, NULL, NULL, 7), -(1762, '2025-10-02', 7, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-10-01 23:50:57', '2025-10-01 23:50:57', NULL, NULL, NULL, 7), -(1763, '2025-10-02', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-10-01 23:50:57', '2025-10-01 23:50:57', NULL, NULL, NULL, 7), -(1764, '2025-10-02', 9, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-10-01 23:50:57', '2025-10-01 23:50:57', NULL, NULL, NULL, 7), -(1765, '2025-10-02', 10, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-10-01 23:50:57', '2025-10-01 23:50:57', NULL, NULL, NULL, 7); - --- -------------------------------------------------------- - --- --- 테이블 구조 `work_report_audit_log` --- - -CREATE TABLE `work_report_audit_log` ( - `log_id` int(11) NOT NULL, - `action` enum('ADD_ACCUMULATE','DELETE_SINGLE','UPDATE','DELETE','CREATE','DELETE_BATCH') NOT NULL COMMENT '작업 유형', - `report_id` int(11) DEFAULT NULL COMMENT '관련 보고서 ID', - `old_values` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '변경 전 값' CHECK (json_valid(`old_values`)), - `new_values` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '변경 후 값' CHECK (json_valid(`new_values`)), - `changed_by` int(11) NOT NULL COMMENT '변경자 ID', - `change_reason` varchar(500) DEFAULT NULL COMMENT '변경 사유', - `ip_address` varchar(45) DEFAULT NULL COMMENT 'IP 주소', - `user_agent` text DEFAULT NULL COMMENT '사용자 에이전트', - `created_at` timestamp NOT NULL DEFAULT current_timestamp() COMMENT '변경 시간' -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - --- --- 테이블의 덤프 데이터 `work_report_audit_log` --- - -INSERT INTO `work_report_audit_log` (`log_id`, `action`, `report_id`, `old_values`, `new_values`, `changed_by`, `change_reason`, `ip_address`, `user_agent`, `created_at`) VALUES -(1, 'ADD_ACCUMULATE', 12, NULL, '{\"report_date\":\"2025-06-16\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-16 02:56:12'), -(2, 'DELETE_SINGLE', 12, '{\"worker_name\":\"김두수\",\"project_name\":\"MP7 Project\",\"work_hours\":\"4.00\",\"report_date\":\"2025-06-16T00:00:00.000Z\"}', NULL, 3, '개별 항목 삭제', NULL, NULL, '2025-06-16 03:17:36'), -(3, 'DELETE_SINGLE', 11, '{\"worker_name\":\"김두수\",\"project_name\":\"연차/휴무\",\"work_hours\":\"4.00\",\"report_date\":\"2025-06-16T00:00:00.000Z\"}', NULL, 3, '개별 항목 삭제', NULL, NULL, '2025-06-16 03:17:39'), -(4, 'DELETE_SINGLE', 7, '{\"worker_name\":\"임영규\",\"project_name\":\"연차/휴무\",\"work_hours\":\"4.00\",\"report_date\":\"2025-06-16T00:00:00.000Z\"}', NULL, 3, '개별 항목 삭제', NULL, NULL, '2025-06-16 03:17:41'), -(5, 'ADD_ACCUMULATE', 13, NULL, '{\"report_date\":\"2025-06-16\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":1,\"my_total\":\"1.00\",\"grand_total\":1,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"1.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-16 03:18:37'), -(6, 'DELETE_SINGLE', 13, '{\"worker_name\":\"임영규\",\"project_name\":\"연차/휴무\",\"work_hours\":\"1.00\",\"report_date\":\"2025-06-16T00:00:00.000Z\"}', NULL, 5, '개별 항목 삭제', NULL, NULL, '2025-06-16 03:19:23'), -(7, 'ADD_ACCUMULATE', 14, NULL, '{\"report_date\":\"2025-06-02\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:10:23'), -(8, 'ADD_ACCUMULATE', 15, NULL, '{\"report_date\":\"2025-06-02\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:10:23'), -(9, 'ADD_ACCUMULATE', 16, NULL, '{\"report_date\":\"2025-06-02\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:10:23'), -(10, 'ADD_ACCUMULATE', 17, NULL, '{\"report_date\":\"2025-06-02\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:10:23'), -(11, 'ADD_ACCUMULATE', 18, NULL, '{\"report_date\":\"2025-06-02\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:10:23'), -(12, 'ADD_ACCUMULATE', 19, NULL, '{\"report_date\":\"2025-06-02\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:10:23'), -(13, 'ADD_ACCUMULATE', 20, NULL, '{\"report_date\":\"2025-06-02\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:10:47'), -(14, 'ADD_ACCUMULATE', 21, NULL, '{\"report_date\":\"2025-06-04\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:11:37'), -(15, 'ADD_ACCUMULATE', 22, NULL, '{\"report_date\":\"2025-06-04\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:11:37'), -(16, 'ADD_ACCUMULATE', 23, NULL, '{\"report_date\":\"2025-06-04\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:11:37'), -(17, 'ADD_ACCUMULATE', 24, NULL, '{\"report_date\":\"2025-06-04\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:11:37'), -(18, 'ADD_ACCUMULATE', 25, NULL, '{\"report_date\":\"2025-06-04\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:11:37'), -(19, 'ADD_ACCUMULATE', 26, NULL, '{\"report_date\":\"2025-06-04\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:11:37'), -(20, 'ADD_ACCUMULATE', 27, NULL, '{\"report_date\":\"2025-06-04\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:12:07'), -(21, 'ADD_ACCUMULATE', 28, NULL, '{\"report_date\":\"2025-06-04\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:12:07'), -(22, 'ADD_ACCUMULATE', 29, NULL, '{\"report_date\":\"2025-06-04\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:12:07'), -(23, 'ADD_ACCUMULATE', 30, NULL, '{\"report_date\":\"2025-06-05\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:12:57'), -(24, 'ADD_ACCUMULATE', 31, NULL, '{\"report_date\":\"2025-06-05\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:12:57'), -(25, 'ADD_ACCUMULATE', 32, NULL, '{\"report_date\":\"2025-06-05\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:12:57'), -(26, 'ADD_ACCUMULATE', 33, NULL, '{\"report_date\":\"2025-06-05\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:12:57'), -(27, 'ADD_ACCUMULATE', 34, NULL, '{\"report_date\":\"2025-06-05\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:12:57'), -(28, 'ADD_ACCUMULATE', 35, NULL, '{\"report_date\":\"2025-06-05\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:12:57'), -(29, 'ADD_ACCUMULATE', 36, NULL, '{\"report_date\":\"2025-06-05\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:13:56'), -(30, 'ADD_ACCUMULATE', 37, NULL, '{\"report_date\":\"2025-06-05\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:13:56'), -(31, 'ADD_ACCUMULATE', 38, NULL, '{\"report_date\":\"2025-06-05\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:13:56'), -(32, 'ADD_ACCUMULATE', 39, NULL, '{\"report_date\":\"2025-06-05\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:13:56'), -(33, 'ADD_ACCUMULATE', 40, NULL, '{\"report_date\":\"2025-06-16\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-16 06:12:01'), -(34, 'ADD_ACCUMULATE', 41, NULL, '{\"report_date\":\"2025-06-16\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-16 06:12:01'), -(35, 'ADD_ACCUMULATE', 42, NULL, '{\"report_date\":\"2025-06-16\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-16 06:12:01'), -(36, 'ADD_ACCUMULATE', 43, NULL, '{\"report_date\":\"2025-06-16\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-16 06:12:01'), -(37, 'DELETE_SINGLE', 42, '{\"worker_name\":\"김윤섭\",\"project_name\":\"효성화학 에틸렌 탱크 건설공사\",\"work_hours\":\"8.00\",\"report_date\":\"2025-06-16T00:00:00.000Z\"}', NULL, 5, '개별 항목 삭제', NULL, NULL, '2025-06-16 06:12:33'), -(38, 'ADD_ACCUMULATE', 44, NULL, '{\"report_date\":\"2025-06-16\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"4.00\",\"grand_total\":4,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"4.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-16 06:13:02'), -(39, 'ADD_ACCUMULATE', 45, NULL, '{\"report_date\":\"2025-06-16\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-16 06:13:50'), -(40, 'DELETE_SINGLE', 41, '{\"worker_name\":\"최광욱\",\"project_name\":\"효성화학 에틸렌 탱크 건설공사\",\"work_hours\":\"8.00\",\"report_date\":\"2025-06-16T00:00:00.000Z\"}', NULL, 5, '개별 항목 삭제', NULL, NULL, '2025-06-16 06:14:48'), -(41, 'ADD_ACCUMULATE', 46, NULL, '{\"report_date\":\"2025-06-16\",\"worker_id\":8,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-16 06:15:22'), -(42, 'DELETE_SINGLE', 1, '{\"worker_name\":\"김두수\",\"project_name\":\"25년 안전보건시설설비\",\"work_hours\":\"1.00\",\"report_date\":\"2025-06-01T00:00:00.000Z\"}', NULL, 1, '개별 항목 삭제', NULL, NULL, '2025-06-16 06:20:38'), -(43, 'ADD_ACCUMULATE', 48, NULL, '{\"report_date\":\"2025-06-16\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-16 06:46:44'), -(44, 'ADD_ACCUMULATE', 49, NULL, '{\"report_date\":\"2025-06-16\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-16 06:46:44'), -(45, 'ADD_ACCUMULATE', 50, NULL, '{\"report_date\":\"2025-06-16\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-16 06:46:44'), -(46, 'DELETE_SINGLE', 49, '{\"worker_name\":\"박현수\",\"project_name\":\"김천 솔라 파워 그린 수소 Project\",\"work_hours\":\"8.00\",\"report_date\":\"2025-06-16T00:00:00.000Z\"}', NULL, 3, '개별 항목 삭제', NULL, NULL, '2025-06-16 06:47:54'), -(47, 'ADD_ACCUMULATE', 51, NULL, '{\"report_date\":\"2025-06-16\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-16 06:48:29'), -(48, 'ADD_ACCUMULATE', 52, NULL, '{\"report_date\":\"2025-06-16\",\"worker_id\":10,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-16 06:50:09'), -(49, 'ADD_ACCUMULATE', 54, NULL, '{\"report_date\":\"2025-06-16\",\"worker_id\":3,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-16 06:50:09'), -(50, 'ADD_ACCUMULATE', 56, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":2,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-17 08:23:41'), -(51, 'ADD_ACCUMULATE', 58, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":5,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-17 08:23:41'), -(52, 'ADD_ACCUMULATE', 60, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":6,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-17 08:24:33'), -(53, 'ADD_ACCUMULATE', 62, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":8,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-17 08:24:33'), -(54, 'ADD_ACCUMULATE', 64, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"4.00\",\"grand_total\":4,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"4.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-17 08:24:44'), -(55, 'ADD_ACCUMULATE', 65, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"4.00\",\"grand_total\":4,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"4.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-17 08:25:24'), -(56, 'DELETE_SINGLE', 64, '{\"worker_name\":\"황인용\",\"project_name\":\"김천 솔라 파워 그린 수소 Project\",\"work_hours\":\"4.00\",\"report_date\":\"2025-06-17T00:00:00.000Z\"}', NULL, 3, '개별 항목 삭제', NULL, NULL, '2025-06-17 08:26:17'), -(57, 'ADD_ACCUMULATE', 66, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"4.00\",\"grand_total\":4,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"4.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-17 08:27:06'), -(58, 'ADD_ACCUMULATE', 67, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"4.00\",\"grand_total\":4,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"4.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-17 08:27:06'), -(59, 'ADD_ACCUMULATE', 68, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-17 08:31:06'), -(60, 'ADD_ACCUMULATE', 69, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-17 08:31:06'), -(61, 'ADD_ACCUMULATE', 70, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-17 08:31:06'), -(62, 'ADD_ACCUMULATE', 71, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":2,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-17 08:33:06'), -(63, 'ADD_ACCUMULATE', 72, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":2,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-17 08:33:06'), -(64, 'ADD_ACCUMULATE', 73, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":2,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-17 08:33:06'), -(65, 'ADD_ACCUMULATE', 74, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":10,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"10.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-17 08:34:11'), -(66, 'ADD_ACCUMULATE', 76, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":3,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"10.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-17 08:34:11'), -(67, 'ADD_ACCUMULATE', 78, NULL, '{\"report_date\":\"2025-06-18\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-18 08:40:27'), -(68, 'ADD_ACCUMULATE', 79, NULL, '{\"report_date\":\"2025-06-18\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-18 08:40:27'), -(69, 'ADD_ACCUMULATE', 80, NULL, '{\"report_date\":\"2025-06-18\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-18 08:40:27'), -(70, 'ADD_ACCUMULATE', 81, NULL, '{\"report_date\":\"2025-06-18\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":2,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-18 08:41:02'), -(71, 'ADD_ACCUMULATE', 82, NULL, '{\"report_date\":\"2025-06-18\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":2,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-18 08:41:03'), -(72, 'ADD_ACCUMULATE', 83, NULL, '{\"report_date\":\"2025-06-18\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":2,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-18 08:41:03'), -(73, 'ADD_ACCUMULATE', 84, NULL, '{\"report_date\":\"2025-06-18\",\"worker_id\":5,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-18 08:41:45'), -(74, 'ADD_ACCUMULATE', 86, NULL, '{\"report_date\":\"2025-06-18\",\"worker_id\":10,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"10.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-18 08:47:55'), -(75, 'ADD_ACCUMULATE', 88, NULL, '{\"report_date\":\"2025-06-18\",\"worker_id\":3,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"10.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-18 08:47:55'), -(76, 'ADD_ACCUMULATE', 90, NULL, '{\"report_date\":\"2025-06-18\",\"worker_id\":4,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-18 08:50:19'), -(77, 'ADD_ACCUMULATE', 92, NULL, '{\"report_date\":\"2025-06-18\",\"worker_id\":9,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-18 08:50:19'), -(78, 'ADD_ACCUMULATE', 94, NULL, '{\"report_date\":\"2025-06-18\",\"worker_id\":1,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-18 08:50:19'), -(79, 'ADD_ACCUMULATE', 96, NULL, '{\"report_date\":\"2025-06-18\",\"worker_id\":7,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-18 09:00:17'), -(80, 'ADD_ACCUMULATE', 98, NULL, '{\"report_date\":\"2025-06-19\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-19 06:37:59'), -(81, 'ADD_ACCUMULATE', 99, NULL, '{\"report_date\":\"2025-06-19\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-19 06:37:59'), -(82, 'ADD_ACCUMULATE', 100, NULL, '{\"report_date\":\"2025-06-19\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-19 06:59:36'), -(83, 'ADD_ACCUMULATE', 101, NULL, '{\"report_date\":\"2025-06-19\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-19 06:59:36'), -(84, 'ADD_ACCUMULATE', 102, NULL, '{\"report_date\":\"2025-06-19\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-19 06:59:36'), -(85, 'ADD_ACCUMULATE', 103, NULL, '{\"report_date\":\"2025-06-19\",\"worker_id\":9,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-19 07:01:02'), -(86, 'ADD_ACCUMULATE', 105, NULL, '{\"report_date\":\"2025-06-19\",\"worker_id\":4,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-19 07:01:02'), -(87, 'ADD_ACCUMULATE', 107, NULL, '{\"report_date\":\"2025-06-19\",\"worker_id\":1,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-19 07:01:02'), -(88, 'ADD_ACCUMULATE', 109, NULL, '{\"report_date\":\"2025-06-19\",\"worker_id\":7,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-19 07:01:02'), -(89, 'ADD_ACCUMULATE', 111, NULL, '{\"report_date\":\"2025-06-19\",\"worker_id\":6,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-19 07:01:02'), -(90, 'ADD_ACCUMULATE', 113, NULL, '{\"report_date\":\"2025-06-20\",\"worker_id\":9,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-20 06:44:01'), -(91, 'ADD_ACCUMULATE', 115, NULL, '{\"report_date\":\"2025-06-20\",\"worker_id\":4,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-20 06:44:01'), -(92, 'ADD_ACCUMULATE', 117, NULL, '{\"report_date\":\"2025-06-20\",\"worker_id\":7,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-20 06:44:01'), -(93, 'ADD_ACCUMULATE', 119, NULL, '{\"report_date\":\"2025-06-20\",\"worker_id\":6,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-20 06:44:02'), -(94, 'ADD_ACCUMULATE', 121, NULL, '{\"report_date\":\"2025-06-20\",\"worker_id\":1,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-20 06:44:02'), -(95, 'ADD_ACCUMULATE', 123, NULL, '{\"report_date\":\"2025-06-20\",\"worker_id\":5,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-20 06:44:02'), -(96, 'ADD_ACCUMULATE', 125, NULL, '{\"report_date\":\"2025-06-20\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-20 06:45:30'), -(97, 'ADD_ACCUMULATE', 126, NULL, '{\"report_date\":\"2025-06-20\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-20 06:45:31'), -(98, 'ADD_ACCUMULATE', 127, NULL, '{\"report_date\":\"2025-06-23\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-23 06:42:58'), -(99, 'ADD_ACCUMULATE', 128, NULL, '{\"report_date\":\"2025-06-23\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-23 06:42:58'), -(100, 'ADD_ACCUMULATE', 129, NULL, '{\"report_date\":\"2025-06-23\",\"worker_id\":5,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-23 06:51:28'), -(101, 'ADD_ACCUMULATE', 131, NULL, '{\"report_date\":\"2025-06-23\",\"worker_id\":1,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-23 06:51:28'), -(102, 'ADD_ACCUMULATE', 133, NULL, '{\"report_date\":\"2025-06-23\",\"worker_id\":9,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-23 06:51:28'), -(103, 'ADD_ACCUMULATE', 135, NULL, '{\"report_date\":\"2025-06-23\",\"worker_id\":4,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-23 06:51:28'), -(104, 'ADD_ACCUMULATE', 137, NULL, '{\"report_date\":\"2025-06-23\",\"worker_id\":7,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-23 06:51:28'), -(105, 'ADD_ACCUMULATE', 139, NULL, '{\"report_date\":\"2025-06-23\",\"worker_id\":6,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-23 06:51:28'), -(106, 'ADD_ACCUMULATE', 141, NULL, '{\"report_date\":\"2025-06-24\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"12.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-24 11:10:32'), -(107, 'ADD_ACCUMULATE', 142, NULL, '{\"report_date\":\"2025-06-24\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"12.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-24 11:10:32'), -(108, 'ADD_ACCUMULATE', 143, NULL, '{\"report_date\":\"2025-06-24\",\"worker_id\":9,\"work_entries_count\":2,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"12.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-24 11:11:00'), -(109, 'ADD_ACCUMULATE', 145, NULL, '{\"report_date\":\"2025-06-24\",\"worker_id\":5,\"work_entries_count\":2,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"12.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-24 11:11:00'), -(110, 'ADD_ACCUMULATE', 147, NULL, '{\"report_date\":\"2025-06-24\",\"worker_id\":4,\"work_entries_count\":2,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"12.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-24 11:11:00'), -(111, 'ADD_ACCUMULATE', 149, NULL, '{\"report_date\":\"2025-06-24\",\"worker_id\":7,\"work_entries_count\":2,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"12.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-24 11:11:00'), -(112, 'ADD_ACCUMULATE', 151, NULL, '{\"report_date\":\"2025-06-24\",\"worker_id\":6,\"work_entries_count\":2,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"12.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-24 11:11:00'), -(113, 'ADD_ACCUMULATE', 153, NULL, '{\"report_date\":\"2025-06-24\",\"worker_id\":1,\"work_entries_count\":2,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"12.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-24 11:11:00'), -(114, 'ADD_ACCUMULATE', 155, NULL, '{\"report_date\":\"2025-06-24\",\"worker_id\":8,\"work_entries_count\":2,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"12.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-24 11:11:05'), -(115, 'ADD_ACCUMULATE', 157, NULL, '{\"report_date\":\"2025-06-24\",\"worker_id\":2,\"work_entries_count\":2,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"12.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-24 11:11:05'), -(116, 'ADD_ACCUMULATE', 159, NULL, '{\"report_date\":\"2025-06-25\",\"worker_id\":2,\"work_entries_count\":2,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"12.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-25 11:08:04'), -(117, 'ADD_ACCUMULATE', 161, NULL, '{\"report_date\":\"2025-06-25\",\"worker_id\":8,\"work_entries_count\":2,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"12.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-25 11:08:05'), -(118, 'ADD_ACCUMULATE', 163, NULL, '{\"report_date\":\"2025-06-25\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"12.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-25 11:11:30'), -(119, 'ADD_ACCUMULATE', 164, NULL, '{\"report_date\":\"2025-06-25\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"12.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-25 11:11:30'), -(120, 'ADD_ACCUMULATE', 165, NULL, '{\"report_date\":\"2025-06-25\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"12.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-25 11:11:30'), -(121, 'ADD_ACCUMULATE', 166, NULL, '{\"report_date\":\"2025-06-25\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"12.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-25 11:11:30'), -(122, 'ADD_ACCUMULATE', 167, NULL, '{\"report_date\":\"2025-06-26\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"12.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-26 10:29:38'), -(123, 'ADD_ACCUMULATE', 168, NULL, '{\"report_date\":\"2025-06-26\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"12.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-26 10:29:38'), -(124, 'ADD_ACCUMULATE', 169, NULL, '{\"report_date\":\"2025-06-26\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"12.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-26 10:29:38'), -(125, 'ADD_ACCUMULATE', 170, NULL, '{\"report_date\":\"2025-06-26\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"12.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-26 10:29:38'), -(126, 'ADD_ACCUMULATE', 171, NULL, '{\"report_date\":\"2025-06-26\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"12.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-26 10:29:38'), -(127, 'ADD_ACCUMULATE', 172, NULL, '{\"report_date\":\"2025-06-26\",\"worker_id\":8,\"work_entries_count\":2,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"12.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-26 11:11:31'), -(128, 'ADD_ACCUMULATE', 174, NULL, '{\"report_date\":\"2025-06-26\",\"worker_id\":2,\"work_entries_count\":2,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"12.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-26 11:11:32'), -(129, 'ADD_ACCUMULATE', 176, NULL, '{\"report_date\":\"2025-06-26\",\"worker_id\":9,\"work_entries_count\":2,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"12.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-26 11:11:32'), -(130, 'ADD_ACCUMULATE', 178, NULL, '{\"report_date\":\"2025-06-26\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"12.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-26 11:19:34'), -(131, 'ADD_ACCUMULATE', 179, NULL, '{\"report_date\":\"2025-06-26\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"12.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-26 11:19:34'), -(132, 'ADD_ACCUMULATE', 180, NULL, '{\"report_date\":\"2025-06-27\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-27 01:54:21'), -(133, 'ADD_ACCUMULATE', 181, NULL, '{\"report_date\":\"2025-06-27\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-27 01:54:21'), -(134, 'ADD_ACCUMULATE', 182, NULL, '{\"report_date\":\"2025-06-27\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"4.00\",\"grand_total\":4,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"4.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-27 01:54:40'), -(135, 'ADD_ACCUMULATE', 183, NULL, '{\"report_date\":\"2025-06-27\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":16,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"},{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-27 06:47:43'), -(136, 'ADD_ACCUMULATE', 184, NULL, '{\"report_date\":\"2025-06-27\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-27 06:47:43'), -(137, 'ADD_ACCUMULATE', 185, NULL, '{\"report_date\":\"2025-06-27\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-27 06:47:43'), -(138, 'ADD_ACCUMULATE', 186, NULL, '{\"report_date\":\"2025-06-27\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-27 06:47:43'), -(139, 'ADD_ACCUMULATE', 187, NULL, '{\"report_date\":\"2025-06-27\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-27 06:47:43'), -(140, 'ADD_ACCUMULATE', 188, NULL, '{\"report_date\":\"2025-06-27\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-27 06:47:43'), -(141, 'ADD_ACCUMULATE', 189, NULL, '{\"report_date\":\"2025-06-27\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-27 06:49:08'), -(142, 'ADD_ACCUMULATE', 190, NULL, '{\"report_date\":\"2025-06-27\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-27 06:49:08'), -(143, 'DELETE_SINGLE', 190, '{\"worker_name\":\"김윤섭\",\"project_name\":\"효성화학 에틸렌 탱크 건설공사\",\"work_hours\":\"8.00\",\"report_date\":\"2025-06-27T00:00:00.000Z\"}', NULL, 6, '개별 항목 삭제', NULL, NULL, '2025-06-27 06:58:25'), -(144, 'ADD_ACCUMULATE', 191, NULL, '{\"report_date\":\"2025-06-27\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"4.00\",\"grand_total\":4,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"4.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-27 06:58:46'), -(145, 'DELETE_SINGLE', 181, '{\"worker_name\":\"박현수\",\"project_name\":\"효성화학 에틸렌 탱크 건설공사\",\"work_hours\":\"8.00\",\"report_date\":\"2025-06-27T00:00:00.000Z\"}', NULL, 5, '개별 항목 삭제', NULL, NULL, '2025-06-27 06:59:37'), -(146, 'DELETE_SINGLE', 180, '{\"worker_name\":\"최광욱\",\"project_name\":\"효성화학 에틸렌 탱크 건설공사\",\"work_hours\":\"8.00\",\"report_date\":\"2025-06-27T00:00:00.000Z\"}', NULL, 5, '개별 항목 삭제', NULL, NULL, '2025-06-27 06:59:42'), -(147, 'ADD_ACCUMULATE', 192, NULL, '{\"report_date\":\"2025-06-27\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":6,\"my_total\":\"6.00\",\"grand_total\":6,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"6.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-27 07:00:10'), -(148, 'ADD_ACCUMULATE', 193, NULL, '{\"report_date\":\"2025-06-30\",\"worker_id\":6,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:37:29'), -(149, 'ADD_ACCUMULATE', 195, NULL, '{\"report_date\":\"2025-06-30\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:38:19'), -(150, 'ADD_ACCUMULATE', 196, NULL, '{\"report_date\":\"2025-06-30\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:38:19'), -(151, 'ADD_ACCUMULATE', 197, NULL, '{\"report_date\":\"2025-06-30\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:38:19'), -(152, 'ADD_ACCUMULATE', 198, NULL, '{\"report_date\":\"2025-07-01\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:39:21'), -(153, 'ADD_ACCUMULATE', 199, NULL, '{\"report_date\":\"2025-07-01\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:39:21'), -(154, 'ADD_ACCUMULATE', 200, NULL, '{\"report_date\":\"2025-07-01\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:39:21'), -(155, 'ADD_ACCUMULATE', 201, NULL, '{\"report_date\":\"2025-07-01\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:39:21'), -(156, 'ADD_ACCUMULATE', 202, NULL, '{\"report_date\":\"2025-07-01\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:39:21'), -(157, 'ADD_ACCUMULATE', 203, NULL, '{\"report_date\":\"2025-07-01\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:39:21'), -(158, 'ADD_ACCUMULATE', 204, NULL, '{\"report_date\":\"2025-07-01\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"14.00\",\"grand_total\":14,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"14.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:39:48'), -(159, 'ADD_ACCUMULATE', 205, NULL, '{\"report_date\":\"2025-07-01\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"14.00\",\"grand_total\":14,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"14.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:39:48'), -(160, 'ADD_ACCUMULATE', 206, NULL, '{\"report_date\":\"2025-07-01\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"14.00\",\"grand_total\":14,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"14.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:39:48'), -(161, 'ADD_ACCUMULATE', 207, NULL, '{\"report_date\":\"2025-07-01\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"14.00\",\"grand_total\":14,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"14.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:39:48'), -(162, 'ADD_ACCUMULATE', 208, NULL, '{\"report_date\":\"2025-07-01\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":2,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"12.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:40:10'), -(163, 'ADD_ACCUMULATE', 209, NULL, '{\"report_date\":\"2025-07-01\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":2,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"12.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:40:10'), -(164, 'ADD_ACCUMULATE', 210, NULL, '{\"report_date\":\"2025-07-01\",\"worker_id\":7,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:42:57'), -(165, 'ADD_ACCUMULATE', 212, NULL, '{\"report_date\":\"2025-07-01\",\"worker_id\":5,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:42:57'), -(166, 'ADD_ACCUMULATE', 214, NULL, '{\"report_date\":\"2025-07-01\",\"worker_id\":4,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:42:57'), -(167, 'ADD_ACCUMULATE', 216, NULL, '{\"report_date\":\"2025-07-01\",\"worker_id\":1,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:42:57'), -(168, 'ADD_ACCUMULATE', 218, NULL, '{\"report_date\":\"2025-07-02\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:43:36'), -(169, 'ADD_ACCUMULATE', 219, NULL, '{\"report_date\":\"2025-07-02\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:43:36'), -(170, 'ADD_ACCUMULATE', 220, NULL, '{\"report_date\":\"2025-07-02\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:43:36'), -(171, 'ADD_ACCUMULATE', 221, NULL, '{\"report_date\":\"2025-07-02\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:43:36'), -(172, 'ADD_ACCUMULATE', 222, NULL, '{\"report_date\":\"2025-07-02\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:43:36'), -(173, 'ADD_ACCUMULATE', 223, NULL, '{\"report_date\":\"2025-07-02\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:43:36'), -(174, 'ADD_ACCUMULATE', 224, NULL, '{\"report_date\":\"2025-07-02\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:43:36'), -(175, 'ADD_ACCUMULATE', 225, NULL, '{\"report_date\":\"2025-07-02\",\"worker_id\":5,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:44:11'); -INSERT INTO `work_report_audit_log` (`log_id`, `action`, `report_id`, `old_values`, `new_values`, `changed_by`, `change_reason`, `ip_address`, `user_agent`, `created_at`) VALUES -(176, 'ADD_ACCUMULATE', 227, NULL, '{\"report_date\":\"2025-07-02\",\"worker_id\":4,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:44:11'), -(177, 'ADD_ACCUMULATE', 229, NULL, '{\"report_date\":\"2025-07-02\",\"worker_id\":1,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:44:11'), -(178, 'ADD_ACCUMULATE', 231, NULL, '{\"report_date\":\"2025-07-03\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:45:44'), -(179, 'ADD_ACCUMULATE', 232, NULL, '{\"report_date\":\"2025-07-03\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:45:45'), -(180, 'ADD_ACCUMULATE', 233, NULL, '{\"report_date\":\"2025-07-03\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:45:45'), -(181, 'ADD_ACCUMULATE', 234, NULL, '{\"report_date\":\"2025-07-03\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:45:45'), -(182, 'ADD_ACCUMULATE', 235, NULL, '{\"report_date\":\"2025-07-03\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:46:07'), -(183, 'ADD_ACCUMULATE', 236, NULL, '{\"report_date\":\"2025-07-03\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:46:07'), -(184, 'ADD_ACCUMULATE', 237, NULL, '{\"report_date\":\"2025-07-03\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:46:08'), -(185, 'ADD_ACCUMULATE', 238, NULL, '{\"report_date\":\"2025-07-03\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:46:08'), -(186, 'ADD_ACCUMULATE', 239, NULL, '{\"report_date\":\"2025-07-03\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:46:08'), -(187, 'ADD_ACCUMULATE', 240, NULL, '{\"report_date\":\"2025-07-03\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:46:08'), -(188, 'ADD_ACCUMULATE', 241, NULL, '{\"report_date\":\"2025-07-04\",\"worker_id\":10,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:51:47'), -(189, 'ADD_ACCUMULATE', 243, NULL, '{\"report_date\":\"2025-07-04\",\"worker_id\":5,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:51:47'), -(190, 'ADD_ACCUMULATE', 245, NULL, '{\"report_date\":\"2025-07-04\",\"worker_id\":4,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:51:47'), -(191, 'ADD_ACCUMULATE', 247, NULL, '{\"report_date\":\"2025-07-04\",\"worker_id\":9,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:51:47'), -(192, 'ADD_ACCUMULATE', 249, NULL, '{\"report_date\":\"2025-07-04\",\"worker_id\":8,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:51:47'), -(193, 'ADD_ACCUMULATE', 251, NULL, '{\"report_date\":\"2025-07-04\",\"worker_id\":3,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:51:47'), -(194, 'ADD_ACCUMULATE', 253, NULL, '{\"report_date\":\"2025-07-04\",\"worker_id\":2,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:51:47'), -(195, 'ADD_ACCUMULATE', 255, NULL, '{\"report_date\":\"2025-07-04\",\"worker_id\":7,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:51:47'), -(196, 'ADD_ACCUMULATE', 257, NULL, '{\"report_date\":\"2025-07-04\",\"worker_id\":6,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:51:47'), -(197, 'ADD_ACCUMULATE', 259, NULL, '{\"report_date\":\"2025-07-04\",\"worker_id\":1,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-05 01:51:47'), -(198, 'ADD_ACCUMULATE', 261, NULL, '{\"report_date\":\"2025-07-05\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-05 05:36:38'), -(199, 'ADD_ACCUMULATE', 262, NULL, '{\"report_date\":\"2025-07-05\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-05 05:36:38'), -(200, 'ADD_ACCUMULATE', 263, NULL, '{\"report_date\":\"2025-07-05\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-05 05:36:39'), -(201, 'ADD_ACCUMULATE', 264, NULL, '{\"report_date\":\"2025-07-05\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-05 05:36:39'), -(202, 'ADD_ACCUMULATE', 265, NULL, '{\"report_date\":\"2025-07-05\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-05 05:36:39'), -(203, 'ADD_ACCUMULATE', 266, NULL, '{\"report_date\":\"2025-07-05\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-05 05:36:39'), -(204, 'ADD_ACCUMULATE', 267, NULL, '{\"report_date\":\"2025-07-06\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-06 05:34:32'), -(205, 'ADD_ACCUMULATE', 268, NULL, '{\"report_date\":\"2025-07-06\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-06 05:34:32'), -(206, 'ADD_ACCUMULATE', 269, NULL, '{\"report_date\":\"2025-07-06\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-06 05:34:32'), -(207, 'ADD_ACCUMULATE', 270, NULL, '{\"report_date\":\"2025-07-06\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-06 05:34:32'), -(208, 'ADD_ACCUMULATE', 271, NULL, '{\"report_date\":\"2025-07-06\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-06 05:34:32'), -(209, 'ADD_ACCUMULATE', 272, NULL, '{\"report_date\":\"2025-07-06\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-06 05:34:32'), -(210, 'ADD_ACCUMULATE', 273, NULL, '{\"report_date\":\"2025-07-06\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-06 05:34:32'), -(211, 'ADD_ACCUMULATE', 274, NULL, '{\"report_date\":\"2025-07-06\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-06 05:34:32'), -(212, 'ADD_ACCUMULATE', 275, NULL, '{\"report_date\":\"2025-07-07\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-07-07 06:49:31'), -(213, 'ADD_ACCUMULATE', 276, NULL, '{\"report_date\":\"2025-07-07\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-07-07 06:49:31'), -(214, 'ADD_ACCUMULATE', 277, NULL, '{\"report_date\":\"2025-07-07\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-07-07 06:49:31'), -(215, 'ADD_ACCUMULATE', 278, NULL, '{\"report_date\":\"2025-07-07\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-07-07 06:49:31'), -(216, 'ADD_ACCUMULATE', 279, NULL, '{\"report_date\":\"2025-07-07\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-07-07 06:49:31'), -(217, 'ADD_ACCUMULATE', 280, NULL, '{\"report_date\":\"2025-07-07\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-07-07 06:49:31'), -(218, 'ADD_ACCUMULATE', 281, NULL, '{\"report_date\":\"2025-07-07\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-07-07 06:49:31'), -(219, 'ADD_ACCUMULATE', 282, NULL, '{\"report_date\":\"2025-07-07\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-07-07 06:49:31'), -(220, 'ADD_ACCUMULATE', 283, NULL, '{\"report_date\":\"2025-07-07\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-07-07 06:49:31'), -(221, 'ADD_ACCUMULATE', 284, NULL, '{\"report_date\":\"2025-07-07\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-07-07 06:49:31'), -(222, 'ADD_ACCUMULATE', 285, NULL, '{\"report_date\":\"2025-07-08\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-08 06:36:57'), -(223, 'ADD_ACCUMULATE', 286, NULL, '{\"report_date\":\"2025-07-08\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-08 06:36:58'), -(224, 'ADD_ACCUMULATE', 287, NULL, '{\"report_date\":\"2025-07-08\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-08 06:36:58'), -(225, 'ADD_ACCUMULATE', 288, NULL, '{\"report_date\":\"2025-07-08\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-08 06:36:58'), -(226, 'ADD_ACCUMULATE', 289, NULL, '{\"report_date\":\"2025-07-08\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-08 06:36:58'), -(227, 'ADD_ACCUMULATE', 290, NULL, '{\"report_date\":\"2025-07-08\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-08 06:36:58'), -(228, 'ADD_ACCUMULATE', 291, NULL, '{\"report_date\":\"2025-07-08\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-08 06:36:58'), -(229, 'ADD_ACCUMULATE', 292, NULL, '{\"report_date\":\"2025-07-08\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-08 06:36:58'), -(230, 'ADD_ACCUMULATE', 293, NULL, '{\"report_date\":\"2025-07-08\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-08 06:36:58'), -(231, 'ADD_ACCUMULATE', 294, NULL, '{\"report_date\":\"2025-07-08\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-08 06:36:58'), -(232, 'ADD_ACCUMULATE', 295, NULL, '{\"report_date\":\"2025-07-09\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-09 22:08:40'), -(233, 'ADD_ACCUMULATE', 296, NULL, '{\"report_date\":\"2025-07-09\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-09 22:08:40'), -(234, 'ADD_ACCUMULATE', 297, NULL, '{\"report_date\":\"2025-07-09\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-09 22:08:40'), -(235, 'ADD_ACCUMULATE', 298, NULL, '{\"report_date\":\"2025-07-09\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-09 22:08:41'), -(236, 'ADD_ACCUMULATE', 299, NULL, '{\"report_date\":\"2025-07-09\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-09 22:08:41'), -(237, 'ADD_ACCUMULATE', 300, NULL, '{\"report_date\":\"2025-07-09\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-09 22:08:41'), -(238, 'ADD_ACCUMULATE', 301, NULL, '{\"report_date\":\"2025-07-09\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-09 22:08:42'), -(239, 'ADD_ACCUMULATE', 302, NULL, '{\"report_date\":\"2025-07-09\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-09 22:08:42'), -(240, 'ADD_ACCUMULATE', 303, NULL, '{\"report_date\":\"2025-07-09\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-09 22:08:42'), -(241, 'ADD_ACCUMULATE', 304, NULL, '{\"report_date\":\"2025-07-09\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"4.00\",\"grand_total\":4,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"4.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-09 22:09:10'), -(242, 'ADD_ACCUMULATE', 305, NULL, '{\"report_date\":\"2025-07-10\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-10 06:33:58'), -(243, 'ADD_ACCUMULATE', 306, NULL, '{\"report_date\":\"2025-07-10\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-10 06:33:58'), -(244, 'ADD_ACCUMULATE', 307, NULL, '{\"report_date\":\"2025-07-10\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-10 06:33:58'), -(245, 'ADD_ACCUMULATE', 308, NULL, '{\"report_date\":\"2025-07-10\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-10 06:33:59'), -(246, 'ADD_ACCUMULATE', 309, NULL, '{\"report_date\":\"2025-07-10\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-10 06:33:59'), -(247, 'ADD_ACCUMULATE', 310, NULL, '{\"report_date\":\"2025-07-10\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-10 06:33:59'), -(248, 'ADD_ACCUMULATE', 311, NULL, '{\"report_date\":\"2025-07-10\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-10 06:33:59'), -(249, 'ADD_ACCUMULATE', 312, NULL, '{\"report_date\":\"2025-07-10\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-10 06:33:59'), -(250, 'ADD_ACCUMULATE', 313, NULL, '{\"report_date\":\"2025-07-10\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-10 06:33:59'), -(251, 'ADD_ACCUMULATE', 314, NULL, '{\"report_date\":\"2025-07-10\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-10 06:33:59'), -(252, 'ADD_ACCUMULATE', 315, NULL, '{\"report_date\":\"2025-07-12\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-12 05:41:30'), -(253, 'ADD_ACCUMULATE', 316, NULL, '{\"report_date\":\"2025-07-12\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-12 05:41:30'), -(254, 'ADD_ACCUMULATE', 317, NULL, '{\"report_date\":\"2025-07-12\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-12 05:41:30'), -(255, 'ADD_ACCUMULATE', 318, NULL, '{\"report_date\":\"2025-07-12\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-12 05:41:30'), -(256, 'ADD_ACCUMULATE', 319, NULL, '{\"report_date\":\"2025-07-12\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-12 05:41:30'), -(257, 'ADD_ACCUMULATE', 320, NULL, '{\"report_date\":\"2025-07-12\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-12 05:41:30'), -(258, 'ADD_ACCUMULATE', 321, NULL, '{\"report_date\":\"2025-07-12\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-12 05:41:30'), -(259, 'ADD_ACCUMULATE', 322, NULL, '{\"report_date\":\"2025-07-14\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":6,\"my_total\":\"6.00\",\"grand_total\":6,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"6.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-14 06:46:30'), -(260, 'ADD_ACCUMULATE', 323, NULL, '{\"report_date\":\"2025-07-14\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-14 06:46:57'), -(261, 'ADD_ACCUMULATE', 324, NULL, '{\"report_date\":\"2025-07-14\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-14 06:46:57'), -(262, 'ADD_ACCUMULATE', 325, NULL, '{\"report_date\":\"2025-07-14\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-14 06:46:57'), -(263, 'ADD_ACCUMULATE', 326, NULL, '{\"report_date\":\"2025-07-14\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-14 06:46:57'), -(264, 'ADD_ACCUMULATE', 327, NULL, '{\"report_date\":\"2025-07-14\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-14 06:46:57'), -(265, 'ADD_ACCUMULATE', 328, NULL, '{\"report_date\":\"2025-07-14\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-14 06:46:57'), -(266, 'ADD_ACCUMULATE', 329, NULL, '{\"report_date\":\"2025-07-14\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-14 06:46:57'), -(267, 'ADD_ACCUMULATE', 330, NULL, '{\"report_date\":\"2025-07-14\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-14 06:46:57'), -(268, 'ADD_ACCUMULATE', 331, NULL, '{\"report_date\":\"2025-07-15\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-15 05:57:06'), -(269, 'ADD_ACCUMULATE', 332, NULL, '{\"report_date\":\"2025-07-15\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-15 05:57:06'), -(270, 'ADD_ACCUMULATE', 333, NULL, '{\"report_date\":\"2025-07-15\",\"worker_id\":5,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-15 05:57:47'), -(271, 'ADD_ACCUMULATE', 335, NULL, '{\"report_date\":\"2025-07-15\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-15 05:58:19'), -(272, 'ADD_ACCUMULATE', 336, NULL, '{\"report_date\":\"2025-07-15\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-15 05:58:19'), -(273, 'ADD_ACCUMULATE', 337, NULL, '{\"report_date\":\"2025-07-15\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-15 05:58:19'), -(274, 'ADD_ACCUMULATE', 338, NULL, '{\"report_date\":\"2025-07-15\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-15 05:58:19'), -(275, 'ADD_ACCUMULATE', 339, NULL, '{\"report_date\":\"2025-07-15\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-15 05:58:19'), -(276, 'ADD_ACCUMULATE', 340, NULL, '{\"report_date\":\"2025-07-15\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-15 05:58:19'), -(277, 'ADD_ACCUMULATE', 341, NULL, '{\"report_date\":\"2025-07-14\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-15 06:57:26'), -(278, 'ADD_ACCUMULATE', 342, NULL, '{\"report_date\":\"2025-07-16\",\"worker_id\":4,\"work_entries_count\":3,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-16 06:46:46'), -(279, 'ADD_ACCUMULATE', 345, NULL, '{\"report_date\":\"2025-07-16\",\"worker_id\":5,\"work_entries_count\":3,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-16 06:46:46'), -(280, 'ADD_ACCUMULATE', 348, NULL, '{\"report_date\":\"2025-07-16\",\"worker_id\":10,\"work_entries_count\":3,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-16 06:47:53'), -(281, 'ADD_ACCUMULATE', 351, NULL, '{\"report_date\":\"2025-07-16\",\"worker_id\":6,\"work_entries_count\":3,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-16 06:47:53'), -(282, 'ADD_ACCUMULATE', 354, NULL, '{\"report_date\":\"2025-07-16\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-16 06:48:32'), -(283, 'ADD_ACCUMULATE', 355, NULL, '{\"report_date\":\"2025-07-16\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-16 06:48:32'), -(284, 'ADD_ACCUMULATE', 356, NULL, '{\"report_date\":\"2025-07-16\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-16 06:48:32'), -(285, 'ADD_ACCUMULATE', 357, NULL, '{\"report_date\":\"2025-07-16\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-16 06:48:32'), -(286, 'ADD_ACCUMULATE', 358, NULL, '{\"report_date\":\"2025-07-16\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-16 06:51:31'), -(287, 'ADD_ACCUMULATE', 359, NULL, '{\"report_date\":\"2025-07-16\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-16 06:51:31'), -(288, 'ADD_ACCUMULATE', 360, NULL, '{\"report_date\":\"2025-07-17\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-17 06:45:22'), -(289, 'ADD_ACCUMULATE', 361, NULL, '{\"report_date\":\"2025-07-17\",\"worker_id\":5,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-17 06:46:48'), -(290, 'ADD_ACCUMULATE', 363, NULL, '{\"report_date\":\"2025-07-17\",\"worker_id\":4,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-17 06:46:48'), -(291, 'ADD_ACCUMULATE', 365, NULL, '{\"report_date\":\"2025-07-17\",\"worker_id\":2,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-17 06:46:48'), -(292, 'ADD_ACCUMULATE', 367, NULL, '{\"report_date\":\"2025-07-17\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-17 06:47:19'), -(293, 'ADD_ACCUMULATE', 368, NULL, '{\"report_date\":\"2025-07-17\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-17 06:47:19'), -(294, 'ADD_ACCUMULATE', 369, NULL, '{\"report_date\":\"2025-07-17\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-17 06:47:19'), -(295, 'ADD_ACCUMULATE', 370, NULL, '{\"report_date\":\"2025-07-17\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-17 06:47:19'), -(296, 'ADD_ACCUMULATE', 371, NULL, '{\"report_date\":\"2025-07-17\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-17 06:47:19'), -(297, 'ADD_ACCUMULATE', 372, NULL, '{\"report_date\":\"2025-07-17\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-17 06:47:19'), -(298, 'ADD_ACCUMULATE', 373, NULL, '{\"report_date\":\"2025-07-18\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":2,\"my_total\":\"2.00\",\"grand_total\":2,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"2.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-18 05:54:47'), -(299, 'ADD_ACCUMULATE', 374, NULL, '{\"report_date\":\"2025-07-18\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":2,\"my_total\":\"2.00\",\"grand_total\":2,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"2.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-18 05:54:48'), -(300, 'ADD_ACCUMULATE', 375, NULL, '{\"report_date\":\"2025-07-18\",\"worker_id\":5,\"work_entries_count\":3,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-18 05:58:33'), -(301, 'DELETE_SINGLE', 375, '{\"worker_name\":\"표영진\",\"project_name\":\"김천 솔라 파워 그린 수소 Project\",\"work_hours\":\"2.00\",\"report_date\":\"2025-07-18T00:00:00.000Z\"}', NULL, 3, '개별 항목 삭제', NULL, NULL, '2025-07-18 05:58:49'), -(302, 'ADD_ACCUMULATE', 378, NULL, '{\"report_date\":\"2025-07-18\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":6,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-18 05:59:42'), -(303, 'ADD_ACCUMULATE', 379, NULL, '{\"report_date\":\"2025-07-18\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":6,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-18 06:00:15'), -(304, 'ADD_ACCUMULATE', 380, NULL, '{\"report_date\":\"2025-07-18\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-18 06:36:13'), -(305, 'ADD_ACCUMULATE', 381, NULL, '{\"report_date\":\"2025-07-18\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-18 06:36:13'), -(306, 'ADD_ACCUMULATE', 382, NULL, '{\"report_date\":\"2025-07-18\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-18 06:36:13'), -(307, 'ADD_ACCUMULATE', 383, NULL, '{\"report_date\":\"2025-07-18\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-18 06:36:13'), -(308, 'ADD_ACCUMULATE', 384, NULL, '{\"report_date\":\"2025-07-18\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-18 06:36:13'), -(309, 'ADD_ACCUMULATE', 385, NULL, '{\"report_date\":\"2025-07-18\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-18 06:36:13'), -(310, 'ADD_ACCUMULATE', 386, NULL, '{\"report_date\":\"2025-07-18\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-18 06:36:13'), -(311, 'ADD_ACCUMULATE', 387, NULL, '{\"report_date\":\"2025-07-21\",\"worker_id\":5,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-21 06:40:08'), -(312, 'ADD_ACCUMULATE', 389, NULL, '{\"report_date\":\"2025-07-21\",\"worker_id\":4,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-21 06:40:08'), -(313, 'ADD_ACCUMULATE', 391, NULL, '{\"report_date\":\"2025-07-21\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-21 06:40:32'), -(314, 'ADD_ACCUMULATE', 392, NULL, '{\"report_date\":\"2025-07-21\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-21 06:40:32'), -(315, 'ADD_ACCUMULATE', 393, NULL, '{\"report_date\":\"2025-07-21\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-21 06:40:32'), -(316, 'ADD_ACCUMULATE', 394, NULL, '{\"report_date\":\"2025-07-21\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-21 06:40:32'), -(317, 'ADD_ACCUMULATE', 395, NULL, '{\"report_date\":\"2025-07-21\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-21 06:40:32'), -(318, 'ADD_ACCUMULATE', 396, NULL, '{\"report_date\":\"2025-07-21\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-21 06:40:32'), -(319, 'ADD_ACCUMULATE', 397, NULL, '{\"report_date\":\"2025-07-21\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-21 06:40:32'), -(320, 'ADD_ACCUMULATE', 398, NULL, '{\"report_date\":\"2025-07-21\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-21 06:53:37'), -(321, 'ADD_ACCUMULATE', 399, NULL, '{\"report_date\":\"2025-07-22\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-22 06:45:47'), -(322, 'ADD_ACCUMULATE', 400, NULL, '{\"report_date\":\"2025-07-22\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-22 06:45:48'), -(323, 'ADD_ACCUMULATE', 401, NULL, '{\"report_date\":\"2025-07-22\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-22 06:45:48'), -(324, 'ADD_ACCUMULATE', 402, NULL, '{\"report_date\":\"2025-07-22\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-22 06:45:48'), -(325, 'ADD_ACCUMULATE', 403, NULL, '{\"report_date\":\"2025-07-22\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-22 06:45:48'), -(326, 'ADD_ACCUMULATE', 404, NULL, '{\"report_date\":\"2025-07-22\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-22 06:45:48'), -(327, 'ADD_ACCUMULATE', 405, NULL, '{\"report_date\":\"2025-07-22\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-22 06:45:48'), -(328, 'ADD_ACCUMULATE', 406, NULL, '{\"report_date\":\"2025-07-22\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-22 06:46:11'), -(329, 'ADD_ACCUMULATE', 407, NULL, '{\"report_date\":\"2025-07-22\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-22 06:46:11'), -(330, 'ADD_ACCUMULATE', 408, NULL, '{\"report_date\":\"2025-07-22\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-22 06:46:11'), -(331, 'ADD_ACCUMULATE', 409, NULL, '{\"report_date\":\"2025-07-23\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-23 06:45:06'), -(332, 'ADD_ACCUMULATE', 410, NULL, '{\"report_date\":\"2025-07-23\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-23 06:45:28'), -(333, 'ADD_ACCUMULATE', 411, NULL, '{\"report_date\":\"2025-07-23\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-23 06:45:28'), -(334, 'ADD_ACCUMULATE', 412, NULL, '{\"report_date\":\"2025-07-23\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-23 06:45:30'), -(335, 'ADD_ACCUMULATE', 413, NULL, '{\"report_date\":\"2025-07-23\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-23 06:45:30'), -(336, 'ADD_ACCUMULATE', 414, NULL, '{\"report_date\":\"2025-07-23\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-23 06:45:30'), -(337, 'ADD_ACCUMULATE', 415, NULL, '{\"report_date\":\"2025-07-23\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-23 06:45:30'), -(338, 'ADD_ACCUMULATE', 416, NULL, '{\"report_date\":\"2025-07-23\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-23 06:45:30'), -(339, 'ADD_ACCUMULATE', 417, NULL, '{\"report_date\":\"2025-07-23\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-23 06:45:30'), -(340, 'ADD_ACCUMULATE', 418, NULL, '{\"report_date\":\"2025-07-24\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-24 06:36:55'), -(341, 'ADD_ACCUMULATE', 419, NULL, '{\"report_date\":\"2025-07-24\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-24 06:37:18'), -(342, 'ADD_ACCUMULATE', 420, NULL, '{\"report_date\":\"2025-07-24\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-24 06:37:18'), -(343, 'ADD_ACCUMULATE', 421, NULL, '{\"report_date\":\"2025-07-24\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-24 06:37:18'), -(344, 'ADD_ACCUMULATE', 422, NULL, '{\"report_date\":\"2025-07-24\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-24 06:37:18'), -(345, 'ADD_ACCUMULATE', 423, NULL, '{\"report_date\":\"2025-07-24\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-24 06:37:18'), -(346, 'ADD_ACCUMULATE', 424, NULL, '{\"report_date\":\"2025-07-24\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-24 06:37:18'), -(347, 'ADD_ACCUMULATE', 425, NULL, '{\"report_date\":\"2025-07-24\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-24 06:47:04'), -(348, 'ADD_ACCUMULATE', 426, NULL, '{\"report_date\":\"2025-07-24\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-24 06:47:04'); -INSERT INTO `work_report_audit_log` (`log_id`, `action`, `report_id`, `old_values`, `new_values`, `changed_by`, `change_reason`, `ip_address`, `user_agent`, `created_at`) VALUES -(349, 'ADD_ACCUMULATE', 427, NULL, '{\"report_date\":\"2025-07-25\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-25 06:44:23'), -(350, 'ADD_ACCUMULATE', 428, NULL, '{\"report_date\":\"2025-07-25\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-25 06:45:15'), -(351, 'ADD_ACCUMULATE', 429, NULL, '{\"report_date\":\"2025-07-25\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-25 06:45:15'), -(352, 'ADD_ACCUMULATE', 430, NULL, '{\"report_date\":\"2025-07-25\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-25 06:45:15'), -(353, 'ADD_ACCUMULATE', 431, NULL, '{\"report_date\":\"2025-07-25\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-25 06:45:15'), -(354, 'ADD_ACCUMULATE', 432, NULL, '{\"report_date\":\"2025-07-25\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-25 06:45:15'), -(355, 'ADD_ACCUMULATE', 433, NULL, '{\"report_date\":\"2025-07-25\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-25 06:45:15'), -(356, 'ADD_ACCUMULATE', 434, NULL, '{\"report_date\":\"2025-07-25\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-25 06:45:18'), -(357, 'ADD_ACCUMULATE', 435, NULL, '{\"report_date\":\"2025-07-25\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-25 06:45:19'), -(358, 'ADD_ACCUMULATE', 436, NULL, '{\"report_date\":\"2025-07-25\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-25 06:45:19'), -(359, 'ADD_ACCUMULATE', 437, NULL, '{\"report_date\":\"2025-07-28\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-28 06:30:39'), -(360, 'ADD_ACCUMULATE', 438, NULL, '{\"report_date\":\"2025-07-28\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-28 06:30:39'), -(361, 'ADD_ACCUMULATE', 439, NULL, '{\"report_date\":\"2025-07-28\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-28 06:30:39'), -(362, 'ADD_ACCUMULATE', 440, NULL, '{\"report_date\":\"2025-07-28\",\"worker_id\":2,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-28 06:33:08'), -(363, 'ADD_ACCUMULATE', 442, NULL, '{\"report_date\":\"2025-07-28\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-28 06:33:34'), -(364, 'ADD_ACCUMULATE', 443, NULL, '{\"report_date\":\"2025-07-28\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-28 06:33:34'), -(365, 'ADD_ACCUMULATE', 444, NULL, '{\"report_date\":\"2025-07-28\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-28 06:33:34'), -(366, 'ADD_ACCUMULATE', 445, NULL, '{\"report_date\":\"2025-07-28\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-28 06:33:34'), -(367, 'ADD_ACCUMULATE', 446, NULL, '{\"report_date\":\"2025-07-28\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-28 06:33:34'), -(368, 'ADD_ACCUMULATE', 447, NULL, '{\"report_date\":\"2025-07-28\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-28 06:33:34'), -(369, 'ADD_ACCUMULATE', 448, NULL, '{\"report_date\":\"2025-07-29\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-29 06:39:13'), -(370, 'ADD_ACCUMULATE', 449, NULL, '{\"report_date\":\"2025-07-29\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-29 06:39:13'), -(371, 'ADD_ACCUMULATE', 450, NULL, '{\"report_date\":\"2025-07-29\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-29 06:39:13'), -(372, 'ADD_ACCUMULATE', 451, NULL, '{\"report_date\":\"2025-07-30\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-30 06:50:30'), -(373, 'ADD_ACCUMULATE', 452, NULL, '{\"report_date\":\"2025-07-30\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-30 06:50:30'), -(374, 'ADD_ACCUMULATE', 453, NULL, '{\"report_date\":\"2025-07-30\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-30 06:50:30'), -(375, 'ADD_ACCUMULATE', 454, NULL, '{\"report_date\":\"2025-07-30\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-30 06:52:16'), -(376, 'ADD_ACCUMULATE', 455, NULL, '{\"report_date\":\"2025-07-30\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-30 06:52:16'), -(377, 'ADD_ACCUMULATE', 456, NULL, '{\"report_date\":\"2025-07-30\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-30 06:52:16'), -(378, 'ADD_ACCUMULATE', 457, NULL, '{\"report_date\":\"2025-07-30\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-30 06:52:16'), -(379, 'ADD_ACCUMULATE', 458, NULL, '{\"report_date\":\"2025-07-30\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-30 06:52:16'), -(380, 'ADD_ACCUMULATE', 459, NULL, '{\"report_date\":\"2025-07-30\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-30 06:52:16'), -(381, 'ADD_ACCUMULATE', 460, NULL, '{\"report_date\":\"2025-07-30\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-30 06:52:16'), -(382, 'ADD_ACCUMULATE', 461, NULL, '{\"report_date\":\"2025-07-31\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"4.00\",\"grand_total\":4,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"4.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-31 06:42:56'), -(383, 'ADD_ACCUMULATE', 462, NULL, '{\"report_date\":\"2025-07-31\",\"worker_id\":4,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-31 06:43:32'), -(384, 'ADD_ACCUMULATE', 464, NULL, '{\"report_date\":\"2025-07-31\",\"worker_id\":5,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-31 06:43:32'), -(385, 'ADD_ACCUMULATE', 466, NULL, '{\"report_date\":\"2025-07-31\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-31 06:44:00'), -(386, 'ADD_ACCUMULATE', 467, NULL, '{\"report_date\":\"2025-07-31\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-31 06:44:00'), -(387, 'ADD_ACCUMULATE', 468, NULL, '{\"report_date\":\"2025-07-31\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-31 06:44:00'), -(388, 'ADD_ACCUMULATE', 469, NULL, '{\"report_date\":\"2025-07-31\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-31 06:44:00'), -(389, 'ADD_ACCUMULATE', 470, NULL, '{\"report_date\":\"2025-07-31\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-31 06:44:00'), -(390, 'ADD_ACCUMULATE', 471, NULL, '{\"report_date\":\"2025-07-31\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-31 06:44:00'), -(391, 'ADD_ACCUMULATE', 472, NULL, '{\"report_date\":\"2025-07-31\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-07-31 06:44:00'), -(392, 'ADD_ACCUMULATE', 473, NULL, '{\"report_date\":\"2025-07-11\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-31 22:24:47'), -(393, 'ADD_ACCUMULATE', 474, NULL, '{\"report_date\":\"2025-07-11\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-31 22:24:47'), -(394, 'ADD_ACCUMULATE', 475, NULL, '{\"report_date\":\"2025-07-11\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-31 22:24:47'), -(395, 'ADD_ACCUMULATE', 476, NULL, '{\"report_date\":\"2025-07-11\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-31 22:24:47'), -(396, 'ADD_ACCUMULATE', 477, NULL, '{\"report_date\":\"2025-07-11\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-31 22:24:47'), -(397, 'ADD_ACCUMULATE', 478, NULL, '{\"report_date\":\"2025-07-11\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-31 22:24:47'), -(398, 'ADD_ACCUMULATE', 479, NULL, '{\"report_date\":\"2025-07-11\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-31 22:24:47'), -(399, 'ADD_ACCUMULATE', 480, NULL, '{\"report_date\":\"2025-07-11\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-31 22:24:47'), -(400, 'ADD_ACCUMULATE', 481, NULL, '{\"report_date\":\"2025-07-11\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-31 22:24:47'), -(401, 'ADD_ACCUMULATE', 482, NULL, '{\"report_date\":\"2025-07-11\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-07-31 22:24:47'), -(402, 'ADD_ACCUMULATE', 483, NULL, '{\"report_date\":\"2025-08-01\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-01 04:57:47'), -(403, 'ADD_ACCUMULATE', 484, NULL, '{\"report_date\":\"2025-08-01\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-01 04:57:47'), -(404, 'ADD_ACCUMULATE', 485, NULL, '{\"report_date\":\"2025-08-01\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-01 04:57:47'), -(405, 'ADD_ACCUMULATE', 486, NULL, '{\"report_date\":\"2025-08-01\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-01 04:57:47'), -(406, 'ADD_ACCUMULATE', 487, NULL, '{\"report_date\":\"2025-08-01\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-01 04:57:47'), -(407, 'ADD_ACCUMULATE', 488, NULL, '{\"report_date\":\"2025-08-01\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-01 04:57:47'), -(408, 'ADD_ACCUMULATE', 489, NULL, '{\"report_date\":\"2025-08-01\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-01 04:57:48'), -(409, 'ADD_ACCUMULATE', 490, NULL, '{\"report_date\":\"2025-08-01\",\"worker_id\":4,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-01 05:02:28'), -(410, 'ADD_ACCUMULATE', 492, NULL, '{\"report_date\":\"2025-08-01\",\"worker_id\":5,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-01 05:02:28'), -(411, 'ADD_ACCUMULATE', 494, NULL, '{\"report_date\":\"2025-08-07\",\"worker_id\":9,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-07 06:42:39'), -(412, 'ADD_ACCUMULATE', 496, NULL, '{\"report_date\":\"2025-08-07\",\"worker_id\":7,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-07 06:42:39'), -(413, 'ADD_ACCUMULATE', 498, NULL, '{\"report_date\":\"2025-08-07\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-07 06:43:14'), -(414, 'ADD_ACCUMULATE', 499, NULL, '{\"report_date\":\"2025-08-07\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-07 06:43:15'), -(415, 'ADD_ACCUMULATE', 500, NULL, '{\"report_date\":\"2025-08-07\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-07 06:43:15'), -(416, 'ADD_ACCUMULATE', 501, NULL, '{\"report_date\":\"2025-08-07\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-07 06:43:39'), -(417, 'ADD_ACCUMULATE', 502, NULL, '{\"report_date\":\"2025-08-07\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-07 06:43:39'), -(418, 'ADD_ACCUMULATE', 503, NULL, '{\"report_date\":\"2025-08-07\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-07 06:43:39'), -(419, 'ADD_ACCUMULATE', 504, NULL, '{\"report_date\":\"2025-08-07\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-07 06:43:52'), -(420, 'ADD_ACCUMULATE', 505, NULL, '{\"report_date\":\"2025-08-08\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-08 06:45:20'), -(421, 'ADD_ACCUMULATE', 506, NULL, '{\"report_date\":\"2025-08-08\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-08 06:58:42'), -(422, 'ADD_ACCUMULATE', 507, NULL, '{\"report_date\":\"2025-08-08\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-08 06:58:42'), -(423, 'ADD_ACCUMULATE', 508, NULL, '{\"report_date\":\"2025-08-08\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-08 06:59:18'), -(424, 'ADD_ACCUMULATE', 509, NULL, '{\"report_date\":\"2025-08-08\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-08 06:59:19'), -(425, 'ADD_ACCUMULATE', 510, NULL, '{\"report_date\":\"2025-08-08\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-08 06:59:19'), -(426, 'ADD_ACCUMULATE', 511, NULL, '{\"report_date\":\"2025-08-08\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-08 06:59:19'), -(427, 'ADD_ACCUMULATE', 512, NULL, '{\"report_date\":\"2025-08-08\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-08 06:59:19'), -(428, 'ADD_ACCUMULATE', 513, NULL, '{\"report_date\":\"2025-08-11\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-11 06:27:37'), -(429, 'ADD_ACCUMULATE', 514, NULL, '{\"report_date\":\"2025-08-11\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"16.00\",\"grand_total\":16,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"16.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-11 06:27:37'), -(430, 'ADD_ACCUMULATE', 515, NULL, '{\"report_date\":\"2025-08-11\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-11 06:46:23'), -(431, 'ADD_ACCUMULATE', 516, NULL, '{\"report_date\":\"2025-08-11\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-11 06:46:23'), -(432, 'ADD_ACCUMULATE', 517, NULL, '{\"report_date\":\"2025-08-11\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-11 06:46:49'), -(433, 'ADD_ACCUMULATE', 518, NULL, '{\"report_date\":\"2025-08-11\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-11 06:46:49'), -(434, 'ADD_ACCUMULATE', 519, NULL, '{\"report_date\":\"2025-08-11\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-11 06:46:50'), -(435, 'ADD_ACCUMULATE', 520, NULL, '{\"report_date\":\"2025-08-11\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-11 06:46:50'), -(436, 'ADD_ACCUMULATE', 521, NULL, '{\"report_date\":\"2025-08-11\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-11 06:46:50'), -(437, 'ADD_ACCUMULATE', 522, NULL, '{\"report_date\":\"2025-08-11\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-11 06:46:50'), -(438, 'ADD_ACCUMULATE', 523, NULL, '{\"report_date\":\"2025-08-12\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-12 06:47:24'), -(439, 'ADD_ACCUMULATE', 524, NULL, '{\"report_date\":\"2025-08-12\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-12 06:47:24'), -(440, 'ADD_ACCUMULATE', 525, NULL, '{\"report_date\":\"2025-08-12\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-12 06:47:24'), -(441, 'ADD_ACCUMULATE', 526, NULL, '{\"report_date\":\"2025-08-12\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-12 06:47:24'), -(442, 'ADD_ACCUMULATE', 527, NULL, '{\"report_date\":\"2025-08-12\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-12 06:47:24'), -(443, 'ADD_ACCUMULATE', 528, NULL, '{\"report_date\":\"2025-08-12\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-12 06:47:24'), -(444, 'ADD_ACCUMULATE', 529, NULL, '{\"report_date\":\"2025-08-12\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-12 06:47:24'), -(445, 'ADD_ACCUMULATE', 530, NULL, '{\"report_date\":\"2025-08-12\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-12 06:47:24'), -(446, 'ADD_ACCUMULATE', 531, NULL, '{\"report_date\":\"2025-08-13\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-13 06:31:32'), -(447, 'ADD_ACCUMULATE', 532, NULL, '{\"report_date\":\"2025-08-13\",\"worker_id\":2,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-13 06:36:13'), -(448, 'ADD_ACCUMULATE', 534, NULL, '{\"report_date\":\"2025-08-13\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-13 06:36:48'), -(449, 'ADD_ACCUMULATE', 535, NULL, '{\"report_date\":\"2025-08-13\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-13 06:36:48'), -(450, 'ADD_ACCUMULATE', 536, NULL, '{\"report_date\":\"2025-08-13\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-13 06:36:48'), -(451, 'ADD_ACCUMULATE', 537, NULL, '{\"report_date\":\"2025-08-13\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-13 06:36:48'), -(452, 'ADD_ACCUMULATE', 538, NULL, '{\"report_date\":\"2025-08-13\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-13 06:36:48'), -(453, 'ADD_ACCUMULATE', 539, NULL, '{\"report_date\":\"2025-08-13\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-13 06:36:48'), -(454, 'ADD_ACCUMULATE', 540, NULL, '{\"report_date\":\"2025-08-13\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-13 06:36:48'), -(455, 'ADD_ACCUMULATE', 541, NULL, '{\"report_date\":\"2025-08-13\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-13 06:37:19'), -(456, 'ADD_ACCUMULATE', 542, NULL, '{\"report_date\":\"2025-08-14\",\"worker_id\":1,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-14 06:35:27'), -(457, 'ADD_ACCUMULATE', 544, NULL, '{\"report_date\":\"2025-08-14\",\"worker_id\":10,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-14 06:39:03'), -(458, 'ADD_ACCUMULATE', 546, NULL, '{\"report_date\":\"2025-08-14\",\"worker_id\":2,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-14 06:39:44'), -(459, 'ADD_ACCUMULATE', 548, NULL, '{\"report_date\":\"2025-08-14\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-14 06:40:10'), -(460, 'ADD_ACCUMULATE', 549, NULL, '{\"report_date\":\"2025-08-14\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-14 06:40:10'), -(461, 'ADD_ACCUMULATE', 550, NULL, '{\"report_date\":\"2025-08-14\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-14 06:40:10'), -(462, 'ADD_ACCUMULATE', 551, NULL, '{\"report_date\":\"2025-08-14\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-14 06:40:10'), -(463, 'ADD_ACCUMULATE', 552, NULL, '{\"report_date\":\"2025-08-14\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-14 06:40:10'), -(464, 'ADD_ACCUMULATE', 553, NULL, '{\"report_date\":\"2025-08-14\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-14 06:40:10'), -(465, 'ADD_ACCUMULATE', 554, NULL, '{\"report_date\":\"2025-08-18\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-18 06:21:36'), -(466, 'ADD_ACCUMULATE', 555, NULL, '{\"report_date\":\"2025-08-18\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-18 06:21:36'), -(467, 'ADD_ACCUMULATE', 556, NULL, '{\"report_date\":\"2025-08-18\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-18 06:22:01'), -(468, 'ADD_ACCUMULATE', 557, NULL, '{\"report_date\":\"2025-08-18\",\"worker_id\":10,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-18 06:22:53'), -(469, 'ADD_ACCUMULATE', 559, NULL, '{\"report_date\":\"2025-08-18\",\"worker_id\":9,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-18 06:23:34'), -(470, 'ADD_ACCUMULATE', 561, NULL, '{\"report_date\":\"2025-08-18\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"4.00\",\"grand_total\":4,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"4.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-18 06:41:24'), -(471, 'ADD_ACCUMULATE', 562, NULL, '{\"report_date\":\"2025-08-18\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"4.00\",\"grand_total\":4,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"4.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-18 06:41:24'), -(472, 'ADD_ACCUMULATE', 563, NULL, '{\"report_date\":\"2025-08-18\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"4.00\",\"grand_total\":4,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"4.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-18 06:41:24'), -(473, 'ADD_ACCUMULATE', 564, NULL, '{\"report_date\":\"2025-08-18\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-18 06:43:10'), -(474, 'ADD_ACCUMULATE', 565, NULL, '{\"report_date\":\"2025-08-18\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-18 06:43:10'), -(475, 'ADD_ACCUMULATE', 566, NULL, '{\"report_date\":\"2025-08-18\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-18 06:43:10'), -(476, 'ADD_ACCUMULATE', 567, NULL, '{\"report_date\":\"2025-08-18\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-08-18 06:43:35'), -(477, 'ADD_ACCUMULATE', 568, NULL, '{\"report_date\":\"2025-08-18\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-08-18 06:43:35'), -(478, 'ADD_ACCUMULATE', 569, NULL, '{\"report_date\":\"2025-08-19\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":6,\"my_total\":\"6.00\",\"grand_total\":6,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"6.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-19 08:02:49'), -(479, 'ADD_ACCUMULATE', 570, NULL, '{\"report_date\":\"2025-08-19\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-19 08:03:30'), -(480, 'ADD_ACCUMULATE', 571, NULL, '{\"report_date\":\"2025-08-19\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-19 08:03:30'), -(481, 'ADD_ACCUMULATE', 572, NULL, '{\"report_date\":\"2025-08-19\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-19 08:03:30'), -(482, 'ADD_ACCUMULATE', 573, NULL, '{\"report_date\":\"2025-08-19\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-19 08:03:30'), -(483, 'ADD_ACCUMULATE', 574, NULL, '{\"report_date\":\"2025-08-19\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-19 08:04:05'), -(484, 'ADD_ACCUMULATE', 575, NULL, '{\"report_date\":\"2025-08-19\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-19 08:04:05'), -(485, 'ADD_ACCUMULATE', 576, NULL, '{\"report_date\":\"2025-08-19\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-19 08:04:05'), -(486, 'ADD_ACCUMULATE', 577, NULL, '{\"report_date\":\"2025-08-19\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-19 08:04:05'), -(487, 'ADD_ACCUMULATE', 578, NULL, '{\"report_date\":\"2025-08-19\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-19 08:04:05'), -(488, 'ADD_ACCUMULATE', 579, NULL, '{\"report_date\":\"2025-08-19\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":20,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"},{\"name\":\"반치원\",\"hours\":\"10.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-08-19 08:36:51'), -(489, 'ADD_ACCUMULATE', 580, NULL, '{\"report_date\":\"2025-08-19\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":20,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"},{\"name\":\"반치원\",\"hours\":\"10.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-08-19 08:36:51'), -(490, 'ADD_ACCUMULATE', 581, NULL, '{\"report_date\":\"2025-08-19\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":20,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"},{\"name\":\"반치원\",\"hours\":\"10.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-08-19 08:36:51'), -(491, 'ADD_ACCUMULATE', 582, NULL, '{\"report_date\":\"2025-08-20\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-20 06:19:36'), -(492, 'ADD_ACCUMULATE', 583, NULL, '{\"report_date\":\"2025-08-20\",\"worker_id\":5,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-20 06:21:28'), -(493, 'ADD_ACCUMULATE', 585, NULL, '{\"report_date\":\"2025-08-20\",\"worker_id\":4,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-20 06:21:28'), -(494, 'ADD_ACCUMULATE', 587, NULL, '{\"report_date\":\"2025-08-20\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"4.00\",\"grand_total\":4,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"4.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-20 06:43:46'), -(495, 'ADD_ACCUMULATE', 588, NULL, '{\"report_date\":\"2025-08-20\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-20 06:44:23'), -(496, 'ADD_ACCUMULATE', 589, NULL, '{\"report_date\":\"2025-08-20\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-20 06:44:23'), -(497, 'ADD_ACCUMULATE', 590, NULL, '{\"report_date\":\"2025-08-20\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-20 06:44:23'), -(498, 'ADD_ACCUMULATE', 591, NULL, '{\"report_date\":\"2025-08-20\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-20 06:44:24'), -(499, 'ADD_ACCUMULATE', 592, NULL, '{\"report_date\":\"2025-08-20\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-20 06:44:24'), -(500, 'ADD_ACCUMULATE', 593, NULL, '{\"report_date\":\"2025-08-20\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-20 06:44:24'), -(501, 'ADD_ACCUMULATE', 594, NULL, '{\"report_date\":\"2025-08-20\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":16,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"},{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-08-20 06:44:26'), -(502, 'ADD_ACCUMULATE', 595, NULL, '{\"report_date\":\"2025-08-20\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":16,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"},{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-08-20 06:44:26'), -(503, 'ADD_ACCUMULATE', 596, NULL, '{\"report_date\":\"2025-08-21\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-21 06:30:36'), -(504, 'ADD_ACCUMULATE', 597, NULL, '{\"report_date\":\"2025-08-21\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-21 06:30:36'), -(505, 'ADD_ACCUMULATE', 598, NULL, '{\"report_date\":\"2025-08-21\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":16,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"},{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-21 07:50:38'), -(506, 'ADD_ACCUMULATE', 599, NULL, '{\"report_date\":\"2025-08-21\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":16,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"},{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-21 07:50:38'), -(507, 'ADD_ACCUMULATE', 600, NULL, '{\"report_date\":\"2025-08-21\",\"worker_id\":10,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-21 07:51:23'), -(508, 'ADD_ACCUMULATE', 602, NULL, '{\"report_date\":\"2025-08-21\",\"worker_id\":9,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-21 07:51:23'), -(509, 'ADD_ACCUMULATE', 604, NULL, '{\"report_date\":\"2025-08-21\",\"worker_id\":6,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-21 07:51:23'), -(510, 'ADD_ACCUMULATE', 606, NULL, '{\"report_date\":\"2025-08-21\",\"worker_id\":3,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-21 07:51:23'), -(511, 'ADD_ACCUMULATE', 608, NULL, '{\"report_date\":\"2025-08-21\",\"worker_id\":2,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-21 07:54:46'), -(512, 'ADD_ACCUMULATE', 610, NULL, '{\"report_date\":\"2025-08-21\",\"worker_id\":8,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-21 07:55:25'), -(513, 'ADD_ACCUMULATE', 612, NULL, '{\"report_date\":\"2025-08-21\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":20,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"},{\"name\":\"반치원\",\"hours\":\"10.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-08-21 08:24:50'), -(514, 'ADD_ACCUMULATE', 613, NULL, '{\"report_date\":\"2025-08-21\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":20,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"},{\"name\":\"반치원\",\"hours\":\"10.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-08-21 08:24:50'), -(515, 'ADD_ACCUMULATE', 614, NULL, '{\"report_date\":\"2025-08-22\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-22 06:21:15'), -(516, 'ADD_ACCUMULATE', 615, NULL, '{\"report_date\":\"2025-08-22\",\"worker_id\":8,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-22 06:23:12'), -(517, 'ADD_ACCUMULATE', 617, NULL, '{\"report_date\":\"2025-08-22\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-22 06:23:55'), -(518, 'ADD_ACCUMULATE', 618, NULL, '{\"report_date\":\"2025-08-22\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"4.00\",\"grand_total\":4,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"4.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-22 06:27:43'), -(519, 'ADD_ACCUMULATE', 619, NULL, '{\"report_date\":\"2025-08-22\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-22 06:28:15'); -INSERT INTO `work_report_audit_log` (`log_id`, `action`, `report_id`, `old_values`, `new_values`, `changed_by`, `change_reason`, `ip_address`, `user_agent`, `created_at`) VALUES -(520, 'ADD_ACCUMULATE', 620, NULL, '{\"report_date\":\"2025-08-22\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-22 06:28:15'), -(521, 'ADD_ACCUMULATE', 621, NULL, '{\"report_date\":\"2025-08-22\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-22 06:28:15'), -(522, 'ADD_ACCUMULATE', 622, NULL, '{\"report_date\":\"2025-08-22\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-22 06:28:15'), -(523, 'ADD_ACCUMULATE', 623, NULL, '{\"report_date\":\"2025-08-22\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-22 06:28:15'), -(524, 'ADD_ACCUMULATE', 624, NULL, '{\"report_date\":\"2025-08-22\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-22 06:28:15'), -(525, 'ADD_ACCUMULATE', 625, NULL, '{\"report_date\":\"2025-08-23\",\"worker_id\":4,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-23 04:57:02'), -(526, 'ADD_ACCUMULATE', 627, NULL, '{\"report_date\":\"2025-08-23\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-23 04:57:25'), -(527, 'ADD_ACCUMULATE', 628, NULL, '{\"report_date\":\"2025-08-23\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-23 04:57:54'), -(528, 'ADD_ACCUMULATE', 629, NULL, '{\"report_date\":\"2025-08-23\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-23 04:57:54'), -(529, 'ADD_ACCUMULATE', 630, NULL, '{\"report_date\":\"2025-08-23\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-23 04:57:54'), -(530, 'ADD_ACCUMULATE', 631, NULL, '{\"report_date\":\"2025-08-23\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-23 04:57:54'), -(531, 'ADD_ACCUMULATE', 632, NULL, '{\"report_date\":\"2025-08-23\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-23 04:57:54'), -(532, 'ADD_ACCUMULATE', 633, NULL, '{\"report_date\":\"2025-08-23\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-23 04:57:54'), -(533, 'ADD_ACCUMULATE', 634, NULL, '{\"report_date\":\"2025-08-23\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-23 04:57:54'), -(534, 'ADD_ACCUMULATE', 635, NULL, '{\"report_date\":\"2025-08-25\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-25 06:48:34'), -(535, 'ADD_ACCUMULATE', 636, NULL, '{\"report_date\":\"2025-08-25\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-25 06:48:34'), -(536, 'ADD_ACCUMULATE', 637, NULL, '{\"report_date\":\"2025-08-25\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-25 06:48:34'), -(537, 'ADD_ACCUMULATE', 638, NULL, '{\"report_date\":\"2025-08-25\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-25 06:48:34'), -(538, 'ADD_ACCUMULATE', 639, NULL, '{\"report_date\":\"2025-08-25\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-25 06:48:34'), -(539, 'ADD_ACCUMULATE', 640, NULL, '{\"report_date\":\"2025-08-25\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-25 06:48:34'), -(540, 'ADD_ACCUMULATE', 641, NULL, '{\"report_date\":\"2025-08-25\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-25 06:48:34'), -(541, 'ADD_ACCUMULATE', 642, NULL, '{\"report_date\":\"2025-08-25\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-25 06:48:34'), -(542, 'ADD_ACCUMULATE', 643, NULL, '{\"report_date\":\"2025-08-25\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-25 06:48:34'), -(543, 'ADD_ACCUMULATE', 644, NULL, '{\"report_date\":\"2025-08-25\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-25 06:48:34'), -(544, 'ADD_ACCUMULATE', 645, NULL, '{\"report_date\":\"2025-08-25\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":16,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"},{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-08-25 06:49:16'), -(545, 'ADD_ACCUMULATE', 646, NULL, '{\"report_date\":\"2025-08-25\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":16,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"},{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-08-25 06:49:17'), -(546, 'ADD_ACCUMULATE', 647, NULL, '{\"report_date\":\"2025-08-26\",\"worker_id\":4,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-26 07:28:03'), -(547, 'ADD_ACCUMULATE', 649, NULL, '{\"report_date\":\"2025-08-26\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-26 07:28:35'), -(548, 'ADD_ACCUMULATE', 650, NULL, '{\"report_date\":\"2025-08-26\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-26 07:29:02'), -(549, 'ADD_ACCUMULATE', 651, NULL, '{\"report_date\":\"2025-08-26\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-26 07:29:02'), -(550, 'ADD_ACCUMULATE', 652, NULL, '{\"report_date\":\"2025-08-26\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-26 07:29:02'), -(551, 'ADD_ACCUMULATE', 653, NULL, '{\"report_date\":\"2025-08-26\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-26 07:29:02'), -(552, 'ADD_ACCUMULATE', 654, NULL, '{\"report_date\":\"2025-08-26\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-26 07:29:02'), -(553, 'ADD_ACCUMULATE', 655, NULL, '{\"report_date\":\"2025-08-26\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-26 07:29:02'), -(554, 'ADD_ACCUMULATE', 656, NULL, '{\"report_date\":\"2025-08-26\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-26 07:29:02'), -(555, 'ADD_ACCUMULATE', 657, NULL, '{\"report_date\":\"2025-08-26\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-26 07:29:03'), -(556, 'ADD_ACCUMULATE', 658, NULL, '{\"report_date\":\"2025-08-26\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":20,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"},{\"name\":\"반치원\",\"hours\":\"10.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-08-26 08:22:12'), -(557, 'ADD_ACCUMULATE', 659, NULL, '{\"report_date\":\"2025-08-26\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":20,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"},{\"name\":\"반치원\",\"hours\":\"10.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-08-26 08:22:12'), -(558, 'ADD_ACCUMULATE', 660, NULL, '{\"report_date\":\"2025-08-26\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":20,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"},{\"name\":\"반치원\",\"hours\":\"10.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-08-26 08:22:12'), -(559, 'ADD_ACCUMULATE', 661, NULL, '{\"report_date\":\"2025-08-27\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-27 06:44:47'), -(560, 'ADD_ACCUMULATE', 662, NULL, '{\"report_date\":\"2025-08-27\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-27 06:44:47'), -(561, 'ADD_ACCUMULATE', 663, NULL, '{\"report_date\":\"2025-08-27\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-27 06:44:47'), -(562, 'ADD_ACCUMULATE', 664, NULL, '{\"report_date\":\"2025-08-27\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-27 06:44:47'), -(563, 'ADD_ACCUMULATE', 665, NULL, '{\"report_date\":\"2025-08-27\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-27 06:44:47'), -(564, 'ADD_ACCUMULATE', 666, NULL, '{\"report_date\":\"2025-08-27\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-27 06:44:47'), -(565, 'ADD_ACCUMULATE', 667, NULL, '{\"report_date\":\"2025-08-27\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-27 06:44:47'), -(566, 'ADD_ACCUMULATE', 668, NULL, '{\"report_date\":\"2025-08-27\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-27 06:44:48'), -(567, 'ADD_ACCUMULATE', 669, NULL, '{\"report_date\":\"2025-08-27\",\"worker_id\":2,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-27 06:45:32'), -(568, 'ADD_ACCUMULATE', 671, NULL, '{\"report_date\":\"2025-08-27\",\"worker_id\":8,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-27 06:45:32'), -(569, 'ADD_ACCUMULATE', 673, NULL, '{\"report_date\":\"2025-08-28\",\"worker_id\":10,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"10.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-08-28 08:31:42'), -(570, 'ADD_ACCUMULATE', 675, NULL, '{\"report_date\":\"2025-08-28\",\"worker_id\":5,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"10.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-08-28 08:31:42'), -(571, 'ADD_ACCUMULATE', 677, NULL, '{\"report_date\":\"2025-08-28\",\"worker_id\":6,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"10.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-08-28 08:31:42'), -(572, 'ADD_ACCUMULATE', 679, NULL, '{\"report_date\":\"2025-08-28\",\"worker_id\":3,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"10.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-08-28 08:31:42'), -(573, 'ADD_ACCUMULATE', 681, NULL, '{\"report_date\":\"2025-08-28\",\"worker_id\":4,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-28 08:37:46'), -(574, 'ADD_ACCUMULATE', 683, NULL, '{\"report_date\":\"2025-08-28\",\"worker_id\":8,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-28 08:38:15'), -(575, 'ADD_ACCUMULATE', 685, NULL, '{\"report_date\":\"2025-08-28\",\"worker_id\":2,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-28 08:38:50'), -(576, 'ADD_ACCUMULATE', 687, NULL, '{\"report_date\":\"2025-08-28\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-28 08:39:24'), -(577, 'ADD_ACCUMULATE', 688, NULL, '{\"report_date\":\"2025-08-28\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":18,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"},{\"name\":\"반치원\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-28 08:40:00'), -(578, 'ADD_ACCUMULATE', 689, NULL, '{\"report_date\":\"2025-08-28\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-28 08:40:00'), -(579, 'ADD_ACCUMULATE', 690, NULL, '{\"report_date\":\"2025-08-28\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-28 08:40:00'), -(580, 'ADD_ACCUMULATE', 691, NULL, '{\"report_date\":\"2025-08-28\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":18,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"},{\"name\":\"반치원\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-28 08:40:00'), -(581, 'ADD_ACCUMULATE', 692, NULL, '{\"report_date\":\"2025-08-28\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":18,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"},{\"name\":\"반치원\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-28 08:40:00'), -(582, 'ADD_ACCUMULATE', 693, NULL, '{\"report_date\":\"2025-08-28\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":18,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"},{\"name\":\"반치원\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-28 08:40:00'), -(583, 'ADD_ACCUMULATE', 694, NULL, '{\"report_date\":\"2025-08-28\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":2,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-28 08:44:56'), -(584, 'ADD_ACCUMULATE', 695, NULL, '{\"report_date\":\"2025-08-28\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":2,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-28 08:44:56'), -(585, 'ADD_ACCUMULATE', 696, NULL, '{\"report_date\":\"2025-08-28\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":2,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-28 08:44:56'), -(586, 'ADD_ACCUMULATE', 697, NULL, '{\"report_date\":\"2025-08-28\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":2,\"my_total\":\"10.00\",\"grand_total\":20,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"},{\"name\":\"반치원\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-28 08:45:19'), -(587, 'ADD_ACCUMULATE', 698, NULL, '{\"report_date\":\"2025-08-28\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":2,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-28 08:45:19'), -(588, 'ADD_ACCUMULATE', 699, NULL, '{\"report_date\":\"2025-08-28\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":2,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-28 08:45:19'), -(589, 'ADD_ACCUMULATE', 700, NULL, '{\"report_date\":\"2025-08-28\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":2,\"my_total\":\"10.00\",\"grand_total\":20,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"},{\"name\":\"반치원\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-28 08:45:19'), -(590, 'ADD_ACCUMULATE', 701, NULL, '{\"report_date\":\"2025-08-28\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":2,\"my_total\":\"10.00\",\"grand_total\":20,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"},{\"name\":\"반치원\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-28 08:45:19'), -(591, 'ADD_ACCUMULATE', 702, NULL, '{\"report_date\":\"2025-08-28\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":2,\"my_total\":\"10.00\",\"grand_total\":20,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"},{\"name\":\"반치원\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-28 08:45:19'), -(592, 'DELETE', 693, '{\"id\":693,\"report_date\":\"2025-08-28T00:00:00.000Z\",\"worker_id\":3,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":2,\"error_type_id\":4,\"work_hours\":\"8.00\",\"created_at\":\"2025-08-28T08:40:00.000Z\",\"updated_at\":\"2025-08-28T08:40:00.000Z\",\"created_by\":5,\"updated_by\":null}', NULL, 5, 'Manual deletion', NULL, NULL, '2025-08-28 08:46:05'), -(593, 'DELETE', 702, '{\"id\":702,\"report_date\":\"2025-08-28T00:00:00.000Z\",\"worker_id\":3,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":1,\"error_type_id\":null,\"work_hours\":\"2.00\",\"created_at\":\"2025-08-28T08:45:19.000Z\",\"updated_at\":\"2025-08-28T08:45:19.000Z\",\"created_by\":5,\"updated_by\":null}', NULL, 5, 'Manual deletion', NULL, NULL, '2025-08-28 08:46:16'), -(594, 'DELETE', 697, '{\"id\":697,\"report_date\":\"2025-08-28T00:00:00.000Z\",\"worker_id\":10,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":1,\"error_type_id\":null,\"work_hours\":\"2.00\",\"created_at\":\"2025-08-28T08:45:19.000Z\",\"updated_at\":\"2025-08-28T08:45:19.000Z\",\"created_by\":5,\"updated_by\":null}', NULL, 5, 'Manual deletion', NULL, NULL, '2025-08-28 08:46:26'), -(595, 'DELETE', 688, '{\"id\":688,\"report_date\":\"2025-08-28T00:00:00.000Z\",\"worker_id\":10,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":2,\"error_type_id\":4,\"work_hours\":\"8.00\",\"created_at\":\"2025-08-28T08:40:00.000Z\",\"updated_at\":\"2025-08-28T08:40:00.000Z\",\"created_by\":5,\"updated_by\":null}', NULL, 5, 'Manual deletion', NULL, NULL, '2025-08-28 08:46:32'), -(596, 'DELETE', 691, '{\"id\":691,\"report_date\":\"2025-08-28T00:00:00.000Z\",\"worker_id\":6,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":2,\"error_type_id\":4,\"work_hours\":\"8.00\",\"created_at\":\"2025-08-28T08:40:00.000Z\",\"updated_at\":\"2025-08-28T08:40:00.000Z\",\"created_by\":5,\"updated_by\":null}', NULL, 5, 'Manual deletion', NULL, NULL, '2025-08-28 08:46:41'), -(597, 'DELETE', 700, '{\"id\":700,\"report_date\":\"2025-08-28T00:00:00.000Z\",\"worker_id\":6,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":1,\"error_type_id\":null,\"work_hours\":\"2.00\",\"created_at\":\"2025-08-28T08:45:19.000Z\",\"updated_at\":\"2025-08-28T08:45:19.000Z\",\"created_by\":5,\"updated_by\":null}', NULL, 5, 'Manual deletion', NULL, NULL, '2025-08-28 08:46:48'), -(598, 'DELETE', 692, '{\"id\":692,\"report_date\":\"2025-08-28T00:00:00.000Z\",\"worker_id\":5,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":2,\"error_type_id\":4,\"work_hours\":\"8.00\",\"created_at\":\"2025-08-28T08:40:00.000Z\",\"updated_at\":\"2025-08-28T08:40:00.000Z\",\"created_by\":5,\"updated_by\":null}', NULL, 5, 'Manual deletion', NULL, NULL, '2025-08-28 08:46:56'), -(599, 'DELETE', 701, '{\"id\":701,\"report_date\":\"2025-08-28T00:00:00.000Z\",\"worker_id\":5,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":1,\"error_type_id\":null,\"work_hours\":\"2.00\",\"created_at\":\"2025-08-28T08:45:19.000Z\",\"updated_at\":\"2025-08-28T08:45:19.000Z\",\"created_by\":5,\"updated_by\":null}', NULL, 5, 'Manual deletion', NULL, NULL, '2025-08-28 08:47:01'), -(600, 'ADD_ACCUMULATE', 703, NULL, '{\"report_date\":\"2025-08-29\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-29 06:47:02'), -(601, 'ADD_ACCUMULATE', 704, NULL, '{\"report_date\":\"2025-08-29\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-29 06:47:02'), -(602, 'ADD_ACCUMULATE', 705, NULL, '{\"report_date\":\"2025-08-29\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-29 06:47:02'), -(603, 'ADD_ACCUMULATE', 706, NULL, '{\"report_date\":\"2025-08-29\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-29 06:47:02'), -(604, 'ADD_ACCUMULATE', 707, NULL, '{\"report_date\":\"2025-08-29\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-29 06:47:02'), -(605, 'ADD_ACCUMULATE', 708, NULL, '{\"report_date\":\"2025-08-29\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-29 06:47:02'), -(606, 'ADD_ACCUMULATE', 709, NULL, '{\"report_date\":\"2025-08-29\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-29 06:47:02'), -(607, 'ADD_ACCUMULATE', 710, NULL, '{\"report_date\":\"2025-08-29\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-29 06:47:02'), -(608, 'ADD_ACCUMULATE', 711, NULL, '{\"report_date\":\"2025-08-29\",\"worker_id\":10,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":16,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"},{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-08-29 06:47:35'), -(609, 'ADD_ACCUMULATE', 713, NULL, '{\"report_date\":\"2025-08-29\",\"worker_id\":5,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":16,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"},{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-08-29 06:47:35'), -(610, 'ADD_ACCUMULATE', 715, NULL, '{\"report_date\":\"2025-08-29\",\"worker_id\":3,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":16,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"},{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-08-29 06:47:35'), -(611, 'ADD_ACCUMULATE', 717, NULL, '{\"report_date\":\"2025-08-29\",\"worker_id\":6,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":16,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"},{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-08-29 06:47:35'), -(612, 'DELETE', 705, '{\"id\":705,\"report_date\":\"2025-08-29T00:00:00.000Z\",\"worker_id\":8,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":2,\"error_type_id\":5,\"work_hours\":\"8.00\",\"created_at\":\"2025-08-29T06:47:02.000Z\",\"updated_at\":\"2025-08-29T06:47:02.000Z\",\"created_by\":3,\"updated_by\":null}', NULL, 5, 'Manual deletion', NULL, NULL, '2025-08-29 21:55:28'), -(613, 'ADD_ACCUMULATE', 719, NULL, '{\"report_date\":\"2025-08-29\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-29 21:55:56'), -(614, 'ADD_ACCUMULATE', 720, NULL, '{\"report_date\":\"2025-08-29\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-29 21:55:56'), -(615, 'ADD_ACCUMULATE', 721, NULL, '{\"report_date\":\"2025-08-29\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-29 21:55:56'), -(616, 'DELETE', 711, '{\"id\":711,\"report_date\":\"2025-08-29T00:00:00.000Z\",\"worker_id\":10,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":1,\"error_type_id\":null,\"work_hours\":\"6.00\",\"created_at\":\"2025-08-29T06:47:35.000Z\",\"updated_at\":\"2025-08-29T06:47:35.000Z\",\"created_by\":6,\"updated_by\":null}', NULL, 5, 'Manual deletion', NULL, NULL, '2025-08-29 21:56:26'), -(617, 'DELETE', 712, '{\"id\":712,\"report_date\":\"2025-08-29T00:00:00.000Z\",\"worker_id\":10,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":2,\"error_type_id\":1,\"work_hours\":\"2.00\",\"created_at\":\"2025-08-29T06:47:35.000Z\",\"updated_at\":\"2025-08-29T06:47:35.000Z\",\"created_by\":6,\"updated_by\":null}', NULL, 5, 'Manual deletion', NULL, NULL, '2025-08-29 21:56:43'), -(618, 'DELETE', 707, '{\"id\":707,\"report_date\":\"2025-08-29T00:00:00.000Z\",\"worker_id\":6,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":2,\"error_type_id\":5,\"work_hours\":\"8.00\",\"created_at\":\"2025-08-29T06:47:02.000Z\",\"updated_at\":\"2025-08-29T06:47:02.000Z\",\"created_by\":3,\"updated_by\":null}', NULL, 5, 'Manual deletion', NULL, NULL, '2025-08-29 21:57:03'), -(619, 'DELETE', 708, '{\"id\":708,\"report_date\":\"2025-08-29T00:00:00.000Z\",\"worker_id\":5,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":2,\"error_type_id\":5,\"work_hours\":\"8.00\",\"created_at\":\"2025-08-29T06:47:02.000Z\",\"updated_at\":\"2025-08-29T06:47:02.000Z\",\"created_by\":3,\"updated_by\":null}', NULL, 5, 'Manual deletion', NULL, NULL, '2025-08-29 21:57:16'), -(620, 'DELETE', 709, '{\"id\":709,\"report_date\":\"2025-08-29T00:00:00.000Z\",\"worker_id\":3,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":2,\"error_type_id\":5,\"work_hours\":\"8.00\",\"created_at\":\"2025-08-29T06:47:02.000Z\",\"updated_at\":\"2025-08-29T06:47:02.000Z\",\"created_by\":3,\"updated_by\":null}', NULL, 5, 'Manual deletion', NULL, NULL, '2025-08-29 21:57:26'), -(621, 'ADD_ACCUMULATE', 722, NULL, '{\"report_date\":\"2025-08-30\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-30 05:12:03'), -(622, 'ADD_ACCUMULATE', 723, NULL, '{\"report_date\":\"2025-08-30\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-30 05:12:03'), -(623, 'ADD_ACCUMULATE', 724, NULL, '{\"report_date\":\"2025-08-30\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-08-30 05:12:03'), -(624, 'ADD_ACCUMULATE', 725, NULL, '{\"report_date\":\"2025-08-30\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-30 05:36:49'), -(625, 'ADD_ACCUMULATE', 726, NULL, '{\"report_date\":\"2025-08-30\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-30 05:36:49'), -(626, 'ADD_ACCUMULATE', 727, NULL, '{\"report_date\":\"2025-08-30\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-30 05:36:49'), -(627, 'ADD_ACCUMULATE', 728, NULL, '{\"report_date\":\"2025-08-30\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-30 05:36:49'), -(628, 'ADD_ACCUMULATE', 729, NULL, '{\"report_date\":\"2025-08-30\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-30 05:36:49'), -(629, 'ADD_ACCUMULATE', 730, NULL, '{\"report_date\":\"2025-08-30\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-30 05:36:49'), -(630, 'ADD_ACCUMULATE', 731, NULL, '{\"report_date\":\"2025-08-30\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-08-30 05:36:49'), -(631, 'ADD_ACCUMULATE', 732, NULL, '{\"report_date\":\"2025-09-01\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-01 06:18:28'), -(632, 'ADD_ACCUMULATE', 733, NULL, '{\"report_date\":\"2025-09-01\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-01 06:18:28'), -(633, 'ADD_ACCUMULATE', 734, NULL, '{\"report_date\":\"2025-09-01\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"4.00\",\"grand_total\":4,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"4.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-01 06:19:11'), -(634, 'ADD_ACCUMULATE', 735, NULL, '{\"report_date\":\"2025-09-01\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"4.00\",\"grand_total\":4,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"4.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-01 06:19:11'), -(635, 'ADD_ACCUMULATE', 736, NULL, '{\"report_date\":\"2025-09-01\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"4.00\",\"grand_total\":4,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"4.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-01 06:19:11'), -(636, 'ADD_ACCUMULATE', 737, NULL, '{\"report_date\":\"2025-09-01\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-01 06:19:35'), -(637, 'ADD_ACCUMULATE', 738, NULL, '{\"report_date\":\"2025-09-01\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-01 06:19:35'), -(638, 'ADD_ACCUMULATE', 739, NULL, '{\"report_date\":\"2025-09-01\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-01 06:19:35'), -(639, 'ADD_ACCUMULATE', 740, NULL, '{\"report_date\":\"2025-09-01\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-01 06:20:03'), -(640, 'DELETE', 650, '{\"id\":650,\"report_date\":\"2025-08-26T00:00:00.000Z\",\"worker_id\":10,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":1,\"error_type_id\":null,\"work_hours\":\"10.00\",\"created_at\":\"2025-08-26T07:29:02.000Z\",\"updated_at\":\"2025-08-26T07:29:02.000Z\",\"created_by\":5,\"updated_by\":null}', NULL, 3, 'Manual deletion', NULL, NULL, '2025-09-01 23:13:55'), -(641, 'DELETE', 654, '{\"id\":654,\"report_date\":\"2025-08-26T00:00:00.000Z\",\"worker_id\":6,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":1,\"error_type_id\":null,\"work_hours\":\"10.00\",\"created_at\":\"2025-08-26T07:29:02.000Z\",\"updated_at\":\"2025-08-26T07:29:02.000Z\",\"created_by\":5,\"updated_by\":null}', NULL, 3, 'Manual deletion', NULL, NULL, '2025-09-01 23:14:02'), -(642, 'DELETE', 656, '{\"id\":656,\"report_date\":\"2025-08-26T00:00:00.000Z\",\"worker_id\":3,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":1,\"error_type_id\":null,\"work_hours\":\"10.00\",\"created_at\":\"2025-08-26T07:29:02.000Z\",\"updated_at\":\"2025-08-26T07:29:02.000Z\",\"created_by\":5,\"updated_by\":null}', NULL, 3, 'Manual deletion', NULL, NULL, '2025-09-01 23:14:11'), -(643, 'DELETE', 572, '{\"id\":572,\"report_date\":\"2025-08-19T00:00:00.000Z\",\"worker_id\":7,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":1,\"error_type_id\":null,\"work_hours\":\"10.00\",\"created_at\":\"2025-08-19T08:03:30.000Z\",\"updated_at\":\"2025-08-19T08:03:30.000Z\",\"created_by\":5,\"updated_by\":null}', NULL, 3, 'Manual deletion', NULL, NULL, '2025-09-01 23:15:09'), -(644, 'DELETE', 571, '{\"id\":571,\"report_date\":\"2025-08-19T00:00:00.000Z\",\"worker_id\":6,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":1,\"error_type_id\":null,\"work_hours\":\"10.00\",\"created_at\":\"2025-08-19T08:03:30.000Z\",\"updated_at\":\"2025-08-19T08:03:30.000Z\",\"created_by\":5,\"updated_by\":null}', NULL, 3, 'Manual deletion', NULL, NULL, '2025-09-01 23:15:17'), -(645, 'DELETE', 570, '{\"id\":570,\"report_date\":\"2025-08-19T00:00:00.000Z\",\"worker_id\":3,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":1,\"error_type_id\":null,\"work_hours\":\"10.00\",\"created_at\":\"2025-08-19T08:03:30.000Z\",\"updated_at\":\"2025-08-19T08:03:30.000Z\",\"created_by\":5,\"updated_by\":null}', NULL, 3, 'Manual deletion', NULL, NULL, '2025-09-01 23:15:27'), -(646, 'DELETE', 599, '{\"id\":599,\"report_date\":\"2025-08-21T00:00:00.000Z\",\"worker_id\":7,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":1,\"error_type_id\":null,\"work_hours\":\"8.00\",\"created_at\":\"2025-08-21T07:50:38.000Z\",\"updated_at\":\"2025-08-21T07:50:38.000Z\",\"created_by\":5,\"updated_by\":null}', NULL, 3, 'Manual deletion', NULL, NULL, '2025-09-01 23:15:59'), -(647, 'DELETE', 604, '{\"id\":604,\"report_date\":\"2025-08-21T00:00:00.000Z\",\"worker_id\":6,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":1,\"error_type_id\":null,\"work_hours\":\"8.00\",\"created_at\":\"2025-08-21T07:51:23.000Z\",\"updated_at\":\"2025-08-21T07:51:23.000Z\",\"created_by\":5,\"updated_by\":null}', NULL, 3, 'Manual deletion', NULL, NULL, '2025-09-01 23:16:14'), -(648, 'DELETE', 605, '{\"id\":605,\"report_date\":\"2025-08-21T00:00:00.000Z\",\"worker_id\":6,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":1,\"error_type_id\":null,\"work_hours\":\"2.00\",\"created_at\":\"2025-08-21T07:51:23.000Z\",\"updated_at\":\"2025-08-21T07:51:23.000Z\",\"created_by\":5,\"updated_by\":null}', NULL, 3, 'Manual deletion', NULL, NULL, '2025-09-01 23:16:19'), -(649, 'DELETE', 606, '{\"id\":606,\"report_date\":\"2025-08-21T00:00:00.000Z\",\"worker_id\":3,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":1,\"error_type_id\":null,\"work_hours\":\"8.00\",\"created_at\":\"2025-08-21T07:51:23.000Z\",\"updated_at\":\"2025-08-21T07:51:23.000Z\",\"created_by\":5,\"updated_by\":null}', NULL, 3, 'Manual deletion', NULL, NULL, '2025-09-01 23:16:28'), -(650, 'DELETE', 607, '{\"id\":607,\"report_date\":\"2025-08-21T00:00:00.000Z\",\"worker_id\":3,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":1,\"error_type_id\":null,\"work_hours\":\"2.00\",\"created_at\":\"2025-08-21T07:51:23.000Z\",\"updated_at\":\"2025-08-21T07:51:23.000Z\",\"created_by\":5,\"updated_by\":null}', NULL, 3, 'Manual deletion', NULL, NULL, '2025-09-01 23:16:33'), -(651, 'DELETE', 598, '{\"id\":598,\"report_date\":\"2025-08-21T00:00:00.000Z\",\"worker_id\":1,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":1,\"error_type_id\":null,\"work_hours\":\"8.00\",\"created_at\":\"2025-08-21T07:50:38.000Z\",\"updated_at\":\"2025-08-21T07:50:38.000Z\",\"created_by\":5,\"updated_by\":null}', NULL, 3, 'Manual deletion', NULL, NULL, '2025-09-01 23:16:54'), -(652, 'ADD_ACCUMULATE', 741, NULL, '{\"report_date\":\"2025-08-21\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-01 23:18:03'), -(653, 'ADD_ACCUMULATE', 742, NULL, '{\"report_date\":\"2025-08-21\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-01 23:18:03'), -(654, 'DELETE', 588, '{\"id\":588,\"report_date\":\"2025-08-20T00:00:00.000Z\",\"worker_id\":10,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":1,\"error_type_id\":null,\"work_hours\":\"8.00\",\"created_at\":\"2025-08-20T06:44:23.000Z\",\"updated_at\":\"2025-08-20T06:44:23.000Z\",\"created_by\":3,\"updated_by\":null}', NULL, 3, 'Manual deletion', NULL, NULL, '2025-09-01 23:26:52'), -(655, 'DELETE', 592, '{\"id\":592,\"report_date\":\"2025-08-20T00:00:00.000Z\",\"worker_id\":3,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":1,\"error_type_id\":null,\"work_hours\":\"8.00\",\"created_at\":\"2025-08-20T06:44:24.000Z\",\"updated_at\":\"2025-08-20T06:44:24.000Z\",\"created_by\":3,\"updated_by\":null}', NULL, 3, 'Manual deletion', NULL, NULL, '2025-09-01 23:26:58'), -(656, 'DELETE', 639, '{\"id\":639,\"report_date\":\"2025-08-25T00:00:00.000Z\",\"worker_id\":6,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":1,\"error_type_id\":null,\"work_hours\":\"8.00\",\"created_at\":\"2025-08-25T06:48:34.000Z\",\"updated_at\":\"2025-08-25T06:48:34.000Z\",\"created_by\":3,\"updated_by\":null}', NULL, 3, 'Manual deletion', NULL, NULL, '2025-09-01 23:27:26'), -(657, 'DELETE', 642, '{\"id\":642,\"report_date\":\"2025-08-25T00:00:00.000Z\",\"worker_id\":3,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":1,\"error_type_id\":null,\"work_hours\":\"8.00\",\"created_at\":\"2025-08-25T06:48:34.000Z\",\"updated_at\":\"2025-08-25T06:48:34.000Z\",\"created_by\":3,\"updated_by\":null}', NULL, 3, 'Manual deletion', NULL, NULL, '2025-09-01 23:27:31'), -(658, 'ADD_ACCUMULATE', 743, NULL, '{\"report_date\":\"2025-09-02\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-02 07:34:20'), -(659, 'ADD_ACCUMULATE', 744, NULL, '{\"report_date\":\"2025-09-02\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-02 07:34:20'), -(660, 'DELETE_SINGLE', 744, '{\"worker_name\":\"이창호\",\"project_name\":\"효성화학 에틸렌 탱크 건설공사\",\"work_hours\":\"8.00\",\"report_date\":\"2025-09-02T00:00:00.000Z\"}', NULL, 3, '개별 항목 삭제', NULL, NULL, '2025-09-02 07:35:18'), -(661, 'DELETE_SINGLE', 743, '{\"worker_name\":\"최광욱\",\"project_name\":\"효성화학 에틸렌 탱크 건설공사\",\"work_hours\":\"8.00\",\"report_date\":\"2025-09-02T00:00:00.000Z\"}', NULL, 3, '개별 항목 삭제', NULL, NULL, '2025-09-02 07:35:21'), -(662, 'ADD_ACCUMULATE', 745, NULL, '{\"report_date\":\"2025-09-02\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":6,\"my_total\":\"6.00\",\"grand_total\":6,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"6.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-02 07:36:04'), -(663, 'ADD_ACCUMULATE', 746, NULL, '{\"report_date\":\"2025-09-02\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":6,\"my_total\":\"6.00\",\"grand_total\":6,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"6.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-02 07:36:04'), -(664, 'ADD_ACCUMULATE', 747, NULL, '{\"report_date\":\"2025-09-02\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":6,\"my_total\":\"6.00\",\"grand_total\":6,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"6.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-02 07:36:04'), -(665, 'ADD_ACCUMULATE', 748, NULL, '{\"report_date\":\"2025-09-02\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":6,\"my_total\":\"6.00\",\"grand_total\":6,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"6.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-02 07:36:04'), -(666, 'ADD_ACCUMULATE', 749, NULL, '{\"report_date\":\"2025-09-02\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":6,\"my_total\":\"6.00\",\"grand_total\":6,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"6.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-02 07:36:04'), -(667, 'ADD_ACCUMULATE', 750, NULL, '{\"report_date\":\"2025-09-02\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":6,\"my_total\":\"6.00\",\"grand_total\":6,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"6.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-02 07:36:04'), -(668, 'ADD_ACCUMULATE', 751, NULL, '{\"report_date\":\"2025-09-02\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-02 07:36:31'), -(669, 'ADD_ACCUMULATE', 752, NULL, '{\"report_date\":\"2025-09-02\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-02 07:36:31'), -(670, 'ADD_ACCUMULATE', 753, NULL, '{\"report_date\":\"2025-09-02\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-02 07:36:31'), -(671, 'ADD_ACCUMULATE', 754, NULL, '{\"report_date\":\"2025-09-02\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-02 07:36:31'), -(672, 'ADD_ACCUMULATE', 755, NULL, '{\"report_date\":\"2025-09-02\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-02 07:36:31'), -(673, 'ADD_ACCUMULATE', 756, NULL, '{\"report_date\":\"2025-09-02\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-02 07:36:31'), -(674, 'ADD_ACCUMULATE', 757, NULL, '{\"report_date\":\"2025-09-02\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-02 07:37:19'), -(675, 'ADD_ACCUMULATE', 758, NULL, '{\"report_date\":\"2025-09-02\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-02 07:37:19'), -(676, 'ADD_ACCUMULATE', 759, NULL, '{\"report_date\":\"2025-09-02\",\"worker_id\":2,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-02 08:16:14'), -(677, 'ADD_ACCUMULATE', 761, NULL, '{\"report_date\":\"2025-09-02\",\"worker_id\":4,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-02 08:16:14'), -(678, 'ADD_ACCUMULATE', 763, NULL, '{\"report_date\":\"2025-09-03\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-03 06:34:47'), -(679, 'ADD_ACCUMULATE', 764, NULL, '{\"report_date\":\"2025-09-03\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-03 06:34:47'); -INSERT INTO `work_report_audit_log` (`log_id`, `action`, `report_id`, `old_values`, `new_values`, `changed_by`, `change_reason`, `ip_address`, `user_agent`, `created_at`) VALUES -(680, 'ADD_ACCUMULATE', 765, NULL, '{\"report_date\":\"2025-09-03\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-03 06:34:48'), -(681, 'ADD_ACCUMULATE', 766, NULL, '{\"report_date\":\"2025-09-03\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-03 06:34:48'), -(682, 'ADD_ACCUMULATE', 767, NULL, '{\"report_date\":\"2025-09-03\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-03 06:34:48'), -(683, 'ADD_ACCUMULATE', 768, NULL, '{\"report_date\":\"2025-09-03\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-03 06:34:48'), -(684, 'ADD_ACCUMULATE', 769, NULL, '{\"report_date\":\"2025-09-03\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-03 06:34:48'), -(685, 'ADD_ACCUMULATE', 770, NULL, '{\"report_date\":\"2025-09-03\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-03 06:34:48'), -(686, 'ADD_ACCUMULATE', 771, NULL, '{\"report_date\":\"2025-09-03\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-03 06:44:18'), -(687, 'ADD_ACCUMULATE', 772, NULL, '{\"report_date\":\"2025-09-04\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-09-04 06:41:32'), -(688, 'ADD_ACCUMULATE', 773, NULL, '{\"report_date\":\"2025-09-04\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-09-04 06:41:32'), -(689, 'ADD_ACCUMULATE', 774, NULL, '{\"report_date\":\"2025-09-04\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-09-04 06:41:32'), -(690, 'ADD_ACCUMULATE', 775, NULL, '{\"report_date\":\"2025-09-04\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-09-04 06:41:32'), -(691, 'ADD_ACCUMULATE', 776, NULL, '{\"report_date\":\"2025-09-04\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-09-04 06:41:33'), -(692, 'ADD_ACCUMULATE', 777, NULL, '{\"report_date\":\"2025-09-04\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-09-04 06:41:33'), -(693, 'ADD_ACCUMULATE', 778, NULL, '{\"report_date\":\"2025-09-04\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-09-04 06:41:33'), -(694, 'ADD_ACCUMULATE', 779, NULL, '{\"report_date\":\"2025-09-04\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-09-04 06:41:33'), -(695, 'ADD_ACCUMULATE', 780, NULL, '{\"report_date\":\"2025-09-04\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-04 06:48:34'), -(696, 'ADD_ACCUMULATE', 781, NULL, '{\"report_date\":\"2025-09-04\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-04 06:48:34'), -(697, 'ADD_ACCUMULATE', 782, NULL, '{\"report_date\":\"2025-09-05\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-05 06:39:30'), -(698, 'ADD_ACCUMULATE', 783, NULL, '{\"report_date\":\"2025-09-05\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-05 06:39:30'), -(699, 'ADD_ACCUMULATE', 784, NULL, '{\"report_date\":\"2025-09-05\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-05 06:39:30'), -(700, 'ADD_ACCUMULATE', 785, NULL, '{\"report_date\":\"2025-09-05\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-05 06:39:31'), -(701, 'ADD_ACCUMULATE', 786, NULL, '{\"report_date\":\"2025-09-05\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-05 06:39:31'), -(702, 'ADD_ACCUMULATE', 787, NULL, '{\"report_date\":\"2025-09-05\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-05 06:39:31'), -(703, 'ADD_ACCUMULATE', 788, NULL, '{\"report_date\":\"2025-09-05\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-05 06:39:31'), -(704, 'ADD_ACCUMULATE', 789, NULL, '{\"report_date\":\"2025-09-05\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-05 22:09:55'), -(705, 'ADD_ACCUMULATE', 790, NULL, '{\"report_date\":\"2025-09-05\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-05 22:09:55'), -(706, 'ADD_ACCUMULATE', 791, NULL, '{\"report_date\":\"2025-09-05\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-05 22:09:55'), -(707, 'ADD_ACCUMULATE', 792, NULL, '{\"report_date\":\"2025-09-06\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-06 04:21:10'), -(708, 'ADD_ACCUMULATE', 793, NULL, '{\"report_date\":\"2025-09-06\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-06 04:21:10'), -(709, 'ADD_ACCUMULATE', 794, NULL, '{\"report_date\":\"2025-09-06\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-06 04:21:10'), -(710, 'ADD_ACCUMULATE', 795, NULL, '{\"report_date\":\"2025-09-06\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-06 05:28:18'), -(711, 'ADD_ACCUMULATE', 796, NULL, '{\"report_date\":\"2025-09-06\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-06 05:28:18'), -(712, 'ADD_ACCUMULATE', 797, NULL, '{\"report_date\":\"2025-09-06\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-06 05:28:18'), -(713, 'ADD_ACCUMULATE', 798, NULL, '{\"report_date\":\"2025-09-06\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-06 05:28:19'), -(714, 'ADD_ACCUMULATE', 799, NULL, '{\"report_date\":\"2025-09-06\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-06 05:28:19'), -(715, 'ADD_ACCUMULATE', 800, NULL, '{\"report_date\":\"2025-09-06\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-06 05:28:19'), -(716, 'ADD_ACCUMULATE', 801, NULL, '{\"report_date\":\"2025-09-06\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-06 05:28:19'), -(717, 'ADD_ACCUMULATE', 802, NULL, '{\"report_date\":\"2025-09-08\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-08 06:15:43'), -(718, 'ADD_ACCUMULATE', 803, NULL, '{\"report_date\":\"2025-09-08\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-08 06:15:43'), -(719, 'ADD_ACCUMULATE', 804, NULL, '{\"report_date\":\"2025-09-08\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-08 06:15:43'), -(720, 'ADD_ACCUMULATE', 805, NULL, '{\"report_date\":\"2025-09-08\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-08 06:15:43'), -(721, 'ADD_ACCUMULATE', 806, NULL, '{\"report_date\":\"2025-09-08\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-08 06:15:43'), -(722, 'ADD_ACCUMULATE', 807, NULL, '{\"report_date\":\"2025-09-08\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-08 06:15:43'), -(723, 'ADD_ACCUMULATE', 808, NULL, '{\"report_date\":\"2025-09-08\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-08 06:15:43'), -(724, 'ADD_ACCUMULATE', 809, NULL, '{\"report_date\":\"2025-09-08\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-08 06:47:37'), -(725, 'ADD_ACCUMULATE', 810, NULL, '{\"report_date\":\"2025-09-08\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-08 06:47:37'), -(726, 'ADD_ACCUMULATE', 811, NULL, '{\"report_date\":\"2025-09-08\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-08 06:47:37'), -(727, 'ADD_ACCUMULATE', 812, NULL, '{\"report_date\":\"2025-09-09\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-09 06:03:27'), -(728, 'ADD_ACCUMULATE', 813, NULL, '{\"report_date\":\"2025-09-09\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-09 06:03:27'), -(729, 'ADD_ACCUMULATE', 814, NULL, '{\"report_date\":\"2025-09-09\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-09 06:03:27'), -(730, 'ADD_ACCUMULATE', 815, NULL, '{\"report_date\":\"2025-09-09\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-09 06:03:27'), -(731, 'ADD_ACCUMULATE', 816, NULL, '{\"report_date\":\"2025-09-09\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-09 06:03:27'), -(732, 'ADD_ACCUMULATE', 817, NULL, '{\"report_date\":\"2025-09-09\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-09 06:03:27'), -(733, 'ADD_ACCUMULATE', 818, NULL, '{\"report_date\":\"2025-09-09\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-09 06:03:27'), -(734, 'ADD_ACCUMULATE', 819, NULL, '{\"report_date\":\"2025-09-09\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-09 06:44:29'), -(735, 'ADD_ACCUMULATE', 820, NULL, '{\"report_date\":\"2025-09-09\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-09 06:44:29'), -(736, 'ADD_ACCUMULATE', 821, NULL, '{\"report_date\":\"2025-09-09\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-09 06:44:29'), -(737, 'ADD_ACCUMULATE', 822, NULL, '{\"report_date\":\"2025-09-10\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-10 06:27:52'), -(738, 'ADD_ACCUMULATE', 823, NULL, '{\"report_date\":\"2025-09-10\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-10 06:27:52'), -(739, 'ADD_ACCUMULATE', 824, NULL, '{\"report_date\":\"2025-09-10\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-10 06:27:52'), -(740, 'ADD_ACCUMULATE', 825, NULL, '{\"report_date\":\"2025-09-10\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-10 06:27:52'), -(741, 'ADD_ACCUMULATE', 826, NULL, '{\"report_date\":\"2025-09-10\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-10 06:27:52'), -(742, 'ADD_ACCUMULATE', 827, NULL, '{\"report_date\":\"2025-09-10\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-10 06:27:52'), -(743, 'ADD_ACCUMULATE', 828, NULL, '{\"report_date\":\"2025-09-10\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-10 06:27:52'), -(744, 'ADD_ACCUMULATE', 829, NULL, '{\"report_date\":\"2025-09-10\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-10 06:48:43'), -(745, 'ADD_ACCUMULATE', 830, NULL, '{\"report_date\":\"2025-09-10\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-10 06:48:43'), -(746, 'ADD_ACCUMULATE', 831, NULL, '{\"report_date\":\"2025-09-10\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-10 06:48:43'), -(747, 'ADD_ACCUMULATE', 832, NULL, '{\"report_date\":\"2025-09-11\",\"worker_id\":2,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-11 06:37:11'), -(748, 'ADD_ACCUMULATE', 834, NULL, '{\"report_date\":\"2025-09-11\",\"worker_id\":4,\"work_entries_count\":3,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-11 06:38:24'), -(749, 'ADD_ACCUMULATE', 837, NULL, '{\"report_date\":\"2025-09-11\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-11 06:39:38'), -(750, 'ADD_ACCUMULATE', 838, NULL, '{\"report_date\":\"2025-09-11\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"4.00\",\"grand_total\":4,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"4.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-11 06:40:48'), -(751, 'ADD_ACCUMULATE', 839, NULL, '{\"report_date\":\"2025-09-11\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-09-11 06:41:46'), -(752, 'ADD_ACCUMULATE', 840, NULL, '{\"report_date\":\"2025-09-11\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-09-11 06:41:47'), -(753, 'ADD_ACCUMULATE', 841, NULL, '{\"report_date\":\"2025-09-11\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":16,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"},{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-09-11 06:41:47'), -(754, 'ADD_ACCUMULATE', 842, NULL, '{\"report_date\":\"2025-09-11\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-09-11 06:41:47'), -(755, 'ADD_ACCUMULATE', 843, NULL, '{\"report_date\":\"2025-09-11\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-09-11 06:41:47'), -(756, 'ADD_ACCUMULATE', 844, NULL, '{\"report_date\":\"2025-09-11\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-09-11 06:41:47'), -(757, 'ADD_ACCUMULATE', 845, NULL, '{\"report_date\":\"2025-09-11\",\"worker_id\":10,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":16,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"},{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-11 06:41:51'), -(758, 'ADD_ACCUMULATE', 847, NULL, '{\"report_date\":\"2025-09-11\",\"worker_id\":9,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-11 06:41:51'), -(759, 'ADD_ACCUMULATE', 849, NULL, '{\"report_date\":\"2025-09-11\",\"worker_id\":5,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":16,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"},{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-11 06:41:51'), -(760, 'DELETE', 849, '{\"id\":849,\"report_date\":\"2025-09-11T00:00:00.000Z\",\"worker_id\":5,\"project_id\":3,\"work_type_id\":2,\"work_status_id\":1,\"error_type_id\":null,\"work_hours\":\"4.00\",\"created_at\":\"2025-09-11T06:41:51.000Z\",\"updated_at\":\"2025-09-11T06:41:51.000Z\",\"created_by\":5,\"updated_by\":null}', NULL, 5, 'Manual deletion', NULL, NULL, '2025-09-11 06:42:40'), -(761, 'DELETE', 850, '{\"id\":850,\"report_date\":\"2025-09-11T00:00:00.000Z\",\"worker_id\":5,\"project_id\":3,\"work_type_id\":3,\"work_status_id\":1,\"error_type_id\":null,\"work_hours\":\"4.00\",\"created_at\":\"2025-09-11T06:41:51.000Z\",\"updated_at\":\"2025-09-11T06:41:51.000Z\",\"created_by\":5,\"updated_by\":null}', NULL, 5, 'Manual deletion', NULL, NULL, '2025-09-11 06:42:49'), -(762, 'DELETE', 839, '{\"id\":839,\"report_date\":\"2025-09-11T00:00:00.000Z\",\"worker_id\":10,\"project_id\":3,\"work_type_id\":2,\"work_status_id\":1,\"error_type_id\":null,\"work_hours\":\"8.00\",\"created_at\":\"2025-09-11T06:41:46.000Z\",\"updated_at\":\"2025-09-11T06:41:46.000Z\",\"created_by\":6,\"updated_by\":null}', NULL, 5, 'Manual deletion', NULL, NULL, '2025-09-11 06:43:07'), -(763, 'DELETE', 837, '{\"id\":837,\"report_date\":\"2025-09-11T00:00:00.000Z\",\"worker_id\":8,\"project_id\":3,\"work_type_id\":2,\"work_status_id\":1,\"error_type_id\":null,\"work_hours\":\"8.00\",\"created_at\":\"2025-09-11T06:39:38.000Z\",\"updated_at\":\"2025-09-11T06:39:38.000Z\",\"created_by\":5,\"updated_by\":null}', NULL, 5, 'Manual deletion', NULL, NULL, '2025-09-11 06:43:16'), -(764, 'ADD_ACCUMULATE', 851, NULL, '{\"report_date\":\"2025-09-12\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-12 06:45:29'), -(765, 'ADD_ACCUMULATE', 852, NULL, '{\"report_date\":\"2025-09-12\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-12 06:45:29'), -(766, 'ADD_ACCUMULATE', 853, NULL, '{\"report_date\":\"2025-09-12\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-12 06:45:29'), -(767, 'ADD_ACCUMULATE', 854, NULL, '{\"report_date\":\"2025-09-12\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-12 06:45:29'), -(768, 'ADD_ACCUMULATE', 855, NULL, '{\"report_date\":\"2025-09-12\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-12 06:45:29'), -(769, 'ADD_ACCUMULATE', 856, NULL, '{\"report_date\":\"2025-09-12\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-12 06:45:29'), -(770, 'ADD_ACCUMULATE', 857, NULL, '{\"report_date\":\"2025-09-12\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-12 06:45:29'), -(771, 'ADD_ACCUMULATE', 858, NULL, '{\"report_date\":\"2025-09-12\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-12 06:45:29'), -(772, 'ADD_ACCUMULATE', 859, NULL, '{\"report_date\":\"2025-09-12\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-12 06:45:29'), -(773, 'ADD_ACCUMULATE', 860, NULL, '{\"report_date\":\"2025-09-12\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-12 06:45:29'), -(774, 'ADD_ACCUMULATE', 861, NULL, '{\"report_date\":\"2025-09-13\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-13 06:38:14'), -(775, 'ADD_ACCUMULATE', 862, NULL, '{\"report_date\":\"2025-09-13\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-13 06:38:14'), -(776, 'ADD_ACCUMULATE', 863, NULL, '{\"report_date\":\"2025-09-13\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-13 06:38:14'), -(777, 'ADD_ACCUMULATE', 864, NULL, '{\"report_date\":\"2025-09-13\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-13 06:38:14'), -(778, 'ADD_ACCUMULATE', 865, NULL, '{\"report_date\":\"2025-09-13\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-13 06:38:14'), -(779, 'ADD_ACCUMULATE', 866, NULL, '{\"report_date\":\"2025-09-13\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-13 06:38:14'), -(780, 'ADD_ACCUMULATE', 867, NULL, '{\"report_date\":\"2025-09-13\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-13 06:38:14'), -(781, 'ADD_ACCUMULATE', 868, NULL, '{\"report_date\":\"2025-09-13\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-13 06:38:14'), -(782, 'ADD_ACCUMULATE', 869, NULL, '{\"report_date\":\"2025-09-13\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-13 06:38:14'), -(783, 'ADD_ACCUMULATE', 870, NULL, '{\"report_date\":\"2025-09-14\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-14 04:47:40'), -(784, 'ADD_ACCUMULATE', 871, NULL, '{\"report_date\":\"2025-09-14\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-14 04:47:40'), -(785, 'ADD_ACCUMULATE', 872, NULL, '{\"report_date\":\"2025-09-14\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-14 04:47:40'), -(786, 'ADD_ACCUMULATE', 873, NULL, '{\"report_date\":\"2025-09-14\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-14 04:47:40'), -(787, 'ADD_ACCUMULATE', 874, NULL, '{\"report_date\":\"2025-09-14\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-14 04:47:41'), -(788, 'ADD_ACCUMULATE', 875, NULL, '{\"report_date\":\"2025-09-14\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-14 04:47:41'), -(789, 'ADD_ACCUMULATE', 876, NULL, '{\"report_date\":\"2025-09-14\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-14 04:47:41'), -(790, 'ADD_ACCUMULATE', 877, NULL, '{\"report_date\":\"2025-09-14\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-14 04:47:41'), -(791, 'ADD_ACCUMULATE', 878, NULL, '{\"report_date\":\"2025-09-14\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-14 04:47:41'), -(792, 'ADD_ACCUMULATE', 879, NULL, '{\"report_date\":\"2025-09-15\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-15 06:50:00'), -(793, 'ADD_ACCUMULATE', 880, NULL, '{\"report_date\":\"2025-09-15\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-15 06:50:00'), -(794, 'ADD_ACCUMULATE', 881, NULL, '{\"report_date\":\"2025-09-15\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-15 06:50:00'), -(795, 'ADD_ACCUMULATE', 882, NULL, '{\"report_date\":\"2025-09-15\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-15 06:50:00'), -(796, 'ADD_ACCUMULATE', 883, NULL, '{\"report_date\":\"2025-09-15\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-15 06:50:01'), -(797, 'ADD_ACCUMULATE', 884, NULL, '{\"report_date\":\"2025-09-15\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-15 06:50:01'), -(798, 'ADD_ACCUMULATE', 885, NULL, '{\"report_date\":\"2025-09-15\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-15 06:50:01'), -(799, 'ADD_ACCUMULATE', 886, NULL, '{\"report_date\":\"2025-09-15\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-15 06:50:01'), -(800, 'ADD_ACCUMULATE', 887, NULL, '{\"report_date\":\"2025-09-15\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-15 06:50:01'), -(801, 'ADD_ACCUMULATE', 888, NULL, '{\"report_date\":\"2025-09-15\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-15 06:50:01'), -(802, 'ADD_ACCUMULATE', 889, NULL, '{\"report_date\":\"2025-09-16\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-16 06:51:19'), -(803, 'ADD_ACCUMULATE', 890, NULL, '{\"report_date\":\"2025-09-16\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-16 06:51:19'), -(804, 'ADD_ACCUMULATE', 891, NULL, '{\"report_date\":\"2025-09-16\",\"worker_id\":8,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-16 06:52:12'), -(805, 'ADD_ACCUMULATE', 893, NULL, '{\"report_date\":\"2025-09-17\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-17 06:43:08'), -(806, 'ADD_ACCUMULATE', 894, NULL, '{\"report_date\":\"2025-09-17\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-17 06:43:08'), -(807, 'ADD_ACCUMULATE', 895, NULL, '{\"report_date\":\"2025-09-17\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-17 06:45:06'), -(808, 'ADD_ACCUMULATE', 896, NULL, '{\"report_date\":\"2025-09-17\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-17 06:45:06'), -(809, 'ADD_ACCUMULATE', 897, NULL, '{\"report_date\":\"2025-09-17\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-17 06:45:06'), -(810, 'ADD_ACCUMULATE', 898, NULL, '{\"report_date\":\"2025-09-17\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-17 06:45:06'), -(811, 'ADD_ACCUMULATE', 899, NULL, '{\"report_date\":\"2025-09-17\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-17 06:45:06'), -(812, 'ADD_ACCUMULATE', 900, NULL, '{\"report_date\":\"2025-09-17\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-17 06:45:06'), -(813, 'ADD_ACCUMULATE', 901, NULL, '{\"report_date\":\"2025-09-17\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-17 06:45:06'), -(814, 'ADD_ACCUMULATE', 902, NULL, '{\"report_date\":\"2025-09-17\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-17 06:45:06'), -(815, 'ADD_ACCUMULATE', 903, NULL, '{\"report_date\":\"2025-09-18\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-18 06:43:40'), -(816, 'ADD_ACCUMULATE', 904, NULL, '{\"report_date\":\"2025-09-18\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-18 06:43:40'), -(817, 'ADD_ACCUMULATE', 905, NULL, '{\"report_date\":\"2025-09-18\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-18 06:44:42'), -(818, 'ADD_ACCUMULATE', 906, NULL, '{\"report_date\":\"2025-09-18\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-18 06:44:42'), -(819, 'ADD_ACCUMULATE', 907, NULL, '{\"report_date\":\"2025-09-18\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-18 06:44:42'), -(820, 'ADD_ACCUMULATE', 908, NULL, '{\"report_date\":\"2025-09-18\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-18 06:44:42'), -(821, 'ADD_ACCUMULATE', 909, NULL, '{\"report_date\":\"2025-09-18\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-18 06:44:42'), -(822, 'ADD_ACCUMULATE', 910, NULL, '{\"report_date\":\"2025-09-18\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":6,\"my_total\":\"6.00\",\"grand_total\":6,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"6.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-18 06:46:39'), -(823, 'ADD_ACCUMULATE', 911, NULL, '{\"report_date\":\"2025-09-18\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-18 06:54:48'), -(824, 'ADD_ACCUMULATE', 912, NULL, '{\"report_date\":\"2025-09-18\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-18 06:54:48'), -(825, 'ADD_ACCUMULATE', 913, NULL, '{\"report_date\":\"2025-09-19\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-19 06:51:40'), -(826, 'ADD_ACCUMULATE', 914, NULL, '{\"report_date\":\"2025-09-19\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-19 06:51:40'), -(827, 'ADD_ACCUMULATE', 915, NULL, '{\"report_date\":\"2025-09-19\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-19 06:52:05'), -(828, 'ADD_ACCUMULATE', 916, NULL, '{\"report_date\":\"2025-09-19\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-19 06:52:05'), -(829, 'ADD_ACCUMULATE', 917, NULL, '{\"report_date\":\"2025-09-19\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-19 06:52:05'), -(830, 'ADD_ACCUMULATE', 918, NULL, '{\"report_date\":\"2025-09-19\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-19 06:52:05'), -(831, 'ADD_ACCUMULATE', 919, NULL, '{\"report_date\":\"2025-09-19\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-19 06:52:05'), -(832, 'ADD_ACCUMULATE', 920, NULL, '{\"report_date\":\"2025-09-19\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"4.00\",\"grand_total\":4,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"4.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-19 06:52:23'), -(833, 'ADD_ACCUMULATE', 921, NULL, '{\"report_date\":\"2025-09-20\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-20 05:30:19'), -(834, 'ADD_ACCUMULATE', 922, NULL, '{\"report_date\":\"2025-09-20\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-20 05:30:19'), -(835, 'ADD_ACCUMULATE', 923, NULL, '{\"report_date\":\"2025-09-22\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-22 06:47:25'), -(836, 'ADD_ACCUMULATE', 924, NULL, '{\"report_date\":\"2025-09-22\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-22 06:47:25'), -(837, 'ADD_ACCUMULATE', 925, NULL, '{\"report_date\":\"2025-09-22\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-22 06:47:25'), -(838, 'ADD_ACCUMULATE', 926, NULL, '{\"report_date\":\"2025-09-22\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-22 06:47:25'), -(839, 'ADD_ACCUMULATE', 927, NULL, '{\"report_date\":\"2025-09-22\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-22 06:47:25'), -(840, 'ADD_ACCUMULATE', 928, NULL, '{\"report_date\":\"2025-09-22\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-22 06:47:25'), -(841, 'ADD_ACCUMULATE', 929, NULL, '{\"report_date\":\"2025-09-22\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-22 06:50:29'), -(842, 'ADD_ACCUMULATE', 930, NULL, '{\"report_date\":\"2025-09-22\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-22 06:50:29'), -(843, 'ADD_ACCUMULATE', 931, NULL, '{\"report_date\":\"2025-09-23\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-23 05:46:40'), -(844, 'ADD_ACCUMULATE', 932, NULL, '{\"report_date\":\"2025-09-23\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-23 05:46:40'), -(845, 'ADD_ACCUMULATE', 933, NULL, '{\"report_date\":\"2025-09-24\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-25 01:14:58'), -(846, 'ADD_ACCUMULATE', 934, NULL, '{\"report_date\":\"2025-09-24\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-25 01:14:58'), -(847, 'ADD_ACCUMULATE', 935, NULL, '{\"report_date\":\"2025-09-29\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-29 06:36:07'), -(848, 'ADD_ACCUMULATE', 936, NULL, '{\"report_date\":\"2025-09-29\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-29 06:36:07'), -(849, 'ADD_ACCUMULATE', 937, NULL, '{\"report_date\":\"2025-09-29\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-29 06:36:47'), -(850, 'ADD_ACCUMULATE', 938, NULL, '{\"report_date\":\"2025-09-29\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-29 06:36:47'); -INSERT INTO `work_report_audit_log` (`log_id`, `action`, `report_id`, `old_values`, `new_values`, `changed_by`, `change_reason`, `ip_address`, `user_agent`, `created_at`) VALUES -(851, 'ADD_ACCUMULATE', 939, NULL, '{\"report_date\":\"2025-09-29\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-29 06:36:47'), -(852, 'ADD_ACCUMULATE', 940, NULL, '{\"report_date\":\"2025-09-29\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-29 06:36:47'), -(853, 'ADD_ACCUMULATE', 941, NULL, '{\"report_date\":\"2025-09-29\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-29 06:36:47'), -(854, 'ADD_ACCUMULATE', 942, NULL, '{\"report_date\":\"2025-09-29\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-29 06:36:47'), -(855, 'ADD_ACCUMULATE', 943, NULL, '{\"report_date\":\"2025-09-29\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-29 06:36:47'), -(856, 'ADD_ACCUMULATE', 944, NULL, '{\"report_date\":\"2025-09-29\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-29 06:36:47'), -(857, 'ADD_ACCUMULATE', 945, NULL, '{\"report_date\":\"2025-09-30\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-30 06:52:26'), -(858, 'ADD_ACCUMULATE', 946, NULL, '{\"report_date\":\"2025-09-30\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-30 06:52:26'), -(859, 'ADD_ACCUMULATE', 947, NULL, '{\"report_date\":\"2025-09-30\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-30 06:52:26'), -(860, 'ADD_ACCUMULATE', 948, NULL, '{\"report_date\":\"2025-09-30\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-30 06:52:26'), -(861, 'ADD_ACCUMULATE', 949, NULL, '{\"report_date\":\"2025-09-30\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-30 06:52:26'), -(862, 'ADD_ACCUMULATE', 950, NULL, '{\"report_date\":\"2025-09-30\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-30 06:52:26'), -(863, 'ADD_ACCUMULATE', 951, NULL, '{\"report_date\":\"2025-09-30\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-30 06:52:27'), -(864, 'ADD_ACCUMULATE', 952, NULL, '{\"report_date\":\"2025-09-30\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-30 06:52:27'), -(865, 'ADD_ACCUMULATE', 953, NULL, '{\"report_date\":\"2025-09-30\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-09-30 06:52:27'), -(866, 'DELETE', 952, '{\"id\":952,\"report_date\":\"2025-09-30T00:00:00.000Z\",\"worker_id\":2,\"project_id\":3,\"work_type_id\":2,\"work_status_id\":1,\"error_type_id\":null,\"work_hours\":\"8.00\",\"created_at\":\"2025-09-30T06:52:27.000Z\",\"updated_at\":\"2025-09-30T06:52:27.000Z\",\"created_by\":3,\"updated_by\":null}', NULL, 5, 'Manual deletion', NULL, NULL, '2025-09-30 06:56:36'), -(867, 'ADD_ACCUMULATE', 954, NULL, '{\"report_date\":\"2025-09-30\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-09-30 06:56:55'), -(868, 'ADD_ACCUMULATE', 955, NULL, '{\"report_date\":\"2025-10-02\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":6,\"my_total\":\"6.00\",\"grand_total\":6,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"6.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-10-02 05:25:58'), -(869, 'ADD_ACCUMULATE', 956, NULL, '{\"report_date\":\"2025-10-02\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":6,\"my_total\":\"6.00\",\"grand_total\":6,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"6.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-10-02 05:25:59'), -(870, 'ADD_ACCUMULATE', 957, NULL, '{\"report_date\":\"2025-10-02\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-10-02 06:22:32'), -(871, 'ADD_ACCUMULATE', 958, NULL, '{\"report_date\":\"2025-10-02\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-10-02 06:22:32'), -(872, 'ADD_ACCUMULATE', 959, NULL, '{\"report_date\":\"2025-10-02\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-10-02 06:22:32'), -(873, 'ADD_ACCUMULATE', 960, NULL, '{\"report_date\":\"2025-10-02\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-10-02 06:22:32'), -(874, 'ADD_ACCUMULATE', 961, NULL, '{\"report_date\":\"2025-10-02\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-10-02 06:22:33'), -(875, 'ADD_ACCUMULATE', 962, NULL, '{\"report_date\":\"2025-10-02\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-10-02 06:22:33'), -(876, 'ADD_ACCUMULATE', 963, NULL, '{\"report_date\":\"2025-10-02\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-10-02 06:22:33'), -(877, 'ADD_ACCUMULATE', 964, NULL, '{\"report_date\":\"2025-09-01\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-10-10 23:35:07'), -(878, 'ADD_ACCUMULATE', 965, NULL, '{\"report_date\":\"2025-09-01\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-10-10 23:35:07'), -(879, 'ADD_ACCUMULATE', 966, NULL, '{\"report_date\":\"2025-09-01\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-10-10 23:35:07'); +INSERT INTO `work_attendance_types` (`id`, `type_code`, `type_name`, `description`, `is_active`, `created_at`, `updated_at`) VALUES +(1, 'REGULAR', '정시근로', '8시간 정규 근무', 1, '2025-11-03 06:48:45', '2025-11-03 06:48:45'), +(2, 'OVERTIME', '연장근로', '8시간 초과 근무', 1, '2025-11-03 06:48:45', '2025-11-03 06:48:45'), +(3, 'PARTIAL', '부분근로', '8시간 미만 근무', 1, '2025-11-03 06:48:45', '2025-11-03 06:48:45'), +(4, 'VACATION', '휴가근로', '휴가와 함께하는 부분 근무', 1, '2025-11-03 06:48:45', '2025-11-03 06:48:45'); -- -------------------------------------------------------- @@ -4125,11 +4134,11 @@ INSERT INTO `work_report_audit_log` (`log_id`, `action`, `report_id`, `old_value -- CREATE TABLE `work_status_types` ( - `id` int(11) NOT NULL, - `name` varchar(50) NOT NULL COMMENT '상태명', - `description` text DEFAULT NULL COMMENT '상태 설명', - `is_error` tinyint(1) DEFAULT 0 COMMENT '에러 상태 여부', - `created_at` timestamp NOT NULL DEFAULT current_timestamp() + `id` int NOT NULL, + `name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '상태명', + `description` text COLLATE utf8mb4_unicode_ci COMMENT '상태 설명', + `is_error` tinyint(1) DEFAULT '0' COMMENT '에러 상태 여부', + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- @@ -4147,12 +4156,12 @@ INSERT INTO `work_status_types` (`id`, `name`, `description`, `is_error`, `creat -- CREATE TABLE `work_types` ( - `id` int(11) NOT NULL, - `name` varchar(100) NOT NULL COMMENT '작업 유형명', - `description` text DEFAULT NULL COMMENT '작업 유형 설명', - `category` varchar(50) DEFAULT NULL COMMENT '작업 카테고리', - `created_at` timestamp NOT NULL DEFAULT current_timestamp(), - `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() + `id` int NOT NULL, + `name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '작업 유형명', + `description` text COLLATE utf8mb4_unicode_ci COMMENT '작업 유형 설명', + `category` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '작업 카테고리', + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- @@ -4163,64 +4172,21 @@ INSERT INTO `work_types` (`id`, `name`, `description`, `category`, `created_at`, (1, 'Base(구조물)', NULL, NULL, '2025-06-16 02:21:32', '2025-06-16 03:03:42'), (2, 'Vessel(용기)', NULL, NULL, '2025-06-16 02:21:32', '2025-06-16 03:03:47'), (3, 'Piping Assembly(배관)', NULL, NULL, '2025-06-16 02:21:32', '2025-06-16 03:03:50'), -(4, '작업대기', NULL, NULL, '2025-06-16 02:21:32', '2025-06-16 03:03:56'); +(4, '작업대기', NULL, NULL, '2025-06-16 02:21:32', '2025-06-16 03:03:56'), +(11, '휴무', '연차사용 등', NULL, '2025-11-04 05:53:46', '2025-11-04 05:53:46'); -- -- 덤프된 테이블의 인덱스 -- --- --- 테이블의 인덱스 `activity_logs` --- -ALTER TABLE `activity_logs` - ADD PRIMARY KEY (`log_id`), - ADD KEY `idx_user_activity` (`user_id`,`activity_type`,`created_at`), - ADD KEY `idx_table_record` (`table_name`,`record_id`); - --- --- 테이블의 인덱스 `CuttingPlan` --- -ALTER TABLE `CuttingPlan` - ADD PRIMARY KEY (`cutting_plan_id`), - ADD KEY `project_id` (`project_id`), - ADD KEY `fk_cuttingplan_spec` (`spec_id`); - --- --- 테이블의 인덱스 `DailyIssueReports` --- -ALTER TABLE `DailyIssueReports` - ADD PRIMARY KEY (`id`), - ADD KEY `worker_id` (`worker_id`), - ADD KEY `fk_dird_project` (`project_id`), - ADD KEY `fk_dird_issuetype` (`issue_type_id`); - --- --- 테이블의 인덱스 `daily_worker_summary` --- -ALTER TABLE `daily_worker_summary` - ADD PRIMARY KEY (`id`), - ADD UNIQUE KEY `unique_worker_date` (`worker_id`,`report_date`); - -- -- 테이블의 인덱스 `daily_work_reports` -- ALTER TABLE `daily_work_reports` ADD PRIMARY KEY (`id`), ADD KEY `idx_report_date` (`report_date`), - ADD KEY `idx_worker_date` (`worker_id`,`report_date`), - ADD KEY `idx_project_date` (`project_id`,`report_date`), - ADD KEY `idx_work_type` (`work_type_id`), - ADD KEY `idx_work_status` (`work_status_id`), - ADD KEY `idx_error_type` (`error_type_id`), - ADD KEY `idx_created_by` (`created_by`), - ADD KEY `idx_date_worker_creator` (`report_date`,`worker_id`,`created_by`); - --- --- 테이블의 인덱스 `EquipmentList` --- -ALTER TABLE `EquipmentList` - ADD PRIMARY KEY (`equipment_id`), - ADD KEY `factory_id` (`factory_id`); + ADD KEY `idx_worker_id` (`worker_id`), + ADD KEY `idx_project_id` (`project_id`); -- -- 테이블의 인덱스 `error_types` @@ -4229,110 +4195,36 @@ ALTER TABLE `error_types` ADD PRIMARY KEY (`id`); -- --- 테이블의 인덱스 `FactoryInfo` +-- 테이블의 인덱스 `projects` -- -ALTER TABLE `FactoryInfo` - ADD PRIMARY KEY (`factory_id`); - --- --- 테이블의 인덱스 `IssueTypes` --- -ALTER TABLE `IssueTypes` - ADD PRIMARY KEY (`issue_type_id`); - --- --- 테이블의 인덱스 `login_logs` --- -ALTER TABLE `login_logs` - ADD PRIMARY KEY (`log_id`), - ADD KEY `idx_user_login` (`user_id`,`login_time`); - --- --- 테이블의 인덱스 `password_change_logs` --- -ALTER TABLE `password_change_logs` - ADD PRIMARY KEY (`log_id`), - ADD KEY `changed_by_user_id` (`changed_by_user_id`), - ADD KEY `idx_user_changes` (`user_id`,`changed_at`); - --- --- 테이블의 인덱스 `PipeSpecs` --- -ALTER TABLE `PipeSpecs` - ADD PRIMARY KEY (`spec_id`), - ADD UNIQUE KEY `unique_spec` (`material`,`diameter_in`,`schedule`); - --- --- 테이블의 인덱스 `Processes` --- -ALTER TABLE `Processes` - ADD PRIMARY KEY (`process_id`), - ADD KEY `project_id` (`project_id`); - --- --- 테이블의 인덱스 `Projects` --- -ALTER TABLE `Projects` +ALTER TABLE `projects` ADD PRIMARY KEY (`project_id`); -- --- 테이블의 인덱스 `Tasks` +-- 테이블의 인덱스 `users` -- -ALTER TABLE `Tasks` - ADD PRIMARY KEY (`task_id`); +ALTER TABLE `users` + ADD PRIMARY KEY (`user_id`); -- --- 테이블의 인덱스 `uploaded_documents` +-- 테이블의 인덱스 `workers` -- -ALTER TABLE `uploaded_documents` - ADD PRIMARY KEY (`id`); - --- --- 테이블의 인덱스 `Users` --- -ALTER TABLE `Users` - ADD PRIMARY KEY (`user_id`), - ADD UNIQUE KEY `username` (`username`), - ADD UNIQUE KEY `email` (`email`), - ADD KEY `fk_worker` (`worker_id`), - ADD KEY `idx_username` (`username`), - ADD KEY `idx_active_users` (`is_active`,`access_level`); - --- --- 테이블의 인덱스 `Workers` --- -ALTER TABLE `Workers` +ALTER TABLE `workers` ADD PRIMARY KEY (`worker_id`); -- --- 테이블의 인덱스 `worker_groups` +-- 테이블의 인덱스 `worker_vacation_balance` -- -ALTER TABLE `worker_groups` +ALTER TABLE `worker_vacation_balance` ADD PRIMARY KEY (`id`), - ADD UNIQUE KEY `uk_leader_worker` (`group_leader_id`,`worker_id`), - ADD KEY `idx_group_leader` (`group_leader_id`), - ADD KEY `idx_worker` (`worker_id`), - ADD KEY `idx_is_active` (`is_active`); + ADD UNIQUE KEY `worker_id` (`worker_id`); -- --- 테이블의 인덱스 `WorkReports` +-- 테이블의 인덱스 `work_attendance_types` -- -ALTER TABLE `WorkReports` +ALTER TABLE `work_attendance_types` ADD PRIMARY KEY (`id`), - ADD KEY `worker_id` (`worker_id`), - ADD KEY `project_id` (`project_id`), - ADD KEY `morning_task_id` (`morning_task_id`), - ADD KEY `afternoon_task_id` (`afternoon_task_id`), - ADD KEY `overtime_task_id` (`overtime_task_id`); - --- --- 테이블의 인덱스 `work_report_audit_log` --- -ALTER TABLE `work_report_audit_log` - ADD PRIMARY KEY (`log_id`), - ADD KEY `idx_action_date` (`action`,`created_at`), - ADD KEY `idx_changed_by` (`changed_by`), - ADD KEY `idx_report_id` (`report_id`); + ADD UNIQUE KEY `type_code` (`type_code`); -- -- 테이블의 인덱스 `work_status_types` @@ -4350,216 +4242,57 @@ ALTER TABLE `work_types` -- 덤프된 테이블의 AUTO_INCREMENT -- --- --- 테이블의 AUTO_INCREMENT `activity_logs` --- -ALTER TABLE `activity_logs` - MODIFY `log_id` int(11) NOT NULL AUTO_INCREMENT; - --- --- 테이블의 AUTO_INCREMENT `CuttingPlan` --- -ALTER TABLE `CuttingPlan` - MODIFY `cutting_plan_id` int(11) NOT NULL AUTO_INCREMENT; - --- --- 테이블의 AUTO_INCREMENT `DailyIssueReports` --- -ALTER TABLE `DailyIssueReports` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10; - --- --- 테이블의 AUTO_INCREMENT `daily_worker_summary` --- -ALTER TABLE `daily_worker_summary` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2; - -- -- 테이블의 AUTO_INCREMENT `daily_work_reports` -- ALTER TABLE `daily_work_reports` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=967; + MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1639; -- --- 테이블의 AUTO_INCREMENT `EquipmentList` +-- 테이블의 AUTO_INCREMENT `projects` -- -ALTER TABLE `EquipmentList` - MODIFY `equipment_id` int(11) NOT NULL AUTO_INCREMENT; +ALTER TABLE `projects` + MODIFY `project_id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=17; -- --- 테이블의 AUTO_INCREMENT `error_types` +-- 테이블의 AUTO_INCREMENT `workers` -- -ALTER TABLE `error_types` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10; +ALTER TABLE `workers` + MODIFY `worker_id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=12; -- --- 테이블의 AUTO_INCREMENT `FactoryInfo` +-- 테이블의 AUTO_INCREMENT `worker_vacation_balance` -- -ALTER TABLE `FactoryInfo` - MODIFY `factory_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6; +ALTER TABLE `worker_vacation_balance` + MODIFY `id` int NOT NULL AUTO_INCREMENT; -- --- 테이블의 AUTO_INCREMENT `IssueTypes` +-- 테이블의 AUTO_INCREMENT `work_attendance_types` -- -ALTER TABLE `IssueTypes` - MODIFY `issue_type_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7; - --- --- 테이블의 AUTO_INCREMENT `login_logs` --- -ALTER TABLE `login_logs` - MODIFY `log_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=345; - --- --- 테이블의 AUTO_INCREMENT `password_change_logs` --- -ALTER TABLE `password_change_logs` - MODIFY `log_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7; - --- --- 테이블의 AUTO_INCREMENT `PipeSpecs` --- -ALTER TABLE `PipeSpecs` - MODIFY `spec_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3; - --- --- 테이블의 AUTO_INCREMENT `Processes` --- -ALTER TABLE `Processes` - MODIFY `process_id` int(11) NOT NULL AUTO_INCREMENT; - --- --- 테이블의 AUTO_INCREMENT `Projects` --- -ALTER TABLE `Projects` - MODIFY `project_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=15; - --- --- 테이블의 AUTO_INCREMENT `Tasks` --- -ALTER TABLE `Tasks` - MODIFY `task_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=19; - --- --- 테이블의 AUTO_INCREMENT `uploaded_documents` --- -ALTER TABLE `uploaded_documents` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; - --- --- 테이블의 AUTO_INCREMENT `Users` --- -ALTER TABLE `Users` - MODIFY `user_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7; - --- --- 테이블의 AUTO_INCREMENT `Workers` --- -ALTER TABLE `Workers` - MODIFY `worker_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=12; - --- --- 테이블의 AUTO_INCREMENT `worker_groups` --- -ALTER TABLE `worker_groups` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; - --- --- 테이블의 AUTO_INCREMENT `WorkReports` --- -ALTER TABLE `WorkReports` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1766; - --- --- 테이블의 AUTO_INCREMENT `work_report_audit_log` --- -ALTER TABLE `work_report_audit_log` - MODIFY `log_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=880; +ALTER TABLE `work_attendance_types` + MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=15; -- -- 테이블의 AUTO_INCREMENT `work_status_types` -- ALTER TABLE `work_status_types` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5; + MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5; -- -- 테이블의 AUTO_INCREMENT `work_types` -- ALTER TABLE `work_types` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=11; + MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=12; -- -- 덤프된 테이블의 제약사항 -- -- --- 테이블의 제약사항 `activity_logs` +-- 테이블의 제약사항 `worker_vacation_balance` -- -ALTER TABLE `activity_logs` - ADD CONSTRAINT `activity_logs_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `Users` (`user_id`) ON DELETE SET NULL; - --- --- 테이블의 제약사항 `CuttingPlan` --- -ALTER TABLE `CuttingPlan` - ADD CONSTRAINT `CuttingPlan_ibfk_1` FOREIGN KEY (`project_id`) REFERENCES `Projects` (`project_id`), - ADD CONSTRAINT `fk_cuttingplan_spec` FOREIGN KEY (`spec_id`) REFERENCES `PipeSpecs` (`spec_id`); - --- --- 테이블의 제약사항 `DailyIssueReports` --- -ALTER TABLE `DailyIssueReports` - ADD CONSTRAINT `dailyissuereports_ibfk_1` FOREIGN KEY (`worker_id`) REFERENCES `Workers` (`worker_id`), - ADD CONSTRAINT `fk_dird_issuetype` FOREIGN KEY (`issue_type_id`) REFERENCES `IssueTypes` (`issue_type_id`), - ADD CONSTRAINT `fk_dird_project` FOREIGN KEY (`project_id`) REFERENCES `Projects` (`project_id`); - --- --- 테이블의 제약사항 `EquipmentList` --- -ALTER TABLE `EquipmentList` - ADD CONSTRAINT `EquipmentList_ibfk_1` FOREIGN KEY (`factory_id`) REFERENCES `FactoryInfo` (`factory_id`); - --- --- 테이블의 제약사항 `login_logs` --- -ALTER TABLE `login_logs` - ADD CONSTRAINT `login_logs_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `Users` (`user_id`) ON DELETE CASCADE; - --- --- 테이블의 제약사항 `password_change_logs` --- -ALTER TABLE `password_change_logs` - ADD CONSTRAINT `password_change_logs_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `Users` (`user_id`) ON DELETE CASCADE, - ADD CONSTRAINT `password_change_logs_ibfk_2` FOREIGN KEY (`changed_by_user_id`) REFERENCES `Users` (`user_id`) ON DELETE SET NULL; - --- --- 테이블의 제약사항 `Processes` --- -ALTER TABLE `Processes` - ADD CONSTRAINT `Processes_ibfk_1` FOREIGN KEY (`project_id`) REFERENCES `Projects` (`project_id`); - --- --- 테이블의 제약사항 `Users` --- -ALTER TABLE `Users` - ADD CONSTRAINT `fk_worker` FOREIGN KEY (`worker_id`) REFERENCES `Workers` (`worker_id`); - --- --- 테이블의 제약사항 `worker_groups` --- -ALTER TABLE `worker_groups` - ADD CONSTRAINT `fk_group_leader` FOREIGN KEY (`group_leader_id`) REFERENCES `Users` (`user_id`) ON DELETE CASCADE, - ADD CONSTRAINT `fk_group_worker` FOREIGN KEY (`worker_id`) REFERENCES `Workers` (`worker_id`) ON DELETE CASCADE; - --- --- 테이블의 제약사항 `WorkReports` --- -ALTER TABLE `WorkReports` - ADD CONSTRAINT `WorkReports_ibfk_1` FOREIGN KEY (`worker_id`) REFERENCES `Workers` (`worker_id`), - ADD CONSTRAINT `WorkReports_ibfk_2` FOREIGN KEY (`project_id`) REFERENCES `Projects` (`project_id`), - ADD CONSTRAINT `WorkReports_ibfk_3` FOREIGN KEY (`morning_task_id`) REFERENCES `Tasks` (`task_id`), - ADD CONSTRAINT `WorkReports_ibfk_4` FOREIGN KEY (`afternoon_task_id`) REFERENCES `Tasks` (`task_id`), - ADD CONSTRAINT `WorkReports_ibfk_5` FOREIGN KEY (`overtime_task_id`) REFERENCES `Tasks` (`task_id`); +ALTER TABLE `worker_vacation_balance` + ADD CONSTRAINT `worker_vacation_balance_ibfk_1` FOREIGN KEY (`worker_id`) REFERENCES `workers` (`worker_id`) ON DELETE CASCADE; COMMIT; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; diff --git a/import_to_test.sql b/import_to_test.sql new file mode 100644 index 0000000..1080203 --- /dev/null +++ b/import_to_test.sql @@ -0,0 +1,154 @@ +-- ===================================================== +-- 운영 DB → 테스트 서버 전체 데이터 Import 스크립트 +-- +-- 주의: 테스트 서버 데이터가 덮어씌워집니다! +-- 실행 전 백업 권장 +-- ===================================================== + +SET FOREIGN_KEY_CHECKS = 0; +SET SQL_MODE = 'NO_AUTO_VALUE_ON_ZERO'; + +-- ===================================================== +-- 1. work_attendance_types (근로 유형) +-- ===================================================== +TRUNCATE TABLE work_attendance_types; +INSERT INTO work_attendance_types (id, type_code, type_name, description, is_active, created_at, updated_at) VALUES +(1, 'REGULAR', '정시근로', '8시간 정규 근무', 1, '2025-11-03 06:48:45', '2025-11-03 06:48:45'), +(2, 'OVERTIME', '연장근로', '8시간 초과 근무', 1, '2025-11-03 06:48:45', '2025-11-03 06:48:45'), +(3, 'PARTIAL', '부분근로', '8시간 미만 근무', 1, '2025-11-03 06:48:45', '2025-11-03 06:48:45'), +(4, 'VACATION', '휴가근로', '휴가와 함께하는 부분 근무', 1, '2025-11-03 06:48:45', '2025-11-03 06:48:45'); + +-- ===================================================== +-- 2. vacation_types (휴가 유형) +-- 운영: hours_deduction → 테스트: deduct_days +-- 변환: 8시간=1일, 4시간=0.5일, 2시간=0.25일 +-- ===================================================== +TRUNCATE TABLE vacation_types; +INSERT INTO vacation_types (id, type_code, type_name, deduct_days, description, is_active, is_special, priority, is_system, created_at, updated_at) VALUES +(1, 'ANNUAL_FULL', '연차', 1.0, '하루 전체 연차', 1, 0, 1, 1, '2025-11-03 06:48:45', '2025-11-03 06:48:45'), +(2, 'ANNUAL_HALF', '반차', 0.5, '반일 연차', 1, 0, 2, 1, '2025-11-03 06:48:45', '2025-11-03 06:48:45'), +(3, 'ANNUAL_QUARTER', '반반차', 0.25, '1/4일 연차', 1, 0, 3, 1, '2025-11-03 06:48:45', '2025-11-03 06:48:45'), +(4, 'SICK_FULL', '병가', 1.0, '하루 전체 병가', 1, 0, 4, 1, '2025-11-03 06:48:45', '2025-11-03 06:48:45'), +(5, 'SICK_HALF', '반일병가', 0.5, '반일 병가', 1, 0, 5, 1, '2025-11-03 06:48:45', '2025-11-03 06:48:45'); + +-- ===================================================== +-- 3. workers (작업자) +-- employment_status 추가 (기본값: employed) +-- ===================================================== +TRUNCATE TABLE workers; +INSERT INTO workers (worker_id, worker_name, join_date, job_type, salary, annual_leave, status, created_at, updated_at, phone_number, email, hire_date, department, notes, employment_status) VALUES +(1, '김두수', '2025-04-01', '배관', 2200000.00, 15, 'active', '2025-04-15 13:23:17', '2025-04-15 13:23:17', NULL, NULL, NULL, NULL, NULL, 'employed'), +(2, '임영규', NULL, 'leader', NULL, NULL, 'active', '2025-04-15 13:23:17', '2025-04-15 13:23:17', NULL, NULL, NULL, NULL, NULL, 'employed'), +(3, '반치원', '2025-04-01', '배관', 2200000.00, 15, 'active', '2025-04-15 13:23:22', '2025-04-15 13:23:22', NULL, NULL, NULL, NULL, NULL, 'employed'), +(4, '황인용', '2025-04-01', '가공,조공', 2200000.00, 15, 'active', '2025-04-15 13:23:33', '2025-04-15 13:23:33', NULL, NULL, NULL, NULL, NULL, 'employed'), +(5, '표영진', '2025-04-01', '가공,조공', 2200000.00, 15, 'active', '2025-04-15 13:23:38', '2025-04-15 13:23:38', NULL, NULL, NULL, NULL, NULL, 'employed'), +(6, '김윤섭', NULL, 'worker', NULL, NULL, 'active', '2025-04-15 13:23:46', '2025-04-15 13:23:46', NULL, NULL, NULL, NULL, NULL, 'employed'), +(7, '이창호', NULL, 'worker', NULL, NULL, 'inactive', '2025-04-15 13:23:51', '2025-04-15 13:23:51', NULL, NULL, NULL, NULL, NULL, 'resigned'), +(8, '최광욱', '2025-04-01', '용접', 2200000.00, 15, 'active', '2025-04-15 13:23:57', '2025-04-15 13:23:57', NULL, NULL, NULL, NULL, NULL, 'employed'), +(9, '박현수', '2025-04-01', '용접', 2200000.00, 15, 'active', '2025-04-15 13:24:01', '2025-04-15 13:24:01', NULL, NULL, NULL, NULL, NULL, 'employed'), +(10, '조윤호', NULL, 'worker', NULL, NULL, 'active', '2025-04-15 13:24:07', '2025-04-15 13:24:07', NULL, NULL, NULL, NULL, NULL, 'employed'), +(11, '조승민', NULL, 'worker', NULL, NULL, 'active', '2026-01-06 06:18:27', '2026-01-06 06:18:27', NULL, NULL, '2026-01-05', '생산팀', '용접사', 'employed'); + +-- ===================================================== +-- 4. users (사용자 계정) +-- 운영 role → 테스트 role_id 매핑: admin→2, leader→2, user→4 +-- ===================================================== +TRUNCATE TABLE users; +INSERT INTO users (user_id, username, password, role_id, created_at, worker_id, is_active, last_login_at, password_changed_at, failed_login_attempts, locked_until, name, email, updated_at) VALUES +(1, 'hyungi', '$2b$10$lwSfKipx0fQ.9nfMUBmzt.WXzerdxuT5MVX4b3YhFeHxyYlUjM7bi', 2, '2025-05-06 05:03:02', NULL, 1, '2025-12-02 11:26:49', '2025-05-06 05:03:02', 0, NULL, NULL, NULL, '2025-12-02 02:26:49'), +(3, '김두수', '$2a$10$z3i2EVOotRFBj.KHzx5LQOKlXD0QHLNFEvJcd6FlO6/1TCYGk6SSu', 2, '2025-06-07 23:48:35', 1, 1, '2026-02-03 12:52:32', '2025-06-15 07:40:39', 0, NULL, '김두수', NULL, '2026-02-03 03:52:32'), +(4, '김아무개', '$2a$10$QAJIoPyi.apz91exp8GsiO/prAD5Xwanht6XImP1jvKsy/7Ba/b8.', 4, '2025-06-11 08:03:59', NULL, 0, '2025-06-15 23:28:04', '2025-06-15 06:03:42', 0, NULL, '김아무개', NULL, '2025-11-05 02:48:03'), +(5, '임영규', '$2a$10$66ps/MEEi4BVABfJc5P0y.yCap09NhTMyd1A/7rFVxESytQGlB3wC', 2, '2025-06-15 07:41:02', 3, 1, '2025-12-10 15:55:48', '2025-06-15 07:41:02', 0, NULL, '임영규', NULL, '2025-12-10 06:55:48'), +(6, '반치원', '$2a$10$jcn6f7flRLZlr5yKQcXDIePodRK0rsM4deNnNGjuOlredeTVsRYZ6', 2, '2025-06-15 07:41:32', 3, 1, '2025-11-05 01:56:13', '2025-06-15 07:41:32', 5, '2025-11-25 16:22:46', '반치원', NULL, '2025-11-25 07:07:46'), +(7, 'khahn', '$2a$10$vQcJ3C37TPGweYF8rok2quzN2DK9lgxiqDAXV38vvPVjRdz3l6M8y', 2, '2025-11-05 02:18:15', NULL, 1, '2025-11-05 15:56:23', NULL, 0, NULL, 'khahn', NULL, '2025-11-05 06:56:23'), +(8, '그룹장', '$2a$10$/8yMaLoMSR0epA3zDH.H7eq2vB.5EmB9jZfZKPepR.S07LCXZzH0C', 2, '2025-11-05 02:51:29', NULL, 1, '2025-11-05 02:52:07', NULL, 0, NULL, '그룹장', NULL, '2025-11-05 02:52:07'), +(9, '작업자', '$2a$10$n8ZY0H0UtBhND7OuUcwzKOjLj26s5oNHmRma9toIV/R5bxB3NoL3q', 4, '2025-11-05 02:51:45', NULL, 1, '2025-11-05 02:51:57', NULL, 0, NULL, '작업자', NULL, '2025-11-05 02:51:57'); + +-- ===================================================== +-- 5. projects (프로젝트) +-- ===================================================== +TRUNCATE TABLE projects; +INSERT INTO projects (project_id, job_no, project_name, contract_date, due_date, delivery_method, site, pm, created_at, updated_at, is_active, completed_date, project_status) VALUES +(1, 'TKO-24008P', 'YHP Project', NULL, NULL, NULL, 'Quang Ninh(Vietnam)', '장형태', '2025-04-15 22:40:28', '2025-04-15 22:40:28', 0, NULL, 'active'), +(2, 'TKG-24009P', '한화에어로스페이스 순천', NULL, NULL, NULL, '순천', '장형태', '2025-04-15 22:42:41', '2025-04-15 22:42:41', 0, NULL, 'active'), +(3, 'TKG-24011P', '효성화학 에틸렌 탱크 건설공사', NULL, NULL, NULL, '울산', '김길종', '2025-04-15 22:43:53', '2025-04-15 22:43:53', 0, NULL, 'active'), +(4, 'TKG-24013P', '김천 솔라 파워 그린 수소 Project', NULL, NULL, NULL, '김천', '김길종', '2025-04-15 22:44:57', '2025-04-15 22:44:57', 0, NULL, 'active'), +(5, 'TKG-24016P', 'LG Chem P3RE Project', NULL, NULL, NULL, '.', '장형태', '2025-04-15 22:46:36', '2025-04-15 22:46:36', 0, NULL, 'active'), +(7, 'TKO-25003F', '25년 안전보건시설설비', NULL, NULL, NULL, '.', '.', '2025-04-15 22:47:32', '2025-04-15 22:47:32', 0, NULL, 'active'), +(8, 'TKG-25007P', 'P Project', NULL, NULL, NULL, '오창읍', '장형태', '2025-04-15 22:48:50', '2025-04-15 22:48:50', 0, NULL, 'active'), +(10, 'TKR-25008P', 'DIG Airgas LG CHEM', NULL, NULL, NULL, '여수', '서태원', '2025-04-15 22:50:05', '2025-04-15 22:50:05', 0, NULL, 'active'), +(11, 'TKR-25010P', 'FK FISCHER Project', NULL, NULL, NULL, '울산', '전상신', '2025-04-15 22:51:12', '2025-04-15 22:51:12', 0, NULL, 'active'), +(12, 'TKO-24007P', 'MP7 Project', NULL, NULL, NULL, '.', '윤지민', '2025-04-15 23:56:26', '2025-04-15 23:56:26', 0, NULL, 'active'), +(13, '연차/휴무', '연차/휴무', '2025-01-01', '2025-12-31', '.', '.', '.', '2025-04-16 01:58:23', '2025-04-16 01:58:23', 1, NULL, 'active'), +(14, 'TKO-25009R', 'M Project', NULL, NULL, NULL, NULL, '이민후', '2025-09-28 22:13:33', '2025-09-28 22:13:33', 0, NULL, 'active'), +(15, 'TKR-25013P', 'HAS MCS Plnat', NULL, '2026-03-31', NULL, NULL, NULL, '2026-01-06 06:16:37', '2026-01-06 06:16:37', 1, NULL, 'active'), +(16, 'TKO-26003F', '안전보건시설설비', '2026-01-01', '2026-12-31', NULL, NULL, NULL, '2026-01-06 06:17:33', '2026-01-06 06:17:33', 1, NULL, 'active'); + +-- ===================================================== +-- 6. error_types (오류 유형) +-- ===================================================== +TRUNCATE TABLE error_types; +INSERT INTO error_types (id, name, description, severity, solution_guide, created_at, updated_at) VALUES +(1, '설계미스', '설계미스', 'medium', NULL, '2025-06-16 02:21:32', '2025-06-16 03:02:03'), +(2, '외주작업 불량', '입고 자재 불량', 'medium', NULL, '2025-06-16 02:21:32', '2025-06-16 03:02:05'), +(3, '입고지연', '자재 미입고', 'medium', NULL, '2025-06-16 02:21:32', '2025-06-16 03:02:11'), +(4, '작업불량', '작업자 실수', 'medium', NULL, '2025-06-16 02:21:32', '2025-06-16 03:02:13'), +(5, '설비고장', '장비없음', 'medium', NULL, '2025-06-16 02:21:32', '2025-06-16 03:02:16'), +(6, '검사불량', '검사불량', 'medium', NULL, '2025-06-16 02:21:32', '2025-06-24 04:36:18'); + +-- ===================================================== +-- 7. work_types (작업 유형) +-- ===================================================== +TRUNCATE TABLE work_types; +INSERT INTO work_types (id, name, description, category, created_at, updated_at) VALUES +(1, 'Base(구조물)', NULL, NULL, '2025-06-16 02:21:32', '2025-06-16 03:03:42'), +(2, 'Vessel(용기)', NULL, NULL, '2025-06-16 02:21:32', '2025-06-16 03:03:47'), +(3, 'Piping Assembly(배관)', NULL, NULL, '2025-06-16 02:21:32', '2025-06-16 03:03:50'), +(4, '작업대기', NULL, NULL, '2025-06-16 02:21:32', '2025-06-16 03:03:56'), +(11, '휴무', '연차사용 등', NULL, '2025-11-04 05:53:46', '2025-11-04 05:53:46'); + +-- ===================================================== +-- 8. work_status_types (작업 상태 유형) +-- ===================================================== +TRUNCATE TABLE work_status_types; +INSERT INTO work_status_types (id, name, description, is_error, created_at) VALUES +(1, '정규', '정상적으로 완료된 작업', 0, '2025-06-16 02:21:16'), +(2, '에러', '오류가 발생한 작업', 1, '2025-06-16 02:21:16'); + +-- ===================================================== +-- 9. daily_work_reports (일일 작업 보고서) +-- 운영 DB description 컬럼 제외 (테스트 DB에 없음) +-- ===================================================== +TRUNCATE TABLE daily_work_reports; +INSERT INTO daily_work_reports (id, report_date, worker_id, project_id, work_type_id, work_status_id, error_type_id, work_hours, created_at, updated_at, created_by, updated_by) VALUES +-- 파일 용량 관계로 별도 import 필요 +-- SOURCE /tmp/daily_work_reports_import.sql +(14, '2025-06-02', 1, 4, 3, 1, NULL, 8.00, '2025-06-16 05:10:23', '2025-06-16 05:10:23', 1, NULL); + +-- 주의: 전체 daily_work_reports 데이터(1524건)는 별도로 import 해야 합니다 +-- 아래 명령으로 import: +-- docker exec -i tkfb_db mysql -uroot -p'tycdoq-Kawcug-8wesfa' hyungi < /tmp/daily_work_reports_import.sql + +-- ===================================================== +-- 10. daily_attendance_records 초기화 +-- ===================================================== +TRUNCATE TABLE daily_attendance_records; + +-- ===================================================== +-- 외래키 복원 +-- ===================================================== +SET FOREIGN_KEY_CHECKS = 1; + +-- ===================================================== +-- 결과 확인 +-- ===================================================== +SELECT 'work_attendance_types' as 테이블, COUNT(*) as 건수 FROM work_attendance_types +UNION ALL SELECT 'vacation_types', COUNT(*) FROM vacation_types +UNION ALL SELECT 'workers', COUNT(*) FROM workers +UNION ALL SELECT 'users', COUNT(*) FROM users +UNION ALL SELECT 'projects', COUNT(*) FROM projects +UNION ALL SELECT 'error_types', COUNT(*) FROM error_types +UNION ALL SELECT 'work_types', COUNT(*) FROM work_types +UNION ALL SELECT 'work_status_types', COUNT(*) FROM work_status_types +UNION ALL SELECT 'daily_work_reports', COUNT(*) FROM daily_work_reports +UNION ALL SELECT 'daily_attendance_records', COUNT(*) FROM daily_attendance_records; diff --git a/web-ui/components/navbar.html b/web-ui/components/navbar.html index f05a45c..940abcd 100644 --- a/web-ui/components/navbar.html +++ b/web-ui/components/navbar.html @@ -27,7 +27,7 @@
- + 📊 대시보드 diff --git a/web-ui/components/sidebar-nav.html b/web-ui/components/sidebar-nav.html index 476ae42..83ea818 100644 --- a/web-ui/components/sidebar-nav.html +++ b/web-ui/components/sidebar-nav.html @@ -46,8 +46,14 @@
@@ -112,9 +118,6 @@ 계정 관리 - - 권한 관리 - 작업자 관리 @@ -320,8 +323,6 @@ /* 메인 콘텐츠 여백 */ body.has-sidebar .dashboard-container, -body.has-sidebar .main-content, -body.has-sidebar .page-container, body.has-sidebar .work-report-container, body.has-sidebar .analysis-container, body.has-sidebar > .dashboard-main { @@ -329,15 +330,33 @@ body.has-sidebar > .dashboard-main { transition: margin-left 0.3s ease; } +/* page-container 사용 시: page-container에만 margin 적용 (main-content 중복 방지) */ +body.has-sidebar .page-container { + margin-left: 260px; + transition: margin-left 0.3s ease; +} + +/* page-container 없이 main-content만 있는 경우 */ +body.has-sidebar > .main-content { + margin-left: 260px; + transition: margin-left 0.3s ease; +} + body.has-sidebar.sidebar-collapsed .dashboard-container, -body.has-sidebar.sidebar-collapsed .main-content, -body.has-sidebar.sidebar-collapsed .page-container, body.has-sidebar.sidebar-collapsed .work-report-container, body.has-sidebar.sidebar-collapsed .analysis-container, body.has-sidebar.sidebar-collapsed > .dashboard-main { margin-left: 60px; } +body.has-sidebar.sidebar-collapsed .page-container { + margin-left: 60px; +} + +body.has-sidebar.sidebar-collapsed > .main-content { + margin-left: 60px; +} + /* 반응형 */ @media (max-width: 1024px) { .sidebar-nav { @@ -349,8 +368,8 @@ body.has-sidebar.sidebar-collapsed > .dashboard-main { } body.has-sidebar .dashboard-container, - body.has-sidebar .main-content, body.has-sidebar .page-container, + body.has-sidebar > .main-content, body.has-sidebar .work-report-container, body.has-sidebar .analysis-container, body.has-sidebar > .dashboard-main { diff --git a/web-ui/css/admin-pages.css b/web-ui/css/admin-pages.css index e502beb..fb42bc8 100644 --- a/web-ui/css/admin-pages.css +++ b/web-ui/css/admin-pages.css @@ -165,7 +165,8 @@ body { /* 메인 콘텐츠 영역 */ .main-content { flex: 1; - padding: var(--space-xl); + padding: var(--space-lg); + padding-left: var(--space-md); overflow-x: hidden; max-width: 100%; box-sizing: border-box; diff --git a/web-ui/css/admin-settings.css b/web-ui/css/admin-settings.css index f778586..477ca2f 100644 --- a/web-ui/css/admin-settings.css +++ b/web-ui/css/admin-settings.css @@ -784,3 +784,347 @@ font-size: var(--text-sm); color: var(--text-secondary); } + +/* 폴더 트리 스타일 */ +.folder-tree { + padding: 0; +} + +.folder-group { + margin-bottom: 0.5rem; + border: 1px solid #e9ecef; + border-radius: 8px; + overflow: hidden; +} + +.folder-header { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.75rem 1rem; + background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%); + cursor: pointer; + transition: all 0.2s ease; + user-select: none; +} + +.folder-header:hover { + background: linear-gradient(135deg, #e9ecef 0%, #dee2e6 100%); +} + +.folder-icon { + font-size: 1.25rem; +} + +.folder-name { + font-weight: 600; + color: #1a1a1a; + flex: 1; +} + +.folder-count { + font-size: 0.75rem; + color: #6c757d; + background: white; + padding: 0.125rem 0.5rem; + border-radius: 10px; +} + +.folder-toggle { + font-size: 0.75rem; + color: #6c757d; + transition: transform 0.2s ease; +} + +.folder-content { + padding: 0.5rem; + background: white; +} + +.page-item { + padding: 0.5rem 0.75rem; + margin-left: 1rem; + border-radius: 6px; + transition: all 0.2s ease; +} + +.page-item:hover { + background: #f8f9fa; +} + +.page-label { + display: flex; + align-items: center; + gap: 0.5rem; + cursor: pointer; + margin: 0; + width: 100%; +} + +.page-label input[type="checkbox"] { + width: 18px; + height: 18px; + cursor: pointer; + accent-color: #007bff; +} + +.page-label input[type="checkbox"]:disabled { + cursor: not-allowed; + opacity: 0.6; +} + +.file-icon { + font-size: 1rem; + opacity: 0.7; +} + +.page-label .page-name { + flex: 1; + font-size: 0.875rem; + color: #495057; +} + +.always-access-badge { + font-size: 0.65rem; + background: linear-gradient(135deg, #28a745 0%, #20c997 100%); + color: white; + padding: 0.125rem 0.5rem; + border-radius: 10px; + font-weight: 500; +} + +/* 활성화/비활성화 버튼 스타일 */ +.action-btn.activate { + background: linear-gradient(135deg, #28a745 0%, #20c997 100%); + color: white; +} + +.action-btn.activate:hover { + background: linear-gradient(135deg, #20c997 0%, #17a2b8 100%); + transform: translateY(-1px); + box-shadow: 0 4px 12px rgba(40, 167, 69, 0.3); +} + +.action-btn.deactivate { + background: linear-gradient(135deg, #6c757d 0%, #495057 100%); + color: white; +} + +.action-btn.deactivate:hover { + background: linear-gradient(135deg, #495057 0%, #343a40 100%); + transform: translateY(-1px); + box-shadow: 0 4px 12px rgba(108, 117, 125, 0.3); +} + +.action-btn.danger { + background: linear-gradient(135deg, #dc3545 0%, #c82333 100%); + color: white; +} + +.action-btn.danger:hover { + background: linear-gradient(135deg, #c82333 0%, #a71d2a 100%); + transform: translateY(-1px); + box-shadow: 0 4px 12px rgba(220, 53, 69, 0.3); +} + +/* 작업자 연결 스타일 */ +.worker-link-container { + display: flex; + align-items: center; + gap: 1rem; + padding: 0.75rem; + background: #f8f9fa; + border-radius: 8px; + border: 1px solid #e9ecef; +} + +.linked-worker-info { + flex: 1; + display: flex; + align-items: center; + gap: 0.5rem; +} + +.linked-worker-info .no-worker { + color: #6c757d; + font-style: italic; +} + +.linked-worker-info .worker-badge { + display: inline-flex; + align-items: center; + gap: 0.5rem; + padding: 0.375rem 0.75rem; + background: linear-gradient(135deg, #28a745 0%, #20c997 100%); + color: white; + border-radius: 20px; + font-size: 0.875rem; + font-weight: 500; +} + +.linked-worker-info .worker-badge .dept-name { + opacity: 0.9; + font-size: 0.75rem; +} + +/* 작업자 선택 모달 */ +.worker-select-layout { + display: grid; + grid-template-columns: 200px 1fr; + gap: 1rem; + min-height: 400px; +} + +.department-list-panel, +.worker-list-panel { + border: 1px solid #e9ecef; + border-radius: 8px; + overflow: hidden; +} + +.panel-title { + margin: 0; + padding: 0.75rem 1rem; + background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%); + font-size: 0.875rem; + font-weight: 600; + color: #495057; + border-bottom: 1px solid #e9ecef; +} + +.department-list { + max-height: 350px; + overflow-y: auto; +} + +.department-item { + padding: 0.75rem 1rem; + cursor: pointer; + border-bottom: 1px solid #f0f0f0; + transition: all 0.2s ease; + display: flex; + align-items: center; + gap: 0.5rem; +} + +.department-item:hover { + background: #f8f9fa; +} + +.department-item.active { + background: linear-gradient(135deg, #007bff 0%, #0056b3 100%); + color: white; +} + +.department-item .dept-icon { + font-size: 1rem; +} + +.department-item .dept-name { + flex: 1; + font-size: 0.875rem; +} + +.department-item .dept-count { + font-size: 0.75rem; + background: rgba(0,0,0,0.1); + padding: 0.125rem 0.5rem; + border-radius: 10px; +} + +.department-item.active .dept-count { + background: rgba(255,255,255,0.2); +} + +.worker-list { + max-height: 350px; + overflow-y: auto; + padding: 0.5rem; +} + +.worker-list .empty-message { + text-align: center; + padding: 2rem; + color: #6c757d; + font-style: italic; +} + +.worker-select-item { + display: flex; + align-items: center; + gap: 0.75rem; + padding: 0.75rem; + border-radius: 8px; + cursor: pointer; + transition: all 0.2s ease; + border: 2px solid transparent; +} + +.worker-select-item:hover { + background: #f8f9fa; + border-color: #e9ecef; +} + +.worker-select-item.selected { + background: #e7f3ff; + border-color: #007bff; +} + +.worker-select-item .worker-avatar { + width: 40px; + height: 40px; + background: linear-gradient(135deg, #007bff 0%, #6610f2 100%); + color: white; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + font-weight: 600; + font-size: 1rem; +} + +.worker-select-item .worker-info { + flex: 1; +} + +.worker-select-item .worker-name { + font-weight: 600; + color: #1a1a1a; + font-size: 0.9rem; +} + +.worker-select-item .worker-role { + font-size: 0.75rem; + color: #6c757d; +} + +.worker-select-item .select-indicator { + width: 24px; + height: 24px; + border: 2px solid #dee2e6; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + transition: all 0.2s ease; +} + +.worker-select-item.selected .select-indicator { + background: #007bff; + border-color: #007bff; + color: white; +} + +.worker-select-item .already-linked { + font-size: 0.7rem; + background: #ffc107; + color: #000; + padding: 0.125rem 0.5rem; + border-radius: 10px; +} + +/* 버튼 크기 조정 */ +.btn-sm { + padding: 0.375rem 0.75rem; + font-size: 0.8rem; +} diff --git a/web-ui/css/daily-patrol.css b/web-ui/css/daily-patrol.css new file mode 100644 index 0000000..d912771 --- /dev/null +++ b/web-ui/css/daily-patrol.css @@ -0,0 +1,625 @@ +/* daily-patrol.css - 일일순회점검 페이지 스타일 */ + +/* 세션 선택 영역 */ +.patrol-session-selector { + display: flex; + flex-wrap: wrap; + gap: 1.5rem; + padding: 1.5rem; + background: var(--surface-color, #fff); + border-radius: 12px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + margin-bottom: 1.5rem; +} + +.patrol-date-time { + display: flex; + flex-wrap: wrap; + align-items: flex-end; + gap: 1rem; +} + +.patrol-date-time .form-group { + min-width: 140px; +} + +.patrol-time-buttons { + display: flex; + gap: 0.5rem; +} + +.patrol-time-btn { + padding: 0.5rem 1.25rem; + border: 2px solid var(--border-color, #e2e8f0); + background: var(--surface-color, #fff); + border-radius: 8px; + cursor: pointer; + font-weight: 500; + transition: all 0.2s; +} + +.patrol-time-btn:hover { + border-color: var(--primary-color, #3b82f6); +} + +.patrol-time-btn.active { + background: var(--primary-color, #3b82f6); + border-color: var(--primary-color, #3b82f6); + color: #fff; +} + +/* 오늘 점검 현황 요약 */ +.today-status-summary { + flex: 1; + min-width: 300px; + display: flex; + gap: 1rem; + align-items: center; + padding: 1rem; + background: var(--bg-color, #f8fafc); + border-radius: 8px; +} + +.status-card { + text-align: center; + padding: 0.75rem 1rem; +} + +.status-label { + font-size: 0.8rem; + color: var(--text-secondary, #64748b); + margin-bottom: 0.25rem; +} + +.status-value { + font-size: 1.25rem; + font-weight: 600; +} + +.status-value.completed { + color: var(--success-color, #16a34a); +} + +.status-value.pending { + color: var(--warning-color, #f59e0b); +} + +/* 점검 영역 */ +.patrol-area { + background: var(--surface-color, #fff); + border-radius: 12px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + overflow: hidden; +} + +/* 세션 정보 바 */ +.session-info-bar { + display: flex; + justify-content: space-between; + align-items: center; + padding: 1rem 1.5rem; + background: linear-gradient(135deg, var(--primary-color, #3b82f6), #2563eb); + color: #fff; +} + +.session-info { + display: flex; + gap: 2rem; +} + +.session-info-item { + display: flex; + flex-direction: column; + gap: 0.25rem; +} + +.session-info-label { + font-size: 0.75rem; + opacity: 0.8; +} + +.session-info-value { + font-weight: 600; +} + +.session-progress { + display: flex; + align-items: center; + gap: 1rem; +} + +.progress-bar { + width: 150px; + height: 8px; + background: rgba(255, 255, 255, 0.3); + border-radius: 4px; + overflow: hidden; +} + +.progress-fill { + height: 100%; + background: #fff; + border-radius: 4px; + transition: width 0.3s ease; +} + +.progress-text { + font-weight: 600; + font-size: 0.9rem; +} + +/* 점검 콘텐츠 영역 */ +.patrol-content { + display: grid; + grid-template-columns: 1fr 400px; + min-height: 500px; +} + +@media (max-width: 1024px) { + .patrol-content { + grid-template-columns: 1fr; + } +} + +/* 지도 영역 */ +.patrol-map-section { + padding: 1.5rem; + border-right: 1px solid var(--border-color, #e2e8f0); +} + +.map-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 1rem; +} + +.map-header h3 { + font-size: 1rem; + font-weight: 600; + margin: 0; +} + +.map-legend { + display: flex; + gap: 1rem; + font-size: 0.8rem; +} + +.legend-item { + display: flex; + align-items: center; + gap: 0.25rem; +} + +.legend-item .dot { + width: 10px; + height: 10px; + border-radius: 50%; +} + +.legend-item.completed .dot { + background: var(--success-color, #16a34a); +} + +.legend-item.in-progress .dot { + background: var(--primary-color, #3b82f6); +} + +.legend-item.pending .dot { + background: var(--border-color, #cbd5e1); +} + +/* 지도 컨테이너 */ +.patrol-map-container { + position: relative; + width: 100%; + aspect-ratio: 16/10; + background: var(--bg-color, #f8fafc); + border-radius: 8px; + overflow: hidden; + border: 1px solid var(--border-color, #e2e8f0); +} + +.patrol-map-container img { + width: 100%; + height: 100%; + object-fit: contain; +} + +/* 작업장 마커 */ +.workplace-marker { + position: absolute; + padding: 0.5rem 0.75rem; + background: var(--surface-color, #fff); + border: 2px solid var(--border-color, #cbd5e1); + border-radius: 8px; + cursor: pointer; + font-size: 0.8rem; + font-weight: 500; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + transition: all 0.2s; + transform: translate(-50%, -50%); + white-space: nowrap; +} + +.workplace-marker:hover { + transform: translate(-50%, -50%) scale(1.05); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); +} + +.workplace-marker.completed { + border-color: var(--success-color, #16a34a); + background: #dcfce7; +} + +.workplace-marker.in-progress { + border-color: var(--primary-color, #3b82f6); + background: #dbeafe; +} + +.workplace-marker.selected { + border-color: var(--primary-color, #3b82f6); + background: var(--primary-color, #3b82f6); + color: #fff; + z-index: 10; +} + +/* 작업장 목록 (지도 대체) */ +.workplace-list-container { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); + gap: 0.75rem; + margin-top: 1rem; +} + +.workplace-card { + padding: 1rem; + background: var(--surface-color, #fff); + border: 2px solid var(--border-color, #e2e8f0); + border-radius: 8px; + cursor: pointer; + transition: all 0.2s; + text-align: center; +} + +.workplace-card:hover { + border-color: var(--primary-color, #3b82f6); +} + +.workplace-card.completed { + border-color: var(--success-color, #16a34a); + background: #f0fdf4; +} + +.workplace-card.selected { + border-color: var(--primary-color, #3b82f6); + background: #eff6ff; +} + +.workplace-card-name { + font-weight: 600; + margin-bottom: 0.25rem; +} + +.workplace-card-status { + font-size: 0.75rem; + color: var(--text-secondary, #64748b); +} + +/* 체크리스트 영역 */ +.patrol-checklist-section { + display: flex; + flex-direction: column; + background: var(--bg-color, #f8fafc); +} + +.checklist-header { + padding: 1rem 1.5rem; + border-bottom: 1px solid var(--border-color, #e2e8f0); + background: var(--surface-color, #fff); +} + +.checklist-header h3 { + font-size: 1rem; + font-weight: 600; + margin: 0 0 0.25rem; +} + +.checklist-subtitle { + font-size: 0.8rem; + color: var(--text-secondary, #64748b); + margin: 0; +} + +.checklist-content { + flex: 1; + overflow-y: auto; + padding: 1rem; +} + +.checklist-placeholder { + display: flex; + align-items: center; + justify-content: center; + height: 200px; + color: var(--text-secondary, #64748b); +} + +/* 체크리스트 카테고리 */ +.checklist-category { + margin-bottom: 1.5rem; +} + +.checklist-category-title { + font-size: 0.85rem; + font-weight: 600; + color: var(--text-secondary, #64748b); + text-transform: uppercase; + margin-bottom: 0.75rem; + padding-bottom: 0.5rem; + border-bottom: 1px solid var(--border-color, #e2e8f0); +} + +/* 체크 항목 */ +.check-item { + display: flex; + align-items: flex-start; + gap: 0.75rem; + padding: 0.75rem; + background: var(--surface-color, #fff); + border-radius: 8px; + margin-bottom: 0.5rem; + cursor: pointer; + transition: background 0.2s; +} + +.check-item:hover { + background: #f1f5f9; +} + +.check-item.checked { + background: #f0fdf4; +} + +.check-item-checkbox { + width: 24px; + height: 24px; + border: 2px solid var(--border-color, #cbd5e1); + border-radius: 6px; + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + transition: all 0.2s; +} + +.check-item.checked .check-item-checkbox { + background: var(--success-color, #16a34a); + border-color: var(--success-color, #16a34a); + color: #fff; +} + +.check-item-content { + flex: 1; +} + +.check-item-text { + font-size: 0.9rem; + margin-bottom: 0.25rem; +} + +.check-item-required { + color: var(--error-color, #dc2626); + margin-left: 0.25rem; +} + +.check-item-note { + font-size: 0.8rem; + color: var(--text-secondary, #64748b); +} + +/* 체크 결과 선택 */ +.check-result-selector { + display: flex; + gap: 0.5rem; + margin-top: 0.5rem; +} + +.check-result-btn { + padding: 0.25rem 0.75rem; + border: 1px solid var(--border-color, #e2e8f0); + border-radius: 4px; + font-size: 0.75rem; + background: var(--surface-color, #fff); + cursor: pointer; + transition: all 0.2s; +} + +.check-result-btn.good.active { + background: #dcfce7; + border-color: var(--success-color, #16a34a); + color: var(--success-color, #16a34a); +} + +.check-result-btn.warning.active { + background: #fef3c7; + border-color: var(--warning-color, #f59e0b); + color: var(--warning-color, #f59e0b); +} + +.check-result-btn.bad.active { + background: #fee2e2; + border-color: var(--error-color, #dc2626); + color: var(--error-color, #dc2626); +} + +/* 체크리스트 액션 */ +.checklist-actions { + padding: 1rem 1.5rem; + border-top: 1px solid var(--border-color, #e2e8f0); + background: var(--surface-color, #fff); + display: flex; + gap: 0.75rem; + justify-content: flex-end; +} + +/* 물품 현황 섹션 */ +.items-section { + padding: 1.5rem; + border-top: 1px solid var(--border-color, #e2e8f0); +} + +.items-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 1rem; +} + +.items-header h3 { + font-size: 1rem; + font-weight: 600; + margin: 0; +} + +.items-map-container { + position: relative; + width: 100%; + aspect-ratio: 16/9; + background: var(--bg-color, #f8fafc); + border-radius: 8px; + border: 1px solid var(--border-color, #e2e8f0); + overflow: hidden; +} + +.items-map-container img { + width: 100%; + height: 100%; + object-fit: contain; +} + +/* 물품 마커 */ +.item-marker { + position: absolute; + border: 2px solid; + border-radius: 4px; + background: rgba(255, 255, 255, 0.8); + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + font-size: 1.2rem; + transition: all 0.2s; +} + +.item-marker:hover { + transform: scale(1.1); + z-index: 10; +} + +.item-marker.container { + border-color: #3b82f6; + background: rgba(59, 130, 246, 0.2); +} + +.item-marker.plate { + border-color: #10b981; + background: rgba(16, 185, 129, 0.2); +} + +.item-marker.material { + border-color: #f59e0b; + background: rgba(245, 158, 11, 0.2); +} + +.item-marker.tool { + border-color: #8b5cf6; + background: rgba(139, 92, 246, 0.2); +} + +.item-marker.other { + border-color: #6b7280; + background: rgba(107, 114, 128, 0.2); +} + +/* 물품 범례 */ +.items-legend { + display: flex; + flex-wrap: wrap; + gap: 1rem; + margin-top: 1rem; + padding-top: 1rem; + border-top: 1px solid var(--border-color, #e2e8f0); +} + +.item-legend-item { + display: flex; + align-items: center; + gap: 0.5rem; + font-size: 0.85rem; +} + +.item-legend-icon { + width: 24px; + height: 24px; + border-radius: 4px; + display: flex; + align-items: center; + justify-content: center; + font-size: 0.9rem; +} + +/* 순회점검 완료 섹션 */ +.patrol-complete-section { + padding: 1.5rem; + border-top: 1px solid var(--border-color, #e2e8f0); + display: flex; + gap: 1rem; + align-items: flex-end; +} + +.patrol-complete-section .form-group { + flex: 1; + margin-bottom: 0; +} + +/* 반응형 */ +@media (max-width: 768px) { + .patrol-session-selector { + flex-direction: column; + } + + .patrol-date-time { + flex-direction: column; + width: 100%; + } + + .patrol-date-time .form-group { + width: 100%; + } + + .patrol-content { + grid-template-columns: 1fr; + } + + .patrol-map-section { + border-right: none; + border-bottom: 1px solid var(--border-color, #e2e8f0); + } + + .patrol-complete-section { + flex-direction: column; + } + + .session-info-bar { + flex-direction: column; + gap: 1rem; + text-align: center; + } + + .session-info { + flex-wrap: wrap; + justify-content: center; + } +} diff --git a/web-ui/css/equipment-management.css b/web-ui/css/equipment-management.css new file mode 100644 index 0000000..20f6d48 --- /dev/null +++ b/web-ui/css/equipment-management.css @@ -0,0 +1,361 @@ +/* equipment-management.css */ +/* 설비 관리 페이지 전용 스타일 */ + +/* 통계 요약 섹션 */ +.eq-stats-section { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); + gap: 1rem; + margin-bottom: 1.5rem; +} + +.eq-stat-card { + background: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%); + border-radius: 12px; + padding: 1.25rem; + border: 1px solid #e2e8f0; + transition: all 0.2s ease; +} + +.eq-stat-card:hover { + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08); +} + +.eq-stat-card.highlight { + background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%); + color: white; + border: none; +} + +.eq-stat-card.highlight .eq-stat-label { + color: rgba(255, 255, 255, 0.85); +} + +.eq-stat-label { + font-size: 0.8rem; + color: #64748b; + margin-bottom: 0.5rem; + font-weight: 500; +} + +.eq-stat-value { + font-size: 1.75rem; + font-weight: 700; + line-height: 1.2; +} + +.eq-stat-sub { + font-size: 0.75rem; + color: #94a3b8; + margin-top: 0.25rem; +} + +.eq-stat-card.highlight .eq-stat-sub { + color: rgba(255, 255, 255, 0.7); +} + +/* 필터 섹션 개선 */ +.eq-filter-section { + background: #f8fafc; + border-radius: 12px; + padding: 1rem 1.25rem; + margin-bottom: 1.5rem; + display: flex; + flex-wrap: wrap; + gap: 1rem; + align-items: flex-end; +} + +.eq-filter-group { + display: flex; + flex-direction: column; + gap: 0.35rem; + min-width: 140px; +} + +.eq-filter-group label { + font-size: 0.75rem; + font-weight: 600; + color: #64748b; + text-transform: uppercase; + letter-spacing: 0.5px; +} + +.eq-filter-group .form-control { + padding: 0.5rem 0.75rem; + font-size: 0.875rem; + border-radius: 8px; + border: 1px solid #e2e8f0; + background: white; +} + +.eq-filter-group .form-control:focus { + border-color: #3b82f6; + box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); +} + +.eq-search-group { + flex: 1; + min-width: 200px; +} + +.eq-search-group .form-control { + width: 100%; +} + +/* 테이블 개선 */ +.eq-table-container { + background: white; + border-radius: 12px; + border: 1px solid #e2e8f0; + overflow: hidden; +} + +.eq-table { + width: 100%; + border-collapse: collapse; + font-size: 0.875rem; +} + +.eq-table thead { + background: #f1f5f9; + position: sticky; + top: 0; + z-index: 10; +} + +.eq-table th { + padding: 0.875rem 1rem; + text-align: left; + font-weight: 600; + color: #475569; + font-size: 0.75rem; + text-transform: uppercase; + letter-spacing: 0.5px; + border-bottom: 2px solid #e2e8f0; + white-space: nowrap; +} + +.eq-table td { + padding: 0.75rem 1rem; + border-bottom: 1px solid #f1f5f9; + vertical-align: middle; +} + +.eq-table tbody tr { + transition: background 0.15s ease; +} + +.eq-table tbody tr:hover { + background: #f8fafc; +} + +.eq-table tbody tr:last-child td { + border-bottom: none; +} + +/* 테이블 컬럼별 스타일 */ +.eq-col-code { + font-weight: 600; + color: #1e40af; + white-space: nowrap; +} + +.eq-col-name { + font-weight: 500; + color: #1e293b; + max-width: 200px; +} + +.eq-col-model, +.eq-col-spec { + color: #64748b; + font-size: 0.8125rem; + max-width: 150px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.eq-col-price { + font-weight: 600; + color: #059669; + text-align: right; + white-space: nowrap; +} + +.eq-col-date { + color: #64748b; + font-size: 0.8125rem; + white-space: nowrap; +} + +/* 상태 배지 */ +.eq-status { + display: inline-flex; + align-items: center; + padding: 0.25rem 0.625rem; + border-radius: 9999px; + font-size: 0.75rem; + font-weight: 600; + white-space: nowrap; +} + +.eq-status-active { + background: #dcfce7; + color: #166534; +} + +.eq-status-maintenance { + background: #fef3c7; + color: #92400e; +} + +.eq-status-inactive { + background: #fee2e2; + color: #991b1b; +} + +/* 액션 버튼 */ +.eq-actions { + display: flex; + gap: 0.5rem; +} + +.eq-btn-action { + width: 32px; + height: 32px; + display: flex; + align-items: center; + justify-content: center; + border: none; + border-radius: 8px; + cursor: pointer; + transition: all 0.15s ease; + font-size: 0.875rem; +} + +.eq-btn-edit { + background: #eff6ff; + color: #3b82f6; +} + +.eq-btn-edit:hover { + background: #3b82f6; + color: white; +} + +.eq-btn-delete { + background: #fef2f2; + color: #ef4444; +} + +.eq-btn-delete:hover { + background: #ef4444; + color: white; +} + +/* 빈 상태 */ +.eq-empty-state { + text-align: center; + padding: 4rem 2rem; + color: #64748b; +} + +.eq-empty-state p { + margin-bottom: 1.5rem; + font-size: 1rem; +} + +/* 테이블 스크롤 래퍼 */ +.eq-table-wrapper { + overflow-x: auto; + max-height: calc(100vh - 380px); + overflow-y: auto; +} + +/* 결과 카운트 */ +.eq-result-count { + display: flex; + justify-content: space-between; + align-items: center; + padding: 0.75rem 1rem; + background: #f8fafc; + border-bottom: 1px solid #e2e8f0; + font-size: 0.8125rem; + color: #64748b; +} + +.eq-result-count strong { + color: #1e293b; +} + +/* 반응형 */ +@media (max-width: 1200px) { + .eq-stats-section { + grid-template-columns: repeat(3, 1fr); + } +} + +@media (max-width: 768px) { + .eq-stats-section { + grid-template-columns: repeat(2, 1fr); + } + + .eq-filter-section { + flex-direction: column; + } + + .eq-filter-group { + width: 100%; + } + + .eq-table th, + .eq-table td { + padding: 0.625rem 0.75rem; + } + + .eq-col-spec, + .eq-col-model { + display: none; + } +} + +/* 모달 개선 */ +.eq-modal-body { + padding: 1.5rem; +} + +.eq-form-section { + margin-bottom: 1.5rem; + padding-bottom: 1.5rem; + border-bottom: 1px solid #f1f5f9; +} + +.eq-form-section:last-child { + margin-bottom: 0; + padding-bottom: 0; + border-bottom: none; +} + +.eq-form-section-title { + font-size: 0.8rem; + font-weight: 600; + color: #3b82f6; + text-transform: uppercase; + letter-spacing: 0.5px; + margin-bottom: 1rem; +} + +.eq-form-row { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 1rem; +} + +@media (max-width: 600px) { + .eq-form-row { + grid-template-columns: 1fr; + } +} diff --git a/web-ui/css/tbm.css b/web-ui/css/tbm.css new file mode 100644 index 0000000..82ae095 --- /dev/null +++ b/web-ui/css/tbm.css @@ -0,0 +1,1185 @@ +/* tbm.css - TBM 관리 페이지 전용 스타일 */ + +/* ===== 페이지 레이아웃 ===== */ +.tbm-container { + max-width: 1400px; + margin: 0 auto; + padding: 1.5rem; +} + +/* ===== 페이지 헤더 ===== */ +.tbm-page-header { + display: flex; + justify-content: space-between; + align-items: flex-start; + margin-bottom: 1.5rem; + flex-wrap: wrap; + gap: 1rem; +} + +.tbm-title-section { + flex: 1; +} + +.tbm-page-title { + font-size: 1.75rem; + font-weight: 700; + color: #1e293b; + margin: 0 0 0.25rem 0; + display: flex; + align-items: center; + gap: 0.5rem; +} + +.tbm-page-title-icon { + font-size: 1.5rem; +} + +.tbm-page-description { + font-size: 0.9rem; + color: #64748b; + margin: 0; +} + +/* ===== 탭 메뉴 ===== */ +.tbm-tab-menu { + display: flex; + gap: 0.25rem; + border-bottom: 2px solid #e2e8f0; + margin-bottom: 1.5rem; + overflow-x: auto; + -webkit-overflow-scrolling: touch; +} + +.tbm-tab-btn { + padding: 0.875rem 1.5rem; + background: transparent; + border: none; + border-bottom: 3px solid transparent; + margin-bottom: -2px; + font-size: 0.9375rem; + font-weight: 600; + color: #64748b; + cursor: pointer; + transition: all 0.2s ease; + white-space: nowrap; + display: flex; + align-items: center; + gap: 0.5rem; +} + +.tbm-tab-btn:hover { + color: #3b82f6; + background: rgba(59, 130, 246, 0.05); +} + +.tbm-tab-btn.active { + color: #3b82f6; + border-bottom-color: #3b82f6; + background: rgba(59, 130, 246, 0.05); +} + +.tbm-tab-icon { + font-size: 1.125rem; +} + +.tbm-tab-badge { + background: #ef4444; + color: white; + font-size: 0.7rem; + font-weight: 600; + padding: 0.125rem 0.5rem; + border-radius: 10px; + min-width: 18px; + text-align: center; +} + +/* ===== 탭 컨텐츠 ===== */ +.tbm-tab-content { + display: none; +} + +.tbm-tab-content.active { + display: block; +} + +/* ===== 섹션 스타일 ===== */ +.tbm-section { + background: white; + border-radius: 12px; + border: 1px solid #e2e8f0; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05); + margin-bottom: 1.5rem; + overflow: hidden; +} + +.tbm-section-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 1rem 1.25rem; + background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%); + border-bottom: 1px solid #e2e8f0; + flex-wrap: wrap; + gap: 0.75rem; +} + +.tbm-section-title { + font-size: 1.125rem; + font-weight: 600; + color: #1e293b; + margin: 0; + display: flex; + align-items: center; + gap: 0.5rem; +} + +.tbm-section-actions { + display: flex; + gap: 0.5rem; + flex-wrap: wrap; +} + +.tbm-section-body { + padding: 1.25rem; +} + +/* ===== 통계 바 ===== */ +.tbm-stats-bar { + display: flex; + gap: 1.5rem; + padding: 1rem 1.25rem; + background: #f8fafc; + border-bottom: 1px solid #e2e8f0; + flex-wrap: wrap; +} + +.tbm-stat-item { + display: flex; + align-items: center; + gap: 0.5rem; + font-size: 0.875rem; + color: #64748b; +} + +.tbm-stat-label { + color: #94a3b8; +} + +.tbm-stat-value { + font-weight: 700; + color: #1e293b; + font-size: 1rem; +} + +.tbm-stat-value.highlight { + color: #3b82f6; +} + +.tbm-stat-value.success { + color: #10b981; +} + +.tbm-stat-value.warning { + color: #f59e0b; +} + +/* ===== TBM 세션 카드 그리드 ===== */ +.tbm-card-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); + gap: 1rem; + padding: 1.25rem; +} + +/* ===== TBM 세션 카드 ===== */ +.tbm-session-card { + background: white; + border: 1px solid #e2e8f0; + border-radius: 12px; + overflow: hidden; + transition: all 0.2s ease; + cursor: pointer; +} + +.tbm-session-card:hover { + border-color: #3b82f6; + box-shadow: 0 4px 12px rgba(59, 130, 246, 0.15); + transform: translateY(-2px); +} + +.tbm-card-header { + padding: 1rem 1.25rem; + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + color: white; +} + +.tbm-card-header-top { + display: flex; + justify-content: space-between; + align-items: flex-start; + margin-bottom: 0.5rem; +} + +.tbm-card-leader { + font-size: 1rem; + font-weight: 600; + margin: 0; +} + +.tbm-card-leader-role { + font-size: 0.75rem; + opacity: 0.85; + font-weight: 400; +} + +.tbm-card-status { + padding: 0.25rem 0.625rem; + border-radius: 12px; + font-size: 0.75rem; + font-weight: 600; +} + +.tbm-card-status.draft { + background: rgba(254, 243, 199, 0.9); + color: #92400e; +} + +.tbm-card-status.completed { + background: rgba(220, 252, 231, 0.9); + color: #166534; +} + +.tbm-card-status.cancelled { + background: rgba(254, 226, 226, 0.9); + color: #991b1b; +} + +.tbm-card-date { + font-size: 0.8rem; + opacity: 0.9; + display: flex; + align-items: center; + gap: 0.375rem; +} + +.tbm-card-body { + padding: 1rem 1.25rem; +} + +.tbm-card-info-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 0.75rem; +} + +.tbm-card-info-item { + display: flex; + flex-direction: column; + gap: 0.125rem; +} + +.tbm-card-info-label { + font-size: 0.7rem; + color: #94a3b8; + text-transform: uppercase; + letter-spacing: 0.025em; +} + +.tbm-card-info-value { + font-size: 0.875rem; + font-weight: 600; + color: #1e293b; +} + +.tbm-card-footer { + display: flex; + justify-content: flex-end; + gap: 0.5rem; + padding: 0.75rem 1.25rem; + background: #f8fafc; + border-top: 1px solid #e2e8f0; +} + +/* ===== 날짜별 그룹 ===== */ +.tbm-date-group { + margin-bottom: 1.5rem; + border: 1px solid #e2e8f0; + border-radius: 12px; + overflow: hidden; + background: white; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05); +} + +.tbm-date-header { + display: flex; + align-items: center; + padding: 1rem 1.25rem; + background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%); + border-bottom: 1px solid #e2e8f0; + cursor: pointer; + user-select: none; + transition: background 0.2s; +} + +.tbm-date-header:hover { + background: linear-gradient(135deg, #f1f5f9 0%, #e2e8f0 100%); +} + +.tbm-date-header.today { + background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%); + border-left: 4px solid #3b82f6; +} + +.tbm-date-toggle { + font-size: 0.75rem; + color: #64748b; + margin-right: 0.75rem; + transition: transform 0.2s; +} + +.tbm-date-group.collapsed .tbm-date-toggle { + transform: rotate(-90deg); +} + +.tbm-date-title { + font-size: 1.1rem; + font-weight: 600; + color: #1e293b; + margin-right: 0.5rem; +} + +.tbm-date-day { + font-size: 0.875rem; + color: #64748b; + padding: 0.25rem 0.5rem; + background: white; + border-radius: 4px; + margin-right: 0.5rem; +} + +.tbm-today-badge { + background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%); + color: white; + padding: 0.2rem 0.6rem; + border-radius: 10px; + font-size: 0.7rem; + font-weight: 600; + margin-left: 0.5rem; +} + +.tbm-date-count { + margin-left: auto; + font-size: 0.875rem; + color: #64748b; + font-weight: 500; +} + +.tbm-date-content { + padding: 1rem; + background: #fafafa; +} + +.tbm-date-group.collapsed .tbm-date-content { + display: none; +} + +.tbm-date-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); + gap: 1rem; +} + +/* ===== 빈 상태 ===== */ +.tbm-empty-state { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 3rem 2rem; + text-align: center; + color: #64748b; +} + +.tbm-empty-icon { + font-size: 3rem; + margin-bottom: 1rem; + opacity: 0.5; +} + +.tbm-empty-title { + font-size: 1.125rem; + font-weight: 600; + color: #475569; + margin: 0 0 0.5rem 0; +} + +.tbm-empty-description { + font-size: 0.9rem; + color: #94a3b8; + margin: 0 0 1.5rem 0; + max-width: 400px; +} + +/* ===== 버튼 스타일 ===== */ +.tbm-btn { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 0.5rem; + padding: 0.625rem 1.25rem; + border-radius: 8px; + font-size: 0.875rem; + font-weight: 600; + cursor: pointer; + transition: all 0.2s ease; + border: none; + text-decoration: none; +} + +.tbm-btn-primary { + background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%); + color: white; + box-shadow: 0 2px 4px rgba(59, 130, 246, 0.3); +} + +.tbm-btn-primary:hover { + background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%); + box-shadow: 0 4px 8px rgba(59, 130, 246, 0.4); + transform: translateY(-1px); +} + +.tbm-btn-secondary { + background: white; + color: #475569; + border: 1px solid #e2e8f0; +} + +.tbm-btn-secondary:hover { + background: #f8fafc; + border-color: #cbd5e1; +} + +.tbm-btn-success { + background: linear-gradient(135deg, #10b981 0%, #059669 100%); + color: white; +} + +.tbm-btn-success:hover { + background: linear-gradient(135deg, #059669 0%, #047857 100%); +} + +.tbm-btn-danger { + background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%); + color: white; +} + +.tbm-btn-danger:hover { + background: linear-gradient(135deg, #dc2626 0%, #b91c1c 100%); +} + +.tbm-btn-sm { + padding: 0.375rem 0.75rem; + font-size: 0.8rem; +} + +.tbm-btn-icon { + font-size: 1.125rem; +} + +/* ===== 모달 스타일 ===== */ +.tbm-modal-overlay { + position: fixed; + inset: 0; + background: rgba(15, 23, 42, 0.6); + backdrop-filter: blur(4px); + display: flex; + align-items: center; + justify-content: center; + z-index: 1000; + padding: 1rem; +} + +.tbm-modal { + background: white; + border-radius: 16px; + width: 100%; + max-width: 900px; + max-height: 90vh; + display: flex; + flex-direction: column; + box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); + animation: modalSlideIn 0.2s ease-out; +} + +@keyframes modalSlideIn { + from { + opacity: 0; + transform: scale(0.95) translateY(-10px); + } + to { + opacity: 1; + transform: scale(1) translateY(0); + } +} + +.tbm-modal-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 1.25rem 1.5rem; + border-bottom: 1px solid #e2e8f0; + background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%); + border-radius: 16px 16px 0 0; +} + +.tbm-modal-title { + font-size: 1.25rem; + font-weight: 700; + color: #1e293b; + margin: 0; + display: flex; + align-items: center; + gap: 0.5rem; +} + +.tbm-modal-close { + width: 36px; + height: 36px; + border-radius: 8px; + border: none; + background: transparent; + color: #64748b; + font-size: 1.5rem; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + transition: all 0.2s; +} + +.tbm-modal-close:hover { + background: #f1f5f9; + color: #1e293b; +} + +.tbm-modal-body { + flex: 1; + overflow-y: auto; + padding: 1.5rem; +} + +.tbm-modal-footer { + display: flex; + justify-content: flex-end; + gap: 0.75rem; + padding: 1.25rem 1.5rem; + border-top: 1px solid #e2e8f0; + background: #f8fafc; + border-radius: 0 0 16px 16px; +} + +/* ===== 폼 스타일 ===== */ +.tbm-form-section { + margin-bottom: 1.5rem; +} + +.tbm-form-section-title { + font-size: 1rem; + font-weight: 600; + color: #1e293b; + margin: 0 0 1rem 0; + padding-bottom: 0.5rem; + border-bottom: 1px solid #e2e8f0; + display: flex; + align-items: center; + gap: 0.5rem; +} + +.tbm-form-row { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: 1rem; + margin-bottom: 1rem; +} + +.tbm-form-group { + display: flex; + flex-direction: column; + gap: 0.375rem; +} + +.tbm-form-label { + font-size: 0.8125rem; + font-weight: 600; + color: #475569; +} + +.tbm-form-required { + color: #ef4444; + margin-left: 0.125rem; +} + +.tbm-form-input { + padding: 0.625rem 0.875rem; + border: 1px solid #d1d5db; + border-radius: 8px; + font-size: 0.875rem; + transition: all 0.2s; + background: white; +} + +.tbm-form-input:focus { + outline: none; + border-color: #3b82f6; + box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15); +} + +.tbm-form-input:disabled, +.tbm-form-input[readonly] { + background: #f1f5f9; + color: #64748b; + cursor: not-allowed; +} + +.tbm-form-input-readonly { + background: #f1f5f9; + padding: 0.625rem 0.875rem; + border: 1px solid #e2e8f0; + border-radius: 8px; + font-size: 0.875rem; + color: #475569; +} + +/* ===== 작업자 카드 스타일 ===== */ +.tbm-worker-list { + display: flex; + flex-direction: column; + gap: 0.75rem; + min-height: 100px; +} + +.tbm-worker-card { + background: white; + border: 1px solid #e2e8f0; + border-radius: 10px; + overflow: hidden; + transition: all 0.2s; +} + +.tbm-worker-card:hover { + border-color: #cbd5e1; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); +} + +.tbm-worker-card-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 0.75rem 1rem; + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + color: white; +} + +.tbm-worker-info { + display: flex; + align-items: center; + gap: 0.75rem; +} + +.tbm-worker-avatar { + width: 36px; + height: 36px; + border-radius: 50%; + background: rgba(255, 255, 255, 0.2); + display: flex; + align-items: center; + justify-content: center; + font-weight: 600; + font-size: 0.875rem; +} + +.tbm-worker-name { + font-weight: 600; + font-size: 0.9375rem; +} + +.tbm-worker-role { + font-size: 0.75rem; + opacity: 0.85; +} + +.tbm-worker-remove { + width: 28px; + height: 28px; + border-radius: 6px; + border: none; + background: rgba(255, 255, 255, 0.2); + color: white; + font-size: 1rem; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + transition: background 0.2s; +} + +.tbm-worker-remove:hover { + background: rgba(239, 68, 68, 0.8); +} + +.tbm-worker-card-body { + padding: 1rem; +} + +.tbm-task-row { + display: grid; + grid-template-columns: 1fr 1fr 1fr auto; + gap: 0.75rem; + padding: 0.75rem; + background: #f8fafc; + border-radius: 8px; + margin-bottom: 0.5rem; + align-items: end; +} + +.tbm-task-add-btn { + width: 100%; + padding: 0.5rem; + background: transparent; + border: 2px dashed #cbd5e1; + border-radius: 8px; + color: #64748b; + font-size: 0.8125rem; + cursor: pointer; + transition: all 0.2s; +} + +.tbm-task-add-btn:hover { + border-color: #3b82f6; + color: #3b82f6; + background: rgba(59, 130, 246, 0.05); +} + +/* ===== 작업자 선택 그리드 ===== */ +.tbm-worker-select-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); + gap: 0.75rem; + max-height: 400px; + overflow-y: auto; + padding: 0.5rem; +} + +.tbm-worker-select-card { + padding: 0.75rem; + border: 2px solid #e2e8f0; + border-radius: 10px; + cursor: pointer; + transition: all 0.2s; + background: white; +} + +.tbm-worker-select-card:hover { + border-color: #3b82f6; + background: rgba(59, 130, 246, 0.05); +} + +.tbm-worker-select-card.selected { + border-color: #3b82f6; + background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%); +} + +.tbm-worker-select-check { + display: flex; + align-items: center; + justify-content: center; + width: 20px; + height: 20px; + border-radius: 50%; + border: 2px solid #d1d5db; + margin-bottom: 0.5rem; + font-size: 0.75rem; + color: transparent; + transition: all 0.2s; +} + +.tbm-worker-select-card.selected .tbm-worker-select-check { + background: #3b82f6; + border-color: #3b82f6; + color: white; +} + +.tbm-worker-select-name { + font-weight: 600; + font-size: 0.875rem; + color: #1e293b; + margin-bottom: 0.25rem; +} + +.tbm-worker-select-role { + font-size: 0.75rem; + color: #64748b; +} + +/* ===== 선택 버튼 스타일 ===== */ +.tbm-select-btn { + width: 100%; + padding: 0.625rem 0.875rem; + border: 1px solid #d1d5db; + border-radius: 8px; + background: white; + text-align: left; + font-size: 0.875rem; + color: #64748b; + cursor: pointer; + transition: all 0.2s; + display: flex; + align-items: center; + justify-content: space-between; +} + +.tbm-select-btn:hover:not(:disabled) { + border-color: #3b82f6; + background: rgba(59, 130, 246, 0.05); +} + +.tbm-select-btn:disabled { + background: #f1f5f9; + cursor: not-allowed; +} + +.tbm-select-btn.selected { + color: #1e293b; + border-color: #3b82f6; + background: rgba(59, 130, 246, 0.05); +} + +.tbm-select-arrow { + font-size: 0.75rem; + color: #94a3b8; +} + +/* ===== 안전 체크리스트 ===== */ +.tbm-safety-list { + display: flex; + flex-direction: column; + gap: 0.75rem; +} + +.tbm-safety-category { + background: #f8fafc; + border-radius: 10px; + padding: 1rem; +} + +.tbm-safety-category-title { + font-size: 0.9375rem; + font-weight: 600; + color: #1e293b; + margin: 0 0 0.75rem 0; + padding-bottom: 0.5rem; + border-bottom: 1px solid #e2e8f0; +} + +.tbm-safety-items { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.tbm-safety-item { + display: flex; + align-items: center; + gap: 0.75rem; + padding: 0.625rem 0.75rem; + background: white; + border-radius: 8px; + border: 1px solid #e2e8f0; + cursor: pointer; + transition: all 0.2s; +} + +.tbm-safety-item:hover { + border-color: #3b82f6; +} + +.tbm-safety-item.checked { + background: linear-gradient(135deg, #f0fdf4 0%, #dcfce7 100%); + border-color: #22c55e; +} + +.tbm-safety-checkbox { + width: 22px; + height: 22px; + border-radius: 6px; + border: 2px solid #d1d5db; + display: flex; + align-items: center; + justify-content: center; + font-size: 0.875rem; + color: transparent; + transition: all 0.2s; + flex-shrink: 0; +} + +.tbm-safety-item.checked .tbm-safety-checkbox { + background: #22c55e; + border-color: #22c55e; + color: white; +} + +.tbm-safety-text { + flex: 1; + font-size: 0.875rem; + color: #374151; +} + +.tbm-safety-required { + font-size: 0.7rem; + padding: 0.125rem 0.5rem; + border-radius: 10px; + background: #fef3c7; + color: #92400e; + font-weight: 600; +} + +/* ===== 항목 선택 리스트 ===== */ +.tbm-item-list { + display: flex; + flex-direction: column; + gap: 0.5rem; + max-height: 400px; + overflow-y: auto; +} + +.tbm-item-option { + padding: 0.875rem 1rem; + border: 1px solid #e2e8f0; + border-radius: 10px; + cursor: pointer; + transition: all 0.2s; + background: white; +} + +.tbm-item-option:hover { + border-color: #3b82f6; + background: rgba(59, 130, 246, 0.05); +} + +.tbm-item-option.selected { + border-color: #3b82f6; + background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%); +} + +.tbm-item-name { + font-weight: 600; + color: #1e293b; + margin-bottom: 0.125rem; +} + +.tbm-item-desc { + font-size: 0.8125rem; + color: #64748b; +} + +/* ===== 알림 박스 ===== */ +.tbm-alert { + padding: 1rem 1.25rem; + border-radius: 10px; + margin-bottom: 1rem; + display: flex; + align-items: flex-start; + gap: 0.75rem; +} + +.tbm-alert-icon { + font-size: 1.25rem; + flex-shrink: 0; +} + +.tbm-alert-content { + flex: 1; +} + +.tbm-alert-title { + font-weight: 600; + margin-bottom: 0.25rem; +} + +.tbm-alert-text { + font-size: 0.875rem; +} + +.tbm-alert-info { + background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%); + border: 1px solid #3b82f6; +} + +.tbm-alert-info .tbm-alert-title { + color: #1e40af; +} + +.tbm-alert-info .tbm-alert-text { + color: #1e40af; +} + +.tbm-alert-warning { + background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%); + border: 1px solid #f59e0b; +} + +.tbm-alert-warning .tbm-alert-title { + color: #92400e; +} + +.tbm-alert-warning .tbm-alert-text { + color: #92400e; +} + +/* ===== 반응형 ===== */ +@media (max-width: 768px) { + .tbm-container { + padding: 1rem; + } + + .tbm-page-header { + flex-direction: column; + align-items: stretch; + } + + .tbm-tab-menu { + gap: 0; + } + + .tbm-tab-btn { + flex: 1; + justify-content: center; + padding: 0.75rem; + font-size: 0.8125rem; + } + + .tbm-card-grid, + .tbm-date-grid { + grid-template-columns: 1fr; + } + + .tbm-task-row { + grid-template-columns: 1fr; + gap: 0.5rem; + } + + .tbm-form-row { + grid-template-columns: 1fr; + } + + .tbm-worker-select-grid { + grid-template-columns: repeat(2, 1fr); + } + + .tbm-modal { + max-width: 100%; + max-height: 100%; + border-radius: 0; + } + + .tbm-modal-header, + .tbm-modal-footer { + border-radius: 0; + } +} + +@media (max-width: 480px) { + .tbm-page-title { + font-size: 1.375rem; + } + + .tbm-worker-select-grid { + grid-template-columns: 1fr; + } + + .tbm-section-header { + flex-direction: column; + align-items: stretch; + gap: 0.75rem; + } + + .tbm-section-actions { + justify-content: flex-end; + } + + .tbm-stats-bar { + flex-direction: column; + gap: 0.5rem; + } + + .tbm-stat-item { + justify-content: space-between; + padding: 0.25rem 0; + border-bottom: 1px solid #f1f5f9; + } + + .tbm-stat-item:last-child { + border-bottom: none; + } +} + +/* ===== 작업장 선택 지도 ===== */ +.tbm-workplace-map-container { + text-align: center; + position: relative; + display: inline-block; + max-width: 100%; + margin: 0 auto; +} + +.tbm-workplace-map-container canvas { + max-width: 100%; + border-radius: 8px; + cursor: pointer; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); +} + +/* ===== 토스트 ===== */ +.tbm-toast-container { + position: fixed; + bottom: 1.5rem; + right: 1.5rem; + z-index: 9999; + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.tbm-toast { + padding: 1rem 1.25rem; + border-radius: 10px; + background: #1e293b; + color: white; + font-size: 0.875rem; + box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2); + animation: toastSlideIn 0.3s ease-out; +} + +.tbm-toast.success { + background: linear-gradient(135deg, #10b981 0%, #059669 100%); +} + +.tbm-toast.error { + background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%); +} + +.tbm-toast.warning { + background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%); +} + +@keyframes toastSlideIn { + from { + opacity: 0; + transform: translateX(100%); + } + to { + opacity: 1; + transform: translateX(0); + } +} diff --git a/web-ui/css/workplace-management.css b/web-ui/css/workplace-management.css new file mode 100644 index 0000000..3afe03e --- /dev/null +++ b/web-ui/css/workplace-management.css @@ -0,0 +1,1427 @@ +/** + * 작업장 관리 페이지 전용 스타일 + * 모던하고 직관적인 UI/UX + */ + +/* ============================================ + 1. 기본 설정 및 변수 + ============================================ */ +:root { + --wp-primary: #0ea5e9; + --wp-primary-dark: #0284c7; + --wp-primary-light: #e0f2fe; + --wp-secondary: #64748b; + --wp-success: #10b981; + --wp-warning: #f59e0b; + --wp-danger: #ef4444; + --wp-info: #6366f1; + + --wp-bg: #f1f5f9; + --wp-bg-card: #ffffff; + --wp-bg-hover: #f8fafc; + + --wp-text: #1e293b; + --wp-text-secondary: #64748b; + --wp-text-muted: #94a3b8; + + --wp-border: #e2e8f0; + --wp-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1); + --wp-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1); +} + +/* ============================================ + 2. 페이지 레이아웃 (기존 admin 레이아웃 호환) + ============================================ */ +/* main-content의 기본 패딩을 줄여서 사이드바와의 간격 조정 */ +.page-container > .main-content:has(.wp-content) { + padding: 16px !important; + padding-left: 12px !important; +} + +.wp-content { + padding: 0; + max-width: 100%; + width: 100%; +} + +/* ============================================ + 3. 페이지 헤더 + ============================================ */ +.wp-page-header { + display: flex; + justify-content: space-between; + align-items: center; + flex-wrap: wrap; + gap: 16px; + padding: 24px 28px; + background: linear-gradient(135deg, var(--wp-primary) 0%, var(--wp-primary-dark) 100%); + border-radius: 16px; + margin-bottom: 24px; + box-shadow: var(--wp-shadow-lg); +} + +.wp-header-content { + flex: 1; +} + +.wp-page-title { + font-size: 28px; + font-weight: 700; + color: white; + margin: 0 0 8px 0; + display: flex; + align-items: center; + gap: 12px; +} + +.wp-page-title-icon { + font-size: 32px; +} + +.wp-page-description { + font-size: 14px; + color: rgba(255, 255, 255, 0.85); + margin: 0; +} + +.wp-header-actions { + display: flex; + gap: 10px; +} + +.wp-btn { + display: inline-flex; + align-items: center; + gap: 8px; + padding: 10px 20px; + font-size: 14px; + font-weight: 600; + border: none; + border-radius: 10px; + cursor: pointer; + transition: all 0.2s ease; + white-space: nowrap; +} + +.wp-btn-primary { + background: white; + color: var(--wp-primary); + box-shadow: var(--wp-shadow); +} + +.wp-btn-primary:hover { + background: var(--wp-primary-light); + transform: translateY(-2px); + box-shadow: var(--wp-shadow-lg); +} + +.wp-btn-secondary { + background: rgba(255, 255, 255, 0.15); + color: white; + border: 1px solid rgba(255, 255, 255, 0.3); +} + +.wp-btn-secondary:hover { + background: rgba(255, 255, 255, 0.25); +} + +.wp-btn-icon { + font-size: 16px; +} + +/* ============================================ + 4. 통계 카드 + ============================================ */ +.wp-stats-row { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 16px; + margin-bottom: 24px; +} + +.wp-stat-card { + background: var(--wp-bg-card); + border-radius: 14px; + padding: 20px 24px; + display: flex; + align-items: center; + gap: 16px; + box-shadow: var(--wp-shadow); + transition: all 0.2s ease; + border: 1px solid var(--wp-border); +} + +.wp-stat-card:hover { + transform: translateY(-2px); + box-shadow: var(--wp-shadow-lg); +} + +.wp-stat-icon { + width: 56px; + height: 56px; + border-radius: 12px; + display: flex; + align-items: center; + justify-content: center; + font-size: 26px; +} + +.wp-stat-icon.factory { + background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%); +} + +.wp-stat-icon.workplace { + background: linear-gradient(135deg, #d1fae5 0%, #a7f3d0 100%); +} + +.wp-stat-icon.active { + background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%); +} + +.wp-stat-icon.equipment { + background: linear-gradient(135deg, #e0e7ff 0%, #c7d2fe 100%); +} + +.wp-stat-content h3 { + font-size: 28px; + font-weight: 700; + color: var(--wp-text); + margin: 0; + line-height: 1; +} + +.wp-stat-content p { + font-size: 13px; + color: var(--wp-text-secondary); + margin: 4px 0 0 0; +} + +/* ============================================ + 5. 공장 탭 (가로 스크롤) + ============================================ */ +.wp-factory-tabs { + display: flex; + gap: 8px; + padding: 12px; + background: var(--wp-bg-card); + border-radius: 14px; + margin-bottom: 24px; + box-shadow: var(--wp-shadow); + overflow-x: auto; + scrollbar-width: thin; +} + +.wp-factory-tabs::-webkit-scrollbar { + height: 6px; +} + +.wp-factory-tabs::-webkit-scrollbar-track { + background: var(--wp-bg); + border-radius: 3px; +} + +.wp-factory-tabs::-webkit-scrollbar-thumb { + background: var(--wp-border); + border-radius: 3px; +} + +.wp-tab-btn { + display: flex; + align-items: center; + gap: 10px; + padding: 12px 20px; + font-size: 14px; + font-weight: 600; + color: var(--wp-text-secondary); + background: transparent; + border: 2px solid transparent; + border-radius: 10px; + cursor: pointer; + transition: all 0.2s ease; + white-space: nowrap; + min-width: max-content; +} + +.wp-tab-btn:hover { + background: var(--wp-bg-hover); + color: var(--wp-text); +} + +.wp-tab-btn.active { + background: var(--wp-primary-light); + color: var(--wp-primary); + border-color: var(--wp-primary); +} + +.wp-tab-icon { + font-size: 18px; +} + +.wp-tab-count { + background: var(--wp-bg); + color: var(--wp-text-secondary); + padding: 2px 8px; + border-radius: 10px; + font-size: 12px; + font-weight: 700; +} + +.wp-tab-btn.active .wp-tab-count { + background: var(--wp-primary); + color: white; +} + +.wp-tab-btn-add { + background: var(--wp-primary-light); + color: var(--wp-primary); + border: 2px dashed var(--wp-primary); + border-style: dashed; +} + +.wp-tab-btn-add:hover { + background: var(--wp-primary); + color: white; + border-style: solid; +} + +/* ============================================ + 6. 공장 레이아웃 지도 섹션 + ============================================ */ +.wp-layout-section { + background: var(--wp-bg-card); + border-radius: 16px; + margin-bottom: 24px; + box-shadow: var(--wp-shadow); + overflow: hidden; + border: 1px solid var(--wp-border); +} + +.wp-layout-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 20px 24px; + background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%); + border-bottom: 1px solid var(--wp-border); +} + +.wp-layout-title { + display: flex; + align-items: center; + gap: 12px; + font-size: 18px; + font-weight: 700; + color: var(--wp-text); + margin: 0; +} + +.wp-layout-title-icon { + font-size: 24px; +} + +.wp-layout-body { + padding: 24px; +} + +.wp-layout-preview { + background: var(--wp-bg); + border-radius: 12px; + padding: 24px; + text-align: center; + min-height: 200px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.wp-layout-empty { + color: var(--wp-text-muted); +} + +.wp-layout-empty-icon { + font-size: 48px; + margin-bottom: 12px; + opacity: 0.5; +} + +.wp-layout-empty p { + margin: 0; + font-size: 14px; +} + +/* ============================================ + 7. 작업장 목록 섹션 + ============================================ */ +.wp-workplace-section { + background: var(--wp-bg-card); + border-radius: 16px; + box-shadow: var(--wp-shadow); + overflow: hidden; + border: 1px solid var(--wp-border); +} + +.wp-section-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 20px 24px; + background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%); + border-bottom: 1px solid var(--wp-border); +} + +.wp-section-title { + display: flex; + align-items: center; + gap: 10px; + font-size: 18px; + font-weight: 700; + color: var(--wp-text); + margin: 0; +} + +.wp-section-stats { + display: flex; + gap: 16px; +} + +.wp-section-stat { + display: flex; + align-items: center; + gap: 6px; + font-size: 13px; + color: var(--wp-text-secondary); +} + +.wp-section-stat strong { + color: var(--wp-text); + font-weight: 700; +} + +.wp-section-body { + padding: 24px; +} + +/* ============================================ + 8. 작업장 그리드 + ============================================ */ +.wp-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); + gap: 20px; +} + +/* ============================================ + 9. 작업장 카드 + ============================================ */ +.wp-card { + background: var(--wp-bg-card); + border: 1px solid var(--wp-border); + border-radius: 14px; + padding: 0; + transition: all 0.25s ease; + cursor: pointer; + overflow: hidden; + position: relative; +} + +.wp-card:hover { + border-color: var(--wp-primary); + box-shadow: var(--wp-shadow-lg); + transform: translateY(-4px); +} + +.wp-card.inactive { + opacity: 0.7; +} + +.wp-card-header { + padding: 18px 20px; + display: flex; + align-items: flex-start; + gap: 14px; + background: linear-gradient(135deg, #fafafa 0%, #f5f5f5 100%); + border-bottom: 1px solid var(--wp-border); +} + +.wp-card-icon { + width: 48px; + height: 48px; + border-radius: 12px; + display: flex; + align-items: center; + justify-content: center; + font-size: 22px; + flex-shrink: 0; +} + +/* 작업장 용도별 아이콘 색상 */ +.wp-card-icon.work-area { + background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%); +} + +.wp-card-icon.equipment { + background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%); +} + +.wp-card-icon.rest-area { + background: linear-gradient(135deg, #d1fae5 0%, #a7f3d0 100%); +} + +.wp-card-icon.meeting { + background: linear-gradient(135deg, #e0e7ff 0%, #c7d2fe 100%); +} + +.wp-card-icon.storage { + background: linear-gradient(135deg, #fce7f3 0%, #fbcfe8 100%); +} + +.wp-card-icon.default, +.wp-card-icon { + background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%); +} + +.wp-card-info { + flex: 1; + min-width: 0; +} + +.wp-card-name, +.wp-card-title { + font-size: 16px; + font-weight: 700; + color: var(--wp-text); + margin: 0 0 6px 0; + display: flex; + align-items: center; + gap: 8px; +} + +.wp-card-tags { + display: flex; + flex-wrap: wrap; + gap: 6px; +} + +.wp-card-tag { + display: inline-flex; + align-items: center; + gap: 4px; + padding: 3px 10px; + background: var(--wp-bg); + border-radius: 6px; + font-size: 11px; + font-weight: 600; + color: var(--wp-text-secondary); +} + +.wp-card-tag.factory { + background: var(--wp-primary-light); + color: var(--wp-primary); +} + +.wp-card-tag.purpose { + background: #fef3c7; + color: #b45309; +} + +.wp-card-actions { + display: flex; + gap: 6px; +} + +.wp-card-btn { + width: 34px; + height: 34px; + display: flex; + align-items: center; + justify-content: center; + background: white; + border: 1px solid var(--wp-border); + border-radius: 8px; + font-size: 14px; + cursor: pointer; + transition: all 0.2s ease; +} + +.wp-card-btn:hover { + transform: scale(1.1); +} + +.wp-card-btn.map-btn:hover, +.wp-card-btn.map:hover { + background: var(--wp-primary); + border-color: var(--wp-primary); + color: white; +} + +.wp-card-btn.edit-btn:hover, +.wp-card-btn.edit:hover { + background: var(--wp-info); + border-color: var(--wp-info); + color: white; +} + +.wp-card-btn.delete-btn:hover, +.wp-card-btn.delete:hover { + background: var(--wp-danger); + border-color: var(--wp-danger); + color: white; +} + +.wp-card-body { + padding: 16px 20px; +} + +.wp-card-description { + font-size: 13px; + color: var(--wp-text-secondary); + line-height: 1.5; + margin: 0; + padding: 12px 20px; + background: var(--wp-bg); + border-bottom: 1px solid var(--wp-border); +} + +.wp-card-map { + padding: 0; + min-height: 0; +} + +.wp-card-map:empty { + display: none; +} + +.wp-card-map-preview { + margin-bottom: 12px; +} + +.wp-card-meta { + display: flex; + gap: 12px; + padding: 12px 20px; + background: var(--wp-bg); + border-top: 1px solid var(--wp-border); +} + +.wp-card-footer { + padding: 12px 20px; + background: var(--wp-bg); + border-top: 1px solid var(--wp-border); + display: flex; + justify-content: space-between; + align-items: center; +} + +.wp-card-date { + font-size: 11px; + color: var(--wp-text-muted); +} + +/* ============================================ + 10. 빈 상태 + ============================================ */ +.wp-empty-state { + text-align: center; + padding: 60px 24px; +} + +.wp-empty-icon { + font-size: 64px; + margin-bottom: 16px; + opacity: 0.4; +} + +.wp-empty-state h3, +.wp-empty-title { + font-size: 20px; + font-weight: 600; + color: var(--wp-text); + margin: 0 0 8px 0; +} + +.wp-empty-state p, +.wp-empty-description { + font-size: 14px; + color: var(--wp-text-secondary); + margin: 0 0 24px 0; +} + +.wp-empty-btn { + display: inline-flex; + align-items: center; + gap: 8px; + padding: 12px 24px; + background: var(--wp-primary); + color: white; + border: none; + border-radius: 10px; + font-size: 14px; + font-weight: 600; + cursor: pointer; + transition: all 0.2s ease; +} + +.wp-empty-btn:hover { + background: var(--wp-primary-dark); + transform: translateY(-2px); +} + +/* ============================================ + 11. 모달 개선 + ============================================ */ +.wp-modal-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(15, 23, 42, 0.6); + display: flex; + align-items: center; + justify-content: center; + z-index: 1000; + backdrop-filter: blur(4px); + padding: 20px; +} + +.wp-modal { + background: var(--wp-bg-card); + border-radius: 20px; + width: 100%; + max-width: 520px; + max-height: 90vh; + overflow: hidden; + box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); + animation: modalSlideIn 0.3s ease; +} + +@keyframes modalSlideIn { + from { + opacity: 0; + transform: translateY(-20px) scale(0.95); + } + to { + opacity: 1; + transform: translateY(0) scale(1); + } +} + +.wp-modal-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 20px 24px; + background: linear-gradient(135deg, var(--wp-primary) 0%, var(--wp-primary-dark) 100%); +} + +.wp-modal-title { + font-size: 18px; + font-weight: 700; + color: white; + margin: 0; + display: flex; + align-items: center; + gap: 10px; +} + +.wp-modal-close { + width: 36px; + height: 36px; + display: flex; + align-items: center; + justify-content: center; + background: rgba(255, 255, 255, 0.15); + border: none; + border-radius: 10px; + color: white; + font-size: 20px; + cursor: pointer; + transition: all 0.2s ease; +} + +.wp-modal-close:hover { + background: rgba(255, 255, 255, 0.25); +} + +.wp-modal-body { + padding: 24px; + overflow-y: auto; + max-height: calc(90vh - 160px); +} + +.wp-modal-footer { + display: flex; + gap: 12px; + justify-content: flex-end; + padding: 16px 24px; + background: var(--wp-bg); + border-top: 1px solid var(--wp-border); +} + +/* ============================================ + 12. 폼 요소 + ============================================ */ +.wp-form-group { + margin-bottom: 20px; +} + +.wp-form-label { + display: block; + font-size: 13px; + font-weight: 600; + color: var(--wp-text); + margin-bottom: 8px; +} + +.wp-form-label.required::after { + content: ' *'; + color: var(--wp-danger); +} + +.wp-form-control { + width: 100%; + padding: 12px 16px; + font-size: 14px; + border: 2px solid var(--wp-border); + border-radius: 10px; + background: var(--wp-bg-card); + transition: all 0.2s ease; + box-sizing: border-box; +} + +.wp-form-control:focus { + outline: none; + border-color: var(--wp-primary); + box-shadow: 0 0 0 4px rgba(14, 165, 233, 0.1); +} + +.wp-form-control::placeholder { + color: var(--wp-text-muted); +} + +textarea.wp-form-control { + resize: vertical; + min-height: 100px; +} + +.wp-form-help { + margin-top: 6px; + font-size: 12px; + color: var(--wp-text-muted); +} + +/* ============================================ + 13. 버튼 추가 스타일 + ============================================ */ +.wp-btn-success { + background: var(--wp-success); + color: white; +} + +.wp-btn-success:hover { + background: #059669; +} + +.wp-btn-danger { + background: var(--wp-danger); + color: white; +} + +.wp-btn-danger:hover { + background: #dc2626; +} + +.wp-btn-outline { + background: transparent; + color: var(--wp-text-secondary); + border: 2px solid var(--wp-border); +} + +.wp-btn-outline:hover { + background: var(--wp-bg-hover); + border-color: var(--wp-text-secondary); + color: var(--wp-text); +} + +/* ============================================ + 14. 반응형 디자인 (사이드바 260px 고려) + ============================================ */ + +/* 사이드바 있을 때 (1460px = 1200px 콘텐츠 + 260px 사이드바) */ +@media (max-width: 1460px) { + .wp-stats-row { + grid-template-columns: repeat(2, 1fr); + } + + .wp-grid { + grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); + } +} + +/* 태블릿/좁은 화면 (1024px 이하에서 사이드바 숨김) */ +@media (max-width: 1024px) { + .wp-page-header { + flex-direction: column; + align-items: flex-start; + gap: 16px; + padding: 20px; + } + + .wp-header-actions { + width: 100%; + flex-wrap: wrap; + } + + .wp-btn { + flex: 1; + justify-content: center; + min-width: 100px; + padding: 10px 16px; + } + + .wp-stats-row { + grid-template-columns: repeat(2, 1fr); + gap: 12px; + } + + .wp-grid { + grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); + } +} + +@media (max-width: 768px) { + .wp-stats-row { + grid-template-columns: 1fr 1fr; + } + + .wp-grid { + grid-template-columns: 1fr; + } + + .wp-factory-tabs { + padding: 8px; + } + + .wp-tab-btn { + padding: 10px 16px; + font-size: 13px; + } + + .wp-page-title { + font-size: 22px; + } + + .wp-page-title-icon { + font-size: 26px; + } +} + +@media (max-width: 480px) { + .wp-stats-row { + grid-template-columns: 1fr; + } + + .wp-page-header { + padding: 16px; + } + + .wp-page-title { + font-size: 20px; + } + + .wp-card-header { + padding: 14px 16px; + } + + .wp-card-meta { + padding: 10px 16px; + flex-wrap: wrap; + } + + .wp-header-actions { + gap: 8px; + } + + .wp-btn { + font-size: 13px; + padding: 8px 12px; + } +} + +/* ============================================ + 15. 애니메이션 + ============================================ */ +@keyframes fadeInUp { + from { + opacity: 0; + transform: translateY(20px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +.wp-card { + animation: fadeInUp 0.4s ease forwards; +} + +.wp-card:nth-child(1) { animation-delay: 0.05s; } +.wp-card:nth-child(2) { animation-delay: 0.1s; } +.wp-card:nth-child(3) { animation-delay: 0.15s; } +.wp-card:nth-child(4) { animation-delay: 0.2s; } +.wp-card:nth-child(5) { animation-delay: 0.25s; } +.wp-card:nth-child(6) { animation-delay: 0.3s; } + +/* ============================================ + 16. 토스트 메시지 + ============================================ */ +.wp-toast { + position: fixed; + top: 24px; + right: 24px; + padding: 14px 24px; + border-radius: 12px; + color: white; + font-weight: 600; + font-size: 14px; + z-index: 2000; + box-shadow: var(--wp-shadow-lg); + animation: toastSlideIn 0.3s ease; +} + +@keyframes toastSlideIn { + from { + opacity: 0; + transform: translateX(100%); + } + to { + opacity: 1; + transform: translateX(0); + } +} + +.wp-toast.success { + background: var(--wp-success); +} + +.wp-toast.error { + background: var(--wp-danger); +} + +.wp-toast.warning { + background: var(--wp-warning); +} + +.wp-toast.info { + background: var(--wp-info); +} + +/* ============================================ + 17. 전체화면 설비 배치 편집기 + ============================================ */ +.fullscreen-editor { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: #0f172a; + z-index: 2000; + display: flex; + flex-direction: column; + animation: fadeIn 0.2s ease; +} + +@keyframes fadeIn { + from { opacity: 0; } + to { opacity: 1; } +} + +.fullscreen-editor-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 12px 20px; + background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%); + border-bottom: 1px solid #334155; + flex-shrink: 0; +} + +.fullscreen-editor-title { + display: flex; + align-items: center; + gap: 10px; + font-size: 18px; + font-weight: 700; + color: white; +} + +.fullscreen-editor-title span:first-child { + font-size: 24px; +} + +.fullscreen-editor-actions { + display: flex; + gap: 10px; +} + +.editor-btn { + display: inline-flex; + align-items: center; + gap: 6px; + padding: 10px 18px; + font-size: 14px; + font-weight: 600; + border: none; + border-radius: 8px; + cursor: pointer; + transition: all 0.2s ease; +} + +.editor-btn-primary { + background: #ef4444; + color: white; +} + +.editor-btn-primary:hover { + background: #dc2626; +} + +.editor-btn-secondary { + background: #334155; + color: #e2e8f0; +} + +.editor-btn-secondary:hover { + background: #475569; +} + +.fullscreen-editor-body { + display: flex; + flex: 1; + overflow: hidden; +} + +/* 캔버스 영역 */ +.fullscreen-canvas-area { + flex: 1; + display: flex; + flex-direction: column; + background: #1e293b; + overflow: hidden; +} + +.canvas-toolbar { + display: flex; + justify-content: space-between; + align-items: center; + padding: 10px 16px; + background: #0f172a; + border-bottom: 1px solid #334155; +} + +.toolbar-info { + font-size: 13px; + color: #94a3b8; +} + +.toolbar-zoom { + font-size: 12px; + color: #64748b; + background: #334155; + padding: 4px 10px; + border-radius: 4px; +} + +.canvas-wrapper { + flex: 1; + display: flex; + align-items: center; + justify-content: center; + padding: 20px; + overflow: auto; + background: + linear-gradient(90deg, #334155 1px, transparent 1px) 0 0 / 20px 20px, + linear-gradient(#334155 1px, transparent 1px) 0 0 / 20px 20px, + #1e293b; +} + +.canvas-wrapper canvas { + border: 3px solid #3b82f6; + border-radius: 8px; + cursor: crosshair; + box-shadow: 0 0 40px rgba(59, 130, 246, 0.3); + max-width: 100%; + max-height: 100%; +} + +.canvas-help { + padding: 10px 16px; + background: #0f172a; + border-top: 1px solid #334155; + text-align: center; +} + +.canvas-help span { + font-size: 13px; + color: #64748b; +} + +/* 사이드바 패널 */ +.fullscreen-sidebar { + width: 340px; + background: #f8fafc; + border-left: 1px solid #e2e8f0; + display: flex; + flex-direction: column; + overflow: hidden; + transition: width 0.3s ease, opacity 0.3s ease; +} + +.fullscreen-sidebar.collapsed { + width: 0; + opacity: 0; + overflow: hidden; +} + +.sidebar-section { + border-bottom: 1px solid #e2e8f0; +} + +.sidebar-section-flex { + flex: 1; + display: flex; + flex-direction: column; + overflow: hidden; +} + +.sidebar-section-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 14px 16px; + background: white; + border-bottom: 1px solid #e2e8f0; +} + +.sidebar-section-header h4 { + margin: 0; + font-size: 14px; + font-weight: 700; + color: #1e293b; +} + +.sidebar-section-body { + padding: 16px; +} + +.sidebar-section-body.sidebar-list { + flex: 1; + overflow-y: auto; + padding: 12px; +} + +.badge { + font-size: 11px; + padding: 3px 10px; + border-radius: 10px; + font-weight: 600; +} + +.badge-success { + background: #dcfce7; + color: #166534; +} + +.badge { + background: #f1f5f9; + color: #64748b; +} + +.form-help { + font-size: 11px; + color: #94a3b8; + margin-top: 6px; + margin-bottom: 12px; +} + +.new-equipment-box { + margin-top: 12px; + padding: 12px; + background: white; + border: 1px dashed #cbd5e1; + border-radius: 8px; +} + +.new-equipment-box label { + display: block; + font-size: 12px; + font-weight: 600; + color: #64748b; + margin-bottom: 8px; +} + +.new-equipment-box input { + margin-bottom: 8px; +} + +.new-equipment-box input:last-child { + margin-bottom: 0; +} + +.button-group { + display: flex; + gap: 8px; + margin-top: 14px; +} + +.button-group .wp-btn { + flex: 1; + justify-content: center; + padding: 10px 12px; + font-size: 13px; +} + +.empty-message { + text-align: center; + color: #94a3b8; + font-size: 13px; + padding: 24px 12px; +} + +/* 설비 목록 아이템 */ +.equipment-list-item { + display: flex; + justify-content: space-between; + align-items: center; + padding: 10px 12px; + background: white; + border-radius: 8px; + margin-bottom: 8px; + border: 1px solid #e2e8f0; + transition: all 0.2s ease; +} + +.equipment-list-item:hover { + border-color: #3b82f6; + box-shadow: 0 2px 8px rgba(59, 130, 246, 0.15); +} + +.equipment-list-item:last-child { + margin-bottom: 0; +} + +.equipment-item-info { + flex: 1; + min-width: 0; +} + +.equipment-item-name { + font-size: 13px; + font-weight: 600; + color: #1e293b; + margin-bottom: 2px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.equipment-item-code { + font-size: 11px; + color: #64748b; +} + +.equipment-item-position { + font-size: 10px; + color: #94a3b8; + margin-top: 2px; +} + +.equipment-item-delete { + width: 28px; + height: 28px; + display: flex; + align-items: center; + justify-content: center; + background: #fef2f2; + border: none; + border-radius: 6px; + color: #ef4444; + cursor: pointer; + font-size: 12px; + transition: all 0.2s ease; + flex-shrink: 0; + margin-left: 8px; +} + +.equipment-item-delete:hover { + background: #ef4444; + color: white; +} + +/* 반응형 */ +@media (max-width: 900px) { + .fullscreen-sidebar { + position: absolute; + right: 0; + top: 60px; + bottom: 0; + width: 300px; + z-index: 10; + box-shadow: -4px 0 20px rgba(0, 0, 0, 0.2); + } + + .fullscreen-sidebar.collapsed { + transform: translateX(100%); + width: 300px; + opacity: 1; + } +} + +/* 추가 스타일 - 설비 목록 아이템 (JS에서 사용하는 클래스) */ +.equipment-info { + flex: 1; + min-width: 0; +} + +.equipment-info strong { + font-size: 13px; + font-weight: 600; + color: #1e293b; +} + +.equipment-code { + font-size: 11px; + color: #64748b; + margin-left: 6px; +} + +.equipment-position { + font-size: 10px; + color: #94a3b8; + margin-top: 3px; +} + +.btn-delete-sm { + width: 28px; + height: 28px; + display: flex; + align-items: center; + justify-content: center; + background: #fef2f2; + border: none; + border-radius: 6px; + color: #ef4444; + cursor: pointer; + font-size: 12px; + transition: all 0.2s ease; + flex-shrink: 0; + margin-left: 8px; +} + +.btn-delete-sm:hover { + background: #ef4444; + color: white; +} diff --git a/web-ui/js/admin-settings.js b/web-ui/js/admin-settings.js index 0b97f53..5e06c44 100644 --- a/web-ui/js/admin-settings.js +++ b/web-ui/js/admin-settings.js @@ -70,34 +70,12 @@ async function initializePage() { } // ========== 사용자 정보 설정 ========== // +// navbar/sidebar는 app-init.js에서 공통 처리 function setupUserInfo() { const authData = getAuthData(); if (authData && authData.user) { currentUser = authData.user; - - // 사용자 이름 설정 - if (elements.userName) { - elements.userName.textContent = currentUser.name || currentUser.username; - } - - // 사용자 역할 설정 - const roleMap = { - 'admin': '관리자', - 'system': '시스템 관리자', - 'leader': '그룹장', - 'user': '작업자' - }; - if (elements.userRole) { - elements.userRole.textContent = roleMap[currentUser.role] || '작업자'; - } - - // 아바타 초기값 설정 - if (elements.userInitial) { - const initial = (currentUser.name || currentUser.username).charAt(0); - elements.userInitial.textContent = initial; - } - - console.log('👤 사용자 정보 설정 완료:', currentUser.name); + console.log('👤 사용자 정보 로드 완료:', currentUser.name, currentUser.role); } } @@ -249,10 +227,10 @@ function renderUsersTable() { - - @@ -325,25 +303,31 @@ function handleFilter(e) { // ========== 모달 관리 ========== // function openAddUserModal() { currentEditingUser = null; - + if (elements.modalTitle) { elements.modalTitle.textContent = '새 사용자 추가'; } - + // 폼 초기화 if (elements.userForm) { elements.userForm.reset(); } - + // 비밀번호 필드 표시 if (elements.passwordGroup) { elements.passwordGroup.style.display = 'block'; } - + if (elements.userPasswordInput) { elements.userPasswordInput.required = true; } - + + // 작업자 연결 섹션 숨기기 (새 사용자 추가 시) + const workerLinkGroup = document.getElementById('workerLinkGroup'); + if (workerLinkGroup) { + workerLinkGroup.style.display = 'none'; + } + if (elements.userModal) { elements.userModal.style.display = 'flex'; } @@ -373,16 +357,23 @@ function editUser(userId) { if (elements.userRoleSelect) elements.userRoleSelect.value = roleToValueMap[user.role] || 'user'; if (elements.userEmailInput) elements.userEmailInput.value = user.email || ''; if (elements.userPhoneInput) elements.userPhoneInput.value = user.phone || ''; - + // 비밀번호 필드 숨기기 (수정 시에는 선택사항) if (elements.passwordGroup) { elements.passwordGroup.style.display = 'none'; } - + if (elements.userPasswordInput) { elements.userPasswordInput.required = false; } - + + // 작업자 연결 섹션 표시 (수정 시에만) + const workerLinkGroup = document.getElementById('workerLinkGroup'); + if (workerLinkGroup) { + workerLinkGroup.style.display = 'block'; + updateLinkedWorkerDisplay(user); + } + if (elements.userModal) { elements.userModal.style.display = 'flex'; } @@ -395,14 +386,29 @@ function closeUserModal() { currentEditingUser = null; } -function deleteUser(userId) { - const user = users.find(u => u.user_id === userId); - if (!user) return; - - currentEditingUser = user; - - if (elements.deleteModal) { - elements.deleteModal.style.display = 'flex'; +// 영구 삭제 (Hard Delete) +async function permanentDeleteUser(userId, username) { + if (!confirm(`⚠️ 경고: "${username}" 사용자를 영구 삭제하시겠습니까?\n\n이 작업은 되돌릴 수 없습니다!\n관련된 모든 데이터(로그인 기록, 권한 설정 등)도 함께 삭제됩니다.`)) { + return; + } + + // 이중 확인 + if (!confirm(`정말로 "${username}"을(를) 영구 삭제하시겠습니까?\n\n[확인]을 누르면 즉시 삭제됩니다.`)) { + return; + } + + try { + const response = await window.apiCall(`/users/${userId}/permanent`, 'DELETE'); + + if (response.success) { + showToast(`"${username}" 사용자가 영구 삭제되었습니다.`, 'success'); + await loadUsers(); + } else { + throw new Error(response.message || '사용자 삭제에 실패했습니다.'); + } + } catch (error) { + console.error('사용자 영구 삭제 오류:', error); + showToast(`사용자 삭제 중 오류가 발생했습니다: ${error.message}`, 'error'); } } @@ -566,10 +572,10 @@ function showToast(message, type = 'info', duration = 3000) { // ========== 전역 함수 (HTML에서 호출) ========== // window.editUser = editUser; -window.deleteUser = deleteUser; window.toggleUserStatus = toggleUserStatus; window.closeUserModal = closeUserModal; window.closeDeleteModal = closeDeleteModal; +window.permanentDeleteUser = permanentDeleteUser; // ========== 페이지 권한 관리 ========== // let allPages = []; @@ -599,75 +605,6 @@ async function loadUserPageAccess(userId) { } } -// 페이지 권한 체크박스 렌더링 -function renderPageAccessList(userRole) { - const pageAccessList = document.getElementById('pageAccessList'); - const pageAccessGroup = document.getElementById('pageAccessGroup'); - - if (!pageAccessList || !pageAccessGroup) return; - - // Admin 사용자는 권한 설정 불필요 - if (userRole === 'admin') { - pageAccessGroup.style.display = 'none'; - return; - } - - pageAccessGroup.style.display = 'block'; - - // 카테고리별로 페이지 그룹화 - const pagesByCategory = { - 'work': [], - 'admin': [], - 'common': [], - 'profile': [] - }; - - allPages.forEach(page => { - const category = page.category || 'common'; - if (pagesByCategory[category]) { - pagesByCategory[category].push(page); - } - }); - - const categoryNames = { - 'common': '공통', - 'work': '작업', - 'admin': '관리', - 'profile': '프로필' - }; - - // HTML 생성 - let html = ''; - - Object.keys(pagesByCategory).forEach(category => { - const pages = pagesByCategory[category]; - if (pages.length === 0) return; - - const catName = categoryNames[category] || category; - html += '
'; - html += '
' + catName + '
'; - - pages.forEach(page => { - // 프로필과 대시보드는 모든 사용자가 접근 가능하므로 체크박스 비활성화 - const isAlwaysAccessible = page.page_key === 'dashboard' || page.page_key.startsWith('profile.'); - const isChecked = userPageAccess.find(p => p.page_id === page.id && p.can_access === 1) || isAlwaysAccessible; - - html += '
'; - }); - - html += '
'; - }); - - pageAccessList.innerHTML = html; -} // 페이지 권한 저장 async function savePageAccess(userId, containerId = null) { @@ -701,61 +638,6 @@ async function savePageAccess(userId, containerId = null) { } } -// editUser 함수를 수정하여 페이지 권한 로드 추가 -const originalEditUser = window.editUser; -window.editUser = async function(userId) { - // 페이지 목록이 없으면 로드 - if (allPages.length === 0) { - await loadAllPages(); - } - - // 원래 editUser 함수 실행 - if (originalEditUser) { - originalEditUser(userId); - } - - // 사용자의 페이지 권한 로드 - await loadUserPageAccess(userId); - - // 사용자 정보 가져오기 - const user = users.find(u => u.user_id === userId); - if (!user) return; - - // 페이지 권한 체크박스 렌더링 - const roleToValueMap = { - 'Admin': 'admin', - 'System Admin': 'admin', - 'User': 'user', - 'Guest': 'user' - }; - const userRole = roleToValueMap[user.role] || 'user'; - renderPageAccessList(userRole); -}; - -// saveUser 함수를 수정하여 페이지 권한 저장 추가 -const originalSaveUser = window.saveUser; -window.saveUser = async function() { - try { - // 원래 saveUser 함수 실행 - if (originalSaveUser) { - await originalSaveUser(); - } - - // 사용자 편집 시에만 페이지 권한 저장 - if (currentEditingUser && currentEditingUser.user_id) { - const userRole = document.getElementById('userRole')?.value; - - // Admin이 아닌 경우에만 페이지 권한 저장 - if (userRole !== 'admin') { - await savePageAccess(currentEditingUser.user_id); - } - } - - } catch (error) { - console.error('❌ 저장 오류:', error); - throw error; - } -}; @@ -806,66 +688,106 @@ function closePageAccessModal() { currentPageAccessUser = null; } -// 페이지 권한 체크박스 렌더링 (모달용) +// 페이지 권한 체크박스 렌더링 (모달용) - 폴더 구조 형태 function renderPageAccessModalList() { const pageAccessList = document.getElementById('pageAccessModalList'); if (!pageAccessList) return; - // 카테고리별로 페이지 그룹화 - const pagesByCategory = { - 'work': [], - 'admin': [], - 'common': [], - 'profile': [] + // 폴더 구조 정의 (page_key 패턴 기준) + const folderStructure = { + 'dashboard': { name: '대시보드', icon: '📊', pages: [] }, + 'work': { name: '작업 관리', icon: '📋', pages: [] }, + 'safety': { name: '안전 관리', icon: '🛡️', pages: [] }, + 'attendance': { name: '근태 관리', icon: '📅', pages: [] }, + 'admin': { name: '시스템 관리', icon: '⚙️', pages: [] }, + 'profile': { name: '내 정보', icon: '👤', pages: [] } }; + // 페이지를 폴더별로 분류 allPages.forEach(page => { - const category = page.category || 'common'; - if (pagesByCategory[category]) { - pagesByCategory[category].push(page); + const pageKey = page.page_key || ''; + + if (pageKey === 'dashboard') { + folderStructure['dashboard'].pages.push(page); + } else if (pageKey.startsWith('work.')) { + folderStructure['work'].pages.push(page); + } else if (pageKey.startsWith('safety.')) { + folderStructure['safety'].pages.push(page); + } else if (pageKey.startsWith('attendance.')) { + folderStructure['attendance'].pages.push(page); + } else if (pageKey.startsWith('admin.')) { + folderStructure['admin'].pages.push(page); + } else if (pageKey.startsWith('profile.')) { + folderStructure['profile'].pages.push(page); } }); - const categoryNames = { - 'common': '공통', - 'work': '작업', - 'admin': '관리', - 'profile': '프로필' - }; + // HTML 생성 - 폴더 트리 형태 + let html = '
'; - // HTML 생성 - let html = ''; + Object.keys(folderStructure).forEach(folderKey => { + const folder = folderStructure[folderKey]; + if (folder.pages.length === 0) return; - Object.keys(pagesByCategory).forEach(category => { - const pages = pagesByCategory[category]; - if (pages.length === 0) return; + const folderId = 'folder-' + folderKey; - const catName = categoryNames[category] || category; - html += '
'; - html += '
' + catName + '
'; + html += '
'; + html += '
'; + html += '' + folder.icon + ''; + html += '' + folder.name + ''; + html += '(' + folder.pages.length + ')'; + html += ''; + html += '
'; - pages.forEach(page => { + html += '
'; + + folder.pages.forEach(page => { // 프로필과 대시보드는 모든 사용자가 접근 가능 const isAlwaysAccessible = page.page_key === 'dashboard' || page.page_key.startsWith('profile.'); const isChecked = userPageAccess.find(p => p.page_id === page.id && p.can_access === 1) || isAlwaysAccessible; - html += '
'; + html += '
'; }); - html += '
'; + html += '
'; // folder-content + html += '
'; // folder-group }); + html += '
'; // folder-tree + pageAccessList.innerHTML = html; } +// 폴더 접기/펼치기 +function toggleFolder(folderId) { + const content = document.getElementById(folderId); + const toggle = document.getElementById('toggle-' + folderId); + + if (content && toggle) { + const isExpanded = content.style.display !== 'none'; + content.style.display = isExpanded ? 'none' : 'block'; + toggle.textContent = isExpanded ? '▶' : '▼'; + } +} +window.toggleFolder = toggleFolder; + // 페이지 권한 저장 (모달용) async function savePageAccessFromModal() { if (!currentPageAccessUser) { @@ -899,3 +821,256 @@ document.addEventListener('DOMContentLoaded', () => { saveBtn.addEventListener('click', savePageAccessFromModal); } }); + +// ========== 작업자 연결 기능 ========== // +let departments = []; +let selectedWorkerId = null; + +// 연결된 작업자 정보 표시 업데이트 +function updateLinkedWorkerDisplay(user) { + const linkedWorkerInfo = document.getElementById('linkedWorkerInfo'); + if (!linkedWorkerInfo) return; + + if (user.worker_id && user.worker_name) { + linkedWorkerInfo.innerHTML = ` + + 👤 ${user.worker_name} + ${user.department_name ? `(${user.department_name})` : ''} + + `; + } else { + linkedWorkerInfo.innerHTML = '연결된 작업자 없음'; + } +} + +// 작업자 선택 모달 열기 +async function openWorkerSelectModal() { + if (!currentEditingUser) { + showToast('사용자 정보가 없습니다.', 'error'); + return; + } + + selectedWorkerId = currentEditingUser.worker_id || null; + + // 부서 목록 로드 + await loadDepartmentsForSelect(); + + // 모달 표시 + document.getElementById('workerSelectModal').style.display = 'flex'; +} +window.openWorkerSelectModal = openWorkerSelectModal; + +// 작업자 선택 모달 닫기 +function closeWorkerSelectModal() { + document.getElementById('workerSelectModal').style.display = 'none'; + selectedWorkerId = null; +} +window.closeWorkerSelectModal = closeWorkerSelectModal; + +// 부서 목록 로드 +async function loadDepartmentsForSelect() { + try { + const response = await window.apiCall('/departments'); + departments = response.data || response || []; + + renderDepartmentList(); + } catch (error) { + console.error('부서 목록 로드 실패:', error); + showToast('부서 목록을 불러오는데 실패했습니다.', 'error'); + } +} + +// 부서 목록 렌더링 +function renderDepartmentList() { + const container = document.getElementById('departmentList'); + if (!container) return; + + if (departments.length === 0) { + container.innerHTML = '
등록된 부서가 없습니다
'; + return; + } + + container.innerHTML = departments.map(dept => ` +
+ 📁 + ${dept.department_name} + ${dept.worker_count || 0}명 +
+ `).join(''); +} + +// 부서 선택 +async function selectDepartment(departmentId) { + // 활성 상태 업데이트 + document.querySelectorAll('.department-item').forEach(item => { + item.classList.remove('active'); + }); + document.querySelector(`.department-item[data-dept-id="${departmentId}"]`)?.classList.add('active'); + + // 해당 부서의 작업자 목록 로드 + await loadWorkersForSelect(departmentId); +} +window.selectDepartment = selectDepartment; + +// 부서별 작업자 목록 로드 +async function loadWorkersForSelect(departmentId) { + try { + const response = await window.apiCall(`/departments/${departmentId}/workers`); + const workers = response.data || response || []; + + renderWorkerListForSelect(workers); + } catch (error) { + console.error('작업자 목록 로드 실패:', error); + showToast('작업자 목록을 불러오는데 실패했습니다.', 'error'); + } +} + +// 작업자 목록 렌더링 (선택용) +function renderWorkerListForSelect(workers) { + const container = document.getElementById('workerListForSelect'); + if (!container) return; + + if (workers.length === 0) { + container.innerHTML = '
이 부서에 작업자가 없습니다
'; + return; + } + + // 이미 다른 계정에 연결된 작업자 확인을 위해 users 배열 사용 + const linkedWorkerIds = users + .filter(u => u.worker_id && u.user_id !== currentEditingUser?.user_id) + .map(u => u.worker_id); + + container.innerHTML = workers.map(worker => { + const isSelected = selectedWorkerId === worker.worker_id; + const isLinkedToOther = linkedWorkerIds.includes(worker.worker_id); + const linkedUser = isLinkedToOther ? users.find(u => u.worker_id === worker.worker_id) : null; + + return ` +
+
${worker.worker_name.charAt(0)}
+
+
${worker.worker_name}
+
${getJobTypeName(worker.job_type)}
+
+ ${isLinkedToOther ? `${linkedUser?.username} 연결됨` : ''} +
${isSelected ? '✓' : ''}
+
+ `; + }).join(''); +} + +// 직책 한글 변환 +function getJobTypeName(jobType) { + const names = { + leader: '그룹장', + worker: '작업자', + admin: '관리자' + }; + return names[jobType] || jobType || '-'; +} + +// 작업자 선택 +async function selectWorker(workerId, workerName) { + selectedWorkerId = workerId; + + // UI 업데이트 + document.querySelectorAll('.worker-select-item').forEach(item => { + item.classList.remove('selected'); + item.querySelector('.select-indicator').textContent = ''; + }); + + const selectedItem = document.querySelector(`.worker-select-item[onclick*="${workerId}"]`); + if (selectedItem) { + selectedItem.classList.add('selected'); + selectedItem.querySelector('.select-indicator').textContent = '✓'; + } + + // 서버에 저장 + try { + const response = await window.apiCall(`/users/${currentEditingUser.user_id}`, 'PUT', { + worker_id: workerId + }); + + if (response.success) { + // currentEditingUser 업데이트 + currentEditingUser.worker_id = workerId; + currentEditingUser.worker_name = workerName; + + // 부서 정보도 업데이트 + const dept = departments.find(d => + document.querySelector(`.department-item.active`)?.dataset.deptId == d.department_id + ); + if (dept) { + currentEditingUser.department_name = dept.department_name; + } + + // users 배열 업데이트 + const userIndex = users.findIndex(u => u.user_id === currentEditingUser.user_id); + if (userIndex !== -1) { + users[userIndex] = { ...users[userIndex], ...currentEditingUser }; + } + + // 표시 업데이트 + updateLinkedWorkerDisplay(currentEditingUser); + + showToast(`${workerName} 작업자가 연결되었습니다.`, 'success'); + closeWorkerSelectModal(); + } else { + throw new Error(response.message || '작업자 연결에 실패했습니다.'); + } + } catch (error) { + console.error('작업자 연결 오류:', error); + showToast(`작업자 연결 중 오류가 발생했습니다: ${error.message}`, 'error'); + } +} +window.selectWorker = selectWorker; + +// 작업자 연결 해제 +async function unlinkWorker() { + if (!currentEditingUser) { + showToast('사용자 정보가 없습니다.', 'error'); + return; + } + + if (!currentEditingUser.worker_id) { + showToast('연결된 작업자가 없습니다.', 'warning'); + closeWorkerSelectModal(); + return; + } + + if (!confirm('작업자 연결을 해제하시겠습니까?')) { + return; + } + + try { + const response = await window.apiCall(`/users/${currentEditingUser.user_id}`, 'PUT', { + worker_id: null + }); + + if (response.success) { + // currentEditingUser 업데이트 + currentEditingUser.worker_id = null; + currentEditingUser.worker_name = null; + currentEditingUser.department_name = null; + + // users 배열 업데이트 + const userIndex = users.findIndex(u => u.user_id === currentEditingUser.user_id); + if (userIndex !== -1) { + users[userIndex] = { ...users[userIndex], worker_id: null, worker_name: null, department_name: null }; + } + + // 표시 업데이트 + updateLinkedWorkerDisplay(currentEditingUser); + + showToast('작업자 연결이 해제되었습니다.', 'success'); + closeWorkerSelectModal(); + } else { + throw new Error(response.message || '연결 해제에 실패했습니다.'); + } + } catch (error) { + console.error('작업자 연결 해제 오류:', error); + showToast(`연결 해제 중 오류가 발생했습니다: ${error.message}`, 'error'); + } +} +window.unlinkWorker = unlinkWorker; diff --git a/web-ui/js/api-base.js b/web-ui/js/api-base.js new file mode 100644 index 0000000..b01c9af --- /dev/null +++ b/web-ui/js/api-base.js @@ -0,0 +1,58 @@ +// /js/api-base.js +// API 기본 설정 (비모듈 - 빠른 로딩용) + +(function() { + 'use strict'; + + const API_PORT = 20005; + const API_PATH = '/api'; + + function getApiBaseUrl() { + const hostname = window.location.hostname; + const protocol = window.location.protocol; + return `${protocol}//${hostname}:${API_PORT}${API_PATH}`; + } + + // 전역 API 설정 + const apiUrl = getApiBaseUrl(); + window.API_BASE_URL = apiUrl; + window.API = apiUrl; // 이전 호환성 + + // 인증 헤더 생성 + window.getAuthHeaders = function() { + const token = localStorage.getItem('token'); + return { + 'Content-Type': 'application/json', + 'Authorization': token ? `Bearer ${token}` : '' + }; + }; + + // API 호출 헬퍼 (기존 시그니처 유지: endpoint, method, data) + // JSON 파싱하여 반환 + window.apiCall = async function(endpoint, method = 'GET', data = null) { + const url = `${window.API_BASE_URL}${endpoint}`; + const config = { + method: method, + headers: window.getAuthHeaders() + }; + + if (data && (method === 'POST' || method === 'PUT' || method === 'PATCH' || method === 'DELETE')) { + config.body = JSON.stringify(data); + } + + const response = await fetch(url, config); + + // 401 Unauthorized 처리 + if (response.status === 401) { + localStorage.removeItem('token'); + localStorage.removeItem('user'); + window.location.href = '/index.html'; + throw new Error('인증이 만료되었습니다.'); + } + + // JSON 파싱하여 반환 + return response.json(); + }; + + console.log('✅ API 설정 완료:', window.API_BASE_URL); +})(); diff --git a/web-ui/js/app-init.js b/web-ui/js/app-init.js new file mode 100644 index 0000000..cdd9d70 --- /dev/null +++ b/web-ui/js/app-init.js @@ -0,0 +1,470 @@ +// /js/app-init.js +// 앱 초기화 - 인증, 네비바, 사이드바를 한 번에 로드 +// 모든 페이지에서 이 하나의 스크립트만 로드하면 됨 + +(function() { + 'use strict'; + + // ===== 캐시 설정 ===== + const CACHE_DURATION = 10 * 60 * 1000; // 10분 + const COMPONENT_CACHE_PREFIX = 'component_'; + + // ===== 인증 함수 ===== + function isLoggedIn() { + const token = localStorage.getItem('token'); + return token && token !== 'undefined' && token !== 'null'; + } + + function getUser() { + const user = localStorage.getItem('user'); + return user ? JSON.parse(user) : null; + } + + function clearAuthData() { + localStorage.removeItem('token'); + localStorage.removeItem('user'); + localStorage.removeItem('userPageAccess'); + } + + // ===== 페이지 권한 캐시 ===== + let pageAccessPromise = null; + + async function getPageAccess(currentUser) { + if (!currentUser || !currentUser.user_id) return null; + + // 캐시 확인 + const cached = localStorage.getItem('userPageAccess'); + if (cached) { + try { + const cacheData = JSON.parse(cached); + if (Date.now() - cacheData.timestamp < CACHE_DURATION) { + return cacheData.pages; + } + } catch (e) { + localStorage.removeItem('userPageAccess'); + } + } + + // 이미 로딩 중이면 기존 Promise 반환 + if (pageAccessPromise) return pageAccessPromise; + + // 새로운 API 호출 + pageAccessPromise = (async () => { + try { + const response = await fetch(`${window.API_BASE_URL}/users/${currentUser.user_id}/page-access`, { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${localStorage.getItem('token')}` + } + }); + + if (!response.ok) return null; + + const data = await response.json(); + const pages = data.data.pageAccess || []; + + localStorage.setItem('userPageAccess', JSON.stringify({ + pages: pages, + timestamp: Date.now() + })); + + return pages; + } catch (error) { + console.error('페이지 권한 조회 오류:', error); + return null; + } finally { + pageAccessPromise = null; + } + })(); + + return pageAccessPromise; + } + + async function getAccessiblePageKeys(currentUser) { + const pages = await getPageAccess(currentUser); + if (!pages) return []; + return pages.filter(p => p.can_access === 1).map(p => p.page_key); + } + + // ===== 현재 페이지 키 추출 ===== + function getCurrentPageKey() { + const path = window.location.pathname; + if (!path.startsWith('/pages/')) return null; + const pagePath = path.substring(7).replace('.html', ''); + return pagePath.replace(/\//g, '.'); + } + + // ===== 컴포넌트 로더 ===== + async function loadComponent(name, selector, processor) { + const container = document.querySelector(selector); + if (!container) return; + + const paths = { + 'navbar': '/components/navbar.html', + 'sidebar-nav': '/components/sidebar-nav.html' + }; + + const componentPath = paths[name]; + if (!componentPath) return; + + try { + const cacheKey = COMPONENT_CACHE_PREFIX + name; + let html = sessionStorage.getItem(cacheKey); + + if (!html) { + const response = await fetch(componentPath); + if (!response.ok) throw new Error('컴포넌트 로드 실패'); + html = await response.text(); + try { sessionStorage.setItem(cacheKey, html); } catch (e) {} + } + + if (processor) { + const parser = new DOMParser(); + const doc = parser.parseFromString(html, 'text/html'); + await processor(doc); + container.innerHTML = doc.body.innerHTML; + } else { + container.innerHTML = html; + } + } catch (error) { + console.error(`컴포넌트 로드 오류 (${name}):`, error); + } + } + + // ===== 네비바 처리 ===== + const ROLE_NAMES = { + 'system admin': '시스템 관리자', + 'admin': '관리자', + 'leader': '그룹장', + 'user': '작업자', + 'support': '지원팀', + 'default': '사용자' + }; + + async function processNavbar(doc, currentUser, accessiblePageKeys) { + const userRole = (currentUser.role || '').toLowerCase(); + const isAdmin = userRole === 'admin' || userRole === 'system admin'; + + if (isAdmin) { + doc.querySelectorAll('.admin-only').forEach(el => el.classList.add('visible')); + } else { + doc.querySelectorAll('[data-page-key]').forEach(item => { + const pageKey = item.getAttribute('data-page-key'); + if (pageKey === 'dashboard' || pageKey.startsWith('profile.')) return; + if (!accessiblePageKeys.includes(pageKey)) item.remove(); + }); + doc.querySelectorAll('.admin-only').forEach(el => el.remove()); + } + + // 사용자 정보 표시 + const displayName = currentUser.name || currentUser.username; + const roleName = ROLE_NAMES[userRole] || ROLE_NAMES.default; + + const setElementText = (id, text) => { + const el = doc.getElementById(id); + if (el) el.textContent = text; + }; + + setElementText('userName', displayName); + setElementText('userRole', roleName); + setElementText('userInitial', displayName.charAt(0)); + } + + // ===== 사이드바 처리 ===== + async function processSidebar(doc, currentUser, accessiblePageKeys) { + const userRole = (currentUser.role || '').toLowerCase(); + const accessLevel = (currentUser.access_level || '').toLowerCase(); + // role 또는 access_level로 관리자 확인 + const isAdmin = userRole === 'admin' || userRole === 'system admin' || userRole === 'system' || + accessLevel === 'admin' || accessLevel === 'system'; + + if (isAdmin) { + doc.querySelectorAll('.admin-only').forEach(el => el.classList.add('visible')); + } else { + doc.querySelectorAll('[data-page-key]').forEach(item => { + const pageKey = item.getAttribute('data-page-key'); + if (pageKey === 'dashboard' || pageKey.startsWith('profile.')) return; + if (!accessiblePageKeys.includes(pageKey)) item.style.display = 'none'; + }); + doc.querySelectorAll('.nav-category.admin-only').forEach(el => el.remove()); + } + + // 현재 페이지 하이라이트 + const currentPath = window.location.pathname; + doc.querySelectorAll('.nav-item').forEach(item => { + const href = item.getAttribute('href'); + if (href && currentPath.includes(href.replace(/^\//, ''))) { + item.classList.add('active'); + const category = item.closest('.nav-category'); + if (category) category.classList.add('expanded'); + } + }); + + // 저장된 상태 복원 + const isCollapsed = localStorage.getItem('sidebarCollapsed') === 'true'; + const sidebar = doc.querySelector('.sidebar-nav'); + if (isCollapsed && sidebar) { + sidebar.classList.add('collapsed'); + document.body.classList.add('sidebar-collapsed'); + } + + const expandedCategories = JSON.parse(localStorage.getItem('sidebarExpanded') || '[]'); + expandedCategories.forEach(category => { + const el = doc.querySelector(`[data-category="${category}"]`); + if (el) el.classList.add('expanded'); + }); + } + + // ===== 사이드바 이벤트 설정 ===== + function setupSidebarEvents() { + const sidebar = document.getElementById('sidebarNav'); + const toggle = document.getElementById('sidebarToggle'); + if (!sidebar || !toggle) return; + + toggle.addEventListener('click', () => { + sidebar.classList.toggle('collapsed'); + document.body.classList.toggle('sidebar-collapsed'); + localStorage.setItem('sidebarCollapsed', sidebar.classList.contains('collapsed')); + }); + + sidebar.querySelectorAll('.nav-category-header').forEach(header => { + header.addEventListener('click', () => { + const category = header.closest('.nav-category'); + category.classList.toggle('expanded'); + + const expanded = []; + sidebar.querySelectorAll('.nav-category.expanded').forEach(cat => { + const name = cat.getAttribute('data-category'); + if (name) expanded.push(name); + }); + localStorage.setItem('sidebarExpanded', JSON.stringify(expanded)); + }); + }); + } + + // ===== 네비바 이벤트 설정 ===== + function setupNavbarEvents() { + const logoutButton = document.getElementById('logoutBtn'); + if (logoutButton) { + logoutButton.addEventListener('click', () => { + if (confirm('로그아웃 하시겠습니까?')) { + clearAuthData(); + window.location.href = '/index.html'; + } + }); + } + } + + // ===== 날짜/시간 업데이트 ===== + function updateDateTime() { + const now = new Date(); + const timeEl = document.getElementById('timeValue'); + if (timeEl) timeEl.textContent = now.toLocaleTimeString('ko-KR', { hour12: false }); + + const dateEl = document.getElementById('dateValue'); + if (dateEl) { + const days = ['일', '월', '화', '수', '목', '토']; + dateEl.textContent = `${now.getMonth() + 1}월 ${now.getDate()}일 (${days[now.getDay()]})`; + } + } + + // ===== 날씨 업데이트 ===== + const WEATHER_ICONS = { clear: '☀️', rain: '🌧️', snow: '❄️', heat: '🔥', cold: '🥶', wind: '💨', fog: '🌫️', dust: '😷', cloudy: '⛅', overcast: '☁️' }; + const WEATHER_NAMES = { clear: '맑음', rain: '비', snow: '눈', heat: '폭염', cold: '한파', wind: '강풍', fog: '안개', dust: '미세먼지', cloudy: '구름많음', overcast: '흐림' }; + + async function updateWeather() { + try { + const token = localStorage.getItem('token'); + if (!token) return; + + // 캐시 확인 + const cached = sessionStorage.getItem('weatherCache'); + let result; + if (cached) { + const cacheData = JSON.parse(cached); + if (Date.now() - cacheData.timestamp < 5 * 60 * 1000) { + result = cacheData.data; + } + } + + if (!result) { + const response = await fetch(`${window.API_BASE_URL}/tbm/weather/current`, { + headers: { 'Authorization': `Bearer ${token}` } + }); + if (!response.ok) return; + result = await response.json(); + sessionStorage.setItem('weatherCache', JSON.stringify({ data: result, timestamp: Date.now() })); + } + + if (result.success && result.data) { + const { temperature, conditions } = result.data; + const tempEl = document.getElementById('weatherTemp'); + if (tempEl && temperature != null) tempEl.textContent = `${Math.round(temperature)}°C`; + + const iconEl = document.getElementById('weatherIcon'); + const descEl = document.getElementById('weatherDesc'); + if (conditions && conditions.length > 0) { + const primary = conditions[0]; + if (iconEl) iconEl.textContent = WEATHER_ICONS[primary] || '🌤️'; + if (descEl) descEl.textContent = WEATHER_NAMES[primary] || '맑음'; + } + } + } catch (error) { + console.warn('날씨 정보 로드 실패'); + } + } + + // ===== 메인 초기화 ===== + async function init() { + console.log('🚀 app-init 시작'); + + // 1. 인증 확인 + if (!isLoggedIn()) { + clearAuthData(); + window.location.href = '/index.html'; + return; + } + + const currentUser = getUser(); + if (!currentUser || !currentUser.username) { + clearAuthData(); + window.location.href = '/index.html'; + return; + } + + console.log('✅ 인증 확인:', currentUser.username); + + const userRole = (currentUser.role || '').toLowerCase(); + const accessLevel = (currentUser.access_level || '').toLowerCase(); + // role 또는 access_level로 관리자 확인 + const isAdmin = userRole === 'admin' || userRole === 'system admin' || userRole === 'system' || + accessLevel === 'admin' || accessLevel === 'system'; + + // 2. 페이지 접근 권한 체크 (Admin은 건너뛰기) + let accessiblePageKeys = []; + if (!isAdmin) { + const pageKey = getCurrentPageKey(); + if (pageKey && pageKey !== 'dashboard' && !pageKey.startsWith('profile.')) { + accessiblePageKeys = await getAccessiblePageKeys(currentUser); + if (!accessiblePageKeys.includes(pageKey)) { + alert('이 페이지에 접근할 권한이 없습니다.'); + window.location.href = '/pages/dashboard.html'; + return; + } + } + } + + // 3. 사이드바 컨테이너 생성 (없으면) + let sidebarContainer = document.getElementById('sidebar-container'); + if (!sidebarContainer) { + sidebarContainer = document.createElement('div'); + sidebarContainer.id = 'sidebar-container'; + document.body.prepend(sidebarContainer); + console.log('📦 사이드바 컨테이너 생성됨'); + } + + // 4. 네비바와 사이드바 동시 로드 + console.log('📥 컴포넌트 로딩 시작'); + await Promise.all([ + loadComponent('navbar', '#navbar-container', (doc) => processNavbar(doc, currentUser, accessiblePageKeys)), + loadComponent('sidebar-nav', '#sidebar-container', (doc) => processSidebar(doc, currentUser, accessiblePageKeys)) + ]); + console.log('✅ 컴포넌트 로딩 완료'); + + // 5. 이벤트 설정 + setupNavbarEvents(); + setupSidebarEvents(); + document.body.classList.add('has-sidebar'); + + // 6. 페이지 전환 로딩 인디케이터 설정 + setupPageTransitionLoader(); + + // 7. 날짜/시간 (비동기) + updateDateTime(); + setInterval(updateDateTime, 1000); + + // 8. 날씨 (백그라운드) + setTimeout(updateWeather, 100); + + console.log('✅ app-init 완료'); + } + + // ===== 페이지 전환 로딩 인디케이터 ===== + function setupPageTransitionLoader() { + // 로딩 바 스타일 추가 + const style = document.createElement('style'); + style.textContent = ` + #page-loader { + position: fixed; + top: 0; + left: 0; + width: 0; + height: 3px; + background: linear-gradient(90deg, #3b82f6, #60a5fa); + z-index: 99999; + transition: width 0.3s ease; + box-shadow: 0 0 10px rgba(59, 130, 246, 0.5); + } + #page-loader.loading { + width: 70%; + } + #page-loader.done { + width: 100%; + opacity: 0; + transition: width 0.2s ease, opacity 0.3s ease 0.2s; + } + body.page-loading { + cursor: wait; + } + body.page-loading * { + pointer-events: none; + } + `; + document.head.appendChild(style); + + // 로딩 바 엘리먼트 생성 + const loader = document.createElement('div'); + loader.id = 'page-loader'; + document.body.appendChild(loader); + + // 모든 내부 링크에 클릭 이벤트 추가 + document.addEventListener('click', (e) => { + const link = e.target.closest('a'); + if (!link) return; + + const href = link.getAttribute('href'); + if (!href) return; + + // 외부 링크, 해시 링크, javascript: 링크 제외 + if (href.startsWith('http') || href.startsWith('#') || href.startsWith('javascript:')) return; + + // 새 탭 링크 제외 + if (link.target === '_blank') return; + + // 로딩 시작 + loader.classList.remove('done'); + loader.classList.add('loading'); + document.body.classList.add('page-loading'); + }); + + // 페이지 떠날 때 완료 표시 + window.addEventListener('beforeunload', () => { + const loader = document.getElementById('page-loader'); + if (loader) { + loader.classList.remove('loading'); + loader.classList.add('done'); + } + }); + } + + // DOMContentLoaded 시 실행 + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', init); + } else { + init(); + } + + // 전역 노출 (필요시) + window.appInit = { getUser, clearAuthData, isLoggedIn }; +})(); diff --git a/web-ui/js/code-management.js b/web-ui/js/code-management.js index 213fcc8..55c1f77 100644 --- a/web-ui/js/code-management.js +++ b/web-ui/js/code-management.js @@ -48,38 +48,9 @@ function updateCurrentTime() { } // 사용자 정보 업데이트 +// navbar/sidebar는 app-init.js에서 공통 처리 function updateUserInfo() { - let userInfo = JSON.parse(localStorage.getItem('userInfo') || '{}'); - let authUser = JSON.parse(localStorage.getItem('user') || '{}'); - - const finalUserInfo = { - worker_name: userInfo.worker_name || authUser.username || authUser.worker_name, - job_type: userInfo.job_type || authUser.role || authUser.job_type, - username: authUser.username || userInfo.username - }; - - const userNameElement = document.getElementById('userName'); - const userRoleElement = document.getElementById('userRole'); - const userInitialElement = document.getElementById('userInitial'); - - if (userNameElement) { - userNameElement.textContent = finalUserInfo.worker_name || '사용자'; - } - - if (userRoleElement) { - const roleMap = { - 'leader': '그룹장', - 'worker': '작업자', - 'admin': '관리자', - 'system': '시스템 관리자' - }; - userRoleElement.textContent = roleMap[finalUserInfo.job_type] || finalUserInfo.job_type || '작업자'; - } - - if (userInitialElement) { - const name = finalUserInfo.worker_name || '사용자'; - userInitialElement.textContent = name.charAt(0); - } + // app-init.js가 navbar 사용자 정보를 처리 } // 프로필 메뉴 설정 diff --git a/web-ui/js/component-loader.js b/web-ui/js/component-loader.js index ce45c5d..9819934 100644 --- a/web-ui/js/component-loader.js +++ b/web-ui/js/component-loader.js @@ -1,6 +1,38 @@ // /js/component-loader.js import { config } from './config.js'; +// 캐시 버전 (컴포넌트 변경 시 증가) +const CACHE_VERSION = 'v1'; + +/** + * 컴포넌트 HTML을 캐시에서 가져오거나 fetch + */ +async function getComponentHtml(componentName, componentPath) { + const cacheKey = `component_${componentName}_${CACHE_VERSION}`; + + // 캐시에서 먼저 확인 + const cached = sessionStorage.getItem(cacheKey); + if (cached) { + return cached; + } + + // 캐시 없으면 fetch + const response = await fetch(componentPath); + if (!response.ok) { + throw new Error(`컴포넌트 파일을 불러올 수 없습니다: ${response.statusText}`); + } + const htmlText = await response.text(); + + // 캐시에 저장 + try { + sessionStorage.setItem(cacheKey, htmlText); + } catch (e) { + // sessionStorage 용량 초과 시 무시 + } + + return htmlText; +} + /** * 공용 HTML 컴포넌트를 페이지의 특정 위치에 동적으로 로드합니다. * @param {string} componentName - 로드할 컴포넌트의 이름 (e.g., 'sidebar', 'navbar'). config.js의 components 객체에 정의된 키와 일치해야 합니다. @@ -23,20 +55,16 @@ export async function loadComponent(componentName, containerSelector, domProcess } try { - const response = await fetch(componentPath); - if (!response.ok) { - throw new Error(`컴포넌트 파일을 불러올 수 없습니다: ${response.statusText}`); - } - const htmlText = await response.text(); + const htmlText = await getComponentHtml(componentName, componentPath); if (domProcessor) { // 1. 텍스트를 가상 DOM으로 파싱 const parser = new DOMParser(); const doc = parser.parseFromString(htmlText, 'text/html'); - + // 2. DOM 프로세서(콜백)를 실행하여 DOM 조작 await domProcessor(doc); - + // 3. 조작된 HTML을 실제 DOM에 삽입 container.innerHTML = doc.body.innerHTML; } else { diff --git a/web-ui/js/daily-patrol.js b/web-ui/js/daily-patrol.js new file mode 100644 index 0000000..99fca9e --- /dev/null +++ b/web-ui/js/daily-patrol.js @@ -0,0 +1,732 @@ +// daily-patrol.js - 일일순회점검 페이지 JavaScript + +// 전역 상태 +let currentSession = null; +let categories = []; // 공장(대분류) 목록 +let workplaces = []; // 작업장 목록 +let checklistItems = []; // 체크리스트 항목 +let checkRecords = {}; // 체크 기록 (workplace_id -> records) +let selectedWorkplace = null; +let itemTypes = []; // 물품 유형 +let workplaceItems = []; // 현재 작업장 물품 +let isItemEditMode = false; + +// 이미지 URL 헬퍼 함수 (정적 파일용 - /api 경로 제외) +function getImageUrl(path) { + if (!path) return ''; + // 이미 http로 시작하면 그대로 반환 + if (path.startsWith('http')) return path; + // API_BASE_URL에서 /api 제거하여 정적 파일 서버 URL 생성 + // /uploads 경로는 인증 없이 접근 가능한 정적 파일 경로 + const staticUrl = window.API_BASE_URL.replace(/\/api$/, ''); + return staticUrl + path; +} + +// 페이지 초기화 +document.addEventListener('DOMContentLoaded', async () => { + await waitForAxiosConfig(); + initializePage(); +}); + +// axios 설정 대기 +function waitForAxiosConfig() { + return new Promise((resolve) => { + const check = setInterval(() => { + if (axios.defaults.baseURL) { + clearInterval(check); + resolve(); + } + }, 50); + setTimeout(() => { + clearInterval(check); + resolve(); + }, 5000); + }); +} + +// 페이지 초기화 +async function initializePage() { + // 오늘 날짜 설정 + const today = new Date().toISOString().slice(0, 10); + document.getElementById('patrolDate').value = today; + + // 시간대 버튼 이벤트 + document.querySelectorAll('.patrol-time-btn').forEach(btn => { + btn.addEventListener('click', () => { + document.querySelectorAll('.patrol-time-btn').forEach(b => b.classList.remove('active')); + btn.classList.add('active'); + }); + }); + + // 데이터 로드 + await Promise.all([ + loadCategories(), + loadItemTypes(), + loadTodayStatus() + ]); +} + +// 공장(대분류) 목록 로드 +async function loadCategories() { + try { + const response = await axios.get('/workplaces/categories'); + if (response.data.success) { + categories = response.data.data; + const select = document.getElementById('categorySelect'); + select.innerHTML = '' + + categories.map(c => ``).join(''); + } + } catch (error) { + console.error('공장 목록 로드 실패:', error); + } +} + +// 물품 유형 로드 +async function loadItemTypes() { + try { + const response = await axios.get('/patrol/item-types'); + if (response.data.success) { + itemTypes = response.data.data; + renderItemTypesSelect(); + renderItemsLegend(); + } + } catch (error) { + console.error('물품 유형 로드 실패:', error); + } +} + +// 오늘 점검 현황 로드 +async function loadTodayStatus() { + try { + const response = await axios.get('/patrol/today-status'); + if (response.data.success) { + renderTodayStatus(response.data.data); + } + } catch (error) { + console.error('오늘 현황 로드 실패:', error); + } +} + +// 오늘 점검 현황 렌더링 +function renderTodayStatus(statusList) { + const container = document.getElementById('todayStatusSummary'); + if (!statusList || statusList.length === 0) { + container.innerHTML = ` +
+
오전
+
미점검
+
+
+
오후
+
미점검
+
+ `; + return; + } + + const morning = statusList.find(s => s.patrol_time === 'morning'); + const afternoon = statusList.find(s => s.patrol_time === 'afternoon'); + + container.innerHTML = ` +
+
오전
+
+ ${morning ? (morning.status === 'completed' ? '완료' : '진행중') : '미점검'} +
+ ${morning ? `
${morning.inspector_name || ''}
` : ''} +
+
+
오후
+
+ ${afternoon ? (afternoon.status === 'completed' ? '완료' : '진행중') : '미점검'} +
+ ${afternoon ? `
${afternoon.inspector_name || ''}
` : ''} +
+ `; +} + +// 순회점검 시작 +async function startPatrol() { + const patrolDate = document.getElementById('patrolDate').value; + const patrolTime = document.querySelector('.patrol-time-btn.active')?.dataset.time; + const categoryId = document.getElementById('categorySelect').value; + + if (!patrolDate || !patrolTime || !categoryId) { + alert('점검 일자, 시간대, 공장을 모두 선택해주세요.'); + return; + } + + try { + // 세션 생성 또는 조회 + const response = await axios.post('/patrol/sessions', { + patrol_date: patrolDate, + patrol_time: patrolTime, + category_id: categoryId + }); + + if (response.data.success) { + currentSession = response.data.data; + currentSession.patrol_date = patrolDate; + currentSession.patrol_time = patrolTime; + currentSession.category_id = categoryId; + + // 작업장 목록 로드 + await loadWorkplaces(categoryId); + + // 체크리스트 항목 로드 + await loadChecklistItems(categoryId); + + // 점검 영역 표시 + document.getElementById('patrolArea').style.display = 'block'; + renderSessionInfo(); + renderWorkplaceMap(); + + // 시작 버튼 비활성화 + document.getElementById('startPatrolBtn').textContent = '점검 진행중...'; + document.getElementById('startPatrolBtn').disabled = true; + } + } catch (error) { + console.error('순회점검 시작 실패:', error); + alert('순회점검을 시작할 수 없습니다.'); + } +} + +// 작업장 목록 로드 +async function loadWorkplaces(categoryId) { + try { + const response = await axios.get(`/workplaces?category_id=${categoryId}`); + if (response.data.success) { + workplaces = response.data.data; + } + } catch (error) { + console.error('작업장 목록 로드 실패:', error); + } +} + +// 체크리스트 항목 로드 +async function loadChecklistItems(categoryId) { + try { + const response = await axios.get(`/patrol/checklist?category_id=${categoryId}`); + if (response.data.success) { + checklistItems = response.data.data.items; + } + } catch (error) { + console.error('체크리스트 항목 로드 실패:', error); + } +} + +// 세션 정보 렌더링 +function renderSessionInfo() { + const container = document.getElementById('sessionInfo'); + const category = categories.find(c => c.category_id == currentSession.category_id); + const checkedCount = Object.values(checkRecords).flat().filter(r => r.is_checked).length; + const totalCount = workplaces.length * checklistItems.length; + const progress = totalCount > 0 ? Math.round(checkedCount / totalCount * 100) : 0; + + container.innerHTML = ` +
+
+ 점검일자 + ${formatDate(currentSession.patrol_date)} +
+
+ 시간대 + ${currentSession.patrol_time === 'morning' ? '오전' : '오후'} +
+
+ 공장 + ${category?.category_name || ''} +
+
+
+
+
+
+ ${progress}% +
+ `; +} + +// 작업장 지도/목록 렌더링 +function renderWorkplaceMap() { + const mapContainer = document.getElementById('patrolMapContainer'); + const listContainer = document.getElementById('workplaceListContainer'); + const category = categories.find(c => c.category_id == currentSession.category_id); + + // 지도 이미지가 있으면 지도 표시 + if (category?.layout_image) { + mapContainer.innerHTML = `${category.category_name} 지도`; + mapContainer.style.display = 'block'; + listContainer.style.display = 'none'; + + // 작업장 마커 추가 + workplaces.forEach(wp => { + if (wp.x_percent && wp.y_percent) { + const marker = document.createElement('div'); + marker.className = 'workplace-marker'; + marker.style.left = `${wp.x_percent}%`; + marker.style.top = `${wp.y_percent}%`; + marker.textContent = wp.workplace_name; + marker.dataset.workplaceId = wp.workplace_id; + marker.onclick = () => selectWorkplace(wp.workplace_id); + + // 점검 상태에 따른 스타일 + const records = checkRecords[wp.workplace_id]; + if (records && records.some(r => r.is_checked)) { + marker.classList.add(records.every(r => r.is_checked) ? 'completed' : 'in-progress'); + } + + mapContainer.appendChild(marker); + } + }); + } else { + // 지도 없으면 카드 목록으로 표시 + mapContainer.style.display = 'none'; + listContainer.style.display = 'grid'; + + listContainer.innerHTML = workplaces.map(wp => { + const records = checkRecords[wp.workplace_id]; + const isCompleted = records && records.length > 0 && records.every(r => r.is_checked); + const isInProgress = records && records.some(r => r.is_checked); + + return ` +
+
${wp.workplace_name}
+
+ ${isCompleted ? '점검완료' : (isInProgress ? '점검중' : '미점검')} +
+
+ `; + }).join(''); + } +} + +// 작업장 선택 +async function selectWorkplace(workplaceId) { + selectedWorkplace = workplaces.find(w => w.workplace_id === workplaceId); + + // 마커/카드 선택 상태 업데이트 + document.querySelectorAll('.workplace-marker, .workplace-card').forEach(el => { + el.classList.remove('selected'); + if (el.dataset.workplaceId == workplaceId) { + el.classList.add('selected'); + } + }); + + // 기존 체크 기록 로드 + if (!checkRecords[workplaceId]) { + try { + const response = await axios.get(`/patrol/sessions/${currentSession.session_id}/records?workplace_id=${workplaceId}`); + if (response.data.success) { + checkRecords[workplaceId] = response.data.data; + } + } catch (error) { + console.error('체크 기록 로드 실패:', error); + checkRecords[workplaceId] = []; + } + } + + // 체크리스트 렌더링 + renderChecklist(workplaceId); + + // 물품 현황 로드 및 표시 + await loadWorkplaceItems(workplaceId); + + // 액션 버튼 표시 + document.getElementById('checklistActions').style.display = 'flex'; +} + +// 체크리스트 렌더링 +function renderChecklist(workplaceId) { + const header = document.getElementById('checklistHeader'); + const content = document.getElementById('checklistContent'); + const workplace = workplaces.find(w => w.workplace_id === workplaceId); + + header.innerHTML = ` +

${workplace?.workplace_name || ''} 체크리스트

+

각 항목을 점검하고 체크해주세요

+ `; + + // 카테고리별 그룹화 + const grouped = {}; + checklistItems.forEach(item => { + if (!grouped[item.check_category]) { + grouped[item.check_category] = []; + } + grouped[item.check_category].push(item); + }); + + const records = checkRecords[workplaceId] || []; + + content.innerHTML = Object.entries(grouped).map(([category, items]) => ` +
+
${getCategoryName(category)}
+ ${items.map(item => { + const record = records.find(r => r.check_item_id === item.item_id); + const isChecked = record?.is_checked; + const checkResult = record?.check_result; + + return ` +
+
+ ${isChecked ? '✓' : ''} +
+
+
+ ${item.check_item} + ${item.is_required ? '*' : ''} +
+ ${isChecked ? ` +
+ + + +
+ ` : ''} +
+
+ `; + }).join('')} +
+ `).join(''); +} + +// 카테고리명 변환 +function getCategoryName(code) { + const names = { + 'SAFETY': '안전', + 'ORGANIZATION': '정리정돈', + 'EQUIPMENT': '설비', + 'ENVIRONMENT': '환경' + }; + return names[code] || code; +} + +// 체크 항목 토글 +function toggleCheckItem(workplaceId, itemId) { + if (!checkRecords[workplaceId]) { + checkRecords[workplaceId] = []; + } + + const records = checkRecords[workplaceId]; + const existingIndex = records.findIndex(r => r.check_item_id === itemId); + + if (existingIndex >= 0) { + records[existingIndex].is_checked = !records[existingIndex].is_checked; + if (!records[existingIndex].is_checked) { + records[existingIndex].check_result = null; + } + } else { + records.push({ + check_item_id: itemId, + is_checked: true, + check_result: 'good', + note: null + }); + } + + renderChecklist(workplaceId); + renderWorkplaceMap(); + renderSessionInfo(); +} + +// 체크 결과 설정 +function setCheckResult(workplaceId, itemId, result) { + const records = checkRecords[workplaceId]; + const record = records.find(r => r.check_item_id === itemId); + if (record) { + record.check_result = result; + renderChecklist(workplaceId); + } +} + +// 임시 저장 +async function saveChecklistDraft() { + if (!selectedWorkplace) return; + + try { + const records = checkRecords[selectedWorkplace.workplace_id] || []; + await axios.post(`/patrol/sessions/${currentSession.session_id}/records/batch`, { + workplace_id: selectedWorkplace.workplace_id, + records: records + }); + alert('임시 저장되었습니다.'); + } catch (error) { + console.error('임시 저장 실패:', error); + alert('저장에 실패했습니다.'); + } +} + +// 저장 후 다음 +async function saveChecklist() { + if (!selectedWorkplace) return; + + try { + const records = checkRecords[selectedWorkplace.workplace_id] || []; + await axios.post(`/patrol/sessions/${currentSession.session_id}/records/batch`, { + workplace_id: selectedWorkplace.workplace_id, + records: records + }); + + // 다음 미점검 작업장으로 이동 + const currentIndex = workplaces.findIndex(w => w.workplace_id === selectedWorkplace.workplace_id); + const nextWorkplace = workplaces.slice(currentIndex + 1).find(w => { + const records = checkRecords[w.workplace_id]; + return !records || records.length === 0 || !records.every(r => r.is_checked); + }); + + if (nextWorkplace) { + selectWorkplace(nextWorkplace.workplace_id); + } else { + alert('모든 작업장 점검이 완료되었습니다!'); + } + } catch (error) { + console.error('저장 실패:', error); + alert('저장에 실패했습니다.'); + } +} + +// 순회점검 완료 +async function completePatrol() { + if (!currentSession) return; + + // 미점검 작업장 확인 + const uncheckedCount = workplaces.filter(w => { + const records = checkRecords[w.workplace_id]; + return !records || records.length === 0; + }).length; + + if (uncheckedCount > 0) { + if (!confirm(`아직 ${uncheckedCount}개 작업장이 미점검 상태입니다. 그래도 완료하시겠습니까?`)) { + return; + } + } + + try { + const notes = document.getElementById('patrolNotes').value; + if (notes) { + await axios.patch(`/patrol/sessions/${currentSession.session_id}/notes`, { notes }); + } + + await axios.patch(`/patrol/sessions/${currentSession.session_id}/complete`); + + alert('순회점검이 완료되었습니다.'); + location.reload(); + } catch (error) { + console.error('순회점검 완료 실패:', error); + alert('순회점검 완료에 실패했습니다.'); + } +} + +// ==================== 물품 현황 ==================== + +// 작업장 물품 로드 +async function loadWorkplaceItems(workplaceId) { + try { + const response = await axios.get(`/patrol/workplaces/${workplaceId}/items`); + if (response.data.success) { + workplaceItems = response.data.data; + renderItemsSection(workplaceId); + } + } catch (error) { + console.error('물품 로드 실패:', error); + workplaceItems = []; + } +} + +// 물품 섹션 렌더링 +function renderItemsSection(workplaceId) { + const section = document.getElementById('itemsSection'); + const workplace = workplaces.find(w => w.workplace_id === workplaceId); + const container = document.getElementById('itemsMapContainer'); + + document.getElementById('selectedWorkplaceName').textContent = workplace?.workplace_name || ''; + + // 작업장 레이아웃 이미지가 있으면 표시 + if (workplace?.layout_image) { + container.innerHTML = `${workplace.workplace_name}`; + + // 물품 마커 추가 + workplaceItems.forEach(item => { + if (item.x_percent && item.y_percent) { + const marker = document.createElement('div'); + marker.className = `item-marker ${item.item_type}`; + marker.style.left = `${item.x_percent}%`; + marker.style.top = `${item.y_percent}%`; + marker.style.width = `${item.width_percent || 5}%`; + marker.style.height = `${item.height_percent || 5}%`; + marker.innerHTML = item.icon || getItemTypeIcon(item.item_type); + marker.title = `${item.item_name || item.type_name} (${item.quantity}개)`; + marker.dataset.itemId = item.item_id; + marker.onclick = () => openItemModal(item); + container.appendChild(marker); + } + }); + } else { + container.innerHTML = '

작업장 레이아웃 이미지가 없습니다.

'; + } + + section.style.display = 'block'; +} + +// 물품 유형 아이콘 +function getItemTypeIcon(typeCode) { + const icons = { + 'container': '📦', + 'plate': '🔲', + 'material': '🧱', + 'tool': '🔧', + 'other': '📍' + }; + return icons[typeCode] || '📍'; +} + +// 물품 유형 셀렉트 렌더링 +function renderItemTypesSelect() { + const select = document.getElementById('itemType'); + if (!select) return; + select.innerHTML = itemTypes.map(t => + `` + ).join(''); +} + +// 물품 범례 렌더링 +function renderItemsLegend() { + const container = document.getElementById('itemsLegend'); + if (!container) return; + container.innerHTML = itemTypes.map(t => ` +
+
+ ${t.icon} +
+ ${t.type_name} +
+ `).join(''); +} + +// 편집 모드 토글 +function toggleItemEditMode() { + isItemEditMode = !isItemEditMode; + document.getElementById('itemEditModeText').textContent = isItemEditMode ? '편집모드 종료' : '편집모드'; + + if (isItemEditMode) { + // 지도 클릭으로 물품 추가 + const container = document.getElementById('itemsMapContainer'); + container.style.cursor = 'crosshair'; + container.onclick = (e) => { + if (e.target === container || e.target.tagName === 'IMG') { + const rect = container.getBoundingClientRect(); + const x = ((e.clientX - rect.left) / rect.width * 100).toFixed(2); + const y = ((e.clientY - rect.top) / rect.height * 100).toFixed(2); + openItemModal(null, x, y); + } + }; + } else { + const container = document.getElementById('itemsMapContainer'); + container.style.cursor = 'default'; + container.onclick = null; + } +} + +// 물품 모달 열기 +function openItemModal(item = null, x = null, y = null) { + const modal = document.getElementById('itemModal'); + const title = document.getElementById('itemModalTitle'); + const deleteBtn = document.getElementById('deleteItemBtn'); + + if (item) { + title.textContent = '물품 수정'; + document.getElementById('itemId').value = item.item_id; + document.getElementById('itemType').value = item.item_type; + document.getElementById('itemName').value = item.item_name || ''; + document.getElementById('itemQuantity').value = item.quantity || 1; + deleteBtn.style.display = 'inline-block'; + } else { + title.textContent = '물품 추가'; + document.getElementById('itemForm').reset(); + document.getElementById('itemId').value = ''; + document.getElementById('itemId').dataset.x = x; + document.getElementById('itemId').dataset.y = y; + deleteBtn.style.display = 'none'; + } + + modal.style.display = 'flex'; +} + +// 물품 모달 닫기 +function closeItemModal() { + document.getElementById('itemModal').style.display = 'none'; +} + +// 물품 저장 +async function saveItem() { + if (!selectedWorkplace) return; + + const itemId = document.getElementById('itemId').value; + const data = { + item_type: document.getElementById('itemType').value, + item_name: document.getElementById('itemName').value, + quantity: parseInt(document.getElementById('itemQuantity').value) || 1, + patrol_session_id: currentSession?.session_id + }; + + // 새 물품일 경우 위치 추가 + if (!itemId) { + data.x_percent = parseFloat(document.getElementById('itemId').dataset.x); + data.y_percent = parseFloat(document.getElementById('itemId').dataset.y); + data.width_percent = 5; + data.height_percent = 5; + } + + try { + if (itemId) { + await axios.put(`/patrol/items/${itemId}`, data); + } else { + await axios.post(`/patrol/workplaces/${selectedWorkplace.workplace_id}/items`, data); + } + + closeItemModal(); + await loadWorkplaceItems(selectedWorkplace.workplace_id); + } catch (error) { + console.error('물품 저장 실패:', error); + alert('물품 저장에 실패했습니다.'); + } +} + +// 물품 삭제 +async function deleteItem() { + const itemId = document.getElementById('itemId').value; + if (!itemId) return; + + if (!confirm('이 물품을 삭제하시겠습니까?')) return; + + try { + await axios.delete(`/patrol/items/${itemId}`); + closeItemModal(); + await loadWorkplaceItems(selectedWorkplace.workplace_id); + } catch (error) { + console.error('물품 삭제 실패:', error); + alert('물품 삭제에 실패했습니다.'); + } +} + +// 유틸리티 함수 +function formatDate(dateStr) { + if (!dateStr) return ''; + const date = new Date(dateStr); + return date.toLocaleDateString('ko-KR', { year: 'numeric', month: 'long', day: 'numeric', weekday: 'short' }); +} + +// ESC 키로 모달 닫기 +document.addEventListener('keydown', (e) => { + if (e.key === 'Escape') { + closeItemModal(); + } +}); diff --git a/web-ui/js/daily-work-report.js b/web-ui/js/daily-work-report.js index 4635ffd..8f1746d 100644 --- a/web-ui/js/daily-work-report.js +++ b/web-ui/js/daily-work-report.js @@ -1738,8 +1738,8 @@ async function loadData() { async function loadWorkers() { try { console.log('Workers API 호출 중... (통합 API 사용)'); - // 모든 작업자 1000명까지 조회 - const data = await window.apiCall(`${window.API}/workers?limit=1000`); + // 생산팀 소속 작업자만 조회 + const data = await window.apiCall(`/workers?limit=1000&department_id=1`); const allWorkers = Array.isArray(data) ? data : (data.data || data.workers || []); // 작업 보고서에 표시할 작업자만 필터링 @@ -1760,7 +1760,7 @@ async function loadWorkers() { async function loadProjects() { try { console.log('Projects API 호출 중... (활성 프로젝트만)'); - const data = await window.apiCall(`${window.API}/projects/active/list`); + const data = await window.apiCall(`/projects/active/list`); projects = Array.isArray(data) ? data : (data.data || data.projects || []); console.log('✅ 활성 프로젝트 로드 성공:', projects.length); } catch (error) { @@ -1771,7 +1771,7 @@ async function loadProjects() { async function loadWorkTypes() { try { - const data = await window.apiCall(`${window.API}/daily-work-reports/work-types`); + const data = await window.apiCall(`/daily-work-reports/work-types`); if (Array.isArray(data) && data.length > 0) { workTypes = data; console.log('✅ 작업 유형 API 사용 (통합 설정)'); @@ -1790,7 +1790,7 @@ async function loadWorkTypes() { async function loadWorkStatusTypes() { try { - const data = await window.apiCall(`${window.API}/daily-work-reports/work-status-types`); + const data = await window.apiCall(`/daily-work-reports/work-status-types`); if (Array.isArray(data) && data.length > 0) { workStatusTypes = data; console.log('✅ 업무 상태 유형 API 사용 (통합 설정)'); @@ -1809,7 +1809,7 @@ async function loadWorkStatusTypes() { async function loadErrorTypes() { // 레거시 에러 유형 로드 (호환성) try { - const data = await window.apiCall(`${window.API}/daily-work-reports/error-types`); + const data = await window.apiCall(`/daily-work-reports/error-types`); if (Array.isArray(data) && data.length > 0) { errorTypes = data; } @@ -2268,7 +2268,7 @@ async function saveWorkReport() { console.log('🔄 전송 데이터 JSON:', JSON.stringify(requestData, null, 2)); try { - const result = await window.apiCall(`${window.API}/daily-work-reports`, 'POST', requestData); + const result = await window.apiCall(`/daily-work-reports`, 'POST', requestData); console.log('✅ 저장 성공:', result); totalSaved++; @@ -2370,7 +2370,7 @@ async function loadTodayWorkers() { console.log(`🔒 본인 입력분만 조회 (통합 API): ${API}/daily-work-reports?${queryParams}`); - const rawData = await window.apiCall(`${window.API}/daily-work-reports?${queryParams}`); + const rawData = await window.apiCall(`/daily-work-reports?${queryParams}`); console.log('📊 당일 작업 데이터 (통합 API):', rawData); let data = []; @@ -2505,7 +2505,7 @@ async function editWorkItem(workId) { // 1. 기존 데이터 조회 (통합 API 사용) showMessage('작업 정보를 불러오는 중... (통합 API)', 'loading'); - const workData = await window.apiCall(`${window.API}/daily-work-reports/${workId}`); + const workData = await window.apiCall(`/daily-work-reports/${workId}`); console.log('수정할 작업 데이터 (통합 API):', workData); // 2. 수정 모달 표시 @@ -2644,7 +2644,7 @@ async function saveEditedWork() { showMessage('작업을 수정하는 중... (통합 API)', 'loading'); - const result = await window.apiCall(`${window.API}/daily-work-reports/${editingWorkId}`, { + const result = await window.apiCall(`/daily-work-reports/${editingWorkId}`, { method: 'PUT', body: JSON.stringify(updateData) }); @@ -2673,7 +2673,7 @@ async function deleteWorkItem(workId) { showMessage('작업을 삭제하는 중... (통합 API)', 'loading'); // 개별 항목 삭제 API 호출 (본인 작성분만 삭제 가능) - 통합 API 사용 - const result = await window.apiCall(`${window.API}/daily-work-reports/my-entry/${workId}`, { + const result = await window.apiCall(`/daily-work-reports/my-entry/${workId}`, { method: 'DELETE' }); diff --git a/web-ui/js/department-management.js b/web-ui/js/department-management.js new file mode 100644 index 0000000..5207204 --- /dev/null +++ b/web-ui/js/department-management.js @@ -0,0 +1,339 @@ +// department-management.js +// 부서 관리 페이지 JavaScript + +let departments = []; +let selectedDepartmentId = null; +let selectedWorkers = new Set(); + +// 페이지 초기화 +document.addEventListener('DOMContentLoaded', async () => { + await waitForApiConfig(); + await loadDepartments(); +}); + +// API 설정 로드 대기 +async function waitForApiConfig() { + let retryCount = 0; + while (!window.apiCall && retryCount < 50) { + await new Promise(resolve => setTimeout(resolve, 100)); + retryCount++; + } + if (!window.apiCall) { + console.error('API 설정 로드 실패'); + } +} + +// 부서 목록 로드 +async function loadDepartments() { + try { + const result = await window.apiCall('/departments'); + + if (result.success) { + departments = result.data; + renderDepartmentList(); + updateMoveToDepartmentSelect(); + } + } catch (error) { + console.error('부서 목록 로드 실패:', error); + } +} + +// 부서 목록 렌더링 +function renderDepartmentList() { + const container = document.getElementById('departmentList'); + + if (departments.length === 0) { + container.innerHTML = ` +
+ 등록된 부서가 없습니다.
+ +
+ `; + return; + } + + container.innerHTML = departments.map(dept => ` +
+
+ ${dept.department_name} + ${dept.worker_count || 0}명 +
+
+ + +
+
+ `).join(''); +} + +// 부서 선택 +async function selectDepartment(departmentId) { + selectedDepartmentId = departmentId; + selectedWorkers.clear(); + updateBulkActions(); + renderDepartmentList(); + + const dept = departments.find(d => d.department_id === departmentId); + document.getElementById('workerListTitle').textContent = `${dept.department_name} 작업자`; + document.getElementById('addWorkerBtn').style.display = 'inline-flex'; + + await loadWorkers(departmentId); +} + +// 부서별 작업자 로드 +async function loadWorkers(departmentId) { + try { + const result = await window.apiCall(`/departments/${departmentId}/workers`); + + if (result.success) { + renderWorkerList(result.data); + } + } catch (error) { + console.error('작업자 목록 로드 실패:', error); + } +} + +// 작업자 목록 렌더링 +function renderWorkerList(workers) { + const container = document.getElementById('workerList'); + + if (workers.length === 0) { + container.innerHTML = ` +
+ 이 부서에 소속된 작업자가 없습니다. +
+ `; + return; + } + + container.innerHTML = workers.map(worker => ` +
+
+ +
${worker.worker_name.charAt(0)}
+
+ ${worker.worker_name} + ${getJobTypeName(worker.job_type)} +
+
+
+ `).join(''); +} + +// 직책 한글 변환 +function getJobTypeName(jobType) { + const names = { + leader: '그룹장', + worker: '작업자', + admin: '관리자' + }; + return names[jobType] || jobType || '-'; +} + +// 작업자 선택 토글 +function toggleWorkerSelection(workerId) { + if (selectedWorkers.has(workerId)) { + selectedWorkers.delete(workerId); + } else { + selectedWorkers.add(workerId); + } + updateBulkActions(); + + // 선택 상태 업데이트 + const card = document.querySelector(`.worker-card[onclick*="${workerId}"]`); + if (card) { + card.classList.toggle('selected', selectedWorkers.has(workerId)); + const checkbox = card.querySelector('input[type="checkbox"]'); + if (checkbox) checkbox.checked = selectedWorkers.has(workerId); + } +} + +// 일괄 작업 영역 업데이트 +function updateBulkActions() { + const bulkActions = document.getElementById('bulkActions'); + const selectedCount = document.getElementById('selectedCount'); + + if (selectedWorkers.size > 0) { + bulkActions.classList.add('visible'); + selectedCount.textContent = selectedWorkers.size; + } else { + bulkActions.classList.remove('visible'); + } +} + +// 이동 대상 부서 선택 업데이트 +function updateMoveToDepartmentSelect() { + const select = document.getElementById('moveToDepartment'); + select.innerHTML = '' + + departments.map(d => ``).join(''); +} + +// 선택한 작업자 이동 +async function moveSelectedWorkers() { + const targetDepartmentId = document.getElementById('moveToDepartment').value; + + if (!targetDepartmentId) { + alert('이동할 부서를 선택하세요.'); + return; + } + + if (selectedWorkers.size === 0) { + alert('이동할 작업자를 선택하세요.'); + return; + } + + if (parseInt(targetDepartmentId) === selectedDepartmentId) { + alert('같은 부서로는 이동할 수 없습니다.'); + return; + } + + try { + const result = await window.apiCall('/departments/move-workers', 'POST', { + workerIds: Array.from(selectedWorkers), + departmentId: parseInt(targetDepartmentId) + }); + + if (result.success) { + alert(result.message); + selectedWorkers.clear(); + updateBulkActions(); + document.getElementById('moveToDepartment').value = ''; + await loadDepartments(); + await loadWorkers(selectedDepartmentId); + } else { + alert(result.error || '이동 실패'); + } + } catch (error) { + console.error('작업자 이동 실패:', error); + alert('작업자 이동에 실패했습니다.'); + } +} + +// 부서 모달 열기 +function openDepartmentModal(departmentId = null) { + const modal = document.getElementById('departmentModal'); + const title = document.getElementById('departmentModalTitle'); + const form = document.getElementById('departmentForm'); + + // 상위 부서 선택 옵션 업데이트 + const parentSelect = document.getElementById('parentDepartment'); + parentSelect.innerHTML = '' + + departments + .filter(d => d.department_id !== departmentId) + .map(d => ``) + .join(''); + + if (departmentId) { + const dept = departments.find(d => d.department_id === departmentId); + title.textContent = '부서 수정'; + document.getElementById('departmentId').value = dept.department_id; + document.getElementById('departmentName').value = dept.department_name; + document.getElementById('parentDepartment').value = dept.parent_id || ''; + document.getElementById('departmentDescription').value = dept.description || ''; + document.getElementById('displayOrder').value = dept.display_order || 0; + document.getElementById('isActive').checked = dept.is_active; + } else { + title.textContent = '새 부서 등록'; + form.reset(); + document.getElementById('departmentId').value = ''; + document.getElementById('isActive').checked = true; + } + + modal.classList.add('show'); +} + +// 부서 모달 닫기 +function closeDepartmentModal() { + document.getElementById('departmentModal').classList.remove('show'); +} + +// 부서 저장 +async function saveDepartment(event) { + event.preventDefault(); + + const departmentId = document.getElementById('departmentId').value; + const data = { + department_name: document.getElementById('departmentName').value, + parent_id: document.getElementById('parentDepartment').value || null, + description: document.getElementById('departmentDescription').value, + display_order: parseInt(document.getElementById('displayOrder').value) || 0, + is_active: document.getElementById('isActive').checked + }; + + try { + const url = departmentId ? `/departments/${departmentId}` : '/departments'; + const method = departmentId ? 'PUT' : 'POST'; + + const result = await window.apiCall(url, method, data); + + if (result.success) { + alert(result.message); + closeDepartmentModal(); + await loadDepartments(); + } else { + alert(result.error || '저장 실패'); + } + } catch (error) { + console.error('부서 저장 실패:', error); + alert('부서 저장에 실패했습니다.'); + } +} + +// 부서 수정 +function editDepartment(departmentId) { + openDepartmentModal(departmentId); +} + +// 부서 삭제 +async function deleteDepartment(departmentId) { + const dept = departments.find(d => d.department_id === departmentId); + + if (!confirm(`"${dept.department_name}" 부서를 삭제하시겠습니까?\n\n소속 작업자가 있거나 하위 부서가 있으면 삭제할 수 없습니다.`)) { + return; + } + + try { + const result = await window.apiCall(`/departments/${departmentId}`, 'DELETE'); + + if (result.success) { + alert('부서가 삭제되었습니다.'); + if (selectedDepartmentId === departmentId) { + selectedDepartmentId = null; + document.getElementById('workerListTitle').textContent = '부서를 선택하세요'; + document.getElementById('addWorkerBtn').style.display = 'none'; + document.getElementById('workerList').innerHTML = ` +
+ 왼쪽에서 부서를 선택하면 해당 부서의 작업자가 표시됩니다. +
+ `; + } + await loadDepartments(); + } else { + alert(result.error || '삭제 실패'); + } + } catch (error) { + console.error('부서 삭제 실패:', error); + alert('부서 삭제에 실패했습니다.'); + } +} + +// 작업자 추가 모달 (작업자 관리 페이지로 이동) +function openAddWorkerModal() { + alert('작업자 관리 페이지에서 작업자를 등록한 후 이 페이지에서 부서를 배정하세요.'); + // window.location.href = '/pages/admin/workers.html'; +} diff --git a/web-ui/js/equipment-management.js b/web-ui/js/equipment-management.js index 413ce1d..c516657 100644 --- a/web-ui/js/equipment-management.js +++ b/web-ui/js/equipment-management.js @@ -2,13 +2,13 @@ // 설비 관리 페이지 JavaScript let equipments = []; +let allEquipments = []; // 필터링 전 전체 데이터 let workplaces = []; let equipmentTypes = []; let currentEquipment = null; // 페이지 로드 시 초기화 document.addEventListener('DOMContentLoaded', async () => { - // axios 설정이 완료될 때까지 대기 await waitForAxiosConfig(); await loadInitialData(); }); @@ -22,11 +22,10 @@ function waitForAxiosConfig() { resolve(); } }, 50); - // 최대 5초 대기 setTimeout(() => { clearInterval(check); if (!axios.defaults.baseURL) { - console.error('⚠️ Axios 설정 시간 초과'); + console.error('Axios 설정 시간 초과'); } resolve(); }, 5000); @@ -52,7 +51,9 @@ async function loadEquipments() { try { const response = await axios.get('/equipments'); if (response.data.success) { - equipments = response.data.data; + allEquipments = response.data.data; + equipments = [...allEquipments]; + renderStats(); renderEquipmentList(); } } catch (error) { @@ -71,7 +72,6 @@ async function loadWorkplaces() { } } catch (error) { console.error('작업장 목록 로드 실패:', error); - throw error; } } @@ -85,26 +85,69 @@ async function loadEquipmentTypes() { } } catch (error) { console.error('설비 유형 로드 실패:', error); - // 실패해도 계속 진행 (유형이 없을 수 있음) } } +// 통계 렌더링 +function renderStats() { + const container = document.getElementById('statsSection'); + if (!container) return; + + const totalCount = allEquipments.length; + const activeCount = allEquipments.filter(e => e.status === 'active').length; + const maintenanceCount = allEquipments.filter(e => e.status === 'maintenance').length; + const inactiveCount = allEquipments.filter(e => e.status === 'inactive').length; + + const totalValue = allEquipments.reduce((sum, e) => sum + (Number(e.purchase_price) || 0), 0); + const avgValue = totalCount > 0 ? totalValue / totalCount : 0; + + container.innerHTML = ` +
+
전체 설비
+
${totalCount}대
+
총 자산가치 ${formatPriceShort(totalValue)}
+
+
+
활성
+
${activeCount}대
+
${totalCount > 0 ? Math.round(activeCount / totalCount * 100) : 0}%
+
+
+
정비중
+
${maintenanceCount}대
+
${totalCount > 0 ? Math.round(maintenanceCount / totalCount * 100) : 0}%
+
+
+
비활성
+
${inactiveCount}대
+
${totalCount > 0 ? Math.round(inactiveCount / totalCount * 100) : 0}%
+
+
+
평균 구입가
+
${formatPriceShort(avgValue)}
+
설비당 평균
+
+ `; +} + // 작업장 필터 채우기 function populateWorkplaceFilters() { const filterWorkplace = document.getElementById('filterWorkplace'); const modalWorkplace = document.getElementById('workplaceId'); const workplaceOptions = workplaces.map(w => - `` + `` ).join(''); - filterWorkplace.innerHTML = '' + workplaceOptions; - modalWorkplace.innerHTML = '' + workplaceOptions; + if (filterWorkplace) filterWorkplace.innerHTML = '' + workplaceOptions; + if (modalWorkplace) modalWorkplace.innerHTML = '' + workplaceOptions; } // 설비 유형 필터 채우기 function populateTypeFilter() { const filterType = document.getElementById('filterType'); + if (!filterType) return; + const typeOptions = equipmentTypes.map(type => `` ).join(''); @@ -117,7 +160,7 @@ function renderEquipmentList() { if (equipments.length === 0) { container.innerHTML = ` -
+

등록된 설비가 없습니다.

@@ -126,47 +169,56 @@ function renderEquipmentList() { } const tableHTML = ` - - - - - - - - - - - - - - - ${equipments.map(equipment => ` +
+ 검색 결과 ${equipments.length}건 +
+
+
설비 코드설비명유형작업장제조사모델명상태관리
+ - - - - - - - - + + + + + + + + + + - `).join('')} - -
${equipment.equipment_code}${equipment.equipment_name}${equipment.equipment_type || '-'}${equipment.workplace_name || '-'}${equipment.manufacturer || '-'}${equipment.model_name || '-'} - - ${getStatusText(equipment.status)} - - -
- - -
-
관리번호설비명모델명규격제조사구입처구입가격구입일자상태관리
+ + + ${equipments.map(eq => ` + + ${eq.equipment_code || '-'} + ${eq.equipment_name || '-'} + ${eq.model_name || '-'} + ${eq.specifications || '-'} + ${eq.manufacturer || '-'} + ${eq.supplier || '-'} + ${eq.purchase_price ? formatPrice(eq.purchase_price) : '-'} + ${eq.installation_date ? formatDate(eq.installation_date) : '-'} + + + ${getStatusText(eq.status)} + + + +
+ + +
+ + + `).join('')} + + +
`; container.innerHTML = tableHTML; @@ -179,7 +231,32 @@ function getStatusText(status) { 'maintenance': '정비중', 'inactive': '비활성' }; - return statusMap[status] || status; + return statusMap[status] || status || '-'; +} + +// 가격 포맷팅 (전체) +function formatPrice(price) { + if (!price) return '-'; + return Number(price).toLocaleString('ko-KR') + '원'; +} + +// 가격 포맷팅 (축약) +function formatPriceShort(price) { + if (!price) return '0원'; + const num = Number(price); + if (num >= 100000000) { + return (num / 100000000).toFixed(1).replace(/\.0$/, '') + '억원'; + } else if (num >= 10000) { + return (num / 10000).toFixed(0) + '만원'; + } + return num.toLocaleString('ko-KR') + '원'; +} + +// 날짜 포맷팅 +function formatDate(dateStr) { + if (!dateStr) return '-'; + const date = new Date(dateStr); + return date.toLocaleDateString('ko-KR', { year: 'numeric', month: '2-digit', day: '2-digit' }); } // 필터링 @@ -189,38 +266,28 @@ function filterEquipments() { const statusFilter = document.getElementById('filterStatus').value; const searchTerm = document.getElementById('searchInput').value.toLowerCase(); - // API에서 필터링된 데이터를 가져오는 것이 더 효율적이지만, - // 클라이언트 측에서도 필터링을 적용합니다. - let filtered = [...equipments]; + equipments = allEquipments.filter(e => { + if (workplaceFilter && e.workplace_id != workplaceFilter) return false; + if (typeFilter && e.equipment_type !== typeFilter) return false; + if (statusFilter && e.status !== statusFilter) return false; + if (searchTerm) { + const searchFields = [ + e.equipment_name, + e.equipment_code, + e.manufacturer, + e.supplier, + e.model_name + ].map(f => (f || '').toLowerCase()); + if (!searchFields.some(f => f.includes(searchTerm))) return false; + } + return true; + }); - if (workplaceFilter) { - filtered = filtered.filter(e => e.workplace_id == workplaceFilter); - } - - if (typeFilter) { - filtered = filtered.filter(e => e.equipment_type === typeFilter); - } - - if (statusFilter) { - filtered = filtered.filter(e => e.status === statusFilter); - } - - if (searchTerm) { - filtered = filtered.filter(e => - e.equipment_name.toLowerCase().includes(searchTerm) || - e.equipment_code.toLowerCase().includes(searchTerm) - ); - } - - // 임시로 equipments를 필터링된 것으로 교체하고 렌더링 - const originalEquipments = equipments; - equipments = filtered; renderEquipmentList(); - equipments = originalEquipments; } // 설비 추가 모달 열기 -function openEquipmentModal(equipmentId = null) { +async function openEquipmentModal(equipmentId = null) { currentEquipment = equipmentId; const modal = document.getElementById('equipmentModal'); const modalTitle = document.getElementById('modalTitle'); @@ -234,30 +301,51 @@ function openEquipmentModal(equipmentId = null) { loadEquipmentData(equipmentId); } else { modalTitle.textContent = '설비 추가'; + // 새 설비일 경우 다음 관리번호 자동 생성 + await loadNextEquipmentCode(); } modal.style.display = 'flex'; } +// 다음 관리번호 로드 +async function loadNextEquipmentCode() { + try { + console.log('📋 다음 관리번호 조회 중...'); + const response = await axios.get('/equipments/next-code'); + console.log('📋 다음 관리번호 응답:', response.data); + if (response.data.success) { + document.getElementById('equipmentCode').value = response.data.data.next_code; + console.log('✅ 다음 관리번호 설정:', response.data.data.next_code); + } + } catch (error) { + console.error('❌ 다음 관리번호 조회 실패:', error); + console.error('❌ 에러 상세:', error.response?.data || error.message); + // 오류 시 기본값으로 빈 값 유지 (사용자가 직접 입력) + } +} + // 설비 데이터 로드 (수정용) async function loadEquipmentData(equipmentId) { try { const response = await axios.get(`/equipments/${equipmentId}`); if (response.data.success) { - const equipment = response.data.data; + const eq = response.data.data; - document.getElementById('equipmentId').value = equipment.equipment_id; - document.getElementById('equipmentCode').value = equipment.equipment_code; - document.getElementById('equipmentName').value = equipment.equipment_name; - document.getElementById('equipmentType').value = equipment.equipment_type || ''; - document.getElementById('workplaceId').value = equipment.workplace_id || ''; - document.getElementById('manufacturer').value = equipment.manufacturer || ''; - document.getElementById('modelName').value = equipment.model_name || ''; - document.getElementById('serialNumber').value = equipment.serial_number || ''; - document.getElementById('installationDate').value = equipment.installation_date ? equipment.installation_date.split('T')[0] : ''; - document.getElementById('equipmentStatus').value = equipment.status || 'active'; - document.getElementById('specifications').value = equipment.specifications || ''; - document.getElementById('notes').value = equipment.notes || ''; + document.getElementById('equipmentId').value = eq.equipment_id; + document.getElementById('equipmentCode').value = eq.equipment_code || ''; + document.getElementById('equipmentName').value = eq.equipment_name || ''; + document.getElementById('equipmentType').value = eq.equipment_type || ''; + document.getElementById('workplaceId').value = eq.workplace_id || ''; + document.getElementById('manufacturer').value = eq.manufacturer || ''; + document.getElementById('supplier').value = eq.supplier || ''; + document.getElementById('purchasePrice').value = eq.purchase_price || ''; + document.getElementById('modelName').value = eq.model_name || ''; + document.getElementById('serialNumber').value = eq.serial_number || ''; + document.getElementById('installationDate').value = eq.installation_date ? eq.installation_date.split('T')[0] : ''; + document.getElementById('equipmentStatus').value = eq.status || 'active'; + document.getElementById('specifications').value = eq.specifications || ''; + document.getElementById('notes').value = eq.notes || ''; } } catch (error) { console.error('설비 데이터 로드 실패:', error); @@ -280,6 +368,8 @@ async function saveEquipment() { equipment_type: document.getElementById('equipmentType').value.trim() || null, workplace_id: document.getElementById('workplaceId').value || null, manufacturer: document.getElementById('manufacturer').value.trim() || null, + supplier: document.getElementById('supplier').value.trim() || null, + purchase_price: document.getElementById('purchasePrice').value || null, model_name: document.getElementById('modelName').value.trim() || null, serial_number: document.getElementById('serialNumber').value.trim() || null, installation_date: document.getElementById('installationDate').value || null, @@ -288,9 +378,8 @@ async function saveEquipment() { notes: document.getElementById('notes').value.trim() || null }; - // 유효성 검사 if (!equipmentData.equipment_code) { - alert('설비 코드를 입력해주세요.'); + alert('관리번호를 입력해주세요.'); return; } @@ -302,10 +391,8 @@ async function saveEquipment() { try { let response; if (equipmentId) { - // 수정 response = await axios.put(`/equipments/${equipmentId}`, equipmentData); } else { - // 추가 response = await axios.post('/equipments', equipmentData); } @@ -313,11 +400,11 @@ async function saveEquipment() { alert(equipmentId ? '설비가 수정되었습니다.' : '설비가 추가되었습니다.'); closeEquipmentModal(); await loadEquipments(); - await loadEquipmentTypes(); // 새로운 유형이 추가될 수 있으므로 + await loadEquipmentTypes(); } } catch (error) { console.error('설비 저장 실패:', error); - if (error.response && error.response.data && error.response.data.message) { + if (error.response?.data?.message) { alert(error.response.data.message); } else { alert('설비 저장 중 오류가 발생했습니다.'); @@ -332,7 +419,7 @@ function editEquipment(equipmentId) { // 설비 삭제 async function deleteEquipment(equipmentId) { - const equipment = equipments.find(e => e.equipment_id === equipmentId); + const equipment = allEquipments.find(e => e.equipment_id === equipmentId); if (!equipment) return; if (!confirm(`'${equipment.equipment_name}' 설비를 삭제하시겠습니까?`)) { @@ -359,7 +446,7 @@ document.addEventListener('keydown', (e) => { }); // 모달 외부 클릭 시 닫기 -document.getElementById('equipmentModal').addEventListener('click', (e) => { +document.getElementById('equipmentModal')?.addEventListener('click', (e) => { if (e.target.id === 'equipmentModal') { closeEquipmentModal(); } diff --git a/web-ui/js/load-navbar.js b/web-ui/js/load-navbar.js index 59f1fe5..5589041 100644 --- a/web-ui/js/load-navbar.js +++ b/web-ui/js/load-navbar.js @@ -5,12 +5,13 @@ import { config } from './config.js'; // 역할 이름을 한글로 변환하는 맵 const ROLE_NAMES = { - admin: '관리자', - system: '시스템 관리자', - leader: '그룹장', - user: '작업자', - support: '지원팀', - default: '사용자', + 'system admin': '시스템 관리자', + 'admin': '관리자', + 'system': '시스템 관리자', + 'leader': '그룹장', + 'user': '작업자', + 'support': '지원팀', + 'default': '사용자', }; /** diff --git a/web-ui/js/load-sidebar.js b/web-ui/js/load-sidebar.js index b55ce71..f8bbc12 100644 --- a/web-ui/js/load-sidebar.js +++ b/web-ui/js/load-sidebar.js @@ -12,7 +12,10 @@ async function processSidebarDom(doc) { if (!currentUser) return; const userRole = (currentUser.role || '').toLowerCase(); - const isAdmin = userRole === 'admin' || userRole === 'system admin' || userRole === 'system'; + const accessLevel = (currentUser.access_level || '').toLowerCase(); + // role 또는 access_level로 관리자 확인 + const isAdmin = userRole === 'admin' || userRole === 'system admin' || userRole === 'system' || + accessLevel === 'admin' || accessLevel === 'system'; // 1. 관리자 전용 메뉴 표시/숨김 if (isAdmin) { @@ -164,6 +167,21 @@ function setupSidebarEvents() { localStorage.setItem('sidebarExpanded', JSON.stringify(expanded)); }); }); + + // 링크 프리페치 - 마우스 올리면 미리 로드 + const prefetchedUrls = new Set(); + sidebar.querySelectorAll('a.nav-item').forEach(link => { + link.addEventListener('mouseenter', () => { + const href = link.getAttribute('href'); + if (href && !prefetchedUrls.has(href) && !href.startsWith('#')) { + prefetchedUrls.add(href); + const prefetchLink = document.createElement('link'); + prefetchLink.rel = 'prefetch'; + prefetchLink.href = href; + document.head.appendChild(prefetchLink); + } + }, { once: true }); + }); } /** diff --git a/web-ui/js/modern-dashboard.js b/web-ui/js/modern-dashboard.js index a86bb60..eab6f77 100644 --- a/web-ui/js/modern-dashboard.js +++ b/web-ui/js/modern-dashboard.js @@ -108,36 +108,12 @@ async function initializeDashboard() { } // ========== 사용자 정보 설정 ========== // +// navbar/sidebar는 app-init.js에서 공통 처리하므로 여기서는 currentUser만 설정 function setupUserInfo() { const authData = getAuthData(); if (authData && authData.user) { currentUser = authData.user; - - // Navbar 컴포넌트가 사용자 정보를 처리하므로 여기서는 currentUser만 설정 - // 사용자 이름 설정 (navbar 컴포넌트가 없는 경우에만) - if (elements.userName) { - elements.userName.textContent = currentUser.name || currentUser.username; - } - - // 사용자 역할 설정 (navbar 컴포넌트가 없는 경우에만) - if (elements.userRole) { - const roleMap = { - 'admin': '관리자', - 'system': '시스템 관리자', - 'group_leader': '그룹장', - 'leader': '그룹장', - 'user': '작업자' - }; - elements.userRole.textContent = roleMap[currentUser.role] || '작업자'; - } - - // 아바타 초기값 설정 (navbar 컴포넌트가 없는 경우에만) - if (elements.userInitial) { - const initial = (currentUser.name || currentUser.username).charAt(0); - elements.userInitial.textContent = initial; - } - - console.log('👤 사용자 정보 설정 완료:', currentUser.name); + console.log('👤 사용자 정보 로드 완료:', currentUser.name, currentUser.role); } } diff --git a/web-ui/js/page-access-cache.js b/web-ui/js/page-access-cache.js new file mode 100644 index 0000000..bc1cfc2 --- /dev/null +++ b/web-ui/js/page-access-cache.js @@ -0,0 +1,119 @@ +// /js/page-access-cache.js +// 페이지 권한 캐시 - 중복 API 호출 방지 + +const CACHE_KEY = 'userPageAccess'; +const CACHE_DURATION = 10 * 60 * 1000; // 10분 + +// 진행 중인 API 호출 Promise (중복 방지) +let fetchPromise = null; + +/** + * 페이지 접근 권한 데이터 가져오기 (캐시 우선) + * @param {object} currentUser - 현재 사용자 객체 + * @returns {Promise} 접근 가능한 페이지 목록 + */ +export async function getPageAccess(currentUser) { + if (!currentUser || !currentUser.user_id) { + return null; + } + + // 1. 캐시 확인 + const cached = localStorage.getItem(CACHE_KEY); + if (cached) { + try { + const cacheData = JSON.parse(cached); + if (Date.now() - cacheData.timestamp < CACHE_DURATION) { + return cacheData.pages; + } + } catch (e) { + localStorage.removeItem(CACHE_KEY); + } + } + + // 2. 이미 API 호출 중이면 기존 Promise 반환 + if (fetchPromise) { + return fetchPromise; + } + + // 3. 새로운 API 호출 + fetchPromise = (async () => { + try { + const response = await fetch(`${window.API_BASE_URL}/users/${currentUser.user_id}/page-access`, { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${localStorage.getItem('token')}` + } + }); + + if (!response.ok) { + console.error('페이지 권한 조회 실패:', response.status); + return null; + } + + const data = await response.json(); + const accessiblePages = data.data.pageAccess || []; + + // 캐시 저장 + localStorage.setItem(CACHE_KEY, JSON.stringify({ + pages: accessiblePages, + timestamp: Date.now() + })); + + return accessiblePages; + } catch (error) { + console.error('페이지 권한 조회 오류:', error); + return null; + } finally { + fetchPromise = null; + } + })(); + + return fetchPromise; +} + +/** + * 특정 페이지에 대한 접근 권한 확인 + * @param {string} pageKey - 페이지 키 + * @param {object} currentUser - 현재 사용자 객체 + * @returns {Promise} + */ +export async function hasPageAccess(pageKey, currentUser) { + // Admin은 모든 페이지 접근 가능 + if (currentUser.role === 'Admin' || currentUser.role === 'System Admin') { + return true; + } + + // 대시보드, 프로필은 모든 사용자 접근 가능 + if (pageKey === 'dashboard' || (pageKey && pageKey.startsWith('profile.'))) { + return true; + } + + const pages = await getPageAccess(currentUser); + if (!pages) return false; + + const pageAccess = pages.find(p => p.page_key === pageKey); + return pageAccess && pageAccess.can_access === 1; +} + +/** + * 접근 가능한 페이지 키 목록 반환 + * @param {object} currentUser + * @returns {Promise} + */ +export async function getAccessiblePageKeys(currentUser) { + const pages = await getPageAccess(currentUser); + if (!pages) return []; + + return pages + .filter(p => p.can_access === 1) + .map(p => p.page_key); +} + +/** + * 캐시 초기화 + */ +export function clearPageAccessCache() { + localStorage.removeItem(CACHE_KEY); + fetchPromise = null; +} diff --git a/web-ui/js/page-access-management.js b/web-ui/js/page-access-management.js deleted file mode 100644 index fb308c5..0000000 --- a/web-ui/js/page-access-management.js +++ /dev/null @@ -1,338 +0,0 @@ -// page-access-management.js - 페이지 권한 관리 - -// 전역 변수 -let allUsers = []; -let allPages = []; -let currentUserId = null; -let currentFilter = 'all'; - -// DOM이 로드되면 초기화 -document.addEventListener('DOMContentLoaded', async () => { - console.log('🚀 페이지 권한 관리 시스템 초기화'); - - // API 함수가 로드될 때까지 대기 - let retryCount = 0; - while (!window.apiCall && retryCount < 50) { - await new Promise(resolve => setTimeout(resolve, 100)); - retryCount++; - } - - if (!window.apiCall) { - showToast('시스템을 초기화할 수 없습니다. 페이지를 새로고침해주세요.', 'error'); - return; - } - - // 이벤트 리스너 설정 - setupEventListeners(); - - // 데이터 로드 - await loadInitialData(); -}); - -// 이벤트 리스너 설정 -function setupEventListeners() { - // 필터 버튼 - document.querySelectorAll('.filter-btn').forEach(btn => { - btn.addEventListener('click', (e) => { - document.querySelectorAll('.filter-btn').forEach(b => b.classList.remove('active')); - e.target.classList.add('active'); - currentFilter = e.target.dataset.filter; - filterUsers(); - }); - }); - - // 저장 버튼 - const saveBtn = document.getElementById('savePageAccessBtn'); - if (saveBtn) { - saveBtn.addEventListener('click', savePageAccess); - } -} - -// 초기 데이터 로드 -async function loadInitialData() { - try { - // 페이지 목록 로드 - const pagesResponse = await window.apiCall('/pages'); - if (pagesResponse && pagesResponse.success) { - allPages = pagesResponse.data; - console.log('✅ 페이지 목록 로드:', allPages.length + '개'); - } - - // 사용자 목록 로드 - 계정이 있는 작업자만 - const workersResponse = await window.apiCall('/workers?limit=1000'); - if (workersResponse) { - const workers = Array.isArray(workersResponse) ? workersResponse : (workersResponse.data || []); - - // user_id가 있고 활성 상태인 작업자만 필터링 - const usersWithAccounts = workers.filter(w => w.user_id && w.is_active); - - // 각 사용자의 페이지 권한 수 조회 - allUsers = await Promise.all(usersWithAccounts.map(async (worker) => { - try { - const accessResponse = await window.apiCall(`/users/${worker.user_id}/page-access`); - const grantedPagesCount = accessResponse && accessResponse.success - ? accessResponse.data.pageAccess.filter(p => p.can_access).length - : 0; - - return { - user_id: worker.user_id, - username: worker.username || 'N/A', - name: worker.name || worker.worker_name, - role_name: worker.role_name || 'User', - worker_name: worker.worker_name, - worker_id: worker.worker_id, - granted_pages_count: grantedPagesCount - }; - } catch (error) { - console.error(`권한 조회 오류 (user_id: ${worker.user_id}):`, error); - return { - ...worker, - granted_pages_count: 0 - }; - } - })); - - console.log('✅ 사용자 목록 로드:', allUsers.length + '명'); - displayUsers(); - } - - } catch (error) { - console.error('❌ 데이터 로드 오류:', error); - showToast('데이터를 불러오는 중 오류가 발생했습니다.', 'error'); - } -} - -// 사용자 목록 표시 -function displayUsers() { - const tbody = document.getElementById('usersTableBody'); - const emptyState = document.getElementById('emptyState'); - - if (allUsers.length === 0) { - tbody.innerHTML = ''; - emptyState.style.display = 'block'; - return; - } - - emptyState.style.display = 'none'; - - const filteredUsers = filterUsersByStatus(); - - if (filteredUsers.length === 0) { - tbody.innerHTML = ` - - -

필터 조건에 맞는 사용자가 없습니다.

- - - `; - return; - } - - tbody.innerHTML = filteredUsers.map(user => ` - - -
-
- ${(user.name || user.username).charAt(0)} -
- ${user.name || user.username} -
- - ${user.username} - - - ${user.role_name} - - - ${user.worker_name || '-'} - - - ${user.granted_pages_count}개 - - / ${allPages.length}개 - - - - - - `).join(''); -} - -// 사용자 필터링 -function filterUsersByStatus() { - if (currentFilter === 'all') { - return allUsers; - } else if (currentFilter === 'with-access') { - return allUsers.filter(u => u.granted_pages_count > 0); - } else if (currentFilter === 'no-access') { - return allUsers.filter(u => u.granted_pages_count === 0); - } - return allUsers; -} - -function filterUsers() { - displayUsers(); -} - -// 페이지 권한 설정 모달 열기 -async function openPageAccessModal(userId) { - currentUserId = userId; - const user = allUsers.find(u => u.user_id === userId); - - if (!user) { - showToast('사용자 정보를 찾을 수 없습니다.', 'error'); - return; - } - - // 모달 열기 - document.getElementById('pageAccessModal').style.display = 'flex'; - document.body.style.overflow = 'hidden'; - - // 사용자 정보 표시 - document.getElementById('modalUserInitial').textContent = (user.name || user.username).charAt(0); - document.getElementById('modalUserName').textContent = user.name || user.username; - document.getElementById('modalUsername').textContent = user.username; - document.getElementById('modalWorkerName').textContent = user.worker_name || '작업자 정보 없음'; - - // 페이지 목록 로드 - try { - const response = await window.apiCall(`/users/${userId}/page-access`); - - if (response && response.success) { - const pageAccess = response.data.pageAccess; - renderPageList(pageAccess); - } else { - showToast('페이지 권한 정보를 불러올 수 없습니다.', 'error'); - } - } catch (error) { - console.error('페이지 권한 조회 오류:', error); - showToast('페이지 권한 정보를 불러오는 중 오류가 발생했습니다.', 'error'); - } -} - -// 페이지 목록 렌더링 -function renderPageList(pageAccess) { - const container = document.getElementById('pageListContainer'); - - // 카테고리별로 그룹화 - const grouped = {}; - pageAccess.forEach(page => { - const category = page.category || 'common'; - if (!grouped[category]) { - grouped[category] = []; - } - grouped[category].push(page); - }); - - const categoryNames = { - 'dashboard': '대시보드', - 'management': '관리', - 'common': '공통', - 'admin': '관리자', - 'work': '작업', - 'guest': '게스트' - }; - - container.innerHTML = Object.keys(grouped).map(category => ` -
-
- ${categoryNames[category] || category} -
- ${grouped[category].map(page => ` -
- - ${page.is_default ? '기본 권한' : ''} -
- `).join('')} -
- `).join(''); -} - -// 페이지 권한 저장 -async function savePageAccess() { - if (!currentUserId) return; - - const checkboxes = document.querySelectorAll('.page-checkbox:not([disabled]):checked'); - const pageIds = Array.from(checkboxes).map(cb => parseInt(cb.dataset.pageId)); - - try { - document.getElementById('savePageAccessBtn').disabled = true; - document.getElementById('savePageAccessBtn').textContent = '저장 중...'; - - const response = await window.apiCall( - `/users/${currentUserId}/page-access`, - 'POST', - { pageIds, canAccess: true } - ); - - if (response && response.success) { - showToast('페이지 권한이 저장되었습니다.', 'success'); - closePageAccessModal(); - await loadInitialData(); // 목록 새로고침 - } else { - throw new Error(response.error || '저장에 실패했습니다.'); - } - } catch (error) { - console.error('페이지 권한 저장 오류:', error); - showToast('페이지 권한 저장 중 오류가 발생했습니다.', 'error'); - } finally { - document.getElementById('savePageAccessBtn').disabled = false; - document.getElementById('savePageAccessBtn').textContent = '저장'; - } -} - -// 모달 닫기 -function closePageAccessModal() { - document.getElementById('pageAccessModal').style.display = 'none'; - document.body.style.overflow = 'auto'; - currentUserId = null; -} - -// 토스트 알림 -function showToast(message, type = 'info', duration = 3000) { - const container = document.getElementById('toastContainer'); - if (!container) return; - - const toast = document.createElement('div'); - toast.className = `toast ${type}`; - - const iconMap = { - success: '✅', - error: '❌', - warning: '⚠️', - info: 'ℹ️' - }; - - toast.innerHTML = ` -
${iconMap[type] || 'ℹ️'}
-
${message}
- - `; - - container.appendChild(toast); - - setTimeout(() => { - if (toast.parentElement) { - toast.remove(); - } - }, duration); -} - -// 전역 함수로 export -window.openPageAccessModal = openPageAccessModal; -window.closePageAccessModal = closePageAccessModal; diff --git a/web-ui/js/project-management.js b/web-ui/js/project-management.js index 9d50242..199b943 100644 --- a/web-ui/js/project-management.js +++ b/web-ui/js/project-management.js @@ -49,39 +49,9 @@ function updateCurrentTime() { } } -// 사용자 정보 업데이트 +// navbar/sidebar는 app-init.js에서 공통 처리 function updateUserInfo() { - let userInfo = JSON.parse(localStorage.getItem('userInfo') || '{}'); - let authUser = JSON.parse(localStorage.getItem('user') || '{}'); - - const finalUserInfo = { - worker_name: userInfo.worker_name || authUser.username || authUser.worker_name, - job_type: userInfo.job_type || authUser.role || authUser.job_type, - username: authUser.username || userInfo.username - }; - - const userNameElement = document.getElementById('userName'); - const userRoleElement = document.getElementById('userRole'); - const userInitialElement = document.getElementById('userInitial'); - - if (userNameElement) { - userNameElement.textContent = finalUserInfo.worker_name || '사용자'; - } - - if (userRoleElement) { - const roleMap = { - 'leader': '그룹장', - 'worker': '작업자', - 'admin': '관리자', - 'system': '시스템 관리자' - }; - userRoleElement.textContent = roleMap[finalUserInfo.job_type] || finalUserInfo.job_type || '작업자'; - } - - if (userInitialElement) { - const name = finalUserInfo.worker_name || '사용자'; - userInitialElement.textContent = name.charAt(0); - } + // app-init.js가 navbar 사용자 정보를 처리 } // 프로필 메뉴 설정 diff --git a/web-ui/js/tbm.js b/web-ui/js/tbm.js index 9cd8168..92e7c02 100644 --- a/web-ui/js/tbm.js +++ b/web-ui/js/tbm.js @@ -118,8 +118,8 @@ async function loadInitialData() { currentUser = userInfo; console.log('👤 로그인 사용자:', currentUser, 'worker_id:', currentUser?.worker_id); - // 작업자 목록 로드 - const workersResponse = await window.apiCall('/workers?limit=1000'); + // 작업자 목록 로드 (생산팀 소속만) + const workersResponse = await window.apiCall('/workers?limit=1000&department_id=1'); if (workersResponse) { allWorkers = Array.isArray(workersResponse) ? workersResponse : (workersResponse.data || []); // 활성 상태인 작업자만 필터링 @@ -185,7 +185,7 @@ function switchTbmTab(tabName) { currentTab = tabName; // 탭 버튼 활성화 상태 변경 - document.querySelectorAll('.tab-btn').forEach(btn => { + document.querySelectorAll('.tbm-tab-btn').forEach(btn => { if (btn.dataset.tab === tabName) { btn.classList.add('active'); } else { @@ -194,7 +194,7 @@ function switchTbmTab(tabName) { }); // 탭 컨텐츠 표시 변경 - document.querySelectorAll('.code-tab-content').forEach(content => { + document.querySelectorAll('.tbm-tab-content').forEach(content => { content.classList.remove('active'); }); document.getElementById(`${tabName}-tab`).classList.add('active'); @@ -409,20 +409,33 @@ function displayTbmGroupedByDate() { const displayDate = `${parseInt(month)}월 ${parseInt(day)}일`; return ` -
-
- ${displayDate} - ${dayName}요일${isToday ? ' (오늘)' : ''} - ${sessions.length}건 +
+
+ + ${displayDate} + ${dayName}요일 + ${isToday ? '오늘' : ''} + ${sessions.length}건
-
- ${sessions.map(session => createSessionCard(session)).join('')} +
+
+ ${sessions.map(session => createSessionCard(session)).join('')} +
`; }).join(''); } +// 날짜 그룹 토글 +function toggleDateGroup(date) { + const group = document.querySelector(`.tbm-date-group[data-date="${date}"]`); + if (group) { + group.classList.toggle('collapsed'); + } +} +window.toggleDateGroup = toggleDateGroup; + /** * 더 많은 날짜 로드 */ @@ -474,73 +487,66 @@ function displayTbmSessions() { // TBM 세션 카드 생성 (공통) function createSessionCard(session) { const statusBadge = { - 'draft': '진행중', - 'completed': '완료', - 'cancelled': '취소' + 'draft': '진행중', + 'completed': '완료', + 'cancelled': '취소' }[session.status] || ''; // 작업 책임자 표시 (leader_name이 있으면 표시, 없으면 created_by_name 표시) - const leaderDisplay = session.leader_name - ? `${session.leader_name} (${session.leader_job_type || '작업자'})` - : `${session.created_by_name || '작업 책임자'} (관리자)`; + const leaderName = session.leader_name || session.created_by_name || '작업 책임자'; + const leaderRole = session.leader_name + ? (session.leader_job_type || '작업자') + : '관리자'; return ` -
-
-
-

- ${leaderDisplay} -

-

- ${formatDate(session.session_date)} -

+
+
+
+
+

+ ${leaderName} + ${leaderRole} +

+
+ ${statusBadge}
- ${statusBadge} -
- -
-
- 프로젝트 - ${session.project_name || '-'} -
-
- 공정 - ${session.work_type_name || '-'} -
-
- 작업 - ${session.task_name || '-'} -
-
- 작업 장소 - ${session.work_location || '-'} -
-
- 팀원 수 - ${session.team_member_count || 0}명 -
-
- 시작 시간 - ${session.start_time || '-'} +
+ 📅 + ${formatDate(session.session_date)} ${session.start_time ? '| ' + session.start_time : ''}
- ${session.work_description ? ` -
- ${session.work_description} +
+
+
+ 프로젝트 + ${session.project_name || '-'} +
+
+ 공정 + ${session.work_type_name || '-'} +
+
+ 작업장 + ${session.work_location || '-'} +
+
+ 팀원 + ${session.team_member_count || 0}명 +
+
+
+ + ${session.status === 'draft' ? ` + ` : ''} - -
- ${session.status === 'draft' ? ` - - - ` : ''} -
`; } @@ -550,23 +556,33 @@ function openNewTbmModal() { currentSessionId = null; workerTaskList = []; // 작업자 목록 초기화 - document.getElementById('modalTitle').textContent = '새 TBM 시작'; + document.getElementById('modalTitle').innerHTML = '📝 새 TBM 시작'; document.getElementById('sessionId').value = ''; document.getElementById('tbmForm').reset(); const today = getTodayKST(); document.getElementById('sessionDate').value = today; + // 날짜 표시 업데이트 + const [year, month, day] = today.split('-'); + const dayNames = ['일', '월', '화', '수', '목', '금', '토']; + const dateObj = new Date(today); + const dayName = dayNames[dateObj.getDay()]; + const sessionDateDisplay = document.getElementById('sessionDateDisplay'); + if (sessionDateDisplay) { + sessionDateDisplay.textContent = `${year}년 ${parseInt(month)}월 ${parseInt(day)}일 (${dayName})`; + } + // 입력자 자동 설정 (readonly) if (currentUser && currentUser.worker_id) { const worker = allWorkers.find(w => w.worker_id === currentUser.worker_id); if (worker) { - document.getElementById('leaderName').value = worker.worker_name; + document.getElementById('leaderName').textContent = worker.worker_name; document.getElementById('leaderId').value = worker.worker_id; } } else if (currentUser && currentUser.name) { // 관리자: 이름만 표시 - document.getElementById('leaderName').value = currentUser.name; + document.getElementById('leaderName').textContent = currentUser.name; document.getElementById('leaderId').value = ''; } diff --git a/web-ui/js/work-analysis.js b/web-ui/js/work-analysis.js index f31aae2..c79a307 100644 --- a/web-ui/js/work-analysis.js +++ b/web-ui/js/work-analysis.js @@ -54,39 +54,9 @@ function updateCurrentTime() { } } -// 사용자 정보 업데이트 +// 사용자 정보 업데이트 - navbar/sidebar는 app-init.js에서 공통 처리 function updateUserInfo() { - let userInfo = JSON.parse(localStorage.getItem('userInfo') || '{}'); - let authUser = JSON.parse(localStorage.getItem('user') || '{}'); - - const finalUserInfo = { - worker_name: userInfo.worker_name || authUser.username || authUser.worker_name, - job_type: userInfo.job_type || authUser.role || authUser.job_type, - username: authUser.username || userInfo.username - }; - - const userNameElement = document.getElementById('userName'); - const userRoleElement = document.getElementById('userRole'); - const userInitialElement = document.getElementById('userInitial'); - - if (userNameElement) { - userNameElement.textContent = finalUserInfo.worker_name || '사용자'; - } - - if (userRoleElement) { - const roleMap = { - 'leader': '그룹장', - 'worker': '작업자', - 'admin': '관리자', - 'system': '시스템 관리자' - }; - userRoleElement.textContent = roleMap[finalUserInfo.job_type] || finalUserInfo.job_type || '작업자'; - } - - if (userInitialElement) { - const name = finalUserInfo.worker_name || '사용자'; - userInitialElement.textContent = name.charAt(0); - } + // app-init.js가 navbar 사용자 정보를 처리하므로 여기서는 아무것도 하지 않음 } // 프로필 메뉴 설정 diff --git a/web-ui/js/work-management.js b/web-ui/js/work-management.js index 14a5cae..f15ed7b 100644 --- a/web-ui/js/work-management.js +++ b/web-ui/js/work-management.js @@ -48,39 +48,9 @@ function updateCurrentTime() { } } -// 사용자 정보 업데이트 +// navbar/sidebar는 app-init.js에서 공통 처리 function updateUserInfo() { - let userInfo = JSON.parse(localStorage.getItem('userInfo') || '{}'); - let authUser = JSON.parse(localStorage.getItem('user') || '{}'); - - const finalUserInfo = { - worker_name: userInfo.worker_name || authUser.username || authUser.worker_name, - job_type: userInfo.job_type || authUser.role || authUser.job_type, - username: authUser.username || userInfo.username - }; - - const userNameElement = document.getElementById('userName'); - const userRoleElement = document.getElementById('userRole'); - const userInitialElement = document.getElementById('userInitial'); - - if (userNameElement) { - userNameElement.textContent = finalUserInfo.worker_name || '사용자'; - } - - if (userRoleElement) { - const roleMap = { - 'leader': '그룹장', - 'worker': '작업자', - 'admin': '관리자', - 'system': '시스템 관리자' - }; - userRoleElement.textContent = roleMap[finalUserInfo.job_type] || finalUserInfo.job_type || '작업자'; - } - - if (userInitialElement) { - const name = finalUserInfo.worker_name || '사용자'; - userInitialElement.textContent = name.charAt(0); - } + // app-init.js가 navbar 사용자 정보를 처리 } // 프로필 메뉴 설정 diff --git a/web-ui/js/work-report-calendar.js b/web-ui/js/work-report-calendar.js index 062c9cf..bfeadb3 100644 --- a/web-ui/js/work-report-calendar.js +++ b/web-ui/js/work-report-calendar.js @@ -788,57 +788,9 @@ function updateCurrentTime() { } } -// 사용자 정보 업데이트 함수 +// navbar/sidebar는 app-init.js에서 공통 처리 function updateUserInfo() { - // auth-check.js에서 사용하는 'user' 키와 기존 'userInfo' 키 모두 확인 - let userInfo = JSON.parse(localStorage.getItem('userInfo') || '{}'); - let authUser = JSON.parse(localStorage.getItem('user') || '{}'); - - console.log('👤 localStorage userInfo:', userInfo); - console.log('👤 localStorage user (auth):', authUser); - - // 두 소스에서 사용자 정보 통합 - const finalUserInfo = { - worker_name: userInfo.worker_name || authUser.username || authUser.worker_name, - job_type: userInfo.job_type || authUser.role || authUser.job_type, - username: authUser.username || userInfo.username - }; - - console.log('👤 최종 사용자 정보:', finalUserInfo); - - const userNameElement = document.getElementById('userName'); - const userRoleElement = document.getElementById('userRole'); - const userInitialElement = document.getElementById('userInitial'); - - if (userNameElement) { - if (finalUserInfo.worker_name) { - userNameElement.textContent = finalUserInfo.worker_name; - } else { - userNameElement.textContent = '사용자'; - } - } - - if (userRoleElement) { - if (finalUserInfo.job_type) { - // role을 한글로 변환 - const roleMap = { - 'leader': '그룹장', - 'worker': '작업자', - 'admin': '관리자' - }; - userRoleElement.textContent = roleMap[finalUserInfo.job_type] || finalUserInfo.job_type; - } else { - userRoleElement.textContent = '작업자'; - } - } - - if (userInitialElement) { - if (finalUserInfo.worker_name) { - userInitialElement.textContent = finalUserInfo.worker_name.charAt(0); - } else { - userInitialElement.textContent = '사'; - } - } + // app-init.js가 navbar 사용자 정보를 처리 } // 페이지 초기화 개선 diff --git a/web-ui/js/worker-individual-report.js b/web-ui/js/worker-individual-report.js index 90347e3..d40bd26 100644 --- a/web-ui/js/worker-individual-report.js +++ b/web-ui/js/worker-individual-report.js @@ -179,7 +179,7 @@ async function loadInitialData() { async function loadWorkerInfo() { try { - const response = await window.apiCall(`${window.API}/workers/${currentWorkerId}`); + const response = await window.apiCall(`/workers/${currentWorkerId}`); const worker = response.data || response; document.getElementById('workerJob').textContent = worker.job_type || '작업자'; } catch (error) { @@ -189,7 +189,7 @@ async function loadWorkerInfo() { async function loadExistingWork() { try { - const response = await window.apiCall(`${window.API}/daily-work-reports?date=${selectedDate}&worker_id=${currentWorkerId}`); + const response = await window.apiCall(`/daily-work-reports?date=${selectedDate}&worker_id=${currentWorkerId}`); existingWork = Array.isArray(response) ? response : (response.data || []); console.log(`✅ 기존 작업 ${existingWork.length}건 로드 완료`); } catch (error) { @@ -200,7 +200,7 @@ async function loadExistingWork() { async function loadProjects() { try { - const response = await window.apiCall(`${window.API}/projects/active/list`); + const response = await window.apiCall(`/projects/active/list`); projects = Array.isArray(response) ? response : (response.data || []); } catch (error) { console.error('프로젝트 로드 오류:', error); @@ -210,7 +210,7 @@ async function loadProjects() { async function loadWorkTypes() { try { - const response = await window.apiCall(`${window.API}/daily-work-reports/work-types`); + const response = await window.apiCall(`/daily-work-reports/work-types`); workTypes = Array.isArray(response) ? response : (response.data || []); } catch (error) { console.error('작업 유형 로드 오류:', error); @@ -220,7 +220,7 @@ async function loadWorkTypes() { async function loadWorkStatusTypes() { try { - const response = await window.apiCall(`${window.API}/daily-work-reports/work-status-types`); + const response = await window.apiCall(`/daily-work-reports/work-status-types`); workStatusTypes = Array.isArray(response) ? response : (response.data || []); } catch (error) { console.error('작업 상태 유형 로드 오류:', error); @@ -230,7 +230,7 @@ async function loadWorkStatusTypes() { async function loadErrorTypes() { try { - const response = await window.apiCall(`${window.API}/daily-work-reports/error-types`); + const response = await window.apiCall(`/daily-work-reports/error-types`); errorTypes = Array.isArray(response) ? response : (response.data || []); } catch (error) { console.error('에러 유형 로드 오류:', error); @@ -407,7 +407,7 @@ async function saveNewWork() { created_by: currentUser?.user_id || 1 }; - const response = await window.apiCall(`${window.API}/daily-work-reports`, 'POST', workData); + const response = await window.apiCall(`/daily-work-reports`, 'POST', workData); showMessage('작업이 성공적으로 저장되었습니다.', 'success'); @@ -437,7 +437,7 @@ async function deleteWork(workId) { try { showMessage('작업을 삭제하는 중...', 'loading'); - await window.apiCall(`${window.API}/daily-work-reports/${workId}`, { + await window.apiCall(`/daily-work-reports/${workId}`, { method: 'DELETE' }); @@ -486,7 +486,7 @@ async function handleVacationProcess(vacationType) { created_by: currentUser?.user_id || 1 }; - const response = await window.apiCall(`${window.API}/daily-work-reports`, { + const response = await window.apiCall(`/daily-work-reports`, { method: 'POST', body: JSON.stringify(vacationWork) }); diff --git a/web-ui/js/worker-management.js b/web-ui/js/worker-management.js index c2e8801..73df831 100644 --- a/web-ui/js/worker-management.js +++ b/web-ui/js/worker-management.js @@ -1,504 +1,444 @@ -// 작업자 관리 페이지 JavaScript +// 작업자 관리 페이지 JavaScript (부서 기반) // 전역 변수 +let departments = []; +let currentDepartmentId = null; let allWorkers = []; let filteredWorkers = []; let currentEditingWorker = null; -let currentStatusFilter = 'all'; // 'all', 'active', 'inactive' // 페이지 초기화 -document.addEventListener('DOMContentLoaded', function() { +document.addEventListener('DOMContentLoaded', async () => { console.log('👥 작업자 관리 페이지 초기화 시작'); - - initializePage(); - loadWorkers(); + await waitForApiConfig(); + await loadDepartments(); }); -// 페이지 초기화 -function initializePage() { - // 시간 업데이트 시작 - updateCurrentTime(); - setInterval(updateCurrentTime, 1000); - - // 사용자 정보 업데이트 - updateUserInfo(); - - // 프로필 메뉴 토글 - setupProfileMenu(); - - // 로그아웃 버튼 - setupLogoutButton(); - - // 검색 입력 이벤트 - setupSearchInput(); -} - -// 현재 시간 업데이트 -function updateCurrentTime() { - const now = new Date(); - const timeString = now.toLocaleTimeString('ko-KR', { - hour12: false, - hour: '2-digit', - minute: '2-digit', - second: '2-digit' - }); - - const timeElement = document.getElementById('timeValue'); - if (timeElement) { - timeElement.textContent = timeString; +// API 설정 로드 대기 +async function waitForApiConfig() { + let retryCount = 0; + while (!window.apiCall && retryCount < 50) { + await new Promise(resolve => setTimeout(resolve, 100)); + retryCount++; + } + if (!window.apiCall) { + console.error('API 설정 로드 실패'); } } -// 사용자 정보 업데이트 -function updateUserInfo() { - let userInfo = JSON.parse(localStorage.getItem('userInfo') || '{}'); - let authUser = JSON.parse(localStorage.getItem('user') || '{}'); - - const finalUserInfo = { - worker_name: userInfo.worker_name || authUser.username || authUser.worker_name, - job_type: userInfo.job_type || authUser.role || authUser.job_type, - username: authUser.username || userInfo.username - }; - - const userNameElement = document.getElementById('userName'); - const userRoleElement = document.getElementById('userRole'); - const userInitialElement = document.getElementById('userInitial'); - - if (userNameElement) { - userNameElement.textContent = finalUserInfo.worker_name || '사용자'; - } - - if (userRoleElement) { - const roleMap = { - 'leader': '그룹장', - 'worker': '작업자', - 'admin': '관리자', - 'system': '시스템 관리자' - }; - userRoleElement.textContent = roleMap[finalUserInfo.job_type] || finalUserInfo.job_type || '작업자'; - } - - if (userInitialElement) { - const name = finalUserInfo.worker_name || '사용자'; - userInitialElement.textContent = name.charAt(0); - } -} +// ============================================ +// 부서 관련 함수 +// ============================================ -// 프로필 메뉴 설정 -function setupProfileMenu() { - const userProfile = document.getElementById('userProfile'); - const profileMenu = document.getElementById('profileMenu'); - - if (userProfile && profileMenu) { - userProfile.addEventListener('click', function(e) { - e.stopPropagation(); - const isVisible = profileMenu.style.display === 'block'; - profileMenu.style.display = isVisible ? 'none' : 'block'; - }); - - // 외부 클릭 시 메뉴 닫기 - document.addEventListener('click', function() { - profileMenu.style.display = 'none'; - }); - } -} - -// 로그아웃 버튼 설정 -function setupLogoutButton() { - const logoutBtn = document.getElementById('logoutBtn'); - if (logoutBtn) { - logoutBtn.addEventListener('click', function() { - if (confirm('로그아웃 하시겠습니까?')) { - localStorage.removeItem('token'); - localStorage.removeItem('user'); - localStorage.removeItem('userInfo'); - window.location.href = '/index.html'; - } - }); - } -} - -// 검색 입력 설정 -function setupSearchInput() { - const searchInput = document.getElementById('searchInput'); - if (searchInput) { - searchInput.addEventListener('input', function() { - searchWorkers(); - }); - - searchInput.addEventListener('keypress', function(e) { - if (e.key === 'Enter') { - searchWorkers(); - } - }); - } -} - -// 작업자 목록 로드 -async function loadWorkers() { +// 부서 목록 로드 +async function loadDepartments() { try { - console.log('📊 작업자 목록 로딩 시작'); - - const response = await apiCall('/workers?limit=1000', 'GET'); // 모든 작업자 조회 - - console.log('📊 API 응답 구조:', response); - - // API 응답이 { success: true, data: [...] } 형태인 경우 처리 - let workerData = []; - if (response && response.success && Array.isArray(response.data)) { - workerData = response.data; - } else if (Array.isArray(response)) { - workerData = response; - } else { - console.warn('작업자 데이터가 배열이 아닙니다:', response); - workerData = []; + const response = await window.apiCall('/departments'); + const result = response; + + if (result && result.success) { + departments = result.data; + renderDepartmentList(); + updateParentDepartmentSelect(); + console.log('✅ 부서 목록 로드 완료:', departments.length + '개'); + } else if (Array.isArray(result)) { + departments = result; + renderDepartmentList(); + updateParentDepartmentSelect(); } - - allWorkers = workerData; - - console.log(`✅ 작업자 ${allWorkers.length}명 로드 완료`); - - // 초기 필터 적용 - applyAllFilters(); - updateStatCardActiveState(); - } catch (error) { - console.error('작업자 로딩 오류:', error); + console.error('부서 목록 로드 실패:', error); + showToast('부서 목록을 불러오는데 실패했습니다.', 'error'); + } +} + +// 부서 목록 렌더링 +function renderDepartmentList() { + const container = document.getElementById('departmentList'); + if (!container) return; + + if (departments.length === 0) { + container.innerHTML = ` +
+ 등록된 부서가 없습니다.
+ +
+ `; + return; + } + + container.innerHTML = departments.map(dept => ` +
+
+ ${dept.department_name} + ${dept.worker_count || 0}명 +
+
+ + +
+
+ `).join(''); +} + +// 부서 선택 +async function selectDepartment(departmentId) { + currentDepartmentId = departmentId; + renderDepartmentList(); + + const dept = departments.find(d => d.department_id === departmentId); + document.getElementById('workerListTitle').textContent = `${dept.department_name} 작업자`; + document.getElementById('addWorkerBtn').style.display = 'inline-flex'; + document.getElementById('workerToolbar').style.display = 'flex'; + + await loadWorkersByDepartment(departmentId); +} + +// 상위 부서 선택 옵션 업데이트 +function updateParentDepartmentSelect() { + const select = document.getElementById('parentDepartment'); + if (!select) return; + + const currentId = document.getElementById('departmentId')?.value; + + select.innerHTML = '' + + departments + .filter(d => d.department_id !== parseInt(currentId)) + .map(d => ``) + .join(''); +} + +// 부서 모달 열기 +function openDepartmentModal(departmentId = null) { + const modal = document.getElementById('departmentModal'); + const title = document.getElementById('departmentModalTitle'); + const form = document.getElementById('departmentForm'); + const deleteBtn = document.getElementById('deleteDeptBtn'); + + updateParentDepartmentSelect(); + + if (departmentId) { + const dept = departments.find(d => d.department_id === departmentId); + title.textContent = '부서 수정'; + deleteBtn.style.display = 'inline-flex'; + document.getElementById('departmentId').value = dept.department_id; + document.getElementById('departmentName').value = dept.department_name; + document.getElementById('parentDepartment').value = dept.parent_id || ''; + document.getElementById('departmentDescription').value = dept.description || ''; + document.getElementById('displayOrder').value = dept.display_order || 0; + document.getElementById('isActiveDept').checked = dept.is_active !== 0 && dept.is_active !== false; + } else { + title.textContent = '새 부서 등록'; + deleteBtn.style.display = 'none'; + form.reset(); + document.getElementById('departmentId').value = ''; + document.getElementById('isActiveDept').checked = true; + } + + modal.style.display = 'flex'; + document.body.style.overflow = 'hidden'; + + setTimeout(() => { + document.getElementById('departmentName').focus(); + }, 100); +} + +// 부서 모달 닫기 +function closeDepartmentModal() { + const modal = document.getElementById('departmentModal'); + if (modal) { + modal.style.display = 'none'; + document.body.style.overflow = ''; + } +} + +// 부서 저장 +async function saveDepartment() { + const departmentId = document.getElementById('departmentId').value; + const data = { + department_name: document.getElementById('departmentName').value.trim(), + parent_id: document.getElementById('parentDepartment').value || null, + description: document.getElementById('departmentDescription').value.trim(), + display_order: parseInt(document.getElementById('displayOrder').value) || 0, + is_active: document.getElementById('isActiveDept').checked + }; + + if (!data.department_name) { + showToast('부서명은 필수 입력 항목입니다.', 'error'); + return; + } + + try { + const url = departmentId ? `/departments/${departmentId}` : '/departments'; + const method = departmentId ? 'PUT' : 'POST'; + + const response = await window.apiCall(url, method, data); + + if (response && response.success) { + showToast(response.message || '부서가 저장되었습니다.', 'success'); + closeDepartmentModal(); + await loadDepartments(); + } else { + throw new Error(response?.error || '저장 실패'); + } + } catch (error) { + console.error('부서 저장 실패:', error); + showToast('부서 저장에 실패했습니다.', 'error'); + } +} + +// 부서 수정 +function editDepartment(departmentId) { + openDepartmentModal(departmentId); +} + +// 부서 삭제 확인 +function confirmDeleteDepartment(departmentId) { + const dept = departments.find(d => d.department_id === departmentId); + if (!dept) return; + + const workerCount = dept.worker_count || 0; + let message = `"${dept.department_name}" 부서를 삭제하시겠습니까?`; + + if (workerCount > 0) { + message += `\n\n⚠️ 이 부서에는 ${workerCount}명의 작업자가 있습니다.\n삭제하면 작업자들의 부서 정보가 제거됩니다.`; + } + + if (confirm(message)) { + deleteDepartment(departmentId); + } +} + +// 부서 삭제 +async function deleteDepartment(departmentId = null) { + const id = departmentId || document.getElementById('departmentId').value; + if (!id) return; + + try { + const response = await window.apiCall(`/departments/${id}`, 'DELETE'); + + if (response && response.success) { + showToast('부서가 삭제되었습니다.', 'success'); + closeDepartmentModal(); + + if (currentDepartmentId === parseInt(id)) { + currentDepartmentId = null; + document.getElementById('workerListTitle').textContent = '부서를 선택하세요'; + document.getElementById('addWorkerBtn').style.display = 'none'; + document.getElementById('workerToolbar').style.display = 'none'; + document.getElementById('workerList').innerHTML = ` +
+

부서를 선택해주세요

+

왼쪽에서 부서를 선택하면 해당 부서의 작업자가 표시됩니다.

+
+ `; + } + + await loadDepartments(); + } else { + throw new Error(response?.error || '삭제 실패'); + } + } catch (error) { + console.error('부서 삭제 실패:', error); + showToast(error.message || '부서 삭제에 실패했습니다.', 'error'); + } +} + +// ============================================ +// 작업자 관련 함수 +// ============================================ + +// 부서별 작업자 로드 +async function loadWorkersByDepartment(departmentId) { + try { + const response = await window.apiCall(`/departments/${departmentId}/workers`); + + if (response && response.success) { + allWorkers = response.data; + filteredWorkers = [...allWorkers]; + renderWorkerList(); + console.log(`✅ ${departmentId} 부서 작업자 로드: ${allWorkers.length}명`); + } else if (Array.isArray(response)) { + allWorkers = response; + filteredWorkers = [...allWorkers]; + renderWorkerList(); + } + } catch (error) { + console.error('작업자 목록 로드 실패:', error); showToast('작업자 목록을 불러오는데 실패했습니다.', 'error'); - allWorkers = []; - filteredWorkers = []; - renderWorkers(); } } // 작업자 목록 렌더링 -function renderWorkers() { - const workersGrid = document.getElementById('workersGrid'); - const emptyState = document.getElementById('emptyState'); - const tableContainer = document.querySelector('.table-container'); - - if (!workersGrid || !emptyState) return; +function renderWorkerList() { + const container = document.getElementById('workerList'); + if (!container) return; if (filteredWorkers.length === 0) { - if (tableContainer) tableContainer.style.display = 'none'; - emptyState.style.display = 'flex'; + container.innerHTML = ` +
+

작업자가 없습니다

+

"+ 작업자 추가" 버튼을 눌러 작업자를 등록하세요.

+
+ `; return; } - if (tableContainer) tableContainer.style.display = 'block'; - emptyState.style.display = 'none'; + const tableHtml = ` + + + + + + + + + + + + + ${filteredWorkers.map(worker => { + const jobTypeMap = { + 'worker': '작업자', + 'leader': '그룹장', + 'admin': '관리자' + }; + const jobType = jobTypeMap[worker.job_type] || worker.job_type || '-'; - const workersHtml = filteredWorkers.map(worker => { - // 작업자 상태 및 직책 아이콘 - const jobTypeMap = { - 'worker': { icon: '👷', text: '작업자', color: '#6b7280' }, - 'leader': { icon: '👨‍💼', text: '그룹장', color: '#3b82f6' }, - 'admin': { icon: '👨‍💻', text: '관리자', color: '#8b5cf6' } - }; + const isInactive = worker.status === 'inactive'; + const isResigned = worker.employment_status === 'resigned'; + const hasAccount = worker.user_id !== null && worker.user_id !== undefined; - const jobType = jobTypeMap[worker.job_type] || jobTypeMap['worker']; - const isInactive = worker.status === 'inactive' || worker.is_active === 0 || worker.is_active === false; - const isResigned = worker.employment_status === 'resigned'; - const hasAccount = worker.user_id !== null && worker.user_id !== undefined; + let statusClass = 'active'; + let statusText = '현장직'; + if (isResigned) { + statusClass = 'resigned'; + statusText = '퇴사'; + } else if (isInactive) { + statusClass = 'inactive'; + statusText = '사무직'; + } - // 상태 배지 - let statusBadge = ''; - if (isResigned) { - statusBadge = '퇴사'; - } else if (isInactive) { - statusBadge = '사무직'; - } else { - statusBadge = '현장직'; - } + return ` + + + + + + + + + `; + }).join('')} + +
이름직책상태입사일계정관리
+
+
${worker.worker_name.charAt(0)}
+ ${worker.worker_name} +
+
${jobType}${statusText}${worker.join_date ? formatDate(worker.join_date) : '-'} + + +
+ + +
+
+ `; - return ` - - ${statusBadge} - -
-
- ${worker.worker_name.charAt(0)} -
- ${worker.worker_name} -
- - - - ${jobType.icon} ${jobType.text} - - - ${worker.phone_number || '-'} - ${worker.email || '-'} - ${worker.hire_date ? formatDate(worker.hire_date) : '-'} - ${worker.department || '-'} - - ${hasAccount ? '🔐' : ''} - - - ${isInactive ? '🏢' : '🏭'} - - ${worker.created_at ? formatDate(worker.created_at) : '-'} - -
- - - -
- - - `; - }).join(''); - - workersGrid.innerHTML = workersHtml; -} - -// 작업자 통계 업데이트 -function updateWorkerStats() { - const activeWorkers = filteredWorkers.filter(w => w.status !== 'inactive' && w.is_active !== 0 && w.is_active !== false); - const inactiveWorkers = filteredWorkers.filter(w => w.status === 'inactive' || w.is_active === 0 || w.is_active === false); - - const activeWorkersElement = document.getElementById('activeWorkers'); - const inactiveWorkersElement = document.getElementById('inactiveWorkers'); - const totalWorkersElement = document.getElementById('totalWorkers'); - - if (activeWorkersElement) { - activeWorkersElement.textContent = activeWorkers.length; - } - - if (inactiveWorkersElement) { - inactiveWorkersElement.textContent = inactiveWorkers.length; - } - - if (totalWorkersElement) { - totalWorkersElement.textContent = filteredWorkers.length; - } - - console.log('📊 작업자 통계:', { - 전체: filteredWorkers.length, - 활성: activeWorkers.length, - 비활성: inactiveWorkers.length - }); -} - -// 날짜 포맷팅 -function formatDate(dateString) { - if (!dateString) return ''; - - const date = new Date(dateString); - return date.toLocaleDateString('ko-KR', { - year: 'numeric', - month: '2-digit', - day: '2-digit' - }); -} - -// 상태별 필터링 -function filterByStatus(status) { - currentStatusFilter = status; - - // 통계 카드 활성화 상태 업데이트 - updateStatCardActiveState(); - - // 필터링 적용 - applyAllFilters(); - - console.log(`🔍 상태 필터 적용: ${status}`); -} - -// 통계 카드 활성화 상태 업데이트 -function updateStatCardActiveState() { - // 모든 통계 카드에서 active 클래스 제거 - document.querySelectorAll('.stat-item').forEach(item => { - item.classList.remove('active'); - }); - - // 현재 선택된 필터에 active 클래스 추가 - const activeCard = document.querySelector(`.${currentStatusFilter === 'active' ? 'active-stat' : - currentStatusFilter === 'inactive' ? 'inactive-stat' : 'total-stat'}`); - if (activeCard) { - activeCard.classList.add('active'); - } -} - -// 모든 필터 적용 (검색 + 상태 + 직책) -function applyAllFilters() { - const searchInput = document.getElementById('searchInput'); - const jobTypeFilter = document.getElementById('jobTypeFilter'); - const statusFilter = document.getElementById('statusFilter'); - - const searchTerm = searchInput ? searchInput.value.toLowerCase().trim() : ''; - const jobTypeValue = jobTypeFilter ? jobTypeFilter.value : ''; - const statusValue = statusFilter ? statusFilter.value : ''; - - // 1단계: 상태 필터링 (통계 카드 클릭) - let statusFiltered = [...allWorkers]; - if (currentStatusFilter === 'active') { - statusFiltered = allWorkers.filter(w => w.status !== 'inactive' && w.is_active !== 0 && w.is_active !== false); - } else if (currentStatusFilter === 'inactive') { - statusFiltered = allWorkers.filter(w => w.status === 'inactive' || w.is_active === 0 || w.is_active === false); - } - - // 2단계: 드롭다운 상태 필터링 - if (statusValue) { - if (statusValue === 'active') { - statusFiltered = statusFiltered.filter(w => w.status !== 'inactive' && w.is_active !== 0 && w.is_active !== false); - } else if (statusValue === 'inactive') { - statusFiltered = statusFiltered.filter(w => w.status === 'inactive' || w.is_active === 0 || w.is_active === false); - } - } - - // 3단계: 직책 필터링 - let jobTypeFiltered = statusFiltered; - if (jobTypeValue) { - jobTypeFiltered = statusFiltered.filter(w => w.job_type === jobTypeValue); - } - - // 4단계: 검색 필터링 - if (!searchTerm) { - filteredWorkers = jobTypeFiltered; - } else { - filteredWorkers = jobTypeFiltered.filter(worker => - worker.worker_name.toLowerCase().includes(searchTerm) || - (worker.phone_number && worker.phone_number.toLowerCase().includes(searchTerm)) || - (worker.email && worker.email.toLowerCase().includes(searchTerm)) || - (worker.department && worker.department.toLowerCase().includes(searchTerm)) - ); - } - - renderWorkers(); - updateWorkerStats(); -} - -// 작업자 검색 -function searchWorkers() { - applyAllFilters(); + container.innerHTML = tableHtml; } // 작업자 필터링 function filterWorkers() { - applyAllFilters(); -} + const searchTerm = document.getElementById('workerSearch')?.value.toLowerCase().trim() || ''; + const statusValue = document.getElementById('statusFilter')?.value || ''; -// 작업자 정렬 -function sortWorkers() { - const sortBy = document.getElementById('sortBy'); - const sortField = sortBy ? sortBy.value : 'created_at'; - - filteredWorkers.sort((a, b) => { - switch (sortField) { - case 'worker_name': - return a.worker_name.localeCompare(b.worker_name); - case 'job_type': - const jobOrder = { 'admin': 0, 'leader': 1, 'worker': 2 }; - return (jobOrder[a.job_type] || 3) - (jobOrder[b.job_type] || 3); - case 'created_at': - default: - return new Date(b.created_at || 0) - new Date(a.created_at || 0); + filteredWorkers = allWorkers.filter(worker => { + // 검색 필터 + const matchesSearch = !searchTerm || + worker.worker_name.toLowerCase().includes(searchTerm) || + (worker.job_type && worker.job_type.toLowerCase().includes(searchTerm)); + + // 상태 필터 + let matchesStatus = true; + if (statusValue === 'active') { + matchesStatus = worker.status !== 'inactive' && worker.employment_status !== 'resigned'; + } else if (statusValue === 'inactive') { + matchesStatus = worker.status === 'inactive'; + } else if (statusValue === 'resigned') { + matchesStatus = worker.employment_status === 'resigned'; } - }); - - renderWorkers(); -} -// 작업자 목록 새로고침 -async function refreshWorkerList() { - const refreshBtn = document.querySelector('.btn-secondary'); - if (refreshBtn) { - const originalText = refreshBtn.innerHTML; - refreshBtn.innerHTML = '새로고침 중...'; - refreshBtn.disabled = true; - - await loadWorkers(); - - refreshBtn.innerHTML = originalText; - refreshBtn.disabled = false; - } else { - await loadWorkers(); - } - - showToast('작업자 목록이 새로고침되었습니다.', 'success'); + return matchesSearch && matchesStatus; + }); + + renderWorkerList(); } // 작업자 모달 열기 -function openWorkerModal(worker = null) { +function openWorkerModal(workerId = null) { const modal = document.getElementById('workerModal'); - const modalTitle = document.getElementById('modalTitle'); + const title = document.getElementById('workerModalTitle'); const deleteBtn = document.getElementById('deleteWorkerBtn'); - - if (!modal) return; - - currentEditingWorker = worker; - - if (worker) { - // 수정 모드 - modalTitle.textContent = '작업자 정보 수정'; + + if (!currentDepartmentId) { + showToast('먼저 부서를 선택해주세요.', 'error'); + return; + } + + if (workerId) { + const worker = allWorkers.find(w => w.worker_id === workerId); + if (!worker) { + showToast('작업자를 찾을 수 없습니다.', 'error'); + return; + } + + currentEditingWorker = worker; + title.textContent = '작업자 정보 수정'; deleteBtn.style.display = 'inline-flex'; - // 폼에 데이터 채우기 (실제 테이블 구조에 맞게) document.getElementById('workerId').value = worker.worker_id; document.getElementById('workerName').value = worker.worker_name || ''; - document.getElementById('jobType').value = worker.job_type || ''; - - // 옵션 필드들 - 존재하는 경우에만 설정 - const joinDateElem = document.getElementById('joinDate'); - if (joinDateElem) joinDateElem.value = worker.join_date || ''; - - const salaryElem = document.getElementById('salary'); - if (salaryElem) salaryElem.value = worker.salary || ''; - - const annualLeaveElem = document.getElementById('annualLeave'); - if (annualLeaveElem) annualLeaveElem.value = worker.annual_leave || ''; - - // is_active 값 처리 (DB에서 0/1로 오는 경우 대비) - const isActiveValue = worker.status !== 'inactive' && worker.is_active !== 0 && worker.is_active !== false; - document.getElementById('isActive').checked = isActiveValue; - - // 계정 연동 여부 확인 (user_id가 있으면 계정 있음) - const hasAccountValue = worker.user_id !== null && worker.user_id !== undefined; - document.getElementById('hasAccount').checked = hasAccountValue; - - // employment_status 값 처리 (resigned이면 체크) - const isResignedValue = worker.employment_status === 'resigned'; - document.getElementById('isResigned').checked = isResignedValue; - - console.log('🔧 작업자 로드:', { - worker_id: worker.worker_id, - worker_name: worker.worker_name, - job_type: worker.job_type, - status: worker.status, - is_active_raw: worker.is_active, - is_active_processed: isActiveValue, - user_id: worker.user_id, - has_account: hasAccountValue, - employment_status: worker.employment_status, - is_resigned: isResignedValue - }); + document.getElementById('jobType').value = worker.job_type || 'worker'; + document.getElementById('joinDate').value = worker.join_date ? worker.join_date.split('T')[0] : ''; + document.getElementById('salary').value = worker.salary || ''; + document.getElementById('annualLeave').value = worker.annual_leave || 0; + document.getElementById('isActiveWorker').checked = worker.status !== 'inactive'; + document.getElementById('createAccount').checked = worker.user_id !== null && worker.user_id !== undefined; + document.getElementById('isResigned').checked = worker.employment_status === 'resigned'; } else { - // 신규 등록 모드 - modalTitle.textContent = '새 작업자 등록'; + currentEditingWorker = null; + title.textContent = '새 작업자 등록'; deleteBtn.style.display = 'none'; - // 폼 초기화 document.getElementById('workerForm').reset(); document.getElementById('workerId').value = ''; - document.getElementById('isActive').checked = true; - document.getElementById('hasAccount').checked = false; + document.getElementById('isActiveWorker').checked = true; + document.getElementById('createAccount').checked = false; document.getElementById('isResigned').checked = false; } - + modal.style.display = 'flex'; document.body.style.overflow = 'hidden'; - - // 첫 번째 입력 필드에 포커스 + setTimeout(() => { - const firstInput = document.getElementById('workerName'); - if (firstInput) firstInput.focus(); + document.getElementById('workerName').focus(); }, 100); } @@ -514,163 +454,71 @@ function closeWorkerModal() { // 작업자 편집 function editWorker(workerId) { - const worker = allWorkers.find(w => w.worker_id === workerId); - if (worker) { - openWorkerModal(worker); - } else { - showToast('작업자를 찾을 수 없습니다.', 'error'); - } + openWorkerModal(workerId); } // 작업자 저장 async function saveWorker() { + const workerId = document.getElementById('workerId').value; + + const workerData = { + worker_name: document.getElementById('workerName').value.trim(), + job_type: document.getElementById('jobType').value || 'worker', + join_date: document.getElementById('joinDate').value || null, + salary: document.getElementById('salary').value || null, + annual_leave: document.getElementById('annualLeave').value || 0, + status: document.getElementById('isActiveWorker').checked ? 'active' : 'inactive', + employment_status: document.getElementById('isResigned').checked ? 'resigned' : 'employed', + create_account: document.getElementById('createAccount').checked, + department_id: currentDepartmentId + }; + + if (!workerData.worker_name) { + showToast('작업자명은 필수 입력 항목입니다.', 'error'); + return; + } + try { - const form = document.getElementById('workerForm'); - - // 실제 테이블 구조에 맞는 필드만 사용 - const workerData = { - worker_name: document.getElementById('workerName').value.trim(), - job_type: document.getElementById('jobType').value || null, - join_date: document.getElementById('joinDate')?.value || null, - salary: document.getElementById('salary')?.value || null, - annual_leave: document.getElementById('annualLeave')?.value || null, - status: document.getElementById('isActive').checked ? 'active' : 'inactive', - employment_status: document.getElementById('isResigned').checked ? 'resigned' : 'employed', - create_account: document.getElementById('hasAccount').checked // 계정 생성 여부 - }; - - console.log('💾 저장할 작업자 데이터:', JSON.stringify(workerData, null, 2)); - - // 필수 필드 검증 - if (!workerData.worker_name) { - showToast('작업자명은 필수 입력 항목입니다.', 'error'); - return; - } - - const workerId = document.getElementById('workerId').value; let response; - + if (workerId) { - // 수정 - response = await apiCall(`/workers/${workerId}`, 'PUT', workerData); + response = await window.apiCall(`/workers/${workerId}`, 'PUT', workerData); } else { - // 신규 등록 - response = await apiCall('/workers', 'POST', workerData); + response = await window.apiCall('/workers', 'POST', workerData); } - - if (response && (response.success || response.worker_id)) { + + if (response && (response.success || response.data)) { const action = workerId ? '수정' : '등록'; showToast(`작업자가 성공적으로 ${action}되었습니다.`, 'success'); - + closeWorkerModal(); - await loadWorkers(); + await loadDepartments(); + await loadWorkersByDepartment(currentDepartmentId); } else { throw new Error(response?.message || '저장에 실패했습니다.'); } - } catch (error) { console.error('작업자 저장 오류:', error); showToast(error.message || '작업자 저장 중 오류가 발생했습니다.', 'error'); } } -// 작업자 상태 토글 (활성화/비활성화) -async function toggleWorkerStatus(workerId) { - const worker = allWorkers.find(w => w.worker_id === workerId); - if (!worker) { - showToast('작업자를 찾을 수 없습니다.', 'error'); - return; - } - - const isCurrentlyInactive = worker.status === 'inactive' || worker.is_active === 0 || worker.is_active === false; - const newStatus = isCurrentlyInactive ? 'active' : 'inactive'; - const actionText = isCurrentlyInactive ? '활성화' : '비활성화'; - - if (!confirm(`"${worker.worker_name}" 작업자를 ${actionText}하시겠습니까?`)) { - return; - } - - console.log(`🔄 작업자 상태 변경: ${worker.worker_name} → ${newStatus}`); - - try { - // 실제 테이블 구조에 맞는 필드만 전송 - const updateData = { - worker_name: worker.worker_name, - job_type: worker.job_type || null, - status: newStatus, - join_date: worker.join_date || null, - salary: worker.salary || null, - annual_leave: worker.annual_leave || null, - employment_status: worker.employment_status || 'employed' - }; - - console.log('📤 전송 데이터:', JSON.stringify(updateData, null, 2)); - - const response = await window.apiCall(`/workers/${workerId}`, 'PUT', updateData); - - if (response) { - // 로컬 데이터 업데이트 - const workerIndex = allWorkers.findIndex(w => w.worker_id === workerId); - if (workerIndex !== -1) { - allWorkers[workerIndex].status = newStatus; - allWorkers[workerIndex].is_active = newStatus === 'active' ? 1 : 0; - } - - // UI 새로고침 - applyAllFilters(); - updateWorkerStats(); - - showToast(`${worker.worker_name} 작업자가 ${actionText}되었습니다.`, 'success'); - console.log(`✅ 작업자 상태 변경 완료: ${worker.worker_name} → ${newStatus}`); - } - } catch (error) { - console.error('작업자 상태 변경 오류:', error); - showToast(`작업자 상태 변경에 실패했습니다: ${error.message}`, 'error'); - } -} - // 작업자 삭제 확인 function confirmDeleteWorker(workerId) { - console.log('🔍 삭제 요청된 작업자 ID:', workerId); - const worker = allWorkers.find(w => w.worker_id === workerId); if (!worker) { - console.error('❌ 작업자를 찾을 수 없음:', workerId); showToast('작업자를 찾을 수 없습니다.', 'error'); return; } - - console.log('👤 삭제 대상 작업자:', { - worker_id: worker.worker_id, - worker_name: worker.worker_name, - job_type: worker.job_type - }); - - // 더 명확한 확인 메시지 - const confirmMessage = `⚠️ 작업자 삭제 확인 ⚠️ -삭제할 작업자: ${worker.worker_name} (ID: ${worker.worker_id}) -직책: ${worker.job_type || '미지정'} - -정말로 이 작업자를 삭제하시겠습니까? - -⚠️ 주의: 삭제된 작업자와 관련된 모든 데이터가 함께 삭제됩니다. -- 작업 보고서 -- 이슈 보고서 -- 월별 통계 -- 그룹 소속 정보 - -이 작업은 되돌릴 수 없습니다!`; + const confirmMessage = `"${worker.worker_name}" 작업자를 삭제하시겠습니까?\n\n⚠️ 관련된 모든 데이터(작업보고서, 이슈 등)가 함께 삭제됩니다.`; if (confirm(confirmMessage)) { - console.log('✅ 사용자가 삭제를 확인함'); deleteWorkerById(workerId); - } else { - console.log('❌ 사용자가 삭제를 취소함'); } } -// 작업자 삭제 (수정 모드에서) +// 작업자 삭제 (모달에서) function deleteWorker() { if (currentEditingWorker) { confirmDeleteWorker(currentEditingWorker.worker_id); @@ -679,45 +527,50 @@ function deleteWorker() { // 작업자 삭제 실행 async function deleteWorkerById(workerId) { - console.log('🗑️ 작업자 삭제 실행 시작:', workerId); - try { - const worker = allWorkers.find(w => w.worker_id === workerId); - console.log('🔍 삭제 실행 전 작업자 정보:', worker); - - const response = await window.apiCall(`${window.API}/workers/${workerId}`, 'DELETE'); - console.log('📡 삭제 API 응답:', response); - + const response = await window.apiCall(`/workers/${workerId}`, 'DELETE'); + if (response && (response.success || response.message)) { - console.log('✅ 작업자 삭제 성공'); - showToast(`작업자 "${worker?.worker_name || workerId}"가 성공적으로 삭제되었습니다.`, 'success'); - + showToast('작업자가 삭제되었습니다.', 'success'); + closeWorkerModal(); - await loadWorkers(); + await loadDepartments(); + await loadWorkersByDepartment(currentDepartmentId); } else { - throw new Error(response?.message || '삭제에 실패했습니다.'); + throw new Error(response?.error || '삭제 실패'); } - } catch (error) { - console.error('❌ 작업자 삭제 오류:', error); - showToast(error.message || '작업자 삭제 중 오류가 발생했습니다.', 'error'); + console.error('작업자 삭제 오류:', error); + showToast(error.message || '작업자 삭제에 실패했습니다.', 'error'); } } +// ============================================ +// 유틸리티 함수 +// ============================================ + +// 날짜 포맷팅 +function formatDate(dateString) { + if (!dateString) return ''; + const date = new Date(dateString); + return date.toLocaleDateString('ko-KR', { + year: 'numeric', + month: '2-digit', + day: '2-digit' + }); +} + // 토스트 메시지 표시 function showToast(message, type = 'info') { - // 기존 토스트 제거 const existingToast = document.querySelector('.toast'); if (existingToast) { existingToast.remove(); } - - // 새 토스트 생성 + const toast = document.createElement('div'); toast.className = `toast toast-${type}`; toast.textContent = message; - - // 스타일 적용 + Object.assign(toast.style, { position: 'fixed', top: '20px', @@ -726,12 +579,11 @@ function showToast(message, type = 'info') { borderRadius: '8px', color: 'white', fontWeight: '500', - zIndex: '1000', + zIndex: '10000', transform: 'translateX(100%)', transition: 'transform 0.3s ease' }); - - // 타입별 배경색 + const colors = { success: '#10b981', error: '#ef4444', @@ -739,15 +591,13 @@ function showToast(message, type = 'info') { info: '#3b82f6' }; toast.style.backgroundColor = colors[type] || colors.info; - + document.body.appendChild(toast); - - // 애니메이션 + setTimeout(() => { toast.style.transform = 'translateX(0)'; }, 100); - - // 자동 제거 + setTimeout(() => { toast.style.transform = 'translateX(100%)'; setTimeout(() => { @@ -758,16 +608,21 @@ function showToast(message, type = 'info') { }, 3000); } -// 전역 함수로 노출 +// ============================================ +// 전역 함수 노출 +// ============================================ +window.openDepartmentModal = openDepartmentModal; +window.closeDepartmentModal = closeDepartmentModal; +window.saveDepartment = saveDepartment; +window.editDepartment = editDepartment; +window.deleteDepartment = deleteDepartment; +window.confirmDeleteDepartment = confirmDeleteDepartment; +window.selectDepartment = selectDepartment; + window.openWorkerModal = openWorkerModal; window.closeWorkerModal = closeWorkerModal; -window.editWorker = editWorker; window.saveWorker = saveWorker; +window.editWorker = editWorker; window.deleteWorker = deleteWorker; window.confirmDeleteWorker = confirmDeleteWorker; -window.searchWorkers = searchWorkers; window.filterWorkers = filterWorkers; -window.sortWorkers = sortWorkers; -window.refreshWorkerList = refreshWorkerList; -window.filterByStatus = filterByStatus; -window.toggleWorkerStatus = toggleWorkerStatus; diff --git a/web-ui/js/workplace-management.js b/web-ui/js/workplace-management.js index e83ad2b..4f4843a 100644 --- a/web-ui/js/workplace-management.js +++ b/web-ui/js/workplace-management.js @@ -60,11 +60,12 @@ function renderCategoryTabs() { // 전체 탭은 항상 표시 let tabsHtml = ` - `; @@ -74,11 +75,12 @@ function renderCategoryTabs() { const isActive = currentCategoryId === category.category_id; tabsHtml += ` - `; }); @@ -243,12 +245,31 @@ async function loadWorkplaceMapThumbnail(workplace) { ? workplace.layout_image : `${window.API_BASE_URL || 'http://localhost:20005/api'}${workplace.layout_image}`.replace('/api/', '/'); + // 설비 정보 로드 + let equipmentCount = 0; + try { + const eqResponse = await window.apiCall(`/equipments/workplace/${workplace.workplace_id}`, 'GET'); + if (eqResponse && eqResponse.success && Array.isArray(eqResponse.data)) { + equipmentCount = eqResponse.data.filter(eq => eq.map_x_percent != null).length; + } + } catch (e) { + console.debug('설비 정보 로드 실패'); + } + + const canvasId = `layout-canvas-${workplace.workplace_id}`; thumbnailDiv.innerHTML = ` -
-
📍 작업장 레이아웃
- 작업장 레이아웃 +
+
+ 📍 작업장 지도 + ${equipmentCount > 0 ? `설비 ${equipmentCount}개` : ''} +
+ +
클릭하여 지도 관리
`; + + // 캔버스에 이미지 및 설비 영역 그리기 + await loadWorkplaceCanvasWithEquipments(workplace.workplace_id, fullImageUrl, canvasId); return; } @@ -258,11 +279,24 @@ async function loadWorkplaceMapThumbnail(workplace) { const response = await window.apiCall(`/workplaces/map-regions/workplace/${workplace.workplace_id}`, 'GET'); if (!response || (!response.success && !response.region_id)) { - return; // 영역이 정의되지 않은 경우 아무것도 표시하지 않음 + // 영역이 정의되지 않은 경우 지도 업로드 안내 표시 + thumbnailDiv.innerHTML = ` +
+
🗺️
+
클릭하여 지도 설정
+
+ `; + return; } const region = response.success ? response.data : response; + // 영역 좌표 데이터가 없으면 종료 + if (!region || region.x_start === undefined || region.y_start === undefined || + region.x_end === undefined || region.y_end === undefined) { + return; + } + // 카테고리 정보에서 레이아웃 이미지 가져오기 const category = categories.find(c => c.category_id === workplace.category_id); if (!category || !category.layout_image) return; @@ -274,9 +308,10 @@ async function loadWorkplaceMapThumbnail(workplace) { // 캔버스 생성 const canvasId = `thumbnail-canvas-${workplace.workplace_id}`; thumbnailDiv.innerHTML = ` -
-
📍 지도 위치
- +
+
📍 공장 지도 내 위치
+ +
클릭하여 상세 지도 설정
`; @@ -297,8 +332,8 @@ async function loadWorkplaceMapThumbnail(workplace) { const regionWidth = x2 - x1; const regionHeight = y2 - y1; - // 썸네일 크기 설정 (최대 너비 300px) - const maxThumbWidth = 300; + // 썸네일 크기 설정 (최대 너비 350px) + const maxThumbWidth = 350; const scale = regionWidth > maxThumbWidth ? maxThumbWidth / regionWidth : 1; canvas.width = regionWidth * scale; @@ -328,6 +363,66 @@ async function loadWorkplaceMapThumbnail(workplace) { } } +// 작업장 캔버스에 설비 영역 함께 그리기 +async function loadWorkplaceCanvasWithEquipments(workplaceId, imageUrl, canvasId) { + const img = new Image(); + img.onload = async function() { + const canvas = document.getElementById(canvasId); + if (!canvas) return; + + const ctx = canvas.getContext('2d'); + + // 썸네일 크기 설정 (최대 너비 400px) + const maxThumbWidth = 400; + const scale = img.width > maxThumbWidth ? maxThumbWidth / img.width : 1; + + canvas.width = img.width * scale; + canvas.height = img.height * scale; + + // 이미지 그리기 + ctx.drawImage(img, 0, 0, canvas.width, canvas.height); + + // 설비 영역 로드 및 그리기 + try { + const response = await window.apiCall(`/equipments/workplace/${workplaceId}`, 'GET'); + let equipments = []; + if (response && response.success && Array.isArray(response.data)) { + equipments = response.data.filter(eq => eq.map_x_percent != null); + } + + // 설비 영역 그리기 + equipments.forEach(eq => { + const x = (parseFloat(eq.map_x_percent) / 100) * canvas.width; + const y = (parseFloat(eq.map_y_percent) / 100) * canvas.height; + const width = (parseFloat(eq.map_width_percent || 10) / 100) * canvas.width; + const height = (parseFloat(eq.map_height_percent || 10) / 100) * canvas.height; + + // 영역 배경 + ctx.fillStyle = 'rgba(16, 185, 129, 0.2)'; + ctx.fillRect(x, y, width, height); + + // 영역 테두리 + ctx.strokeStyle = '#10b981'; + ctx.lineWidth = 2; + ctx.strokeRect(x, y, width, height); + + // 설비 코드 표시 + if (eq.equipment_code) { + ctx.font = 'bold 10px sans-serif'; + const textMetrics = ctx.measureText(eq.equipment_code); + ctx.fillStyle = 'rgba(255, 255, 255, 0.9)'; + ctx.fillRect(x + 2, y + 2, textMetrics.width + 6, 14); + ctx.fillStyle = '#047857'; + ctx.fillText(eq.equipment_code, x + 5, y + 12); + } + }); + } catch (error) { + console.debug('설비 영역 로드 실패'); + } + }; + img.src = imageUrl; +} + // 카테고리 모달 열기 function openCategoryModal(categoryData = null) { const modal = document.getElementById('categoryModal'); @@ -476,12 +571,13 @@ function renderWorkplaces() { if (filtered.length === 0) { grid.innerHTML = ` -
-
🏗️
-

등록된 작업장이 없습니다.

-

"작업장 추가" 버튼을 눌러 작업장을 등록해보세요.

-
`; @@ -506,33 +602,33 @@ function renderWorkplaces() { const purposeIcon = workplace.workplace_purpose ? purposeIcons[workplace.workplace_purpose] || '📍' : '🏗️'; gridHtml += ` -
-
-
${purposeIcon}
-
-

${workplace.workplace_name}

-
- ${workplace.category_id ? `🏭 ${categoryName}` : ''} - ${workplace.workplace_purpose ? `${workplace.workplace_purpose}` : ''} +
+
+
${purposeIcon}
+
+

${workplace.workplace_name}

+
+ ${workplace.category_id ? `🏭 ${categoryName}` : ''} + ${workplace.workplace_purpose ? `${workplace.workplace_purpose}` : ''}
-
- - -
- ${workplace.description ? `

${workplace.description}

` : ''} -
-
- 등록: ${formatDate(workplace.created_at)} - ${workplace.updated_at !== workplace.created_at ? `수정: ${formatDate(workplace.updated_at)}` : ''} + ${workplace.description ? `

${workplace.description}

` : ''} +
+
+ 등록: ${formatDate(workplace.created_at)} + ${workplace.updated_at !== workplace.created_at ? `수정: ${formatDate(workplace.updated_at)}` : ''}
`; @@ -726,12 +822,49 @@ async function refreshWorkplaces() { } // 통계 업데이트 -function updateStatistics() { +async function updateStatistics() { const total = workplaces.length; const active = workplaces.filter(w => w.is_active === 1 || w.is_active === true).length; + const factoryTotal = categories.length; - document.getElementById('totalCount').textContent = total; - document.getElementById('activeCount').textContent = active; + // 상단 통계 카드 업데이트 + const factoryCountEl = document.getElementById('factoryCount'); + const totalCountEl = document.getElementById('totalCount'); + const activeCountEl = document.getElementById('activeCount'); + const equipmentCountEl = document.getElementById('equipmentCount'); + + if (factoryCountEl) factoryCountEl.textContent = factoryTotal; + if (totalCountEl) totalCountEl.textContent = total; + if (activeCountEl) activeCountEl.textContent = active; + + // 설비 수 조회 및 업데이트 + if (equipmentCountEl) { + try { + const response = await window.apiCall('/equipments', 'GET'); + let equipmentCount = 0; + if (response && response.success && Array.isArray(response.data)) { + equipmentCount = response.data.length; + } else if (Array.isArray(response)) { + equipmentCount = response.length; + } + equipmentCountEl.textContent = equipmentCount; + } catch (e) { + equipmentCountEl.textContent = '-'; + } + } + + // 섹션 통계 업데이트 + const sectionTotalEl = document.getElementById('sectionTotalCount'); + const sectionActiveEl = document.getElementById('sectionActiveCount'); + + // 현재 필터링된 작업장 기준 + const filtered = currentCategoryId === '' + ? workplaces + : workplaces.filter(w => w.category_id == currentCategoryId); + const filteredActive = filtered.filter(w => w.is_active === 1 || w.is_active === true).length; + + if (sectionTotalEl) sectionTotalEl.textContent = filtered.length; + if (sectionActiveEl) sectionActiveEl.textContent = filteredActive; } // 날짜 포맷팅 @@ -834,6 +967,8 @@ let workplaceStartX = 0; let workplaceStartY = 0; let workplaceCurrentRect = null; let workplaceEquipmentRegions = []; +let existingEquipments = []; // DB에서 로드한 기존 설비 목록 +let allEquipments = []; // 시스템 전체 설비 목록 (드롭다운 선택용) // 작업장 지도 모달 열기 async function openWorkplaceMapModal(workplaceId) { @@ -866,8 +1001,11 @@ async function openWorkplaceMapModal(workplaceId) { preview.innerHTML = '

레이아웃 이미지를 업로드해주세요

'; } - // 설비 영역 목록 로드 (TODO: API 연동) - workplaceEquipmentRegions = []; + // 설비 영역 목록 로드 (API 연동) + await Promise.all([ + loadWorkplaceEquipments(workplaceId), + loadAllEquipments() + ]); renderWorkplaceEquipmentList(); // 모달 표시 @@ -877,6 +1015,62 @@ async function openWorkplaceMapModal(workplaceId) { } } +// 작업장의 설비 목록 로드 +async function loadWorkplaceEquipments(workplaceId) { + try { + const response = await window.apiCall(`/equipments/workplace/${workplaceId}`, 'GET'); + + let equipments = []; + if (response && response.success && Array.isArray(response.data)) { + equipments = response.data; + } else if (Array.isArray(response)) { + equipments = response; + } + + // 지도 영역이 있는 설비만 workplaceEquipmentRegions에 추가 + workplaceEquipmentRegions = equipments + .filter(eq => eq.map_x_percent != null && eq.map_y_percent != null) + .map(eq => ({ + equipment_id: eq.equipment_id, + equipment_name: eq.equipment_name, + equipment_code: eq.equipment_code, + x_percent: parseFloat(eq.map_x_percent), + y_percent: parseFloat(eq.map_y_percent), + width_percent: parseFloat(eq.map_width_percent) || 10, + height_percent: parseFloat(eq.map_height_percent) || 10 + })); + + // 해당 작업장에 할당된 설비 목록 저장 + existingEquipments = equipments; + + console.log(`✅ 작업장 ${workplaceId}의 설비 ${equipments.length}개 로드 완료 (지도 영역: ${workplaceEquipmentRegions.length}개)`); + } catch (error) { + console.error('설비 로드 오류:', error); + workplaceEquipmentRegions = []; + existingEquipments = []; + } +} + +// 시스템 전체 설비 목록 로드 (드롭다운 선택용) +async function loadAllEquipments() { + try { + const response = await window.apiCall('/equipments', 'GET'); + + let equipments = []; + if (response && response.success && Array.isArray(response.data)) { + equipments = response.data; + } else if (Array.isArray(response)) { + equipments = response; + } + + allEquipments = equipments; + console.log(`✅ 전체 설비 ${allEquipments.length}개 로드 완료`); + } catch (error) { + console.error('전체 설비 로드 오류:', error); + allEquipments = []; + } +} + // 작업장 지도 모달 닫기 function closeWorkplaceMapModal() { const modal = document.getElementById('workplaceMapModal'); @@ -903,6 +1097,8 @@ async function uploadWorkplaceLayout() { formData.append('image', fileInput.files[0]); try { + showToast('이미지 업로드 중...', 'info'); + const response = await fetch(`${window.API_BASE_URL || 'http://localhost:20005/api'}/workplaces/${window.currentWorkplaceMapId}/layout-image`, { method: 'POST', headers: { @@ -920,13 +1116,16 @@ async function uploadWorkplaceLayout() { await loadWorkplaces(); renderWorkplaces(); - // 미리보기 업데이트 + // 미리보기 업데이트 및 캔버스 초기화 const preview = document.getElementById('workplaceLayoutPreview'); if (preview && result.data.image_path) { const fullImageUrl = result.data.image_path.startsWith('http') ? result.data.image_path : `${window.API_BASE_URL || 'http://localhost:20005/api'}${result.data.image_path}`.replace('/api/', '/'); preview.innerHTML = `작업장 레이아웃`; + + // 캔버스 초기화 (설비 영역 편집용) + initWorkplaceCanvas(fullImageUrl); } // 파일 입력 초기화 @@ -950,8 +1149,9 @@ function initWorkplaceCanvas(imageUrl) { workplaceCtx = workplaceCanvas.getContext('2d'); - // 캔버스 크기 설정 (최대 800px 너비) - const maxWidth = 800; + // 캔버스 크기 설정 (최대 너비를 모달 크기에 맞게) + const container = document.getElementById('workplaceCanvasContainer'); + const maxWidth = container ? Math.min(container.clientWidth - 20, 900) : 800; const scale = img.width > maxWidth ? maxWidth / img.width : 1; workplaceCanvas.width = img.width * scale; @@ -963,14 +1163,66 @@ function initWorkplaceCanvas(imageUrl) { // 기존 영역들 표시 drawWorkplaceRegions(); - // 이벤트 리스너 등록 + // 이벤트 리스너 등록 (기존 리스너 제거 후 등록) workplaceCanvas.onmousedown = startWorkplaceDraw; workplaceCanvas.onmousemove = drawWorkplace; workplaceCanvas.onmouseup = endWorkplaceDraw; + workplaceCanvas.onmouseleave = endWorkplaceDraw; + + // 터치 이벤트 지원 + workplaceCanvas.ontouchstart = handleWorkplaceTouchStart; + workplaceCanvas.ontouchmove = handleWorkplaceTouchMove; + workplaceCanvas.ontouchend = endWorkplaceDraw; + }; + img.onerror = function() { + console.error('작업장 이미지 로드 실패:', imageUrl); }; img.src = imageUrl; } +// 터치 이벤트 핸들러 +function handleWorkplaceTouchStart(e) { + e.preventDefault(); + const touch = e.touches[0]; + const rect = workplaceCanvas.getBoundingClientRect(); + workplaceIsDrawing = true; + workplaceStartX = touch.clientX - rect.left; + workplaceStartY = touch.clientY - rect.top; +} + +function handleWorkplaceTouchMove(e) { + e.preventDefault(); + if (!workplaceIsDrawing) return; + + const touch = e.touches[0]; + const rect = workplaceCanvas.getBoundingClientRect(); + const currentX = touch.clientX - rect.left; + const currentY = touch.clientY - rect.top; + + // 캔버스 초기화 및 이미지 다시 그리기 + workplaceCtx.drawImage(workplaceImage, 0, 0, workplaceCanvas.width, workplaceCanvas.height); + drawWorkplaceRegions(); + + // 현재 그리는 사각형 + workplaceCtx.strokeStyle = '#3b82f6'; + workplaceCtx.lineWidth = 3; + workplaceCtx.setLineDash([5, 5]); + workplaceCtx.strokeRect( + workplaceStartX, + workplaceStartY, + currentX - workplaceStartX, + currentY - workplaceStartY + ); + workplaceCtx.setLineDash([]); + + workplaceCurrentRect = { + x: workplaceStartX, + y: workplaceStartY, + width: currentX - workplaceStartX, + height: currentY - workplaceStartY + }; +} + // 드래그 시작 function startWorkplaceDraw(e) { workplaceIsDrawing = true; @@ -993,15 +1245,26 @@ function drawWorkplace(e) { // 기존 영역들 표시 drawWorkplaceRegions(); - // 현재 그리는 사각형 + // 현재 그리는 사각형 (점선으로) workplaceCtx.strokeStyle = '#3b82f6'; workplaceCtx.lineWidth = 3; + workplaceCtx.setLineDash([5, 5]); workplaceCtx.strokeRect( workplaceStartX, workplaceStartY, currentX - workplaceStartX, currentY - workplaceStartY ); + workplaceCtx.setLineDash([]); + + // 선택 영역 배경 (반투명) + workplaceCtx.fillStyle = 'rgba(59, 130, 246, 0.1)'; + workplaceCtx.fillRect( + workplaceStartX, + workplaceStartY, + currentX - workplaceStartX, + currentY - workplaceStartY + ); workplaceCurrentRect = { x: workplaceStartX, @@ -1019,14 +1282,34 @@ function endWorkplaceDraw(e) { // 기존 영역들 그리기 function drawWorkplaceRegions() { workplaceEquipmentRegions.forEach((region, index) => { + // 퍼센트를 픽셀로 변환 + const x = (region.x_percent / 100) * workplaceCanvas.width; + const y = (region.y_percent / 100) * workplaceCanvas.height; + const width = (region.width_percent / 100) * workplaceCanvas.width; + const height = (region.height_percent / 100) * workplaceCanvas.height; + + // 영역 배경 (반투명) + workplaceCtx.fillStyle = 'rgba(16, 185, 129, 0.15)'; + workplaceCtx.fillRect(x, y, width, height); + + // 영역 테두리 workplaceCtx.strokeStyle = '#10b981'; workplaceCtx.lineWidth = 2; - workplaceCtx.strokeRect(region.x, region.y, region.width, region.height); + workplaceCtx.strokeRect(x, y, width, height); - // 영역 이름 표시 - workplaceCtx.fillStyle = '#10b981'; - workplaceCtx.font = '14px sans-serif'; - workplaceCtx.fillText(region.equipment_name, region.x + 5, region.y + 20); + // 영역 이름 표시 (배경 포함) + const displayName = region.equipment_code ? `[${region.equipment_code}] ${region.equipment_name}` : region.equipment_name; + workplaceCtx.font = 'bold 12px sans-serif'; + const textMetrics = workplaceCtx.measureText(displayName); + const textPadding = 4; + + // 텍스트 배경 + workplaceCtx.fillStyle = 'rgba(255, 255, 255, 0.9)'; + workplaceCtx.fillRect(x + 3, y + 3, textMetrics.width + textPadding * 2, 18); + + // 텍스트 + workplaceCtx.fillStyle = '#047857'; + workplaceCtx.fillText(displayName, x + 3 + textPadding, y + 16); }); } @@ -1040,11 +1323,18 @@ function clearWorkplaceCurrentRegion() { } // 설비 위치 저장 -function saveWorkplaceEquipmentRegion() { - const equipmentName = document.getElementById('equipmentNameInput'); +async function saveWorkplaceEquipmentRegion() { + const equipmentSelect = document.getElementById('equipmentSelectInput'); + const equipmentNameInput = document.getElementById('equipmentNameInput'); + const equipmentCodeInput = document.getElementById('equipmentCodeInput'); - if (!equipmentName || !equipmentName.value.trim()) { - showToast('설비 이름을 입력해주세요.', 'warning'); + const selectedEquipmentId = equipmentSelect?.value; + const newEquipmentName = equipmentNameInput?.value.trim(); + const newEquipmentCode = equipmentCodeInput?.value.trim(); + + // 기존 설비 선택 또는 새 설비 입력 확인 + if (!selectedEquipmentId && (!newEquipmentName || !newEquipmentCode)) { + showToast('기존 설비를 선택하거나 새 설비 코드와 이름을 입력해주세요.', 'warning'); return; } @@ -1053,76 +1343,211 @@ function saveWorkplaceEquipmentRegion() { return; } - // 퍼센트로 변환 - const xPercent = (workplaceCurrentRect.x / workplaceCanvas.width) * 100; - const yPercent = (workplaceCurrentRect.y / workplaceCanvas.height) * 100; - const widthPercent = (workplaceCurrentRect.width / workplaceCanvas.width) * 100; - const heightPercent = (workplaceCurrentRect.height / workplaceCanvas.height) * 100; + // 퍼센트로 변환 (음수 영역 처리) + let xPercent = (Math.min(workplaceCurrentRect.x, workplaceCurrentRect.x + workplaceCurrentRect.width) / workplaceCanvas.width) * 100; + let yPercent = (Math.min(workplaceCurrentRect.y, workplaceCurrentRect.y + workplaceCurrentRect.height) / workplaceCanvas.height) * 100; + let widthPercent = (Math.abs(workplaceCurrentRect.width) / workplaceCanvas.width) * 100; + let heightPercent = (Math.abs(workplaceCurrentRect.height) / workplaceCanvas.height) * 100; - const newRegion = { - equipment_name: equipmentName.value.trim(), - x: workplaceCurrentRect.x, - y: workplaceCurrentRect.y, - width: workplaceCurrentRect.width, - height: workplaceCurrentRect.height, - x_percent: xPercent, - y_percent: yPercent, - width_percent: widthPercent, - height_percent: heightPercent - }; + try { + let equipmentId = selectedEquipmentId; + let equipmentName = ''; - workplaceEquipmentRegions.push(newRegion); + if (selectedEquipmentId) { + // 기존 설비 - 위치 및 작업장 업데이트 + const response = await window.apiCall(`/equipments/${selectedEquipmentId}/map-position`, 'PATCH', { + workplace_id: window.currentWorkplaceMapId, + map_x_percent: xPercent, + map_y_percent: yPercent, + map_width_percent: widthPercent, + map_height_percent: heightPercent + }); - // UI 업데이트 - renderWorkplaceEquipmentList(); - clearWorkplaceCurrentRegion(); - equipmentName.value = ''; + if (!response || !response.success) { + throw new Error(response?.message || '위치 저장 실패'); + } - showToast(`설비 "${newRegion.equipment_name}" 위치가 저장되었습니다.`, 'success'); + const eq = allEquipments.find(e => e.equipment_id == selectedEquipmentId); + equipmentName = eq?.equipment_name || '설비'; + } else { + // 새 설비 생성 + const response = await window.apiCall('/equipments', 'POST', { + equipment_code: newEquipmentCode, + equipment_name: newEquipmentName, + workplace_id: window.currentWorkplaceMapId, + map_x_percent: xPercent, + map_y_percent: yPercent, + map_width_percent: widthPercent, + map_height_percent: heightPercent, + status: 'active' + }); + + if (!response || !response.success) { + throw new Error(response?.message || '설비 생성 실패'); + } + + equipmentId = response.data.equipment_id; + equipmentName = newEquipmentName; + } + + // 로컬 배열 업데이트 + const newRegion = { + equipment_id: equipmentId, + equipment_name: equipmentName, + equipment_code: newEquipmentCode || existingEquipments.find(e => e.equipment_id == selectedEquipmentId)?.equipment_code, + x_percent: xPercent, + y_percent: yPercent, + width_percent: widthPercent, + height_percent: heightPercent + }; + + // 기존 영역이 있으면 교체, 없으면 추가 + const existingIndex = workplaceEquipmentRegions.findIndex(r => r.equipment_id == equipmentId); + if (existingIndex >= 0) { + workplaceEquipmentRegions[existingIndex] = newRegion; + } else { + workplaceEquipmentRegions.push(newRegion); + } + + // 설비 목록 새로고침 (현재 작업장 + 전체) + await Promise.all([ + loadWorkplaceEquipments(window.currentWorkplaceMapId), + loadAllEquipments() + ]); + + // UI 업데이트 + renderWorkplaceEquipmentList(); + clearWorkplaceCurrentRegion(); + if (equipmentNameInput) equipmentNameInput.value = ''; + if (equipmentCodeInput) equipmentCodeInput.value = ''; + if (equipmentSelect) equipmentSelect.value = ''; + + showToast(`설비 "${equipmentName}" 위치가 저장되었습니다.`, 'success'); + } catch (error) { + console.error('설비 위치 저장 오류:', error); + showToast(error.message || '설비 위치 저장 중 오류가 발생했습니다.', 'error'); + } } // 설비 목록 렌더링 function renderWorkplaceEquipmentList() { const listDiv = document.getElementById('workplaceEquipmentList'); - if (!listDiv) return; - if (workplaceEquipmentRegions.length === 0) { - listDiv.innerHTML = '

아직 정의된 설비가 없습니다

'; + // 등록된 설비 목록 렌더링 + if (listDiv) { + if (workplaceEquipmentRegions.length === 0) { + listDiv.innerHTML = '

아직 정의된 설비가 없습니다

'; + } else { + let html = ''; + workplaceEquipmentRegions.forEach((region, index) => { + html += ` +
+
+ ${region.equipment_name} + [${region.equipment_code || '-'}] +
+ 위치: (${region.x_percent.toFixed(1)}%, ${region.y_percent.toFixed(1)}%) | 크기: ${region.width_percent.toFixed(1)}% × ${region.height_percent.toFixed(1)}% +
+
+ +
+ `; + }); + listDiv.innerHTML = html; + } + } + + // 설비 선택 드롭다운 업데이트 (항상 호출되어야 함!) + updateEquipmentSelectDropdown(); +} + +// 설비 선택 드롭다운 업데이트 +function updateEquipmentSelectDropdown() { + const selectEl = document.getElementById('equipmentSelectInput'); + if (!selectEl) { + console.warn('⚠️ equipmentSelectInput 요소를 찾을 수 없습니다'); return; } - let html = ''; - workplaceEquipmentRegions.forEach((region, index) => { - html += ` -
-
- ${region.equipment_name} - - (${region.x_percent.toFixed(1)}%, ${region.y_percent.toFixed(1)}%) - -
- -
- `; - }); + console.log(`📋 드롭다운 업데이트: 전체 설비 ${allEquipments.length}개`); - listDiv.innerHTML = html; -} + // 전체 설비 중에서 아직 어떤 지도에도 배치되지 않은 설비만 표시 + // map_x_percent가 null이면 지도에 배치되지 않은 설비 + const availableEquipments = allEquipments.filter(eq => + eq.map_x_percent == null || eq.map_x_percent === '' + ); -// 설비 영역 삭제 -function removeWorkplaceEquipmentRegion(index) { - workplaceEquipmentRegions.splice(index, 1); - renderWorkplaceEquipmentList(); + console.log(`📋 지도에 미배치된 설비: ${availableEquipments.length}개`); - // 캔버스 다시 그리기 - if (workplaceCanvas && workplaceImage) { - workplaceCtx.drawImage(workplaceImage, 0, 0, workplaceCanvas.width, workplaceCanvas.height); - drawWorkplaceRegions(); + // 이 작업장에 이미 배치된 설비는 제외 (현재 작업장에서 방금 배치한 경우) + const registeredIds = workplaceEquipmentRegions.map(r => r.equipment_id); + const unregisteredEquipments = availableEquipments.filter(eq => !registeredIds.includes(eq.equipment_id)); + + console.log(`📋 선택 가능한 설비: ${unregisteredEquipments.length}개`); + + let options = ''; + + if (unregisteredEquipments.length === 0) { + options += ''; + } else { + unregisteredEquipments.forEach(eq => { + const workplaceInfo = eq.workplace_name ? ` (${eq.workplace_name})` : ' (미배정)'; + options += ``; + }); } - showToast('설비 위치가 삭제되었습니다.', 'success'); + selectEl.innerHTML = options; + + // 배치 가능한 설비 수 표시 + const countEl = document.getElementById('availableEquipmentCount'); + if (countEl) { + countEl.textContent = `배치 가능: ${unregisteredEquipments.length}개`; + } +} + +// 설비 영역 삭제 (지도에서만 제거, 설비 자체는 유지) +async function removeWorkplaceEquipmentRegion(equipmentId) { + if (!confirm('이 설비의 지도 위치 정보를 삭제하시겠습니까?\n(설비 자체는 삭제되지 않습니다)')) { + return; + } + + try { + // API로 지도 위치 초기화 + const response = await window.apiCall(`/equipments/${equipmentId}/map-position`, 'PATCH', { + map_x_percent: null, + map_y_percent: null, + map_width_percent: null, + map_height_percent: null + }); + + if (!response || !response.success) { + throw new Error(response?.message || '위치 삭제 실패'); + } + + // 로컬 배열에서 제거 + workplaceEquipmentRegions = workplaceEquipmentRegions.filter(r => r.equipment_id != equipmentId); + + // 설비 목록 새로고침 (현재 작업장 + 전체) + await Promise.all([ + loadWorkplaceEquipments(window.currentWorkplaceMapId), + loadAllEquipments() + ]); + + renderWorkplaceEquipmentList(); + + // 캔버스 다시 그리기 + if (workplaceCanvas && workplaceImage) { + workplaceCtx.drawImage(workplaceImage, 0, 0, workplaceCanvas.width, workplaceCanvas.height); + drawWorkplaceRegions(); + } + + showToast('설비 위치가 삭제되었습니다.', 'success'); + } catch (error) { + console.error('설비 위치 삭제 오류:', error); + showToast(error.message || '설비 위치 삭제 중 오류가 발생했습니다.', 'error'); + } } // 작업장 레이아웃 이미지 미리보기 @@ -1162,3 +1587,641 @@ window.clearWorkplaceCurrentRegion = clearWorkplaceCurrentRegion; window.saveWorkplaceEquipmentRegion = saveWorkplaceEquipmentRegion; window.removeWorkplaceEquipmentRegion = removeWorkplaceEquipmentRegion; window.previewWorkplaceLayoutImage = previewWorkplaceLayoutImage; +window.toggleNewEquipmentFields = toggleNewEquipmentFields; + +// 새 설비 필드 토글 (기존 설비 선택 시 숨김) +function toggleNewEquipmentFields() { + const selectEl = document.getElementById('equipmentSelectInput'); + const fieldsDiv = document.getElementById('newEquipmentFields'); + + if (selectEl && fieldsDiv) { + if (selectEl.value) { + fieldsDiv.style.display = 'none'; + } else { + fieldsDiv.style.display = 'block'; + } + } +} + +// ==================== 전체화면 설비 배치 편집기 ==================== + +// 전체화면 편집기 관련 전역 변수 +let fsCanvas = null; +let fsCtx = null; +let fsImage = null; +let fsIsDrawing = false; +let fsStartX = 0; +let fsStartY = 0; +let fsCurrentRect = null; +let fsSidebarVisible = true; + +// 전체화면 편집기 열기 +async function openFullscreenEquipmentEditor() { + const workplaceId = window.currentWorkplaceMapId; + if (!workplaceId) { + showToast('작업장을 먼저 선택해주세요.', 'warning'); + return; + } + + const workplace = workplaces.find(w => w.workplace_id === workplaceId); + if (!workplace) { + showToast('작업장 정보를 찾을 수 없습니다.', 'error'); + return; + } + + // 레이아웃 이미지 확인 + if (!workplace.layout_image) { + showToast('작업장 레이아웃 이미지를 먼저 업로드해주세요.', 'warning'); + return; + } + + // 전체화면 에디터 타이틀 설정 + const titleEl = document.getElementById('fullscreenEditorTitle'); + if (titleEl) { + titleEl.textContent = `${workplace.workplace_name} - 설비 위치 편집`; + } + + // 전체화면 에디터 표시 + const editor = document.getElementById('fullscreenEquipmentEditor'); + if (editor) { + editor.style.display = 'flex'; + document.body.style.overflow = 'hidden'; + } + + // 이미지 URL 생성 + const fullImageUrl = workplace.layout_image.startsWith('http') + ? workplace.layout_image + : `${window.API_BASE_URL || 'http://localhost:20005/api'}${workplace.layout_image}`.replace('/api/', '/'); + + // 캔버스 초기화 + initFullscreenCanvas(fullImageUrl); + + // 설비 목록 로드 및 드롭다운 업데이트 + await Promise.all([ + loadWorkplaceEquipments(workplaceId), + loadAllEquipments() + ]); + updateFsEquipmentUI(); +} + +// 전체화면 편집기 닫기 +function closeFullscreenEditor() { + const editor = document.getElementById('fullscreenEquipmentEditor'); + if (editor) { + editor.style.display = 'none'; + document.body.style.overflow = ''; + } + + // 전역 상태 초기화 + fsCanvas = null; + fsCtx = null; + fsImage = null; + fsIsDrawing = false; + fsCurrentRect = null; + + // 작업장 지도 모달의 설비 목록도 업데이트 + renderWorkplaceEquipmentList(); + + // 작업장 카드 목록 새로고침 (썸네일 업데이트) + renderWorkplaces(); +} + +// 사이드바 토글 +function toggleEditorSidebar() { + const sidebar = document.getElementById('fullscreenSidebar'); + const canvasArea = document.getElementById('fullscreenCanvasArea'); + const toggleIcon = document.getElementById('sidebarToggleIcon'); + + if (!sidebar || !canvasArea) return; + + fsSidebarVisible = !fsSidebarVisible; + + if (fsSidebarVisible) { + sidebar.style.display = 'flex'; + toggleIcon.textContent = '▶'; + } else { + sidebar.style.display = 'none'; + toggleIcon.textContent = '◀'; + } + + // 캔버스 크기 재조정 + if (fsImage) { + setTimeout(() => { + resizeFullscreenCanvas(); + }, 100); + } +} + +// 전체화면 캔버스 초기화 +function initFullscreenCanvas(imageUrl) { + const img = new Image(); + img.onload = function() { + fsImage = img; + fsCanvas = document.getElementById('fullscreenRegionCanvas'); + if (!fsCanvas) return; + + fsCtx = fsCanvas.getContext('2d'); + + // 캔버스 크기 조정 + resizeFullscreenCanvas(); + + // 이벤트 리스너 등록 + fsCanvas.onmousedown = startFsDraw; + fsCanvas.onmousemove = drawFsRegion; + fsCanvas.onmouseup = endFsDraw; + fsCanvas.onmouseleave = endFsDraw; + + // 터치 이벤트 지원 + fsCanvas.ontouchstart = handleFsTouchStart; + fsCanvas.ontouchmove = handleFsTouchMove; + fsCanvas.ontouchend = endFsDraw; + + console.log('✅ 전체화면 캔버스 초기화 완료'); + }; + + img.onerror = function() { + console.error('전체화면 이미지 로드 실패:', imageUrl); + showToast('이미지를 불러올 수 없습니다.', 'error'); + }; + + img.src = imageUrl; +} + +// 캔버스 크기 조정 (화면에 맞게) +function resizeFullscreenCanvas() { + if (!fsImage || !fsCanvas) return; + + const wrapper = document.getElementById('fullscreenCanvasWrapper'); + if (!wrapper) return; + + // 사용 가능한 영역 계산 + const maxWidth = wrapper.clientWidth - 40; + const maxHeight = wrapper.clientHeight - 40; + + // 이미지 비율 유지하면서 크기 조정 + const imgRatio = fsImage.width / fsImage.height; + const containerRatio = maxWidth / maxHeight; + + let scale; + if (imgRatio > containerRatio) { + // 이미지가 더 넓음 - 너비 기준 + scale = maxWidth / fsImage.width; + } else { + // 이미지가 더 높음 - 높이 기준 + scale = maxHeight / fsImage.height; + } + + // 최소/최대 스케일 제한 + scale = Math.min(Math.max(scale, 0.1), 2); + + fsCanvas.width = fsImage.width * scale; + fsCanvas.height = fsImage.height * scale; + + // 이미지 그리기 + fsCtx.drawImage(fsImage, 0, 0, fsCanvas.width, fsCanvas.height); + + // 기존 영역 그리기 + drawFsRegions(); + + // 줌 정보 업데이트 + const zoomInfo = document.getElementById('canvasZoomInfo'); + if (zoomInfo) { + zoomInfo.textContent = `${Math.round(scale * 100)}%`; + } +} + +// 드래그 시작 +function startFsDraw(e) { + fsIsDrawing = true; + const rect = fsCanvas.getBoundingClientRect(); + fsStartX = e.clientX - rect.left; + fsStartY = e.clientY - rect.top; +} + +// 드래그 중 +function drawFsRegion(e) { + if (!fsIsDrawing) return; + + const rect = fsCanvas.getBoundingClientRect(); + const currentX = e.clientX - rect.left; + const currentY = e.clientY - rect.top; + + // 캔버스 초기화 및 이미지 다시 그리기 + fsCtx.drawImage(fsImage, 0, 0, fsCanvas.width, fsCanvas.height); + + // 기존 영역들 표시 + drawFsRegions(); + + // 현재 그리는 사각형 (점선) + fsCtx.strokeStyle = '#3b82f6'; + fsCtx.lineWidth = 3; + fsCtx.setLineDash([8, 4]); + fsCtx.strokeRect( + fsStartX, + fsStartY, + currentX - fsStartX, + currentY - fsStartY + ); + fsCtx.setLineDash([]); + + // 선택 영역 배경 + fsCtx.fillStyle = 'rgba(59, 130, 246, 0.15)'; + fsCtx.fillRect( + fsStartX, + fsStartY, + currentX - fsStartX, + currentY - fsStartY + ); + + // 영역 정보 표시 + const width = Math.abs(currentX - fsStartX); + const height = Math.abs(currentY - fsStartY); + fsCtx.font = 'bold 12px sans-serif'; + fsCtx.fillStyle = '#3b82f6'; + fsCtx.fillText(`${Math.round(width)} × ${Math.round(height)}px`, Math.min(fsStartX, currentX) + 5, Math.min(fsStartY, currentY) - 5); + + fsCurrentRect = { + x: fsStartX, + y: fsStartY, + width: currentX - fsStartX, + height: currentY - fsStartY + }; +} + +// 드래그 종료 +function endFsDraw(e) { + fsIsDrawing = false; +} + +// 터치 이벤트 핸들러 +function handleFsTouchStart(e) { + e.preventDefault(); + const touch = e.touches[0]; + const rect = fsCanvas.getBoundingClientRect(); + fsIsDrawing = true; + fsStartX = touch.clientX - rect.left; + fsStartY = touch.clientY - rect.top; +} + +function handleFsTouchMove(e) { + e.preventDefault(); + if (!fsIsDrawing) return; + + const touch = e.touches[0]; + const rect = fsCanvas.getBoundingClientRect(); + const currentX = touch.clientX - rect.left; + const currentY = touch.clientY - rect.top; + + // 캔버스 초기화 및 이미지 다시 그리기 + fsCtx.drawImage(fsImage, 0, 0, fsCanvas.width, fsCanvas.height); + drawFsRegions(); + + // 현재 그리는 사각형 + fsCtx.strokeStyle = '#3b82f6'; + fsCtx.lineWidth = 3; + fsCtx.setLineDash([8, 4]); + fsCtx.strokeRect( + fsStartX, + fsStartY, + currentX - fsStartX, + currentY - fsStartY + ); + fsCtx.setLineDash([]); + + fsCtx.fillStyle = 'rgba(59, 130, 246, 0.15)'; + fsCtx.fillRect( + fsStartX, + fsStartY, + currentX - fsStartX, + currentY - fsStartY + ); + + fsCurrentRect = { + x: fsStartX, + y: fsStartY, + width: currentX - fsStartX, + height: currentY - fsStartY + }; +} + +// 기존 영역들 그리기 +function drawFsRegions() { + workplaceEquipmentRegions.forEach((region, index) => { + // 퍼센트를 픽셀로 변환 + const x = (region.x_percent / 100) * fsCanvas.width; + const y = (region.y_percent / 100) * fsCanvas.height; + const width = (region.width_percent / 100) * fsCanvas.width; + const height = (region.height_percent / 100) * fsCanvas.height; + + // 영역 배경 (반투명) + fsCtx.fillStyle = 'rgba(16, 185, 129, 0.2)'; + fsCtx.fillRect(x, y, width, height); + + // 영역 테두리 + fsCtx.strokeStyle = '#10b981'; + fsCtx.lineWidth = 2; + fsCtx.strokeRect(x, y, width, height); + + // 영역 이름 표시 + const displayName = region.equipment_code + ? `[${region.equipment_code}] ${region.equipment_name}` + : region.equipment_name; + fsCtx.font = 'bold 13px sans-serif'; + const textMetrics = fsCtx.measureText(displayName); + const textPadding = 6; + + // 텍스트 배경 + fsCtx.fillStyle = 'rgba(255, 255, 255, 0.95)'; + fsCtx.fillRect(x + 4, y + 4, textMetrics.width + textPadding * 2, 22); + + // 텍스트 + fsCtx.fillStyle = '#047857'; + fsCtx.fillText(displayName, x + 4 + textPadding, y + 19); + }); +} + +// 현재 영역 지우기 +function fsClearCurrentRegion() { + fsCurrentRect = null; + if (fsCanvas && fsImage) { + fsCtx.drawImage(fsImage, 0, 0, fsCanvas.width, fsCanvas.height); + drawFsRegions(); + } + showToast('영역이 초기화되었습니다.', 'info'); +} + +// 설비 영역 저장 (전체화면 편집기용) +async function fsSaveEquipmentRegion() { + const equipmentSelect = document.getElementById('fsEquipmentSelect'); + const equipmentNameInput = document.getElementById('fsEquipmentName'); + const equipmentCodeInput = document.getElementById('fsEquipmentCode'); + + const selectedEquipmentId = equipmentSelect?.value; + const newEquipmentName = equipmentNameInput?.value.trim(); + const newEquipmentCode = equipmentCodeInput?.value.trim(); + + // 기존 설비 선택 또는 새 설비 입력 확인 + if (!selectedEquipmentId && (!newEquipmentName || !newEquipmentCode)) { + showToast('기존 설비를 선택하거나 새 설비 코드와 이름을 입력해주세요.', 'warning'); + return; + } + + if (!fsCurrentRect) { + showToast('지도에서 영역을 드래그하여 선택해주세요.', 'warning'); + return; + } + + // 퍼센트로 변환 (음수 영역 처리) + let xPercent = (Math.min(fsCurrentRect.x, fsCurrentRect.x + fsCurrentRect.width) / fsCanvas.width) * 100; + let yPercent = (Math.min(fsCurrentRect.y, fsCurrentRect.y + fsCurrentRect.height) / fsCanvas.height) * 100; + let widthPercent = (Math.abs(fsCurrentRect.width) / fsCanvas.width) * 100; + let heightPercent = (Math.abs(fsCurrentRect.height) / fsCanvas.height) * 100; + + try { + let equipmentId = selectedEquipmentId; + let equipmentName = ''; + let equipmentCode = ''; + + if (selectedEquipmentId) { + // 기존 설비 - 위치 및 작업장 업데이트 + const response = await window.apiCall(`/equipments/${selectedEquipmentId}/map-position`, 'PATCH', { + workplace_id: window.currentWorkplaceMapId, + map_x_percent: xPercent, + map_y_percent: yPercent, + map_width_percent: widthPercent, + map_height_percent: heightPercent + }); + + if (!response || !response.success) { + throw new Error(response?.message || '위치 저장 실패'); + } + + const eq = allEquipments.find(e => e.equipment_id == selectedEquipmentId); + equipmentName = eq?.equipment_name || '설비'; + equipmentCode = eq?.equipment_code || ''; + } else { + // 새 설비 생성 + const response = await window.apiCall('/equipments', 'POST', { + equipment_code: newEquipmentCode, + equipment_name: newEquipmentName, + workplace_id: window.currentWorkplaceMapId, + map_x_percent: xPercent, + map_y_percent: yPercent, + map_width_percent: widthPercent, + map_height_percent: heightPercent, + status: 'active' + }); + + if (!response || !response.success) { + throw new Error(response?.message || '설비 생성 실패'); + } + + equipmentId = response.data.equipment_id; + equipmentName = newEquipmentName; + equipmentCode = newEquipmentCode; + } + + // 로컬 배열 업데이트 + const newRegion = { + equipment_id: equipmentId, + equipment_name: equipmentName, + equipment_code: equipmentCode, + x_percent: xPercent, + y_percent: yPercent, + width_percent: widthPercent, + height_percent: heightPercent + }; + + // 기존 영역이 있으면 교체, 없으면 추가 + const existingIndex = workplaceEquipmentRegions.findIndex(r => r.equipment_id == equipmentId); + if (existingIndex >= 0) { + workplaceEquipmentRegions[existingIndex] = newRegion; + } else { + workplaceEquipmentRegions.push(newRegion); + } + + // 설비 목록 새로고침 + await Promise.all([ + loadWorkplaceEquipments(window.currentWorkplaceMapId), + loadAllEquipments() + ]); + + // 입력 필드 초기화 (UI 업데이트 전에 먼저) + if (equipmentNameInput) equipmentNameInput.value = ''; + if (equipmentCodeInput) equipmentCodeInput.value = ''; // 비워야 다음 코드 자동 로드됨 + if (equipmentSelect) equipmentSelect.value = ''; + + // UI 업데이트 및 다음 관리번호 로드 + await updateFsEquipmentUI(); + fsClearCurrentRegion(); + + showToast(`설비 "${equipmentName}" 위치가 저장되었습니다.`, 'success'); + } catch (error) { + console.error('설비 위치 저장 오류:', error); + showToast(error.message || '설비 위치 저장 중 오류가 발생했습니다.', 'error'); + } +} + +// 새 설비 필드 토글 (전체화면 편집기용) +function fsToggleNewEquipmentFields() { + const selectEl = document.getElementById('fsEquipmentSelect'); + const fieldsDiv = document.getElementById('fsNewEquipmentFields'); + + if (selectEl && fieldsDiv) { + if (selectEl.value) { + fieldsDiv.style.opacity = '0.5'; + fieldsDiv.querySelector('input')?.setAttribute('disabled', 'true'); + document.getElementById('fsEquipmentCode')?.setAttribute('disabled', 'true'); + document.getElementById('fsEquipmentName')?.setAttribute('disabled', 'true'); + } else { + fieldsDiv.style.opacity = '1'; + document.getElementById('fsEquipmentCode')?.removeAttribute('disabled'); + document.getElementById('fsEquipmentName')?.removeAttribute('disabled'); + } + } +} + +// 다음 관리번호 로드 (전체화면 편집기용) +async function loadNextEquipmentCodeForFs() { + try { + const response = await window.apiCall('/equipments/next-code', 'GET'); + if (response && response.success) { + const codeInput = document.getElementById('fsEquipmentCode'); + if (codeInput && !codeInput.value) { + codeInput.value = response.data.next_code; + } + } + } catch (error) { + console.error('다음 관리번호 조회 실패:', error); + // 오류 시 무시 (사용자가 직접 입력) + } +} + +// 전체화면 편집기 UI 업데이트 +async function updateFsEquipmentUI() { + // 설비 선택 드롭다운 업데이트 + const selectEl = document.getElementById('fsEquipmentSelect'); + if (selectEl) { + // 지도에 미배치된 설비만 표시 + const availableEquipments = allEquipments.filter(eq => + eq.map_x_percent == null || eq.map_x_percent === '' + ); + + // 이미 이 작업장에 배치된 설비 제외 + const registeredIds = workplaceEquipmentRegions.map(r => r.equipment_id); + const unregisteredEquipments = availableEquipments.filter(eq => !registeredIds.includes(eq.equipment_id)); + + let options = ''; + + if (unregisteredEquipments.length === 0) { + options += ''; + } else { + unregisteredEquipments.forEach(eq => { + options += ``; + }); + } + + selectEl.innerHTML = options; + + // 배치 가능한 설비 수 표시 + const countEl = document.getElementById('fsAvailableEquipmentCount'); + if (countEl) { + countEl.textContent = `${unregisteredEquipments.length}개`; + } + } + + // 새 설비 코드 자동 생성 + await loadNextEquipmentCodeForFs(); + + // 등록된 설비 목록 업데이트 + const listEl = document.getElementById('fsEquipmentList'); + if (listEl) { + if (workplaceEquipmentRegions.length === 0) { + listEl.innerHTML = '

등록된 설비가 없습니다

'; + } else { + let html = ''; + workplaceEquipmentRegions.forEach((region) => { + html += ` +
+
+ ${region.equipment_name} + [${region.equipment_code || '-'}] +
+ 위치: (${region.x_percent.toFixed(1)}%, ${region.y_percent.toFixed(1)}%) +
+
+ +
+ `; + }); + listEl.innerHTML = html; + } + + // 등록된 설비 수 표시 + const registeredCountEl = document.getElementById('fsRegisteredCount'); + if (registeredCountEl) { + registeredCountEl.textContent = `${workplaceEquipmentRegions.length}개`; + } + } + + // 작업장 지도 모달의 설비 수도 업데이트 + const modalCountEl = document.getElementById('workplaceEquipmentCount'); + if (modalCountEl) { + modalCountEl.textContent = `${workplaceEquipmentRegions.length}개`; + } +} + +// 설비 영역 삭제 (전체화면 편집기용) +async function fsRemoveEquipmentRegion(equipmentId) { + if (!confirm('이 설비의 지도 위치를 삭제하시겠습니까?')) { + return; + } + + try { + // API로 지도 위치 초기화 + const response = await window.apiCall(`/equipments/${equipmentId}/map-position`, 'PATCH', { + map_x_percent: null, + map_y_percent: null, + map_width_percent: null, + map_height_percent: null + }); + + if (!response || !response.success) { + throw new Error(response?.message || '위치 삭제 실패'); + } + + // 로컬 배열에서 제거 + workplaceEquipmentRegions = workplaceEquipmentRegions.filter(r => r.equipment_id != equipmentId); + + // 설비 목록 새로고침 + await Promise.all([ + loadWorkplaceEquipments(window.currentWorkplaceMapId), + loadAllEquipments() + ]); + + // UI 업데이트 + updateFsEquipmentUI(); + + // 캔버스 다시 그리기 + if (fsCanvas && fsImage) { + fsCtx.drawImage(fsImage, 0, 0, fsCanvas.width, fsCanvas.height); + drawFsRegions(); + } + + showToast('설비 위치가 삭제되었습니다.', 'success'); + } catch (error) { + console.error('설비 위치 삭제 오류:', error); + showToast(error.message || '삭제 중 오류가 발생했습니다.', 'error'); + } +} + +// 전체화면 편집기 함수들 전역 노출 +window.openFullscreenEquipmentEditor = openFullscreenEquipmentEditor; +window.closeFullscreenEditor = closeFullscreenEditor; +window.toggleEditorSidebar = toggleEditorSidebar; +window.fsClearCurrentRegion = fsClearCurrentRegion; +window.fsSaveEquipmentRegion = fsSaveEquipmentRegion; +window.fsToggleNewEquipmentFields = fsToggleNewEquipmentFields; +window.fsRemoveEquipmentRegion = fsRemoveEquipmentRegion; diff --git a/web-ui/pages/admin/accounts.html b/web-ui/pages/admin/accounts.html index 3b6b799..42187a5 100644 --- a/web-ui/pages/admin/accounts.html +++ b/web-ui/pages/admin/accounts.html @@ -8,7 +8,6 @@ -
@@ -120,13 +119,18 @@
- -
+ + +
- - - + + + diff --git a/web-ui/pages/admin/attendance-report.html b/web-ui/pages/admin/attendance-report.html index ef71fba..532bca8 100644 --- a/web-ui/pages/admin/attendance-report.html +++ b/web-ui/pages/admin/attendance-report.html @@ -5,10 +5,11 @@ 출퇴근-작업보고서 대조 | (주)테크니컬코리아 - + - - + + + + + + + +
+
+
+ + +
+ +
+

부서 목록

+
+ +
+
+ + +
+
+ 부서를 선택하세요 + +
+ + +
+ 0명 선택됨 + + +
+ +
+
+ 왼쪽에서 부서를 선택하면 해당 부서의 작업자가 표시됩니다. +
+
+
+
+
+
+
+ + + + + + + diff --git a/web-ui/pages/admin/equipments.html b/web-ui/pages/admin/equipments.html index 07ee238..d7c67f4 100644 --- a/web-ui/pages/admin/equipments.html +++ b/web-ui/pages/admin/equipments.html @@ -5,10 +5,11 @@ 설비 관리 | (주)테크니컬코리아 - + + - - + + @@ -32,21 +33,26 @@
+ +
+ +
+ -
-
+
+
-
+
-
+
-
+
- +
-
-
- -
+
+
@@ -73,79 +77,99 @@