From 8945be5ea89365f8a686a0e65b5a7d5b61c2ca20 Mon Sep 17 00:00:00 2001 From: joonhoekim <26rote@gmail.com> Date: Fri, 3 Oct 2025 13:54:38 +0900 Subject: (김준회) 부서별 권한관리, swp 코멘트 기능, 벤더 po, shi-api 동기화 로직 수정 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_components/department-menu-access-manager.tsx | 4 +- db/schema/departmentDomainAssignments.ts | 38 +---- lib/po/vendor-table/service.ts | 12 +- lib/po/vendor-table/vendor-po-columns.tsx | 4 +- lib/shi-api/shi-api-utils.ts | 44 ++++- lib/users/department-domain/service.ts | 161 ++++++++++-------- .../plant/document-comment-dialog.tsx | 183 +++++++++++++++++++++ .../plant/document-stage-toolbar.tsx | 2 +- .../plant/document-stages-columns.tsx | 25 ++- .../plant/document-stages-service.ts | 53 ++++++ .../plant/document-stages-table.tsx | 17 ++ .../plant/shi-buyer-system-api.ts | 3 +- 12 files changed, 426 insertions(+), 120 deletions(-) create mode 100644 lib/vendor-document-list/plant/document-comment-dialog.tsx diff --git a/app/[lng]/evcp/(evcp)/(system)/menu-access-dept/_components/department-menu-access-manager.tsx b/app/[lng]/evcp/(evcp)/(system)/menu-access-dept/_components/department-menu-access-manager.tsx index c24770bf..dedf2af7 100644 --- a/app/[lng]/evcp/(evcp)/(system)/menu-access-dept/_components/department-menu-access-manager.tsx +++ b/app/[lng]/evcp/(evcp)/(system)/menu-access-dept/_components/department-menu-access-manager.tsx @@ -15,7 +15,7 @@ import { import { assignDomainToDepartments, getDepartmentDomainAssignments, - autoAssignPendingUsersDomains, + autoAssignUsersDomains, type UserDomain } from "@/lib/users/department-domain/service"; import { DOMAIN_OPTIONS } from "./domain-constants"; @@ -142,7 +142,7 @@ export function DepartmentMenuAccessManager({ // users 테이블에 도메인 동기화 작업 진행 try { - const syncResult = await autoAssignPendingUsersDomains(); + const syncResult = await autoAssignUsersDomains(); if (syncResult.success && syncResult.assignedCount > 0) { toast.success(`사용자 도메인 동기화 완료: ${syncResult.assignedCount}명의 사용자가 자동 할당되었습니다.`); } diff --git a/db/schema/departmentDomainAssignments.ts b/db/schema/departmentDomainAssignments.ts index 5a391578..bcbe7572 100644 --- a/db/schema/departmentDomainAssignments.ts +++ b/db/schema/departmentDomainAssignments.ts @@ -34,35 +34,6 @@ export const departmentDomainAssignments = pgTable("department_domain_assignment updatedAt: timestamp("updated_at").defaultNow().notNull(), }); -// 고립된 레코드 관리를 위한 매핑 테이블 (추후 구현용) -export const departmentDomainMappings = pgTable("department_domain_mappings", { - id: integer("id").primaryKey().generatedAlwaysAsIdentity(), - - // 기존 할당 레코드 참조 - assignmentId: integer("assignment_id").notNull(), - - // 기존 부서 정보 (더 이상 Knox에 존재하지 않는 부서) - oldCompanyCode: varchar("old_company_code", { length: 10 }).notNull(), - oldDepartmentCode: varchar("old_department_code", { length: 50 }).notNull(), - oldDepartmentName: varchar("old_department_name", { length: 255 }), - - // 새로운 부서 정보 (현재 Knox에 존재하는 부서) - newCompanyCode: varchar("new_company_code", { length: 10 }), - newDepartmentCode: varchar("new_department_code", { length: 50 }), - newDepartmentName: varchar("new_department_name", { length: 255 }), - - // 매핑 상태 - mappingStatus: varchar("mapping_status", { - length: 20, - enum: ["pending", "mapped", "rejected"] - }).notNull().default("pending"), - - mappedBy: integer("mapped_by"), // 매핑 처리자 - mappedAt: timestamp("mapped_at"), - - createdAt: timestamp("created_at").defaultNow().notNull(), - updatedAt: timestamp("updated_at").defaultNow().notNull(), -}); // 할당 이력 추적 테이블 (감사 목적) export const departmentDomainAssignmentHistory = pgTable("department_domain_assignment_history", { @@ -85,4 +56,11 @@ export const departmentDomainAssignmentHistory = pgTable("department_domain_assi changeReason: text("change_reason"), createdAt: timestamp("created_at").defaultNow().notNull(), -}); \ No newline at end of file +}); + +// 고립된 레코드 관리를 위한 매핑 테이블 (추후 구현용) 로 departmentDomainMappings 를 정의했었음. +// 부서가 없어진 경우 매핑해달라는 요구사항때문에 작성했는데, 이상한 요구사항. +// 어차피 새 부서에 대해 도메인 할당해줘야하니, 새 부서 기준으로만 적용하는게 맞음. +// 이상한 별도의 매핑기능같은 걸 만들 게 아님. A 부서의 인원들이 B, C 등 여러 부서로 이동할 수 있는데 +// 그것을 어떻게 매핑하겠다는 것인지? 결국 새로 생긴 부서별로 처리를 해줘야 한다는 것임. +// 정보시스템팀이 본인 업무부담을 줄이겠다고 제안한 기능이지만 수용 불가능한 요구사항임. \ No newline at end of file diff --git a/lib/po/vendor-table/service.ts b/lib/po/vendor-table/service.ts index 88f6ddd5..195144a2 100644 --- a/lib/po/vendor-table/service.ts +++ b/lib/po/vendor-table/service.ts @@ -301,17 +301,17 @@ export async function handleVendorPOAction( switch (action) { case "pcr-create": - return { success: true, message: "PCR이 성공적으로 생성되었습니다." }; + return { success: true, message: "개발중" }; case "approve": - return { success: true, message: "계약이 승인되었습니다." }; + return { success: true, message: '개발중' }; case "cancel-approve": - return { success: true, message: "승인이 취소되었습니다." }; + return { success: true, message: '개발중' }; case "reject-contract": - return { success: true, message: "계약이 거절되었습니다." }; + return { success: true, message: '개발중' }; case "print-contract": - return { success: true, message: "계약서 출력이 요청되었습니다." }; + return { success: true, message: '개발중' }; default: - return { success: false, message: "알 수 없는 액션입니다." }; + return { success: false, message: '개발중' }; } } catch (err) { console.error("Error in handleVendorPOAction:", err); diff --git a/lib/po/vendor-table/vendor-po-columns.tsx b/lib/po/vendor-table/vendor-po-columns.tsx index 1a655b0c..0910eaf8 100644 --- a/lib/po/vendor-table/vendor-po-columns.tsx +++ b/lib/po/vendor-table/vendor-po-columns.tsx @@ -425,7 +425,7 @@ export function getVendorColumns({ setRowAction, selectedRows = [], onRowSelect - {/* 드롭다운 메뉴 */} + {/* 드롭다운 메뉴