summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/[lng]/evcp/(evcp)/menu-access-dept/_components/department-domain-assignment-dialog.tsx14
-rw-r--r--app/[lng]/evcp/(evcp)/menu-access-dept/_components/department-menu-access-manager.tsx12
-rw-r--r--app/api/(S-ERP)/(ECC)/IF_ECC_EVCP_PR_INFORMATION/route.ts15
3 files changed, 27 insertions, 14 deletions
diff --git a/app/[lng]/evcp/(evcp)/menu-access-dept/_components/department-domain-assignment-dialog.tsx b/app/[lng]/evcp/(evcp)/menu-access-dept/_components/department-domain-assignment-dialog.tsx
index 277511cb..f8a75641 100644
--- a/app/[lng]/evcp/(evcp)/menu-access-dept/_components/department-domain-assignment-dialog.tsx
+++ b/app/[lng]/evcp/(evcp)/menu-access-dept/_components/department-domain-assignment-dialog.tsx
@@ -20,7 +20,6 @@ import {
} from "@/components/ui/select";
import { Textarea } from "@/components/ui/textarea";
import { Badge } from "@/components/ui/badge";
-import { ScrollArea } from "@/components/ui/scroll-area";
import { Label } from "@/components/ui/label";
import { Separator } from "@/components/ui/separator";
import {
@@ -35,8 +34,7 @@ import {
DepartmentNode
} from "@/lib/users/knox-service";
import {
- getDepartmentDomainAssignmentsByDepartments,
- type UserDomain
+ getDepartmentDomainAssignmentsByDepartments
} from "@/lib/users/department-domain/service";
import { DOMAIN_OPTIONS, getDomainLabel } from "./domain-constants";
@@ -186,9 +184,8 @@ export function DepartmentDomainAssignmentDialog({
</DialogDescription>
</DialogHeader>
- <div className="flex-1 overflow-hidden">
- <ScrollArea className="h-full pr-4">
- <div className="space-y-6">
+ <div className="flex-1 overflow-y-auto px-1">
+ <div className="space-y-6 pr-3">
{/* 선택된 부서들 표시 */}
<div className="space-y-3">
<Label className="text-sm font-medium flex items-center gap-2">
@@ -196,7 +193,7 @@ export function DepartmentDomainAssignmentDialog({
선택된 부서 ({selectedDepartments.length}개)
</Label>
- <div className="border rounded-md p-3 max-h-32 overflow-y-auto">
+ <div className="border rounded-md p-3 max-h-40 overflow-y-auto">
{Array.from(selectedDepartmentsByCompany.entries()).map(([companyCode, depts]) => (
<div key={companyCode} className="mb-3 last:mb-0">
<div className="text-sm font-medium text-muted-foreground mb-2">
@@ -234,7 +231,7 @@ export function DepartmentDomainAssignmentDialog({
기존 할당 정보를 조회하는 중...
</div>
) : (
- <div className="border rounded-md">
+ <div className="border rounded-md max-h-60 overflow-y-auto">
<Table>
<TableHeader>
<TableRow>
@@ -353,7 +350,6 @@ export function DepartmentDomainAssignmentDialog({
</div>
</div>
</div>
- </ScrollArea>
</div>
<DialogFooter className="border-t pt-4">
diff --git a/app/[lng]/evcp/(evcp)/menu-access-dept/_components/department-menu-access-manager.tsx b/app/[lng]/evcp/(evcp)/menu-access-dept/_components/department-menu-access-manager.tsx
index bf43e7a9..c24770bf 100644
--- a/app/[lng]/evcp/(evcp)/menu-access-dept/_components/department-menu-access-manager.tsx
+++ b/app/[lng]/evcp/(evcp)/menu-access-dept/_components/department-menu-access-manager.tsx
@@ -15,6 +15,7 @@ import {
import {
assignDomainToDepartments,
getDepartmentDomainAssignments,
+ autoAssignPendingUsersDomains,
type UserDomain
} from "@/lib/users/department-domain/service";
import { DOMAIN_OPTIONS } from "./domain-constants";
@@ -138,6 +139,17 @@ export function DepartmentMenuAccessManager({
} catch (error) {
console.error("할당 정보 새로고침 실패:", error);
}
+
+ // users 테이블에 도메인 동기화 작업 진행
+ try {
+ const syncResult = await autoAssignPendingUsersDomains();
+ if (syncResult.success && syncResult.assignedCount > 0) {
+ toast.success(`사용자 도메인 동기화 완료: ${syncResult.assignedCount}명의 사용자가 자동 할당되었습니다.`);
+ }
+ } catch (error) {
+ console.error("사용자 도메인 동기화 실패:", error);
+ // 동기화 실패해도 메인 할당은 성공이므로 에러 토스트는 표시하지 않음
+ }
} else {
toast.error(result.message);
}
diff --git a/app/api/(S-ERP)/(ECC)/IF_ECC_EVCP_PR_INFORMATION/route.ts b/app/api/(S-ERP)/(ECC)/IF_ECC_EVCP_PR_INFORMATION/route.ts
index 7290db0f..e195c7f6 100644
--- a/app/api/(S-ERP)/(ECC)/IF_ECC_EVCP_PR_INFORMATION/route.ts
+++ b/app/api/(S-ERP)/(ECC)/IF_ECC_EVCP_PR_INFORMATION/route.ts
@@ -21,6 +21,9 @@ import {
import {
mapAndSaveECCRfqData
} from "@/lib/soap/ecc/mapper/rfq-and-pr-mapper";
+import {
+ mapAndSaveECCBiddingData
+} from "@/lib/soap/ecc/mapper/bidding-and-pr-mapper";
// 스키마에서 타입 추론
@@ -120,14 +123,16 @@ export async function POST(request: NextRequest) {
}
}
- // AB (Bidding) 데이터 처리 - TODO
+ // AB (Bidding) 데이터 처리
+ let biddingMappingResult: { success: boolean; message: string; processedCount: number } | null = null;
if (abHeaders.length > 0) {
- console.log(`⚠️ TODO: Bidding 데이터 처리 필요 - ${abHeaders.length}개 헤더, ${abItems.length}개 아이템`);
- // TODO: mapAndSaveECCBiddingData 함수 구현 필요
- // const biddingMappingResult = await mapAndSaveECCBiddingData(abHeaders, abItems);
+ biddingMappingResult = await mapAndSaveECCBiddingData(abHeaders, abItems);
+ if (!biddingMappingResult.success) {
+ throw new Error(`Bidding 비즈니스 테이블 매핑 실패: ${biddingMappingResult.message}`);
+ }
}
- console.log(`🎉 처리 완료: ${processedData.length}개 PR 데이터, ${rfqMappingResult?.processedCount || 0}개 RFQ 매핑, ${abHeaders.length}개 Bidding (TODO)`);
+ console.log(`🎉 처리 완료: ${processedData.length}개 PR 데이터, ${rfqMappingResult?.processedCount || 0}개 RFQ 매핑, ${biddingMappingResult?.processedCount || 0}개 Bidding 매핑`);
// 6) 성공 응답 반환
return createSoapResponse('http://60.101.108.100/', {