From e3b7626e07c8fe0743aafae12e932b4fdd2609b6 Mon Sep 17 00:00:00 2001 From: Hyungi Ahn Date: Mon, 30 Mar 2026 15:04:33 +0900 Subject: [PATCH] =?UTF-8?q?fix(dashboard+tkuser):=20s1.=20=EC=A0=91?= =?UTF-8?q?=EB=91=90=EC=82=AC=20=EB=A7=A4=EC=B9=AD=20+=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EB=AA=A9=EB=A1=9D=20=EB=8F=99=EA=B8=B0?= =?UTF-8?q?=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - dashboardModel: department_page_permissions의 s1. 접두사 제거하여 pages.page_key와 매칭 (두 테이블 명명규칙 차이 처리) - permissionModel: 신규 페이지 13개 추가 (공정표, 생산회의록, 대리입력, 입력현황, 근태관리 7종, 부서/알림 관리) - pages 테이블: 누락 16개 페이지 INSERT (DB 직접 실행) Co-Authored-By: Claude Opus 4.6 (1M context) --- system1-factory/api/models/dashboardModel.js | 10 ++++++++-- user-management/api/models/permissionModel.js | 14 +++++++++++++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/system1-factory/api/models/dashboardModel.js b/system1-factory/api/models/dashboardModel.js index 2b96425..696a1c5 100644 --- a/system1-factory/api/models/dashboardModel.js +++ b/system1-factory/api/models/dashboardModel.js @@ -84,7 +84,10 @@ const DashboardModel = { }; } - // 부서 권한 페이지 (page_name = pages.page_key) + // 부서 권한 페이지 + // department_page_permissions.page_name은 's1.work.tbm' 형식 (시스템 접두사 포함) + // pages.page_key는 'work.tbm' 형식 (접두사 없음) + // → 's1.' 접두사를 제거하여 매칭 let deptPageKeys = new Set(); if (departmentId) { const [deptRows] = await db.execute(` @@ -92,7 +95,10 @@ const DashboardModel = { FROM department_page_permissions dpp WHERE dpp.department_id = ? AND dpp.can_access = 1 `, [departmentId]); - deptRows.forEach(r => deptPageKeys.add(r.page_name)); + deptRows.forEach(r => { + const key = r.page_name.startsWith('s1.') ? r.page_name.slice(3) : r.page_name; + deptPageKeys.add(key); + }); } // 개인 권한 페이지 (page_id = pages.id) diff --git a/user-management/api/models/permissionModel.js b/user-management/api/models/permissionModel.js index dc63634..3af72fa 100644 --- a/user-management/api/models/permissionModel.js +++ b/user-management/api/models/permissionModel.js @@ -15,12 +15,22 @@ const DEFAULT_PAGES = { 's1.work.report_create': { title: '작업보고서 작성', system: 'system1', group: '작업 관리', default_access: true }, 's1.work.analysis': { title: '작업 분석', system: 'system1', group: '작업 관리', default_access: false }, 's1.work.nonconformity': { title: '부적합 현황', system: 'system1', group: '작업 관리', default_access: true }, + 's1.work.schedule': { title: '공정표', system: 'system1', group: '작업 관리', default_access: false }, + 's1.work.meetings': { title: '생산회의록', system: 'system1', group: '작업 관리', default_access: false }, + 's1.work.daily_status': { title: '입력 현황', system: 'system1', group: '작업 관리', default_access: false }, + 's1.work.proxy_input': { title: '대리입력', system: 'system1', group: '작업 관리', default_access: false }, // 공장 관리 's1.factory.repair_management':{ title: '시설설비 관리', system: 'system1', group: '공장 관리', default_access: false }, 's1.inspection.daily_patrol': { title: '일일순회점검', system: 'system1', group: '공장 관리', default_access: false }, 's1.inspection.checkin': { title: '출근 체크', system: 'system1', group: '공장 관리', default_access: true }, 's1.inspection.work_status': { title: '근무 현황', system: 'system1', group: '공장 관리', default_access: false }, - 's1.attendance.monthly': { title: '월간 근태', system: 'system1', group: '공장 관리', default_access: true }, + 's1.attendance.monthly': { title: '월간 근태', system: 'system1', group: '근태 관리', default_access: true }, + 's1.attendance.my_vacation_info': { title: '내 연차 정보', system: 'system1', group: '근태 관리', default_access: true }, + 's1.attendance.vacation_request': { title: '휴가 신청', system: 'system1', group: '근태 관리', default_access: true }, + 's1.attendance.vacation_management': { title: '휴가 관리', system: 'system1', group: '근태 관리', default_access: false }, + 's1.attendance.vacation_allocation': { title: '휴가 발생 입력', system: 'system1', group: '근태 관리', default_access: false }, + 's1.attendance.annual_overview': { title: '연간 휴가 현황', system: 'system1', group: '근태 관리', default_access: false }, + 's1.attendance.monthly_comparison': { title: '월간 비교·확인', system: 'system1', group: '근태 관리', default_access: false }, // 시스템 관리 's1.admin.workers': { title: '작업자 관리', system: 'system1', group: '시스템 관리', default_access: false }, 's1.admin.projects': { title: '프로젝트 관리', system: 'system1', group: '시스템 관리', default_access: false }, @@ -29,6 +39,8 @@ const DEFAULT_PAGES = { 's1.admin.equipments': { title: '설비 관리', system: 'system1', group: '시스템 관리', default_access: false }, 's1.admin.issue_categories': { title: '신고 카테고리 관리', system: 'system1', group: '시스템 관리', default_access: false }, 's1.admin.attendance_report': { title: '출퇴근-보고서 대조', system: 'system1', group: '시스템 관리', default_access: false }, + 's1.admin.departments': { title: '부서 관리', system: 'system1', group: '시스템 관리', default_access: false }, + 's1.admin.notifications': { title: '알림 관리', system: 'system1', group: '시스템 관리', default_access: false }, // 관리 'factory_proxy_input': { title: '대리입력', system: 'system1', group: '관리', default_access: false }, 'factory_daily_status': { title: '일별 현황', system: 'system1', group: '관리', default_access: false },