From f54f6336a57d300f24095eff5760c810367b8d51 Mon Sep 17 00:00:00 2001 From: dohyeons Date: Thu, 2 Oct 2025 16:14:22 +0900 Subject: [PATCH 01/64] =?UTF-8?q?=EB=8F=84=EC=BB=A4=20=EC=9E=AC=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/prod/backend.Dockerfile | 8 ++-- docker/prod/docker-compose.backend.prod.yml | 44 ++++++++++++-------- docker/prod/docker-compose.frontend.prod.yml | 34 +++++++++------ docker/prod/frontend.Dockerfile | 8 ++-- scripts/prod/start-all-linux.sh | 18 ++++---- 5 files changed, 67 insertions(+), 45 deletions(-) diff --git a/docker/prod/backend.Dockerfile b/docker/prod/backend.Dockerfile index 8ef8a372..42779b66 100644 --- a/docker/prod/backend.Dockerfile +++ b/docker/prod/backend.Dockerfile @@ -37,9 +37,11 @@ COPY --from=build /app/dist ./dist # Copy package files COPY package*.json ./ -# Create logs and uploads directories and set permissions -RUN mkdir -p logs uploads && chown -R appuser:appgroup logs uploads && chmod -R 755 logs uploads +# Create logs directory and set permissions +RUN mkdir -p logs && chown -R appuser:appgroup logs && chmod -R 755 logs -EXPOSE 8080 +# uploads 디렉토리는 볼륨으로 마운트되므로 생성하지 않음 + +EXPOSE 3001 USER appuser CMD ["node", "dist/app.js"] diff --git a/docker/prod/docker-compose.backend.prod.yml b/docker/prod/docker-compose.backend.prod.yml index 85a0d189..507a555b 100644 --- a/docker/prod/docker-compose.backend.prod.yml +++ b/docker/prod/docker-compose.backend.prod.yml @@ -1,29 +1,37 @@ services: - # Node.js 백엔드 (운영용) - backend: + # Node.js 백엔드 + plm-backend: build: context: ../../backend-node - dockerfile: ../docker/prod/backend.Dockerfile # 운영용 Dockerfile - container_name: pms-backend-prod - network_mode: "host" # 호스트 네트워크 모드 + dockerfile: ../docker/prod/backend.Dockerfile + container_name: plm-backend + restart: always environment: - - NODE_ENV=production - - PORT=8080 - - HOST=0.0.0.0 # 모든 인터페이스에서 바인딩 - - DATABASE_URL=postgresql://postgres:ph0909!!@39.117.244.52:11132/plm - - JWT_SECRET=ilshin-plm-super-secret-jwt-key-2024 - - JWT_EXPIRES_IN=24h - - CORS_ORIGIN=http://192.168.0.70:5555,http://39.117.244.52:5555,http://localhost:9771 - - CORS_CREDENTIALS=true - - LOG_LEVEL=info - restart: unless-stopped + NODE_ENV: production + PORT: "3001" + DATABASE_URL: postgresql://postgres:ph0909!!@39.117.244.52:11132/plm + JWT_SECRET: ilshin-plm-super-secret-jwt-key-2024 + JWT_EXPIRES_IN: 24h + CORS_ORIGIN: https://v1.vexplor.com + CORS_CREDENTIALS: "true" + LOG_LEVEL: info + volumes: + - /home/vexplor/backend_data:/app/uploads + labels: + - traefik.enable=true + - traefik.http.routers.backend.rule=Host(`api.vexplor.com`) + - traefik.http.routers.backend.entrypoints=websecure,web + - traefik.http.routers.backend.tls=true + - traefik.http.routers.backend.tls.certresolver=le + - traefik.http.services.backend.loadbalancer.server.port=3001 healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/health"] + test: ["CMD", "curl", "-f", "http://localhost:3001/health"] interval: 30s timeout: 10s retries: 3 start_period: 60s networks: - pms-network: - driver: bridge + default: + name: toktork_server_default + external: true diff --git a/docker/prod/docker-compose.frontend.prod.yml b/docker/prod/docker-compose.frontend.prod.yml index de07bec4..227cd76e 100644 --- a/docker/prod/docker-compose.frontend.prod.yml +++ b/docker/prod/docker-compose.frontend.prod.yml @@ -1,22 +1,30 @@ services: - # Next.js 프론트엔드만 - frontend: + # Next.js 프론트엔드 + plm-frontend: build: context: ../../frontend dockerfile: ../docker/prod/frontend.Dockerfile args: - - NEXT_PUBLIC_API_URL=http://39.117.244.52:8080/api - container_name: pms-frontend-linux - ports: - - "5555:5555" + - NEXT_PUBLIC_API_URL=https://api.vexplor.com + container_name: plm-frontend + restart: always environment: - - NODE_ENV=production - - NEXT_PUBLIC_API_URL=http://39.117.244.52:8080/api - networks: - - pms-network - restart: unless-stopped + NODE_ENV: production + NEXT_PUBLIC_API_URL: https://api.vexplor.com + NEXT_TELEMETRY_DISABLED: "1" + PORT: "3000" + HOSTNAME: 0.0.0.0 + volumes: + - /home/vexplor/frontend_data:/app/data + labels: + - traefik.enable=true + - traefik.http.routers.frontend.rule=Host(`v1.vexplor.com`) + - traefik.http.routers.frontend.entrypoints=websecure,web + - traefik.http.routers.frontend.tls=true + - traefik.http.routers.frontend.tls.certresolver=le + - traefik.http.services.frontend.loadbalancer.server.port=3000 networks: - pms-network: - driver: bridge + default: + name: toktork_server_default external: true diff --git a/docker/prod/frontend.Dockerfile b/docker/prod/frontend.Dockerfile index 17df01e2..b2e1600d 100644 --- a/docker/prod/frontend.Dockerfile +++ b/docker/prod/frontend.Dockerfile @@ -22,8 +22,8 @@ COPY . . # Disable telemetry during the build ENV NEXT_TELEMETRY_DISABLED 1 -# 빌드 시 환경변수 설정 (ARG로 받아서 ENV로 설정) -ARG NEXT_PUBLIC_API_URL=http://192.168.0.70:8080/api +# 빌드 시 환경변수 설정 +ARG NEXT_PUBLIC_API_URL=https://api.vexplor.com ENV NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL # Build the application @@ -55,9 +55,9 @@ COPY --from=deps --chown=nextjs:nodejs /app/node_modules ./node_modules USER nextjs -EXPOSE 5555 +EXPOSE 3000 -ENV PORT 5555 +ENV PORT 3000 ENV HOSTNAME "0.0.0.0" # Next.js start 명령어 사용 diff --git a/scripts/prod/start-all-linux.sh b/scripts/prod/start-all-linux.sh index 429203f8..e58d7343 100644 --- a/scripts/prod/start-all-linux.sh +++ b/scripts/prod/start-all-linux.sh @@ -85,8 +85,10 @@ echo "============================================" echo "" echo "📊 서비스 접속 정보:" echo " [DATABASE] PostgreSQL: http://39.117.244.52:11132" -echo " [BACKEND] Spring Boot: http://localhost:8080/api" -echo " [FRONTEND] Next.js: http://localhost:5555" +echo " [BACKEND] API: https://api.vexplor.com" +echo " [FRONTEND] Web: https://v1.vexplor.com" +echo " [BACKEND LOCAL] http://localhost:3001/api" +echo " [FRONTEND LOCAL] http://localhost:3000" echo "" echo "🔧 관리 명령어:" echo " 서비스 상태 확인:" @@ -119,7 +121,7 @@ echo "" echo "백엔드 헬스체크..." backend_healthy=false for i in {1..12}; do - if curl -s http://localhost:8080/health >/dev/null 2>&1; then + if curl -s http://localhost:3001/health >/dev/null 2>&1; then echo " ✅ 백엔드 서비스 정상" backend_healthy=true break @@ -142,14 +144,14 @@ if [ "$backend_healthy" = false ]; then docker-compose -f docker/prod/docker-compose.backend.prod.yml ps echo " 최근 로그:" docker-compose -f docker/prod/docker-compose.backend.prod.yml logs --tail=20 - echo " 포트 8080 사용 현황:" - netstat -tln 2>/dev/null | grep ':8080' || echo " 포트 8080이 사용되지 않음" + echo " 포트 3001 사용 현황:" + netstat -tln 2>/dev/null | grep ':3001' || echo " 포트 3001이 사용되지 않음" fi # 프론트엔드 헬스체크 (최대 30초 대기) echo "프론트엔드 헬스체크..." for i in {1..6}; do - if curl -s http://localhost:5555 >/dev/null 2>&1; then + if curl -s http://localhost:3000 >/dev/null 2>&1; then echo " ✅ 프론트엔드 서비스 정상" break else @@ -159,7 +161,9 @@ for i in {1..6}; do done echo "" -echo "🎯 시작 완료! 브라우저에서 http://localhost:5555 을 확인하세요." +echo "🎯 시작 완료!" +echo " 브라우저에서 https://v1.vexplor.com 을 확인하세요." +echo " (로컬: http://localhost:3000)" echo "" read -p "계속하려면 Enter 키를 누르세요..." \ No newline at end of file -- 2.43.0 From cb0c30750d15ab290c4e9e1b917d90eb9d739a6c Mon Sep 17 00:00:00 2001 From: dohyeons Date: Thu, 16 Oct 2025 10:47:37 +0900 Subject: [PATCH 02/64] Merge remote-tracking branch 'upstream/main' -- 2.43.0 From 179bf418cc1acb1f439b1d305055f9d747db7216 Mon Sep 17 00:00:00 2001 From: dohyeons Date: Tue, 28 Oct 2025 18:57:45 +0900 Subject: [PATCH 03/64] Merge remote-tracking branch 'upstream/main' -- 2.43.0 From 545e8659aeeece60997e11959cef89b3bfc74fd4 Mon Sep 17 00:00:00 2001 From: dohyeons Date: Wed, 29 Oct 2025 11:33:58 +0900 Subject: [PATCH 04/64] Merge remote-tracking branch 'upstream/main' -- 2.43.0 From b66b2ff2666dbe4725b119653ec529bed6c95a35 Mon Sep 17 00:00:00 2001 From: dohyeons Date: Fri, 7 Nov 2025 10:19:00 +0900 Subject: [PATCH 05/64] Merge remote-tracking branch 'upstream/main' -- 2.43.0 From e2143a6c9ad2640255dd6c31769d6332e0aa9118 Mon Sep 17 00:00:00 2001 From: dohyeons Date: Fri, 7 Nov 2025 10:23:08 +0900 Subject: [PATCH 06/64] Merge remote-tracking branch 'upstream/main' -- 2.43.0 From 88f5864c7e2433ea125766ca1862569621c2fd16 Mon Sep 17 00:00:00 2001 From: dohyeons Date: Fri, 7 Nov 2025 11:05:34 +0900 Subject: [PATCH 07/64] Merge remote-tracking branch 'upstream/main' -- 2.43.0 From 6e0ae8e9dff9c94931ab44a94a88122cebb8ebb0 Mon Sep 17 00:00:00 2001 From: kjs Date: Fri, 5 Dec 2025 10:46:10 +0900 Subject: [PATCH 08/64] =?UTF-8?q?=EB=AA=A8=EB=8B=AC=20=ED=81=AC=EA=B8=B0?= =?UTF-8?q?=20=EA=B3=A0=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/components/admin/AddColumnModal.tsx | 34 +- .../components/admin/AdvancedBatchModal.tsx | 2 +- frontend/components/admin/BatchJobModal.tsx | 22 +- .../admin/CodeCategoryFormModal.tsx | 16 +- frontend/components/admin/CodeFormModal.tsx | 16 +- .../admin/CollectionConfigModal.tsx | 22 +- .../components/admin/CompanyFormModal.tsx | 32 +- .../components/admin/CreateTableModal.tsx | 38 +- frontend/components/admin/DDLLogViewer.tsx | 28 +- .../admin/ExternalCallConfigModal.tsx | 34 +- .../admin/ExternalDbConnectionModal.tsx | 34 +- frontend/components/admin/LangKeyModal.tsx | 26 +- frontend/components/admin/LanguageModal.tsx | 26 +- frontend/components/admin/LayoutFormModal.tsx | 24 +- frontend/components/admin/MenuFormModal.tsx | 26 +- .../admin/RestApiConnectionModal.tsx | 32 +- frontend/components/admin/RoleDeleteModal.tsx | 32 +- frontend/components/admin/RoleFormModal.tsx | 32 +- frontend/components/admin/SqlQueryModal.tsx | 36 +- frontend/components/admin/TableLogViewer.tsx | 28 +- .../components/admin/TemplateImportExport.tsx | 2 +- frontend/components/admin/UserFormModal.tsx | 30 +- .../components/admin/UserHistoryModal.tsx | 26 +- .../admin/UserPasswordResetModal.tsx | 16 +- .../admin/dashboard/DashboardDesigner.tsx | 30 +- .../admin/dashboard/DashboardSaveModal.tsx | 32 +- .../admin/dashboard/MenuAssignmentModal.tsx | 34 +- .../widgets/yard-3d/MaterialAddModal.tsx | 30 +- .../widgets/yard-3d/MaterialLibrary.tsx | 2 +- .../widgets/yard-3d/YardLayoutCreateModal.tsx | 34 +- .../components/common/BarcodeScanModal.tsx | 47 +- .../components/common/ExcelUploadModal.tsx | 54 +- frontend/components/common/ScreenModal.tsx | 58 +- .../components/common/TableHistoryModal.tsx | 20 +- .../components/common/TableOptionsModal.tsx | 47 +- .../dataflow/ConnectionSetupModal.tsx | 34 +- .../components/dataflow/SaveDiagramModal.tsx | 34 +- .../node-editor/dialogs/LoadFlowDialog.tsx | 2 +- .../components/flow/FlowDataListModal.tsx | 8 +- frontend/components/layout/ProfileModal.tsx | 68 +- frontend/components/mail/MailDetailModal.tsx | 18 +- .../components/multilang/LangKeyModal.tsx | 6 +- .../order/OrderRegistrationModal.tsx | 2 +- .../components/report/ReportCreateModal.tsx | 15 +- .../components/screen/CopyScreenModal.tsx | 2 +- .../components/screen/CreateScreenModal.tsx | 40 +- frontend/components/screen/EditModal.tsx | 55 +- .../screen/FileAttachmentDetailModal.tsx | 6 +- .../screen/InteractiveDataTable.tsx | 6 +- .../screen/InteractiveScreenViewer.tsx | 2 +- .../screen/InteractiveScreenViewerDynamic.tsx | 27 +- .../components/screen/MenuAssignmentModal.tsx | 76 +-- .../screen/ResponsivePreviewModal.tsx | 4 +- frontend/components/screen/SaveModal.tsx | 25 +- .../screen/templates/DataTableTemplate.tsx | 2 +- frontend/components/ui/dialog.tsx | 6 +- frontend/components/ui/resizable-dialog.tsx | 601 ------------------ .../components/webtypes/RepeaterInput.tsx | 91 ++- .../card-display/CardDisplayComponent.tsx | 4 +- .../entity-search-input/EntitySearchModal.tsx | 2 +- .../file-upload/FileViewerModal.tsx | 4 +- .../ItemSelectionModal.tsx | 6 +- .../table-list/TableListComponent.tsx | 90 ++- .../table-list/TableListConfigPanel.tsx | 193 +++--- ..._임베딩_및_데이터_전달_시스템_구현_계획서.md | 1 + 화면_임베딩_시스템_Phase1-4_구현_완료.md | 1 + 화면_임베딩_시스템_충돌_분석_보고서.md | 1 + 67 files changed, 969 insertions(+), 1465 deletions(-) delete mode 100644 frontend/components/ui/resizable-dialog.tsx diff --git a/frontend/components/admin/AddColumnModal.tsx b/frontend/components/admin/AddColumnModal.tsx index 6b9467d9..550c46fc 100644 --- a/frontend/components/admin/AddColumnModal.tsx +++ b/frontend/components/admin/AddColumnModal.tsx @@ -7,13 +7,13 @@ import { useState, useEffect } from "react"; import { - ResizableDialog, - ResizableDialogContent, - ResizableDialogHeader, - ResizableDialogTitle, - ResizableDialogDescription, - ResizableDialogFooter, -} from "@/components/ui/resizable-dialog"; + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogDescription, + DialogFooter, +} from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; @@ -197,14 +197,14 @@ export function AddColumnModal({ isOpen, onClose, tableName, onSuccess }: AddCol const inputTypeOption = INPUT_TYPE_OPTIONS.find((opt) => opt.value === column.inputType); return ( - - - - + + + + 컬럼 추가 - {tableName} - - + +
{/* 검증 오류 표시 */} @@ -346,7 +346,7 @@ export function AddColumnModal({ isOpen, onClose, tableName, onSuccess }: AddCol
- + @@ -365,8 +365,8 @@ export function AddColumnModal({ isOpen, onClose, tableName, onSuccess }: AddCol "컬럼 추가" )} - -
-
+ + + ); } diff --git a/frontend/components/admin/AdvancedBatchModal.tsx b/frontend/components/admin/AdvancedBatchModal.tsx index b1667c36..1276bcad 100644 --- a/frontend/components/admin/AdvancedBatchModal.tsx +++ b/frontend/components/admin/AdvancedBatchModal.tsx @@ -198,7 +198,7 @@ export default function AdvancedBatchModal({ return ( - + 고급 배치 생성 diff --git a/frontend/components/admin/BatchJobModal.tsx b/frontend/components/admin/BatchJobModal.tsx index cc9ca22f..b3fbb0e9 100644 --- a/frontend/components/admin/BatchJobModal.tsx +++ b/frontend/components/admin/BatchJobModal.tsx @@ -7,7 +7,7 @@ import { DialogHeader, -} from "@/components/ui/resizable-dialog"; +} from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; @@ -169,13 +169,13 @@ export default function BatchJobModal({ // 상태 제거 - 필요없음 return ( - - - - + + + + {job ? "배치 작업 수정" : "새 배치 작업"} - - + +
{/* 기본 정보 */} @@ -344,7 +344,7 @@ export default function BatchJobModal({ - + - +
-
-
+
+
); } diff --git a/frontend/components/admin/CodeCategoryFormModal.tsx b/frontend/components/admin/CodeCategoryFormModal.tsx index c7c62818..0ba970e0 100644 --- a/frontend/components/admin/CodeCategoryFormModal.tsx +++ b/frontend/components/admin/CodeCategoryFormModal.tsx @@ -3,7 +3,7 @@ import { useEffect } from "react"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; -import { ResizableDialog, ResizableDialogContent, ResizableDialogHeader, DialogTitle } from "@/components/ui/resizable-dialog"; +import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; @@ -164,11 +164,11 @@ export function CodeCategoryFormModal({ const isLoading = createCategoryMutation.isPending || updateCategoryMutation.isPending; return ( - - - - {isEditing ? "카테고리 수정" : "새 카테고리"} - + + + + {isEditing ? "카테고리 수정" : "새 카테고리"} +
{/* 카테고리 코드 */} @@ -383,7 +383,7 @@ export function CodeCategoryFormModal({
-
-
+ + ); } diff --git a/frontend/components/admin/CodeFormModal.tsx b/frontend/components/admin/CodeFormModal.tsx index 2d6c7d39..977e9e84 100644 --- a/frontend/components/admin/CodeFormModal.tsx +++ b/frontend/components/admin/CodeFormModal.tsx @@ -3,7 +3,7 @@ import { useEffect, useState } from "react"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; -import { ResizableDialog, ResizableDialogContent, ResizableDialogHeader, DialogTitle } from "@/components/ui/resizable-dialog"; +import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; @@ -153,11 +153,11 @@ export function CodeFormModal({ isOpen, onClose, categoryCode, editingCode, code const isLoading = createCodeMutation.isPending || updateCodeMutation.isPending; return ( - - - - {isEditing ? "코드 수정" : "새 코드"} - + + + + {isEditing ? "코드 수정" : "새 코드"} +
{/* 코드값 */} @@ -328,7 +328,7 @@ export function CodeFormModal({ isOpen, onClose, categoryCode, editingCode, code
-
-
+ + ); } diff --git a/frontend/components/admin/CollectionConfigModal.tsx b/frontend/components/admin/CollectionConfigModal.tsx index ef5e4998..ea099bfa 100644 --- a/frontend/components/admin/CollectionConfigModal.tsx +++ b/frontend/components/admin/CollectionConfigModal.tsx @@ -7,7 +7,7 @@ import { DialogHeader, -} from "@/components/ui/resizable-dialog"; +} from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; @@ -164,13 +164,13 @@ export default function CollectionConfigModal({ ]; return ( - - - - + + + + {config ? "수집 설정 수정" : "새 수집 설정"} - - + +
{/* 기본 정보 */} @@ -331,16 +331,16 @@ export default function CollectionConfigModal({ - + - +
-
-
+ + ); } diff --git a/frontend/components/admin/CompanyFormModal.tsx b/frontend/components/admin/CompanyFormModal.tsx index 56b79294..91cff911 100644 --- a/frontend/components/admin/CompanyFormModal.tsx +++ b/frontend/components/admin/CompanyFormModal.tsx @@ -4,13 +4,13 @@ import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { - ResizableDialog, - ResizableDialogContent, - ResizableDialogHeader, - ResizableDialogTitle, - ResizableDialogDescription, - ResizableDialogFooter, -} from "@/components/ui/resizable-dialog"; + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogDescription, + DialogFooter, +} from "@/components/ui/dialog"; import { LoadingSpinner } from "@/components/common/LoadingSpinner"; import { validateBusinessNumber, formatBusinessNumber } from "@/lib/validation/businessNumber"; @@ -111,8 +111,8 @@ export function CompanyFormModal({ }; return ( - - + - - {isEditMode ? "회사 정보 수정" : "새 회사 등록"} - + + {isEditMode ? "회사 정보 수정" : "새 회사 등록"} +
{/* 회사명 입력 (필수) */} @@ -255,7 +255,7 @@ export function CompanyFormModal({ )}
- + @@ -273,8 +273,8 @@ export function CompanyFormModal({ {(isLoading || isSaving) && } {isEditMode ? "수정" : "등록"} - -
-
+ + + ); } diff --git a/frontend/components/admin/CreateTableModal.tsx b/frontend/components/admin/CreateTableModal.tsx index 8de74c32..ecb6b03f 100644 --- a/frontend/components/admin/CreateTableModal.tsx +++ b/frontend/components/admin/CreateTableModal.tsx @@ -7,13 +7,13 @@ import { useState, useEffect } from "react"; import { - ResizableDialog, - ResizableDialogContent, - ResizableDialogHeader, - ResizableDialogTitle, - ResizableDialogDescription, - ResizableDialogFooter, -} from "@/components/ui/resizable-dialog"; + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogDescription, + DialogFooter, +} from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; @@ -321,20 +321,20 @@ export function CreateTableModal({ const isFormValid = !tableNameError && tableName && columns.some((col) => col.name && col.inputType); return ( - - - - + + + + {isDuplicateMode ? "테이블 복제" : "새 테이블 생성"} - - + + {isDuplicateMode ? `${sourceTableName} 테이블을 복제하여 새 테이블을 생성합니다. 테이블명을 입력하고 필요시 컬럼을 수정하세요.` : "최고 관리자만 새로운 테이블을 생성할 수 있습니다. 테이블명과 컬럼 정의를 입력하고 검증 후 생성하세요." } - - + +
{/* 테이블 기본 정보 */} @@ -452,7 +452,7 @@ export function CreateTableModal({ )}
- + @@ -482,8 +482,8 @@ export function CreateTableModal({ isDuplicateMode ? "복제 생성" : "테이블 생성" )} - -
-
+ + + ); } diff --git a/frontend/components/admin/DDLLogViewer.tsx b/frontend/components/admin/DDLLogViewer.tsx index d4441056..f707511b 100644 --- a/frontend/components/admin/DDLLogViewer.tsx +++ b/frontend/components/admin/DDLLogViewer.tsx @@ -7,12 +7,12 @@ import { useState, useEffect } from "react"; import { - ResizableDialog, - ResizableDialogContent, - ResizableDialogHeader, - ResizableDialogTitle, - ResizableDialogFooter -} from "@/components/ui/resizable-dialog"; + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogFooter +} from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Badge } from "@/components/ui/badge"; @@ -148,14 +148,14 @@ export function DDLLogViewer({ isOpen, onClose }: DDLLogViewerProps) { }; return ( - - - - + + + + DDL 실행 로그 및 통계 - - + + @@ -407,7 +407,7 @@ export function DDLLogViewer({ isOpen, onClose }: DDLLogViewerProps) { )} - - + + ); } diff --git a/frontend/components/admin/ExternalCallConfigModal.tsx b/frontend/components/admin/ExternalCallConfigModal.tsx index 0217977a..30694034 100644 --- a/frontend/components/admin/ExternalCallConfigModal.tsx +++ b/frontend/components/admin/ExternalCallConfigModal.tsx @@ -6,13 +6,13 @@ import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Textarea } from "@/components/ui/textarea"; import { - ResizableDialog, - ResizableDialogContent, - ResizableDialogHeader, - ResizableDialogTitle, - ResizableDialogDescription, - ResizableDialogFooter, -} from "@/components/ui/resizable-dialog"; + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogDescription, + DialogFooter, +} from "@/components/ui/dialog"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { toast } from "sonner"; import { @@ -266,13 +266,13 @@ export function ExternalCallConfigModal({ isOpen, onClose, onSave, editingConfig }; return ( - - - - + + + + {editingConfig ? "외부 호출 설정 편집" : "새 외부 호출 설정"} - - + +
{/* 기본 정보 */} @@ -564,7 +564,7 @@ export function ExternalCallConfigModal({ isOpen, onClose, onSave, editingConfig )}
- + - -
-
+ + + ); } diff --git a/frontend/components/admin/ExternalDbConnectionModal.tsx b/frontend/components/admin/ExternalDbConnectionModal.tsx index 1d0c046f..f5631297 100644 --- a/frontend/components/admin/ExternalDbConnectionModal.tsx +++ b/frontend/components/admin/ExternalDbConnectionModal.tsx @@ -8,13 +8,13 @@ import { Label } from "@/components/ui/label"; import { Textarea } from "@/components/ui/textarea"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { - ResizableDialog, - ResizableDialogContent, - ResizableDialogHeader, - ResizableDialogTitle, - ResizableDialogDescription, - ResizableDialogFooter, -} from "@/components/ui/resizable-dialog"; + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogDescription, + DialogFooter, +} from "@/components/ui/dialog"; import { useToast } from "@/hooks/use-toast"; import { ExternalDbConnectionAPI, @@ -311,13 +311,13 @@ export const ExternalDbConnectionModal: React.FC }; return ( - - - - + + + + {isEditMode ? "연결 정보 수정" : "새 외부 DB 연결 추가"} - - + +
{/* 기본 정보 */} @@ -607,7 +607,7 @@ export const ExternalDbConnectionModal: React.FC
- + - -
-
+ + + ); }; diff --git a/frontend/components/admin/LangKeyModal.tsx b/frontend/components/admin/LangKeyModal.tsx index 034ca213..6801e873 100644 --- a/frontend/components/admin/LangKeyModal.tsx +++ b/frontend/components/admin/LangKeyModal.tsx @@ -2,12 +2,12 @@ import { useState, useEffect } from "react"; import { - ResizableDialog, - ResizableDialogContent, - ResizableDialogHeader, - ResizableDialogTitle, - ResizableDialogFooter, -} from "@/components/ui/resizable-dialog"; + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogFooter, +} from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; @@ -66,11 +66,11 @@ export default function LangKeyModal({ isOpen, onClose, onSave, keyData, compani }; return ( - - - - {keyData ? "언어 키 수정" : "새 언어 키 추가"} - + + + + {keyData ? "언어 키 수정" : "새 언어 키 추가"} +
@@ -131,7 +131,7 @@ export default function LangKeyModal({ isOpen, onClose, onSave, keyData, compani
-
-
+ + ); } diff --git a/frontend/components/admin/LanguageModal.tsx b/frontend/components/admin/LanguageModal.tsx index a50f12ef..908ebf0a 100644 --- a/frontend/components/admin/LanguageModal.tsx +++ b/frontend/components/admin/LanguageModal.tsx @@ -2,12 +2,12 @@ import { useState, useEffect } from "react"; import { - ResizableDialog, - ResizableDialogContent, - ResizableDialogHeader, - ResizableDialogTitle, - ResizableDialogFooter, -} from "@/components/ui/resizable-dialog"; + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogFooter, +} from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; @@ -68,11 +68,11 @@ export default function LanguageModal({ isOpen, onClose, onSave, languageData }: }; return ( - - - - {languageData ? "언어 수정" : "새 언어 추가"} - + + + + {languageData ? "언어 수정" : "새 언어 추가"} +
@@ -141,8 +141,8 @@ export default function LanguageModal({ isOpen, onClose, onSave, languageData }:
- - + +
); } diff --git a/frontend/components/admin/LayoutFormModal.tsx b/frontend/components/admin/LayoutFormModal.tsx index da6b0f3a..a4bcdf4f 100644 --- a/frontend/components/admin/LayoutFormModal.tsx +++ b/frontend/components/admin/LayoutFormModal.tsx @@ -13,7 +13,7 @@ import { DialogHeader, -} from "@/components/ui/resizable-dialog"; +} from "@/components/ui/dialog"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { Alert, AlertDescription } from "@/components/ui/alert"; @@ -225,14 +225,14 @@ export const LayoutFormModal: React.FC = ({ open, onOpenCh }; return ( - - - - + + + + 새 레이아웃 생성 - - GUI를 통해 새로운 레이아웃을 쉽게 생성할 수 있습니다. - + + GUI를 통해 새로운 레이아웃을 쉽게 생성할 수 있습니다. + {/* 단계 표시기 */}
@@ -499,7 +499,7 @@ export const LayoutFormModal: React.FC = ({ open, onOpenCh )}
- + {step !== "basic" && !generationResult && ( - -
-
+ + + ); }; diff --git a/frontend/components/admin/MenuFormModal.tsx b/frontend/components/admin/MenuFormModal.tsx index 33d2447e..43f17b52 100644 --- a/frontend/components/admin/MenuFormModal.tsx +++ b/frontend/components/admin/MenuFormModal.tsx @@ -9,11 +9,11 @@ import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Textarea } from "@/components/ui/textarea"; import { - ResizableDialog, - ResizableDialogContent, - ResizableDialogHeader, - ResizableDialogTitle -} from "@/components/ui/resizable-dialog"; + Dialog, + DialogContent, + DialogHeader, + DialogTitle +} from "@/components/ui/dialog"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"; import { toast } from "sonner"; @@ -684,15 +684,15 @@ export const MenuFormModal: React.FC = ({ }; return ( - - - - + + + + {isEdit ? getText(MENU_MANAGEMENT_KEYS.MODAL_MENU_MODIFY_TITLE) : getText(MENU_MANAGEMENT_KEYS.MODAL_MENU_REGISTER_TITLE)} - - + +
@@ -1067,7 +1067,7 @@ export const MenuFormModal: React.FC = ({
-
-
+ + ); }; diff --git a/frontend/components/admin/RestApiConnectionModal.tsx b/frontend/components/admin/RestApiConnectionModal.tsx index 3de34800..95ac6e76 100644 --- a/frontend/components/admin/RestApiConnectionModal.tsx +++ b/frontend/components/admin/RestApiConnectionModal.tsx @@ -8,13 +8,13 @@ import { Label } from "@/components/ui/label"; import { Textarea } from "@/components/ui/textarea"; import { Switch } from "@/components/ui/switch"; import { - ResizableDialog, - ResizableDialogContent, - ResizableDialogHeader, - ResizableDialogTitle, - ResizableDialogDescription, - ResizableDialogFooter, -} from "@/components/ui/resizable-dialog"; + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogDescription, + DialogFooter, +} from "@/components/ui/dialog"; import { useToast } from "@/hooks/use-toast"; import { ExternalRestApiConnectionAPI, @@ -271,11 +271,11 @@ export function RestApiConnectionModal({ isOpen, onClose, onSave, connection }: }; return ( - - - - {connection ? "REST API 연결 수정" : "새 REST API 연결 추가"} - + + + + {connection ? "REST API 연결 수정" : "새 REST API 연결 추가"} +
{/* 기본 정보 */} @@ -574,7 +574,7 @@ export function RestApiConnectionModal({ isOpen, onClose, onSave, connection }:
- + - -
-
+ + + ); } diff --git a/frontend/components/admin/RoleDeleteModal.tsx b/frontend/components/admin/RoleDeleteModal.tsx index 9d178351..9f3cf75a 100644 --- a/frontend/components/admin/RoleDeleteModal.tsx +++ b/frontend/components/admin/RoleDeleteModal.tsx @@ -2,13 +2,13 @@ import React, { useState, useCallback } from "react"; import { - ResizableDialog, - ResizableDialogContent, - ResizableDialogHeader, - ResizableDialogTitle, - ResizableDialogDescription, - ResizableDialogFooter, -} from "@/components/ui/resizable-dialog"; + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogDescription, + DialogFooter, +} from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { roleAPI, RoleGroup } from "@/lib/api/role"; import { AlertTriangle } from "lucide-react"; @@ -71,11 +71,11 @@ export function RoleDeleteModal({ isOpen, onClose, onSuccess, role }: RoleDelete if (!role) return null; return ( - - - - 권한 그룹 삭제 - + + + + 권한 그룹 삭제 +
{/* 경고 메시지 */} @@ -133,7 +133,7 @@ export function RoleDeleteModal({ isOpen, onClose, onSuccess, role }: RoleDelete )}
- + - -
-
+ + + ); } diff --git a/frontend/components/admin/RoleFormModal.tsx b/frontend/components/admin/RoleFormModal.tsx index 492a463c..cdeeccc5 100644 --- a/frontend/components/admin/RoleFormModal.tsx +++ b/frontend/components/admin/RoleFormModal.tsx @@ -2,13 +2,13 @@ import React, { useState, useCallback, useEffect, useMemo } from "react"; import { - ResizableDialog, - ResizableDialogContent, - ResizableDialogHeader, - ResizableDialogTitle, - ResizableDialogDescription, - ResizableDialogFooter, -} from "@/components/ui/resizable-dialog"; + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogDescription, + DialogFooter, +} from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; @@ -184,11 +184,11 @@ export function RoleFormModal({ isOpen, onClose, onSuccess, editingRole }: RoleF ); return ( - - - - {isEditMode ? "권한 그룹 수정" : "권한 그룹 생성"} - + + + + {isEditMode ? "권한 그룹 수정" : "권한 그룹 생성"} +
{/* 권한 그룹명 */} @@ -359,7 +359,7 @@ export function RoleFormModal({ isOpen, onClose, onSuccess, editingRole }: RoleF )}
- + - -
-
+ + + ); } diff --git a/frontend/components/admin/SqlQueryModal.tsx b/frontend/components/admin/SqlQueryModal.tsx index 4c01f472..6f83d78f 100644 --- a/frontend/components/admin/SqlQueryModal.tsx +++ b/frontend/components/admin/SqlQueryModal.tsx @@ -3,12 +3,12 @@ import { useState, useEffect, ChangeEvent } from "react"; import { Button } from "@/components/ui/button"; import { - ResizableDialog, - ResizableDialogContent, - ResizableDialogHeader, - ResizableDialogTitle, - ResizableDialogDescription, -} from "@/components/ui/resizable-dialog"; + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogDescription, +} from "@/components/ui/dialog"; import { Textarea } from "@/components/ui/textarea"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; @@ -179,14 +179,14 @@ export const SqlQueryModal: React.FC = ({ isOpen, onClose, c }; return ( - - - - {connectionName} - SQL 쿼리 실행 - + + + + {connectionName} - SQL 쿼리 실행 + 데이터베이스에 대해 SQL SELECT 쿼리를 실행하고 결과를 확인할 수 있습니다. - - + + {/* 쿼리 입력 영역 */}
@@ -228,7 +228,7 @@ export const SqlQueryModal: React.FC = ({ isOpen, onClose, c

사용 가능한 테이블

-
+
{tables.map((table) => (
@@ -263,7 +263,7 @@ export const SqlQueryModal: React.FC = ({ isOpen, onClose, c {loadingColumns ? (
컬럼 정보 로딩 중...
) : selectedTableColumns.length > 0 ? ( -
+
@@ -332,7 +332,7 @@ export const SqlQueryModal: React.FC = ({ isOpen, onClose, c {/* 결과 그리드 */}
-
+
@@ -378,7 +378,7 @@ export const SqlQueryModal: React.FC = ({ isOpen, onClose, c - - + + ); }; diff --git a/frontend/components/admin/TableLogViewer.tsx b/frontend/components/admin/TableLogViewer.tsx index 181c6e4b..147229df 100644 --- a/frontend/components/admin/TableLogViewer.tsx +++ b/frontend/components/admin/TableLogViewer.tsx @@ -2,12 +2,12 @@ import { useState, useEffect } from "react"; import { - ResizableDialog, - ResizableDialogContent, - ResizableDialogHeader, - ResizableDialogTitle, - ResizableDialogFooter -} from "@/components/ui/resizable-dialog"; + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogFooter +} from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; @@ -126,14 +126,14 @@ export function TableLogViewer({ tableName, open, onOpenChange }: TableLogViewer }; return ( - - - - + + + + {tableName} - 변경 이력 - - + + {/* 필터 영역 */}
@@ -261,7 +261,7 @@ export function TableLogViewer({ tableName, open, onOpenChange }: TableLogViewer
-
-
+ + ); } diff --git a/frontend/components/admin/TemplateImportExport.tsx b/frontend/components/admin/TemplateImportExport.tsx index a72bb468..e11dada6 100644 --- a/frontend/components/admin/TemplateImportExport.tsx +++ b/frontend/components/admin/TemplateImportExport.tsx @@ -7,7 +7,7 @@ import { Label } from "@/components/ui/label"; import { Textarea } from "@/components/ui/textarea"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Alert, AlertDescription } from "@/components/ui/alert"; -import { ResizableDialog, ResizableDialogContent, ResizableDialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog"; +import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog"; import { Upload, Download, FileText, AlertCircle, CheckCircle } from "lucide-react"; import { toast } from "sonner"; import { useTemplates } from "@/hooks/admin/useTemplates"; diff --git a/frontend/components/admin/UserFormModal.tsx b/frontend/components/admin/UserFormModal.tsx index b3095e67..a70e82b9 100644 --- a/frontend/components/admin/UserFormModal.tsx +++ b/frontend/components/admin/UserFormModal.tsx @@ -1,7 +1,7 @@ "use client"; import React, { useState, useCallback, useEffect, useMemo } from "react"; -import { ResizableDialog, ResizableDialogContent, ResizableDialogHeader, ResizableDialogTitle } from "@/components/ui/resizable-dialog"; +import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; @@ -32,11 +32,11 @@ function AlertModal({ isOpen, onClose, title, message, type = "info" }: AlertMod }; return ( - - - - {title} - + + + + {title} +

{message}

@@ -45,8 +45,8 @@ function AlertModal({ isOpen, onClose, title, message, type = "info" }: AlertMod 확인 -
-
+ + ); } @@ -441,11 +441,11 @@ export function UserFormModal({ isOpen, onClose, onSuccess, editingUser }: UserF return ( <> - - - - {isEditMode ? "사용자 정보 수정" : "사용자 등록"} - + + + + {isEditMode ? "사용자 정보 수정" : "사용자 등록"} +
{/* 기본 정보 */} @@ -684,8 +684,8 @@ export function UserFormModal({ isOpen, onClose, onSuccess, editingUser }: UserF {isLoading ? "처리중..." : isEditMode ? "수정" : "등록"}
-
-
+ + {/* 알림 모달 */} - - - + + + + 사용자 관리 이력 - +
{userName} ({userId})의 변경이력을 조회합니다.
-
+
{/* 로딩 상태 */} @@ -254,7 +254,7 @@ export function UserHistoryModal({ isOpen, onClose, userId, userName }: UserHist 닫기
-
- + + ); } diff --git a/frontend/components/admin/UserPasswordResetModal.tsx b/frontend/components/admin/UserPasswordResetModal.tsx index dc9fd206..086b1556 100644 --- a/frontend/components/admin/UserPasswordResetModal.tsx +++ b/frontend/components/admin/UserPasswordResetModal.tsx @@ -1,7 +1,7 @@ "use client"; import React, { useState, useCallback } from "react"; -import { ResizableDialog, ResizableDialogContent, ResizableDialogHeader, DialogTitle } from "@/components/ui/resizable-dialog"; +import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; @@ -127,11 +127,11 @@ export function UserPasswordResetModal({ isOpen, onClose, userId, userName, onSu if (!userId) return null; return ( - - - - 비밀번호 초기화 - + + + + 비밀번호 초기화 +
{/* 대상 사용자 정보 */} @@ -215,7 +215,7 @@ export function UserPasswordResetModal({ isOpen, onClose, userId, userName, onSu {isLoading ? "처리중..." : "초기화"}
-
+ {/* 알림 모달 */} -
+ ); } diff --git a/frontend/components/admin/dashboard/DashboardDesigner.tsx b/frontend/components/admin/dashboard/DashboardDesigner.tsx index 4c70419e..08296fd1 100644 --- a/frontend/components/admin/dashboard/DashboardDesigner.tsx +++ b/frontend/components/admin/dashboard/DashboardDesigner.tsx @@ -13,12 +13,12 @@ import { DashboardProvider } from "@/contexts/DashboardContext"; import { useMenu } from "@/contexts/MenuContext"; import { useKeyboardShortcuts } from "./hooks/useKeyboardShortcuts"; import { - ResizableDialog, - ResizableDialogContent, - ResizableDialogDescription, - ResizableDialogHeader, - ResizableDialogTitle, -} from "@/components/ui/resizable-dialog"; + Dialog, + DialogContent, + DialogDescription, + DialogHeader, + DialogTitle, +} from "@/components/ui/dialog"; import { AlertDialog, AlertDialogAction, @@ -639,23 +639,23 @@ export default function DashboardDesigner({ dashboardId: initialDashboardId }: D /> {/* 저장 성공 모달 */} - { setSuccessModalOpen(false); router.push("/admin/dashboard"); }} > - - + +
- 저장 완료 - + 저장 완료 + 대시보드가 성공적으로 저장되었습니다. - -
+ +
-
-
+ + {/* 초기화 확인 모달 */} diff --git a/frontend/components/admin/dashboard/DashboardSaveModal.tsx b/frontend/components/admin/dashboard/DashboardSaveModal.tsx index 2c9ff4d6..f99984e8 100644 --- a/frontend/components/admin/dashboard/DashboardSaveModal.tsx +++ b/frontend/components/admin/dashboard/DashboardSaveModal.tsx @@ -2,13 +2,13 @@ import { useState, useEffect } from "react"; import { - ResizableDialog, - ResizableDialogContent, - ResizableDialogHeader, - ResizableDialogTitle, - ResizableDialogDescription, - ResizableDialogFooter, -} from "@/components/ui/resizable-dialog"; + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogDescription, + DialogFooter, +} from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; @@ -174,11 +174,11 @@ export function DashboardSaveModal({ const flatMenus = flattenMenus(currentMenus); return ( - - - - {isEditing ? "대시보드 수정" : "대시보드 저장"} - + + + + {isEditing ? "대시보드 수정" : "대시보드 저장"} +
{/* 대시보드 이름 */} @@ -312,7 +312,7 @@ export function DashboardSaveModal({
- + @@ -329,8 +329,8 @@ export function DashboardSaveModal({ )} - -
-
+ + + ); } diff --git a/frontend/components/admin/dashboard/MenuAssignmentModal.tsx b/frontend/components/admin/dashboard/MenuAssignmentModal.tsx index 5e8869a9..a6f01c8b 100644 --- a/frontend/components/admin/dashboard/MenuAssignmentModal.tsx +++ b/frontend/components/admin/dashboard/MenuAssignmentModal.tsx @@ -2,13 +2,13 @@ import React, { useState, useEffect } from "react"; import { - ResizableDialog, - ResizableDialogContent, - ResizableDialogHeader, - ResizableDialogTitle, - ResizableDialogDescription, - ResizableDialogFooter, -} from "@/components/ui/resizable-dialog"; + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogDescription, + DialogFooter, +} from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Label } from "@/components/ui/label"; import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"; @@ -116,14 +116,14 @@ export const MenuAssignmentModal: React.FC = ({ }; return ( - - - + + +
- 대시보드 저장 완료 - '{dashboardTitle}' 대시보드가 저장되었습니다. + 대시보드 저장 완료 + '{dashboardTitle}' 대시보드가 저장되었습니다.
-
+
@@ -200,13 +200,13 @@ export const MenuAssignmentModal: React.FC = ({ )}
- + - - - + + + ); }; diff --git a/frontend/components/admin/dashboard/widgets/yard-3d/MaterialAddModal.tsx b/frontend/components/admin/dashboard/widgets/yard-3d/MaterialAddModal.tsx index b5831d27..3f64c2b2 100644 --- a/frontend/components/admin/dashboard/widgets/yard-3d/MaterialAddModal.tsx +++ b/frontend/components/admin/dashboard/widgets/yard-3d/MaterialAddModal.tsx @@ -3,13 +3,13 @@ import { useState } from "react"; import { Button } from "@/components/ui/button"; import { - ResizableDialog, - ResizableDialogContent, - ResizableDialogHeader, - ResizableDialogTitle, - ResizableDialogDescription, - ResizableDialogFooter, -} from "@/components/ui/resizable-dialog"; + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogDescription, + DialogFooter, +} from "@/components/ui/dialog"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Loader2 } from "lucide-react"; @@ -94,10 +94,10 @@ export default function MaterialAddModal({ isOpen, material, onClose, onAdd }: M if (!open) onClose(); }} > - - - 자재 배치 설정 - + + + 자재 배치 설정 +
{/* 자재 정보 */} @@ -233,7 +233,7 @@ export default function MaterialAddModal({ isOpen, material, onClose, onAdd }: M
- + @@ -247,8 +247,8 @@ export default function MaterialAddModal({ isOpen, material, onClose, onAdd }: M "배치" )} - -
-
+ + + ); } diff --git a/frontend/components/admin/dashboard/widgets/yard-3d/MaterialLibrary.tsx b/frontend/components/admin/dashboard/widgets/yard-3d/MaterialLibrary.tsx index 15b6db93..79909658 100644 --- a/frontend/components/admin/dashboard/widgets/yard-3d/MaterialLibrary.tsx +++ b/frontend/components/admin/dashboard/widgets/yard-3d/MaterialLibrary.tsx @@ -3,7 +3,7 @@ import { useState, useEffect } from "react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; -import { ResizableDialog, ResizableDialogContent, ResizableDialogHeader, DialogTitle, DialogFooter } from "@/components/ui/dialog"; +import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from "@/components/ui/dialog"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"; import { Search, Loader2 } from "lucide-react"; import { materialApi } from "@/lib/api/yardLayoutApi"; diff --git a/frontend/components/admin/dashboard/widgets/yard-3d/YardLayoutCreateModal.tsx b/frontend/components/admin/dashboard/widgets/yard-3d/YardLayoutCreateModal.tsx index e6c8a3b8..feac0f22 100644 --- a/frontend/components/admin/dashboard/widgets/yard-3d/YardLayoutCreateModal.tsx +++ b/frontend/components/admin/dashboard/widgets/yard-3d/YardLayoutCreateModal.tsx @@ -3,13 +3,13 @@ import { useState } from "react"; import { Button } from "@/components/ui/button"; import { - ResizableDialog, - ResizableDialogContent, - ResizableDialogHeader, - ResizableDialogTitle, - ResizableDialogDescription, - ResizableDialogFooter, -} from "@/components/ui/resizable-dialog"; + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogDescription, + DialogFooter, +} from "@/components/ui/dialog"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Alert, AlertDescription } from "@/components/ui/alert"; @@ -64,14 +64,14 @@ export default function YardLayoutCreateModal({ isOpen, onClose, onCreate }: Yar }; return ( - - e.stopPropagation()}> - + + e.stopPropagation()}> +
- 새로운 3D필드 생성 - 필드 이름을 입력하세요 + 새로운 3D필드 생성 + 필드 이름을 입력하세요
-
+
@@ -100,7 +100,7 @@ export default function YardLayoutCreateModal({ isOpen, onClose, onCreate }: Yar )}
- + @@ -114,8 +114,8 @@ export default function YardLayoutCreateModal({ isOpen, onClose, onCreate }: Yar "생성" )} - - - + + + ); } diff --git a/frontend/components/common/BarcodeScanModal.tsx b/frontend/components/common/BarcodeScanModal.tsx index 7c615941..34706b8c 100644 --- a/frontend/components/common/BarcodeScanModal.tsx +++ b/frontend/components/common/BarcodeScanModal.tsx @@ -2,13 +2,13 @@ import React, { useState, useRef, useEffect } from "react"; import { - ResizableDialog, - ResizableDialogContent, - ResizableDialogHeader, - ResizableDialogTitle, - ResizableDialogDescription, - ResizableDialogFooter, -} from "@/components/ui/resizable-dialog"; + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogDescription, + DialogFooter, +} from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { toast } from "sonner"; import { Camera, CameraOff, CheckCircle2, AlertCircle, Scan } from "lucide-react"; @@ -179,26 +179,15 @@ export const BarcodeScanModal: React.FC = ({ }; return ( - - - - 바코드 스캔 - + + + + 바코드 스캔 + 카메라로 바코드를 스캔하세요. {targetField && ` (대상 필드: ${targetField})`} - 모달 테두리를 드래그하여 크기를 조절할 수 있습니다. - - + +
{/* 카메라 권한 요청 대기 중 */} @@ -337,7 +326,7 @@ export const BarcodeScanModal: React.FC = ({ )}
- + )} - -
-
+ + + ); }; diff --git a/frontend/components/common/ExcelUploadModal.tsx b/frontend/components/common/ExcelUploadModal.tsx index c5a25a65..0f080bcc 100644 --- a/frontend/components/common/ExcelUploadModal.tsx +++ b/frontend/components/common/ExcelUploadModal.tsx @@ -2,13 +2,13 @@ import React, { useState, useRef, useEffect } from "react"; import { - ResizableDialog, - ResizableDialogContent, - ResizableDialogHeader, - ResizableDialogTitle, - ResizableDialogDescription, - ResizableDialogFooter, -} from "@/components/ui/resizable-dialog"; + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogDescription, + DialogFooter, +} from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Label } from "@/components/ui/label"; import { @@ -385,27 +385,27 @@ export const ExcelUploadModal: React.FC = ({ }, [open]); return ( - - + - - + + 엑셀 데이터 업로드 - - + + 엑셀 파일을 선택하고 컬럼을 매핑하여 데이터를 업로드하세요. 모달 테두리를 드래그하여 크기를 조절할 수 있습니다. - - + + {/* 스텝 인디케이터 */}
@@ -863,7 +863,7 @@ export const ExcelUploadModal: React.FC = ({ )}
- + )} - -
-
+ + + ); }; diff --git a/frontend/components/common/ScreenModal.tsx b/frontend/components/common/ScreenModal.tsx index a048bbe4..4da781e6 100644 --- a/frontend/components/common/ScreenModal.tsx +++ b/frontend/components/common/ScreenModal.tsx @@ -2,12 +2,12 @@ import React, { useState, useEffect, useRef } from "react"; import { - ResizableDialog, - ResizableDialogContent, - ResizableDialogHeader, - ResizableDialogTitle, - ResizableDialogDescription, -} from "@/components/ui/resizable-dialog"; + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogDescription, +} from "@/components/ui/dialog"; import { Checkbox } from "@/components/ui/checkbox"; import { Label } from "@/components/ui/label"; import { InteractiveScreenViewerDynamic } from "@/components/screen/InteractiveScreenViewerDynamic"; @@ -514,16 +514,18 @@ export const ScreenModal: React.FC = ({ className }) => { } // 화면관리에서 설정한 크기 = 컨텐츠 영역 크기 - // 실제 모달 크기 = 컨텐츠 + 헤더 + 연속등록 체크박스 - const headerHeight = 60; // DialogHeader (타이틀 + 패딩) + // 실제 모달 크기 = 컨텐츠 + 헤더 + 연속등록 체크박스 + gap + padding + const headerHeight = 52; // DialogHeader (타이틀 + border-b + py-3) const footerHeight = 52; // 연속 등록 모드 체크박스 영역 + const dialogGap = 16; // DialogContent gap-4 + const extraPadding = 24; // 추가 여백 (안전 마진) - const totalHeight = screenDimensions.height + headerHeight + footerHeight; + const totalHeight = screenDimensions.height + headerHeight + footerHeight + dialogGap + extraPadding; return { className: "overflow-hidden p-0", style: { - width: `${Math.min(screenDimensions.width, window.innerWidth * 0.98)}px`, + width: `${Math.min(screenDimensions.width + 48, window.innerWidth * 0.98)}px`, // 좌우 패딩 추가 height: `${Math.min(totalHeight, window.innerHeight * 0.95)}px`, maxWidth: "98vw", maxHeight: "95vh", @@ -593,36 +595,28 @@ export const ScreenModal: React.FC = ({ className }) => { ]); return ( - - + - +
- {modalState.title} + {modalState.title} {modalState.description && !loading && ( - + {modalState.description} - + )} {loading && ( - + {loading ? "화면을 불러오는 중입니다..." : ""} - + )}
-
+ -
+
{loading ? (
@@ -728,8 +722,8 @@ export const ScreenModal: React.FC = ({ className }) => {
- - + + ); }; diff --git a/frontend/components/common/TableHistoryModal.tsx b/frontend/components/common/TableHistoryModal.tsx index 033c18ac..f2970b4f 100644 --- a/frontend/components/common/TableHistoryModal.tsx +++ b/frontend/components/common/TableHistoryModal.tsx @@ -7,12 +7,12 @@ import React, { useEffect, useState } from "react"; import { - ResizableDialog, - ResizableDialogContent, - ResizableDialogHeader, - ResizableDialogTitle, - ResizableDialogDescription, -} from "@/components/ui/resizable-dialog"; + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogDescription, +} from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; @@ -209,7 +209,7 @@ export function TableHistoryModal({ - + 변경 이력{" "} {!recordId && ( @@ -217,12 +217,12 @@ export function TableHistoryModal({ 전체 )} - - + + {recordId ? `${recordDisplayValue || recordLabel || "-"} - ${tableName} 테이블` : `${tableName} 테이블 전체 이력`} - + {loading ? ( diff --git a/frontend/components/common/TableOptionsModal.tsx b/frontend/components/common/TableOptionsModal.tsx index f19a1a07..64b2b02d 100644 --- a/frontend/components/common/TableOptionsModal.tsx +++ b/frontend/components/common/TableOptionsModal.tsx @@ -2,13 +2,13 @@ import React, { useState, useEffect } from "react"; import { - ResizableDialog, - ResizableDialogContent, - ResizableDialogHeader, - ResizableDialogTitle, - ResizableDialogDescription, - ResizableDialogFooter, -} from "@/components/ui/resizable-dialog"; + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogDescription, + DialogFooter, +} from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Label } from "@/components/ui/label"; import { Switch } from "@/components/ui/switch"; @@ -150,23 +150,14 @@ export function TableOptionsModal({ }; return ( - - - - 테이블 옵션 - - 컬럼 표시/숨기기, 순서 변경, 틀고정 등을 설정할 수 있습니다. 모달 테두리를 드래그하여 크기를 조절할 수 있습니다. - - + + + + 테이블 옵션 + + 컬럼 표시/숨기기, 순서 변경, 틀고정 등을 설정할 수 있습니다. + + @@ -303,7 +294,7 @@ export function TableOptionsModal({ - + - - - + + + ); } diff --git a/frontend/components/dataflow/ConnectionSetupModal.tsx b/frontend/components/dataflow/ConnectionSetupModal.tsx index 450509ee..9b6482a4 100644 --- a/frontend/components/dataflow/ConnectionSetupModal.tsx +++ b/frontend/components/dataflow/ConnectionSetupModal.tsx @@ -2,13 +2,13 @@ import React, { useState, useEffect, useCallback } from "react"; import { - ResizableDialog, - ResizableDialogContent, - ResizableDialogHeader, - ResizableDialogTitle, - ResizableDialogDescription, - ResizableDialogFooter, -} from "@/components/ui/resizable-dialog"; + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogDescription, + DialogFooter, +} from "@/components/ui/dialog"; import { AlertDialog, AlertDialogAction, @@ -673,14 +673,14 @@ export const ConnectionSetupModal: React.FC = ({ return ( <> - - - - + + + + 필드 연결 설정 - - + +
{/* 기본 연결 설정 */} @@ -719,16 +719,16 @@ export const ConnectionSetupModal: React.FC = ({ {renderConnectionTypeSettings()}
- + - -
-
+ + + diff --git a/frontend/components/dataflow/SaveDiagramModal.tsx b/frontend/components/dataflow/SaveDiagramModal.tsx index 70a12e39..af7f004f 100644 --- a/frontend/components/dataflow/SaveDiagramModal.tsx +++ b/frontend/components/dataflow/SaveDiagramModal.tsx @@ -2,13 +2,13 @@ import React, { useState, useEffect } from "react"; import { - ResizableDialog, - ResizableDialogContent, - ResizableDialogHeader, - ResizableDialogTitle, - ResizableDialogDescription, - ResizableDialogFooter, -} from "@/components/ui/resizable-dialog"; + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogDescription, + DialogFooter, +} from "@/components/ui/dialog"; import { AlertDialog, AlertDialogAction, @@ -133,11 +133,11 @@ const SaveDiagramModal: React.FC = ({ return ( <> - - - - 📊 관계도 저장 - + + + + 📊 관계도 저장 +
{/* 관계도 이름 입력 */} @@ -203,7 +203,7 @@ const SaveDiagramModal: React.FC = ({ 관계 목록 -
+
{relationships.map((relationship, index) => (
= ({ )}
- + @@ -260,9 +260,9 @@ const SaveDiagramModal: React.FC = ({ "저장하기" )} - - - + + +
{/* 저장 성공 알림 모달 */} diff --git a/frontend/components/dataflow/node-editor/dialogs/LoadFlowDialog.tsx b/frontend/components/dataflow/node-editor/dialogs/LoadFlowDialog.tsx index 7cdd28fd..d5cc9b18 100644 --- a/frontend/components/dataflow/node-editor/dialogs/LoadFlowDialog.tsx +++ b/frontend/components/dataflow/node-editor/dialogs/LoadFlowDialog.tsx @@ -6,7 +6,7 @@ import { useEffect, useState } from "react"; import { Loader2, FileJson, Calendar, Trash2 } from "lucide-react"; -import { ResizableDialog, ResizableDialogContent, ResizableDialogDescription, ResizableDialogHeader, DialogTitle } from "@/components/ui/dialog"; +import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { ScrollArea } from "@/components/ui/scroll-area"; import { getNodeFlows, deleteNodeFlow } from "@/lib/api/nodeFlows"; diff --git a/frontend/components/flow/FlowDataListModal.tsx b/frontend/components/flow/FlowDataListModal.tsx index 61264ffb..352860e5 100644 --- a/frontend/components/flow/FlowDataListModal.tsx +++ b/frontend/components/flow/FlowDataListModal.tsx @@ -1,7 +1,7 @@ "use client"; import React, { useEffect, useState } from "react"; -import { ResizableDialog, ResizableDialogContent, ResizableDialogHeader, DialogDescription } from "@/components/ui/resizable-dialog"; +import { Dialog, DialogContent, DialogHeader, DialogDescription } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { Table, TableHeader, TableRow, TableHead, TableBody, TableCell } from "@/components/ui/table"; @@ -130,11 +130,11 @@ export function FlowDataListModal({ - + {stepName} {data.length}건 - - 이 단계에 해당하는 데이터 목록입니다 + + 이 단계에 해당하는 데이터 목록입니다
diff --git a/frontend/components/layout/ProfileModal.tsx b/frontend/components/layout/ProfileModal.tsx index e79d3357..ad23acb4 100644 --- a/frontend/components/layout/ProfileModal.tsx +++ b/frontend/components/layout/ProfileModal.tsx @@ -1,11 +1,11 @@ import { - ResizableDialog, - ResizableDialogContent, - ResizableDialogHeader, - ResizableDialogTitle, - ResizableDialogDescription, - ResizableDialogFooter, -} from "@/components/ui/resizable-dialog"; + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogDescription, + DialogFooter, +} from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; @@ -48,11 +48,11 @@ function AlertModal({ isOpen, onClose, title, message, type = "info" }: AlertMod }; return ( - - - - {title} - + + + + {title} +

{message}

@@ -61,8 +61,8 @@ function AlertModal({ isOpen, onClose, title, message, type = "info" }: AlertMod 확인
-
-
+ + ); } @@ -165,11 +165,11 @@ export function ProfileModal({ }; return ( <> - - - - 프로필 수정 - + + + + 프로필 수정 +
{/* 프로필 사진 섹션 */} @@ -449,16 +449,16 @@ export function ProfileModal({ )}
- + - -
-
+ + + {/* 알림 모달 */} - - - 새 차량 등록 - + + + + 새 차량 등록 + 새로운 차량 정보를 입력해주세요. - - + +
@@ -501,16 +501,16 @@ export function ProfileModal({
- + - -
- + + + )} ); diff --git a/frontend/components/mail/MailDetailModal.tsx b/frontend/components/mail/MailDetailModal.tsx index e945bbd9..0a25c2a3 100644 --- a/frontend/components/mail/MailDetailModal.tsx +++ b/frontend/components/mail/MailDetailModal.tsx @@ -6,7 +6,7 @@ import { DialogContent, DialogHeader, -} from "@/components/ui/resizable-dialog"; +} from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { @@ -186,13 +186,13 @@ export default function MailDetailModal({ }; return ( - - - - + + + + 메일 상세 - - + + {loading ? (
@@ -375,8 +375,8 @@ export default function MailDetailModal({
) : null} - - + + ); } diff --git a/frontend/components/multilang/LangKeyModal.tsx b/frontend/components/multilang/LangKeyModal.tsx index c25164f5..06189c58 100644 --- a/frontend/components/multilang/LangKeyModal.tsx +++ b/frontend/components/multilang/LangKeyModal.tsx @@ -1,7 +1,7 @@ "use client"; import { useState, useEffect } from "react"; -import { ResizableDialog, ResizableDialogContent, ResizableDialogHeader, DialogTitle } from "@/components/ui/resizable-dialog"; +import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; @@ -141,9 +141,9 @@ export function LangKeyModal({ return ( - + - {langKey ? "다국어 키 수정" : "새 다국어 키 추가"} + {langKey ? "다국어 키 수정" : "새 다국어 키 추가"}
diff --git a/frontend/components/order/OrderRegistrationModal.tsx b/frontend/components/order/OrderRegistrationModal.tsx index 615f0426..e47e124f 100644 --- a/frontend/components/order/OrderRegistrationModal.tsx +++ b/frontend/components/order/OrderRegistrationModal.tsx @@ -210,7 +210,7 @@ export function OrderRegistrationModal({ return ( - + 수주 등록 diff --git a/frontend/components/report/ReportCreateModal.tsx b/frontend/components/report/ReportCreateModal.tsx index ef2a325d..c51dd982 100644 --- a/frontend/components/report/ReportCreateModal.tsx +++ b/frontend/components/report/ReportCreateModal.tsx @@ -4,11 +4,10 @@ import { useState, useEffect } from "react"; import { Dialog, DialogContent, - - DialogHeader, - -} from "@/components/ui/resizable-dialog"; + DialogTitle, + DialogFooter, +} from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; @@ -120,8 +119,8 @@ export function ReportCreateModal({ isOpen, onClose, onSuccess }: ReportCreateMo - 새 리포트 생성 - 새로운 리포트를 생성합니다. 필수 항목을 입력해주세요. + 새 리포트 생성 + 새로운 리포트를 생성합니다. 필수 항목을 입력해주세요.
@@ -207,7 +206,7 @@ export function ReportCreateModal({ isOpen, onClose, onSuccess }: ReportCreateMo
- + @@ -221,7 +220,7 @@ export function ReportCreateModal({ isOpen, onClose, onSuccess }: ReportCreateMo "생성" )} - +
); diff --git a/frontend/components/screen/CopyScreenModal.tsx b/frontend/components/screen/CopyScreenModal.tsx index 75493e4f..c37603c5 100644 --- a/frontend/components/screen/CopyScreenModal.tsx +++ b/frontend/components/screen/CopyScreenModal.tsx @@ -424,7 +424,7 @@ export default function CopyScreenModal({ return ( - + diff --git a/frontend/components/screen/CreateScreenModal.tsx b/frontend/components/screen/CreateScreenModal.tsx index 4f0e5eb9..fc39140d 100644 --- a/frontend/components/screen/CreateScreenModal.tsx +++ b/frontend/components/screen/CreateScreenModal.tsx @@ -2,12 +2,12 @@ import { useEffect, useMemo, useState, useRef } from "react"; import { - ResizableDialog, - ResizableDialogContent, - ResizableDialogHeader, - ResizableDialogTitle, - ResizableDialogFooter, -} from "@/components/ui/resizable-dialog"; + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogFooter, +} from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; @@ -271,21 +271,11 @@ export default function CreateScreenModal({ open, onOpenChange, onCreated }: Cre }; return ( - - - - 새 화면 생성 - + + + + 새 화면 생성 +
@@ -603,15 +593,15 @@ export default function CreateScreenModal({ open, onOpenChange, onCreated }: Cre )}
- + - - - + + +
); } diff --git a/frontend/components/screen/EditModal.tsx b/frontend/components/screen/EditModal.tsx index 024f7ac7..2a3050fc 100644 --- a/frontend/components/screen/EditModal.tsx +++ b/frontend/components/screen/EditModal.tsx @@ -2,13 +2,13 @@ import React, { useState, useEffect } from "react"; import { - ResizableDialog, - ResizableDialogContent, - ResizableDialogHeader, - ResizableDialogTitle, - ResizableDialogDescription, - ResizableDialogFooter, -} from "@/components/ui/resizable-dialog"; + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogDescription, + DialogFooter, +} from "@/components/ui/dialog"; import { InteractiveScreenViewerDynamic } from "@/components/screen/InteractiveScreenViewerDynamic"; import { screenApi } from "@/lib/api/screen"; import { ComponentData } from "@/types/screen"; @@ -678,14 +678,17 @@ export const EditModal: React.FC = ({ className }) => { } // 화면관리에서 설정한 크기 = 컨텐츠 영역 크기 - // 실제 모달 크기 = 컨텐츠 + 헤더 - const headerHeight = 60; // DialogHeader - const totalHeight = screenDimensions.height + headerHeight; + // 실제 모달 크기 = 컨텐츠 + 헤더 + gap + padding + const headerHeight = 52; // DialogHeader (타이틀 + border-b + py-3) + const dialogGap = 16; // DialogContent gap-4 + const extraPadding = 24; // 추가 여백 (안전 마진) + + const totalHeight = screenDimensions.height + headerHeight + dialogGap + extraPadding; return { className: "overflow-hidden p-0", style: { - width: `${Math.min(screenDimensions.width, window.innerWidth * 0.98)}px`, + width: `${Math.min(screenDimensions.width + 48, window.innerWidth * 0.98)}px`, // 좌우 패딩 추가 height: `${Math.min(totalHeight, window.innerHeight * 0.95)}px`, maxWidth: "98vw", maxHeight: "95vh", @@ -696,32 +699,24 @@ export const EditModal: React.FC = ({ className }) => { const modalStyle = getModalStyle(); return ( - - + - +
- {modalState.title || "데이터 수정"} + {modalState.title || "데이터 수정"} {modalState.description && !loading && ( - {modalState.description} + {modalState.description} )} {loading && ( - {loading ? "화면을 불러오는 중입니다..." : ""} + {loading ? "화면을 불러오는 중입니다..." : ""} )}
-
+
-
+
{loading ? (
@@ -812,8 +807,8 @@ export const EditModal: React.FC = ({ className }) => {
)}
- - + +
); }; diff --git a/frontend/components/screen/FileAttachmentDetailModal.tsx b/frontend/components/screen/FileAttachmentDetailModal.tsx index 77015589..835f8940 100644 --- a/frontend/components/screen/FileAttachmentDetailModal.tsx +++ b/frontend/components/screen/FileAttachmentDetailModal.tsx @@ -1,7 +1,7 @@ "use client"; import React, { useState, useCallback, useEffect } from "react"; -import { ResizableDialog, ResizableDialogContent, ResizableDialogHeader, DialogTitle } from "@/components/ui/resizable-dialog"; +import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; @@ -352,9 +352,9 @@ export const FileAttachmentDetailModal: React.FC
- + 파일 첨부 관리 - {component.label || component.id} - + diff --git a/frontend/components/screen/InteractiveDataTable.tsx b/frontend/components/screen/InteractiveDataTable.tsx index 88d11447..b681aa35 100644 --- a/frontend/components/screen/InteractiveDataTable.tsx +++ b/frontend/components/screen/InteractiveDataTable.tsx @@ -2471,7 +2471,7 @@ export const InteractiveDataTable: React.FC = ({ {/* 기존 데이터 추가 모달 (제거 예정 - SaveModal로 대체됨) */} {}}> - + {component.addModalConfig?.title || "새 데이터 추가"} @@ -2517,7 +2517,7 @@ export const InteractiveDataTable: React.FC = ({ {/* 기존 데이터 수정 모달 (제거 예정 - SaveModal로 대체됨) */} {}}> - + 데이터 수정 선택된 데이터를 수정합니다. @@ -2773,7 +2773,7 @@ export const InteractiveDataTable: React.FC = ({ {/* 파일 관리 모달 */} - + diff --git a/frontend/components/screen/InteractiveScreenViewer.tsx b/frontend/components/screen/InteractiveScreenViewer.tsx index 8e1f1ce3..d9186999 100644 --- a/frontend/components/screen/InteractiveScreenViewer.tsx +++ b/frontend/components/screen/InteractiveScreenViewer.tsx @@ -8,7 +8,7 @@ import { Checkbox } from "@/components/ui/checkbox"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { Calendar } from "@/components/ui/calendar"; import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover"; -import { Dialog, DialogContent, DialogHeader, DialogTitle, ResizableDialog, ResizableDialogContent, ResizableDialogHeader } from "@/components/ui/dialog"; +import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@/components/ui/dialog"; import { CalendarIcon, File, Upload, X } from "lucide-react"; import { format } from "date-fns"; import { ko } from "date-fns/locale"; diff --git a/frontend/components/screen/InteractiveScreenViewerDynamic.tsx b/frontend/components/screen/InteractiveScreenViewerDynamic.tsx index 3c9d16f5..41983df3 100644 --- a/frontend/components/screen/InteractiveScreenViewerDynamic.tsx +++ b/frontend/components/screen/InteractiveScreenViewerDynamic.tsx @@ -3,8 +3,7 @@ import React, { useState, useCallback, useEffect } from "react"; import { Input } from "@/components/ui/input"; import { Button } from "@/components/ui/button"; -import { ResizableDialog, ResizableDialogContent, ResizableDialogHeader } from "@/components/ui/resizable-dialog"; -import { DialogTitle, DialogHeader } from "@/components/ui/dialog"; +import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@/components/ui/dialog"; import { useAuth } from "@/hooks/useAuth"; import { uploadFilesAndCreateData } from "@/lib/api/file"; import { toast } from "sonner"; @@ -776,17 +775,15 @@ export const InteractiveScreenViewerDynamic: React.FC setPopupScreen(null)}> - setPopupScreen(null)}> + {popupScreen.title} @@ -820,8 +817,8 @@ export const InteractiveScreenViewerDynamic: React.FC )} - - + + )} ); diff --git a/frontend/components/screen/MenuAssignmentModal.tsx b/frontend/components/screen/MenuAssignmentModal.tsx index 6fd586a8..fddf0bcc 100644 --- a/frontend/components/screen/MenuAssignmentModal.tsx +++ b/frontend/components/screen/MenuAssignmentModal.tsx @@ -2,13 +2,13 @@ import React, { useState, useEffect, useRef } from "react"; import { - ResizableDialog, - ResizableDialogContent, - ResizableDialogHeader, - ResizableDialogTitle, - ResizableDialogDescription, - ResizableDialogFooter, -} from "@/components/ui/resizable-dialog"; + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogDescription, + DialogFooter, +} from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; @@ -345,26 +345,26 @@ export const MenuAssignmentModal: React.FC = ({ return ( <> - - + + {assignmentSuccess ? ( // 성공 화면 <> - - + +
{assignmentMessage.includes("나중에") ? "화면 저장 완료" : "화면 할당 완료"} -
- + + {assignmentMessage.includes("나중에") ? "화면이 성공적으로 저장되었습니다. 나중에 메뉴에 할당할 수 있습니다." : "화면이 성공적으로 메뉴에 할당되었습니다."} - -
+
+
@@ -386,7 +386,7 @@ export const MenuAssignmentModal: React.FC = ({
- + - + ) : ( // 기본 할당 화면 <> - - + + 메뉴에 화면 할당 - - + + 저장된 화면을 메뉴에 할당하여 사용자가 접근할 수 있도록 설정합니다. - + {screenInfo && (
@@ -432,7 +432,7 @@ export const MenuAssignmentModal: React.FC = ({ {screenInfo.description &&

{screenInfo.description}

}
)} - +
{/* 메뉴 선택 (검색 기능 포함) */} @@ -550,7 +550,7 @@ export const MenuAssignmentModal: React.FC = ({ )}
- + - + )} - - + +
{/* 화면 교체 확인 대화상자 */} - - - - + + + + 화면 교체 확인 - - 선택한 메뉴에 이미 할당된 화면이 있습니다. - + + 선택한 메뉴에 이미 할당된 화면이 있습니다. +
{/* 기존 화면 목록 */} @@ -628,7 +628,7 @@ export const MenuAssignmentModal: React.FC = ({
- + @@ -652,9 +652,9 @@ export const MenuAssignmentModal: React.FC = ({ )} - - - + +
+ ); }; diff --git a/frontend/components/screen/ResponsivePreviewModal.tsx b/frontend/components/screen/ResponsivePreviewModal.tsx index 3b121e58..1e05a86b 100644 --- a/frontend/components/screen/ResponsivePreviewModal.tsx +++ b/frontend/components/screen/ResponsivePreviewModal.tsx @@ -1,7 +1,7 @@ "use client"; import React, { useState, createContext, useContext } from "react"; -import { ResizableDialog, ResizableDialogContent, ResizableDialogHeader, DialogTitle } from "@/components/ui/resizable-dialog"; +import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Monitor, Tablet, Smartphone } from "lucide-react"; import { ComponentData } from "@/types/screen"; @@ -76,7 +76,7 @@ export const ResponsivePreviewModal: React.FC = ({ - 반응형 미리보기 + 반응형 미리보기 {/* 디바이스 선택 버튼들 */}
diff --git a/frontend/components/screen/SaveModal.tsx b/frontend/components/screen/SaveModal.tsx index bf8ee9ce..4e158719 100644 --- a/frontend/components/screen/SaveModal.tsx +++ b/frontend/components/screen/SaveModal.tsx @@ -1,7 +1,7 @@ "use client"; import React, { useState, useEffect } from "react"; -import { ResizableDialog, ResizableDialogContent, ResizableDialogHeader, ResizableDialogTitle } from "@/components/ui/resizable-dialog"; +import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { X, Save, Loader2 } from "lucide-react"; import { toast } from "sonner"; @@ -232,22 +232,19 @@ export const SaveModal: React.FC = ({ const dynamicSize = calculateDynamicSize(); return ( - !isSaving && !open && onClose()}> - !isSaving && !open && onClose()}> + - +
- {initialData ? "데이터 수정" : "데이터 등록"} + {initialData ? "데이터 수정" : "데이터 등록"}
-
+
{loading ? ( @@ -376,7 +373,7 @@ export const SaveModal: React.FC = ({
화면에 컴포넌트가 없습니다.
)}
-
-
+ +
); }; diff --git a/frontend/components/screen/templates/DataTableTemplate.tsx b/frontend/components/screen/templates/DataTableTemplate.tsx index d83d2fc1..b24f27c3 100644 --- a/frontend/components/screen/templates/DataTableTemplate.tsx +++ b/frontend/components/screen/templates/DataTableTemplate.tsx @@ -8,7 +8,7 @@ import { Input } from "@/components/ui/input"; import { Badge } from "@/components/ui/badge"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { Checkbox } from "@/components/ui/checkbox"; -import { ResizableDialog, ResizableDialogContent, ResizableDialogDescription, DialogFooter, ResizableDialogHeader, DialogTitle } from "@/components/ui/dialog"; +import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from "@/components/ui/dialog"; import { toast } from "sonner"; import { useAuth } from "@/hooks/useAuth"; diff --git a/frontend/components/ui/dialog.tsx b/frontend/components/ui/dialog.tsx index 4256e329..5552ade5 100644 --- a/frontend/components/ui/dialog.tsx +++ b/frontend/components/ui/dialog.tsx @@ -38,7 +38,7 @@ const DialogContent = React.forwardRef< ) => ( -
+
); DialogHeader.displayName = "DialogHeader"; const DialogFooter = ({ className, ...props }: React.HTMLAttributes) => ( -
+
); DialogFooter.displayName = "DialogFooter"; diff --git a/frontend/components/ui/resizable-dialog.tsx b/frontend/components/ui/resizable-dialog.tsx deleted file mode 100644 index 54d18ed7..00000000 --- a/frontend/components/ui/resizable-dialog.tsx +++ /dev/null @@ -1,601 +0,0 @@ -"use client"; - -import * as React from "react"; -import * as DialogPrimitive from "@radix-ui/react-dialog"; -import { X } from "lucide-react"; -import { cn } from "@/lib/utils"; - -// 🆕 Context를 사용하여 open 상태 공유 -const ResizableDialogContext = React.createContext<{ open: boolean }>({ open: false }); - -// 🆕 ResizableDialog를 래핑하여 Context 제공 -const ResizableDialog: React.FC> = ({ - children, - open = false, - ...props -}) => { - return ( - - - {children} - - - ); -}; - -const ResizableDialogTrigger = DialogPrimitive.Trigger; - -const ResizableDialogPortal = DialogPrimitive.Portal; - -const ResizableDialogClose = DialogPrimitive.Close; - -const ResizableDialogOverlay = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -ResizableDialogOverlay.displayName = DialogPrimitive.Overlay.displayName; - -interface ResizableDialogContentProps - extends React.ComponentPropsWithoutRef { - minWidth?: number; - minHeight?: number; - maxWidth?: number; - maxHeight?: number; - defaultWidth?: number; - defaultHeight?: number; - modalId?: string; // localStorage 저장용 고유 ID - userId?: string; // 사용자별 저장용 - open?: boolean; // 🆕 모달 열림/닫힘 상태 (외부에서 전달) - disableFlexLayout?: boolean; // 🆕 flex 레이아웃 비활성화 (absolute 레이아웃용) -} - -const ResizableDialogContent = React.forwardRef< - React.ElementRef, - ResizableDialogContentProps ->( - ( - { - className, - children, - minWidth = 400, - minHeight = 300, - maxWidth = 1600, - maxHeight = 1200, - defaultWidth = 600, - defaultHeight = 500, - modalId, - userId = "guest", - open: externalOpen, // 🆕 외부에서 전달받은 open 상태 - disableFlexLayout = false, // 🆕 flex 레이아웃 비활성화 - style: userStyle, - ...props - }, - ref - ) => { - const contentRef = React.useRef(null); - - // 고정된 ID 생성 (한번 생성되면 컴포넌트 생명주기 동안 유지) - const stableIdRef = React.useRef(null); - - if (!stableIdRef.current) { - if (modalId) { - stableIdRef.current = modalId; - // // console.log("✅ ResizableDialog - 명시적 modalId 사용:", modalId); - } else { - // className 기반 ID 생성 - if (className) { - const hash = className.split('').reduce((acc, char) => { - return ((acc << 5) - acc) + char.charCodeAt(0); - }, 0); - stableIdRef.current = `modal-${Math.abs(hash).toString(36)}`; - // console.log("🔄 ResizableDialog - className 기반 ID 생성:", { className, generatedId: stableIdRef.current }); - } else if (userStyle) { - // userStyle 기반 ID 생성 - const styleStr = JSON.stringify(userStyle); - const hash = styleStr.split('').reduce((acc, char) => { - return ((acc << 5) - acc) + char.charCodeAt(0); - }, 0); - stableIdRef.current = `modal-${Math.abs(hash).toString(36)}`; - // console.log("🔄 ResizableDialog - userStyle 기반 ID 생성:", { userStyle, generatedId: stableIdRef.current }); - } else { - // 기본 ID - stableIdRef.current = 'modal-default'; - // console.log("⚠️ ResizableDialog - 기본 ID 사용 (모든 모달이 같은 크기 공유)"); - } - } - } - - const effectiveModalId = stableIdRef.current; - - // 실제 렌더링된 크기를 감지하여 초기 크기로 사용 - const getInitialSize = React.useCallback(() => { - if (typeof window === 'undefined') return { width: defaultWidth, height: defaultHeight }; - - // 1순위: userStyle에서 크기 추출 (화면관리에서 지정한 크기 - 항상 초기값으로 사용) - if (userStyle) { - const styleWidth = typeof userStyle.width === 'string' - ? parseInt(userStyle.width) - : userStyle.width; - const styleHeight = typeof userStyle.height === 'string' - ? parseInt(userStyle.height) - : userStyle.height; - - if (styleWidth && styleHeight) { - const finalSize = { - width: Math.max(minWidth, Math.min(maxWidth, styleWidth)), - height: Math.max(minHeight, Math.min(maxHeight, styleHeight)), - }; - return finalSize; - } - } - - // 2순위: 현재 렌더링된 크기 사용 (주석처리 - 모달이 열린 후 늘어나는 현상 방지) - // if (contentRef.current) { - // const rect = contentRef.current.getBoundingClientRect(); - // if (rect.width > 0 && rect.height > 0) { - // return { - // width: Math.max(minWidth, Math.min(maxWidth, rect.width)), - // height: Math.max(minHeight, Math.min(maxHeight, rect.height)), - // }; - // } - // } - - // 3순위: defaultWidth/defaultHeight 사용 - return { width: defaultWidth, height: defaultHeight }; - }, [defaultWidth, defaultHeight, minWidth, minHeight, maxWidth, maxHeight, userStyle]); - - const [size, setSize] = React.useState(getInitialSize); - const [isResizing, setIsResizing] = React.useState(false); - const [resizeDirection, setResizeDirection] = React.useState(""); - const [isInitialized, setIsInitialized] = React.useState(false); - - // userStyle이 변경되면 크기 업데이트 (화면 데이터 로딩 완료 시) - React.useEffect(() => { - // 1. localStorage에서 사용자가 리사이징한 크기 확인 - let savedSize: { width: number; height: number; userResized: boolean } | null = null; - - if (effectiveModalId && typeof window !== 'undefined') { - try { - const storageKey = `modal_size_${effectiveModalId}_${userId}`; - const saved = localStorage.getItem(storageKey); - - if (saved) { - const parsed = JSON.parse(saved); - if (parsed.userResized) { - savedSize = { - width: Math.max(minWidth, Math.min(maxWidth, parsed.width)), - height: Math.max(minHeight, Math.min(maxHeight, parsed.height)), - userResized: true, - }; - // console.log("💾 사용자가 리사이징한 크기 복원:", savedSize); - } - } - } catch (error) { - console.error("❌ 모달 크기 복원 실패:", error); - } - } - - // 2. 우선순위: 사용자 리사이징 > userStyle > 기본값 - if (savedSize && savedSize.userResized) { - // 사용자가 리사이징한 크기 우선 - setSize({ width: savedSize.width, height: savedSize.height }); - setUserResized(true); - } else if (userStyle && userStyle.width && userStyle.height) { - // 화면관리에서 설정한 크기 - const styleWidth = typeof userStyle.width === 'string' - ? parseInt(userStyle.width) - : userStyle.width; - const styleHeight = typeof userStyle.height === 'string' - ? parseInt(userStyle.height) - : userStyle.height; - - if (styleWidth && styleHeight) { - const newSize = { - width: Math.max(minWidth, Math.min(maxWidth, styleWidth)), - height: Math.max(minHeight, Math.min(maxHeight, styleHeight)), - }; - setSize(newSize); - } - } - }, [userStyle, minWidth, maxWidth, minHeight, maxHeight, effectiveModalId, userId]); - const [lastModalId, setLastModalId] = React.useState(null); - const [userResized, setUserResized] = React.useState(false); // 사용자가 실제로 리사이징했는지 추적 - - // 🆕 Context에서 open 상태 가져오기 (우선순위: externalOpen > context.open) - const context = React.useContext(ResizableDialogContext); - const actualOpen = externalOpen !== undefined ? externalOpen : context.open; - - // 🆕 모달이 닫혔다가 다시 열릴 때 초기화 리셋 - const [wasOpen, setWasOpen] = React.useState(false); - - React.useEffect(() => { - // console.log("🔍 모달 상태 변화 감지:", { actualOpen, wasOpen, externalOpen, contextOpen: context.open, effectiveModalId }); - - if (actualOpen && !wasOpen) { - // 모달이 방금 열림 - // console.log("🔓 모달 열림 감지, 초기화 리셋:", { effectiveModalId }); - setIsInitialized(false); - setWasOpen(true); - } else if (!actualOpen && wasOpen) { - // 모달이 방금 닫힘 - // console.log("🔒 모달 닫힘 감지:", { effectiveModalId }); - setWasOpen(false); - } - }, [actualOpen, wasOpen, effectiveModalId, externalOpen, context.open]); - - // modalId가 변경되면 초기화 리셋 (다른 모달이 열린 경우) - React.useEffect(() => { - if (effectiveModalId !== lastModalId) { - // console.log("🔄 모달 ID 변경 감지, 초기화 리셋:", { 이전: lastModalId, 현재: effectiveModalId, isInitialized }); - setIsInitialized(false); - setUserResized(false); // 사용자 리사이징 플래그도 리셋 - setLastModalId(effectiveModalId); - } - }, [effectiveModalId, lastModalId, isInitialized]); - - // 모달이 열릴 때 초기 크기 설정 (localStorage와 내용 크기 중 큰 값 사용) - // 주석처리 - 사용자가 설정한 크기(userStyle)만 사용하도록 변경 - // React.useEffect(() => { - // // console.log("🔍 초기 크기 설정 useEffect 실행:", { isInitialized, hasContentRef: !!contentRef.current, effectiveModalId }); - // - // if (!isInitialized) { - // // 내용의 실제 크기 측정 (약간의 지연 후, contentRef가 준비될 때까지 대기) - // // 여러 번 시도하여 contentRef가 준비될 때까지 대기 - // let attempts = 0; - // const maxAttempts = 10; - // - // const measureContent = () => { - // attempts++; - // - // // scrollHeight/scrollWidth를 사용하여 실제 내용 크기 측정 (스크롤 포함) - // let contentWidth = defaultWidth; - // let contentHeight = defaultHeight; - // - // // if (contentRef.current) { - // // // scrollHeight/scrollWidth 그대로 사용 (여유 공간 제거) - // // contentWidth = contentRef.current.scrollWidth || defaultWidth; - // // contentHeight = contentRef.current.scrollHeight || defaultHeight; - // // - // // // console.log("📏 모달 내용 크기 측정:", { attempt: attempts, scrollWidth: contentRef.current.scrollWidth, scrollHeight: contentRef.current.scrollHeight, clientWidth: contentRef.current.clientWidth, clientHeight: contentRef.current.clientHeight, contentWidth, contentHeight }); - // // } else { - // // // console.log("⚠️ contentRef 없음, 재시도:", { attempt: attempts, maxAttempts, defaultWidth, defaultHeight }); - // // - // // // contentRef가 아직 없으면 재시도 - // // if (attempts < maxAttempts) { - // // setTimeout(measureContent, 100); - // // return; - // // } - // // } - // - // // 패딩 추가 (p-6 * 2 = 48px) - // const paddingAndMargin = 48; - // const initialSize = getInitialSize(); - // - // // 내용 크기 기반 최소 크기 계산 - // const contentBasedSize = { - // width: Math.max(minWidth, Math.min(maxWidth, Math.max(contentWidth + paddingAndMargin, initialSize.width))), - // height: Math.max(minHeight, Math.min(maxHeight, Math.max(contentHeight + paddingAndMargin, initialSize.height))), - // }; - // - // // console.log("📐 내용 기반 크기:", contentBasedSize); - // - // // localStorage에서 저장된 크기 확인 - // let finalSize = contentBasedSize; - // - // if (effectiveModalId && typeof window !== 'undefined') { - // try { - // const storageKey = `modal_size_${effectiveModalId}_${userId}`; - // const saved = localStorage.getItem(storageKey); - // - // // console.log("📦 localStorage 확인:", { effectiveModalId, userId, storageKey, saved: saved ? "있음" : "없음" }); - // - // if (saved) { - // const parsed = JSON.parse(saved); - // - // // userResized 플래그 확인 - // if (parsed.userResized) { - // const savedSize = { - // width: Math.max(minWidth, Math.min(maxWidth, parsed.width)), - // height: Math.max(minHeight, Math.min(maxHeight, parsed.height)), - // }; - // - // // console.log("💾 사용자가 리사이징한 크기 복원:", savedSize); - // - // // ✅ 중요: 사용자가 명시적으로 리사이징한 경우, 사용자 크기를 우선 사용 - // // (사용자가 의도적으로 작게 만든 것을 존중) - // finalSize = savedSize; - // setUserResized(true); - // - // // console.log("✅ 최종 크기 (사용자가 설정한 크기 우선 적용):", { savedSize, contentBasedSize, finalSize, note: "사용자가 리사이징한 크기를 그대로 사용합니다" }); - // } else { - // // console.log("ℹ️ 자동 계산된 크기는 무시, 내용 크기 사용"); - // } - // } else { - // // console.log("ℹ️ localStorage에 저장된 크기 없음, 내용 크기 사용"); - // } - // } catch (error) { - // // console.error("❌ 모달 크기 복원 실패:", error); - // } - // } - // - // setSize(finalSize); - // setIsInitialized(true); - // }; - // - // // 첫 시도는 300ms 후에 시작 - // setTimeout(measureContent, 300); - // } - // }, [isInitialized, getInitialSize, effectiveModalId, userId, minWidth, maxWidth, minHeight, maxHeight, defaultWidth, defaultHeight]); - - const startResize = (direction: string) => (e: React.MouseEvent) => { - e.preventDefault(); - e.stopPropagation(); - setIsResizing(true); - setResizeDirection(direction); - - const startX = e.clientX; - const startY = e.clientY; - const startWidth = size.width; - const startHeight = size.height; - - const handleMouseMove = (moveEvent: MouseEvent) => { - const deltaX = moveEvent.clientX - startX; - const deltaY = moveEvent.clientY - startY; - - let newWidth = startWidth; - let newHeight = startHeight; - - if (direction.includes("e")) { - newWidth = Math.max(minWidth, Math.min(maxWidth, startWidth + deltaX)); - } - if (direction.includes("w")) { - newWidth = Math.max(minWidth, Math.min(maxWidth, startWidth - deltaX)); - } - if (direction.includes("s")) { - newHeight = Math.max(minHeight, Math.min(maxHeight, startHeight + deltaY)); - } - if (direction.includes("n")) { - newHeight = Math.max(minHeight, Math.min(maxHeight, startHeight - deltaY)); - } - - setSize({ width: newWidth, height: newHeight }); - }; - - const handleMouseUp = () => { - setIsResizing(false); - setResizeDirection(""); - document.removeEventListener("mousemove", handleMouseMove); - document.removeEventListener("mouseup", handleMouseUp); - - // 사용자가 리사이징했음을 표시 - setUserResized(true); - - // ✅ 중요: 현재 실제 DOM 크기를 저장 (state가 아닌 실제 크기) - if (effectiveModalId && typeof window !== 'undefined' && contentRef.current) { - try { - const storageKey = `modal_size_${effectiveModalId}_${userId}`; - - // contentRef의 부모 요소(모달 컨테이너)의 실제 크기 사용 - const modalElement = contentRef.current.parentElement; - const actualWidth = modalElement?.offsetWidth || size.width; - const actualHeight = modalElement?.offsetHeight || size.height; - - const currentSize = { - width: actualWidth, - height: actualHeight, - userResized: true, // 사용자가 직접 리사이징했음을 표시 - }; - localStorage.setItem(storageKey, JSON.stringify(currentSize)); - // console.log("💾 localStorage에 크기 저장 (사용자 리사이징):", { effectiveModalId, userId, storageKey, size: currentSize, stateSize: { width: size.width, height: size.height } }); - } catch (error) { - // console.error("❌ 모달 크기 저장 실패:", error); - } - } - }; - - document.addEventListener("mousemove", handleMouseMove); - document.addEventListener("mouseup", handleMouseUp); - }; - - return ( - - - -
- {children} -
- - {/* 리사이즈 핸들 */} - {/* 오른쪽 */} -
- {/* 아래 */} -
- {/* 오른쪽 아래 */} -
- {/* 왼쪽 */} -
- {/* 위 */} -
- {/* 왼쪽 아래 */} -
- {/* 오른쪽 위 */} -
- {/* 왼쪽 위 */} -
- - {/* 리셋 버튼 (사용자가 리사이징한 경우만 표시) */} - {userResized && ( - - )} - - - - Close - - - - ); - } -); -ResizableDialogContent.displayName = DialogPrimitive.Content.displayName; - -const ResizableDialogHeader = ({ - className, - ...props -}: React.HTMLAttributes) => ( -
-); -ResizableDialogHeader.displayName = "ResizableDialogHeader"; - -const ResizableDialogFooter = ({ - className, - ...props -}: React.HTMLAttributes) => ( -
-); -ResizableDialogFooter.displayName = "ResizableDialogFooter"; - -const ResizableDialogTitle = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -ResizableDialogTitle.displayName = DialogPrimitive.Title.displayName; - -const ResizableDialogDescription = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -ResizableDialogDescription.displayName = - DialogPrimitive.Description.displayName; - -export { - ResizableDialog, - ResizableDialogPortal, - ResizableDialogOverlay, - ResizableDialogClose, - ResizableDialogTrigger, - ResizableDialogContent, - ResizableDialogHeader, - ResizableDialogFooter, - ResizableDialogTitle, - ResizableDialogDescription, -}; - diff --git a/frontend/components/webtypes/RepeaterInput.tsx b/frontend/components/webtypes/RepeaterInput.tsx index ade700e1..ce9d4cf6 100644 --- a/frontend/components/webtypes/RepeaterInput.tsx +++ b/frontend/components/webtypes/RepeaterInput.tsx @@ -428,6 +428,31 @@ export const RepeaterInput: React.FC = ({ return {option?.label || value}; } + // 🆕 카테고리 매핑이 있는 경우 라벨로 변환 (조인된 테이블의 카테고리 필드) + const mapping = categoryMappings[field.name]; + if (mapping && value) { + const valueStr = String(value); + const categoryData = mapping[valueStr]; + if (categoryData) { + // 색상이 있으면 배지로 표시 + if (categoryData.color && categoryData.color !== "none" && categoryData.color !== "#64748b") { + return ( + + {categoryData.label} + + ); + } + // 색상이 없으면 텍스트로 표시 + return {categoryData.label}; + } + } + // 일반 텍스트 return ( @@ -556,44 +581,40 @@ export const RepeaterInput: React.FC = ({ } }; - // 카테고리 매핑 로드 (카테고리 필드가 있을 때 자동 로드) + // 카테고리 매핑 로드 (카테고리 필드 + readonly 필드에 대해 자동 로드) // 테이블 리스트와 동일한 API 사용: /table-categories/{tableName}/{columnName}/values useEffect(() => { + // 카테고리 타입 필드 + readonly 필드 (조인된 테이블에서 온 데이터일 가능성) const categoryFields = fields.filter(f => f.type === "category"); - if (categoryFields.length === 0) return; + const readonlyFields = fields.filter(f => f.displayMode === "readonly" && f.type === "text"); + + if (categoryFields.length === 0 && readonlyFields.length === 0) return; const loadCategoryMappings = async () => { const apiClient = (await import("@/lib/api/client")).apiClient; + // 1. 카테고리 타입 필드 매핑 로드 for (const field of categoryFields) { - const columnName = field.name; // 실제 컬럼명 - const categoryCode = field.categoryCode || columnName; + const columnName = field.name; - // 이미 로드된 경우 스킵 if (categoryMappings[columnName]) continue; try { - // config에서 targetTable 가져오기, 없으면 스킵 const tableName = config.targetTable; - if (!tableName) { - console.warn(`[RepeaterInput] targetTable이 설정되지 않아 카테고리 매핑을 로드할 수 없습니다.`); - continue; - } + if (!tableName) continue; console.log(`📡 [RepeaterInput] 카테고리 매핑 로드: ${tableName}/${columnName}`); - // 테이블 리스트와 동일한 API 사용 const response = await apiClient.get(`/table-categories/${tableName}/${columnName}/values`); if (response.data.success && response.data.data && Array.isArray(response.data.data)) { const mapping: Record = {}; response.data.data.forEach((item: any) => { - // valueCode를 문자열로 변환하여 키로 사용 (테이블 리스트와 동일) const key = String(item.valueCode); mapping[key] = { label: item.valueLabel || key, - color: item.color || "#64748b", // color 필드 사용 (DB 컬럼명과 동일) + color: item.color || "#64748b", }; }); @@ -608,6 +629,50 @@ export const RepeaterInput: React.FC = ({ console.error(`❌ [RepeaterInput] 카테고리 매핑 로드 실패 (${columnName}):`, error); } } + + // 2. 🆕 readonly 필드에 대해 조인된 테이블 (item_info)에서 카테고리 매핑 로드 + // material, division 등 조인된 테이블의 카테고리 필드 + const joinedTableFields = ['material', 'division', 'status', 'currency_code']; + const fieldsToLoadFromJoinedTable = readonlyFields.filter(f => joinedTableFields.includes(f.name)); + + if (fieldsToLoadFromJoinedTable.length > 0) { + // item_info 테이블에서 카테고리 매핑 로드 + const joinedTableName = 'item_info'; + + for (const field of fieldsToLoadFromJoinedTable) { + const columnName = field.name; + + if (categoryMappings[columnName]) continue; + + try { + console.log(`📡 [RepeaterInput] 조인 테이블 카테고리 매핑 로드: ${joinedTableName}/${columnName}`); + + const response = await apiClient.get(`/table-categories/${joinedTableName}/${columnName}/values`); + + if (response.data.success && response.data.data && Array.isArray(response.data.data)) { + const mapping: Record = {}; + + response.data.data.forEach((item: any) => { + const key = String(item.valueCode); + mapping[key] = { + label: item.valueLabel || key, + color: item.color || "#64748b", + }; + }); + + console.log(`✅ [RepeaterInput] 조인 테이블 카테고리 매핑 로드 완료 [${columnName}]:`, mapping); + + setCategoryMappings(prev => ({ + ...prev, + [columnName]: mapping, + })); + } + } catch (error) { + // 카테고리가 없는 필드는 무시 + console.log(`ℹ️ [RepeaterInput] 조인 테이블 카테고리 없음 (${columnName})`); + } + } + } }; loadCategoryMappings(); diff --git a/frontend/lib/registry/components/card-display/CardDisplayComponent.tsx b/frontend/lib/registry/components/card-display/CardDisplayComponent.tsx index f8bf39c7..55f6ea25 100644 --- a/frontend/lib/registry/components/card-display/CardDisplayComponent.tsx +++ b/frontend/lib/registry/components/card-display/CardDisplayComponent.tsx @@ -968,7 +968,7 @@ export const CardDisplayComponent: React.FC = ({ {/* 상세보기 모달 */} - + 📋 @@ -1041,7 +1041,7 @@ export const CardDisplayComponent: React.FC = ({ {/* 편집 모달 */} - + ✏️ diff --git a/frontend/lib/registry/components/entity-search-input/EntitySearchModal.tsx b/frontend/lib/registry/components/entity-search-input/EntitySearchModal.tsx index 00daed0a..7f841ec3 100644 --- a/frontend/lib/registry/components/entity-search-input/EntitySearchModal.tsx +++ b/frontend/lib/registry/components/entity-search-input/EntitySearchModal.tsx @@ -79,7 +79,7 @@ export function EntitySearchModal({ return ( - + {modalTitle} diff --git a/frontend/lib/registry/components/file-upload/FileViewerModal.tsx b/frontend/lib/registry/components/file-upload/FileViewerModal.tsx index 8ccb93ff..9eb0edeb 100644 --- a/frontend/lib/registry/components/file-upload/FileViewerModal.tsx +++ b/frontend/lib/registry/components/file-upload/FileViewerModal.tsx @@ -491,7 +491,7 @@ export const FileViewerModal: React.FC = ({ file, isOpen, return ( {}}> - +
@@ -506,7 +506,7 @@ export const FileViewerModal: React.FC = ({ file, isOpen, -
{renderPreview()}
+
{renderPreview()}
{/* 파일 정보 및 액션 버튼 */}
diff --git a/frontend/lib/registry/components/modal-repeater-table/ItemSelectionModal.tsx b/frontend/lib/registry/components/modal-repeater-table/ItemSelectionModal.tsx index 60da98f8..456594c2 100644 --- a/frontend/lib/registry/components/modal-repeater-table/ItemSelectionModal.tsx +++ b/frontend/lib/registry/components/modal-repeater-table/ItemSelectionModal.tsx @@ -166,7 +166,7 @@ export function ItemSelectionModal({ return ( - + {modalTitle} @@ -222,8 +222,8 @@ export function ItemSelectionModal({ )} {/* 검색 결과 테이블 */} -
-
+
+
diff --git a/frontend/lib/registry/components/table-list/TableListComponent.tsx b/frontend/lib/registry/components/table-list/TableListComponent.tsx index 4f78ed23..22c26e45 100644 --- a/frontend/lib/registry/components/table-list/TableListComponent.tsx +++ b/frontend/lib/registry/components/table-list/TableListComponent.tsx @@ -969,15 +969,30 @@ export const TableListComponent: React.FC = ({ try { const mappings: Record> = {}; + const apiClient = (await import("@/lib/api/client")).apiClient; for (const columnName of categoryColumns) { try { + // 🆕 엔티티 조인 컬럼 처리: "테이블명.컬럼명" 형태인지 확인 + let targetTable = tableConfig.selectedTable; + let targetColumn = columnName; + + if (columnName.includes(".")) { + const parts = columnName.split("."); + targetTable = parts[0]; // 조인된 테이블명 (예: item_info) + targetColumn = parts[1]; // 실제 컬럼명 (예: material) + console.log(`🔗 [TableList] 엔티티 조인 컬럼 감지:`, { + originalColumn: columnName, + targetTable, + targetColumn, + }); + } + console.log(`📡 [TableList] API 호출 시작 [${columnName}]:`, { - url: `/table-categories/${tableConfig.selectedTable}/${columnName}/values`, + url: `/table-categories/${targetTable}/${targetColumn}/values`, }); - const apiClient = (await import("@/lib/api/client")).apiClient; - const response = await apiClient.get(`/table-categories/${tableConfig.selectedTable}/${columnName}/values`); + const response = await apiClient.get(`/table-categories/${targetTable}/${targetColumn}/values`); console.log(`📡 [TableList] API 응답 [${columnName}]:`, { success: response.data.success, @@ -1000,6 +1015,7 @@ export const TableListComponent: React.FC = ({ }); if (Object.keys(mapping).length > 0) { + // 🆕 원래 컬럼명(item_info.material)으로 매핑 저장 mappings[columnName] = mapping; console.log(`✅ [TableList] 카테고리 매핑 로드 완료 [${columnName}]:`, { columnName, @@ -1028,6 +1044,59 @@ export const TableListComponent: React.FC = ({ } } + // 🆕 엔티티 조인 컬럼 중 카테고리 타입이 아니지만 조인된 테이블의 카테고리 필드인 경우도 로드 + // 화면 설정의 columns에서 "테이블명.컬럼명" 형태의 조인 컬럼 추출 + const joinedColumns = tableConfig.columns + ?.filter((col) => col.columnName?.includes(".")) + .map((col) => col.columnName) || []; + + // 알려진 카테고리 필드 목록 (조인된 테이블에서 자주 사용되는 카테고리 컬럼) + const knownCategoryFields = ["material", "division", "status", "currency_code", "inbound_type", "outbound_type"]; + + for (const joinedColumn of joinedColumns) { + // 이미 로드된 컬럼은 스킵 + if (mappings[joinedColumn]) continue; + + const parts = joinedColumn.split("."); + if (parts.length !== 2) continue; + + const joinedTable = parts[0]; + const joinedColumnName = parts[1]; + + // 알려진 카테고리 필드인 경우만 로드 시도 + if (!knownCategoryFields.includes(joinedColumnName)) continue; + + try { + console.log(`📡 [TableList] 조인 테이블 카테고리 로드 시도 [${joinedColumn}]:`, { + url: `/table-categories/${joinedTable}/${joinedColumnName}/values`, + }); + + const response = await apiClient.get(`/table-categories/${joinedTable}/${joinedColumnName}/values`); + + if (response.data.success && response.data.data && Array.isArray(response.data.data)) { + const mapping: Record = {}; + + response.data.data.forEach((item: any) => { + const key = String(item.valueCode); + mapping[key] = { + label: item.valueLabel, + color: item.color, + }; + }); + + if (Object.keys(mapping).length > 0) { + mappings[joinedColumn] = mapping; + console.log(`✅ [TableList] 조인 테이블 카테고리 매핑 로드 완료 [${joinedColumn}]:`, { + mappingCount: Object.keys(mapping).length, + }); + } + } + } catch (error) { + // 조인 테이블 카테고리 로드 실패는 무시 (카테고리가 아닌 필드일 수 있음) + console.log(`ℹ️ [TableList] 조인 테이블 카테고리 없음 (${joinedColumn})`); + } + } + console.log("📊 [TableList] 전체 카테고리 매핑 설정:", { mappingsCount: Object.keys(mappings).length, mappingsKeys: Object.keys(mappings), @@ -1047,7 +1116,7 @@ export const TableListComponent: React.FC = ({ }; loadCategoryMappings(); - }, [tableConfig.selectedTable, categoryColumns.length, JSON.stringify(categoryColumns)]); // 더 명확한 의존성 + }, [tableConfig.selectedTable, categoryColumns.length, JSON.stringify(categoryColumns), JSON.stringify(tableConfig.columns)]); // 더 명확한 의존성 // ======================================== // 데이터 가져오기 @@ -1885,7 +1954,18 @@ export const TableListComponent: React.FC = ({ if (inputType === "category") { if (!value) return ""; - const mapping = categoryMappings[column.columnName]; + // 🆕 엔티티 조인 컬럼의 경우 여러 형태로 매핑 찾기 + // 1. 원래 컬럼명 (item_info.material) + // 2. 점(.) 뒤의 컬럼명만 (material) + let mapping = categoryMappings[column.columnName]; + + if (!mapping && column.columnName.includes(".")) { + const simpleColumnName = column.columnName.split(".").pop(); + if (simpleColumnName) { + mapping = categoryMappings[simpleColumnName]; + } + } + const { Badge } = require("@/components/ui/badge"); // 다중 값 처리: 콤마로 구분된 값들을 분리 diff --git a/frontend/lib/registry/components/table-list/TableListConfigPanel.tsx b/frontend/lib/registry/components/table-list/TableListConfigPanel.tsx index 209b3d2d..17ab3417 100644 --- a/frontend/lib/registry/components/table-list/TableListConfigPanel.tsx +++ b/frontend/lib/registry/components/table-list/TableListConfigPanel.tsx @@ -265,7 +265,7 @@ export const TableListConfigPanel: React.FC = ({ columnName: col.columnName || col.column_name, dataType: col.dataType || col.data_type || "text", label: col.displayName || col.columnLabel || col.column_label || col.columnName || col.column_name, - })) + })), ); console.log("✅ 참조 테이블 컬럼 로드 완료:", columns.length, "개"); } @@ -511,7 +511,7 @@ export const TableListConfigPanel: React.FC = ({ // 🎯 엔티티 컬럼의 표시 컬럼 정보 로드 const loadEntityDisplayConfig = async (column: ColumnConfig) => { const configKey = `${column.columnName}`; - + // 이미 로드된 경우 스킵 if (entityDisplayConfigs[configKey]) return; @@ -609,7 +609,7 @@ export const TableListConfigPanel: React.FC = ({ // 기본 테이블 컬럼 정보는 항상 로드 const sourceResult = await entityJoinApi.getReferenceTableColumns(sourceTable); const sourceColumns = sourceResult.columns || []; - + // joinTable이 있으면 조인 테이블 컬럼도 로드 let joinColumns: Array<{ columnName: string; displayName: string; dataType: string }> = []; if (joinTable) { @@ -761,9 +761,7 @@ export const TableListConfigPanel: React.FC = ({ placeholder="테이블 제목 입력..." className="h-8 text-xs" /> -

- 우선순위: 사용자 입력 제목 → 테이블 라벨명 → 테이블명 -

+

우선순위: 사용자 입력 제목 → 테이블 라벨명 → 테이블명

@@ -782,7 +780,7 @@ export const TableListConfigPanel: React.FC = ({ /> - + {config.checkbox?.enabled && ( <>
@@ -793,7 +791,7 @@ export const TableListConfigPanel: React.FC = ({ />
- +
{/* 참조 테이블 미설정 안내 */} - {!column.entityDisplayConfig?.joinTable && entityDisplayConfigs[column.columnName].sourceColumns.length > 0 && ( -
- 현재 기본 테이블 컬럼만 표시됩니다. 테이블 타입 관리에서 참조 테이블을 설정하면 조인된 테이블의 컬럼도 선택할 수 있습니다. -
- )} + {!column.entityDisplayConfig?.joinTable && + entityDisplayConfigs[column.columnName].sourceColumns.length > 0 && ( +
+ 현재 기본 테이블 컬럼만 표시됩니다. 테이블 타입 관리에서 참조 테이블을 설정하면 조인된 + 테이블의 컬럼도 선택할 수 있습니다. +
+ )} {/* 선택된 컬럼 미리보기 */} {entityDisplayConfigs[column.columnName].selectedColumns.length > 0 && ( @@ -1107,7 +1109,7 @@ export const TableListConfigPanel: React.FC = ({ // 해당 컬럼의 input_type 확인 const columnInfo = availableColumns.find((col) => col.columnName === column.columnName); const isNumberType = columnInfo?.input_type === "number" || columnInfo?.input_type === "decimal"; - + return (
= ({ {columnInfo?.label || column.displayName || column.columnName} - + {/* 숫자 타입인 경우 천단위 구분자 설정 */} {isNumberType && (
@@ -1131,9 +1133,9 @@ export const TableListConfigPanel: React.FC = ({ }} className="h-3 w-3" /> - @@ -1147,8 +1149,7 @@ export const TableListConfigPanel: React.FC = ({ checked={config.filter?.filters?.some((f) => f.columnName === column.columnName) || false} onCheckedChange={(checked) => { const currentFilters = config.filter?.filters || []; - const columnLabel = - columnInfo?.label || column.displayName || column.columnName; + const columnLabel = columnInfo?.label || column.displayName || column.columnName; if (checked) { // 필터 추가 @@ -1240,9 +1241,7 @@ export const TableListConfigPanel: React.FC = ({ placeholder="40" className="h-8 text-xs" /> -

- 기본값: 40px (0-200px 범위, 10px 단위 권장) -

+

기본값: 40px (0-200px 범위, 10px 단위 권장)

)} @@ -1251,19 +1250,20 @@ export const TableListConfigPanel: React.FC = ({

데이터 필터링

-

- 특정 컬럼 값으로 데이터를 필터링합니다 -

+

특정 컬럼 값으로 데이터를 필터링합니다


({ - columnName: col.columnName, - columnLabel: col.label || col.columnName, - dataType: col.dataType, - input_type: col.input_type, // 🆕 실제 input_type 전달 - } as any))} + columns={availableColumns.map( + (col) => + ({ + columnName: col.columnName, + columnLabel: col.label || col.columnName, + dataType: col.dataType, + input_type: col.input_type, // 🆕 실제 input_type 전달 + }) as any, + )} config={config.dataFilter} onConfigChange={(dataFilter) => handleChange("dataFilter", dataFilter)} /> @@ -1273,12 +1273,12 @@ export const TableListConfigPanel: React.FC = ({

연결된 필터

-

+

셀렉트박스 등 다른 컴포넌트의 값으로 테이블 데이터를 실시간 필터링합니다


- + {/* 연결된 필터 목록 */}
{(config.linkedFilters || []).map((filter, index) => ( @@ -1293,16 +1293,12 @@ export const TableListConfigPanel: React.FC = ({ newFilters[index] = { ...filter, sourceComponentId: e.target.value }; handleChange("linkedFilters", newFilters); }} - className="h-7 text-xs flex-1" + className="h-7 flex-1 text-xs" /> - + - @@ -1311,7 +1307,7 @@ export const TableListConfigPanel: React.FC = ({ - 컬럼을 찾을 수 없습니다 + 컬럼을 찾을 수 없습니다 {availableColumns.map((col) => ( = ({ {col.label || col.columnName} @@ -1353,7 +1349,7 @@ export const TableListConfigPanel: React.FC = ({
))} - + {/* 연결된 필터 추가 버튼 */} - -

+ +

예: 셀렉트박스(ID: select-basic-123)의 값으로 테이블의 inbound_type 컬럼을 필터링

@@ -1381,12 +1377,12 @@ export const TableListConfigPanel: React.FC = ({

제외 필터

-

+

다른 테이블에 이미 존재하는 데이터를 목록에서 제외합니다


- + {/* 제외 필터 활성화 */}
= ({ 제외 필터 활성화
- + {config.excludeFilter?.enabled && (
{/* 참조 테이블 선택 */} @@ -1411,11 +1407,7 @@ export const TableListConfigPanel: React.FC = ({ - @@ -1424,7 +1416,7 @@ export const TableListConfigPanel: React.FC = ({ - 테이블을 찾을 수 없습니다 + 테이블을 찾을 수 없습니다 {availableTables.map((table) => ( = ({ {table.displayName || table.tableName} @@ -1457,7 +1451,7 @@ export const TableListConfigPanel: React.FC = ({
- + {config.excludeFilter?.referenceTable && ( <> {/* 비교 컬럼 설정 - 한 줄에 두 개 */} @@ -1473,9 +1467,7 @@ export const TableListConfigPanel: React.FC = ({ disabled={loadingReferenceColumns} className="h-8 w-full justify-between text-xs" > - {loadingReferenceColumns - ? "..." - : config.excludeFilter?.referenceColumn || "선택"} + {loadingReferenceColumns ? "..." : config.excludeFilter?.referenceColumn || "선택"} @@ -1483,7 +1475,7 @@ export const TableListConfigPanel: React.FC = ({ - 없음 + 없음 {referenceTableColumns.map((col) => ( = ({ {col.label || col.columnName} @@ -1512,17 +1506,13 @@ export const TableListConfigPanel: React.FC = ({
- + {/* 소스 컬럼 (현재 테이블) */}
- @@ -1531,7 +1521,7 @@ export const TableListConfigPanel: React.FC = ({ - 없음 + 없음 {availableColumns.map((col) => ( = ({ {col.label || col.columnName} @@ -1561,11 +1553,11 @@ export const TableListConfigPanel: React.FC = ({
- + {/* 조건 필터 - 특정 조건의 데이터만 제외 */}
-

+

특정 조건의 데이터만 제외하려면 설정하세요 (예: 특정 거래처의 품목만)

@@ -1578,9 +1570,9 @@ export const TableListConfigPanel: React.FC = ({ disabled={loadingReferenceColumns} className="h-8 w-full justify-between text-xs" > - {loadingReferenceColumns - ? "..." - : config.excludeFilter?.filterColumn + {loadingReferenceColumns + ? "..." + : config.excludeFilter?.filterColumn ? `매핑: ${config.excludeFilter.filterColumn}` : "매핑 테이블 컬럼"} @@ -1590,7 +1582,7 @@ export const TableListConfigPanel: React.FC = ({ - 없음 + 없음 = ({ filterValueField: undefined, }); }} - className="text-xs text-muted-foreground" + className="text-muted-foreground text-xs" > - + 사용 안함 {referenceTableColumns.map((col) => ( @@ -1624,7 +1621,9 @@ export const TableListConfigPanel: React.FC = ({ {col.label || col.columnName} @@ -1635,7 +1634,7 @@ export const TableListConfigPanel: React.FC = ({ - + {/* 필터 값 필드명 (부모 화면에서 전달받는 필드) */} = ({
)} - + {/* 설정 요약 */} - {config.excludeFilter?.referenceTable && config.excludeFilter?.referenceColumn && config.excludeFilter?.sourceColumn && ( -
- 설정 요약: {config.selectedTable || screenTableName}.{config.excludeFilter.sourceColumn} 가 - {" "}{config.excludeFilter.referenceTable}.{config.excludeFilter.referenceColumn} 에 - {config.excludeFilter.filterColumn && config.excludeFilter.filterValueField && ( - <> ({config.excludeFilter.filterColumn}=URL의 {config.excludeFilter.filterValueField}일 때) - )} - {" "}이미 있으면 제외 -
- )} + {config.excludeFilter?.referenceTable && + config.excludeFilter?.referenceColumn && + config.excludeFilter?.sourceColumn && ( +
+ 설정 요약: {config.selectedTable || screenTableName}. + {config.excludeFilter.sourceColumn} 가 {config.excludeFilter.referenceTable}. + {config.excludeFilter.referenceColumn} 에 + {config.excludeFilter.filterColumn && config.excludeFilter.filterValueField && ( + <> + {" "} + ({config.excludeFilter.filterColumn}=URL의 {config.excludeFilter.filterValueField}일 때) + + )}{" "} + 이미 있으면 제외 +
+ )}
)} diff --git a/화면_임베딩_및_데이터_전달_시스템_구현_계획서.md b/화면_임베딩_및_데이터_전달_시스템_구현_계획서.md index 74d9d0ed..687896c1 100644 --- a/화면_임베딩_및_데이터_전달_시스템_구현_계획서.md +++ b/화면_임베딩_및_데이터_전달_시스템_구현_계획서.md @@ -1680,3 +1680,4 @@ const 출고등록_설정: ScreenSplitPanel = { 화면 임베딩 및 데이터 전달 시스템은 복잡한 업무 워크플로우를 효율적으로 처리할 수 있는 강력한 기능입니다. 단계별로 체계적으로 구현하면 약 3.5개월 내에 완성할 수 있으며, 이를 통해 사용자 경험을 크게 향상시킬 수 있습니다. + diff --git a/화면_임베딩_시스템_Phase1-4_구현_완료.md b/화면_임베딩_시스템_Phase1-4_구현_완료.md index 47526bb1..bc025b41 100644 --- a/화면_임베딩_시스템_Phase1-4_구현_완료.md +++ b/화면_임베딩_시스템_Phase1-4_구현_완료.md @@ -527,3 +527,4 @@ const { data: config } = await getScreenSplitPanel(screenId); 이제 입고 등록과 같은 복잡한 워크플로우를 구현할 수 있습니다. 다음 단계는 각 컴포넌트 타입별 DataReceivable 인터페이스 구현과 설정 UI 개발입니다. + diff --git a/화면_임베딩_시스템_충돌_분석_보고서.md b/화면_임베딩_시스템_충돌_분석_보고서.md index 135d36d8..cdd94d36 100644 --- a/화면_임베딩_시스템_충돌_분석_보고서.md +++ b/화면_임베딩_시스템_충돌_분석_보고서.md @@ -514,3 +514,4 @@ function ScreenViewPage() { 새로운 시스템은 기존 시스템과 **독립적으로 동작**하며, 최소한의 수정만으로 통합 가능합니다. 화면 페이지에 조건 분기만 추가하면 바로 사용할 수 있습니다. + -- 2.43.0 From 3f2739a4a5b1eed1b8bc76d1e27346d57afdf823 Mon Sep 17 00:00:00 2001 From: kjs Date: Fri, 5 Dec 2025 11:04:42 +0900 Subject: [PATCH 09/64] =?UTF-8?q?=EC=97=94=ED=8B=B0=ED=8B=B0=20=EC=B9=B4?= =?UTF-8?q?=ED=85=8C=EA=B3=A0=EB=A6=AC=20=ED=83=80=EC=9E=85=20=EC=BB=AC?= =?UTF-8?q?=EB=9F=BC=20=EB=B0=B0=EC=A7=80=20=ED=91=9C=EC=8B=9C=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../table-list/TableListComponent.tsx | 130 +++++++++++++----- ..._임베딩_및_데이터_전달_시스템_구현_계획서.md | 1 + 화면_임베딩_시스템_Phase1-4_구현_완료.md | 1 + 화면_임베딩_시스템_충돌_분석_보고서.md | 1 + 4 files changed, 101 insertions(+), 32 deletions(-) diff --git a/frontend/lib/registry/components/table-list/TableListComponent.tsx b/frontend/lib/registry/components/table-list/TableListComponent.tsx index 22c26e45..5b397d57 100644 --- a/frontend/lib/registry/components/table-list/TableListComponent.tsx +++ b/frontend/lib/registry/components/table-list/TableListComponent.tsx @@ -365,6 +365,10 @@ export const TableListComponent: React.FC = ({ const [columnMeta, setColumnMeta] = useState< Record >({}); + // 🆕 엔티티 조인 테이블의 컬럼 메타데이터 (테이블명.컬럼명 → inputType) + const [joinedColumnMeta, setJoinedColumnMeta] = useState< + Record + >({}); const [categoryMappings, setCategoryMappings] = useState< Record> >({}); @@ -1044,58 +1048,119 @@ export const TableListComponent: React.FC = ({ } } - // 🆕 엔티티 조인 컬럼 중 카테고리 타입이 아니지만 조인된 테이블의 카테고리 필드인 경우도 로드 - // 화면 설정의 columns에서 "테이블명.컬럼명" 형태의 조인 컬럼 추출 + // 🆕 엔티티 조인 컬럼의 inputType 정보 가져오기 및 카테고리 매핑 로드 + // 1. "테이블명.컬럼명" 형태의 조인 컬럼 추출 const joinedColumns = tableConfig.columns ?.filter((col) => col.columnName?.includes(".")) .map((col) => col.columnName) || []; - // 알려진 카테고리 필드 목록 (조인된 테이블에서 자주 사용되는 카테고리 컬럼) - const knownCategoryFields = ["material", "division", "status", "currency_code", "inbound_type", "outbound_type"]; + // 2. additionalJoinInfo가 있는 컬럼도 추출 (예: item_code_material → item_info.material) + const additionalJoinColumns = tableConfig.columns + ?.filter((col: any) => col.additionalJoinInfo?.referenceTable) + .map((col: any) => ({ + columnName: col.columnName, // 예: item_code_material + referenceTable: col.additionalJoinInfo.referenceTable, // 예: item_info + // joinAlias에서 실제 컬럼명 추출 (item_code_material → material) + actualColumn: col.additionalJoinInfo.joinAlias?.replace(`${col.additionalJoinInfo.sourceColumn}_`, '') || col.columnName, + })) || []; + console.log("🔍 [TableList] additionalJoinInfo 컬럼:", additionalJoinColumns); + + // 조인 테이블별로 그룹화 + const joinedTableColumns: Record = {}; + + // "테이블명.컬럼명" 형태 처리 for (const joinedColumn of joinedColumns) { - // 이미 로드된 컬럼은 스킵 - if (mappings[joinedColumn]) continue; - const parts = joinedColumn.split("."); if (parts.length !== 2) continue; const joinedTable = parts[0]; const joinedColumnName = parts[1]; - // 알려진 카테고리 필드인 경우만 로드 시도 - if (!knownCategoryFields.includes(joinedColumnName)) continue; - + if (!joinedTableColumns[joinedTable]) { + joinedTableColumns[joinedTable] = []; + } + joinedTableColumns[joinedTable].push({ + columnName: joinedColumn, + actualColumn: joinedColumnName, + }); + } + + // additionalJoinInfo 형태 처리 + for (const col of additionalJoinColumns) { + if (!joinedTableColumns[col.referenceTable]) { + joinedTableColumns[col.referenceTable] = []; + } + joinedTableColumns[col.referenceTable].push({ + columnName: col.columnName, // 예: item_code_material + actualColumn: col.actualColumn, // 예: material + }); + } + + console.log("🔍 [TableList] 조인 테이블별 컬럼:", joinedTableColumns); + + // 조인된 테이블별로 inputType 정보 가져오기 + const newJoinedColumnMeta: Record = {}; + + for (const [joinedTable, columns] of Object.entries(joinedTableColumns)) { try { - console.log(`📡 [TableList] 조인 테이블 카테고리 로드 시도 [${joinedColumn}]:`, { - url: `/table-categories/${joinedTable}/${joinedColumnName}/values`, - }); + // 조인 테이블의 컬럼 inputType 정보 가져오기 (이미 import된 tableTypeApi 사용) + const inputTypes = await tableTypeApi.getColumnInputTypes(joinedTable); - const response = await apiClient.get(`/table-categories/${joinedTable}/${joinedColumnName}/values`); + console.log(`📡 [TableList] 조인 테이블 inputType 로드 [${joinedTable}]:`, inputTypes); - if (response.data.success && response.data.data && Array.isArray(response.data.data)) { - const mapping: Record = {}; + for (const col of columns) { + const inputTypeInfo = inputTypes.find((it: any) => it.columnName === col.actualColumn); - response.data.data.forEach((item: any) => { - const key = String(item.valueCode); - mapping[key] = { - label: item.valueLabel, - color: item.color, - }; - }); + // 컬럼명 그대로 저장 (item_code_material 또는 item_info.material) + newJoinedColumnMeta[col.columnName] = { + inputType: inputTypeInfo?.inputType, + }; - if (Object.keys(mapping).length > 0) { - mappings[joinedColumn] = mapping; - console.log(`✅ [TableList] 조인 테이블 카테고리 매핑 로드 완료 [${joinedColumn}]:`, { - mappingCount: Object.keys(mapping).length, - }); + console.log(` 🔗 [${col.columnName}] (실제: ${col.actualColumn}) inputType: ${inputTypeInfo?.inputType || "unknown"}`); + + // inputType이 category인 경우 카테고리 매핑 로드 + if (inputTypeInfo?.inputType === "category" && !mappings[col.columnName]) { + try { + console.log(`📡 [TableList] 조인 테이블 카테고리 로드 시도 [${col.columnName}]:`, { + url: `/table-categories/${joinedTable}/${col.actualColumn}/values`, + }); + + const response = await apiClient.get(`/table-categories/${joinedTable}/${col.actualColumn}/values`); + + if (response.data.success && response.data.data && Array.isArray(response.data.data)) { + const mapping: Record = {}; + + response.data.data.forEach((item: any) => { + const key = String(item.valueCode); + mapping[key] = { + label: item.valueLabel, + color: item.color, + }; + }); + + if (Object.keys(mapping).length > 0) { + mappings[col.columnName] = mapping; + console.log(`✅ [TableList] 조인 테이블 카테고리 매핑 로드 완료 [${col.columnName}]:`, { + mappingCount: Object.keys(mapping).length, + }); + } + } + } catch (error) { + console.log(`ℹ️ [TableList] 조인 테이블 카테고리 없음 (${col.columnName})`); + } } } } catch (error) { - // 조인 테이블 카테고리 로드 실패는 무시 (카테고리가 아닌 필드일 수 있음) - console.log(`ℹ️ [TableList] 조인 테이블 카테고리 없음 (${joinedColumn})`); + console.error(`❌ [TableList] 조인 테이블 inputType 로드 실패 [${joinedTable}]:`, error); } } + + // 조인 컬럼 메타데이터 상태 업데이트 + if (Object.keys(newJoinedColumnMeta).length > 0) { + setJoinedColumnMeta(newJoinedColumnMeta); + console.log("✅ [TableList] 조인 컬럼 메타데이터 설정:", newJoinedColumnMeta); + } console.log("📊 [TableList] 전체 카테고리 매핑 설정:", { mappingsCount: Object.keys(mappings).length, @@ -1929,7 +1994,8 @@ export const TableListComponent: React.FC = ({ return rowData.writer_name; } - const meta = columnMeta[column.columnName]; + // 🆕 메인 테이블 메타 또는 조인 테이블 메타에서 정보 가져오기 + const meta = columnMeta[column.columnName] || joinedColumnMeta[column.columnName]; // inputType 기반 포맷팅 (columnMeta에서 가져온 inputType 우선) const inputType = meta?.inputType || column.inputType; @@ -2119,7 +2185,7 @@ export const TableListComponent: React.FC = ({ return String(value); } }, - [columnMeta, optimizedConvertCode, categoryMappings], + [columnMeta, joinedColumnMeta, optimizedConvertCode, categoryMappings], ); // ======================================== diff --git a/화면_임베딩_및_데이터_전달_시스템_구현_계획서.md b/화면_임베딩_및_데이터_전달_시스템_구현_계획서.md index 687896c1..313a7567 100644 --- a/화면_임베딩_및_데이터_전달_시스템_구현_계획서.md +++ b/화면_임베딩_및_데이터_전달_시스템_구현_계획서.md @@ -1681,3 +1681,4 @@ const 출고등록_설정: ScreenSplitPanel = { + diff --git a/화면_임베딩_시스템_Phase1-4_구현_완료.md b/화면_임베딩_시스템_Phase1-4_구현_완료.md index bc025b41..373b6ec7 100644 --- a/화면_임베딩_시스템_Phase1-4_구현_완료.md +++ b/화면_임베딩_시스템_Phase1-4_구현_완료.md @@ -528,3 +528,4 @@ const { data: config } = await getScreenSplitPanel(screenId); + diff --git a/화면_임베딩_시스템_충돌_분석_보고서.md b/화면_임베딩_시스템_충돌_분석_보고서.md index cdd94d36..5d315706 100644 --- a/화면_임베딩_시스템_충돌_분석_보고서.md +++ b/화면_임베딩_시스템_충돌_분석_보고서.md @@ -515,3 +515,4 @@ function ScreenViewPage() { + -- 2.43.0 From 09fee581860f257980a07bea3bbad95878e4e83e Mon Sep 17 00:00:00 2001 From: kjs Date: Fri, 5 Dec 2025 14:08:07 +0900 Subject: [PATCH 10/64] =?UTF-8?q?=ED=99=94=EB=A9=B4=20=EB=B6=84=ED=95=A0?= =?UTF-8?q?=20=ED=8C=A8=EB=84=90=20=EC=9E=90=EB=8F=99=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EB=84=98=EA=B8=B0=EB=8A=94=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EC=84=A4=EC=A0=95=20=EA=B0=80=EB=8A=A5?= =?UTF-8?q?=ED=95=98=EA=B2=8C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../screen-embedding/EmbeddedScreen.tsx | 7 ++++++ .../screen-embedding/ScreenSplitPanel.tsx | 1 + .../screen/InteractiveScreenViewerDynamic.tsx | 6 +++-- frontend/contexts/SplitPanelContext.tsx | 8 +++++++ .../card-display/CardDisplayComponent.tsx | 3 ++- .../ScreenSplitPanelConfigPanel.tsx | 22 +++++++++++++++++++ .../table-list/TableListComponent.tsx | 3 ++- 7 files changed, 46 insertions(+), 4 deletions(-) diff --git a/frontend/components/screen-embedding/EmbeddedScreen.tsx b/frontend/components/screen-embedding/EmbeddedScreen.tsx index 3880fc54..d8e62c00 100644 --- a/frontend/components/screen-embedding/EmbeddedScreen.tsx +++ b/frontend/components/screen-embedding/EmbeddedScreen.tsx @@ -92,10 +92,17 @@ export const EmbeddedScreen = forwardRef { // 우측 화면인 경우에만 적용 if (position !== "right" || !splitPanelContext) return; + // 자동 데이터 전달이 비활성화된 경우 스킵 + if (splitPanelContext.disableAutoDataTransfer) { + console.log("🔗 [EmbeddedScreen] 자동 데이터 전달 비활성화됨 - 버튼 클릭으로만 전달"); + return; + } + const mappedData = splitPanelContext.getMappedParentData(); if (Object.keys(mappedData).length > 0) { console.log("🔗 [EmbeddedScreen] 분할 패널 부모 데이터 자동 반영:", mappedData); diff --git a/frontend/components/screen-embedding/ScreenSplitPanel.tsx b/frontend/components/screen-embedding/ScreenSplitPanel.tsx index 60b6bf24..1b0eeb65 100644 --- a/frontend/components/screen-embedding/ScreenSplitPanel.tsx +++ b/frontend/components/screen-embedding/ScreenSplitPanel.tsx @@ -128,6 +128,7 @@ export function ScreenSplitPanel({ screenId, config, initialFormData }: ScreenSp rightScreenId={config?.rightScreenId || null} parentDataMapping={config?.parentDataMapping || []} linkedFilters={config?.linkedFilters || []} + disableAutoDataTransfer={config?.disableAutoDataTransfer ?? false} >
{/* 좌측 패널 */} diff --git a/frontend/components/screen/InteractiveScreenViewerDynamic.tsx b/frontend/components/screen/InteractiveScreenViewerDynamic.tsx index 41983df3..97dc0734 100644 --- a/frontend/components/screen/InteractiveScreenViewerDynamic.tsx +++ b/frontend/components/screen/InteractiveScreenViewerDynamic.tsx @@ -118,17 +118,19 @@ export const InteractiveScreenViewerDynamic: React.FC>({}); // 🆕 분할 패널에서 매핑된 부모 데이터 가져오기 + // disableAutoDataTransfer가 true이면 자동 전달 비활성화 (버튼 클릭으로만 전달) const splitPanelMappedData = React.useMemo(() => { - if (splitPanelContext) { + if (splitPanelContext && !splitPanelContext.disableAutoDataTransfer) { return splitPanelContext.getMappedParentData(); } return {}; - }, [splitPanelContext, splitPanelContext?.selectedLeftData]); + }, [splitPanelContext, splitPanelContext?.selectedLeftData, splitPanelContext?.disableAutoDataTransfer]); // formData 결정 (외부에서 전달받은 것이 있으면 우선 사용, 분할 패널 데이터도 병합) const formData = React.useMemo(() => { const baseData = externalFormData || localFormData; // 분할 패널 매핑 데이터가 있으면 병합 (기존 값이 없는 경우에만) + // disableAutoDataTransfer가 true이면 자동 병합 안함 if (Object.keys(splitPanelMappedData).length > 0) { const merged = { ...baseData }; for (const [key, value] of Object.entries(splitPanelMappedData)) { diff --git a/frontend/contexts/SplitPanelContext.tsx b/frontend/contexts/SplitPanelContext.tsx index 99cccdd8..20a0be00 100644 --- a/frontend/contexts/SplitPanelContext.tsx +++ b/frontend/contexts/SplitPanelContext.tsx @@ -88,6 +88,9 @@ interface SplitPanelContextValue { // 🆕 연결 필터 값 가져오기 (우측 테이블 조회 시 사용) getLinkedFilterValues: () => Record; + + // 🆕 자동 데이터 전달 비활성화 여부 (버튼 클릭 시에만 데이터 전달) + disableAutoDataTransfer: boolean; } const SplitPanelContext = createContext(null); @@ -98,6 +101,7 @@ interface SplitPanelProviderProps { rightScreenId: number | null; parentDataMapping?: ParentDataMapping[]; // 🆕 부모 데이터 매핑 설정 linkedFilters?: LinkedFilter[]; // 🆕 연결 필터 설정 + disableAutoDataTransfer?: boolean; // 🆕 자동 데이터 전달 비활성화 (버튼 클릭 시에만 전달) children: React.ReactNode; } @@ -110,6 +114,7 @@ export function SplitPanelProvider({ rightScreenId, parentDataMapping = [], linkedFilters = [], + disableAutoDataTransfer = false, children, }: SplitPanelProviderProps) { // 좌측/우측 화면의 데이터 수신자 맵 @@ -372,6 +377,8 @@ export function SplitPanelProvider({ // 🆕 연결 필터 관련 linkedFilters, getLinkedFilterValues, + // 🆕 자동 데이터 전달 비활성화 여부 + disableAutoDataTransfer, }), [ splitPanelId, leftScreenId, @@ -391,6 +398,7 @@ export function SplitPanelProvider({ getMappedParentData, linkedFilters, getLinkedFilterValues, + disableAutoDataTransfer, ]); return ( diff --git a/frontend/lib/registry/components/card-display/CardDisplayComponent.tsx b/frontend/lib/registry/components/card-display/CardDisplayComponent.tsx index 55f6ea25..a3876188 100644 --- a/frontend/lib/registry/components/card-display/CardDisplayComponent.tsx +++ b/frontend/lib/registry/components/card-display/CardDisplayComponent.tsx @@ -345,7 +345,8 @@ export const CardDisplayComponent: React.FC = ({ } // 분할 패널 컨텍스트에 선택된 데이터 저장 (좌측 화면인 경우) - if (splitPanelContext && splitPanelPosition === "left") { + // disableAutoDataTransfer가 true이면 자동 전달 비활성화 (버튼 클릭으로만 전달) + if (splitPanelContext && splitPanelPosition === "left" && !splitPanelContext.disableAutoDataTransfer) { if (checked) { splitPanelContext.setSelectedLeftData(data); console.log("[CardDisplay] 분할 패널 좌측 데이터 저장:", { diff --git a/frontend/lib/registry/components/screen-split-panel/ScreenSplitPanelConfigPanel.tsx b/frontend/lib/registry/components/screen-split-panel/ScreenSplitPanelConfigPanel.tsx index b8a1d3dc..0c167ab5 100644 --- a/frontend/lib/registry/components/screen-split-panel/ScreenSplitPanelConfigPanel.tsx +++ b/frontend/lib/registry/components/screen-split-panel/ScreenSplitPanelConfigPanel.tsx @@ -53,6 +53,7 @@ export function ScreenSplitPanelConfigPanel({ config = {}, onChange }: ScreenSpl buttonPosition: config.buttonPosition || "center", parentDataMapping: config.parentDataMapping || [] as ParentDataMapping[], linkedFilters: config.linkedFilters || [] as LinkedFilter[], + disableAutoDataTransfer: config.disableAutoDataTransfer ?? false, // 자동 데이터 전달 비활성화 ...config, }); @@ -69,6 +70,7 @@ export function ScreenSplitPanelConfigPanel({ config = {}, onChange }: ScreenSpl buttonPosition: config.buttonPosition || "center", parentDataMapping: config.parentDataMapping || [], linkedFilters: config.linkedFilters || [], + disableAutoDataTransfer: config.disableAutoDataTransfer ?? false, ...config, }); }, [config]); @@ -386,6 +388,26 @@ export function ScreenSplitPanelConfigPanel({ config = {}, onChange }: ScreenSpl onCheckedChange={(checked) => updateConfig("resizable", checked)} />
+ + + +
+
+ +

+ 좌측 행 선택 시 우측으로 데이터가 자동 전달되지 않습니다. +
+ 버튼 클릭으로만 데이터를 전달하려면 활성화하세요. +

+
+ updateConfig("disableAutoDataTransfer", checked)} + /> +
diff --git a/frontend/lib/registry/components/table-list/TableListComponent.tsx b/frontend/lib/registry/components/table-list/TableListComponent.tsx index 5b397d57..64e6e540 100644 --- a/frontend/lib/registry/components/table-list/TableListComponent.tsx +++ b/frontend/lib/registry/components/table-list/TableListComponent.tsx @@ -1764,7 +1764,8 @@ export const TableListComponent: React.FC = ({ handleRowSelection(rowKey, !isCurrentlySelected); // 🆕 분할 패널 컨텍스트에 선택된 데이터 저장 (좌측 화면인 경우) - if (splitPanelContext && splitPanelPosition === "left") { + // disableAutoDataTransfer가 true이면 자동 전달 비활성화 (버튼 클릭으로만 전달) + if (splitPanelContext && splitPanelPosition === "left" && !splitPanelContext.disableAutoDataTransfer) { if (!isCurrentlySelected) { // 선택된 경우: 데이터 저장 splitPanelContext.setSelectedLeftData(row); -- 2.43.0 From 0429e0db7d4e6142b931b2fdfb14399f7092d51d Mon Sep 17 00:00:00 2001 From: kjs Date: Fri, 5 Dec 2025 15:18:55 +0900 Subject: [PATCH 11/64] =?UTF-8?q?=EC=A0=9C=EC=96=B4=20=EC=A7=91=EA=B3=84?= =?UTF-8?q?=ED=95=A8=EC=88=98=20=EB=85=B8=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/services/nodeFlowExecutionService.ts | 160 ++++++ .../dataflow/node-editor/FlowEditor.tsx | 2 + .../node-editor/nodes/AggregateNode.tsx | 107 ++++ .../node-editor/panels/PropertiesPanel.tsx | 6 + .../panels/properties/AggregateProperties.tsx | 526 ++++++++++++++++++ .../properties/InsertActionProperties.tsx | 45 +- .../properties/UpdateActionProperties.tsx | 42 +- .../properties/UpsertActionProperties.tsx | 40 +- .../node-editor/sidebar/nodePaletteConfig.ts | 8 + frontend/types/node-editor.ts | 30 + 10 files changed, 959 insertions(+), 7 deletions(-) create mode 100644 frontend/components/dataflow/node-editor/nodes/AggregateNode.tsx create mode 100644 frontend/components/dataflow/node-editor/panels/properties/AggregateProperties.tsx diff --git a/backend-node/src/services/nodeFlowExecutionService.ts b/backend-node/src/services/nodeFlowExecutionService.ts index 9cdd85f3..e70a1dae 100644 --- a/backend-node/src/services/nodeFlowExecutionService.ts +++ b/backend-node/src/services/nodeFlowExecutionService.ts @@ -528,6 +528,9 @@ export class NodeFlowExecutionService { case "dataTransform": return this.executeDataTransform(node, inputData, context); + case "aggregate": + return this.executeAggregate(node, inputData, context); + case "insertAction": return this.executeInsertAction(node, inputData, context, client); @@ -3197,4 +3200,161 @@ export class NodeFlowExecutionService { "upsertAction", ].includes(nodeType); } + + /** + * 집계 노드 실행 (SUM, COUNT, AVG, MIN, MAX 등) + */ + private static async executeAggregate( + node: FlowNode, + inputData: any, + context: ExecutionContext + ): Promise { + const { groupByFields = [], aggregations = [], havingConditions = [] } = node.data; + + logger.info(`📊 집계 노드 실행: ${node.data.displayName || node.id}`); + + // 입력 데이터가 없으면 빈 배열 반환 + if (!inputData || !Array.isArray(inputData) || inputData.length === 0) { + logger.warn("⚠️ 집계할 입력 데이터가 없습니다."); + return []; + } + + logger.info(`📥 입력 데이터: ${inputData.length}건`); + logger.info(`📊 그룹 기준: ${groupByFields.length > 0 ? groupByFields.map((f: any) => f.field).join(", ") : "전체"}`); + logger.info(`📊 집계 연산: ${aggregations.length}개`); + + // 그룹화 수행 + const groups = new Map(); + + for (const row of inputData) { + // 그룹 키 생성 + const groupKey = groupByFields.length > 0 + ? groupByFields.map((f: any) => String(row[f.field] ?? "")).join("|||") + : "__ALL__"; + + if (!groups.has(groupKey)) { + groups.set(groupKey, []); + } + groups.get(groupKey)!.push(row); + } + + logger.info(`📊 그룹 수: ${groups.size}개`); + + // 각 그룹에 대해 집계 수행 + const results: any[] = []; + + for (const [groupKey, groupRows] of groups) { + const resultRow: any = {}; + + // 그룹 기준 필드값 추가 + if (groupByFields.length > 0) { + const keyValues = groupKey.split("|||"); + groupByFields.forEach((field: any, idx: number) => { + resultRow[field.field] = keyValues[idx]; + }); + } + + // 각 집계 연산 수행 + for (const agg of aggregations) { + const { sourceField, function: aggFunc, outputField } = agg; + + if (!outputField) continue; + + let aggregatedValue: any; + + switch (aggFunc) { + case "SUM": + aggregatedValue = groupRows.reduce((sum: number, row: any) => { + const val = parseFloat(row[sourceField]); + return sum + (isNaN(val) ? 0 : val); + }, 0); + break; + + case "COUNT": + aggregatedValue = groupRows.length; + break; + + case "AVG": + const sum = groupRows.reduce((acc: number, row: any) => { + const val = parseFloat(row[sourceField]); + return acc + (isNaN(val) ? 0 : val); + }, 0); + aggregatedValue = groupRows.length > 0 ? sum / groupRows.length : 0; + break; + + case "MIN": + aggregatedValue = groupRows.reduce((min: number | null, row: any) => { + const val = parseFloat(row[sourceField]); + if (isNaN(val)) return min; + return min === null ? val : Math.min(min, val); + }, null); + break; + + case "MAX": + aggregatedValue = groupRows.reduce((max: number | null, row: any) => { + const val = parseFloat(row[sourceField]); + if (isNaN(val)) return max; + return max === null ? val : Math.max(max, val); + }, null); + break; + + case "FIRST": + aggregatedValue = groupRows.length > 0 ? groupRows[0][sourceField] : null; + break; + + case "LAST": + aggregatedValue = groupRows.length > 0 ? groupRows[groupRows.length - 1][sourceField] : null; + break; + + default: + logger.warn(`⚠️ 지원하지 않는 집계 함수: ${aggFunc}`); + aggregatedValue = null; + } + + resultRow[outputField] = aggregatedValue; + logger.info(` ${aggFunc}(${sourceField}) → ${outputField}: ${aggregatedValue}`); + } + + results.push(resultRow); + } + + // HAVING 조건 적용 (집계 후 필터링) + let filteredResults = results; + if (havingConditions && havingConditions.length > 0) { + filteredResults = results.filter((row) => { + return havingConditions.every((condition: any) => { + const fieldValue = row[condition.field]; + const compareValue = parseFloat(condition.value); + + switch (condition.operator) { + case "=": + return fieldValue === compareValue; + case "!=": + return fieldValue !== compareValue; + case ">": + return fieldValue > compareValue; + case ">=": + return fieldValue >= compareValue; + case "<": + return fieldValue < compareValue; + case "<=": + return fieldValue <= compareValue; + default: + return true; + } + }); + }); + + logger.info(`📊 HAVING 필터링: ${results.length}건 → ${filteredResults.length}건`); + } + + logger.info(`✅ 집계 완료: ${filteredResults.length}건 결과`); + + // 결과 샘플 출력 + if (filteredResults.length > 0) { + logger.info(`📄 결과 샘플:`, JSON.stringify(filteredResults[0], null, 2)); + } + + return filteredResults; + } } diff --git a/frontend/components/dataflow/node-editor/FlowEditor.tsx b/frontend/components/dataflow/node-editor/FlowEditor.tsx index c87c80aa..f74d35aa 100644 --- a/frontend/components/dataflow/node-editor/FlowEditor.tsx +++ b/frontend/components/dataflow/node-editor/FlowEditor.tsx @@ -25,6 +25,7 @@ import { UpdateActionNode } from "./nodes/UpdateActionNode"; import { DeleteActionNode } from "./nodes/DeleteActionNode"; import { UpsertActionNode } from "./nodes/UpsertActionNode"; import { DataTransformNode } from "./nodes/DataTransformNode"; +import { AggregateNode } from "./nodes/AggregateNode"; import { RestAPISourceNode } from "./nodes/RestAPISourceNode"; import { CommentNode } from "./nodes/CommentNode"; import { LogNode } from "./nodes/LogNode"; @@ -41,6 +42,7 @@ const nodeTypes = { // 변환/조건 condition: ConditionNode, dataTransform: DataTransformNode, + aggregate: AggregateNode, // 액션 insertAction: InsertActionNode, updateAction: UpdateActionNode, diff --git a/frontend/components/dataflow/node-editor/nodes/AggregateNode.tsx b/frontend/components/dataflow/node-editor/nodes/AggregateNode.tsx new file mode 100644 index 00000000..51ed5371 --- /dev/null +++ b/frontend/components/dataflow/node-editor/nodes/AggregateNode.tsx @@ -0,0 +1,107 @@ +"use client"; + +/** + * 집계 노드 (Aggregate Node) + * SUM, COUNT, AVG, MIN, MAX 등 집계 연산을 수행 + */ + +import { memo } from "react"; +import { Handle, Position, NodeProps } from "reactflow"; +import { Calculator, Layers } from "lucide-react"; +import type { AggregateNodeData, AggregateFunction } from "@/types/node-editor"; + +// 집계 함수별 아이콘/라벨 +const AGGREGATE_FUNCTION_LABELS: Record = { + SUM: "합계", + COUNT: "개수", + AVG: "평균", + MIN: "최소", + MAX: "최대", + FIRST: "첫번째", + LAST: "마지막", +}; + +export const AggregateNode = memo(({ data, selected }: NodeProps) => { + const groupByCount = data.groupByFields?.length || 0; + const aggregationCount = data.aggregations?.length || 0; + + return ( +
+ {/* 헤더 */} +
+ +
+
{data.displayName || "집계"}
+
+ {groupByCount > 0 ? `${groupByCount}개 그룹` : "전체"} / {aggregationCount}개 집계 +
+
+
+ + {/* 본문 */} +
+ {/* 그룹 기준 */} + {groupByCount > 0 && ( +
+
+ + 그룹 기준 +
+
+ {data.groupByFields.slice(0, 3).map((field, idx) => ( + + {field.fieldLabel || field.field} + + ))} + {data.groupByFields.length > 3 && ( + +{data.groupByFields.length - 3} + )} +
+
+ )} + + {/* 집계 연산 */} + {aggregationCount > 0 ? ( +
+ {data.aggregations.slice(0, 4).map((agg, idx) => ( +
+
+ + {AGGREGATE_FUNCTION_LABELS[agg.function] || agg.function} + + + {agg.outputFieldLabel || agg.outputField} + +
+
+ {agg.sourceFieldLabel || agg.sourceField} +
+
+ ))} + {data.aggregations.length > 4 && ( +
+ ... 외 {data.aggregations.length - 4}개 +
+ )} +
+ ) : ( +
집계 연산 없음
+ )} +
+ + {/* 핸들 */} + + +
+ ); +}); + +AggregateNode.displayName = "AggregateNode"; + diff --git a/frontend/components/dataflow/node-editor/panels/PropertiesPanel.tsx b/frontend/components/dataflow/node-editor/panels/PropertiesPanel.tsx index ada62e8d..cf7c7e6e 100644 --- a/frontend/components/dataflow/node-editor/panels/PropertiesPanel.tsx +++ b/frontend/components/dataflow/node-editor/panels/PropertiesPanel.tsx @@ -16,6 +16,7 @@ import { DeleteActionProperties } from "./properties/DeleteActionProperties"; import { ExternalDBSourceProperties } from "./properties/ExternalDBSourceProperties"; import { UpsertActionProperties } from "./properties/UpsertActionProperties"; import { DataTransformProperties } from "./properties/DataTransformProperties"; +import { AggregateProperties } from "./properties/AggregateProperties"; import { RestAPISourceProperties } from "./properties/RestAPISourceProperties"; import { CommentProperties } from "./properties/CommentProperties"; import { LogProperties } from "./properties/LogProperties"; @@ -122,6 +123,9 @@ function NodePropertiesRenderer({ node }: { node: any }) { case "dataTransform": return ; + case "aggregate": + return ; + case "restAPISource": return ; @@ -157,9 +161,11 @@ function getNodeTypeLabel(type: NodeType): string { tableSource: "테이블 소스", externalDBSource: "외부 DB 소스", restAPISource: "REST API 소스", + referenceLookup: "참조 조회", condition: "조건 분기", fieldMapping: "필드 매핑", dataTransform: "데이터 변환", + aggregate: "집계", insertAction: "INSERT 액션", updateAction: "UPDATE 액션", deleteAction: "DELETE 액션", diff --git a/frontend/components/dataflow/node-editor/panels/properties/AggregateProperties.tsx b/frontend/components/dataflow/node-editor/panels/properties/AggregateProperties.tsx new file mode 100644 index 00000000..6d3d7311 --- /dev/null +++ b/frontend/components/dataflow/node-editor/panels/properties/AggregateProperties.tsx @@ -0,0 +1,526 @@ +"use client"; + +/** + * 집계 노드 속성 편집 패널 + * SUM, COUNT, AVG, MIN, MAX 등 집계 연산 설정 + */ + +import { useEffect, useState, useCallback } from "react"; +import { Plus, Trash2, Calculator, Layers, Filter } from "lucide-react"; +import { Label } from "@/components/ui/label"; +import { Input } from "@/components/ui/input"; +import { Button } from "@/components/ui/button"; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; +import { Checkbox } from "@/components/ui/checkbox"; +import { useFlowEditorStore } from "@/lib/stores/flowEditorStore"; +import type { AggregateNodeData, AggregateFunction } from "@/types/node-editor"; + +interface AggregatePropertiesProps { + nodeId: string; + data: AggregateNodeData; +} + +// 집계 함수 옵션 +const AGGREGATE_FUNCTIONS: Array<{ value: AggregateFunction; label: string; description: string }> = [ + { value: "SUM", label: "합계 (SUM)", description: "숫자 필드의 합계를 계산합니다" }, + { value: "COUNT", label: "개수 (COUNT)", description: "레코드 개수를 계산합니다" }, + { value: "AVG", label: "평균 (AVG)", description: "숫자 필드의 평균을 계산합니다" }, + { value: "MIN", label: "최소 (MIN)", description: "최소값을 찾습니다" }, + { value: "MAX", label: "최대 (MAX)", description: "최대값을 찾습니다" }, + { value: "FIRST", label: "첫번째 (FIRST)", description: "그룹의 첫 번째 값을 가져옵니다" }, + { value: "LAST", label: "마지막 (LAST)", description: "그룹의 마지막 값을 가져옵니다" }, +]; + +// 비교 연산자 옵션 +const OPERATORS = [ + { value: "=", label: "같음 (=)" }, + { value: "!=", label: "다름 (!=)" }, + { value: ">", label: "보다 큼 (>)" }, + { value: ">=", label: "크거나 같음 (>=)" }, + { value: "<", label: "보다 작음 (<)" }, + { value: "<=", label: "작거나 같음 (<=)" }, +]; + +export function AggregateProperties({ nodeId, data }: AggregatePropertiesProps) { + const { updateNode, nodes, edges } = useFlowEditorStore(); + + // 로컬 상태 + const [displayName, setDisplayName] = useState(data.displayName || "집계"); + const [groupByFields, setGroupByFields] = useState(data.groupByFields || []); + const [aggregations, setAggregations] = useState(data.aggregations || []); + const [havingConditions, setHavingConditions] = useState(data.havingConditions || []); + + // 소스 필드 목록 (연결된 입력 노드에서 가져오기) + const [sourceFields, setSourceFields] = useState>([]); + + // 데이터 변경 시 로컬 상태 업데이트 + useEffect(() => { + setDisplayName(data.displayName || "집계"); + setGroupByFields(data.groupByFields || []); + setAggregations(data.aggregations || []); + setHavingConditions(data.havingConditions || []); + }, [data]); + + // 연결된 소스 노드에서 필드 가져오기 + useEffect(() => { + const inputEdges = edges.filter((edge) => edge.target === nodeId); + const sourceNodeIds = inputEdges.map((edge) => edge.source); + const sourceNodes = nodes.filter((node) => sourceNodeIds.includes(node.id)); + + const fields: Array<{ name: string; label?: string; type?: string }> = []; + sourceNodes.forEach((node) => { + if (node.data.fields) { + node.data.fields.forEach((field: any) => { + fields.push({ + name: field.name, + label: field.label || field.displayName, + type: field.type, + }); + }); + } + }); + + setSourceFields(fields); + }, [nodeId, nodes, edges]); + + // 저장 함수 + const saveToNode = useCallback( + (updates: Partial) => { + updateNode(nodeId, { + displayName, + groupByFields, + aggregations, + havingConditions, + ...updates, + }); + }, + [nodeId, updateNode, displayName, groupByFields, aggregations, havingConditions] + ); + + // 그룹 기준 필드 토글 + const handleGroupByToggle = (fieldName: string, checked: boolean) => { + let newGroupByFields; + if (checked) { + const field = sourceFields.find((f) => f.name === fieldName); + newGroupByFields = [...groupByFields, { field: fieldName, fieldLabel: field?.label }]; + } else { + newGroupByFields = groupByFields.filter((f) => f.field !== fieldName); + } + setGroupByFields(newGroupByFields); + saveToNode({ groupByFields: newGroupByFields }); + }; + + // 집계 연산 추가 + const handleAddAggregation = () => { + const newAggregation = { + id: `agg_${Date.now()}`, + sourceField: "", + sourceFieldLabel: "", + function: "SUM" as AggregateFunction, + outputField: "", + outputFieldLabel: "", + }; + const newAggregations = [...aggregations, newAggregation]; + setAggregations(newAggregations); + saveToNode({ aggregations: newAggregations }); + }; + + // 집계 연산 삭제 + const handleRemoveAggregation = (index: number) => { + const newAggregations = aggregations.filter((_, i) => i !== index); + setAggregations(newAggregations); + saveToNode({ aggregations: newAggregations }); + }; + + // 집계 연산 변경 + const handleAggregationChange = (index: number, field: string, value: any) => { + const newAggregations = [...aggregations]; + + if (field === "sourceField") { + const sourceField = sourceFields.find((f) => f.name === value); + newAggregations[index] = { + ...newAggregations[index], + sourceField: value, + sourceFieldLabel: sourceField?.label, + // 출력 필드명 자동 생성 (예: sum_amount) + outputField: + newAggregations[index].outputField || + `${newAggregations[index].function.toLowerCase()}_${value}`, + }; + } else if (field === "function") { + newAggregations[index] = { + ...newAggregations[index], + function: value, + // 출력 필드명 업데이트 + outputField: newAggregations[index].sourceField + ? `${value.toLowerCase()}_${newAggregations[index].sourceField}` + : newAggregations[index].outputField, + }; + } else { + newAggregations[index] = { ...newAggregations[index], [field]: value }; + } + + setAggregations(newAggregations); + saveToNode({ aggregations: newAggregations }); + }; + + // HAVING 조건 추가 + const handleAddHavingCondition = () => { + const newCondition = { + field: "", + operator: "=", + value: "", + }; + const newConditions = [...havingConditions, newCondition]; + setHavingConditions(newConditions); + saveToNode({ havingConditions: newConditions }); + }; + + // HAVING 조건 삭제 + const handleRemoveHavingCondition = (index: number) => { + const newConditions = havingConditions.filter((_, i) => i !== index); + setHavingConditions(newConditions); + saveToNode({ havingConditions: newConditions }); + }; + + // HAVING 조건 변경 + const handleHavingConditionChange = (index: number, field: string, value: any) => { + const newConditions = [...havingConditions]; + newConditions[index] = { ...newConditions[index], [field]: value }; + setHavingConditions(newConditions); + saveToNode({ havingConditions: newConditions }); + }; + + // 집계 결과 필드 목록 (HAVING 조건에서 선택용) + const aggregatedFields = aggregations + .filter((agg) => agg.outputField) + .map((agg) => ({ + name: agg.outputField, + label: agg.outputFieldLabel || agg.outputField, + })); + + return ( +
+
+ {/* 헤더 */} +
+ + 집계 노드 +
+ + {/* 기본 정보 */} +
+

기본 정보

+
+ + { + setDisplayName(e.target.value); + saveToNode({ displayName: e.target.value }); + }} + className="mt-1" + placeholder="노드 표시 이름" + /> +
+
+ + {/* 그룹 기준 필드 */} +
+
+ +

그룹 기준 필드

+
+

+ 선택한 필드를 기준으로 데이터를 그룹화합니다. 선택하지 않으면 전체 데이터를 하나의 그룹으로 처리합니다. +

+ + {sourceFields.length === 0 ? ( +
+ 연결된 소스 노드가 없습니다 +
+ ) : ( +
+
+ {sourceFields.map((field) => { + const isChecked = groupByFields.some((f) => f.field === field.name); + return ( +
+ handleGroupByToggle(field.name, checked as boolean)} + /> + +
+ ); + })} +
+
+ )} + + {groupByFields.length > 0 && ( +
+ {groupByFields.map((field) => ( + + {field.fieldLabel || field.field} + + ))} +
+ )} +
+ + {/* 집계 연산 */} +
+
+
+ +

집계 연산

+
+ +
+

SUM, COUNT, AVG 등 집계 연산을 설정합니다.

+ + {aggregations.length === 0 ? ( +
+ 집계 연산을 추가하세요 +
+ ) : ( +
+ {aggregations.map((agg, index) => ( +
+
+ 집계 #{index + 1} + +
+ +
+ {/* 집계 함수 선택 */} +
+ + +
+ + {/* 소스 필드 선택 */} +
+ + +
+ + {/* 출력 필드명 */} +
+ + handleAggregationChange(index, "outputField", e.target.value)} + placeholder="예: total_amount" + className="mt-1 h-8 text-xs" + /> +

+ 집계 결과가 저장될 필드명입니다 +

+
+ + {/* 출력 필드 라벨 */} +
+ + handleAggregationChange(index, "outputFieldLabel", e.target.value)} + placeholder="예: 총 금액" + className="mt-1 h-8 text-xs" + /> +
+
+
+ ))} +
+ )} +
+ + {/* HAVING 조건 (선택) */} +
+
+
+ +

집계 후 필터 (HAVING)

+
+ +
+

집계 결과에 대한 필터링 조건을 설정합니다 (선택 사항).

+ + {havingConditions.length === 0 ? ( +
+ 집계 후 필터링이 필요하면 조건을 추가하세요 +
+ ) : ( +
+ {havingConditions.map((condition, index) => ( +
+ {/* 집계 결과 필드 선택 */} + + + {/* 연산자 선택 */} + + + {/* 비교값 */} + handleHavingConditionChange(index, "value", e.target.value)} + placeholder="값" + className="h-8 flex-1 text-xs" + /> + + {/* 삭제 버튼 */} + +
+ ))} +
+ )} +
+ + {/* 미리보기 */} + {(groupByFields.length > 0 || aggregations.length > 0) && ( +
+

집계 결과 미리보기

+
+
+ 그룹 기준:{" "} + {groupByFields.length > 0 + ? groupByFields.map((f) => f.fieldLabel || f.field).join(", ") + : "전체 (그룹 없음)"} +
+
+ 집계 컬럼:{" "} + {aggregations.length > 0 + ? aggregations + .filter((a) => a.outputField) + .map((a) => `${a.function}(${a.sourceFieldLabel || a.sourceField}) → ${a.outputFieldLabel || a.outputField}`) + .join(", ") + : "없음"} +
+
+
+ )} +
+
+ ); +} + diff --git a/frontend/components/dataflow/node-editor/panels/properties/InsertActionProperties.tsx b/frontend/components/dataflow/node-editor/panels/properties/InsertActionProperties.tsx index 5f3b3220..465a88fd 100644 --- a/frontend/components/dataflow/node-editor/panels/properties/InsertActionProperties.tsx +++ b/frontend/components/dataflow/node-editor/panels/properties/InsertActionProperties.tsx @@ -236,7 +236,48 @@ export function InsertActionProperties({ nodeId, data }: InsertActionPropertiesP console.log("⚠️ REST API 노드에 responseFields 없음"); } } - // 3️⃣ 테이블/외부DB 소스 노드 + // 3️⃣ 집계(Aggregate) 노드: 그룹 필드 + 집계 결과 필드 + else if (node.type === "aggregate") { + console.log("✅ 집계 노드 발견"); + const nodeData = node.data as any; + + // 그룹 기준 필드 추가 (field 또는 fieldName 둘 다 지원) + if (nodeData.groupByFields && Array.isArray(nodeData.groupByFields)) { + console.log(` 📊 ${nodeData.groupByFields.length}개 그룹 필드 발견`); + nodeData.groupByFields.forEach((groupField: any) => { + const fieldName = groupField.field || groupField.fieldName; + if (fieldName) { + fields.push({ + name: fieldName, + label: groupField.fieldLabel || fieldName, + sourcePath: currentPath, + }); + } + }); + } + + // 집계 결과 필드 추가 (aggregations 또는 aggregateFunctions 둘 다 지원) + const aggregations = nodeData.aggregations || nodeData.aggregateFunctions || []; + if (Array.isArray(aggregations)) { + console.log(` 📊 ${aggregations.length}개 집계 함수 발견`); + aggregations.forEach((aggFunc: any) => { + // outputField 또는 targetField 둘 다 지원 + const outputFieldName = aggFunc.outputField || aggFunc.targetField; + // function 또는 aggregateType 둘 다 지원 + const funcType = aggFunc.function || aggFunc.aggregateType; + if (outputFieldName) { + fields.push({ + name: outputFieldName, + label: aggFunc.outputFieldLabel || aggFunc.targetFieldLabel || `${funcType}(${aggFunc.sourceFieldLabel || aggFunc.sourceField})`, + sourcePath: currentPath, + }); + } + }); + } + + // 집계 노드는 상위 노드의 필드를 그대로 통과시키지 않음 (집계된 결과만 전달) + } + // 4️⃣ 테이블/외부DB 소스 노드 else if (node.type === "tableSource" || node.type === "externalDBSource") { const nodeFields = (node.data as any).fields || (node.data as any).outputFields; const displayName = (node.data as any).displayName || (node.data as any).tableName || node.id; @@ -266,7 +307,7 @@ export function InsertActionProperties({ nodeId, data }: InsertActionPropertiesP foundRestAPI = foundRestAPI || upperResult.hasRestAPI; } } - // 4️⃣ 통과 노드 (조건, 기타 모든 노드): 상위 노드로 계속 탐색 + // 5️⃣ 통과 노드 (조건, 기타 모든 노드): 상위 노드로 계속 탐색 else { console.log(`✅ 통과 노드 (${node.type}) → 상위 노드로 계속 탐색`); const upperResult = getAllSourceFields(node.id, visitedNodes, currentPath); diff --git a/frontend/components/dataflow/node-editor/panels/properties/UpdateActionProperties.tsx b/frontend/components/dataflow/node-editor/panels/properties/UpdateActionProperties.tsx index 7d6d2e5a..6d109d5b 100644 --- a/frontend/components/dataflow/node-editor/panels/properties/UpdateActionProperties.tsx +++ b/frontend/components/dataflow/node-editor/panels/properties/UpdateActionProperties.tsx @@ -212,7 +212,43 @@ export function UpdateActionProperties({ nodeId, data }: UpdateActionPropertiesP fields.push(...upperFields); } } - // 2️⃣ REST API 소스 노드 + // 2️⃣ 집계(Aggregate) 노드: 그룹 필드 + 집계 결과 필드 + else if (node.type === "aggregate") { + const nodeData = node.data as any; + + // 그룹 기준 필드 추가 (field 또는 fieldName 둘 다 지원) + if (nodeData.groupByFields && Array.isArray(nodeData.groupByFields)) { + nodeData.groupByFields.forEach((groupField: any) => { + const fieldName = groupField.field || groupField.fieldName; + if (fieldName) { + fields.push({ + name: fieldName, + label: groupField.fieldLabel || fieldName, + }); + } + }); + } + + // 집계 결과 필드 추가 (aggregations 또는 aggregateFunctions 둘 다 지원) + const aggregations = nodeData.aggregations || nodeData.aggregateFunctions || []; + if (Array.isArray(aggregations)) { + aggregations.forEach((aggFunc: any) => { + // outputField 또는 targetField 둘 다 지원 + const outputFieldName = aggFunc.outputField || aggFunc.targetField; + // function 또는 aggregateType 둘 다 지원 + const funcType = aggFunc.function || aggFunc.aggregateType; + if (outputFieldName) { + fields.push({ + name: outputFieldName, + label: aggFunc.outputFieldLabel || aggFunc.targetFieldLabel || `${funcType}(${aggFunc.sourceFieldLabel || aggFunc.sourceField})`, + }); + } + }); + } + + // 집계 노드는 상위 노드의 필드를 그대로 통과시키지 않음 (집계된 결과만 전달) + } + // 3️⃣ REST API 소스 노드 else if (node.type === "restAPISource") { foundRestAPI = true; const responseFields = (node.data as any).responseFields; @@ -229,7 +265,7 @@ export function UpdateActionProperties({ nodeId, data }: UpdateActionPropertiesP }); } } - // 3️⃣ 테이블/외부DB 소스 노드 + // 4️⃣ 테이블/외부DB 소스 노드 else if (node.type === "tableSource" || node.type === "externalDBSource") { const nodeFields = (node.data as any).fields || (node.data as any).outputFields; @@ -251,7 +287,7 @@ export function UpdateActionProperties({ nodeId, data }: UpdateActionPropertiesP foundRestAPI = foundRestAPI || upperResult.hasRestAPI; } } - // 4️⃣ 통과 노드 (조건, 기타 모든 노드): 상위 노드로 계속 탐색 + // 5️⃣ 통과 노드 (조건, 기타 모든 노드): 상위 노드로 계속 탐색 else { const upperResult = getAllSourceFields(node.id, visitedNodes); fields.push(...upperResult.fields); diff --git a/frontend/components/dataflow/node-editor/panels/properties/UpsertActionProperties.tsx b/frontend/components/dataflow/node-editor/panels/properties/UpsertActionProperties.tsx index 50a53603..57d5d4f2 100644 --- a/frontend/components/dataflow/node-editor/panels/properties/UpsertActionProperties.tsx +++ b/frontend/components/dataflow/node-editor/panels/properties/UpsertActionProperties.tsx @@ -212,7 +212,43 @@ export function UpsertActionProperties({ nodeId, data }: UpsertActionPropertiesP }); } } - // 3️⃣ 테이블/외부DB 소스 노드 + // 3️⃣ 집계(Aggregate) 노드: 그룹 필드 + 집계 결과 필드 + else if (node.type === "aggregate") { + const nodeData = node.data as any; + + // 그룹 기준 필드 추가 (field 또는 fieldName 둘 다 지원) + if (nodeData.groupByFields && Array.isArray(nodeData.groupByFields)) { + nodeData.groupByFields.forEach((groupField: any) => { + const fieldName = groupField.field || groupField.fieldName; + if (fieldName) { + fields.push({ + name: fieldName, + label: groupField.fieldLabel || fieldName, + }); + } + }); + } + + // 집계 결과 필드 추가 (aggregations 또는 aggregateFunctions 둘 다 지원) + const aggregations = nodeData.aggregations || nodeData.aggregateFunctions || []; + if (Array.isArray(aggregations)) { + aggregations.forEach((aggFunc: any) => { + // outputField 또는 targetField 둘 다 지원 + const outputFieldName = aggFunc.outputField || aggFunc.targetField; + // function 또는 aggregateType 둘 다 지원 + const funcType = aggFunc.function || aggFunc.aggregateType; + if (outputFieldName) { + fields.push({ + name: outputFieldName, + label: aggFunc.outputFieldLabel || aggFunc.targetFieldLabel || `${funcType}(${aggFunc.sourceFieldLabel || aggFunc.sourceField})`, + }); + } + }); + } + + // 집계 노드는 상위 노드의 필드를 그대로 통과시키지 않음 (집계된 결과만 전달) + } + // 4️⃣ 테이블/외부DB 소스 노드 else if (node.type === "tableSource" || node.type === "externalDBSource") { const nodeFields = (node.data as any).fields || (node.data as any).outputFields; @@ -234,7 +270,7 @@ export function UpsertActionProperties({ nodeId, data }: UpsertActionPropertiesP foundRestAPI = foundRestAPI || upperResult.hasRestAPI; } } - // 4️⃣ 통과 노드 (조건, 기타 모든 노드): 상위 노드로 계속 탐색 + // 5️⃣ 통과 노드 (조건, 기타 모든 노드): 상위 노드로 계속 탐색 else { const upperResult = getAllSourceFields(node.id, visitedNodes); fields.push(...upperResult.fields); diff --git a/frontend/components/dataflow/node-editor/sidebar/nodePaletteConfig.ts b/frontend/components/dataflow/node-editor/sidebar/nodePaletteConfig.ts index 97a5b19e..2ff31689 100644 --- a/frontend/components/dataflow/node-editor/sidebar/nodePaletteConfig.ts +++ b/frontend/components/dataflow/node-editor/sidebar/nodePaletteConfig.ts @@ -60,6 +60,14 @@ export const NODE_PALETTE: NodePaletteItem[] = [ category: "transform", color: "#06B6D4", // 청록색 }, + { + type: "aggregate", + label: "집계", + icon: "", + description: "SUM, COUNT, AVG 등 집계 연산을 수행합니다", + category: "transform", + color: "#A855F7", // 보라색 + }, // ======================================================================== // 액션 diff --git a/frontend/types/node-editor.ts b/frontend/types/node-editor.ts index 8959a691..fc5adb89 100644 --- a/frontend/types/node-editor.ts +++ b/frontend/types/node-editor.ts @@ -15,6 +15,7 @@ export type NodeType = | "referenceLookup" // 참조 테이블 조회 (내부 DB 전용) | "condition" // 조건 분기 | "dataTransform" // 데이터 변환 + | "aggregate" // 집계 노드 (SUM, COUNT, AVG 등) | "insertAction" // INSERT 액션 | "updateAction" // UPDATE 액션 | "deleteAction" // DELETE 액션 @@ -194,6 +195,34 @@ export interface DataTransformNodeData { displayName?: string; } +// 집계 함수 타입 +export type AggregateFunction = "SUM" | "COUNT" | "AVG" | "MIN" | "MAX" | "FIRST" | "LAST"; + +// 집계 노드 데이터 +export interface AggregateNodeData { + displayName?: string; + // 그룹 기준 컬럼들 + groupByFields: Array<{ + field: string; // 컬럼명 + fieldLabel?: string; // 라벨 + }>; + // 집계 연산들 + aggregations: Array<{ + id: string; // 고유 ID + sourceField: string; // 집계할 소스 필드 + sourceFieldLabel?: string; // 소스 필드 라벨 + function: AggregateFunction; // 집계 함수 + outputField: string; // 출력 필드명 + outputFieldLabel?: string; // 출력 필드 라벨 + }>; + // 집계 후 필터링 (HAVING 절) + havingConditions?: Array<{ + field: string; // 집계 결과 필드 + operator: string; // 비교 연산자 + value: any; // 비교값 + }>; +} + // INSERT 액션 노드 export interface InsertActionNodeData { displayName?: string; @@ -406,6 +435,7 @@ export type NodeData = | ConditionNodeData | FieldMappingNodeData | DataTransformNodeData + | AggregateNodeData | InsertActionNodeData | UpdateActionNodeData | DeleteActionNodeData -- 2.43.0 From 07fe4baf9f72d4d7b658d36a64e62de4ea1a7ce0 Mon Sep 17 00:00:00 2001 From: SeongHyun Kim Date: Fri, 5 Dec 2025 10:13:59 +0900 Subject: [PATCH 12/64] =?UTF-8?q?fix(modal-repeater-table):=20=EB=82=A0?= =?UTF-8?q?=EC=A7=9C=20=ED=95=84=EB=93=9C=20ISO=20=ED=98=95=EC=8B=9D=20?= =?UTF-8?q?=EB=B3=80=ED=99=98=EC=9C=BC=EB=A1=9C=20=ED=91=9C=EC=8B=9C=20?= =?UTF-8?q?=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - RepeaterTable에서 DB 조회된 ISO 형식 날짜를 yyyy-mm-dd로 변환 - formatDateValue 함수 추가: ISO 문자열, Date 객체, 기존 형식 모두 처리 - 수주일(order_date), 납기일(item_due_date) 등 날짜 필드 정상 표시 --- .../modal-repeater-table/RepeaterTable.tsx | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/frontend/lib/registry/components/modal-repeater-table/RepeaterTable.tsx b/frontend/lib/registry/components/modal-repeater-table/RepeaterTable.tsx index c9aa2cfd..703256b2 100644 --- a/frontend/lib/registry/components/modal-repeater-table/RepeaterTable.tsx +++ b/frontend/lib/registry/components/modal-repeater-table/RepeaterTable.tsx @@ -75,10 +75,28 @@ export function RepeaterTable({ ); case "date": + // ISO 형식(2025-11-23T00:00:00.000Z)을 yyyy-mm-dd로 변환 + const formatDateValue = (val: any): string => { + if (!val) return ""; + // 이미 yyyy-mm-dd 형식이면 그대로 반환 + if (typeof val === "string" && /^\d{4}-\d{2}-\d{2}$/.test(val)) { + return val; + } + // ISO 형식이면 날짜 부분만 추출 + if (typeof val === "string" && val.includes("T")) { + return val.split("T")[0]; + } + // Date 객체이면 변환 + if (val instanceof Date) { + return val.toISOString().split("T")[0]; + } + return String(val); + }; + return ( handleCellEdit(rowIndex, column.field, e.target.value)} className="h-7 text-xs" /> -- 2.43.0 From c87094c4b3099cfc8b10f18ee38a283a3fac9659 Mon Sep 17 00:00:00 2001 From: kjs Date: Fri, 5 Dec 2025 17:28:44 +0900 Subject: [PATCH 13/64] =?UTF-8?q?=EC=A7=91=EA=B3=84=ED=95=A8=EC=88=98=20?= =?UTF-8?q?=EC=A0=9C=EC=96=B4=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/services/dynamicFormService.ts | 18 ++++ .../src/services/nodeFlowExecutionService.ts | 101 +++++++++++------- .../components/webtypes/RepeaterInput.tsx | 14 ++- .../RepeaterFieldGroupRenderer.tsx | 28 +++-- 4 files changed, 110 insertions(+), 51 deletions(-) diff --git a/backend-node/src/services/dynamicFormService.ts b/backend-node/src/services/dynamicFormService.ts index 04586d65..d52c184f 100644 --- a/backend-node/src/services/dynamicFormService.ts +++ b/backend-node/src/services/dynamicFormService.ts @@ -506,6 +506,24 @@ export class DynamicFormService { // 헤더 + 품목을 병합 const rawMergedData = { ...dataToInsert, ...item }; + // 🆕 새 레코드 저장 시 id 제거하여 새 UUID 생성되도록 함 + // _existingRecord가 명시적으로 true인 경우에만 기존 레코드로 처리 (UPDATE) + // 그 외의 경우는 모두 새 레코드로 처리 (INSERT) + const isExistingRecord = rawMergedData._existingRecord === true; + + if (!isExistingRecord) { + // 새 레코드: id 제거하여 새 UUID 자동 생성 + const oldId = rawMergedData.id; + delete rawMergedData.id; + console.log(`🆕 새 레코드로 처리 (id 제거됨: ${oldId})`); + } else { + console.log(`📝 기존 레코드 수정 (id 유지: ${rawMergedData.id})`); + } + + // 메타 플래그 제거 + delete rawMergedData._isNewItem; + delete rawMergedData._existingRecord; + // 🆕 실제 테이블 컬럼만 필터링 (조인/계산 컬럼 제외) const validColumnNames = columnInfo.map((col) => col.column_name); const mergedData: Record = {}; diff --git a/backend-node/src/services/nodeFlowExecutionService.ts b/backend-node/src/services/nodeFlowExecutionService.ts index e70a1dae..7b5f6918 100644 --- a/backend-node/src/services/nodeFlowExecutionService.ts +++ b/backend-node/src/services/nodeFlowExecutionService.ts @@ -833,11 +833,18 @@ export class NodeFlowExecutionService { const sql = `SELECT * FROM ${schemaPrefix}${tableName} ${whereResult.clause}`; + logger.info(`📊 테이블 전체 데이터 조회 SQL: ${sql}`); + const result = await query(sql, whereResult.values); logger.info( `📊 테이블 전체 데이터 조회: ${tableName}, ${result.length}건` ); + + // 디버깅: 조회된 데이터 샘플 출력 + if (result.length > 0) { + logger.info(`📊 조회된 데이터 샘플: ${JSON.stringify(result[0])?.substring(0, 300)}`); + } return result; } @@ -1358,57 +1365,64 @@ export class NodeFlowExecutionService { let updatedCount = 0; const updatedDataArray: any[] = []; - // 🆕 table-all 모드: 단일 SQL로 일괄 업데이트 + // 🆕 table-all 모드: 각 그룹별로 UPDATE 실행 (집계 결과 반영) if (context.currentNodeDataSourceType === "table-all") { - console.log("🚀 table-all 모드: 단일 SQL로 일괄 업데이트 시작"); + console.log("🚀 table-all 모드: 그룹별 업데이트 시작 (총 " + dataArray.length + "개 그룹)"); - // 첫 번째 데이터를 참조하여 SET 절 생성 - const firstData = dataArray[0]; - const setClauses: string[] = []; - const values: any[] = []; - let paramIndex = 1; + // 🔥 각 그룹(데이터)별로 UPDATE 실행 + for (let i = 0; i < dataArray.length; i++) { + const data = dataArray[i]; + const setClauses: string[] = []; + const values: any[] = []; + let paramIndex = 1; - console.log("🗺️ 필드 매핑 처리 중..."); - fieldMappings.forEach((mapping: any) => { - const value = - mapping.staticValue !== undefined - ? mapping.staticValue - : firstData[mapping.sourceField]; + console.log(`\n📦 그룹 ${i + 1}/${dataArray.length} 처리 중...`); + console.log("🗺️ 필드 매핑 처리 중..."); + + fieldMappings.forEach((mapping: any) => { + const value = + mapping.staticValue !== undefined + ? mapping.staticValue + : data[mapping.sourceField]; - console.log( - ` ${mapping.sourceField} → ${mapping.targetField}: ${value === undefined ? "❌ undefined" : "✅ " + value}` + console.log( + ` ${mapping.sourceField} → ${mapping.targetField}: ${value === undefined ? "❌ undefined" : "✅ " + value}` + ); + + if (mapping.targetField) { + setClauses.push(`${mapping.targetField} = $${paramIndex}`); + values.push(value); + paramIndex++; + } + }); + + // WHERE 조건 (사용자 정의 조건만 사용, PK 자동 추가 안 함) + const whereResult = this.buildWhereClause( + whereConditions, + data, + paramIndex ); - if (mapping.targetField) { - setClauses.push(`${mapping.targetField} = $${paramIndex}`); - values.push(value); - paramIndex++; - } - }); + values.push(...whereResult.values); - // WHERE 조건 (사용자 정의 조건만 사용, PK 자동 추가 안 함) - const whereResult = this.buildWhereClause( - whereConditions, - firstData, - paramIndex - ); + const sql = ` + UPDATE ${targetTable} + SET ${setClauses.join(", ")} + ${whereResult.clause} + `; - values.push(...whereResult.values); + console.log("📝 실행할 SQL:", sql); + console.log("📊 바인딩 값:", values); - const sql = ` - UPDATE ${targetTable} - SET ${setClauses.join(", ")} - ${whereResult.clause} - `; - - console.log("📝 실행할 SQL (일괄 처리):", sql); - console.log("📊 바인딩 값:", values); - - const result = await txClient.query(sql, values); - updatedCount = result.rowCount || 0; + const result = await txClient.query(sql, values); + const rowCount = result.rowCount || 0; + updatedCount += rowCount; + + console.log(`✅ 그룹 ${i + 1} UPDATE 완료: ${rowCount}건`); + } logger.info( - `✅ UPDATE 완료 (내부 DB, 일괄 처리): ${targetTable}, ${updatedCount}건` + `✅ UPDATE 완료 (내부 DB, 그룹별 처리): ${targetTable}, 총 ${updatedCount}건` ); // 업데이트된 데이터는 원본 배열 반환 (실제 DB에서 다시 조회하지 않음) @@ -3216,10 +3230,12 @@ export class NodeFlowExecutionService { // 입력 데이터가 없으면 빈 배열 반환 if (!inputData || !Array.isArray(inputData) || inputData.length === 0) { logger.warn("⚠️ 집계할 입력 데이터가 없습니다."); + logger.warn(`⚠️ inputData 타입: ${typeof inputData}, 값: ${JSON.stringify(inputData)?.substring(0, 200)}`); return []; } logger.info(`📥 입력 데이터: ${inputData.length}건`); + logger.info(`📥 입력 데이터 샘플: ${JSON.stringify(inputData[0])?.substring(0, 300)}`); logger.info(`📊 그룹 기준: ${groupByFields.length > 0 ? groupByFields.map((f: any) => f.field).join(", ") : "전체"}`); logger.info(`📊 집계 연산: ${aggregations.length}개`); @@ -3239,6 +3255,11 @@ export class NodeFlowExecutionService { } logger.info(`📊 그룹 수: ${groups.size}개`); + + // 디버깅: 각 그룹의 데이터 출력 + for (const [groupKey, groupRows] of groups) { + logger.info(`📊 그룹 [${groupKey}]: ${groupRows.length}건, inbound_qty 합계: ${groupRows.reduce((sum, row) => sum + parseFloat(row.inbound_qty || 0), 0)}`); + } // 각 그룹에 대해 집계 수행 const results: any[] = []; diff --git a/frontend/components/webtypes/RepeaterInput.tsx b/frontend/components/webtypes/RepeaterInput.tsx index ce9d4cf6..3116b2c6 100644 --- a/frontend/components/webtypes/RepeaterInput.tsx +++ b/frontend/components/webtypes/RepeaterInput.tsx @@ -91,6 +91,8 @@ export const RepeaterInput: React.FC = ({ fields.forEach((field) => { item[field.name] = ""; }); + // 🆕 새 항목임을 표시하는 플래그 추가 (백엔드에서 새 레코드로 처리) + item._isNewItem = true; return item; } @@ -113,6 +115,11 @@ export const RepeaterInput: React.FC = ({ } }); + // 🆕 기존 레코드임을 표시 (id가 있는 경우) + if (updatedItem.id) { + updatedItem._existingRecord = true; + } + return hasChange ? updatedItem : item; }); @@ -125,7 +132,12 @@ export const RepeaterInput: React.FC = ({ : updatedValue; onChange?.(dataWithMeta); } else { - setItems(value); + // 🆕 기존 레코드 플래그 추가 + const valueWithFlag = value.map(item => ({ + ...item, + _existingRecord: !!item.id, + })); + setItems(valueWithFlag); } } }, [value]); diff --git a/frontend/lib/registry/components/repeater-field-group/RepeaterFieldGroupRenderer.tsx b/frontend/lib/registry/components/repeater-field-group/RepeaterFieldGroupRenderer.tsx index c47ff3c9..12219280 100644 --- a/frontend/lib/registry/components/repeater-field-group/RepeaterFieldGroupRenderer.tsx +++ b/frontend/lib/registry/components/repeater-field-group/RepeaterFieldGroupRenderer.tsx @@ -135,6 +135,7 @@ const RepeaterFieldGroupComponent: React.FC = (props) => ...item, _targetTable: targetTable, _originalItemIds: itemIds, // 🆕 원본 ID 목록도 함께 전달 + _existingRecord: !!item.id, // 🆕 기존 레코드 플래그 (id가 있으면 기존 레코드) })); onChange(dataWithMeta); } @@ -228,17 +229,23 @@ const RepeaterFieldGroupComponent: React.FC = (props) => // 반복 필드 그룹에 정의된 필드 + 시스템 필드만 유지 const definedFields = configRef.current.fields || []; const definedFieldNames = new Set(definedFields.map((f: any) => f.name)); - // 시스템 필드 및 필수 필드 추가 - const systemFields = new Set(['id', '_targetTable', 'created_date', 'updated_date', 'writer', 'company_code']); + // 시스템 필드 및 필수 필드 추가 (id는 제외 - 새 레코드로 처리하기 위해) + const systemFields = new Set(['_targetTable', '_isNewItem', 'created_date', 'updated_date', 'writer', 'company_code']); const filteredData = normalizedData.map((item: any) => { const filteredItem: Record = {}; Object.keys(item).forEach(key => { + // 🆕 id 필드는 제외 (새 레코드로 저장되도록) + if (key === 'id') { + return; // id 필드 제외 + } // 정의된 필드이거나 시스템 필드인 경우만 포함 if (definedFieldNames.has(key) || systemFields.has(key)) { filteredItem[key] = item[key]; } }); + // 🆕 새 항목임을 표시하는 플래그 추가 + filteredItem._isNewItem = true; return filteredItem; }); @@ -259,16 +266,16 @@ const RepeaterFieldGroupComponent: React.FC = (props) => newItems = filteredData; addedCount = filteredData.length; } else { - // 🆕 중복 체크: id 또는 고유 식별자를 기준으로 이미 존재하는 항목 제외 - const existingIds = new Set( + // 🆕 중복 체크: item_code를 기준으로 이미 존재하는 항목 제외 (id는 사용하지 않음) + const existingItemCodes = new Set( currentValue - .map((item: any) => item.id || item.po_item_id || item.item_id) + .map((item: any) => item.item_code) .filter(Boolean) ); const uniqueNewItems = filteredData.filter((item: any) => { - const itemId = item.id || item.po_item_id || item.item_id; - if (itemId && existingIds.has(itemId)) { + const itemCode = item.item_code; + if (itemCode && existingItemCodes.has(itemCode)) { duplicateCount++; return false; // 중복 항목 제외 } @@ -291,11 +298,12 @@ const RepeaterFieldGroupComponent: React.FC = (props) => setGroupedData(newItems); // 🆕 SplitPanelContext에 추가된 항목 ID 등록 (좌측 테이블 필터링용) + // item_code를 기준으로 등록 (id는 새 레코드라 없을 수 있음) if (splitPanelContext?.addItemIds && addedCount > 0) { - const newItemIds = newItems - .map((item: any) => String(item.id || item.po_item_id || item.item_id)) + const newItemCodes = newItems + .map((item: any) => String(item.item_code)) .filter(Boolean); - splitPanelContext.addItemIds(newItemIds); + splitPanelContext.addItemIds(newItemCodes); } // JSON 문자열로 변환하여 저장 -- 2.43.0 From 354f006e847120a08d1d3ec26f7e8ae7cd336435 Mon Sep 17 00:00:00 2001 From: kjs Date: Fri, 5 Dec 2025 17:46:22 +0900 Subject: [PATCH 14/64] =?UTF-8?q?=ED=86=A0=ED=81=B0=20=EC=9E=90=EB=8F=99?= =?UTF-8?q?=20=EA=B0=B1=EC=8B=A0=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= =?UTF-8?q?=20=EB=B0=8F=20=EC=97=90=EB=9F=AC=20=EC=B2=98=EB=A6=AC=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend-node/src/app.ts | 5 + backend-node/src/middleware/authMiddleware.ts | 13 +- frontend/lib/api/client.ts | 201 ++++++++++++++++-- 3 files changed, 199 insertions(+), 20 deletions(-) diff --git a/backend-node/src/app.ts b/backend-node/src/app.ts index d214c19a..d36ad8c3 100644 --- a/backend-node/src/app.ts +++ b/backend-node/src/app.ts @@ -8,6 +8,7 @@ import path from "path"; import config from "./config/environment"; import { logger } from "./utils/logger"; import { errorHandler } from "./middleware/errorHandler"; +import { refreshTokenIfNeeded } from "./middleware/authMiddleware"; // 라우터 임포트 import authRoutes from "./routes/authRoutes"; @@ -168,6 +169,10 @@ const limiter = rateLimit({ }); app.use("/api/", limiter); +// 토큰 자동 갱신 미들웨어 (모든 API 요청에 적용) +// 토큰이 1시간 이내에 만료되는 경우 자동으로 갱신하여 응답 헤더에 포함 +app.use("/api/", refreshTokenIfNeeded); + // 헬스 체크 엔드포인트 app.get("/health", (req, res) => { res.status(200).json({ diff --git a/backend-node/src/middleware/authMiddleware.ts b/backend-node/src/middleware/authMiddleware.ts index a54c64c6..6d8c7bda 100644 --- a/backend-node/src/middleware/authMiddleware.ts +++ b/backend-node/src/middleware/authMiddleware.ts @@ -54,16 +54,17 @@ export const authenticateToken = ( next(); } catch (error) { - logger.error( - `인증 실패: ${error instanceof Error ? error.message : "Unknown error"} (${req.ip})` - ); + const errorMessage = error instanceof Error ? error.message : "Unknown error"; + logger.error(`인증 실패: ${errorMessage} (${req.ip})`); + // 토큰 만료 에러인지 확인 + const isTokenExpired = errorMessage.includes("만료"); + res.status(401).json({ success: false, error: { - code: "INVALID_TOKEN", - details: - error instanceof Error ? error.message : "토큰 검증에 실패했습니다.", + code: isTokenExpired ? "TOKEN_EXPIRED" : "INVALID_TOKEN", + details: errorMessage || "토큰 검증에 실패했습니다.", }, }); } diff --git a/frontend/lib/api/client.ts b/frontend/lib/api/client.ts index 7dc811c9..f4a3ccf7 100644 --- a/frontend/lib/api/client.ts +++ b/frontend/lib/api/client.ts @@ -58,6 +58,18 @@ const TokenManager = { return null; }, + setToken: (token: string): void => { + if (typeof window !== "undefined") { + localStorage.setItem("authToken", token); + } + }, + + removeToken: (): void => { + if (typeof window !== "undefined") { + localStorage.removeItem("authToken"); + } + }, + isTokenExpired: (token: string): boolean => { try { const payload = JSON.parse(atob(token.split(".")[1])); @@ -66,8 +78,147 @@ const TokenManager = { return true; } }, + + // 토큰이 곧 만료되는지 확인 (30분 이내) + isTokenExpiringSoon: (token: string): boolean => { + try { + const payload = JSON.parse(atob(token.split(".")[1])); + const expiryTime = payload.exp * 1000; + const currentTime = Date.now(); + const thirtyMinutes = 30 * 60 * 1000; // 30분 + return expiryTime - currentTime < thirtyMinutes && expiryTime > currentTime; + } catch { + return false; + } + }, + + // 토큰 만료까지 남은 시간 (밀리초) + getTimeUntilExpiry: (token: string): number => { + try { + const payload = JSON.parse(atob(token.split(".")[1])); + return payload.exp * 1000 - Date.now(); + } catch { + return 0; + } + }, }; +// 토큰 갱신 중복 방지 플래그 +let isRefreshing = false; +let refreshPromise: Promise | null = null; + +// 토큰 갱신 함수 +const refreshToken = async (): Promise => { + // 이미 갱신 중이면 기존 Promise 반환 + if (isRefreshing && refreshPromise) { + return refreshPromise; + } + + isRefreshing = true; + refreshPromise = (async () => { + try { + const currentToken = TokenManager.getToken(); + if (!currentToken) { + return null; + } + + const response = await axios.post( + `${API_BASE_URL}/auth/refresh`, + {}, + { + headers: { + Authorization: `Bearer ${currentToken}`, + }, + } + ); + + if (response.data?.success && response.data?.data?.token) { + const newToken = response.data.data.token; + TokenManager.setToken(newToken); + console.log("[TokenManager] 토큰 갱신 성공"); + return newToken; + } + return null; + } catch (error) { + console.error("[TokenManager] 토큰 갱신 실패:", error); + return null; + } finally { + isRefreshing = false; + refreshPromise = null; + } + })(); + + return refreshPromise; +}; + +// 자동 토큰 갱신 타이머 +let tokenRefreshTimer: NodeJS.Timeout | null = null; + +// 자동 토큰 갱신 시작 +const startAutoRefresh = (): void => { + if (typeof window === "undefined") return; + + // 기존 타이머 정리 + if (tokenRefreshTimer) { + clearInterval(tokenRefreshTimer); + } + + // 10분마다 토큰 상태 확인 + tokenRefreshTimer = setInterval(async () => { + const token = TokenManager.getToken(); + if (token && TokenManager.isTokenExpiringSoon(token)) { + console.log("[TokenManager] 토큰 만료 임박, 자동 갱신 시작..."); + await refreshToken(); + } + }, 10 * 60 * 1000); // 10분 + + // 페이지 로드 시 즉시 확인 + const token = TokenManager.getToken(); + if (token && TokenManager.isTokenExpiringSoon(token)) { + refreshToken(); + } +}; + +// 사용자 활동 감지 및 토큰 갱신 +const setupActivityBasedRefresh = (): void => { + if (typeof window === "undefined") return; + + let lastActivity = Date.now(); + const activityThreshold = 5 * 60 * 1000; // 5분 + + const handleActivity = (): void => { + const now = Date.now(); + // 마지막 활동으로부터 5분 이상 지났으면 토큰 상태 확인 + if (now - lastActivity > activityThreshold) { + const token = TokenManager.getToken(); + if (token && TokenManager.isTokenExpiringSoon(token)) { + refreshToken(); + } + } + lastActivity = now; + }; + + // 사용자 활동 이벤트 감지 + ["click", "keydown", "scroll", "mousemove"].forEach((event) => { + // 너무 잦은 호출 방지를 위해 throttle 적용 + let throttleTimer: NodeJS.Timeout | null = null; + window.addEventListener(event, () => { + if (!throttleTimer) { + throttleTimer = setTimeout(() => { + handleActivity(); + throttleTimer = null; + }, 1000); // 1초 throttle + } + }, { passive: true }); + }); +}; + +// 클라이언트 사이드에서 자동 갱신 시작 +if (typeof window !== "undefined") { + startAutoRefresh(); + setupActivityBasedRefresh(); +} + // Axios 인스턴스 생성 export const apiClient = axios.create({ baseURL: API_BASE_URL, @@ -138,9 +289,15 @@ apiClient.interceptors.request.use( // 응답 인터셉터 apiClient.interceptors.response.use( (response: AxiosResponse) => { + // 백엔드에서 보내주는 새로운 토큰 처리 + const newToken = response.headers["x-new-token"]; + if (newToken) { + TokenManager.setToken(newToken); + console.log("[TokenManager] 서버에서 새 토큰 수신, 저장 완료"); + } return response; }, - (error: AxiosError) => { + async (error: AxiosError) => { const status = error.response?.status; const url = error.config?.url; @@ -153,7 +310,7 @@ apiClient.interceptors.response.use( } // 일반 409 에러는 간단한 로그만 출력 - console.warn("⚠️ 데이터 중복:", { + console.warn("데이터 중복:", { url: url, message: (error.response?.data as { message?: string })?.message || "중복된 데이터입니다.", }); @@ -161,7 +318,7 @@ apiClient.interceptors.response.use( } // 다른 에러들은 기존처럼 상세 로그 출력 - console.error("❌ API 응답 오류:", { + console.error("API 응답 오류:", { status: status, statusText: error.response?.statusText, url: url, @@ -170,24 +327,40 @@ apiClient.interceptors.response.use( headers: error.config?.headers, }); - // 401 에러 시 상세 정보 출력 - if (status === 401) { - console.error("🚨 401 Unauthorized 오류 상세 정보:", { + // 401 에러 처리 + if (status === 401 && typeof window !== "undefined") { + const errorData = error.response?.data as { error?: { code?: string } }; + const errorCode = errorData?.error?.code; + + console.warn("[Auth] 401 오류 발생:", { url: url, - method: error.config?.method, - headers: error.config?.headers, - requestData: error.config?.data, - responseData: error.response?.data, + errorCode: errorCode, token: TokenManager.getToken() ? "존재" : "없음", }); - } - // 401 에러 시 토큰 제거 및 로그인 페이지로 리다이렉트 - if (status === 401 && typeof window !== "undefined") { - localStorage.removeItem("authToken"); + // 토큰 만료 에러인 경우 갱신 시도 + const originalRequest = error.config as typeof error.config & { _retry?: boolean }; + if (errorCode === "TOKEN_EXPIRED" && originalRequest && !originalRequest._retry) { + console.log("[Auth] 토큰 만료, 갱신 시도..."); + originalRequest._retry = true; + + try { + const newToken = await refreshToken(); + if (newToken && originalRequest) { + originalRequest.headers.Authorization = `Bearer ${newToken}`; + return apiClient.request(originalRequest); + } + } catch (refreshError) { + console.error("[Auth] 토큰 갱신 실패:", refreshError); + } + } + + // 토큰 갱신 실패 또는 다른 401 에러인 경우 로그아웃 + TokenManager.removeToken(); // 로그인 페이지가 아닌 경우에만 리다이렉트 if (window.location.pathname !== "/login") { + console.log("[Auth] 로그인 페이지로 리다이렉트"); window.location.href = "/login"; } } -- 2.43.0 From f106afdf82298393ebfc95ea248afb6a12531d68 Mon Sep 17 00:00:00 2001 From: kjs Date: Mon, 8 Dec 2025 11:44:07 +0900 Subject: [PATCH 15/64] =?UTF-8?q?=ED=99=94=EB=A9=B4=20=EA=B0=99=EC=9D=B4?= =?UTF-8?q?=20=EC=A4=84=EC=96=B4=EB=93=A4=EA=B2=8C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/노드플로우_개선사항.md | 582 ++++++++++++++++++ .../app/(main)/screens/[screenId]/page.tsx | 12 +- 2 files changed, 588 insertions(+), 6 deletions(-) create mode 100644 docs/노드플로우_개선사항.md diff --git a/docs/노드플로우_개선사항.md b/docs/노드플로우_개선사항.md new file mode 100644 index 00000000..3fe6cde2 --- /dev/null +++ b/docs/노드플로우_개선사항.md @@ -0,0 +1,582 @@ +# 노드 플로우 기능 개선 사항 + +> 작성일: 2024-12-08 +> 상태: 분석 완료, 개선 대기 + +## 현재 구현 상태 + +### 잘 구현된 기능 + +| 기능 | 상태 | 설명 | +|------|------|------| +| 위상 정렬 실행 | 완료 | DAG 기반 레벨별 실행 | +| 트랜잭션 관리 | 완료 | 전체 플로우 단일 트랜잭션, 실패 시 자동 롤백 | +| 병렬 실행 | 완료 | 같은 레벨 노드 `Promise.allSettled`로 병렬 처리 | +| CRUD 액션 | 완료 | INSERT, UPDATE, DELETE, UPSERT 지원 | +| 외부 DB 연동 | 완료 | PostgreSQL, MySQL, MSSQL, Oracle 지원 | +| REST API 연동 | 완료 | GET, POST, PUT, DELETE 지원 | +| 조건 분기 | 완료 | 다양한 연산자 지원 | +| 데이터 변환 | 부분 완료 | UPPERCASE, TRIM, EXPLODE 등 기본 변환 | +| 집계 함수 | 완료 | SUM, COUNT, AVG, MIN, MAX, FIRST, LAST | + +### 관련 파일 + +- **백엔드 실행 엔진**: `backend-node/src/services/nodeFlowExecutionService.ts` +- **백엔드 라우트**: `backend-node/src/routes/dataflow/node-flows.ts` +- **프론트엔드 API**: `frontend/lib/api/nodeFlows.ts` +- **프론트엔드 에디터**: `frontend/components/dataflow/node-editor/FlowEditor.tsx` +- **타입 정의**: `backend-node/src/types/flow.ts` + +--- + +## 개선 필요 사항 + +### 1. [우선순위 높음] 실행 이력 로깅 + +**현재 상태**: 플로우 실행 이력이 저장되지 않음 + +**문제점**: +- 언제, 누가, 어떤 플로우를 실행했는지 추적 불가 +- 실패 원인 분석 어려움 +- 감사(Audit) 요구사항 충족 불가 + +**개선 방안**: + +```sql +-- db/migrations/XXX_add_node_flow_execution_log.sql +CREATE TABLE node_flow_execution_log ( + id SERIAL PRIMARY KEY, + flow_id INTEGER NOT NULL REFERENCES node_flows(flow_id) ON DELETE CASCADE, + execution_status VARCHAR(20) NOT NULL, -- 'success', 'failed', 'partial' + execution_time_ms INTEGER, + total_nodes INTEGER, + success_nodes INTEGER, + failed_nodes INTEGER, + skipped_nodes INTEGER, + executed_by VARCHAR(50), + company_code VARCHAR(20), + context_data JSONB, + result_summary JSONB, + error_message TEXT, + created_at TIMESTAMP DEFAULT NOW() +); + +CREATE INDEX idx_flow_execution_log_flow_id ON node_flow_execution_log(flow_id); +CREATE INDEX idx_flow_execution_log_created_at ON node_flow_execution_log(created_at DESC); +CREATE INDEX idx_flow_execution_log_company_code ON node_flow_execution_log(company_code); +``` + +**필요 작업**: +- [ ] 마이그레이션 파일 생성 +- [ ] `nodeFlowExecutionService.ts`에 로그 저장 로직 추가 +- [ ] 실행 이력 조회 API 추가 (`GET /api/dataflow/node-flows/:flowId/executions`) +- [ ] 프론트엔드 실행 이력 UI 추가 + +--- + +### 2. [우선순위 높음] 드라이런(Dry Run) 모드 + +**현재 상태**: 실제 데이터를 변경하지 않고 테스트할 방법 없음 + +**문제점**: +- 프로덕션 데이터에 직접 영향 +- 플로우 디버깅 어려움 +- 신규 플로우 검증 불가 + +**개선 방안**: + +```typescript +// nodeFlowExecutionService.ts +static async executeFlow( + flowId: number, + contextData: Record, + options: { dryRun?: boolean } = {} +): Promise { + if (options.dryRun) { + // 트랜잭션 시작 후 항상 롤백 + return transaction(async (client) => { + const result = await this.executeFlowInternal(flowId, contextData, client); + // 롤백을 위해 의도적으로 에러 발생 + throw new DryRunComplete(result); + }).catch((e) => { + if (e instanceof DryRunComplete) { + return { ...e.result, dryRun: true }; + } + throw e; + }); + } + // 기존 로직... +} +``` + +```typescript +// node-flows.ts 라우트 수정 +router.post("/:flowId/execute", async (req, res) => { + const dryRun = req.query.dryRun === 'true'; + const result = await NodeFlowExecutionService.executeFlow( + parseInt(flowId, 10), + enrichedContextData, + { dryRun } + ); + // ... +}); +``` + +**필요 작업**: +- [ ] `DryRunComplete` 예외 클래스 생성 +- [ ] `executeFlow` 메서드에 `dryRun` 옵션 추가 +- [ ] 라우트에 쿼리 파라미터 처리 추가 +- [ ] 프론트엔드 "테스트 실행" 버튼 추가 + +--- + +### 3. [우선순위 높음] 재시도 메커니즘 + +**현재 상태**: 외부 API/DB 호출 실패 시 재시도 없음 + +**문제점**: +- 일시적 네트워크 오류로 전체 플로우 실패 +- 외부 서비스 불안정 시 신뢰성 저하 + +**개선 방안**: + +```typescript +// utils/retry.ts +export async function withRetry( + fn: () => Promise, + options: { + maxRetries?: number; + delay?: number; + backoffMultiplier?: number; + retryOn?: (error: any) => boolean; + } = {} +): Promise { + const { + maxRetries = 3, + delay = 1000, + backoffMultiplier = 2, + retryOn = () => true + } = options; + + for (let attempt = 0; attempt < maxRetries; attempt++) { + try { + return await fn(); + } catch (error) { + if (attempt === maxRetries - 1 || !retryOn(error)) { + throw error; + } + const waitTime = delay * Math.pow(backoffMultiplier, attempt); + logger.warn(`재시도 ${attempt + 1}/${maxRetries}, ${waitTime}ms 후...`); + await new Promise(r => setTimeout(r, waitTime)); + } + } + throw new Error('재시도 횟수 초과'); +} +``` + +```typescript +// nodeFlowExecutionService.ts에서 사용 +const response = await withRetry( + () => axios({ method, url, headers, data, timeout }), + { + maxRetries: 3, + delay: 1000, + retryOn: (err) => err.code === 'ECONNRESET' || err.response?.status >= 500 + } +); +``` + +**필요 작업**: +- [ ] `withRetry` 유틸리티 함수 생성 +- [ ] REST API 호출 부분에 재시도 로직 적용 +- [ ] 외부 DB 연결 부분에 재시도 로직 적용 +- [ ] 노드별 재시도 설정 UI 추가 (선택사항) + +--- + +### 4. [우선순위 높음] 미완성 데이터 변환 함수 + +**현재 상태**: FORMAT, CALCULATE, JSON_EXTRACT, CUSTOM 변환이 미구현 + +**문제점**: +- 날짜/숫자 포맷팅 불가 +- 계산식 처리 불가 +- JSON 데이터 파싱 불가 + +**개선 방안**: + +```typescript +// nodeFlowExecutionService.ts - applyTransformation 메서드 수정 + +case "FORMAT": + return rows.map((row) => { + const value = row[sourceField]; + let formatted = value; + + if (transform.formatType === 'date') { + // dayjs 사용 + formatted = dayjs(value).format(transform.formatPattern || 'YYYY-MM-DD'); + } else if (transform.formatType === 'number') { + // 숫자 포맷팅 + const num = parseFloat(value); + if (transform.formatPattern === 'currency') { + formatted = num.toLocaleString('ko-KR', { style: 'currency', currency: 'KRW' }); + } else if (transform.formatPattern === 'percent') { + formatted = (num * 100).toFixed(transform.decimals || 0) + '%'; + } else { + formatted = num.toLocaleString('ko-KR', { maximumFractionDigits: transform.decimals || 2 }); + } + } + + return { ...row, [actualTargetField]: formatted }; + }); + +case "CALCULATE": + return rows.map((row) => { + // 간단한 수식 평가 (보안 주의!) + const expression = transform.expression; // 예: "price * quantity" + const result = evaluateExpression(expression, row); + return { ...row, [actualTargetField]: result }; + }); + +case "JSON_EXTRACT": + return rows.map((row) => { + const jsonValue = typeof row[sourceField] === 'string' + ? JSON.parse(row[sourceField]) + : row[sourceField]; + const extracted = jsonPath.query(jsonValue, transform.jsonPath); // JSONPath 라이브러리 사용 + return { ...row, [actualTargetField]: extracted[0] || null }; + }); +``` + +**필요 작업**: +- [ ] `dayjs` 라이브러리 추가 (날짜 포맷팅) +- [ ] `jsonpath` 라이브러리 추가 (JSON 추출) +- [ ] 안전한 수식 평가 함수 구현 (eval 대신) +- [ ] 각 변환 타입별 UI 설정 패널 추가 + +--- + +### 5. [우선순위 중간] 플로우 버전 관리 + +**현재 상태**: 플로우 수정 시 이전 버전 덮어씀 + +**문제점**: +- 실수로 수정한 플로우 복구 불가 +- 변경 이력 추적 불가 + +**개선 방안**: + +```sql +-- db/migrations/XXX_add_node_flow_versions.sql +CREATE TABLE node_flow_versions ( + id SERIAL PRIMARY KEY, + flow_id INTEGER NOT NULL REFERENCES node_flows(flow_id) ON DELETE CASCADE, + version INTEGER NOT NULL, + flow_data JSONB NOT NULL, + change_description TEXT, + created_by VARCHAR(50), + created_at TIMESTAMP DEFAULT NOW(), + UNIQUE(flow_id, version) +); + +CREATE INDEX idx_flow_versions_flow_id ON node_flow_versions(flow_id); +``` + +```typescript +// 플로우 수정 시 버전 저장 +async function updateNodeFlow(flowId, flowData, changeDescription, userId) { + // 현재 버전 조회 + const currentVersion = await queryOne( + 'SELECT COALESCE(MAX(version), 0) as max_version FROM node_flow_versions WHERE flow_id = $1', + [flowId] + ); + + // 새 버전 저장 + await query( + 'INSERT INTO node_flow_versions (flow_id, version, flow_data, change_description, created_by) VALUES ($1, $2, $3, $4, $5)', + [flowId, currentVersion.max_version + 1, flowData, changeDescription, userId] + ); + + // 기존 업데이트 로직... +} +``` + +**필요 작업**: +- [ ] 버전 테이블 마이그레이션 생성 +- [ ] 플로우 수정 시 버전 자동 저장 +- [ ] 버전 목록 조회 API (`GET /api/dataflow/node-flows/:flowId/versions`) +- [ ] 특정 버전으로 롤백 API (`POST /api/dataflow/node-flows/:flowId/rollback/:version`) +- [ ] 프론트엔드 버전 히스토리 UI + +--- + +### 6. [우선순위 중간] 복합 조건 지원 + +**현재 상태**: 조건 노드에서 단일 조건만 지원 + +**문제점**: +- 복잡한 비즈니스 로직 표현 불가 +- 여러 조건을 AND/OR로 조합 불가 + +**개선 방안**: + +```typescript +// 복합 조건 타입 정의 +interface ConditionGroup { + type: 'AND' | 'OR'; + conditions: (Condition | ConditionGroup)[]; +} + +interface Condition { + field: string; + operator: string; + value: any; +} + +// 조건 평가 함수 수정 +function evaluateConditionGroup(group: ConditionGroup, data: any): boolean { + const results = group.conditions.map(condition => { + if ('type' in condition) { + // 중첩된 그룹 + return evaluateConditionGroup(condition, data); + } else { + // 단일 조건 + return evaluateCondition(data[condition.field], condition.operator, condition.value); + } + }); + + return group.type === 'AND' + ? results.every(r => r) + : results.some(r => r); +} +``` + +**필요 작업**: +- [ ] 복합 조건 타입 정의 +- [ ] `evaluateConditionGroup` 함수 구현 +- [ ] 조건 노드 속성 패널 UI 수정 (AND/OR 그룹 빌더) + +--- + +### 7. [우선순위 중간] 비동기 실행 + +**현재 상태**: 동기 실행만 가능 (HTTP 요청 타임아웃 제한) + +**문제점**: +- 대용량 데이터 처리 시 타임아웃 +- 장시간 실행 플로우 처리 불가 + +**개선 방안**: + +```sql +-- 실행 큐 테이블 +CREATE TABLE node_flow_execution_queue ( + id SERIAL PRIMARY KEY, + flow_id INTEGER NOT NULL REFERENCES node_flows(flow_id), + execution_id UUID NOT NULL UNIQUE DEFAULT gen_random_uuid(), + status VARCHAR(20) NOT NULL DEFAULT 'queued', -- queued, running, completed, failed + context_data JSONB, + callback_url TEXT, + result JSONB, + error_message TEXT, + queued_by VARCHAR(50), + company_code VARCHAR(20), + queued_at TIMESTAMP DEFAULT NOW(), + started_at TIMESTAMP, + completed_at TIMESTAMP +); +``` + +```typescript +// 비동기 실행 API +router.post("/:flowId/execute-async", async (req, res) => { + const { callbackUrl, contextData } = req.body; + + // 큐에 추가 + const execution = await queryOne( + `INSERT INTO node_flow_execution_queue (flow_id, context_data, callback_url, queued_by, company_code) + VALUES ($1, $2, $3, $4, $5) RETURNING execution_id`, + [flowId, contextData, callbackUrl, req.user?.userId, req.user?.companyCode] + ); + + // 백그라운드 워커가 처리 + return res.json({ + success: true, + executionId: execution.execution_id, + status: 'queued' + }); +}); + +// 상태 조회 API +router.get("/executions/:executionId", async (req, res) => { + const execution = await queryOne( + 'SELECT * FROM node_flow_execution_queue WHERE execution_id = $1', + [req.params.executionId] + ); + return res.json({ success: true, data: execution }); +}); +``` + +**필요 작업**: +- [ ] 실행 큐 테이블 마이그레이션 +- [ ] 비동기 실행 API 추가 +- [ ] 백그라운드 워커 프로세스 구현 (별도 프로세스 또는 Bull 큐) +- [ ] 웹훅 콜백 기능 구현 +- [ ] 프론트엔드 비동기 실행 상태 폴링 UI + +--- + +### 8. [우선순위 낮음] 플로우 스케줄링 + +**현재 상태**: 수동 실행만 가능 + +**문제점**: +- 정기적인 배치 작업 자동화 불가 +- 특정 시간 예약 실행 불가 + +**개선 방안**: + +```sql +-- 스케줄 테이블 +CREATE TABLE node_flow_schedules ( + id SERIAL PRIMARY KEY, + flow_id INTEGER NOT NULL REFERENCES node_flows(flow_id) ON DELETE CASCADE, + schedule_name VARCHAR(100), + cron_expression VARCHAR(50) NOT NULL, -- '0 9 * * 1-5' (평일 9시) + context_data JSONB, + is_active BOOLEAN DEFAULT true, + last_run_at TIMESTAMP, + next_run_at TIMESTAMP, + created_by VARCHAR(50), + company_code VARCHAR(20), + created_at TIMESTAMP DEFAULT NOW(), + updated_at TIMESTAMP DEFAULT NOW() +); +``` + +**필요 작업**: +- [ ] 스케줄 테이블 마이그레이션 +- [ ] 스케줄 CRUD API +- [ ] node-cron 또는 Bull 스케줄러 통합 +- [ ] 스케줄 관리 UI + +--- + +### 9. [우선순위 낮음] 플러그인 아키텍처 + +**현재 상태**: 새 노드 타입 추가 시 `nodeFlowExecutionService.ts` 직접 수정 필요 + +**문제점**: +- 코드 복잡도 증가 +- 확장성 제한 + +**개선 방안**: + +```typescript +// interfaces/NodeHandler.ts +export interface NodeHandler { + type: string; + execute(node: FlowNode, inputData: any, context: ExecutionContext, client?: any): Promise; + validate?(node: FlowNode): { valid: boolean; errors: string[] }; +} + +// handlers/InsertActionHandler.ts +export class InsertActionHandler implements NodeHandler { + type = 'insertAction'; + + async execute(node, inputData, context, client) { + // 기존 executeInsertAction 로직 + } +} + +// NodeHandlerRegistry.ts +class NodeHandlerRegistry { + private handlers = new Map(); + + register(handler: NodeHandler) { + this.handlers.set(handler.type, handler); + } + + get(type: string): NodeHandler | undefined { + return this.handlers.get(type); + } +} + +// 사용 +const registry = new NodeHandlerRegistry(); +registry.register(new InsertActionHandler()); +registry.register(new UpdateActionHandler()); +// ... + +// executeNodeByType에서 +const handler = registry.get(node.type); +if (handler) { + return handler.execute(node, inputData, context, client); +} +``` + +**필요 작업**: +- [ ] `NodeHandler` 인터페이스 정의 +- [ ] 기존 노드 타입별 핸들러 클래스 분리 +- [ ] `NodeHandlerRegistry` 구현 +- [ ] 커스텀 노드 핸들러 등록 메커니즘 + +--- + +### 10. [우선순위 낮음] 프론트엔드 연동 강화 + +**현재 상태**: 기본 에디터 구현됨 + +**개선 필요 항목**: +- [ ] 실행 결과 시각화 (노드별 성공/실패 표시) +- [ ] 실시간 실행 진행률 표시 +- [ ] 드라이런 모드 UI +- [ ] 실행 이력 조회 UI +- [ ] 버전 히스토리 UI +- [ ] 노드 검증 결과 표시 + +--- + +## 프론트엔드 컴포넌트 CRUD 로직 이전 계획 + +현재 프론트엔드 컴포넌트에서 직접 CRUD를 수행하는 코드들을 노드 플로우로 이전해야 합니다. + +### 이전 대상 컴포넌트 + +| 컴포넌트 | 파일 위치 | 현재 로직 | 이전 우선순위 | +|----------|----------|----------|--------------| +| SplitPanelLayoutComponent | `frontend/lib/registry/components/split-panel-layout/` | createRecord, updateRecord, deleteRecord | 높음 | +| RepeatScreenModalComponent | `frontend/lib/registry/components/repeat-screen-modal/` | 다중 테이블 INSERT/UPDATE/DELETE | 높음 | +| UniversalFormModalComponent | `frontend/lib/registry/components/universal-form-modal/` | 다중 행 저장 | 높음 | +| SelectedItemsDetailInputComponent | `frontend/lib/registry/components/selected-items-detail-input/` | upsertGroupedRecords | 높음 | +| ButtonPrimaryComponent | `frontend/lib/registry/components/button-primary/` | 상태 변경 POST | 중간 | +| SimpleRepeaterTableComponent | `frontend/lib/registry/components/simple-repeater-table/` | 데이터 저장 POST | 중간 | + +### 이전 방식 + +1. **플로우 생성**: 각 컴포넌트의 저장 로직을 노드 플로우로 구현 +2. **프론트엔드 수정**: 직접 API 호출 대신 `executeNodeFlow(flowId, contextData)` 호출 +3. **화면 설정에 플로우 연결**: 버튼 액션에 실행할 플로우 ID 설정 + +```typescript +// 현재 (프론트엔드에서 직접 호출) +const result = await dataApi.createRecord(tableName, data); + +// 개선 후 (플로우 실행) +const result = await executeNodeFlow(flowId, { + formData: data, + tableName: tableName, + action: 'create' +}); +``` + +--- + +## 참고 자료 + +- 노드 플로우 실행 엔진: `backend-node/src/services/nodeFlowExecutionService.ts` +- 플로우 타입 정의: `backend-node/src/types/flow.ts` +- 프론트엔드 플로우 에디터: `frontend/components/dataflow/node-editor/FlowEditor.tsx` +- 프론트엔드 플로우 API: `frontend/lib/api/nodeFlows.ts` + diff --git a/frontend/app/(main)/screens/[screenId]/page.tsx b/frontend/app/(main)/screens/[screenId]/page.tsx index 86362ec8..f556dae2 100644 --- a/frontend/app/(main)/screens/[screenId]/page.tsx +++ b/frontend/app/(main)/screens/[screenId]/page.tsx @@ -216,7 +216,8 @@ function ScreenViewPage() { initAutoFill(); }, [layout, user]); - // 캔버스 비율 조정 (사용자 화면에 맞게 자동 스케일) - 모바일에서는 비활성화 + // 캔버스 비율 조정 (사용자 화면에 맞게 자동 스케일) - 초기 로딩 시에만 계산 + // 브라우저 배율 조정 시 메뉴와 화면이 함께 축소/확대되도록 resize 이벤트는 감지하지 않음 useEffect(() => { // 모바일 환경에서는 스케일 조정 비활성화 (반응형만 작동) if (isMobile) { @@ -262,13 +263,12 @@ function ScreenViewPage() { } }; - // 초기 측정 + // 초기 측정 (한 번만 실행) const timer = setTimeout(updateScale, 100); - window.addEventListener("resize", updateScale); + // resize 이벤트는 감지하지 않음 - 브라우저 배율 조정 시 메뉴와 화면이 함께 변경되도록 return () => { clearTimeout(timer); - window.removeEventListener("resize", updateScale); }; }, [layout, isMobile]); @@ -309,7 +309,7 @@ function ScreenViewPage() {
{/* 레이아웃 준비 중 로딩 표시 */} {!layoutReady && ( @@ -334,7 +334,7 @@ function ScreenViewPage() { maxHeight: `${screenHeight}px`, flexShrink: 0, transform: `scale(${scale})`, - transformOrigin: "center center", + transformOrigin: "top left", overflow: "visible", }} > -- 2.43.0 From 55d8474b62afdec1667e5f40a9f4f0b78dd9821e Mon Sep 17 00:00:00 2001 From: kjs Date: Mon, 8 Dec 2025 15:15:44 +0900 Subject: [PATCH 16/64] =?UTF-8?q?=EB=A0=89=20=EA=B5=AC=EC=A1=B0=EB=93=B1?= =?UTF-8?q?=EB=A1=9D=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/노드플로우_개선사항.md | 1 + frontend/lib/registry/components/index.ts | 3 + .../components/rack-structure/README.md | 148 ++++ .../rack-structure/RackStructureComponent.tsx | 724 ++++++++++++++++++ .../RackStructureConfigPanel.tsx | 287 +++++++ .../rack-structure/RackStructureRenderer.tsx | 44 ++ .../components/rack-structure/config.ts | 27 + .../components/rack-structure/index.ts | 74 ++ .../components/rack-structure/types.ts | 91 +++ ..._임베딩_및_데이터_전달_시스템_구현_계획서.md | 1 + 화면_임베딩_시스템_Phase1-4_구현_완료.md | 1 + 화면_임베딩_시스템_충돌_분석_보고서.md | 1 + 12 files changed, 1402 insertions(+) create mode 100644 frontend/lib/registry/components/rack-structure/README.md create mode 100644 frontend/lib/registry/components/rack-structure/RackStructureComponent.tsx create mode 100644 frontend/lib/registry/components/rack-structure/RackStructureConfigPanel.tsx create mode 100644 frontend/lib/registry/components/rack-structure/RackStructureRenderer.tsx create mode 100644 frontend/lib/registry/components/rack-structure/config.ts create mode 100644 frontend/lib/registry/components/rack-structure/index.ts create mode 100644 frontend/lib/registry/components/rack-structure/types.ts diff --git a/docs/노드플로우_개선사항.md b/docs/노드플로우_개선사항.md index 3fe6cde2..85ae186b 100644 --- a/docs/노드플로우_개선사항.md +++ b/docs/노드플로우_개선사항.md @@ -580,3 +580,4 @@ const result = await executeNodeFlow(flowId, { - 프론트엔드 플로우 에디터: `frontend/components/dataflow/node-editor/FlowEditor.tsx` - 프론트엔드 플로우 API: `frontend/lib/api/nodeFlows.ts` + diff --git a/frontend/lib/registry/components/index.ts b/frontend/lib/registry/components/index.ts index 2a5d45e4..ff9d9240 100644 --- a/frontend/lib/registry/components/index.ts +++ b/frontend/lib/registry/components/index.ts @@ -77,6 +77,9 @@ import "./screen-split-panel/ScreenSplitPanelRenderer"; // 화면 분할 패널 // 🆕 범용 폼 모달 컴포넌트 import "./universal-form-modal/UniversalFormModalRenderer"; // 섹션 기반 폼, 채번규칙, 다중 행 저장 지원 +// 🆕 렉 구조 설정 컴포넌트 +import "./rack-structure/RackStructureRenderer"; // 창고 렉 위치 일괄 생성 + /** * 컴포넌트 초기화 함수 */ diff --git a/frontend/lib/registry/components/rack-structure/README.md b/frontend/lib/registry/components/rack-structure/README.md new file mode 100644 index 00000000..bf03d8dc --- /dev/null +++ b/frontend/lib/registry/components/rack-structure/README.md @@ -0,0 +1,148 @@ +# 렉 구조 설정 컴포넌트 (Rack Structure Config) + +창고 렉 위치를 열 범위와 단 수로 일괄 생성하는 컴포넌트입니다. + +## 핵심 개념 + +이 컴포넌트는 **상위 폼의 필드 값을 읽어서** 위치 코드를 생성합니다. + +### 작동 방식 + +1. 사용자가 화면관리에서 테이블 컬럼(창고코드, 층, 구역 등)을 드래그하여 폼에 배치 +2. 렉 구조 컴포넌트 설정에서 **필드 매핑** 설정 (어떤 폼 필드가 창고/층/구역인지) +3. 런타임에 사용자가 폼 필드에 값을 입력하면, 렉 구조 컴포넌트가 해당 값을 읽어서 사용 + +## 기능 + +### 1. 렉 라인 구조 설정 + +- 조건 추가/삭제 +- 각 조건: 열 범위(시작~종료) + 단 수 +- 자동 위치 수 계산 (예: 1열~3열 x 3단 = 9개) +- 템플릿 저장/불러오기 + +### 2. 등록 미리보기 + +- 통계 카드 (총 위치, 열 수, 최대 단) +- 미리보기 생성 버튼 +- 생성될 위치 목록 테이블 + +## 설정 방법 + +### 1. 화면관리에서 배치 + +1. 상위에 테이블 컬럼들을 배치 (창고코드, 층, 구역, 위치유형, 사용여부) +2. 컴포넌트 팔레트에서 "렉 구조 설정" 선택 +3. 캔버스에 드래그하여 배치 + +### 2. 필드 매핑 설정 + +설정 패널에서 상위 폼의 어떤 필드를 사용할지 매핑합니다: + +| 매핑 항목 | 설명 | +| -------------- | ------------------------------------- | +| 창고 코드 필드 | 위치 코드 생성에 사용할 창고 코드 | +| 층 필드 | 위치 코드 생성에 사용할 층 | +| 구역 필드 | 위치 코드 생성에 사용할 구역 | +| 위치 유형 필드 | 미리보기 테이블에 표시할 위치 유형 | +| 사용 여부 필드 | 미리보기 테이블에 표시할 사용 여부 | + +### 예시 + +상위 폼에 다음 필드가 배치되어 있다면: +- `창고코드(조인)` → 필드명: `warehouse_code` +- `층` → 필드명: `floor` +- `구역` → 필드명: `zone` + +설정 패널에서: +- 창고 코드 필드: `warehouse_code` 선택 +- 층 필드: `floor` 선택 +- 구역 필드: `zone` 선택 + +## 위치 코드 생성 규칙 + +기본 패턴: `{창고코드}-{층}{구역}-{열:2자리}-{단}` + +예시 (창고: WH001, 층: 1, 구역: A): + +- WH001-1A-01-1 (01열, 1단) +- WH001-1A-01-2 (01열, 2단) +- WH001-1A-02-1 (02열, 1단) + +## 설정 옵션 + +| 옵션 | 타입 | 기본값 | 설명 | +| -------------- | ------- | ------ | ---------------- | +| maxConditions | number | 10 | 최대 조건 수 | +| maxRows | number | 99 | 최대 열 수 | +| maxLevels | number | 20 | 최대 단 수 | +| showTemplates | boolean | true | 템플릿 기능 표시 | +| showPreview | boolean | true | 미리보기 표시 | +| showStatistics | boolean | true | 통계 카드 표시 | +| readonly | boolean | false | 읽기 전용 | + +## 출력 데이터 + +`onChange` 콜백으로 생성된 위치 데이터 배열을 반환합니다: + +```typescript +interface GeneratedLocation { + rowNum: number; // 열 번호 + levelNum: number; // 단 번호 + locationCode: string; // 위치 코드 + locationName: string; // 위치명 + locationType?: string; // 위치 유형 + status?: string; // 사용 여부 + warehouseCode?: string; // 창고 코드 (매핑된 값) + floor?: string; // 층 (매핑된 값) + zone?: string; // 구역 (매핑된 값) +} +``` + +## 연동 테이블 + +`warehouse_location` 테이블과 연동됩니다: + +| 컬럼 | 설명 | +| ------------- | --------- | +| warehouse_id | 창고 ID | +| floor | 층 | +| zone | 구역 | +| row_num | 열 번호 | +| level_num | 단 번호 | +| location_code | 위치 코드 | +| location_name | 위치명 | +| location_type | 위치 유형 | +| status | 사용 여부 | + +## 예시 시나리오 + +### 시나리오: A구역에 1~3열은 3단, 4~6열은 5단 렉 생성 + +1. **상위 폼에서 기본 정보 입력** + - 창고: 제1창고 (WH001) - 드래그해서 배치한 필드 + - 층: 1 - 드래그해서 배치한 필드 + - 구역: A - 드래그해서 배치한 필드 + - 위치 유형: 선반 - 드래그해서 배치한 필드 + - 사용 여부: 사용 - 드래그해서 배치한 필드 + +2. **렉 구조 컴포넌트에서 조건 추가** + - 조건 1: 1~3열, 3단 → 9개 + - 조건 2: 4~6열, 5단 → 15개 + +3. **미리보기 생성** + - 총 위치: 24개 + - 열 수: 6개 + - 최대 단: 5단 + +4. **저장** + - 24개의 위치 데이터가 warehouse_location 테이블에 저장됨 + +## 필수 필드 검증 + +미리보기 생성 시 다음 필드가 입력되어 있어야 합니다: +- 창고 코드 +- 층 +- 구역 + +필드가 비어있으면 경고 메시지가 표시됩니다. diff --git a/frontend/lib/registry/components/rack-structure/RackStructureComponent.tsx b/frontend/lib/registry/components/rack-structure/RackStructureComponent.tsx new file mode 100644 index 00000000..f49e4462 --- /dev/null +++ b/frontend/lib/registry/components/rack-structure/RackStructureComponent.tsx @@ -0,0 +1,724 @@ +"use client"; + +import React, { useState, useCallback, useMemo, useEffect } from "react"; +import { Plus, X, Save, FolderOpen, RefreshCw, Eye, AlertCircle } from "lucide-react"; +import { Button } from "@/components/ui/button"; +import { Input } from "@/components/ui/input"; +import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; +import { + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogFooter, +} from "@/components/ui/dialog"; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from "@/components/ui/table"; +import { ScrollArea } from "@/components/ui/scroll-area"; +import { Alert, AlertDescription } from "@/components/ui/alert"; +import { cn } from "@/lib/utils"; +import { + RackStructureComponentProps, + RackLineCondition, + RackStructureTemplate, + GeneratedLocation, + RackStructureContext, +} from "./types"; + +// 고유 ID 생성 +const generateId = () => `cond_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`; + +// 조건 카드 컴포넌트 +interface ConditionCardProps { + condition: RackLineCondition; + index: number; + onUpdate: (id: string, updates: Partial) => void; + onRemove: (id: string) => void; + maxRows: number; + maxLevels: number; + readonly?: boolean; +} + +const ConditionCard: React.FC = ({ + condition, + index, + onUpdate, + onRemove, + maxRows, + maxLevels, + readonly, +}) => { + // 로컬 상태로 입력값 관리 + const [localValues, setLocalValues] = useState({ + startRow: condition.startRow.toString(), + endRow: condition.endRow.toString(), + levels: condition.levels.toString(), + }); + + // condition이 변경되면 로컬 상태 동기화 + useEffect(() => { + setLocalValues({ + startRow: condition.startRow.toString(), + endRow: condition.endRow.toString(), + levels: condition.levels.toString(), + }); + }, [condition.startRow, condition.endRow, condition.levels]); + + // 계산된 위치 수 + const locationCount = useMemo(() => { + const start = parseInt(localValues.startRow) || 0; + const end = parseInt(localValues.endRow) || 0; + const levels = parseInt(localValues.levels) || 0; + if (start > 0 && end >= start && levels > 0) { + return (end - start + 1) * levels; + } + return 0; + }, [localValues]); + + // 입력값 변경 핸들러 + const handleChange = (field: keyof typeof localValues, value: string) => { + setLocalValues((prev) => ({ ...prev, [field]: value })); + }; + + // blur 시 실제 업데이트 + const handleBlur = (field: keyof typeof localValues) => { + const numValue = parseInt(localValues[field]) || 0; + const clampedValue = Math.max(0, Math.min(numValue, field === "levels" ? maxLevels : maxRows)); + + setLocalValues((prev) => ({ ...prev, [field]: clampedValue.toString() })); + + const updateField = field === "startRow" ? "startRow" : field === "endRow" ? "endRow" : "levels"; + onUpdate(condition.id, { [updateField]: clampedValue }); + }; + + return ( +
+ {/* 헤더 */} +
+ 조건 {index + 1} + {!readonly && ( + + )} +
+ + {/* 내용 */} +
+ {/* 열 범위 */} +
+
+ +
+ handleChange("startRow", e.target.value)} + onBlur={() => handleBlur("startRow")} + disabled={readonly} + className="h-9 text-center" + /> + ~ + handleChange("endRow", e.target.value)} + onBlur={() => handleBlur("endRow")} + disabled={readonly} + className="h-9 text-center" + /> +
+
+
+ + handleChange("levels", e.target.value)} + onBlur={() => handleBlur("levels")} + disabled={readonly} + className="h-9 text-center" + /> +
+
+ + {/* 계산 결과 */} +
+ {locationCount > 0 ? ( + <> + {localValues.startRow}열 ~ {localValues.endRow}열 x {localValues.levels}단 ={" "} + {locationCount}개 + + ) : ( + 값을 입력하세요 + )} +
+
+
+ ); +}; + +// 메인 컴포넌트 +export const RackStructureComponent: React.FC = ({ + config, + context: propContext, + formData, + onChange, + onConditionsChange, + isPreview = false, +}) => { + // 조건 목록 + const [conditions, setConditions] = useState( + config.initialConditions || [] + ); + + // 템플릿 관련 상태 + const [templates, setTemplates] = useState([]); + const [isTemplateDialogOpen, setIsTemplateDialogOpen] = useState(false); + const [templateName, setTemplateName] = useState(""); + const [isSaveMode, setIsSaveMode] = useState(false); + + // 미리보기 데이터 + const [previewData, setPreviewData] = useState([]); + const [isPreviewGenerated, setIsPreviewGenerated] = useState(false); + + // 설정값 + const maxConditions = config.maxConditions || 10; + const maxRows = config.maxRows || 99; + const maxLevels = config.maxLevels || 20; + const readonly = config.readonly || isPreview; + const fieldMapping = config.fieldMapping || {}; + + // 필드 매핑을 통해 formData에서 컨텍스트 추출 + const context: RackStructureContext = useMemo(() => { + // propContext가 있으면 우선 사용 + if (propContext) return propContext; + + // formData와 fieldMapping을 사용하여 컨텍스트 생성 + if (!formData) return {}; + + return { + warehouseCode: fieldMapping.warehouseCodeField + ? formData[fieldMapping.warehouseCodeField] + : undefined, + warehouseName: fieldMapping.warehouseNameField + ? formData[fieldMapping.warehouseNameField] + : undefined, + floor: fieldMapping.floorField + ? formData[fieldMapping.floorField]?.toString() + : undefined, + zone: fieldMapping.zoneField + ? formData[fieldMapping.zoneField] + : undefined, + locationType: fieldMapping.locationTypeField + ? formData[fieldMapping.locationTypeField] + : undefined, + status: fieldMapping.statusField + ? formData[fieldMapping.statusField] + : undefined, + }; + }, [propContext, formData, fieldMapping]); + + // 필수 필드 검증 + const missingFields = useMemo(() => { + const missing: string[] = []; + if (!context.warehouseCode) missing.push("창고 코드"); + if (!context.floor) missing.push("층"); + if (!context.zone) missing.push("구역"); + return missing; + }, [context]); + + // 조건 변경 시 콜백 호출 + useEffect(() => { + onConditionsChange?.(conditions); + setIsPreviewGenerated(false); // 조건 변경 시 미리보기 초기화 + }, [conditions, onConditionsChange]); + + // 조건 추가 + const addCondition = useCallback(() => { + if (conditions.length >= maxConditions) return; + + // 마지막 조건의 다음 열부터 시작 + const lastCondition = conditions[conditions.length - 1]; + const startRow = lastCondition ? lastCondition.endRow + 1 : 1; + + const newCondition: RackLineCondition = { + id: generateId(), + startRow, + endRow: startRow + 2, + levels: 3, + }; + + setConditions((prev) => [...prev, newCondition]); + }, [conditions, maxConditions]); + + // 조건 업데이트 + const updateCondition = useCallback((id: string, updates: Partial) => { + setConditions((prev) => + prev.map((cond) => (cond.id === id ? { ...cond, ...updates } : cond)) + ); + }, []); + + // 조건 삭제 + const removeCondition = useCallback((id: string) => { + setConditions((prev) => prev.filter((cond) => cond.id !== id)); + }, []); + + // 통계 계산 + const statistics = useMemo(() => { + let totalLocations = 0; + let totalRows = 0; + let maxLevel = 0; + const rowSet = new Set(); + + conditions.forEach((cond) => { + if (cond.startRow > 0 && cond.endRow >= cond.startRow && cond.levels > 0) { + const rowCount = cond.endRow - cond.startRow + 1; + totalLocations += rowCount * cond.levels; + for (let r = cond.startRow; r <= cond.endRow; r++) { + rowSet.add(r); + } + maxLevel = Math.max(maxLevel, cond.levels); + } + }); + + totalRows = rowSet.size; + return { totalLocations, totalRows, maxLevel }; + }, [conditions]); + + // 위치 코드 생성 + const generateLocationCode = useCallback( + (row: number, level: number): { code: string; name: string } => { + const warehouseCode = context?.warehouseCode || "WH001"; + const floor = context?.floor || "1"; + const zone = context?.zone || "A"; + + // 코드 생성 (예: WH001-1A-01-1) + const code = `${warehouseCode}-${floor}${zone}-${row.toString().padStart(2, "0")}-${level}`; + + // 이름 생성 (예: A구역-01열-1단) + const name = `${zone}구역-${row.toString().padStart(2, "0")}열-${level}단`; + + return { code, name }; + }, + [context] + ); + + // 미리보기 생성 + const generatePreview = useCallback(() => { + // 필수 필드 검증 + if (missingFields.length > 0) { + alert(`다음 필드를 먼저 입력해주세요: ${missingFields.join(", ")}`); + return; + } + + const locations: GeneratedLocation[] = []; + + conditions.forEach((cond) => { + if (cond.startRow > 0 && cond.endRow >= cond.startRow && cond.levels > 0) { + for (let row = cond.startRow; row <= cond.endRow; row++) { + for (let level = 1; level <= cond.levels; level++) { + const { code, name } = generateLocationCode(row, level); + locations.push({ + rowNum: row, + levelNum: level, + locationCode: code, + locationName: name, + locationType: context?.locationType || "선반", + status: context?.status || "사용", + // 추가 필드 + warehouseCode: context?.warehouseCode, + floor: context?.floor, + zone: context?.zone, + }); + } + } + } + }); + + // 정렬: 열 -> 단 순서 + locations.sort((a, b) => { + if (a.rowNum !== b.rowNum) return a.rowNum - b.rowNum; + return a.levelNum - b.levelNum; + }); + + setPreviewData(locations); + setIsPreviewGenerated(true); + onChange?.(locations); + }, [conditions, context, generateLocationCode, onChange, missingFields]); + + // 템플릿 저장 + const saveTemplate = useCallback(() => { + if (!templateName.trim()) return; + + const newTemplate: RackStructureTemplate = { + id: generateId(), + name: templateName.trim(), + conditions: [...conditions], + createdAt: new Date().toISOString(), + }; + + setTemplates((prev) => [...prev, newTemplate]); + setTemplateName(""); + setIsTemplateDialogOpen(false); + }, [templateName, conditions]); + + // 템플릿 불러오기 + const loadTemplate = useCallback((template: RackStructureTemplate) => { + setConditions(template.conditions.map((c) => ({ ...c, id: generateId() }))); + setIsTemplateDialogOpen(false); + }, []); + + // 템플릿 삭제 + const deleteTemplate = useCallback((templateId: string) => { + setTemplates((prev) => prev.filter((t) => t.id !== templateId)); + }, []); + + return ( +
+ {/* 렉 라인 구조 설정 섹션 */} + + + +
+ 렉 라인 구조 설정 + + {!readonly && ( +
+ {config.showTemplates && ( + <> + + + )} + +
+ )} + + + {/* 필수 필드 경고 */} + {missingFields.length > 0 && ( + + + + 다음 필드를 먼저 입력해주세요: {missingFields.join(", ")} +
+ + (설정 패널에서 필드 매핑을 확인하세요) + +
+
+ )} + + {/* 현재 매핑된 값 표시 */} + {(context.warehouseCode || context.warehouseName || context.floor || context.zone) && ( +
+ {(context.warehouseCode || context.warehouseName) && ( + + 창고: {context.warehouseName || context.warehouseCode} + {context.warehouseName && context.warehouseCode && ` (${context.warehouseCode})`} + + )} + {context.floor && ( + + 층: {context.floor} + + )} + {context.zone && ( + + 구역: {context.zone} + + )} + {context.locationType && ( + + 유형: {context.locationType} + + )} + {context.status && ( + + 상태: {context.status} + + )} +
+ )} + + {/* 안내 메시지 */} +
+
    +
  1. + + 1 + + 조건 추가 버튼을 클릭하여 렉 라인 조건을 생성하세요 +
  2. +
  3. + + 2 + + 각 조건마다 열 범위와 단 수를 입력하세요 +
  4. +
  5. + + 3 + + 예시: 조건1(1~3열, 3단), 조건2(4~6열, 5단) +
  6. +
+
+ + {/* 조건 목록 또는 빈 상태 */} + {conditions.length === 0 ? ( +
+
📦
+

조건을 추가하여 렉 구조를 설정하세요

+ {!readonly && ( + + )} +
+ ) : ( +
+ {conditions.map((condition, index) => ( +
+ +
+ ))} +
+ )} +
+ + + {/* 등록 미리보기 섹션 */} + {config.showPreview && conditions.length > 0 && ( + + + + + 등록 미리보기 + + + + + {/* 통계 카드 */} + {config.showStatistics && ( +
+
+
총 위치
+
{statistics.totalLocations}개
+
+
+
열 수
+
{statistics.totalRows}개
+
+
+
최대 단
+
{statistics.maxLevel}단
+
+
+ )} + + {/* 미리보기 테이블 */} + {isPreviewGenerated && previewData.length > 0 ? ( +
+ +
+ + + No + 위치코드 + 위치명 + + 구역 + + + 유형 + 비고 + + + + {previewData.map((loc, idx) => ( + + {idx + 1} + {loc.locationCode} + {loc.locationName} + {context?.floor || "1"} + {context?.zone || "A"} + + {loc.rowNum.toString().padStart(2, "0")} + + {loc.levelNum} + {loc.locationType} + - + + ))} + +
+ +
+ ) : ( +
+ +

미리보기 생성 버튼을 클릭하여 결과를 확인하세요

+
+ )} + + + )} + + {/* 템플릿 다이얼로그 */} + + + + + {isSaveMode ? "템플릿 저장" : "템플릿 관리"} + + + + {isSaveMode ? ( +
+
+ + setTemplateName(e.target.value)} + placeholder="템플릿 이름을 입력하세요" + /> +
+ + + + +
+ ) : ( +
+ {/* 저장 버튼 */} + {conditions.length > 0 && ( + + )} + + {/* 템플릿 목록 */} + {templates.length > 0 ? ( +
+
저장된 템플릿
+ + {templates.map((template) => ( +
+
+
{template.name}
+
+ {template.conditions.length}개 조건 +
+
+
+ + +
+
+ ))} +
+
+ ) : ( +
+ 저장된 템플릿이 없습니다 +
+ )} +
+ )} +
+
+
+ ); +}; + +// Wrapper 컴포넌트 (레지스트리용) +export const RackStructureWrapper: React.FC = (props) => { + return ( +
+ +
+ ); +}; + + diff --git a/frontend/lib/registry/components/rack-structure/RackStructureConfigPanel.tsx b/frontend/lib/registry/components/rack-structure/RackStructureConfigPanel.tsx new file mode 100644 index 00000000..8f0c8177 --- /dev/null +++ b/frontend/lib/registry/components/rack-structure/RackStructureConfigPanel.tsx @@ -0,0 +1,287 @@ +"use client"; + +import React, { useState, useEffect } from "react"; +import { Label } from "@/components/ui/label"; +import { Input } from "@/components/ui/input"; +import { Switch } from "@/components/ui/switch"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import { RackStructureComponentConfig, FieldMapping } from "./types"; + +interface RackStructureConfigPanelProps { + config: RackStructureComponentConfig; + onChange: (config: RackStructureComponentConfig) => void; + // 화면관리에서 전달하는 테이블 컬럼 정보 + tables?: Array<{ + tableName: string; + tableLabel?: string; + columns: Array<{ + columnName: string; + columnLabel?: string; + dataType?: string; + }>; + }>; +} + +export const RackStructureConfigPanel: React.FC = ({ + config, + onChange, + tables = [], +}) => { + // 사용 가능한 컬럼 목록 추출 + const [availableColumns, setAvailableColumns] = useState< + Array<{ value: string; label: string }> + >([]); + + useEffect(() => { + // 모든 테이블의 컬럼을 플랫하게 추출 + const columns: Array<{ value: string; label: string }> = []; + tables.forEach((table) => { + table.columns.forEach((col) => { + columns.push({ + value: col.columnName, + label: col.columnLabel || col.columnName, + }); + }); + }); + setAvailableColumns(columns); + }, [tables]); + + const handleChange = (key: keyof RackStructureComponentConfig, value: any) => { + onChange({ ...config, [key]: value }); + }; + + const handleFieldMappingChange = (field: keyof FieldMapping, value: string) => { + const currentMapping = config.fieldMapping || {}; + onChange({ + ...config, + fieldMapping: { + ...currentMapping, + [field]: value === "__none__" ? undefined : value, + }, + }); + }; + + const fieldMapping = config.fieldMapping || {}; + + return ( +
+ {/* 필드 매핑 섹션 */} +
+
필드 매핑
+

+ 상위 폼에 배치된 필드 중 어떤 필드를 사용할지 선택하세요 +

+ + {/* 창고 코드 필드 */} +
+ + +
+ + {/* 창고명 필드 */} +
+ + +
+ + {/* 층 필드 */} +
+ + +
+ + {/* 구역 필드 */} +
+ + +
+ + {/* 위치 유형 필드 */} +
+ + +
+ + {/* 사용 여부 필드 */} +
+ + +
+
+ + {/* 제한 설정 */} +
+
제한 설정
+ +
+ + handleChange("maxConditions", parseInt(e.target.value) || 10)} + className="h-8" + /> +
+ +
+ + handleChange("maxRows", parseInt(e.target.value) || 99)} + className="h-8" + /> +
+ +
+ + handleChange("maxLevels", parseInt(e.target.value) || 20)} + className="h-8" + /> +
+
+ + {/* UI 설정 */} +
+
UI 설정
+ +
+ + handleChange("showTemplates", checked)} + /> +
+ +
+ + handleChange("showPreview", checked)} + /> +
+ +
+ + handleChange("showStatistics", checked)} + /> +
+ +
+ + handleChange("readonly", checked)} + /> +
+
+
+ ); +}; diff --git a/frontend/lib/registry/components/rack-structure/RackStructureRenderer.tsx b/frontend/lib/registry/components/rack-structure/RackStructureRenderer.tsx new file mode 100644 index 00000000..ab832f51 --- /dev/null +++ b/frontend/lib/registry/components/rack-structure/RackStructureRenderer.tsx @@ -0,0 +1,44 @@ +"use client"; + +import React from "react"; +import { AutoRegisteringComponentRenderer } from "../../AutoRegisteringComponentRenderer"; +import { RackStructureDefinition } from "./index"; +import { RackStructureComponent } from "./RackStructureComponent"; +import { GeneratedLocation } from "./types"; + +/** + * 렉 구조 설정 렌더러 + * 자동 등록 시스템을 사용하여 컴포넌트를 레지스트리에 등록 + */ +export class RackStructureRenderer extends AutoRegisteringComponentRenderer { + static componentDefinition = RackStructureDefinition; + + render(): React.ReactElement { + const { formData, isPreview, config } = this.props as any; + + return ( + + ); + } + + /** + * 생성된 위치 데이터 변경 핸들러 + */ + protected handleLocationsChange = (locations: GeneratedLocation[]) => { + // 생성된 위치 데이터를 formData에 저장 + this.updateComponent({ generatedLocations: locations }); + }; +} + +// 자동 등록 실행 +RackStructureRenderer.registerSelf(); + +// Hot Reload 지원 (개발 모드) +if (process.env.NODE_ENV === "development") { + RackStructureRenderer.enableHotReload(); +} diff --git a/frontend/lib/registry/components/rack-structure/config.ts b/frontend/lib/registry/components/rack-structure/config.ts new file mode 100644 index 00000000..09d9d04b --- /dev/null +++ b/frontend/lib/registry/components/rack-structure/config.ts @@ -0,0 +1,27 @@ +/** + * 렉 구조 컴포넌트 기본 설정 + */ + +import { RackStructureComponentConfig } from "./types"; + +export const defaultConfig: RackStructureComponentConfig = { + // 기본 제한 + maxConditions: 10, + maxRows: 99, + maxLevels: 20, + + // 기본 코드 패턴 + codePattern: "{warehouseCode}-{floor}{zone}-{row:02d}-{level}", + namePattern: "{zone}구역-{row:02d}열-{level}단", + + // UI 설정 + showTemplates: true, + showPreview: true, + showStatistics: true, + readonly: false, + + // 초기 조건 없음 + initialConditions: [], +}; + + diff --git a/frontend/lib/registry/components/rack-structure/index.ts b/frontend/lib/registry/components/rack-structure/index.ts new file mode 100644 index 00000000..a84cc4c6 --- /dev/null +++ b/frontend/lib/registry/components/rack-structure/index.ts @@ -0,0 +1,74 @@ +"use client"; + +import React from "react"; +import { createComponentDefinition } from "../../utils/createComponentDefinition"; +import { ComponentCategory } from "@/types/component"; +import { RackStructureWrapper } from "./RackStructureComponent"; +import { RackStructureConfigPanel } from "./RackStructureConfigPanel"; +import { defaultConfig } from "./config"; + +/** + * 렉 구조 컴포넌트 정의 + * 창고 렉 위치를 일괄 생성하기 위한 구조 설정 컴포넌트 + */ +export const RackStructureDefinition = createComponentDefinition({ + id: "rack-structure", + name: "렉 구조 설정", + nameEng: "Rack Structure Config", + description: "창고 렉 위치를 열 범위와 단 수로 일괄 생성하는 컴포넌트", + category: ComponentCategory.INPUT, + webType: "component", + component: RackStructureWrapper, + defaultConfig: defaultConfig, + defaultSize: { + width: 1200, + height: 800, + gridColumnSpan: "12", + }, + configPanel: RackStructureConfigPanel, + icon: "LayoutGrid", + tags: ["창고", "렉", "위치", "구조", "일괄생성", "WMS"], + version: "1.0.0", + author: "개발팀", + documentation: ` +창고 렉 위치를 일괄 생성하기 위한 구조 설정 컴포넌트입니다. + +## 주요 기능 +- 조건별 열 범위 및 단 수 설정 +- 자동 위치 코드/이름 생성 +- 미리보기 및 통계 표시 +- 템플릿 저장/불러오기 + +## 사용 방법 +1. 상위 폼에서 창고, 층, 구역 정보 선택 +2. 조건 추가 버튼으로 렉 라인 조건 생성 +3. 각 조건의 열 범위와 단 수 입력 +4. 미리보기 생성으로 결과 확인 +5. 저장 시 생성된 위치 데이터가 함께 저장됨 + +## 컨텍스트 데이터 +formData에서 다음 필드를 자동으로 읽어옵니다: +- warehouse_id / warehouseId: 창고 ID +- warehouse_code / warehouseCode: 창고 코드 +- floor: 층 +- zone: 구역 +- location_type / locationType: 위치 유형 +- status: 사용 여부 + `, +}); + +// 타입 내보내기 +export type { + RackStructureComponentConfig, + RackStructureContext, + RackLineCondition, + RackStructureTemplate, + GeneratedLocation, +} from "./types"; + +// 컴포넌트 내보내기 +export { RackStructureComponent, RackStructureWrapper } from "./RackStructureComponent"; +export { RackStructureRenderer } from "./RackStructureRenderer"; +export { RackStructureConfigPanel } from "./RackStructureConfigPanel"; + + diff --git a/frontend/lib/registry/components/rack-structure/types.ts b/frontend/lib/registry/components/rack-structure/types.ts new file mode 100644 index 00000000..485a2208 --- /dev/null +++ b/frontend/lib/registry/components/rack-structure/types.ts @@ -0,0 +1,91 @@ +/** + * 렉 구조 컴포넌트 타입 정의 + */ + +// 렉 라인 조건 (열 범위 + 단 수) +export interface RackLineCondition { + id: string; + startRow: number; // 시작 열 + endRow: number; // 종료 열 + levels: number; // 단 수 +} + +// 렉 구조 템플릿 +export interface RackStructureTemplate { + id: string; + name: string; + conditions: RackLineCondition[]; + createdAt?: string; +} + +// 생성될 위치 데이터 +export interface GeneratedLocation { + rowNum: number; // 열 번호 + levelNum: number; // 단 번호 + locationCode: string; // 위치 코드 (예: WH001-1A-01-1) + locationName: string; // 위치명 (예: A구역-01열-1단) + locationType?: string; // 위치 유형 + status?: string; // 사용 여부 + // 추가 필드 (상위 폼에서 매핑된 값) + warehouseCode?: string; + floor?: string; + zone?: string; +} + +// 필드 매핑 설정 (상위 폼의 어떤 필드를 사용할지) +export interface FieldMapping { + warehouseCodeField?: string; // 창고 코드로 사용할 폼 필드명 + warehouseNameField?: string; // 창고명으로 사용할 폼 필드명 + floorField?: string; // 층으로 사용할 폼 필드명 + zoneField?: string; // 구역으로 사용할 폼 필드명 + locationTypeField?: string; // 위치 유형으로 사용할 폼 필드명 + statusField?: string; // 사용 여부로 사용할 폼 필드명 +} + +// 컴포넌트 설정 +export interface RackStructureComponentConfig { + // 기본 설정 + maxConditions?: number; // 최대 조건 수 (기본: 10) + maxRows?: number; // 최대 열 수 (기본: 99) + maxLevels?: number; // 최대 단 수 (기본: 20) + + // 필드 매핑 (상위 폼의 필드와 연결) + fieldMapping?: FieldMapping; + + // 위치 코드 생성 규칙 + codePattern?: string; // 코드 패턴 (예: "{warehouse}-{floor}{zone}-{row:02d}-{level}") + namePattern?: string; // 이름 패턴 (예: "{zone}구역-{row:02d}열-{level}단") + + // UI 설정 + showTemplates?: boolean; // 템플릿 기능 표시 + showPreview?: boolean; // 미리보기 표시 + showStatistics?: boolean; // 통계 카드 표시 + readonly?: boolean; // 읽기 전용 + + // 초기값 + initialConditions?: RackLineCondition[]; +} + +// 상위 폼에서 전달받는 컨텍스트 데이터 +export interface RackStructureContext { + warehouseId?: string; // 창고 ID + warehouseCode?: string; // 창고 코드 (예: WH001) + warehouseName?: string; // 창고명 (예: 제1창고) + floor?: string; // 층 (예: 1) + zone?: string; // 구역 (예: A) + locationType?: string; // 위치 유형 (예: 선반) + status?: string; // 사용 여부 (예: 사용) +} + +// 컴포넌트 Props +export interface RackStructureComponentProps { + config: RackStructureComponentConfig; + context?: RackStructureContext; + formData?: Record; // 상위 폼 데이터 (필드 매핑에 사용) + onChange?: (locations: GeneratedLocation[]) => void; + onConditionsChange?: (conditions: RackLineCondition[]) => void; + isPreview?: boolean; + tableName?: string; +} + + diff --git a/화면_임베딩_및_데이터_전달_시스템_구현_계획서.md b/화면_임베딩_및_데이터_전달_시스템_구현_계획서.md index 313a7567..29da36f1 100644 --- a/화면_임베딩_및_데이터_전달_시스템_구현_계획서.md +++ b/화면_임베딩_및_데이터_전달_시스템_구현_계획서.md @@ -1682,3 +1682,4 @@ const 출고등록_설정: ScreenSplitPanel = { + diff --git a/화면_임베딩_시스템_Phase1-4_구현_완료.md b/화면_임베딩_시스템_Phase1-4_구현_완료.md index 373b6ec7..2f382cb3 100644 --- a/화면_임베딩_시스템_Phase1-4_구현_완료.md +++ b/화면_임베딩_시스템_Phase1-4_구현_완료.md @@ -529,3 +529,4 @@ const { data: config } = await getScreenSplitPanel(screenId); + diff --git a/화면_임베딩_시스템_충돌_분석_보고서.md b/화면_임베딩_시스템_충돌_분석_보고서.md index 5d315706..8e4cdbd2 100644 --- a/화면_임베딩_시스템_충돌_분석_보고서.md +++ b/화면_임베딩_시스템_충돌_분석_보고서.md @@ -516,3 +516,4 @@ function ScreenViewPage() { + -- 2.43.0 From 179ff5b68b9959fae8864c3519ec09c15f84c617 Mon Sep 17 00:00:00 2001 From: leeheejin Date: Fri, 5 Dec 2025 16:44:58 +0900 Subject: [PATCH 17/64] =?UTF-8?q?=EC=9D=BC=EB=8B=A8=20=EC=9B=94=EC=9A=94?= =?UTF-8?q?=EC=9D=BC=EC=97=90=20=EC=83=81=EC=9D=98=ED=95=B4=EC=95=BC?= =?UTF-8?q?=ED=95=B4=EC=84=9C=20=EC=97=AC=EA=B8=B0=EC=97=90=EB=8B=A4?= =?UTF-8?q?=EB=A7=8C=20=EC=BB=A4=EB=B0=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../table-list/TableListComponent.tsx | 3204 ++++++++++++++++- 1 file changed, 3059 insertions(+), 145 deletions(-) diff --git a/frontend/lib/registry/components/table-list/TableListComponent.tsx b/frontend/lib/registry/components/table-list/TableListComponent.tsx index 64e6e540..85155eb2 100644 --- a/frontend/lib/registry/components/table-list/TableListComponent.tsx +++ b/frontend/lib/registry/components/table-list/TableListComponent.tsx @@ -22,7 +22,18 @@ import { X, Layers, ChevronDown, + Filter, + Check, + Download, + FileSpreadsheet, + Copy, + ClipboardCopy, + Edit, + CheckSquare, + Trash2, } from "lucide-react"; +import * as XLSX from "xlsx"; +import { FileText, ChevronRightIcon } from "lucide-react"; import { Checkbox } from "@/components/ui/checkbox"; import { cn } from "@/lib/utils"; import { toast } from "sonner"; @@ -62,6 +73,7 @@ interface GroupedData { groupValues: Record; items: any[]; count: number; + summary?: Record; // 🆕 그룹별 소계 } // ======================================== @@ -125,6 +137,35 @@ const debouncedApiCall = (key: string, fn: (...args: T) => P }; }; +// ======================================== +// Filter Builder 인터페이스 +// ======================================== + +interface FilterCondition { + id: string; + column: string; + operator: + | "equals" + | "notEquals" + | "contains" + | "notContains" + | "startsWith" + | "endsWith" + | "greaterThan" + | "lessThan" + | "greaterOrEqual" + | "lessOrEqual" + | "isEmpty" + | "isNotEmpty"; + value: string; +} + +interface FilterGroup { + id: string; + logic: "AND" | "OR"; + conditions: FilterCondition[]; +} + // ======================================== // Props 인터페이스 // ======================================== @@ -328,28 +369,153 @@ export const TableListComponent: React.FC = ({ } }, [columnVisibility, tableConfig.selectedTable, currentUserId]); + // 🆕 columnOrder를 visibleColumns 이전에 정의 (visibleColumns에서 사용) + const [columnOrder, setColumnOrder] = useState([]); + + // 🆕 visibleColumns를 상단에서 정의 (다른 useCallback/useMemo에서 사용하기 위해) + const visibleColumns = useMemo(() => { + let cols = (tableConfig.columns || []).filter((col) => col.visible !== false); + + // columnVisibility가 있으면 가시성 적용 + if (columnVisibility.length > 0) { + cols = cols.filter((col) => { + const visibilityConfig = columnVisibility.find((cv) => cv.columnName === col.columnName); + return visibilityConfig ? visibilityConfig.visible : true; + }); + } + + // 체크박스 컬럼 (나중에 위치 결정) + // 기본값: enabled가 undefined면 true로 처리 + let checkboxCol: ColumnConfig | null = null; + if (tableConfig.checkbox?.enabled ?? true) { + checkboxCol = { + columnName: "__checkbox__", + displayName: "", + webType: "checkbox", + visible: true, + sortable: false, + filterable: false, + width: 40, + }; + } + + // columnOrder가 있으면 해당 순서로 정렬 + if (columnOrder.length > 0) { + const orderMap = new Map(columnOrder.map((name, idx) => [name, idx])); + cols = [...cols].sort((a, b) => { + const aIdx = orderMap.get(a.columnName) ?? 9999; + const bIdx = orderMap.get(b.columnName) ?? 9999; + return aIdx - bIdx; + }); + } + + // 체크박스 위치 결정 + if (checkboxCol) { + const checkboxPosition = tableConfig.checkbox?.position || "left"; + if (checkboxPosition === "left") { + return [checkboxCol, ...cols]; + } else { + return [...cols, checkboxCol]; + } + } + + return cols; + }, [tableConfig.columns, tableConfig.checkbox, columnVisibility, columnOrder]); + const [data, setData] = useState[]>([]); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); - // 🆕 분할 패널에서 우측에 이미 추가된 항목 필터링 (좌측 테이블에만 적용) + // 🆕 컬럼 헤더 필터 상태 (상단에서 선언) + const [headerFilters, setHeaderFilters] = useState>>({}); + const [openFilterColumn, setOpenFilterColumn] = useState(null); + + // 🆕 Filter Builder (고급 필터) 관련 상태 - filteredData보다 먼저 정의해야 함 + const [filterGroups, setFilterGroups] = useState([]); + + // 🆕 분할 패널에서 우측에 이미 추가된 항목 필터링 (좌측 테이블에만 적용) + 헤더 필터 const filteredData = useMemo(() => { - // 분할 패널 좌측에 있고, 우측에 추가된 항목이 있는 경우에만 필터링 + let result = data; + + // 1. 분할 패널 좌측에 있고, 우측에 추가된 항목이 있는 경우 필터링 if (splitPanelPosition === "left" && splitPanelContext?.addedItemIds && splitPanelContext.addedItemIds.size > 0) { const addedIds = splitPanelContext.addedItemIds; - const filtered = data.filter((row) => { + result = result.filter((row) => { const rowId = String(row.id || row.po_item_id || row.item_id || ""); return !addedIds.has(rowId); }); - console.log("🔍 [TableList] 우측 추가 항목 필터링:", { - originalCount: data.length, - filteredCount: filtered.length, - addedIdsCount: addedIds.size, - }); - return filtered; } - return data; - }, [data, splitPanelPosition, splitPanelContext?.addedItemIds]); + + // 2. 헤더 필터 적용 (joinColumnMapping 사용 안 함 - 직접 컬럼명 사용) + if (Object.keys(headerFilters).length > 0) { + result = result.filter((row) => { + return Object.entries(headerFilters).every(([columnName, values]) => { + if (values.size === 0) return true; + + // 여러 가능한 컬럼명 시도 + const cellValue = row[columnName] ?? row[columnName.toLowerCase()] ?? row[columnName.toUpperCase()]; + const cellStr = cellValue !== null && cellValue !== undefined ? String(cellValue) : ""; + + return values.has(cellStr); + }); + }); + } + + // 3. 🆕 Filter Builder 적용 + if (filterGroups.length > 0) { + result = result.filter((row) => { + return filterGroups.every((group) => { + const validConditions = group.conditions.filter( + (c) => c.column && (c.operator === "isEmpty" || c.operator === "isNotEmpty" || c.value) + ); + if (validConditions.length === 0) return true; + + const evaluateCondition = (value: any, condition: typeof group.conditions[0]): boolean => { + const strValue = value !== null && value !== undefined ? String(value).toLowerCase() : ""; + const condValue = condition.value.toLowerCase(); + + switch (condition.operator) { + case "equals": + return strValue === condValue; + case "notEquals": + return strValue !== condValue; + case "contains": + return strValue.includes(condValue); + case "notContains": + return !strValue.includes(condValue); + case "startsWith": + return strValue.startsWith(condValue); + case "endsWith": + return strValue.endsWith(condValue); + case "greaterThan": + return parseFloat(strValue) > parseFloat(condValue); + case "lessThan": + return parseFloat(strValue) < parseFloat(condValue); + case "greaterOrEqual": + return parseFloat(strValue) >= parseFloat(condValue); + case "lessOrEqual": + return parseFloat(strValue) <= parseFloat(condValue); + case "isEmpty": + return strValue === "" || value === null || value === undefined; + case "isNotEmpty": + return strValue !== "" && value !== null && value !== undefined; + default: + return true; + } + }; + + if (group.logic === "AND") { + return validConditions.every((cond) => evaluateCondition(row[cond.column], cond)); + } else { + return validConditions.some((cond) => evaluateCondition(row[cond.column], cond)); + } + }); + }); + } + + return result; + }, [data, splitPanelPosition, splitPanelContext?.addedItemIds, headerFilters, filterGroups]); + const [currentPage, setCurrentPage] = useState(1); const [totalPages, setTotalPages] = useState(0); const [totalItems, setTotalItems] = useState(0); @@ -377,7 +543,7 @@ export const TableListComponent: React.FC = ({ const [selectedRows, setSelectedRows] = useState>(new Set()); const [columnWidths, setColumnWidths] = useState>({}); const [refreshTrigger, setRefreshTrigger] = useState(0); - const [columnOrder, setColumnOrder] = useState([]); + // columnOrder는 상단에서 정의됨 (visibleColumns보다 먼저 필요) const columnRefs = useRef>({}); const [isAllSelected, setIsAllSelected] = useState(false); const hasInitializedWidths = useRef(false); @@ -387,16 +553,117 @@ export const TableListComponent: React.FC = ({ const [isFilterSettingOpen, setIsFilterSettingOpen] = useState(false); const [visibleFilterColumns, setVisibleFilterColumns] = useState>(new Set()); + // 🆕 키보드 네비게이션 관련 상태 + const [focusedCell, setFocusedCell] = useState<{ rowIndex: number; colIndex: number } | null>(null); + const tableContainerRef = useRef(null); + + // 🆕 인라인 셀 편집 관련 상태 + const [editingCell, setEditingCell] = useState<{ + rowIndex: number; + colIndex: number; + columnName: string; + originalValue: any; + } | null>(null); + const [editingValue, setEditingValue] = useState(""); + const editInputRef = useRef(null); + + // 🆕 배치 편집 관련 상태 + const [editMode, setEditMode] = useState<"immediate" | "batch">("immediate"); // 편집 모드 + const [pendingChanges, setPendingChanges] = useState>(new Map()); // key: `${rowIndex}-${columnName}` + const [localEditedData, setLocalEditedData] = useState>>({}); // 로컬 수정 데이터 + + // 🆕 유효성 검사 관련 상태 + const [validationErrors, setValidationErrors] = useState>(new Map()); // key: `${rowIndex}-${columnName}` + + // 🆕 유효성 검사 규칙 타입 + type ValidationRule = { + required?: boolean; + min?: number; + max?: number; + minLength?: number; + maxLength?: number; + pattern?: RegExp; + customMessage?: string; + validate?: (value: any, row: any) => string | null; // 커스텀 검증 함수 (에러 메시지 또는 null) + }; + + // 🆕 Cascading Lookups 관련 상태 + const [cascadingOptions, setCascadingOptions] = useState>({}); + const [loadingCascading, setLoadingCascading] = useState>({}); + + // 🆕 Multi-Level Headers (Column Bands) 타입 + type ColumnBand = { + caption: string; + columns: string[]; // 포함될 컬럼명 배열 + }; + // 그룹 설정 관련 상태 const [groupByColumns, setGroupByColumns] = useState([]); const [collapsedGroups, setCollapsedGroups] = useState>(new Set()); + // 🆕 Master-Detail 관련 상태 + const [expandedRows, setExpandedRows] = useState>(new Set()); // 확장된 행 키 목록 + const [detailData, setDetailData] = useState>({}); // 상세 데이터 캐시 + + // 🆕 Drag & Drop 재정렬 관련 상태 + const [draggedRowIndex, setDraggedRowIndex] = useState(null); + const [dropTargetIndex, setDropTargetIndex] = useState(null); + const [isDragEnabled, setIsDragEnabled] = useState((tableConfig as any).enableRowDrag ?? false); + + // 🆕 Virtual Scrolling 관련 상태 + const [isVirtualScrollEnabled] = useState((tableConfig as any).virtualScroll ?? false); + const [scrollTop, setScrollTop] = useState(0); + const ROW_HEIGHT = 40; // 각 행의 높이 (픽셀) + const OVERSCAN = 5; // 버퍼로 추가 렌더링할 행 수 + const scrollContainerRef = useRef(null); + + // 🆕 Column Reordering 관련 상태 + const [draggedColumnIndex, setDraggedColumnIndex] = useState(null); + const [dropTargetColumnIndex, setDropTargetColumnIndex] = useState(null); + const [isColumnDragEnabled] = useState((tableConfig as any).enableColumnDrag ?? true); + + // 🆕 State Persistence: 통합 상태 키 + const tableStateKey = useMemo(() => { + if (!tableConfig.selectedTable) return null; + return `tableState_${tableConfig.selectedTable}`; + }, [tableConfig.selectedTable]); + + // 🆕 Real-Time Updates 관련 상태 + const [isRealTimeEnabled] = useState((tableConfig as any).realTimeUpdates ?? false); + const [wsConnectionStatus, setWsConnectionStatus] = useState<"connecting" | "connected" | "disconnected">("disconnected"); + const wsRef = useRef(null); + const reconnectTimeoutRef = useRef(null); + + // 🆕 Context Menu 관련 상태 + const [contextMenu, setContextMenu] = useState<{ + x: number; + y: number; + rowIndex: number; + colIndex: number; + row: any; + } | null>(null); + // 사용자 옵션 모달 관련 상태 const [isTableOptionsOpen, setIsTableOptionsOpen] = useState(false); const [showGridLines, setShowGridLines] = useState(true); const [viewMode, setViewMode] = useState<"table" | "card" | "grouped-card">("table"); const [frozenColumns, setFrozenColumns] = useState([]); + // 🆕 Search Panel (통합 검색) 관련 상태 + const [globalSearchTerm, setGlobalSearchTerm] = useState(""); + const [isSearchPanelOpen, setIsSearchPanelOpen] = useState(false); + const [searchHighlights, setSearchHighlights] = useState>(new Set()); // "rowIndex-colIndex" 형식 + + // 🆕 Filter Builder (고급 필터) 관련 상태 추가 + const [isFilterBuilderOpen, setIsFilterBuilderOpen] = useState(false); + const [activeFilterCount, setActiveFilterCount] = useState(0); + // 🆕 연결된 필터 처리 (셀렉트박스 등 다른 컴포넌트 값으로 필터링) useEffect(() => { const linkedFilters = tableConfig.linkedFilters; @@ -800,9 +1067,10 @@ export const TableListComponent: React.FC = ({ // 전역 저장소에 데이터 저장 if (tableConfig.selectedTable) { - // 컬럼 라벨 매핑 생성 + // 컬럼 라벨 매핑 생성 (tableConfig.columns 사용 - visibleColumns는 아직 정의되지 않음) + const cols = (tableConfig.columns || []).filter((col) => col.visible !== false); const labels: Record = {}; - visibleColumns.forEach((col) => { + cols.forEach((col) => { labels[col.columnName] = columnLabels[col.columnName] || col.columnName; }); @@ -815,7 +1083,7 @@ export const TableListComponent: React.FC = ({ { filterConditions: Object.keys(searchValues).length > 0 ? searchValues : undefined, searchTerm: searchTerm || undefined, - visibleColumns: visibleColumns.map((col) => col.columnName), + visibleColumns: cols.map((col) => col.columnName), columnLabels: labels, currentPage: currentPage, pageSize: localPageSize, @@ -1418,21 +1686,23 @@ export const TableListComponent: React.FC = ({ setError(null); // 🎯 Store에 필터 조건 저장 (엑셀 다운로드용) + // tableConfig.columns 사용 (visibleColumns는 이 시점에서 아직 정의되지 않을 수 있음) + const cols = (tableConfig.columns || []).filter((col) => col.visible !== false); const labels: Record = {}; - visibleColumns.forEach((col) => { + cols.forEach((col) => { labels[col.columnName] = columnLabels[col.columnName] || col.columnName; }); tableDisplayStore.setTableData( tableConfig.selectedTable, response.data || [], - visibleColumns.map((col) => col.columnName), + cols.map((col) => col.columnName), sortBy, sortOrder, { filterConditions: filters, searchTerm: search, - visibleColumns: visibleColumns.map((col) => col.columnName), + visibleColumns: cols.map((col) => col.columnName), columnLabels: labels, currentPage: page, pageSize: pageSize, @@ -1552,9 +1822,11 @@ export const TableListComponent: React.FC = ({ }); // 2단계: 정렬된 데이터를 컬럼 순서대로 재정렬 + // tableConfig.columns 사용 (visibleColumns는 이 시점에서 아직 정의되지 않을 수 있음) + const cols = (tableConfig.columns || []).filter((col) => col.visible !== false); const reorderedData = sortedData.map((row: any) => { const reordered: any = {}; - visibleColumns.forEach((col) => { + cols.forEach((col) => { if (col.columnName in row) { reordered[col.columnName] = row[col.columnName]; } @@ -1590,12 +1862,12 @@ export const TableListComponent: React.FC = ({ // 전역 저장소에 정렬된 데이터 저장 if (tableConfig.selectedTable) { const cleanColumnOrder = ( - columnOrder.length > 0 ? columnOrder : visibleColumns.map((c) => c.columnName) + columnOrder.length > 0 ? columnOrder : cols.map((c) => c.columnName) ).filter((col) => col !== "__checkbox__"); // 컬럼 라벨 정보도 함께 저장 const labels: Record = {}; - visibleColumns.forEach((col) => { + cols.forEach((col) => { labels[col.columnName] = columnLabels[col.columnName] || col.columnName; }); @@ -1608,7 +1880,7 @@ export const TableListComponent: React.FC = ({ { filterConditions: Object.keys(searchValues).length > 0 ? searchValues : undefined, searchTerm: searchTerm || undefined, - visibleColumns: visibleColumns.map((col) => col.columnName), + visibleColumns: cols.map((col) => col.columnName), columnLabels: labels, currentPage: currentPage, pageSize: localPageSize, @@ -1783,6 +2055,1495 @@ export const TableListComponent: React.FC = ({ console.log("행 클릭:", { row, index, isSelected: !isCurrentlySelected }); }; + // 🆕 셀 클릭 핸들러 (포커스 설정) + const handleCellClick = (rowIndex: number, colIndex: number, e: React.MouseEvent) => { + e.stopPropagation(); + setFocusedCell({ rowIndex, colIndex }); + // 테이블 컨테이너에 포커스 설정 (키보드 이벤트 수신용) + tableContainerRef.current?.focus(); + }; + + // 🆕 셀 더블클릭 핸들러 (편집 모드 진입) - visibleColumns 정의 후 사용 + const handleCellDoubleClick = useCallback((rowIndex: number, colIndex: number, columnName: string, value: any) => { + // 체크박스 컬럼은 편집 불가 + if (columnName === "__checkbox__") return; + + setEditingCell({ rowIndex, colIndex, columnName, originalValue: value }); + setEditingValue(value !== null && value !== undefined ? String(value) : ""); + setFocusedCell({ rowIndex, colIndex }); + }, []); + + // 🆕 편집 모드 진입 placeholder (실제 구현은 visibleColumns 정의 후) + const startEditingRef = useRef<() => void>(() => {}); + + // 🆕 각 컬럼의 고유값 목록 계산 + const columnUniqueValues = useMemo(() => { + const result: Record = {}; + + if (data.length === 0) return result; + + (tableConfig.columns || []).forEach((column: { columnName: string }) => { + if (column.columnName === "__checkbox__") return; + + const mappedColumnName = joinColumnMapping[column.columnName] || column.columnName; + const values = new Set(); + + data.forEach((row) => { + const val = row[mappedColumnName]; + if (val !== null && val !== undefined && val !== "") { + values.add(String(val)); + } + }); + + result[column.columnName] = Array.from(values).sort(); + }); + + return result; + }, [data, tableConfig.columns, joinColumnMapping]); + + // 🆕 헤더 필터 토글 + const toggleHeaderFilter = useCallback((columnName: string, value: string) => { + setHeaderFilters((prev) => { + const current = prev[columnName] || new Set(); + const newSet = new Set(current); + + if (newSet.has(value)) { + newSet.delete(value); + } else { + newSet.add(value); + } + + return { ...prev, [columnName]: newSet }; + }); + }, []); + + // 🆕 헤더 필터 초기화 + const clearHeaderFilter = useCallback((columnName: string) => { + setHeaderFilters((prev) => { + const newFilters = { ...prev }; + delete newFilters[columnName]; + return newFilters; + }); + setOpenFilterColumn(null); + }, []); + + // 🆕 모든 헤더 필터 초기화 + const clearAllHeaderFilters = useCallback(() => { + setHeaderFilters({}); + setOpenFilterColumn(null); + }, []); + + // 🆕 데이터 요약 (Total Summaries) 설정 + // 형식: { columnName: { type: 'sum' | 'avg' | 'count' | 'min' | 'max', label?: string } } + const summaryConfig = useMemo(() => { + const config: Record = {}; + + // tableConfig에서 summary 설정 읽기 + if (tableConfig.summaries) { + tableConfig.summaries.forEach((summary: { columnName: string; type: string; label?: string }) => { + config[summary.columnName] = { type: summary.type, label: summary.label }; + }); + } + + return config; + }, [tableConfig.summaries]); + + // 🆕 요약 데이터 계산 + const summaryData = useMemo(() => { + if (Object.keys(summaryConfig).length === 0 || data.length === 0) { + return null; + } + + const result: Record = {}; + + Object.entries(summaryConfig).forEach(([columnName, config]) => { + const values = data + .map((row) => { + const mappedColumnName = joinColumnMapping[columnName] || columnName; + const val = row[mappedColumnName]; + return typeof val === "number" ? val : parseFloat(val); + }) + .filter((v) => !isNaN(v)); + + let value: number | string = 0; + let label = config.label || ""; + + switch (config.type) { + case "sum": + value = values.reduce((acc, v) => acc + v, 0); + label = label || "합계"; + break; + case "avg": + value = values.length > 0 ? values.reduce((acc, v) => acc + v, 0) / values.length : 0; + label = label || "평균"; + break; + case "count": + value = data.length; + label = label || "개수"; + break; + case "min": + value = values.length > 0 ? Math.min(...values) : 0; + label = label || "최소"; + break; + case "max": + value = values.length > 0 ? Math.max(...values) : 0; + label = label || "최대"; + break; + default: + value = 0; + } + + result[columnName] = { value, label }; + }); + + return result; + }, [data, summaryConfig, joinColumnMapping]); + + // 🆕 편집 취소 + const cancelEditing = useCallback(() => { + setEditingCell(null); + setEditingValue(""); + tableContainerRef.current?.focus(); + }, []); + + // 🆕 편집 저장 (즉시 저장 또는 배치 저장) + const saveEditing = useCallback(async () => { + if (!editingCell) return; + + const { rowIndex, columnName, originalValue } = editingCell; + const newValue = editingValue; + + // 값이 변경되지 않았으면 그냥 닫기 + if (String(originalValue ?? "") === newValue) { + setCellValidationError(rowIndex, columnName, null); // 에러 초기화 + cancelEditing(); + return; + } + + // 현재 행 데이터 가져오기 + const row = data[rowIndex]; + if (!row || !tableConfig.selectedTable) { + cancelEditing(); + return; + } + + // 🆕 유효성 검사 실행 + const validationError = validateValue(newValue === "" ? null : newValue, columnName, row); + if (validationError) { + setCellValidationError(rowIndex, columnName, validationError); + toast.error(validationError); + // 편집 상태 유지 (에러 수정 가능하도록) + return; + } + // 유효성 통과 시 에러 초기화 + setCellValidationError(rowIndex, columnName, null); + + // 기본 키 필드 찾기 (id 또는 첫 번째 컬럼) + const primaryKeyField = tableConfig.primaryKey || "id"; + const primaryKeyValue = row[primaryKeyField]; + + if (primaryKeyValue === undefined || primaryKeyValue === null) { + console.error("기본 키 값을 찾을 수 없습니다:", primaryKeyField); + cancelEditing(); + return; + } + + // 🆕 배치 모드: 변경사항을 pending에 저장 + if (editMode === "batch") { + const changeKey = `${rowIndex}-${columnName}`; + setPendingChanges((prev) => { + const newMap = new Map(prev); + newMap.set(changeKey, { + rowIndex, + columnName, + originalValue, + newValue: newValue === "" ? null : newValue, + primaryKeyValue, + }); + return newMap; + }); + + // 로컬 수정 데이터 업데이트 (화면 표시용) + setLocalEditedData((prev) => ({ + ...prev, + [rowIndex]: { + ...(prev[rowIndex] || {}), + [columnName]: newValue === "" ? null : newValue, + }, + })); + + console.log("📝 배치 편집 추가:", { columnName, newValue, pendingCount: pendingChanges.size + 1 }); + cancelEditing(); + return; + } + + // 🆕 즉시 모드: 바로 저장 + try { + const { apiClient } = await import("@/lib/api/client"); + + await apiClient.put(`/dynamic-form/update-field`, { + tableName: tableConfig.selectedTable, + keyField: primaryKeyField, + keyValue: primaryKeyValue, + updateField: columnName, + updateValue: newValue === "" ? null : newValue, + }); + + // 데이터 새로고침 트리거 + setRefreshTrigger((prev) => prev + 1); + + console.log("✅ 셀 편집 저장 완료:", { columnName, newValue }); + } catch (error) { + console.error("❌ 셀 편집 저장 실패:", error); + } + + cancelEditing(); + }, [editingCell, editingValue, data, tableConfig.selectedTable, tableConfig.primaryKey, cancelEditing, editMode, pendingChanges.size]); + + // 🆕 배치 저장: 모든 변경사항 한번에 저장 + const saveBatchChanges = useCallback(async () => { + if (pendingChanges.size === 0) { + toast.info("저장할 변경사항이 없습니다."); + return; + } + + try { + const { apiClient } = await import("@/lib/api/client"); + const primaryKeyField = tableConfig.primaryKey || "id"; + + // 모든 변경사항 저장 + const savePromises = Array.from(pendingChanges.values()).map((change) => + apiClient.put(`/dynamic-form/update-field`, { + tableName: tableConfig.selectedTable, + keyField: primaryKeyField, + keyValue: change.primaryKeyValue, + updateField: change.columnName, + updateValue: change.newValue, + }) + ); + + await Promise.all(savePromises); + + // 상태 초기화 + setPendingChanges(new Map()); + setLocalEditedData({}); + setRefreshTrigger((prev) => prev + 1); + + toast.success(`${pendingChanges.size}개의 변경사항이 저장되었습니다.`); + console.log("✅ 배치 저장 완료:", pendingChanges.size, "개"); + } catch (error) { + console.error("❌ 배치 저장 실패:", error); + toast.error("저장 중 오류가 발생했습니다."); + } + }, [pendingChanges, tableConfig.selectedTable, tableConfig.primaryKey]); + + // 🆕 배치 취소: 모든 변경사항 롤백 + const cancelBatchChanges = useCallback(() => { + if (pendingChanges.size === 0) return; + + setPendingChanges(new Map()); + setLocalEditedData({}); + toast.info("변경사항이 취소되었습니다."); + console.log("🔄 배치 편집 취소"); + }, [pendingChanges.size]); + + // 🆕 특정 셀이 수정되었는지 확인 + const isCellModified = useCallback((rowIndex: number, columnName: string) => { + return pendingChanges.has(`${rowIndex}-${columnName}`); + }, [pendingChanges]); + + // 🆕 수정된 셀 값 가져오기 (로컬 수정 데이터 우선) + const getDisplayValue = useCallback((row: any, rowIndex: number, columnName: string) => { + const localValue = localEditedData[rowIndex]?.[columnName]; + if (localValue !== undefined) { + return localValue; + } + return row[columnName]; + }, [localEditedData]); + + // 🆕 유효성 검사 함수 + const validateValue = useCallback(( + value: any, + columnName: string, + row: any + ): string | null => { + // tableConfig.validation에서 컬럼별 규칙 가져오기 + const rules = (tableConfig as any).validation?.[columnName] as ValidationRule | undefined; + if (!rules) return null; + + const strValue = value !== null && value !== undefined ? String(value) : ""; + const numValue = parseFloat(strValue); + + // 필수 검사 + if (rules.required && (!strValue || strValue.trim() === "")) { + return rules.customMessage || "필수 입력 항목입니다."; + } + + // 값이 비어있으면 다른 검사 스킵 (required가 아닌 경우) + if (!strValue || strValue.trim() === "") return null; + + // 최소값 검사 + if (rules.min !== undefined && !isNaN(numValue) && numValue < rules.min) { + return rules.customMessage || `최소값은 ${rules.min}입니다.`; + } + + // 최대값 검사 + if (rules.max !== undefined && !isNaN(numValue) && numValue > rules.max) { + return rules.customMessage || `최대값은 ${rules.max}입니다.`; + } + + // 최소 길이 검사 + if (rules.minLength !== undefined && strValue.length < rules.minLength) { + return rules.customMessage || `최소 ${rules.minLength}자 이상 입력해주세요.`; + } + + // 최대 길이 검사 + if (rules.maxLength !== undefined && strValue.length > rules.maxLength) { + return rules.customMessage || `최대 ${rules.maxLength}자까지 입력 가능합니다.`; + } + + // 패턴 검사 + if (rules.pattern && !rules.pattern.test(strValue)) { + return rules.customMessage || "입력 형식이 올바르지 않습니다."; + } + + // 커스텀 검증 + if (rules.validate) { + const customError = rules.validate(value, row); + if (customError) return customError; + } + + return null; + }, [tableConfig]); + + // 🆕 셀 유효성 에러 여부 확인 + const getCellValidationError = useCallback((rowIndex: number, columnName: string): string | null => { + return validationErrors.get(`${rowIndex}-${columnName}`) || null; + }, [validationErrors]); + + // 🆕 유효성 검사 에러 설정 + const setCellValidationError = useCallback((rowIndex: number, columnName: string, error: string | null) => { + setValidationErrors((prev) => { + const newMap = new Map(prev); + const key = `${rowIndex}-${columnName}`; + if (error) { + newMap.set(key, error); + } else { + newMap.delete(key); + } + return newMap; + }); + }, []); + + // 🆕 모든 유효성 에러 초기화 + const clearAllValidationErrors = useCallback(() => { + setValidationErrors(new Map()); + }, []); + + // 🆕 Excel 내보내기 함수 + const exportToExcel = useCallback((exportAll: boolean = true) => { + try { + // 내보낼 데이터 선택 (선택된 행만 또는 전체) + let exportData: any[]; + if (exportAll) { + exportData = filteredData; + } else { + // 선택된 행만 내보내기 + exportData = filteredData.filter((row, index) => { + const rowKey = getRowKey(row, index); + return selectedRows.has(rowKey); + }); + } + + if (exportData.length === 0) { + toast.error(exportAll ? "내보낼 데이터가 없습니다." : "선택된 행이 없습니다."); + return; + } + + // 컬럼 정보 가져오기 (체크박스 제외) + const exportColumns = visibleColumns.filter((col) => col.columnName !== "__checkbox__"); + + // 헤더 행 생성 + const headers = exportColumns.map((col) => columnLabels[col.columnName] || col.columnName); + + // 데이터 행 생성 + const rows = exportData.map((row) => { + return exportColumns.map((col) => { + const mappedColumnName = joinColumnMapping[col.columnName] || col.columnName; + const value = row[mappedColumnName]; + + // 카테고리 매핑된 값 처리 + if (categoryMappings[col.columnName] && value !== null && value !== undefined) { + const mapping = categoryMappings[col.columnName][String(value)]; + if (mapping) { + return mapping.label; + } + } + + // null/undefined 처리 + if (value === null || value === undefined) { + return ""; + } + + return value; + }); + }); + + // 워크시트 생성 + const wsData = [headers, ...rows]; + const ws = XLSX.utils.aoa_to_sheet(wsData); + + // 컬럼 너비 자동 조정 + const colWidths = exportColumns.map((col, idx) => { + const headerLength = headers[idx]?.length || 10; + const maxDataLength = Math.max( + ...rows.map((row) => String(row[idx] ?? "").length) + ); + return { wch: Math.min(Math.max(headerLength, maxDataLength) + 2, 50) }; + }); + ws["!cols"] = colWidths; + + // 워크북 생성 + const wb = XLSX.utils.book_new(); + XLSX.utils.book_append_sheet(wb, ws, tableLabel || "데이터"); + + // 파일명 생성 + const fileName = `${tableLabel || tableConfig.selectedTable || "export"}_${new Date().toISOString().split("T")[0]}.xlsx`; + + // 파일 다운로드 + XLSX.writeFile(wb, fileName); + + toast.success(`${exportData.length}개 행이 Excel로 내보내기 되었습니다.`); + console.log("✅ Excel 내보내기 완료:", fileName); + } catch (error) { + console.error("❌ Excel 내보내기 실패:", error); + toast.error("Excel 내보내기 중 오류가 발생했습니다."); + } + }, [filteredData, selectedRows, visibleColumns, columnLabels, joinColumnMapping, categoryMappings, tableLabel, tableConfig.selectedTable, getRowKey]); + + // 🆕 행 확장/축소 토글 + const toggleRowExpand = useCallback(async (rowKey: string, row: any) => { + setExpandedRows((prev) => { + const newSet = new Set(prev); + if (newSet.has(rowKey)) { + newSet.delete(rowKey); + } else { + newSet.add(rowKey); + // 상세 데이터 로딩 (아직 없는 경우) + if (!detailData[rowKey] && (tableConfig as any).masterDetail?.detailTable) { + loadDetailData(rowKey, row); + } + } + return newSet; + }); + }, [detailData, tableConfig]); + + // 🆕 상세 데이터 로딩 + const loadDetailData = useCallback(async (rowKey: string, row: any) => { + const masterDetailConfig = (tableConfig as any).masterDetail; + if (!masterDetailConfig?.detailTable) return; + + try { + const { apiClient } = await import("@/lib/api/client"); + + // masterKey 값 가져오기 + const masterKeyField = masterDetailConfig.masterKey || "id"; + const masterKeyValue = row[masterKeyField]; + + // 상세 테이블에서 데이터 조회 + const response = await apiClient.post(`/table-management/tables/${masterDetailConfig.detailTable}/data`, { + page: 1, + size: 100, + search: { + [masterDetailConfig.detailKey || masterKeyField]: masterKeyValue, + }, + autoFilter: true, + }); + + const details = response.data?.data?.data || []; + + setDetailData((prev) => ({ + ...prev, + [rowKey]: details, + })); + + console.log("✅ 상세 데이터 로딩 완료:", { rowKey, count: details.length }); + } catch (error) { + console.error("❌ 상세 데이터 로딩 실패:", error); + setDetailData((prev) => ({ + ...prev, + [rowKey]: [], + })); + } + }, [tableConfig]); + + // 🆕 모든 행 확장/축소 + const expandAllRows = useCallback(() => { + if (expandedRows.size === filteredData.length) { + // 모두 축소 + setExpandedRows(new Set()); + } else { + // 모두 확장 + const allKeys = new Set(filteredData.map((row, index) => getRowKey(row, index))); + setExpandedRows(allKeys); + } + }, [expandedRows.size, filteredData, getRowKey]); + + // 🆕 Multi-Level Headers: Band 정보 계산 + const columnBandsInfo = useMemo(() => { + const bands = (tableConfig as any).columnBands as ColumnBand[] | undefined; + if (!bands || bands.length === 0) return null; + + // 각 band의 시작 인덱스와 colspan 계산 + const bandInfo = bands.map((band) => { + const visibleBandColumns = band.columns.filter((colName) => + visibleColumns.some((vc) => vc.columnName === colName) + ); + + const startIndex = visibleColumns.findIndex( + (vc) => visibleBandColumns.includes(vc.columnName) + ); + + return { + caption: band.caption, + columns: visibleBandColumns, + colSpan: visibleBandColumns.length, + startIndex, + }; + }).filter((b) => b.colSpan > 0); + + // Band에 포함되지 않은 컬럼 찾기 + const bandedColumns = new Set(bands.flatMap((b) => b.columns)); + const unbandedColumns = visibleColumns + .map((vc, idx) => ({ columnName: vc.columnName, index: idx })) + .filter((c) => !bandedColumns.has(c.columnName)); + + return { + bands: bandInfo, + unbandedColumns, + hasBands: bandInfo.length > 0, + }; + }, [tableConfig, visibleColumns]); + + // 🆕 Cascading Lookups: 연계 드롭다운 옵션 로딩 + const loadCascadingOptions = useCallback(async ( + columnName: string, + parentColumnName: string, + parentValue: any + ) => { + const cascadingConfig = (tableConfig as any).cascadingLookups?.[columnName]; + if (!cascadingConfig) return; + + const cacheKey = `${columnName}_${parentValue}`; + + // 이미 로딩 중이면 스킵 + if (loadingCascading[cacheKey]) return; + + // 이미 캐시된 데이터가 있으면 스킵 + if (cascadingOptions[cacheKey]) return; + + setLoadingCascading((prev) => ({ ...prev, [cacheKey]: true })); + + try { + const { apiClient } = await import("@/lib/api/client"); + + // API에서 연계 옵션 로딩 + const response = await apiClient.post(`/table-management/tables/${cascadingConfig.sourceTable}/data`, { + page: 1, + size: 1000, + search: { + [cascadingConfig.parentKeyField || parentColumnName]: parentValue, + }, + autoFilter: true, + }); + + const items = response.data?.data?.data || []; + const options = items.map((item: any) => ({ + value: item[cascadingConfig.valueField || "id"], + label: item[cascadingConfig.labelField || "name"], + })); + + setCascadingOptions((prev) => ({ + ...prev, + [cacheKey]: options, + })); + + console.log("✅ Cascading options 로딩 완료:", { columnName, parentValue, count: options.length }); + } catch (error) { + console.error("❌ Cascading options 로딩 실패:", error); + setCascadingOptions((prev) => ({ + ...prev, + [cacheKey]: [], + })); + } finally { + setLoadingCascading((prev) => ({ ...prev, [cacheKey]: false })); + } + }, [tableConfig, cascadingOptions, loadingCascading]); + + // 🆕 Cascading Lookups: 특정 컬럼의 옵션 가져오기 + const getCascadingOptions = useCallback((columnName: string, row: any): { value: string; label: string }[] => { + const cascadingConfig = (tableConfig as any).cascadingLookups?.[columnName]; + if (!cascadingConfig) return []; + + const parentValue = row[cascadingConfig.parentColumn]; + if (parentValue === undefined || parentValue === null) return []; + + const cacheKey = `${columnName}_${parentValue}`; + return cascadingOptions[cacheKey] || []; + }, [tableConfig, cascadingOptions]); + + // 🆕 Virtual Scrolling: 보이는 행 범위 계산 + const virtualScrollInfo = useMemo(() => { + if (!isVirtualScrollEnabled || filteredData.length === 0) { + return { + startIndex: 0, + endIndex: filteredData.length, + visibleData: filteredData, + topSpacerHeight: 0, + bottomSpacerHeight: 0, + totalHeight: filteredData.length * ROW_HEIGHT, + }; + } + + const containerHeight = scrollContainerRef.current?.clientHeight || 600; + const totalRows = filteredData.length; + const totalHeight = totalRows * ROW_HEIGHT; + + // 현재 보이는 행 범위 계산 + const startIndex = Math.max(0, Math.floor(scrollTop / ROW_HEIGHT) - OVERSCAN); + const visibleRowCount = Math.ceil(containerHeight / ROW_HEIGHT) + OVERSCAN * 2; + const endIndex = Math.min(totalRows, startIndex + visibleRowCount); + + return { + startIndex, + endIndex, + visibleData: filteredData.slice(startIndex, endIndex), + topSpacerHeight: startIndex * ROW_HEIGHT, + bottomSpacerHeight: (totalRows - endIndex) * ROW_HEIGHT, + totalHeight, + }; + }, [isVirtualScrollEnabled, filteredData, scrollTop, ROW_HEIGHT, OVERSCAN]); + + // 🆕 Virtual Scrolling: 스크롤 핸들러 + const handleVirtualScroll = useCallback((e: React.UIEvent) => { + if (!isVirtualScrollEnabled) return; + setScrollTop(e.currentTarget.scrollTop); + }, [isVirtualScrollEnabled]); + + // 🆕 State Persistence: 통합 상태 저장 + const saveTableState = useCallback(() => { + if (!tableStateKey) return; + + const state = { + columnWidths, + columnOrder, + sortColumn, + sortDirection, + groupByColumns, + frozenColumns, + showGridLines, + headerFilters: Object.fromEntries( + Object.entries(headerFilters).map(([key, set]) => [key, Array.from(set as Set)]) + ), + pageSize: localPageSize, + timestamp: Date.now(), + }; + + try { + localStorage.setItem(tableStateKey, JSON.stringify(state)); + console.log("✅ 테이블 상태 저장:", tableStateKey); + } catch (error) { + console.error("❌ 테이블 상태 저장 실패:", error); + } + }, [tableStateKey, columnWidths, columnOrder, sortColumn, sortDirection, groupByColumns, frozenColumns, showGridLines, headerFilters, localPageSize]); + + // 🆕 State Persistence: 통합 상태 복원 + const loadTableState = useCallback(() => { + if (!tableStateKey) return; + + try { + const saved = localStorage.getItem(tableStateKey); + if (!saved) return; + + const state = JSON.parse(saved); + + if (state.columnWidths) setColumnWidths(state.columnWidths); + if (state.columnOrder) setColumnOrder(state.columnOrder); + if (state.sortColumn !== undefined) setSortColumn(state.sortColumn); + if (state.sortDirection) setSortDirection(state.sortDirection); + if (state.groupByColumns) setGroupByColumns(state.groupByColumns); + if (state.frozenColumns) setFrozenColumns(state.frozenColumns); + if (state.showGridLines !== undefined) setShowGridLines(state.showGridLines); + if (state.headerFilters) { + const filters: Record> = {}; + Object.entries(state.headerFilters).forEach(([key, values]) => { + filters[key] = new Set(values as string[]); + }); + setHeaderFilters(filters); + } + + console.log("✅ 테이블 상태 복원:", tableStateKey); + } catch (error) { + console.error("❌ 테이블 상태 복원 실패:", error); + } + }, [tableStateKey]); + + // 🆕 State Persistence: 상태 초기화 + const resetTableState = useCallback(() => { + if (!tableStateKey) return; + + try { + localStorage.removeItem(tableStateKey); + setColumnWidths({}); + setColumnOrder([]); + setSortColumn(null); + setSortDirection("asc"); + setGroupByColumns([]); + setFrozenColumns([]); + setShowGridLines(true); + setHeaderFilters({}); + toast.success("테이블 설정이 초기화되었습니다."); + console.log("✅ 테이블 상태 초기화:", tableStateKey); + } catch (error) { + console.error("❌ 테이블 상태 초기화 실패:", error); + } + }, [tableStateKey]); + + // 🆕 State Persistence: 컴포넌트 마운트 시 상태 복원 + useEffect(() => { + loadTableState(); + }, [tableStateKey]); // loadTableState는 의존성에서 제외 (무한 루프 방지) + + // 🆕 Real-Time Updates: WebSocket 연결 + const connectWebSocket = useCallback(() => { + if (!isRealTimeEnabled || !tableConfig.selectedTable) return; + + const wsUrl = (tableConfig as any).wsUrl || + `${window.location.protocol === "https:" ? "wss:" : "ws:"}//${window.location.host}/ws/table/${tableConfig.selectedTable}`; + + try { + setWsConnectionStatus("connecting"); + wsRef.current = new WebSocket(wsUrl); + + wsRef.current.onopen = () => { + setWsConnectionStatus("connected"); + console.log("✅ WebSocket 연결됨:", tableConfig.selectedTable); + }; + + wsRef.current.onmessage = (event) => { + try { + const message = JSON.parse(event.data); + console.log("📨 WebSocket 메시지 수신:", message); + + switch (message.type) { + case "insert": + // 새 데이터 추가 + setRefreshTrigger((prev) => prev + 1); + toast.info("새 데이터가 추가되었습니다."); + break; + case "update": + // 데이터 업데이트 + setRefreshTrigger((prev) => prev + 1); + toast.info("데이터가 업데이트되었습니다."); + break; + case "delete": + // 데이터 삭제 + setRefreshTrigger((prev) => prev + 1); + toast.info("데이터가 삭제되었습니다."); + break; + case "refresh": + // 전체 새로고침 + setRefreshTrigger((prev) => prev + 1); + break; + default: + console.log("알 수 없는 메시지 타입:", message.type); + } + } catch (error) { + console.error("WebSocket 메시지 파싱 오류:", error); + } + }; + + wsRef.current.onclose = () => { + setWsConnectionStatus("disconnected"); + console.log("🔌 WebSocket 연결 종료"); + + // 자동 재연결 (5초 후) + if (isRealTimeEnabled) { + reconnectTimeoutRef.current = setTimeout(() => { + console.log("🔄 WebSocket 재연결 시도..."); + connectWebSocket(); + }, 5000); + } + }; + + wsRef.current.onerror = (error) => { + console.error("❌ WebSocket 오류:", error); + setWsConnectionStatus("disconnected"); + }; + } catch (error) { + console.error("WebSocket 연결 실패:", error); + setWsConnectionStatus("disconnected"); + } + }, [isRealTimeEnabled, tableConfig.selectedTable]); + + // 🆕 Real-Time Updates: 연결 관리 + useEffect(() => { + if (isRealTimeEnabled) { + connectWebSocket(); + } + + return () => { + // 정리 + if (reconnectTimeoutRef.current) { + clearTimeout(reconnectTimeoutRef.current); + } + if (wsRef.current) { + wsRef.current.close(); + wsRef.current = null; + } + }; + }, [isRealTimeEnabled, tableConfig.selectedTable]); + + // 🆕 State Persistence: 상태 변경 시 자동 저장 (디바운스) + useEffect(() => { + const timeoutId = setTimeout(() => { + saveTableState(); + }, 1000); // 1초 후 저장 (디바운스) + + return () => clearTimeout(timeoutId); + }, [columnWidths, columnOrder, sortColumn, sortDirection, groupByColumns, frozenColumns, showGridLines, headerFilters]); + + // 🆕 Clipboard: 선택된 데이터 복사 + const handleCopy = useCallback(async () => { + try { + // 선택된 행 데이터 가져오기 + let copyData: any[]; + + if (selectedRows.size > 0) { + // 선택된 행만 + copyData = filteredData.filter((row, index) => { + const rowKey = getRowKey(row, index); + return selectedRows.has(rowKey); + }); + } else if (focusedCell) { + // 포커스된 셀만 + const row = filteredData[focusedCell.rowIndex]; + if (row) { + const column = visibleColumns[focusedCell.colIndex]; + const value = row[column?.columnName]; + await navigator.clipboard.writeText(String(value ?? "")); + toast.success("셀 복사됨"); + return; + } + return; + } else { + toast.info("복사할 데이터를 선택해주세요."); + return; + } + + // TSV 형식으로 변환 (탭으로 구분) + const exportColumns = visibleColumns.filter((c) => c.columnName !== "__checkbox__"); + const headers = exportColumns.map((c) => columnLabels[c.columnName] || c.columnName); + const rows = copyData.map((row) => + exportColumns.map((c) => { + const value = row[c.columnName]; + return value !== null && value !== undefined ? String(value).replace(/\t/g, " ").replace(/\n/g, " ") : ""; + }).join("\t") + ); + + const tsvContent = [headers.join("\t"), ...rows].join("\n"); + await navigator.clipboard.writeText(tsvContent); + + toast.success(`${copyData.length}행 복사됨`); + console.log("✅ 클립보드 복사:", copyData.length, "행"); + } catch (error) { + console.error("❌ 클립보드 복사 실패:", error); + toast.error("복사 실패"); + } + }, [selectedRows, filteredData, focusedCell, visibleColumns, columnLabels, getRowKey]); + + // 🆕 전체 행 선택 + const handleSelectAllRows = useCallback(() => { + if (selectedRows.size === filteredData.length) { + // 전체 해제 + setSelectedRows(new Set()); + setIsAllSelected(false); + } else { + // 전체 선택 + const allKeys = new Set(filteredData.map((row, index) => getRowKey(row, index))); + setSelectedRows(allKeys); + setIsAllSelected(true); + } + }, [selectedRows.size, filteredData, getRowKey]); + + // 🆕 Context Menu: 열기 + const handleContextMenu = useCallback((e: React.MouseEvent, rowIndex: number, colIndex: number, row: any) => { + e.preventDefault(); + setContextMenu({ + x: e.clientX, + y: e.clientY, + rowIndex, + colIndex, + row, + }); + }, []); + + // 🆕 Context Menu: 닫기 + const closeContextMenu = useCallback(() => { + setContextMenu(null); + }, []); + + // 🆕 Context Menu: 외부 클릭 시 닫기 + useEffect(() => { + if (contextMenu) { + const handleClick = () => closeContextMenu(); + document.addEventListener("click", handleClick); + return () => document.removeEventListener("click", handleClick); + } + }, [contextMenu, closeContextMenu]); + + // 🆕 Search Panel: 통합 검색 실행 + const executeGlobalSearch = useCallback((term: string) => { + if (!term.trim()) { + setSearchHighlights(new Set()); + return; + } + + const lowerTerm = term.toLowerCase(); + const highlights = new Set(); + + filteredData.forEach((row, rowIndex) => { + visibleColumns.forEach((col, colIndex) => { + const value = row[col.columnName]; + if (value !== null && value !== undefined) { + const strValue = String(value).toLowerCase(); + if (strValue.includes(lowerTerm)) { + highlights.add(`${rowIndex}-${colIndex}`); + } + } + }); + }); + + setSearchHighlights(highlights); + + // 첫 번째 검색 결과로 포커스 이동 + if (highlights.size > 0) { + const firstHighlight = Array.from(highlights)[0]; + const [rowIdx, colIdx] = firstHighlight.split("-").map(Number); + setFocusedCell({ rowIndex: rowIdx, colIndex: colIdx }); + toast.success(`${highlights.size}개 검색 결과`); + } else { + toast.info("검색 결과가 없습니다"); + } + }, [filteredData, visibleColumns]); + + // 🆕 Search Panel: 다음 검색 결과로 이동 + const goToNextSearchResult = useCallback(() => { + if (searchHighlights.size === 0) return; + + const highlightArray = Array.from(searchHighlights).sort((a, b) => { + const [aRow, aCol] = a.split("-").map(Number); + const [bRow, bCol] = b.split("-").map(Number); + if (aRow !== bRow) return aRow - bRow; + return aCol - bCol; + }); + + if (!focusedCell) { + const [rowIdx, colIdx] = highlightArray[0].split("-").map(Number); + setFocusedCell({ rowIndex: rowIdx, colIndex: colIdx }); + return; + } + + const currentKey = `${focusedCell.rowIndex}-${focusedCell.colIndex}`; + const currentIndex = highlightArray.indexOf(currentKey); + const nextIndex = (currentIndex + 1) % highlightArray.length; + const [rowIdx, colIdx] = highlightArray[nextIndex].split("-").map(Number); + setFocusedCell({ rowIndex: rowIdx, colIndex: colIdx }); + }, [searchHighlights, focusedCell]); + + // 🆕 Search Panel: 이전 검색 결과로 이동 + const goToPrevSearchResult = useCallback(() => { + if (searchHighlights.size === 0) return; + + const highlightArray = Array.from(searchHighlights).sort((a, b) => { + const [aRow, aCol] = a.split("-").map(Number); + const [bRow, bCol] = b.split("-").map(Number); + if (aRow !== bRow) return aRow - bRow; + return aCol - bCol; + }); + + if (!focusedCell) { + const lastIdx = highlightArray.length - 1; + const [rowIdx, colIdx] = highlightArray[lastIdx].split("-").map(Number); + setFocusedCell({ rowIndex: rowIdx, colIndex: colIdx }); + return; + } + + const currentKey = `${focusedCell.rowIndex}-${focusedCell.colIndex}`; + const currentIndex = highlightArray.indexOf(currentKey); + const prevIndex = currentIndex <= 0 ? highlightArray.length - 1 : currentIndex - 1; + const [rowIdx, colIdx] = highlightArray[prevIndex].split("-").map(Number); + setFocusedCell({ rowIndex: rowIdx, colIndex: colIdx }); + }, [searchHighlights, focusedCell]); + + // 🆕 Search Panel: 검색 초기화 + const clearGlobalSearch = useCallback(() => { + setGlobalSearchTerm(""); + setSearchHighlights(new Set()); + setIsSearchPanelOpen(false); + }, []); + + // 🆕 Filter Builder: 조건 추가 + const addFilterCondition = useCallback((groupId: string, defaultColumn?: string) => { + setFilterGroups((prev) => + prev.map((group) => + group.id === groupId + ? { + ...group, + conditions: [ + ...group.conditions, + { + id: `cond-${Date.now()}`, + column: defaultColumn || "", + operator: "contains" as const, + value: "", + }, + ], + } + : group + ) + ); + }, []); + + // 🆕 Filter Builder: 조건 삭제 + const removeFilterCondition = useCallback((groupId: string, conditionId: string) => { + setFilterGroups((prev) => + prev.map((group) => + group.id === groupId + ? { + ...group, + conditions: group.conditions.filter((c) => c.id !== conditionId), + } + : group + ) + ); + }, []); + + // 🆕 Filter Builder: 조건 업데이트 + const updateFilterCondition = useCallback( + (groupId: string, conditionId: string, field: keyof FilterCondition, value: string) => { + setFilterGroups((prev) => + prev.map((group) => + group.id === groupId + ? { + ...group, + conditions: group.conditions.map((c) => + c.id === conditionId ? { ...c, [field]: value } : c + ), + } + : group + ) + ); + }, + [] + ); + + // 🆕 Filter Builder: 그룹 추가 + const addFilterGroup = useCallback((defaultColumn?: string) => { + setFilterGroups((prev) => [ + ...prev, + { + id: `group-${Date.now()}`, + logic: "AND" as const, + conditions: [ + { + id: `cond-${Date.now()}`, + column: defaultColumn || "", + operator: "contains" as const, + value: "", + }, + ], + }, + ]); + }, []); + + // 🆕 Filter Builder: 그룹 삭제 + const removeFilterGroup = useCallback((groupId: string) => { + setFilterGroups((prev) => prev.filter((g) => g.id !== groupId)); + }, []); + + // 🆕 Filter Builder: 그룹 로직 변경 + const updateGroupLogic = useCallback((groupId: string, logic: "AND" | "OR") => { + setFilterGroups((prev) => + prev.map((group) => (group.id === groupId ? { ...group, logic } : group)) + ); + }, []); + + // 🆕 Filter Builder: 필터 적용 + const applyFilterBuilder = useCallback(() => { + // 유효한 조건 개수 계산 + let validConditions = 0; + filterGroups.forEach((group) => { + group.conditions.forEach((cond) => { + if (cond.column && (cond.operator === "isEmpty" || cond.operator === "isNotEmpty" || cond.value)) { + validConditions++; + } + }); + }); + setActiveFilterCount(validConditions); + setIsFilterBuilderOpen(false); + toast.success(`${validConditions}개 필터 조건 적용됨`); + }, [filterGroups]); + + // 🆕 Filter Builder: 필터 초기화 + const clearFilterBuilder = useCallback(() => { + setFilterGroups([]); + setActiveFilterCount(0); + toast.info("필터 초기화됨"); + }, []); + + // 🆕 Filter Builder: 조건 평가 함수 + const evaluateCondition = useCallback((value: any, condition: FilterCondition): boolean => { + const strValue = value !== null && value !== undefined ? String(value).toLowerCase() : ""; + const condValue = condition.value.toLowerCase(); + + switch (condition.operator) { + case "equals": + return strValue === condValue; + case "notEquals": + return strValue !== condValue; + case "contains": + return strValue.includes(condValue); + case "notContains": + return !strValue.includes(condValue); + case "startsWith": + return strValue.startsWith(condValue); + case "endsWith": + return strValue.endsWith(condValue); + case "greaterThan": + return parseFloat(strValue) > parseFloat(condValue); + case "lessThan": + return parseFloat(strValue) < parseFloat(condValue); + case "greaterOrEqual": + return parseFloat(strValue) >= parseFloat(condValue); + case "lessOrEqual": + return parseFloat(strValue) <= parseFloat(condValue); + case "isEmpty": + return strValue === "" || value === null || value === undefined; + case "isNotEmpty": + return strValue !== "" && value !== null && value !== undefined; + default: + return true; + } + }, []); + + // 🆕 Filter Builder: 행이 필터 조건을 만족하는지 확인 + const rowPassesFilterBuilder = useCallback( + (row: any): boolean => { + if (filterGroups.length === 0) return true; + + // 모든 그룹이 AND로 연결됨 (그룹 간) + return filterGroups.every((group) => { + const validConditions = group.conditions.filter( + (c) => c.column && (c.operator === "isEmpty" || c.operator === "isNotEmpty" || c.value) + ); + if (validConditions.length === 0) return true; + + if (group.logic === "AND") { + return validConditions.every((cond) => evaluateCondition(row[cond.column], cond)); + } else { + return validConditions.some((cond) => evaluateCondition(row[cond.column], cond)); + } + }); + }, + [filterGroups, evaluateCondition] + ); + + // 🆕 컬럼 드래그 시작 + const handleColumnDragStart = useCallback((e: React.DragEvent, index: number) => { + if (!isColumnDragEnabled) return; + + setDraggedColumnIndex(index); + e.dataTransfer.effectAllowed = "move"; + e.dataTransfer.setData("text/plain", `col-${index}`); + }, [isColumnDragEnabled]); + + // 🆕 컬럼 드래그 오버 + const handleColumnDragOver = useCallback((e: React.DragEvent, index: number) => { + if (!isColumnDragEnabled || draggedColumnIndex === null) return; + + e.preventDefault(); + e.dataTransfer.dropEffect = "move"; + + if (index !== draggedColumnIndex) { + setDropTargetColumnIndex(index); + } + }, [isColumnDragEnabled, draggedColumnIndex]); + + // 🆕 컬럼 드래그 종료 + const handleColumnDragEnd = useCallback(() => { + setDraggedColumnIndex(null); + setDropTargetColumnIndex(null); + }, []); + + // 🆕 컬럼 드롭 + const handleColumnDrop = useCallback((e: React.DragEvent, targetIndex: number) => { + e.preventDefault(); + + if (!isColumnDragEnabled || draggedColumnIndex === null || draggedColumnIndex === targetIndex) { + handleColumnDragEnd(); + return; + } + + // 컬럼 순서 변경 + const newOrder = [...(columnOrder.length > 0 ? columnOrder : visibleColumns.map((c) => c.columnName))]; + const [movedColumn] = newOrder.splice(draggedColumnIndex, 1); + newOrder.splice(targetIndex, 0, movedColumn); + + setColumnOrder(newOrder); + toast.info("컬럼 순서가 변경되었습니다."); + console.log("✅ 컬럼 순서 변경:", { from: draggedColumnIndex, to: targetIndex }); + + handleColumnDragEnd(); + }, [isColumnDragEnabled, draggedColumnIndex, columnOrder, visibleColumns, handleColumnDragEnd]); + + // 🆕 행 드래그 시작 + const handleRowDragStart = useCallback((e: React.DragEvent, index: number) => { + if (!isDragEnabled) return; + + setDraggedRowIndex(index); + e.dataTransfer.effectAllowed = "move"; + e.dataTransfer.setData("text/plain", String(index)); + + // 드래그 이미지 설정 (반투명) + const dragImage = e.currentTarget.cloneNode(true) as HTMLElement; + dragImage.style.opacity = "0.5"; + dragImage.style.position = "absolute"; + dragImage.style.top = "-1000px"; + document.body.appendChild(dragImage); + e.dataTransfer.setDragImage(dragImage, 0, 0); + setTimeout(() => document.body.removeChild(dragImage), 0); + }, [isDragEnabled]); + + // 🆕 행 드래그 오버 + const handleRowDragOver = useCallback((e: React.DragEvent, index: number) => { + if (!isDragEnabled || draggedRowIndex === null) return; + + e.preventDefault(); + e.dataTransfer.dropEffect = "move"; + + if (index !== draggedRowIndex) { + setDropTargetIndex(index); + } + }, [isDragEnabled, draggedRowIndex]); + + // 🆕 행 드래그 종료 + const handleRowDragEnd = useCallback(() => { + setDraggedRowIndex(null); + setDropTargetIndex(null); + }, []); + + // 🆕 행 드롭 + const handleRowDrop = useCallback(async (e: React.DragEvent, targetIndex: number) => { + e.preventDefault(); + + if (!isDragEnabled || draggedRowIndex === null || draggedRowIndex === targetIndex) { + handleRowDragEnd(); + return; + } + + try { + // 로컬 데이터 재정렬 + const newData = [...filteredData]; + const [movedRow] = newData.splice(draggedRowIndex, 1); + newData.splice(targetIndex, 0, movedRow); + + // 서버에 순서 저장 (order_index 필드가 있는 경우) + const orderField = (tableConfig as any).orderField || "order_index"; + const hasOrderField = newData[0] && orderField in newData[0]; + + if (hasOrderField && tableConfig.selectedTable) { + const { apiClient } = await import("@/lib/api/client"); + const primaryKeyField = tableConfig.primaryKey || "id"; + + // 영향받는 행들의 순서 업데이트 + const updates = newData.map((row, idx) => ({ + tableName: tableConfig.selectedTable, + keyField: primaryKeyField, + keyValue: row[primaryKeyField], + updateField: orderField, + updateValue: idx + 1, + })); + + // 배치 업데이트 + await Promise.all( + updates.map((update) => + apiClient.put(`/dynamic-form/update-field`, update) + ) + ); + + toast.success("순서가 변경되었습니다."); + setRefreshTrigger((prev) => prev + 1); + } else { + // 로컬에서만 순서 변경 (저장 안함) + toast.info("순서가 변경되었습니다. (로컬만)"); + } + + console.log("✅ 행 순서 변경:", { from: draggedRowIndex, to: targetIndex }); + } catch (error) { + console.error("❌ 행 순서 변경 실패:", error); + toast.error("순서 변경 중 오류가 발생했습니다."); + } + + handleRowDragEnd(); + }, [isDragEnabled, draggedRowIndex, filteredData, tableConfig, handleRowDragEnd]); + + // 🆕 PDF 내보내기 (인쇄용 HTML 생성) + const exportToPdf = useCallback((exportAll: boolean = true) => { + try { + // 내보낼 데이터 선택 + let exportData: any[]; + if (exportAll) { + exportData = filteredData; + } else { + exportData = filteredData.filter((row, index) => { + const rowKey = getRowKey(row, index); + return selectedRows.has(rowKey); + }); + } + + if (exportData.length === 0) { + toast.error(exportAll ? "내보낼 데이터가 없습니다." : "선택된 행이 없습니다."); + return; + } + + // 컬럼 정보 가져오기 (체크박스 제외) + const exportColumns = visibleColumns.filter((col) => col.columnName !== "__checkbox__"); + + // 인쇄용 HTML 생성 + const printContent = ` + + + + + ${tableLabel || tableConfig.selectedTable || "데이터"} + + + +

${tableLabel || tableConfig.selectedTable || "데이터 목록"}

+
+ 출력일: ${new Date().toLocaleDateString("ko-KR")} | + 총 ${exportData.length}건 +
+ + + + ${exportColumns.map((col) => ``).join("")} + + + + ${exportData.map((row) => ` + + ${exportColumns.map((col) => { + const mappedColumnName = joinColumnMapping[col.columnName] || col.columnName; + let value = row[mappedColumnName]; + + // 카테고리 매핑 + if (categoryMappings[col.columnName] && value !== null && value !== undefined) { + const mapping = categoryMappings[col.columnName][String(value)]; + if (mapping) value = mapping.label; + } + + const meta = columnMeta[col.columnName]; + const inputType = meta?.inputType || (col as any).inputType; + const isNumeric = inputType === "number" || inputType === "decimal"; + + return ``; + }).join("")} + + `).join("")} + +
${columnLabels[col.columnName] || col.columnName}
${value ?? ""}
+ + + `; + + // 새 창에서 인쇄 + const printWindow = window.open("", "_blank"); + if (printWindow) { + printWindow.document.write(printContent); + printWindow.document.close(); + printWindow.onload = () => { + printWindow.print(); + }; + toast.success("인쇄 창이 열렸습니다."); + } else { + toast.error("팝업이 차단되었습니다. 팝업을 허용해주세요."); + } + } catch (error) { + console.error("❌ PDF 내보내기 실패:", error); + toast.error("PDF 내보내기 중 오류가 발생했습니다."); + } + }, [filteredData, selectedRows, visibleColumns, columnLabels, joinColumnMapping, categoryMappings, columnMeta, tableLabel, tableConfig.selectedTable, getRowKey]); + + // 🆕 편집 중 키보드 핸들러 (간단 버전 - Tab 이동은 visibleColumns 정의 후 처리) + const handleEditKeyDown = useCallback((e: React.KeyboardEvent) => { + switch (e.key) { + case "Enter": + e.preventDefault(); + saveEditing(); + break; + case "Escape": + e.preventDefault(); + cancelEditing(); + break; + case "Tab": + e.preventDefault(); + saveEditing(); + // Tab 이동은 편집 저장 후 테이블 키보드 핸들러에서 처리 + break; + } + }, [saveEditing, cancelEditing]); + + // 🆕 편집 입력 필드가 나타나면 자동 포커스 + useEffect(() => { + if (editingCell && editInputRef.current) { + editInputRef.current.focus(); + // select()는 input 요소에서만 사용 가능 (select 요소에서는 사용 불가) + if (typeof editInputRef.current.select === "function") { + editInputRef.current.select(); + } + } + }, [editingCell]); + + // 🆕 포커스된 셀로 스크롤 + useEffect(() => { + if (focusedCell && tableContainerRef.current) { + const focusedCellElement = tableContainerRef.current.querySelector( + `[data-row="${focusedCell.rowIndex}"][data-col="${focusedCell.colIndex}"]` + ) as HTMLElement; + + if (focusedCellElement) { + focusedCellElement.scrollIntoView({ block: "nearest", inline: "nearest" }); + } + } + }, [focusedCell]); + // 컬럼 드래그앤드롭 기능 제거됨 (테이블 옵션 모달에서 컬럼 순서 변경 가능) const handleClick = (e: React.MouseEvent) => { @@ -1791,62 +3552,9 @@ export const TableListComponent: React.FC = ({ }; // ======================================== - // 컬럼 관련 + // 컬럼 관련 (visibleColumns는 상단에서 정의됨) // ======================================== - const visibleColumns = useMemo(() => { - let cols = (tableConfig.columns || []).filter((col) => col.visible !== false); - - // columnVisibility가 있으면 가시성 적용 - if (columnVisibility.length > 0) { - cols = cols.filter((col) => { - const visibilityConfig = columnVisibility.find((cv) => cv.columnName === col.columnName); - return visibilityConfig ? visibilityConfig.visible : true; - }); - } - - // 체크박스 컬럼 (나중에 위치 결정) - // 기본값: enabled가 undefined면 true로 처리 - let checkboxCol: ColumnConfig | null = null; - if (tableConfig.checkbox?.enabled ?? true) { - checkboxCol = { - columnName: "__checkbox__", - displayName: "", - visible: true, - sortable: false, - searchable: false, - width: 50, - align: "center", - order: -1, - }; - } - - // columnOrder 상태가 있으면 그 순서대로 정렬 (체크박스 제외) - if (columnOrder.length > 0) { - const orderedCols = columnOrder - .map((colName) => cols.find((c) => c.columnName === colName)) - .filter(Boolean) as ColumnConfig[]; - - // columnOrder에 없는 새로운 컬럼들 추가 - const remainingCols = cols.filter((c) => !columnOrder.includes(c.columnName)); - - cols = [...orderedCols, ...remainingCols]; - } else { - cols = cols.sort((a, b) => (a.order || 0) - (b.order || 0)); - } - - // 체크박스를 맨 앞 또는 맨 뒤에 추가 - if (checkboxCol) { - if (tableConfig.checkbox?.position === "right") { - cols = [...cols, checkboxCol]; - } else { - cols = [checkboxCol, ...cols]; - } - } - - return cols; - }, [tableConfig.columns, tableConfig.checkbox, columnOrder, columnVisibility]); - // 🆕 visibleColumns가 변경될 때마다 현재 컬럼 순서를 부모에게 전달 const lastColumnOrderRef = useRef(""); @@ -1917,6 +3625,231 @@ export const TableListComponent: React.FC = ({ ); }, [visibleColumns.length, visibleColumns.map((c) => c.columnName).join(",")]); // 의존성 단순화 + // 🆕 키보드 네비게이션 핸들러 (visibleColumns 정의 후에 배치) + const handleTableKeyDown = useCallback((e: React.KeyboardEvent) => { + // 편집 중일 때는 테이블 키보드 핸들러 무시 (편집 입력에서 처리) + if (editingCell) return; + + if (!focusedCell || data.length === 0) return; + + const { rowIndex, colIndex } = focusedCell; + const maxRowIndex = data.length - 1; + const maxColIndex = visibleColumns.length - 1; + + switch (e.key) { + case "ArrowUp": + e.preventDefault(); + if (rowIndex > 0) { + setFocusedCell({ rowIndex: rowIndex - 1, colIndex }); + } + break; + case "ArrowDown": + e.preventDefault(); + if (rowIndex < maxRowIndex) { + setFocusedCell({ rowIndex: rowIndex + 1, colIndex }); + } + break; + case "ArrowLeft": + e.preventDefault(); + if (colIndex > 0) { + setFocusedCell({ rowIndex, colIndex: colIndex - 1 }); + } + break; + case "ArrowRight": + e.preventDefault(); + if (colIndex < maxColIndex) { + setFocusedCell({ rowIndex, colIndex: colIndex + 1 }); + } + break; + case "Enter": + e.preventDefault(); + // 현재 행 선택/해제 + const enterRow = data[rowIndex]; + if (enterRow) { + const rowKey = getRowKey(enterRow, rowIndex); + const isCurrentlySelected = selectedRows.has(rowKey); + handleRowSelection(rowKey, !isCurrentlySelected); + } + break; + case " ": // Space + e.preventDefault(); + // 체크박스 토글 + const spaceRow = data[rowIndex]; + if (spaceRow) { + const currentRowKey = getRowKey(spaceRow, rowIndex); + const isChecked = selectedRows.has(currentRowKey); + handleRowSelection(currentRowKey, !isChecked); + } + break; + case "F2": + // 🆕 F2: 편집 모드 진입 + e.preventDefault(); + { + const col = visibleColumns[colIndex]; + if (col && col.columnName !== "__checkbox__") { + const row = data[rowIndex]; + const mappedCol = joinColumnMapping[col.columnName] || col.columnName; + const val = row?.[mappedCol]; + setEditingCell({ + rowIndex, + colIndex, + columnName: col.columnName, + originalValue: val + }); + setEditingValue(val !== null && val !== undefined ? String(val) : ""); + } + } + break; + case "b": + case "B": + // 🆕 Ctrl+B: 배치 편집 모드 토글 + if (e.ctrlKey) { + e.preventDefault(); + setEditMode((prev) => { + const newMode = prev === "immediate" ? "batch" : "immediate"; + if (newMode === "immediate" && pendingChanges.size > 0) { + // 즉시 모드로 전환 시 저장되지 않은 변경사항 경고 + const confirmDiscard = window.confirm( + `저장되지 않은 ${pendingChanges.size}개의 변경사항이 있습니다. 취소하시겠습니까?` + ); + if (confirmDiscard) { + setPendingChanges(new Map()); + setLocalEditedData({}); + toast.info("배치 편집 모드 종료"); + return "immediate"; + } + return "batch"; + } + toast.info(newMode === "batch" ? "배치 편집 모드 시작 (Ctrl+B로 종료)" : "즉시 저장 모드"); + return newMode; + }); + } + break; + case "s": + case "S": + // 🆕 Ctrl+S: 배치 저장 + if (e.ctrlKey && editMode === "batch") { + e.preventDefault(); + saveBatchChanges(); + } + break; + case "c": + case "C": + // 🆕 Ctrl+C: 선택된 행/셀 복사 + if (e.ctrlKey) { + e.preventDefault(); + handleCopy(); + } + break; + case "v": + case "V": + // 🆕 Ctrl+V: 붙여넣기 (편집 중인 경우만) + if (e.ctrlKey && editingCell) { + // 기본 동작 허용 (input에서 처리) + } + break; + case "a": + case "A": + // 🆕 Ctrl+A: 전체 선택 + if (e.ctrlKey) { + e.preventDefault(); + handleSelectAllRows(); + } + break; + case "f": + case "F": + // 🆕 Ctrl+F: 통합 검색 패널 열기 + if (e.ctrlKey) { + e.preventDefault(); + setIsSearchPanelOpen(true); + } + break; + case "F3": + // 🆕 F3: 다음 검색 결과 / Shift+F3: 이전 검색 결과 + e.preventDefault(); + if (e.shiftKey) { + goToPrevSearchResult(); + } else { + goToNextSearchResult(); + } + break; + case "Home": + e.preventDefault(); + if (e.ctrlKey) { + // Ctrl+Home: 첫 번째 셀로 + setFocusedCell({ rowIndex: 0, colIndex: 0 }); + } else { + // Home: 현재 행의 첫 번째 셀로 + setFocusedCell({ rowIndex, colIndex: 0 }); + } + break; + case "End": + e.preventDefault(); + if (e.ctrlKey) { + // Ctrl+End: 마지막 셀로 + setFocusedCell({ rowIndex: maxRowIndex, colIndex: maxColIndex }); + } else { + // End: 현재 행의 마지막 셀로 + setFocusedCell({ rowIndex, colIndex: maxColIndex }); + } + break; + case "PageUp": + e.preventDefault(); + // 10행 위로 + setFocusedCell({ rowIndex: Math.max(0, rowIndex - 10), colIndex }); + break; + case "PageDown": + e.preventDefault(); + // 10행 아래로 + setFocusedCell({ rowIndex: Math.min(maxRowIndex, rowIndex + 10), colIndex }); + break; + case "Escape": + e.preventDefault(); + // 포커스 해제 + setFocusedCell(null); + break; + case "Tab": + e.preventDefault(); + if (e.shiftKey) { + // Shift+Tab: 이전 셀 + if (colIndex > 0) { + setFocusedCell({ rowIndex, colIndex: colIndex - 1 }); + } else if (rowIndex > 0) { + setFocusedCell({ rowIndex: rowIndex - 1, colIndex: maxColIndex }); + } + } else { + // Tab: 다음 셀 + if (colIndex < maxColIndex) { + setFocusedCell({ rowIndex, colIndex: colIndex + 1 }); + } else if (rowIndex < maxRowIndex) { + setFocusedCell({ rowIndex: rowIndex + 1, colIndex: 0 }); + } + } + break; + default: + // 🆕 직접 타이핑으로 편집 모드 진입 (영문자, 숫자, 한글 등) + if (e.key.length === 1 && !e.ctrlKey && !e.altKey && !e.metaKey) { + const column = visibleColumns[colIndex]; + if (column && column.columnName !== "__checkbox__") { + e.preventDefault(); + // 편집 시작 (현재 키를 초기값으로) + const row = data[rowIndex]; + const mappedColumnName = joinColumnMapping[column.columnName] || column.columnName; + const value = row?.[mappedColumnName]; + + setEditingCell({ + rowIndex, + colIndex, + columnName: column.columnName, + originalValue: value + }); + setEditingValue(e.key); // 입력한 키로 시작 + } + } + break; + } + }, [editingCell, focusedCell, data, visibleColumns, joinColumnMapping, selectedRows, getRowKey, handleRowSelection]); + const getColumnWidth = (column: ColumnConfig) => { if (column.columnName === "__checkbox__") return 50; if (column.width) return column.width; @@ -2411,14 +4344,42 @@ export const TableListComponent: React.FC = ({ groupValues[col] = items[0]?.[col]; }); + // 🆕 그룹별 소계 계산 + const groupSummary: Record = {}; + + // 숫자형 컬럼에 대해 소계 계산 + (tableConfig.columns || []).forEach((col: { columnName: string }) => { + if (col.columnName === "__checkbox__") return; + + const colMeta = columnMeta?.[col.columnName]; + const inputType = colMeta?.inputType; + const isNumeric = inputType === "number" || inputType === "decimal"; + + if (isNumeric) { + const values = items + .map((item) => parseFloat(item[col.columnName])) + .filter((v) => !isNaN(v)); + + if (values.length > 0) { + const sum = values.reduce((a, b) => a + b, 0); + groupSummary[col.columnName] = { + sum, + avg: sum / values.length, + count: values.length, + }; + } + } + }); + return { groupKey, groupValues, items, count: items.length, + summary: groupSummary, // 🆕 그룹별 소계 }; }); - }, [data, groupByColumns, columnLabels, columnMeta]); + }, [data, groupByColumns, columnLabels, columnMeta, tableConfig.columns]); // 저장된 그룹 설정 불러오기 useEffect(() => { @@ -2632,19 +4593,81 @@ export const TableListComponent: React.FC = ({
- {/* 우측 새로고침 버튼 */} - + {/* 우측 버튼 그룹 */} +
+ {/* 🆕 내보내기 버튼 (Excel/PDF) */} + + + + + +
+
Excel
+ + +
+
PDF/인쇄
+ + +
+ + + + {/* 새로고침 버튼 */} + +
); - }, [tableConfig.pagination, isDesignMode, currentPage, totalPages, totalItems, loading]); + }, [tableConfig.pagination, isDesignMode, currentPage, totalPages, totalItems, loading, selectedRows.size, exportToExcel, exportToPdf]); // ======================================== // 렌더링 @@ -2744,6 +4767,236 @@ export const TableListComponent: React.FC = ({
{/* 필터 헤더는 TableSearchWidget으로 이동 */} + {/* 🆕 DevExpress 스타일 기능 툴바 */} +
+ {/* 편집 모드 토글 */} +
+ +
+ + {/* 내보내기 버튼들 */} +
+ + +
+ + {/* 복사 버튼 */} +
+ +
+ + {/* 선택 정보 */} + {selectedRows.size > 0 && ( +
+ + {selectedRows.size}개 선택됨 + + +
+ )} + + {/* 🆕 통합 검색 패널 */} +
+ {isSearchPanelOpen ? ( +
+ setGlobalSearchTerm(e.target.value)} + onKeyDown={(e) => { + if (e.key === "Enter") { + executeGlobalSearch(globalSearchTerm); + } else if (e.key === "Escape") { + clearGlobalSearch(); + } else if (e.key === "F3" || (e.key === "g" && (e.ctrlKey || e.metaKey))) { + e.preventDefault(); + if (e.shiftKey) { + goToPrevSearchResult(); + } else { + goToNextSearchResult(); + } + } + }} + placeholder="검색어 입력... (Enter)" + className="border-input bg-background h-7 w-32 rounded border px-2 text-xs focus:outline-none focus:ring-1 focus:ring-primary sm:w-48" + autoFocus + /> + {searchHighlights.size > 0 && ( + + {searchHighlights.size}개 + + )} + + + +
+ ) : ( + + )} +
+ + {/* 🆕 Filter Builder (고급 필터) 버튼 */} +
+ + {activeFilterCount > 0 && ( + + )} +
+ + {/* 새로고침 */} +
+ +
+
+ + {/* 🆕 배치 편집 툴바 */} + {(editMode === "batch" || pendingChanges.size > 0) && ( +
+
+ + 배치 편집 모드 + + {pendingChanges.size > 0 && ( + + {pendingChanges.size}개 변경사항 + + )} +
+
+ + +
+
+ )} + {/* 그룹 표시 배지 */} {groupByColumns.length > 0 && (
@@ -2770,17 +5023,23 @@ export const TableListComponent: React.FC = ({
)} - {/* 테이블 컨테이너 */} + {/* 테이블 컨테이너 - 키보드 네비게이션 지원 */}
{/* 스크롤 영역 */}
= ({ height: "100%", overflow: "auto", }} + onScroll={handleVirtualScroll} > {/* 테이블 */} = ({ backgroundColor: "hsl(var(--background))", }} > + {/* 🆕 Multi-Level Headers (Column Bands) */} + {columnBandsInfo?.hasBands && ( + + {visibleColumns.map((column, colIdx) => { + // 이 컬럼이 속한 band 찾기 + const band = columnBandsInfo.bands.find( + (b) => b.columns.includes(column.columnName) && b.startIndex === colIdx + ); + + // band의 첫 번째 컬럼인 경우에만 렌더링 + if (band) { + return ( + + ); + } + + // band에 속하지 않은 컬럼 (개별 표시) + const isInAnyBand = columnBandsInfo.bands.some( + (b) => b.columns.includes(column.columnName) + ); + if (!isInAnyBand) { + return ( + + ); + } + + // band의 중간 컬럼은 렌더링하지 않음 + return null; + })} + + )} = ({ } } + // 🆕 Column Reordering 상태 + const isColumnDragging = draggedColumnIndex === columnIndex; + const isColumnDropTarget = dropTargetColumnIndex === columnIndex; + return ( ))} + {/* 🆕 그룹별 소계 행 */} + {!isCollapsed && group.summary && Object.keys(group.summary).length > 0 && ( + + {visibleColumns.map((column, colIndex) => { + const summary = group.summary?.[column.columnName]; + const meta = columnMeta[column.columnName]; + const inputType = meta?.inputType || (column as any).inputType; + const isNumeric = inputType === "number" || inputType === "decimal"; + + if (colIndex === 0 && column.columnName === "__checkbox__") { + return ( + + ); + } + + if (colIndex === 0 && column.columnName !== "__checkbox__") { + return ( + + ); + } + + if (summary) { + return ( + + ); + } + + return + )} ); }) ) : ( - // 일반 렌더링 (그룹 없음) - filteredData.map((row, index) => ( - handleRowClick(row, index, e)} - > - {visibleColumns.map((column, colIndex) => { - const mappedColumnName = joinColumnMapping[column.columnName] || column.columnName; - const cellValue = row[mappedColumnName]; + // 일반 렌더링 (그룹 없음) - 키보드 네비게이션 지원 + <> + {/* 🆕 Virtual Scrolling: Top Spacer */} + {isVirtualScrollEnabled && virtualScrollInfo.topSpacerHeight > 0 && ( + + + )} + {/* 데이터 행 렌더링 */} + {(isVirtualScrollEnabled ? virtualScrollInfo.visibleData : filteredData).map((row, idx) => { + // Virtual Scrolling에서는 실제 인덱스 계산 + const index = isVirtualScrollEnabled ? virtualScrollInfo.startIndex + idx : idx; + const rowKey = getRowKey(row, index); + const isRowSelected = selectedRows.has(rowKey); + const isRowFocused = focusedCell?.rowIndex === index; + + // 🆕 Drag & Drop 상태 + const isDragging = draggedRowIndex === index; + const isDropTarget = dropTargetIndex === index; + + return ( + handleRowClick(row, index, e)} + role="row" + aria-selected={isRowSelected} + // 🆕 Drag & Drop 이벤트 + draggable={isDragEnabled} + onDragStart={(e) => handleRowDragStart(e, index)} + onDragOver={(e) => handleRowDragOver(e, index)} + onDragEnd={handleRowDragEnd} + onDrop={(e) => handleRowDrop(e, index)} + > + {visibleColumns.map((column, colIndex) => { + const mappedColumnName = joinColumnMapping[column.columnName] || column.columnName; + // 🆕 배치 편집: 로컬 수정 데이터 우선 표시 + const cellValue = editMode === "batch" + ? getDisplayValue(row, index, mappedColumnName) + : row[mappedColumnName]; - const meta = columnMeta[column.columnName]; - const inputType = meta?.inputType || column.inputType; - const isNumeric = inputType === "number" || inputType === "decimal"; + const meta = columnMeta[column.columnName]; + const inputType = meta?.inputType || column.inputType; + const isNumeric = inputType === "number" || inputType === "decimal"; - const isFrozen = frozenColumns.includes(column.columnName); - const frozenIndex = frozenColumns.indexOf(column.columnName); + const isFrozen = frozenColumns.includes(column.columnName); + const frozenIndex = frozenColumns.indexOf(column.columnName); + + // 셀 포커스 상태 + const isCellFocused = focusedCell?.rowIndex === index && focusedCell?.colIndex === colIndex; + + // 🆕 배치 편집: 수정된 셀 여부 + const isModified = isCellModified(index, mappedColumnName); + + // 🆕 유효성 검사 에러 + const cellValidationError = getCellValidationError(index, mappedColumnName); + + // 🆕 검색 하이라이트 여부 + const isSearchHighlighted = searchHighlights.has(`${index}-${colIndex}`); - // 틀고정된 컬럼의 left 위치 계산 - let leftPosition = 0; - if (isFrozen && frozenIndex > 0) { - for (let i = 0; i < frozenIndex; i++) { - const frozenCol = frozenColumns[i]; - const frozenColWidth = columnWidths[frozenCol] || 150; - leftPosition += frozenColWidth; + // 틀고정된 컬럼의 left 위치 계산 + let leftPosition = 0; + if (isFrozen && frozenIndex > 0) { + for (let i = 0; i < frozenIndex; i++) { + const frozenCol = frozenColumns[i]; + const frozenColWidth = columnWidths[frozenCol] || 150; + leftPosition += frozenColWidth; + } } - } - return ( - - ); - })} - - )) + return ( + + ); + })} + + ); + })} + {/* 🆕 Virtual Scrolling: Bottom Spacer */} + {isVirtualScrollEnabled && virtualScrollInfo.bottomSpacerHeight > 0 && ( + + + )} + )} + + {/* 🆕 데이터 요약 (Total Summaries) */} + {summaryData && Object.keys(summaryData).length > 0 && ( + + + {visibleColumns.map((column, colIndex) => { + const summary = summaryData[column.columnName]; + const columnWidth = columnWidths[column.columnName]; + const isFrozen = frozenColumns.includes(column.columnName); + const frozenIndex = frozenColumns.indexOf(column.columnName); + + // 틀고정된 컬럼의 left 위치 계산 + let leftPosition = 0; + if (isFrozen && frozenIndex > 0) { + for (let i = 0; i < frozenIndex; i++) { + const frozenCol = frozenColumns[i]; + const frozenColWidth = columnWidths[frozenCol] || 150; + leftPosition += frozenColWidth; + } + } + + const meta = columnMeta[column.columnName]; + const inputType = meta?.inputType || (column as any).inputType; + const isNumeric = inputType === "number" || inputType === "decimal"; + + return ( + + ); + })} + + + )}
+ {band.caption} + + {columnLabels[column.columnName] || column.columnName} +
= ({ column.columnName !== "__checkbox__" && "hover:bg-muted/70 cursor-pointer transition-colors", isFrozen && "sticky z-60 shadow-[2px_0_4px_rgba(0,0,0,0.1)]", + // 🆕 Column Reordering 스타일 + isColumnDragEnabled && column.columnName !== "__checkbox__" && "cursor-grab active:cursor-grabbing", + isColumnDragging && "opacity-50 bg-primary/20", + isColumnDropTarget && "border-l-4 border-l-primary", )} style={{ textAlign: column.columnName === "__checkbox__" ? "center" : "center", @@ -2855,6 +5169,12 @@ export const TableListComponent: React.FC = ({ backgroundColor: "hsl(var(--muted))", ...(isFrozen && { left: `${leftPosition}px` }), }} + // 🆕 Column Reordering 이벤트 + draggable={isColumnDragEnabled && column.columnName !== "__checkbox__"} + onDragStart={(e) => handleColumnDragStart(e, columnIndex)} + onDragOver={(e) => handleColumnDragOver(e, columnIndex)} + onDragEnd={handleColumnDragEnd} + onDrop={(e) => handleColumnDrop(e, columnIndex)} onClick={() => { if (isResizing.current) return; if (column.sortable !== false && column.columnName !== "__checkbox__") { @@ -2865,11 +5185,81 @@ export const TableListComponent: React.FC = ({ {column.columnName === "__checkbox__" ? ( renderCheckboxHeader() ) : ( -
+
{columnLabels[column.columnName] || column.displayName} {column.sortable !== false && sortColumn === column.columnName && ( {sortDirection === "asc" ? "↑" : "↓"} )} + {/* 🆕 헤더 필터 버튼 */} + {tableConfig.headerFilter !== false && columnUniqueValues[column.columnName]?.length > 0 && ( + setOpenFilterColumn(open ? column.columnName : null)} + > + + + + e.stopPropagation()} + > +
+
+ 필터: {columnLabels[column.columnName] || column.displayName} + {headerFilters[column.columnName]?.size > 0 && ( + + )} +
+
+ {columnUniqueValues[column.columnName]?.slice(0, 50).map((val) => { + const isSelected = headerFilters[column.columnName]?.has(val); + return ( +
toggleHeaderFilter(column.columnName, val)} + > +
+ {isSelected && } +
+ {val || "(빈 값)"} +
+ ); + })} + {(columnUniqueValues[column.columnName]?.length || 0) > 50 && ( +
+ ...외 {(columnUniqueValues[column.columnName]?.length || 0) - 50}개 +
+ )} +
+
+
+
+ )}
)} {/* 리사이즈 핸들 (체크박스 제외) */} @@ -3073,71 +5463,317 @@ export const TableListComponent: React.FC = ({ })}
+ 소계 + + 소계 ({group.count}건) + + {summary.sum.toLocaleString()} + ; + })} +
+
- {column.columnName === "__checkbox__" - ? renderCheckboxCell(row, index) - : formatCellValue(cellValue, column, row)} -
handleCellClick(index, colIndex, e)} + onDoubleClick={() => handleCellDoubleClick(index, colIndex, column.columnName, cellValue)} + onContextMenu={(e) => handleContextMenu(e, index, colIndex, row)} + role="gridcell" + tabIndex={isCellFocused ? 0 : -1} + > + {/* 🆕 인라인 편집 모드 */} + {editingCell?.rowIndex === index && editingCell?.colIndex === colIndex ? ( + // 🆕 Cascading Lookups: 드롭다운 또는 일반 입력 + (() => { + const cascadingConfig = (tableConfig as any).cascadingLookups?.[column.columnName]; + const options = cascadingConfig ? getCascadingOptions(column.columnName, row) : []; + + // 부모 값이 변경되면 옵션 로딩 + if (cascadingConfig && options.length === 0) { + const parentValue = row[cascadingConfig.parentColumn]; + if (parentValue !== undefined && parentValue !== null) { + loadCascadingOptions(column.columnName, cascadingConfig.parentColumn, parentValue); + } + } + + // 카테고리/코드 타입이거나 Cascading Lookup인 경우 드롭다운 + const colMeta = columnMeta[column.columnName]; + const isCategoryType = colMeta?.inputType === "category" || colMeta?.inputType === "code"; + const hasCategoryOptions = categoryMappings[column.columnName] && Object.keys(categoryMappings[column.columnName]).length > 0; + + if (cascadingConfig || (isCategoryType && hasCategoryOptions)) { + const selectOptions = cascadingConfig + ? options + : Object.entries(categoryMappings[column.columnName] || {}).map(([value, info]) => ({ + value, + label: info.label, + })); + + return ( + + ); + } + + // 일반 입력 필드 + return ( + setEditingValue(e.target.value)} + onKeyDown={handleEditKeyDown} + onBlur={saveEditing} + className="w-full h-full px-2 py-1 sm:px-4 sm:py-1.5 text-xs sm:text-sm border-2 border-primary bg-background focus:outline-none" + style={{ + textAlign: isNumeric ? "right" : column.align || "left", + }} + /> + ); + })() + ) : column.columnName === "__checkbox__" ? ( + renderCheckboxCell(row, index) + ) : ( + formatCellValue(cellValue, column, row) + )} +
+
+ {summary ? ( +
+ {summary.label} + + {typeof summary.value === "number" + ? summary.value.toLocaleString("ko-KR", { + maximumFractionDigits: 2, + }) + : summary.value} + +
+ ) : colIndex === 0 ? ( + 요약 + ) : null} +
@@ -3226,6 +5862,284 @@ export const TableListComponent: React.FC = ({ + {/* 🆕 Context Menu (우클릭 메뉴) */} + {contextMenu && ( +
e.stopPropagation()} + > +
+ {/* 셀 복사 */} + + + {/* 행 복사 */} + + +
+ + {/* 셀 편집 */} + + + {/* 행 선택/해제 */} + + +
+ + {/* 행 삭제 */} + +
+
+ )} + + {/* 🆕 Filter Builder 모달 */} + + + + 고급 필터 + + 여러 조건을 조합하여 데이터를 필터링합니다. + + + +
+ {filterGroups.length === 0 ? ( +
+ 필터 조건이 없습니다. 아래 버튼을 클릭하여 조건을 추가하세요. +
+ ) : ( + filterGroups.map((group, groupIndex) => ( +
+
+
+ 조건 그룹 {groupIndex + 1} + +
+ +
+ +
+ {group.conditions.map((condition) => ( +
+ {/* 컬럼 선택 */} + + + {/* 연산자 선택 */} + + + {/* 값 입력 (isEmpty/isNotEmpty가 아닌 경우만) */} + {condition.operator !== "isEmpty" && condition.operator !== "isNotEmpty" && ( + updateFilterCondition(group.id, condition.id, "value", e.target.value)} + placeholder="값 입력" + className="border-input bg-background h-8 flex-1 rounded border px-2 text-xs" + /> + )} + + {/* 조건 삭제 */} + +
+ ))} +
+ + {/* 조건 추가 버튼 */} + +
+ )) + )} + + {/* 그룹 추가 버튼 */} + +
+ + + + + + +
+
+ {/* 테이블 옵션 모달 */} Date: Fri, 5 Dec 2025 17:42:35 +0900 Subject: [PATCH 18/64] =?UTF-8?q?=EC=9E=90=EB=AC=BC=EC=87=A0=20=EB=88=84?= =?UTF-8?q?=EB=A5=B4=EB=A9=B4=20=EC=BB=AC=EB=9F=BC=20=EA=B0=92=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=20=EC=95=88=EB=90=A9=EB=8B=88=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../table-list/TableListComponent.tsx | 86 ++++++++++++++----- .../table-list/TableListConfigPanel.tsx | 25 +++++- .../registry/components/table-list/types.ts | 1 + 3 files changed, 88 insertions(+), 24 deletions(-) diff --git a/frontend/lib/registry/components/table-list/TableListComponent.tsx b/frontend/lib/registry/components/table-list/TableListComponent.tsx index 85155eb2..982a7f8c 100644 --- a/frontend/lib/registry/components/table-list/TableListComponent.tsx +++ b/frontend/lib/registry/components/table-list/TableListComponent.tsx @@ -31,6 +31,7 @@ import { Edit, CheckSquare, Trash2, + Lock, } from "lucide-react"; import * as XLSX from "xlsx"; import { FileText, ChevronRightIcon } from "lucide-react"; @@ -391,11 +392,13 @@ export const TableListComponent: React.FC = ({ checkboxCol = { columnName: "__checkbox__", displayName: "", - webType: "checkbox", visible: true, sortable: false, - filterable: false, + searchable: false, width: 40, + align: "center" as const, + order: -1, + editable: false, // 체크박스는 편집 불가 }; } @@ -2068,10 +2071,17 @@ export const TableListComponent: React.FC = ({ // 체크박스 컬럼은 편집 불가 if (columnName === "__checkbox__") return; + // 🆕 편집 불가 컬럼 체크 + const column = visibleColumns.find((col) => col.columnName === columnName); + if (column?.editable === false) { + toast.warning(`'${column.displayName || columnName}' 컬럼은 편집할 수 없습니다.`); + return; + } + setEditingCell({ rowIndex, colIndex, columnName, originalValue: value }); setEditingValue(value !== null && value !== undefined ? String(value) : ""); setFocusedCell({ rowIndex, colIndex }); - }, []); + }, [visibleColumns]); // 🆕 편집 모드 진입 placeholder (실제 구현은 visibleColumns 정의 후) const startEditingRef = useRef<() => void>(() => {}); @@ -3687,6 +3697,11 @@ export const TableListComponent: React.FC = ({ { const col = visibleColumns[colIndex]; if (col && col.columnName !== "__checkbox__") { + // 🆕 편집 불가 컬럼 체크 + if (col.editable === false) { + toast.warning(`'${col.displayName || col.columnName}' 컬럼은 편집할 수 없습니다.`); + break; + } const row = data[rowIndex]; const mappedCol = joinColumnMapping[col.columnName] || col.columnName; const val = row?.[mappedCol]; @@ -3831,6 +3846,11 @@ export const TableListComponent: React.FC = ({ if (e.key.length === 1 && !e.ctrlKey && !e.altKey && !e.metaKey) { const column = visibleColumns[colIndex]; if (column && column.columnName !== "__checkbox__") { + // 🆕 편집 불가 컬럼 체크 + if (column.editable === false) { + toast.warning(`'${column.displayName || column.columnName}' 컬럼은 편집할 수 없습니다.`); + break; + } e.preventDefault(); // 편집 시작 (현재 키를 초기값으로) const row = data[rowIndex]; @@ -5186,6 +5206,12 @@ export const TableListComponent: React.FC = ({ renderCheckboxHeader() ) : (
+ {/* 🆕 편집 불가 컬럼 표시 */} + {column.editable === false && ( + + + + )} {columnLabels[column.columnName] || column.displayName} {column.sortable !== false && sortColumn === column.columnName && ( {sortDirection === "asc" ? "↑" : "↓"} @@ -5605,6 +5631,8 @@ export const TableListComponent: React.FC = ({ cellValidationError && "bg-red-50 dark:bg-red-950/40 ring-2 ring-red-500 ring-inset", // 🆕 검색 하이라이트 스타일 (노란 배경) isSearchHighlighted && !isCellFocused && "bg-yellow-200 dark:bg-yellow-700/50", + // 🆕 편집 불가 컬럼 스타일 (연한 회색 배경) + column.editable === false && "bg-gray-50 dark:bg-gray-900/30", )} // 🆕 유효성 에러 툴팁 title={cellValidationError || undefined} @@ -5909,25 +5937,39 @@ export const TableListComponent: React.FC = ({
{/* 셀 편집 */} - + {(() => { + const col = visibleColumns[contextMenu.colIndex]; + const isEditable = col?.editable !== false && col?.columnName !== "__checkbox__"; + return ( + + ); + })()} {/* 행 선택/해제 */}
- {/* 필터 체크박스 + 순서 변경 + 삭제 버튼 */} + {/* 편집 가능 여부 + 필터 체크박스 */}
+ {/* 🆕 편집 가능 여부 토글 */} + + + {/* 필터 체크박스 */} f.columnName === column.columnName) || false} onCheckedChange={(checked) => { @@ -1174,6 +1194,7 @@ export const TableListConfigPanel: React.FC = ({ } }} className="h-3 w-3" + title="필터에 추가" />
diff --git a/frontend/lib/registry/components/table-list/types.ts b/frontend/lib/registry/components/table-list/types.ts index 2475f58f..a619baa0 100644 --- a/frontend/lib/registry/components/table-list/types.ts +++ b/frontend/lib/registry/components/table-list/types.ts @@ -77,6 +77,7 @@ export interface ColumnConfig { // 새로운 기능들 hidden?: boolean; // 숨김 기능 (편집기에서는 연하게, 실제 화면에서는 숨김) autoGeneration?: AutoGenerationConfig; // 자동생성 설정 + editable?: boolean; // 🆕 편집 가능 여부 (기본값: true, false면 인라인 편집 불가) // 🎯 추가 조인 컬럼 정보 (조인 탭에서 추가한 컬럼들) additionalJoinInfo?: { -- 2.43.0 From 133b50dcaa5d8c06a49e98495a1855cb8f167033 Mon Sep 17 00:00:00 2001 From: dohyeons Date: Fri, 5 Dec 2025 18:29:32 +0900 Subject: [PATCH 19/64] =?UTF-8?q?=EC=A7=80=EB=8F=84=20=EC=9C=84=EC=A0=AF?= =?UTF-8?q?=20REST=20API=20Request=20Body=20=EC=A0=84=EB=8B=AC=20=EC=98=A4?= =?UTF-8?q?=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/controllers/DashboardController.ts | 24 ++-- .../dashboard/widgets/MapTestWidgetV2.tsx | 130 ++++++++++-------- 2 files changed, 85 insertions(+), 69 deletions(-) diff --git a/backend-node/src/controllers/DashboardController.ts b/backend-node/src/controllers/DashboardController.ts index e324c332..d0b22db4 100644 --- a/backend-node/src/controllers/DashboardController.ts +++ b/backend-node/src/controllers/DashboardController.ts @@ -709,9 +709,9 @@ export class DashboardController { } // 기상청 API 등 EUC-KR 인코딩을 사용하는 경우 arraybuffer로 받아서 디코딩 - const isKmaApi = urlObj.hostname.includes('kma.go.kr'); + const isKmaApi = urlObj.hostname.includes("kma.go.kr"); if (isKmaApi) { - requestConfig.responseType = 'arraybuffer'; + requestConfig.responseType = "arraybuffer"; } const response = await axios(requestConfig); @@ -727,18 +727,22 @@ export class DashboardController { // 기상청 API 인코딩 처리 (UTF-8 우선, 실패 시 EUC-KR) if (isKmaApi && Buffer.isBuffer(data)) { - const iconv = require('iconv-lite'); + const iconv = require("iconv-lite"); const buffer = Buffer.from(data); - const utf8Text = buffer.toString('utf-8'); - + const utf8Text = buffer.toString("utf-8"); + // UTF-8로 정상 디코딩되었는지 확인 - if (utf8Text.includes('특보') || utf8Text.includes('경보') || utf8Text.includes('주의보') || - (utf8Text.includes('#START7777') && !utf8Text.includes('�'))) { - data = { text: utf8Text, contentType, encoding: 'utf-8' }; + if ( + utf8Text.includes("특보") || + utf8Text.includes("경보") || + utf8Text.includes("주의보") || + (utf8Text.includes("#START7777") && !utf8Text.includes("�")) + ) { + data = { text: utf8Text, contentType, encoding: "utf-8" }; } else { // EUC-KR로 디코딩 - const eucKrText = iconv.decode(buffer, 'EUC-KR'); - data = { text: eucKrText, contentType, encoding: 'euc-kr' }; + const eucKrText = iconv.decode(buffer, "EUC-KR"); + data = { text: eucKrText, contentType, encoding: "euc-kr" }; } } // 텍스트 응답인 경우 포맷팅 diff --git a/frontend/components/dashboard/widgets/MapTestWidgetV2.tsx b/frontend/components/dashboard/widgets/MapTestWidgetV2.tsx index 02cafe2b..94c3a217 100644 --- a/frontend/components/dashboard/widgets/MapTestWidgetV2.tsx +++ b/frontend/components/dashboard/widgets/MapTestWidgetV2.tsx @@ -94,12 +94,12 @@ export default function MapTestWidgetV2({ element }: MapTestWidgetV2Props) { const [error, setError] = useState(null); const [geoJsonData, setGeoJsonData] = useState(null); const [lastRefreshTime, setLastRefreshTime] = useState(null); - + // 이동경로 상태 const [routePoints, setRoutePoints] = useState([]); const [selectedUserId, setSelectedUserId] = useState(null); const [routeLoading, setRouteLoading] = useState(false); - const [routeDate, setRouteDate] = useState(new Date().toISOString().split('T')[0]); // YYYY-MM-DD 형식 + const [routeDate, setRouteDate] = useState(new Date().toISOString().split("T")[0]); // YYYY-MM-DD 형식 // dataSources를 useMemo로 추출 (circular reference 방지) const dataSources = useMemo(() => { @@ -122,62 +122,59 @@ export default function MapTestWidgetV2({ element }: MapTestWidgetV2Props) { }, []); // 이동경로 로드 함수 - const loadRoute = useCallback(async (userId: string, date?: string) => { - if (!userId) { - console.log("🛣️ 이동경로 조회 불가: userId 없음"); - return; - } + const loadRoute = useCallback( + async (userId: string, date?: string) => { + if (!userId) { + return; + } - setRouteLoading(true); - setSelectedUserId(userId); + setRouteLoading(true); + setSelectedUserId(userId); - try { - // 선택한 날짜 기준으로 이동경로 조회 - const targetDate = date || routeDate; - const startOfDay = `${targetDate}T00:00:00.000Z`; - const endOfDay = `${targetDate}T23:59:59.999Z`; - - const query = `SELECT latitude, longitude, recorded_at + try { + // 선택한 날짜 기준으로 이동경로 조회 + const targetDate = date || routeDate; + const startOfDay = `${targetDate}T00:00:00.000Z`; + const endOfDay = `${targetDate}T23:59:59.999Z`; + + const query = `SELECT latitude, longitude, recorded_at FROM vehicle_location_history WHERE user_id = '${userId}' AND recorded_at >= '${startOfDay}' AND recorded_at <= '${endOfDay}' ORDER BY recorded_at ASC`; - console.log("🛣️ 이동경로 쿼리:", query); + const response = await fetch(getApiUrl("/api/dashboards/execute-query"), { + method: "POST", + headers: { + "Content-Type": "application/json", + Authorization: `Bearer ${typeof window !== "undefined" ? localStorage.getItem("authToken") || "" : ""}`, + }, + body: JSON.stringify({ query }), + }); - const response = await fetch(getApiUrl("/api/dashboards/execute-query"), { - method: "POST", - headers: { - "Content-Type": "application/json", - Authorization: `Bearer ${typeof window !== "undefined" ? localStorage.getItem("authToken") || "" : ""}`, - }, - body: JSON.stringify({ query }), - }); + if (response.ok) { + const result = await response.json(); + if (result.success && result.data.rows.length > 0) { + const points: RoutePoint[] = result.data.rows.map((row: any) => ({ + lat: parseFloat(row.latitude), + lng: parseFloat(row.longitude), + recordedAt: row.recorded_at, + })); - if (response.ok) { - const result = await response.json(); - if (result.success && result.data.rows.length > 0) { - const points: RoutePoint[] = result.data.rows.map((row: any) => ({ - lat: parseFloat(row.latitude), - lng: parseFloat(row.longitude), - recordedAt: row.recorded_at, - })); - - console.log(`🛣️ 이동경로 ${points.length}개 포인트 로드 완료`); - setRoutePoints(points); - } else { - console.log("🛣️ 이동경로 데이터 없음"); - setRoutePoints([]); + setRoutePoints(points); + } else { + setRoutePoints([]); + } } + } catch { + setRoutePoints([]); } - } catch (error) { - console.error("이동경로 로드 실패:", error); - setRoutePoints([]); - } - setRouteLoading(false); - }, [routeDate]); + setRouteLoading(false); + }, + [routeDate], + ); // 이동경로 숨기기 const clearRoute = useCallback(() => { @@ -297,6 +294,17 @@ export default function MapTestWidgetV2({ element }: MapTestWidgetV2Props) { }); } + // Request Body 파싱 + let requestBody: any = undefined; + if (source.body) { + try { + requestBody = JSON.parse(source.body); + } catch { + // JSON 파싱 실패시 문자열 그대로 사용 + requestBody = source.body; + } + } + // 백엔드 프록시를 통해 API 호출 const response = await fetch(getApiUrl("/api/dashboards/fetch-external-api"), { method: "POST", @@ -309,6 +317,8 @@ export default function MapTestWidgetV2({ element }: MapTestWidgetV2Props) { method: source.method || "GET", headers, queryParams, + body: requestBody, + externalConnectionId: source.externalConnectionId, }), }); @@ -344,14 +354,18 @@ export default function MapTestWidgetV2({ element }: MapTestWidgetV2Props) { } } + // 데이터가 null/undefined면 빈 결과 반환 + if (data === null || data === undefined) { + return { markers: [], polygons: [] }; + } + const rows = Array.isArray(data) ? data : [data]; // 컬럼 매핑 적용 const mappedRows = applyColumnMapping(rows, source.columnMapping); // 마커와 폴리곤으로 변환 (mapDisplayType + dataSource 전달) - const finalResult = convertToMapData(mappedRows, source.name || source.id || "API", source.mapDisplayType, source); - return finalResult; + return convertToMapData(mappedRows, source.name || source.id || "API", source.mapDisplayType, source); }; // Database 데이터 로딩 @@ -485,6 +499,11 @@ export default function MapTestWidgetV2({ element }: MapTestWidgetV2Props) { const polygons: PolygonData[] = []; rows.forEach((row, index) => { + // null/undefined 체크 + if (!row) { + return; + } + // 텍스트 데이터 체크 (기상청 API 등) if (row && typeof row === "object" && row.text && typeof row.text === "string") { const parsedData = parseTextData(row.text); @@ -1098,13 +1117,8 @@ export default function MapTestWidgetV2({ element }: MapTestWidgetV2Props) { }} className="h-6 rounded border-none bg-transparent px-1 text-xs text-blue-600 focus:outline-none" /> - - ({routePoints.length}개) - -
@@ -1409,12 +1423,12 @@ export default function MapTestWidgetV2({ element }: MapTestWidgetV2Props) { // 트럭 마커 // 트럭 아이콘이 오른쪽(90도)을 보고 있으므로, 북쪽(0도)으로 가려면 -90도 회전 필요 const rotation = heading - 90; - + // 회전 각도가 90~270도 범위면 차량이 뒤집어짐 (바퀴가 위로) // 이 경우 scaleY(-1)로 상하 반전하여 바퀴가 아래로 오도록 함 const normalizedRotation = ((rotation % 360) + 360) % 360; const isFlipped = normalizedRotation > 90 && normalizedRotation < 270; - const transformStyle = isFlipped + const transformStyle = isFlipped ? `translate(-50%, -50%) rotate(${rotation}deg) scaleY(-1)` : `translate(-50%, -50%) rotate(${rotation}deg)`; @@ -1654,9 +1668,7 @@ export default function MapTestWidgetV2({ element }: MapTestWidgetV2Props) { disabled={routeLoading} className="w-full rounded bg-blue-500 px-2 py-1 text-xs text-white hover:bg-blue-600 disabled:opacity-50" > - {routeLoading && selectedUserId === userId - ? "로딩 중..." - : "🛣️ 이동경로 보기"} + {routeLoading && selectedUserId === userId ? "로딩 중..." : "🛣️ 이동경로 보기"}
); -- 2.43.0 From 30657fd02d38a70166817fbb70805ebce7fb297e Mon Sep 17 00:00:00 2001 From: leeheejin Date: Mon, 8 Dec 2025 10:23:54 +0900 Subject: [PATCH 20/64] =?UTF-8?q?restapi=20=EB=8F=84=20=EA=B2=BD=EB=A1=9C?= =?UTF-8?q?=EB=B3=B4=EA=B8=B0=20=EA=B0=80=EB=8A=A5,=20=EC=B6=9C=EB=B0=9C?= =?UTF-8?q?=EC=A7=80=EB=AA=A9=EC=A0=81=EC=A7=80=20=EB=8F=99=EC=8B=9C?= =?UTF-8?q?=EC=97=90=20=EA=B0=99=EC=9D=80=EA=B1=B0=20=EB=AA=BB=ED=95=98?= =?UTF-8?q?=EA=B2=8C,=20=EC=9E=90=EB=AC=BC=EC=87=A0=EA=B1=B8=EB=A9=B4=20?= =?UTF-8?q?=EC=BB=AC=EB=9F=BC=20=EC=88=98=EC=A0=95=20=EB=AA=BB=ED=95=A8=20?= =?UTF-8?q?tablelistcomponent?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cursor/rules/table-list-component-guide.mdc | 310 ++++++++++++++++++ .../src/controllers/DashboardController.ts | 9 + .../src/controllers/dynamicFormController.ts | 9 +- .../externalRestApiConnectionService.ts | 11 +- .../src/types/externalRestApiTypes.ts | 3 + .../admin/RestApiConnectionModal.tsx | 14 + .../dashboard/data-sources/MultiApiConfig.tsx | 18 + frontend/components/admin/dashboard/types.ts | 3 + .../dashboard/widgets/MapTestWidgetV2.tsx | 77 ++++- frontend/lib/api/externalRestApiConnection.ts | 3 + .../LocationSwapSelectorComponent.tsx | 42 ++- 11 files changed, 485 insertions(+), 14 deletions(-) create mode 100644 .cursor/rules/table-list-component-guide.mdc diff --git a/.cursor/rules/table-list-component-guide.mdc b/.cursor/rules/table-list-component-guide.mdc new file mode 100644 index 00000000..5d3f0e1f --- /dev/null +++ b/.cursor/rules/table-list-component-guide.mdc @@ -0,0 +1,310 @@ +# TableListComponent 개발 가이드 + +## 개요 + +`TableListComponent`는 ERP 시스템의 핵심 데이터 그리드 컴포넌트입니다. DevExpress DataGrid 스타일의 고급 기능들을 구현하고 있습니다. + +**파일 위치**: `frontend/lib/registry/components/table-list/TableListComponent.tsx` + +--- + +## 핵심 기능 목록 + +### 1. 인라인 편집 (Inline Editing) + +- 셀 더블클릭 또는 F2 키로 편집 모드 진입 +- 직접 타이핑으로도 편집 모드 진입 가능 +- Enter로 저장, Escape로 취소 +- **컬럼별 편집 가능 여부 설정** (`editable` 속성) + +```typescript +// ColumnConfig에서 editable 속성 사용 +interface ColumnConfig { + editable?: boolean; // false면 해당 컬럼 인라인 편집 불가 +} +``` + +**편집 불가 컬럼 체크 필수 위치**: +1. `handleCellDoubleClick` - 더블클릭 편집 +2. `onKeyDown` F2 케이스 - 키보드 편집 +3. `onKeyDown` default 케이스 - 직접 타이핑 편집 +4. 컨텍스트 메뉴 "셀 편집" 옵션 + +### 2. 배치 편집 (Batch Editing) + +- 여러 셀 수정 후 일괄 저장/취소 +- `pendingChanges` Map으로 변경사항 추적 +- 저장 전 유효성 검증 + +### 3. 데이터 유효성 검증 (Validation) + +```typescript +type ValidationRule = { + required?: boolean; + min?: number; + max?: number; + minLength?: number; + maxLength?: number; + pattern?: RegExp; + customMessage?: string; + validate?: (value: any, row: any) => string | null; +}; +``` + +### 4. 컬럼 헤더 필터 (Header Filter) + +- 각 컬럼 헤더에 필터 아이콘 +- 고유값 목록에서 다중 선택 필터링 +- `headerFilters` Map으로 필터 상태 관리 + +### 5. 필터 빌더 (Filter Builder) + +```typescript +interface FilterCondition { + id: string; + column: string; + operator: "equals" | "notEquals" | "contains" | "notContains" | + "startsWith" | "endsWith" | "greaterThan" | "lessThan" | + "greaterOrEqual" | "lessOrEqual" | "isEmpty" | "isNotEmpty"; + value: string; +} + +interface FilterGroup { + id: string; + logic: "AND" | "OR"; + conditions: FilterCondition[]; +} +``` + +### 6. 검색 패널 (Search Panel) + +- 전체 데이터 검색 +- 검색어 하이라이팅 +- `searchHighlights` Map으로 하이라이트 위치 관리 + +### 7. 엑셀 내보내기 (Excel Export) + +- `xlsx` 라이브러리 사용 +- 현재 표시 데이터 또는 전체 데이터 내보내기 + +```typescript +import * as XLSX from "xlsx"; + +// 사용 예시 +const worksheet = XLSX.utils.json_to_sheet(exportData); +const workbook = XLSX.utils.book_new(); +XLSX.utils.book_append_sheet(workbook, worksheet, "Sheet1"); +XLSX.writeFile(workbook, `${tableName}_${timestamp}.xlsx`); +``` + +### 8. 클립보드 복사 (Copy to Clipboard) + +- 선택된 행 또는 전체 데이터 복사 +- 탭 구분자로 엑셀 붙여넣기 호환 + +### 9. 컨텍스트 메뉴 (Context Menu) + +- 우클릭으로 메뉴 표시 +- 셀 편집, 행 복사, 행 삭제 등 옵션 +- 편집 불가 컬럼은 "(잠김)" 표시 + +### 10. 키보드 네비게이션 + +| 키 | 동작 | +|---|---| +| Arrow Keys | 셀 이동 | +| Tab | 다음 셀 | +| Shift+Tab | 이전 셀 | +| F2 | 편집 모드 | +| Enter | 저장 후 아래로 이동 | +| Escape | 편집 취소 | +| Ctrl+C | 복사 | +| Delete | 셀 값 삭제 | + +### 11. 컬럼 리사이징 + +- 컬럼 헤더 경계 드래그로 너비 조절 +- `columnWidths` 상태로 관리 +- localStorage에 저장 + +### 12. 컬럼 순서 변경 + +- 드래그 앤 드롭으로 컬럼 순서 변경 +- `columnOrder` 상태로 관리 +- localStorage에 저장 + +### 13. 상태 영속성 (State Persistence) + +```typescript +// localStorage 키 패턴 +const stateKey = `tableState_${tableName}_${userId}`; + +// 저장되는 상태 +interface TableState { + columnWidths: Record; + columnOrder: string[]; + sortBy: string; + sortOrder: "asc" | "desc"; + frozenColumns: string[]; + columnVisibility: Record; +} +``` + +### 14. 그룹화 및 그룹 소계 + +```typescript +interface GroupedData { + groupKey: string; + groupValues: Record; + items: any[]; + count: number; + summary?: Record; +} +``` + +### 15. 총계 요약 (Total Summary) + +- 숫자 컬럼의 합계, 평균, 개수 표시 +- 테이블 하단에 요약 행 렌더링 + +--- + +## 캐싱 전략 + +```typescript +// 테이블 컬럼 캐시 +const tableColumnCache = new Map(); +const TABLE_CACHE_TTL = 5 * 60 * 1000; // 5분 + +// API 호출 디바운싱 +const debouncedApiCall = ( + key: string, + fn: (...args: T) => Promise, + delay: number = 300 +) => { ... }; +``` + +--- + +## 필수 Import + +```typescript +import React, { useState, useEffect, useMemo, useCallback, useRef } from "react"; +import { TableListConfig, ColumnConfig } from "./types"; +import { tableTypeApi } from "@/lib/api/screen"; +import { entityJoinApi } from "@/lib/api/entityJoin"; +import { codeCache } from "@/lib/caching/codeCache"; +import * as XLSX from "xlsx"; +import { toast } from "sonner"; +``` + +--- + +## 주요 상태 (State) + +```typescript +// 데이터 관련 +const [tableData, setTableData] = useState([]); +const [filteredData, setFilteredData] = useState([]); +const [loading, setLoading] = useState(false); + +// 편집 관련 +const [editingCell, setEditingCell] = useState<{ + rowIndex: number; + colIndex: number; + columnName: string; + originalValue: any; +} | null>(null); +const [editingValue, setEditingValue] = useState(""); +const [pendingChanges, setPendingChanges] = useState>>(new Map()); +const [validationErrors, setValidationErrors] = useState>>(new Map()); + +// 필터 관련 +const [headerFilters, setHeaderFilters] = useState>>(new Map()); +const [filterGroups, setFilterGroups] = useState([]); +const [globalSearchText, setGlobalSearchText] = useState(""); +const [searchHighlights, setSearchHighlights] = useState>(new Map()); + +// 컬럼 관련 +const [columnWidths, setColumnWidths] = useState>({}); +const [columnOrder, setColumnOrder] = useState([]); +const [columnVisibility, setColumnVisibility] = useState>({}); +const [frozenColumns, setFrozenColumns] = useState([]); + +// 선택 관련 +const [selectedRows, setSelectedRows] = useState>(new Set()); +const [focusedCell, setFocusedCell] = useState<{ rowIndex: number; colIndex: number } | null>(null); + +// 정렬 관련 +const [sortBy, setSortBy] = useState(""); +const [sortOrder, setSortOrder] = useState<"asc" | "desc">("asc"); + +// 페이지네이션 +const [currentPage, setCurrentPage] = useState(1); +const [pageSize, setPageSize] = useState(20); +const [totalCount, setTotalCount] = useState(0); +``` + +--- + +## 편집 불가 컬럼 구현 체크리스트 + +새로운 편집 진입점을 추가할 때 반드시 다음을 확인하세요: + +- [ ] `column.editable === false` 체크 추가 +- [ ] 편집 불가 시 `toast.warning()` 메시지 표시 +- [ ] `return` 또는 `break`로 편집 모드 진입 방지 + +```typescript +// 표준 편집 불가 체크 패턴 +const column = visibleColumns.find((col) => col.columnName === columnName); +if (column?.editable === false) { + toast.warning(`'${column.displayName || columnName}' 컬럼은 편집할 수 없습니다.`); + return; +} +``` + +--- + +## 시각적 표시 + +### 편집 불가 컬럼 표시 + +```tsx +// 헤더에 잠금 아이콘 +{column.editable === false && ( + +)} + +// 셀 배경색 +className={cn( + column.editable === false && "bg-gray-50 dark:bg-gray-900/30" +)} +``` + +--- + +## 성능 최적화 + +1. **useMemo 사용**: `visibleColumns`, `filteredData`, `paginatedData` 등 계산 비용이 큰 값 +2. **useCallback 사용**: 이벤트 핸들러 함수들 +3. **디바운싱**: API 호출, 검색, 필터링 +4. **캐싱**: 테이블 컬럼 정보, 코드 데이터 + +--- + +## 주의사항 + +1. **visibleColumns 정의 순서**: `columnOrder`, `columnVisibility` 상태 이후에 정의해야 함 +2. **editInputRef 타입 체크**: `select()` 호출 전 `instanceof HTMLInputElement` 확인 +3. **localStorage 키**: `tableName`과 `userId`를 조합하여 고유하게 생성 +4. **멀티테넌시**: 모든 API 호출에 `company_code` 필터링 적용 (백엔드에서 자동 처리) + +--- + +## 관련 파일 + +- `frontend/lib/registry/components/table-list/types.ts` - 타입 정의 +- `frontend/lib/registry/components/table-list/TableListConfigPanel.tsx` - 설정 패널 +- `frontend/components/common/TableOptionsModal.tsx` - 옵션 모달 +- `frontend/lib/registry/components/table-list/SingleTableWithSticky.tsx` - 스티키 헤더 테이블 diff --git a/backend-node/src/controllers/DashboardController.ts b/backend-node/src/controllers/DashboardController.ts index d0b22db4..a03478b9 100644 --- a/backend-node/src/controllers/DashboardController.ts +++ b/backend-node/src/controllers/DashboardController.ts @@ -632,6 +632,9 @@ export class DashboardController { validateStatus: () => true, // 모든 상태 코드 허용 (에러도 응답으로 처리) }; + // 연결 정보 (응답에 포함용) + let connectionInfo: { saveToHistory?: boolean } | null = null; + // 외부 커넥션 ID가 있는 경우, 해당 커넥션의 인증 정보(DB 토큰 등)를 적용 if (externalConnectionId) { try { @@ -652,6 +655,11 @@ export class DashboardController { if (connectionResult.success && connectionResult.data) { const connection = connectionResult.data; + // 연결 정보 저장 (응답에 포함) + connectionInfo = { + saveToHistory: connection.save_to_history === "Y", + }; + // 인증 헤더 생성 (DB 토큰 등) const authHeaders = await ExternalRestApiConnectionService.getAuthHeaders( @@ -753,6 +761,7 @@ export class DashboardController { res.status(200).json({ success: true, data, + connectionInfo, // 외부 연결 정보 (saveToHistory 등) }); } catch (error: any) { const status = error.response?.status || 500; diff --git a/backend-node/src/controllers/dynamicFormController.ts b/backend-node/src/controllers/dynamicFormController.ts index 30364189..97cd2cc1 100644 --- a/backend-node/src/controllers/dynamicFormController.ts +++ b/backend-node/src/controllers/dynamicFormController.ts @@ -492,7 +492,7 @@ export const saveLocationHistory = async ( res: Response ): Promise => { try { - const { companyCode, userId } = req.user as any; + const { companyCode, userId: loginUserId } = req.user as any; const { latitude, longitude, @@ -508,10 +508,17 @@ export const saveLocationHistory = async ( destinationName, recordedAt, vehicleId, + userId: requestUserId, // 프론트엔드에서 보낸 userId (차량 번호판 등) } = req.body; + // 프론트엔드에서 보낸 userId가 있으면 그것을 사용 (차량 번호판 등) + // 없으면 로그인한 사용자의 userId 사용 + const userId = requestUserId || loginUserId; + console.log("📍 [saveLocationHistory] 요청:", { userId, + requestUserId, + loginUserId, companyCode, latitude, longitude, diff --git a/backend-node/src/services/externalRestApiConnectionService.ts b/backend-node/src/services/externalRestApiConnectionService.ts index 2632a6e6..6f0b1239 100644 --- a/backend-node/src/services/externalRestApiConnectionService.ts +++ b/backend-node/src/services/externalRestApiConnectionService.ts @@ -209,8 +209,8 @@ export class ExternalRestApiConnectionService { connection_name, description, base_url, endpoint_path, default_headers, default_method, default_request_body, auth_type, auth_config, timeout, retry_count, retry_delay, - company_code, is_active, created_by - ) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15) + company_code, is_active, created_by, save_to_history + ) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16) RETURNING * `; @@ -230,6 +230,7 @@ export class ExternalRestApiConnectionService { data.company_code || "*", data.is_active || "Y", data.created_by || "system", + data.save_to_history || "N", ]; // 디버깅: 저장하려는 데이터 로깅 @@ -377,6 +378,12 @@ export class ExternalRestApiConnectionService { paramIndex++; } + if (data.save_to_history !== undefined) { + updateFields.push(`save_to_history = $${paramIndex}`); + params.push(data.save_to_history); + paramIndex++; + } + if (data.updated_by !== undefined) { updateFields.push(`updated_by = $${paramIndex}`); params.push(data.updated_by); diff --git a/backend-node/src/types/externalRestApiTypes.ts b/backend-node/src/types/externalRestApiTypes.ts index 8d95a4a6..416cbe6f 100644 --- a/backend-node/src/types/externalRestApiTypes.ts +++ b/backend-node/src/types/externalRestApiTypes.ts @@ -53,6 +53,9 @@ export interface ExternalRestApiConnection { retry_delay?: number; company_code: string; is_active: string; + + // 위치 이력 저장 설정 (지도 위젯용) + save_to_history?: string; // 'Y' 또는 'N' - REST API에서 가져온 위치 데이터를 vehicle_location_history에 저장 created_date?: Date; created_by?: string; updated_date?: Date; diff --git a/frontend/components/admin/RestApiConnectionModal.tsx b/frontend/components/admin/RestApiConnectionModal.tsx index 95ac6e76..0a9cecd0 100644 --- a/frontend/components/admin/RestApiConnectionModal.tsx +++ b/frontend/components/admin/RestApiConnectionModal.tsx @@ -53,6 +53,7 @@ export function RestApiConnectionModal({ isOpen, onClose, onSave, connection }: const [retryCount, setRetryCount] = useState(0); const [retryDelay, setRetryDelay] = useState(1000); const [isActive, setIsActive] = useState(true); + const [saveToHistory, setSaveToHistory] = useState(false); // 위치 이력 저장 설정 // UI 상태 const [showAdvanced, setShowAdvanced] = useState(false); @@ -80,6 +81,7 @@ export function RestApiConnectionModal({ isOpen, onClose, onSave, connection }: setRetryCount(connection.retry_count || 0); setRetryDelay(connection.retry_delay || 1000); setIsActive(connection.is_active === "Y"); + setSaveToHistory(connection.save_to_history === "Y"); // 테스트 초기값 설정 setTestEndpoint(""); @@ -100,6 +102,7 @@ export function RestApiConnectionModal({ isOpen, onClose, onSave, connection }: setRetryCount(0); setRetryDelay(1000); setIsActive(true); + setSaveToHistory(false); // 테스트 초기값 설정 setTestEndpoint(""); @@ -234,6 +237,7 @@ export function RestApiConnectionModal({ isOpen, onClose, onSave, connection }: retry_delay: retryDelay, // company_code는 백엔드에서 로그인 사용자의 company_code로 자동 설정 is_active: isActive ? "Y" : "N", + save_to_history: saveToHistory ? "Y" : "N", }; console.log("저장하려는 데이터:", { @@ -376,6 +380,16 @@ export function RestApiConnectionModal({ isOpen, onClose, onSave, connection }: 활성 상태
+ +
+ + + + (지도 위젯에서 이 API 데이터를 vehicle_location_history에 저장) + +
{/* 헤더 관리 */} diff --git a/frontend/components/admin/dashboard/data-sources/MultiApiConfig.tsx b/frontend/components/admin/dashboard/data-sources/MultiApiConfig.tsx index 86da8fe7..f92e440a 100644 --- a/frontend/components/admin/dashboard/data-sources/MultiApiConfig.tsx +++ b/frontend/components/admin/dashboard/data-sources/MultiApiConfig.tsx @@ -8,6 +8,7 @@ import { Label } from "@/components/ui/label"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { Textarea } from "@/components/ui/textarea"; import { Plus, Trash2, Loader2, CheckCircle, XCircle } from "lucide-react"; +import { Switch } from "@/components/ui/switch"; import { ExternalDbConnectionAPI, ExternalApiConnection } from "@/lib/api/externalDbConnection"; import { getApiUrl } from "@/lib/utils/apiUrl"; @@ -850,6 +851,23 @@ export default function MultiApiConfig({ dataSource, onChange, onTestResult }: M
)} + {/* 위치 이력 저장 설정 (지도 위젯용) */} +
+
+ +

+ REST API에서 가져온 위치 데이터를 vehicle_location_history에 저장합니다 +

+
+ onChange({ saveToHistory: checked })} + /> +
+ {/* 컬럼 매핑 (API 테스트 성공 후에만 표시) */} {testResult?.success && availableColumns.length > 0 && (
diff --git a/frontend/components/admin/dashboard/types.ts b/frontend/components/admin/dashboard/types.ts index 19599b69..bc52ecb8 100644 --- a/frontend/components/admin/dashboard/types.ts +++ b/frontend/components/admin/dashboard/types.ts @@ -183,6 +183,9 @@ export interface ChartDataSource { label: string; // 표시할 한글명 (예: 차량 번호) format?: "text" | "date" | "datetime" | "number" | "url"; // 표시 포맷 }[]; + + // REST API 위치 데이터 저장 설정 (MapTestWidgetV2용) + saveToHistory?: boolean; // REST API에서 가져온 위치 데이터를 vehicle_location_history에 저장 } export interface ChartConfig { diff --git a/frontend/components/dashboard/widgets/MapTestWidgetV2.tsx b/frontend/components/dashboard/widgets/MapTestWidgetV2.tsx index 94c3a217..9b0db43a 100644 --- a/frontend/components/dashboard/widgets/MapTestWidgetV2.tsx +++ b/frontend/components/dashboard/widgets/MapTestWidgetV2.tsx @@ -365,7 +365,70 @@ export default function MapTestWidgetV2({ element }: MapTestWidgetV2Props) { const mappedRows = applyColumnMapping(rows, source.columnMapping); // 마커와 폴리곤으로 변환 (mapDisplayType + dataSource 전달) - return convertToMapData(mappedRows, source.name || source.id || "API", source.mapDisplayType, source); + const mapData = convertToMapData(mappedRows, source.name || source.id || "API", source.mapDisplayType, source); + + // ✅ REST API 데이터를 vehicle_location_history에 자동 저장 (경로 보기용) + // - 모든 REST API 차량 위치 데이터는 자동으로 저장됨 + if (mapData.markers.length > 0) { + try { + const authToken = typeof window !== "undefined" ? localStorage.getItem("authToken") || "" : ""; + + // 마커 데이터를 vehicle_location_history에 저장 + for (const marker of mapData.markers) { + // user_id 추출 (마커 description에서 파싱) + let userId = ""; + let vehicleId: number | undefined = undefined; + let vehicleName = ""; + + if (marker.description) { + try { + const parsed = JSON.parse(marker.description); + // 다양한 필드명 지원 (plate_no 우선 - 차량 번호판으로 경로 구분) + userId = parsed.plate_no || parsed.plateNo || parsed.car_number || parsed.carNumber || + parsed.user_id || parsed.userId || parsed.driver_id || parsed.driverId || + parsed.car_no || parsed.carNo || parsed.vehicle_no || parsed.vehicleNo || + parsed.id || parsed.code || ""; + vehicleId = parsed.vehicle_id || parsed.vehicleId || parsed.car_id || parsed.carId; + vehicleName = parsed.plate_no || parsed.plateNo || parsed.car_name || parsed.carName || + parsed.vehicle_name || parsed.vehicleName || parsed.name || parsed.title || ""; + } catch { + // 파싱 실패 시 무시 + } + } + + // user_id가 없으면 마커 이름이나 ID를 사용 + if (!userId) { + userId = marker.name || marker.id || `marker_${Date.now()}`; + } + + // vehicle_location_history에 저장 + await fetch(getApiUrl("/api/dynamic-form/location-history"), { + method: "POST", + headers: { + "Content-Type": "application/json", + Authorization: `Bearer ${authToken}`, + }, + credentials: "include", + body: JSON.stringify({ + latitude: marker.lat, + longitude: marker.lng, + userId: userId, + vehicleId: vehicleId, + tripStatus: "api_tracking", // REST API에서 가져온 데이터 표시 + departureName: source.name || "REST API", + destinationName: vehicleName || marker.name, + }), + }); + + console.log("📍 [saveToHistory] 저장 완료:", { userId, lat: marker.lat, lng: marker.lng }); + } + } catch (saveError) { + console.error("❌ [saveToHistory] 저장 실패:", saveError); + // 저장 실패해도 마커 표시는 계속 + } + } + + return mapData; }; // Database 데이터 로딩 @@ -1659,16 +1722,20 @@ export default function MapTestWidgetV2({ element }: MapTestWidgetV2Props) { {(() => { try { const parsed = JSON.parse(marker.description || "{}"); - const userId = parsed.user_id; - if (userId) { + // 다양한 필드명 지원 (plate_no 우선) + const visibleUserId = parsed.plate_no || parsed.plateNo || parsed.car_number || parsed.carNumber || + parsed.user_id || parsed.userId || parsed.driver_id || parsed.driverId || + parsed.car_no || parsed.carNo || parsed.vehicle_no || parsed.vehicleNo || + parsed.id || parsed.code || marker.name; + if (visibleUserId) { return (
); diff --git a/frontend/lib/api/externalRestApiConnection.ts b/frontend/lib/api/externalRestApiConnection.ts index f907ee85..d58545f6 100644 --- a/frontend/lib/api/externalRestApiConnection.ts +++ b/frontend/lib/api/externalRestApiConnection.ts @@ -45,6 +45,9 @@ export interface ExternalRestApiConnection { retry_delay?: number; company_code: string; is_active: string; + + // 위치 이력 저장 설정 (지도 위젯용) + save_to_history?: string; // 'Y' 또는 'N' - REST API에서 가져온 위치 데이터를 vehicle_location_history에 저장 created_date?: Date; created_by?: string; updated_date?: Date; diff --git a/frontend/lib/registry/components/location-swap-selector/LocationSwapSelectorComponent.tsx b/frontend/lib/registry/components/location-swap-selector/LocationSwapSelectorComponent.tsx index 5dc4a165..3f1a723b 100644 --- a/frontend/lib/registry/components/location-swap-selector/LocationSwapSelectorComponent.tsx +++ b/frontend/lib/registry/components/location-swap-selector/LocationSwapSelectorComponent.tsx @@ -343,8 +343,13 @@ export function LocationSwapSelectorComponent(props: LocationSwapSelectorProps) {options.map((option) => ( - + {option.label} + {option.value === localDestination && " (도착지)"} ))} @@ -387,8 +392,13 @@ export function LocationSwapSelectorComponent(props: LocationSwapSelectorProps) {options.map((option) => ( - + {option.label} + {option.value === localDeparture && " (출발지)"} ))} @@ -419,8 +429,13 @@ export function LocationSwapSelectorComponent(props: LocationSwapSelectorProps) {options.map((option) => ( - + {option.label} + {option.value === localDestination && " (도착지)"} ))} @@ -451,8 +466,13 @@ export function LocationSwapSelectorComponent(props: LocationSwapSelectorProps) {options.map((option) => ( - + {option.label} + {option.value === localDeparture && " (출발지)"} ))} @@ -479,8 +499,13 @@ export function LocationSwapSelectorComponent(props: LocationSwapSelectorProps) {options.map((option) => ( - + {option.label} + {option.value === localDestination && " (도착지)"} ))} @@ -508,8 +533,13 @@ export function LocationSwapSelectorComponent(props: LocationSwapSelectorProps) {options.map((option) => ( - + {option.label} + {option.value === localDeparture && " (출발지)"} ))} -- 2.43.0 From 76bad47bc7b73d503c96b31000d500e326b48499 Mon Sep 17 00:00:00 2001 From: kjs Date: Mon, 8 Dec 2025 15:50:58 +0900 Subject: [PATCH 21/64] =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=84=B0=EC=A0=84?= =?UTF-8?q?=EB=8B=AC=20=EB=AA=A8=EB=8B=AC=EC=97=B4=EA=B8=B0=20=EC=95=A1?= =?UTF-8?q?=EC=85=98=EC=97=90=20=EC=BB=AC=EB=9F=BC=20=EB=A7=A4=ED=95=91?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/components/screen/ScreenDesigner.tsx | 17 ++ .../config-panels/ButtonConfigPanel.tsx | 278 ++++++++++++++++++ .../screen/panels/PropertiesPanel.tsx | 15 +- frontend/lib/utils/buttonActions.ts | 22 +- 4 files changed, 324 insertions(+), 8 deletions(-) diff --git a/frontend/components/screen/ScreenDesigner.tsx b/frontend/components/screen/ScreenDesigner.tsx index 2118bca3..3a440f07 100644 --- a/frontend/components/screen/ScreenDesigner.tsx +++ b/frontend/components/screen/ScreenDesigner.tsx @@ -2239,10 +2239,27 @@ export default function ScreenDesigner({ selectedScreen, onBackToList }: ScreenD calculatedWidth: `${Math.round(widthPercent * 100) / 100}%`, }); + // 🆕 라벨을 기반으로 기본 columnName 생성 (한글 → 스네이크 케이스) + // 예: "창고코드" → "warehouse_code" 또는 그대로 유지 + const generateDefaultColumnName = (label: string): string => { + // 한글 라벨의 경우 그대로 사용 (나중에 사용자가 수정 가능) + // 영문의 경우 스네이크 케이스로 변환 + if (/[가-힣]/.test(label)) { + // 한글이 포함된 경우: 공백을 언더스코어로, 소문자로 변환 + return label.replace(/\s+/g, "_").toLowerCase(); + } + // 영문의 경우: 카멜케이스/파스칼케이스를 스네이크 케이스로 변환 + return label + .replace(/([a-z])([A-Z])/g, "$1_$2") + .replace(/\s+/g, "_") + .toLowerCase(); + }; + const newComponent: ComponentData = { id: generateComponentId(), type: "component", // ✅ 새 컴포넌트 시스템 사용 label: component.name, + columnName: generateDefaultColumnName(component.name), // 🆕 기본 columnName 자동 생성 widgetType: component.webType, componentType: component.id, // 새 컴포넌트 시스템의 ID (DynamicComponentRenderer용) position: snappedPosition, diff --git a/frontend/components/screen/config-panels/ButtonConfigPanel.tsx b/frontend/components/screen/config-panels/ButtonConfigPanel.tsx index 36f420fd..39f32a73 100644 --- a/frontend/components/screen/config-panels/ButtonConfigPanel.tsx +++ b/frontend/components/screen/config-panels/ButtonConfigPanel.tsx @@ -91,6 +91,14 @@ export const ButtonConfigPanel: React.FC = ({ const [mappingSourceSearch, setMappingSourceSearch] = useState>({}); const [mappingTargetSearch, setMappingTargetSearch] = useState>({}); + // 🆕 openModalWithData 전용 필드 매핑 상태 + const [modalSourceColumns, setModalSourceColumns] = useState>([]); + const [modalTargetColumns, setModalTargetColumns] = useState>([]); + const [modalSourcePopoverOpen, setModalSourcePopoverOpen] = useState>({}); + const [modalTargetPopoverOpen, setModalTargetPopoverOpen] = useState>({}); + const [modalSourceSearch, setModalSourceSearch] = useState>({}); + const [modalTargetSearch, setModalTargetSearch] = useState>({}); + // 🎯 플로우 위젯이 화면에 있는지 확인 const hasFlowWidget = useMemo(() => { const found = allComponents.some((comp: any) => { @@ -318,6 +326,88 @@ export const ButtonConfigPanel: React.FC = ({ loadColumns(); }, [config.action?.dataTransfer?.sourceTable, config.action?.dataTransfer?.targetTable]); + // 🆕 openModalWithData 소스/타겟 테이블 컬럼 로드 + useEffect(() => { + const actionType = config.action?.type; + if (actionType !== "openModalWithData") return; + + const loadModalMappingColumns = async () => { + // 소스 테이블: 현재 화면의 분할 패널 또는 테이블에서 감지 + // allComponents에서 split-panel-layout 또는 table-list 찾기 + let sourceTableName: string | null = null; + + for (const comp of allComponents) { + const compType = comp.componentType || (comp as any).componentConfig?.type; + if (compType === "split-panel-layout" || compType === "screen-split-panel") { + // 분할 패널의 좌측 테이블명 + sourceTableName = (comp as any).componentConfig?.leftPanel?.tableName || + (comp as any).componentConfig?.leftTableName; + break; + } + if (compType === "table-list") { + sourceTableName = (comp as any).componentConfig?.tableName; + break; + } + } + + // 소스 테이블 컬럼 로드 + if (sourceTableName) { + try { + const response = await apiClient.get(`/table-management/tables/${sourceTableName}/columns`); + if (response.data.success) { + let columnData = response.data.data; + if (!Array.isArray(columnData) && columnData?.columns) columnData = columnData.columns; + if (!Array.isArray(columnData) && columnData?.data) columnData = columnData.data; + + if (Array.isArray(columnData)) { + const columns = columnData.map((col: any) => ({ + name: col.name || col.columnName, + label: col.displayName || col.label || col.columnLabel || col.name || col.columnName, + })); + setModalSourceColumns(columns); + console.log(`✅ [openModalWithData] 소스 테이블(${sourceTableName}) 컬럼 로드:`, columns.length); + } + } + } catch (error) { + console.error("소스 테이블 컬럼 로드 실패:", error); + } + } + + // 타겟 화면의 테이블 컬럼 로드 + const targetScreenId = config.action?.targetScreenId; + if (targetScreenId) { + try { + // 타겟 화면 정보 가져오기 + const screenResponse = await apiClient.get(`/screen-management/screens/${targetScreenId}`); + if (screenResponse.data.success && screenResponse.data.data) { + const targetTableName = screenResponse.data.data.tableName; + if (targetTableName) { + const columnResponse = await apiClient.get(`/table-management/tables/${targetTableName}/columns`); + if (columnResponse.data.success) { + let columnData = columnResponse.data.data; + if (!Array.isArray(columnData) && columnData?.columns) columnData = columnData.columns; + if (!Array.isArray(columnData) && columnData?.data) columnData = columnData.data; + + if (Array.isArray(columnData)) { + const columns = columnData.map((col: any) => ({ + name: col.name || col.columnName, + label: col.displayName || col.label || col.columnLabel || col.name || col.columnName, + })); + setModalTargetColumns(columns); + console.log(`✅ [openModalWithData] 타겟 테이블(${targetTableName}) 컬럼 로드:`, columns.length); + } + } + } + } + } catch (error) { + console.error("타겟 화면 테이블 컬럼 로드 실패:", error); + } + } + }; + + loadModalMappingColumns(); + }, [config.action?.type, config.action?.targetScreenId, allComponents]); + // 화면 목록 가져오기 (현재 편집 중인 화면의 회사 코드 기준) useEffect(() => { const fetchScreens = async () => { @@ -1024,6 +1114,194 @@ export const ButtonConfigPanel: React.FC = ({ SelectedItemsDetailInput 컴포넌트가 있는 화면을 선택하세요

+ + {/* 🆕 필드 매핑 설정 (소스 컬럼 → 타겟 컬럼) */} +
+
+ + +
+

+ 소스 테이블의 컬럼명이 타겟 화면의 입력 필드 컬럼명과 다를 때 매핑을 설정하세요. +
+ 예: warehouse_code → warehouse_id (분할 패널의 창고코드를 모달의 창고ID에 매핑) +

+ + {/* 컬럼 로드 상태 표시 */} + {modalSourceColumns.length > 0 || modalTargetColumns.length > 0 ? ( +
+ 소스 컬럼: {modalSourceColumns.length}개 / 타겟 컬럼: {modalTargetColumns.length}개 +
+ ) : ( +
+ 분할 패널 또는 테이블 컴포넌트와 대상 화면을 설정하면 컬럼 목록이 로드됩니다. +
+ )} + + {(config.action?.fieldMappings || []).length === 0 ? ( +
+

+ 매핑이 없으면 같은 이름의 컬럼끼리 자동으로 매핑됩니다. +

+
+ ) : ( +
+ {(config.action?.fieldMappings || []).map((mapping: any, index: number) => ( +
+ {/* 소스 필드 선택 (Combobox) */} +
+ setModalSourcePopoverOpen((prev) => ({ ...prev, [index]: open }))} + > + + + + + + setModalSourceSearch((prev) => ({ ...prev, [index]: value }))} + /> + + 컬럼을 찾을 수 없습니다 + + {modalSourceColumns.map((col) => ( + { + const mappings = [...(config.action?.fieldMappings || [])]; + mappings[index] = { ...mappings[index], sourceField: col.name }; + onUpdateProperty("componentConfig.action.fieldMappings", mappings); + setModalSourcePopoverOpen((prev) => ({ ...prev, [index]: false })); + }} + className="text-xs" + > + + {col.label} + {col.label !== col.name && ( + ({col.name}) + )} + + ))} + + + + + +
+ + + + {/* 타겟 필드 선택 (Combobox) */} +
+ setModalTargetPopoverOpen((prev) => ({ ...prev, [index]: open }))} + > + + + + + + setModalTargetSearch((prev) => ({ ...prev, [index]: value }))} + /> + + 컬럼을 찾을 수 없습니다 + + {modalTargetColumns.map((col) => ( + { + const mappings = [...(config.action?.fieldMappings || [])]; + mappings[index] = { ...mappings[index], targetField: col.name }; + onUpdateProperty("componentConfig.action.fieldMappings", mappings); + setModalTargetPopoverOpen((prev) => ({ ...prev, [index]: false })); + }} + className="text-xs" + > + + {col.label} + {col.label !== col.name && ( + ({col.name}) + )} + + ))} + + + + + +
+ + {/* 삭제 버튼 */} + +
+ ))} +
+ )} +
)} diff --git a/frontend/components/screen/panels/PropertiesPanel.tsx b/frontend/components/screen/panels/PropertiesPanel.tsx index ff21ac3e..bb663c74 100644 --- a/frontend/components/screen/panels/PropertiesPanel.tsx +++ b/frontend/components/screen/panels/PropertiesPanel.tsx @@ -584,20 +584,23 @@ const PropertiesPanelComponent: React.FC = ({
- {selectedComponent.type === "widget" && ( + {(selectedComponent.type === "widget" || selectedComponent.type === "component") && ( <>
onUpdateProperty("columnName", e.target.value)} + placeholder="formData에서 사용할 필드명" + className="h-8" + title="분할 패널에서 데이터를 전달받을 때 사용되는 필드명입니다" /> +

+ 분할 패널에서 데이터를 전달받을 때 매핑되는 필드명 +

diff --git a/frontend/lib/utils/buttonActions.ts b/frontend/lib/utils/buttonActions.ts index 7c1545d8..275efbb5 100644 --- a/frontend/lib/utils/buttonActions.ts +++ b/frontend/lib/utils/buttonActions.ts @@ -59,6 +59,7 @@ export interface ButtonActionConfig { popupWidth?: number; popupHeight?: number; dataSourceId?: string; // 🆕 modalDataStore에서 데이터를 가져올 ID (openModalWithData용) + fieldMappings?: Array<{ sourceField: string; targetField: string }>; // 🆕 필드 매핑 (openModalWithData용) // 확인 메시지 confirmMessage?: string; @@ -1548,10 +1549,27 @@ export class ButtonActionExecutor { } // 🆕 부모 화면의 선택된 데이터 가져오기 (excludeFilter에서 사용) - const parentData = dataRegistry[dataSourceId]?.[0]?.originalData || dataRegistry[dataSourceId]?.[0] || {}; + const rawParentData = dataRegistry[dataSourceId]?.[0]?.originalData || dataRegistry[dataSourceId]?.[0] || {}; + + // 🆕 필드 매핑 적용 (소스 컬럼 → 타겟 컬럼) + let parentData = { ...rawParentData }; + if (config.fieldMappings && Array.isArray(config.fieldMappings) && config.fieldMappings.length > 0) { + console.log("🔄 [openModalWithData] 필드 매핑 적용:", config.fieldMappings); + + config.fieldMappings.forEach((mapping: { sourceField: string; targetField: string }) => { + if (mapping.sourceField && mapping.targetField && rawParentData[mapping.sourceField] !== undefined) { + // 타겟 필드에 소스 필드 값 복사 + parentData[mapping.targetField] = rawParentData[mapping.sourceField]; + console.log(` ✅ ${mapping.sourceField} → ${mapping.targetField}: ${rawParentData[mapping.sourceField]}`); + } + }); + } + console.log("📦 [openModalWithData] 부모 데이터 전달:", { dataSourceId, - parentData, + rawParentData, + mappedParentData: parentData, + fieldMappings: config.fieldMappings, }); // 🆕 전역 모달 상태 업데이트를 위한 이벤트 발생 (URL 파라미터 포함) -- 2.43.0 From ae7c47ee5f8d902a1d894c6a80044831eab9519e Mon Sep 17 00:00:00 2001 From: kjs Date: Mon, 8 Dec 2025 17:13:14 +0900 Subject: [PATCH 22/64] =?UTF-8?q?=EC=B0=BD=EA=B3=A0=20=EB=A0=89=20?= =?UTF-8?q?=EA=B5=AC=EC=A1=B0=20=EB=93=B1=EB=A1=9D=20=EC=BB=B4=ED=8F=AC?= =?UTF-8?q?=EB=84=8C=ED=8A=B8=20=EC=A4=91=EB=B3=B5=20=EB=B0=A9=EC=A7=80?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tableCategoryValueController.ts | 47 ++ .../src/routes/tableCategoryValueRoutes.ts | 4 + backend-node/src/services/dataService.ts | 44 +- .../src/services/tableCategoryValueService.ts | 64 ++ .../screen/InteractiveScreenViewer.tsx | 33 + frontend/lib/api/tableCategoryValue.ts | 23 + .../rack-structure/RackStructureComponent.tsx | 384 ++++++++++-- .../rack-structure/RackStructureRenderer.tsx | 30 +- .../components/rack-structure/types.ts | 21 +- frontend/lib/utils/buttonActions.ts | 570 +++++++++++++----- 10 files changed, 1027 insertions(+), 193 deletions(-) diff --git a/backend-node/src/controllers/tableCategoryValueController.ts b/backend-node/src/controllers/tableCategoryValueController.ts index 248bb867..75e225e6 100644 --- a/backend-node/src/controllers/tableCategoryValueController.ts +++ b/backend-node/src/controllers/tableCategoryValueController.ts @@ -527,6 +527,53 @@ export const deleteColumnMappingsByColumn = async (req: AuthenticatedRequest, re } }; +/** + * 카테고리 코드로 라벨 조회 + * + * POST /api/table-categories/labels-by-codes + * + * Body: + * - valueCodes: 카테고리 코드 배열 (예: ["CATEGORY_767659DCUF", "CATEGORY_8292565608"]) + * + * Response: + * - { [code]: label } 형태의 매핑 객체 + */ +export const getCategoryLabelsByCodes = async (req: AuthenticatedRequest, res: Response) => { + try { + const companyCode = req.user!.companyCode; + const { valueCodes } = req.body; + + if (!valueCodes || !Array.isArray(valueCodes) || valueCodes.length === 0) { + return res.json({ + success: true, + data: {}, + }); + } + + logger.info("카테고리 코드로 라벨 조회", { + valueCodes, + companyCode, + }); + + const labels = await tableCategoryValueService.getCategoryLabelsByCodes( + valueCodes, + companyCode + ); + + return res.json({ + success: true, + data: labels, + }); + } catch (error: any) { + logger.error(`카테고리 라벨 조회 실패: ${error.message}`); + return res.status(500).json({ + success: false, + message: "카테고리 라벨 조회 중 오류가 발생했습니다", + error: error.message, + }); + } +}; + /** * 2레벨 메뉴 목록 조회 * diff --git a/backend-node/src/routes/tableCategoryValueRoutes.ts b/backend-node/src/routes/tableCategoryValueRoutes.ts index b79aab75..e59d9b9d 100644 --- a/backend-node/src/routes/tableCategoryValueRoutes.ts +++ b/backend-node/src/routes/tableCategoryValueRoutes.ts @@ -13,6 +13,7 @@ import { deleteColumnMapping, deleteColumnMappingsByColumn, getSecondLevelMenus, + getCategoryLabelsByCodes, } from "../controllers/tableCategoryValueController"; import { authenticateToken } from "../middleware/authMiddleware"; @@ -42,6 +43,9 @@ router.post("/values/bulk-delete", bulkDeleteCategoryValues); // 카테고리 값 순서 변경 router.post("/values/reorder", reorderCategoryValues); +// 카테고리 코드로 라벨 조회 +router.post("/labels-by-codes", getCategoryLabelsByCodes); + // ================================================ // 컬럼 매핑 관련 라우트 (논리명 ↔ 물리명) // ================================================ diff --git a/backend-node/src/services/dataService.ts b/backend-node/src/services/dataService.ts index fd85248d..a278eb97 100644 --- a/backend-node/src/services/dataService.ts +++ b/backend-node/src/services/dataService.ts @@ -907,8 +907,27 @@ class DataService { return validation.error!; } - const columns = Object.keys(data); - const values = Object.values(data); + // 🆕 테이블에 존재하는 컬럼만 필터링 (존재하지 않는 컬럼 제외) + const tableColumns = await this.getTableColumnsSimple(tableName); + const validColumnNames = new Set(tableColumns.map((col: any) => col.column_name)); + + const invalidColumns: string[] = []; + const filteredData = Object.fromEntries( + Object.entries(data).filter(([key]) => { + if (validColumnNames.has(key)) { + return true; + } + invalidColumns.push(key); + return false; + }) + ); + + if (invalidColumns.length > 0) { + console.log(`⚠️ [createRecord] 테이블에 없는 컬럼 제외: ${invalidColumns.join(", ")}`); + } + + const columns = Object.keys(filteredData); + const values = Object.values(filteredData); const placeholders = values.map((_, index) => `$${index + 1}`).join(", "); const columnNames = columns.map((col) => `"${col}"`).join(", "); @@ -951,9 +970,28 @@ class DataService { // _relationInfo 추출 (조인 관계 업데이트용) const relationInfo = data._relationInfo; - const cleanData = { ...data }; + let cleanData = { ...data }; delete cleanData._relationInfo; + // 🆕 테이블에 존재하는 컬럼만 필터링 (존재하지 않는 컬럼 제외) + const tableColumns = await this.getTableColumnsSimple(tableName); + const validColumnNames = new Set(tableColumns.map((col: any) => col.column_name)); + + const invalidColumns: string[] = []; + cleanData = Object.fromEntries( + Object.entries(cleanData).filter(([key]) => { + if (validColumnNames.has(key)) { + return true; + } + invalidColumns.push(key); + return false; + }) + ); + + if (invalidColumns.length > 0) { + console.log(`⚠️ [updateRecord] 테이블에 없는 컬럼 제외: ${invalidColumns.join(", ")}`); + } + // Primary Key 컬럼 찾기 const pkResult = await query<{ attname: string }>( `SELECT a.attname diff --git a/backend-node/src/services/tableCategoryValueService.ts b/backend-node/src/services/tableCategoryValueService.ts index b68d5f05..cdf1b838 100644 --- a/backend-node/src/services/tableCategoryValueService.ts +++ b/backend-node/src/services/tableCategoryValueService.ts @@ -1258,6 +1258,70 @@ class TableCategoryValueService { throw error; } } + + /** + * 카테고리 코드로 라벨 조회 + * + * @param valueCodes - 카테고리 코드 배열 + * @param companyCode - 회사 코드 + * @returns { [code]: label } 형태의 매핑 객체 + */ + async getCategoryLabelsByCodes( + valueCodes: string[], + companyCode: string + ): Promise> { + try { + if (!valueCodes || valueCodes.length === 0) { + return {}; + } + + logger.info("카테고리 코드로 라벨 조회", { valueCodes, companyCode }); + + const pool = getPool(); + + // 동적으로 파라미터 플레이스홀더 생성 + const placeholders = valueCodes.map((_, i) => `$${i + 1}`).join(", "); + + let query: string; + let params: any[]; + + if (companyCode === "*") { + // 최고 관리자: 모든 카테고리 값 조회 + query = ` + SELECT value_code, value_label + FROM table_column_category_values + WHERE value_code IN (${placeholders}) + AND is_active = true + `; + params = valueCodes; + } else { + // 일반 회사: 자신의 카테고리 값 + 공통 카테고리 값 조회 + query = ` + SELECT value_code, value_label + FROM table_column_category_values + WHERE value_code IN (${placeholders}) + AND is_active = true + AND (company_code = $${valueCodes.length + 1} OR company_code = '*') + `; + params = [...valueCodes, companyCode]; + } + + const result = await pool.query(query, params); + + // { [code]: label } 형태로 변환 + const labels: Record = {}; + for (const row of result.rows) { + labels[row.value_code] = row.value_label; + } + + logger.info(`카테고리 라벨 ${Object.keys(labels).length}개 조회 완료`, { companyCode }); + + return labels; + } catch (error: any) { + logger.error(`카테고리 코드로 라벨 조회 실패: ${error.message}`, { error }); + throw error; + } + } } export default new TableCategoryValueService(); diff --git a/frontend/components/screen/InteractiveScreenViewer.tsx b/frontend/components/screen/InteractiveScreenViewer.tsx index d9186999..223490e6 100644 --- a/frontend/components/screen/InteractiveScreenViewer.tsx +++ b/frontend/components/screen/InteractiveScreenViewer.tsx @@ -441,6 +441,39 @@ export const InteractiveScreenViewer: React.FC = ( ); } + // 🆕 렉 구조 컴포넌트 처리 + if (comp.type === "component" && componentType === "rack-structure") { + const { RackStructureComponent } = require("@/lib/registry/components/rack-structure/RackStructureComponent"); + const componentConfig = (comp as any).componentConfig || {}; + // config가 중첩되어 있을 수 있음: componentConfig.config 또는 componentConfig 직접 + const rackConfig = componentConfig.config || componentConfig; + + console.log("🏗️ 렉 구조 컴포넌트 렌더링:", { + componentType, + componentConfig, + rackConfig, + fieldMapping: rackConfig.fieldMapping, + formData, + }); + + return ( +
+ { + console.log("📦 렉 구조 위치 데이터 변경:", locations.length, "개"); + // 컴포넌트의 columnName을 키로 사용 + const fieldKey = (comp as any).columnName || "_rackStructureLocations"; + updateFormData(fieldKey, locations); + }} + isPreview={false} + /> +
+ ); + } + const { widgetType, label, placeholder, required, readonly, columnName } = comp; const fieldName = columnName || comp.id; const currentValue = formData[fieldName] || ""; diff --git a/frontend/lib/api/tableCategoryValue.ts b/frontend/lib/api/tableCategoryValue.ts index 3c5380d1..253e66d0 100644 --- a/frontend/lib/api/tableCategoryValue.ts +++ b/frontend/lib/api/tableCategoryValue.ts @@ -167,6 +167,29 @@ export async function reorderCategoryValues(orderedValueIds: number[]) { } } +/** + * 카테고리 코드로 라벨 조회 + * + * @param valueCodes - 카테고리 코드 배열 (예: ["CATEGORY_767659DCUF", "CATEGORY_8292565608"]) + * @returns { [code]: label } 형태의 매핑 객체 + */ +export async function getCategoryLabelsByCodes(valueCodes: string[]) { + try { + if (!valueCodes || valueCodes.length === 0) { + return { success: true, data: {} }; + } + + const response = await apiClient.post<{ + success: boolean; + data: Record; + }>("/table-categories/labels-by-codes", { valueCodes }); + return response.data; + } catch (error: any) { + console.error("카테고리 라벨 조회 실패:", error); + return { success: false, error: error.message, data: {} }; + } +} + // ================================================ // 컬럼 매핑 관련 API (논리명 ↔ 물리명) // ================================================ diff --git a/frontend/lib/registry/components/rack-structure/RackStructureComponent.tsx b/frontend/lib/registry/components/rack-structure/RackStructureComponent.tsx index f49e4462..7ddd6326 100644 --- a/frontend/lib/registry/components/rack-structure/RackStructureComponent.tsx +++ b/frontend/lib/registry/components/rack-structure/RackStructureComponent.tsx @@ -23,6 +23,8 @@ import { import { ScrollArea } from "@/components/ui/scroll-area"; import { Alert, AlertDescription } from "@/components/ui/alert"; import { cn } from "@/lib/utils"; +import { getCategoryLabelsByCodes } from "@/lib/api/tableCategoryValue"; +import { DynamicFormApi } from "@/lib/api/dynamicForm"; import { RackStructureComponentProps, RackLineCondition, @@ -31,6 +33,13 @@ import { RackStructureContext, } from "./types"; +// 기존 위치 데이터 타입 +interface ExistingLocation { + row_num: string; + level_num: string; + location_code: string; +} + // 고유 ID 생성 const generateId = () => `cond_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`; @@ -185,6 +194,7 @@ export const RackStructureComponent: React.FC = ({ onChange, onConditionsChange, isPreview = false, + tableName, }) => { // 조건 목록 const [conditions, setConditions] = useState( @@ -200,6 +210,11 @@ export const RackStructureComponent: React.FC = ({ // 미리보기 데이터 const [previewData, setPreviewData] = useState([]); const [isPreviewGenerated, setIsPreviewGenerated] = useState(false); + + // 기존 데이터 중복 체크 관련 상태 + const [existingLocations, setExistingLocations] = useState([]); + const [isCheckingDuplicates, setIsCheckingDuplicates] = useState(false); + const [duplicateErrors, setDuplicateErrors] = useState<{ row: number; existingLevels: number[] }[]>([]); // 설정값 const maxConditions = config.maxConditions || 10; @@ -208,6 +223,60 @@ export const RackStructureComponent: React.FC = ({ const readonly = config.readonly || isPreview; const fieldMapping = config.fieldMapping || {}; + // 카테고리 라벨 캐시 상태 + const [categoryLabels, setCategoryLabels] = useState>({}); + + // 카테고리 코드인지 확인 + const isCategoryCode = (value: string | undefined): boolean => { + return typeof value === "string" && value.startsWith("CATEGORY_"); + }; + + // 카테고리 라벨 조회 (비동기) + useEffect(() => { + const loadCategoryLabels = async () => { + if (!formData) return; + + // 카테고리 코드인 값들만 수집 + const valuesToLookup: string[] = []; + const fieldsToCheck = [ + fieldMapping.floorField ? formData[fieldMapping.floorField] : undefined, + fieldMapping.zoneField ? formData[fieldMapping.zoneField] : undefined, + fieldMapping.locationTypeField ? formData[fieldMapping.locationTypeField] : undefined, + fieldMapping.statusField ? formData[fieldMapping.statusField] : undefined, + ]; + + for (const value of fieldsToCheck) { + if (value && isCategoryCode(value) && !categoryLabels[value]) { + valuesToLookup.push(value); + } + } + + if (valuesToLookup.length === 0) return; + + try { + // 카테고리 코드로 라벨 일괄 조회 + const response = await getCategoryLabelsByCodes(valuesToLookup); + if (response.success && response.data) { + console.log("✅ 카테고리 라벨 조회 완료:", response.data); + setCategoryLabels((prev) => ({ ...prev, ...response.data })); + } + } catch (error) { + console.error("카테고리 라벨 조회 실패:", error); + } + }; + + loadCategoryLabels(); + }, [formData, fieldMapping]); + + // 카테고리 코드를 라벨로 변환하는 헬퍼 함수 + const getCategoryLabel = useCallback((value: string | undefined): string | undefined => { + if (!value) return undefined; + if (isCategoryCode(value)) { + return categoryLabels[value] || value; + } + return value; + }, [categoryLabels]); + // 필드 매핑을 통해 formData에서 컨텍스트 추출 const context: RackStructureContext = useMemo(() => { // propContext가 있으면 우선 사용 @@ -216,27 +285,33 @@ export const RackStructureComponent: React.FC = ({ // formData와 fieldMapping을 사용하여 컨텍스트 생성 if (!formData) return {}; - return { + const rawFloor = fieldMapping.floorField ? formData[fieldMapping.floorField] : undefined; + const rawZone = fieldMapping.zoneField ? formData[fieldMapping.zoneField] : undefined; + const rawLocationType = fieldMapping.locationTypeField ? formData[fieldMapping.locationTypeField] : undefined; + const rawStatus = fieldMapping.statusField ? formData[fieldMapping.statusField] : undefined; + + const ctx = { warehouseCode: fieldMapping.warehouseCodeField ? formData[fieldMapping.warehouseCodeField] : undefined, warehouseName: fieldMapping.warehouseNameField ? formData[fieldMapping.warehouseNameField] : undefined, - floor: fieldMapping.floorField - ? formData[fieldMapping.floorField]?.toString() - : undefined, - zone: fieldMapping.zoneField - ? formData[fieldMapping.zoneField] - : undefined, - locationType: fieldMapping.locationTypeField - ? formData[fieldMapping.locationTypeField] - : undefined, - status: fieldMapping.statusField - ? formData[fieldMapping.statusField] - : undefined, + // 카테고리 값은 라벨로 변환 + floor: getCategoryLabel(rawFloor?.toString()), + zone: getCategoryLabel(rawZone), + locationType: getCategoryLabel(rawLocationType), + status: getCategoryLabel(rawStatus), }; - }, [propContext, formData, fieldMapping]); + + console.log("🏗️ [RackStructure] context 생성:", { + fieldMapping, + rawValues: { rawFloor, rawZone, rawLocationType, rawStatus }, + context: ctx, + }); + + return ctx; + }, [propContext, formData, fieldMapping, getCategoryLabel]); // 필수 필드 검증 const missingFields = useMemo(() => { @@ -283,6 +358,154 @@ export const RackStructureComponent: React.FC = ({ setConditions((prev) => prev.filter((cond) => cond.id !== id)); }, []); + // 열 범위 중복 검사 + const rowOverlapErrors = useMemo(() => { + const errors: { conditionIndex: number; overlappingWith: number; overlappingRows: number[] }[] = []; + + for (let i = 0; i < conditions.length; i++) { + const cond1 = conditions[i]; + if (cond1.startRow <= 0 || cond1.endRow < cond1.startRow) continue; + + for (let j = i + 1; j < conditions.length; j++) { + const cond2 = conditions[j]; + if (cond2.startRow <= 0 || cond2.endRow < cond2.startRow) continue; + + // 범위 겹침 확인 + const overlapStart = Math.max(cond1.startRow, cond2.startRow); + const overlapEnd = Math.min(cond1.endRow, cond2.endRow); + + if (overlapStart <= overlapEnd) { + // 겹치는 열 목록 + const overlappingRows: number[] = []; + for (let r = overlapStart; r <= overlapEnd; r++) { + overlappingRows.push(r); + } + + errors.push({ + conditionIndex: i, + overlappingWith: j, + overlappingRows, + }); + } + } + } + + return errors; + }, [conditions]); + + // 중복 열이 있는지 확인 + const hasRowOverlap = rowOverlapErrors.length > 0; + + // 기존 데이터 조회를 위한 값 추출 (useMemo 객체 참조 문제 방지) + const warehouseCodeForQuery = context.warehouseCode; + const floorForQuery = context.floor; + const zoneForQuery = context.zone; + + // 기존 데이터 조회 (창고/층/구역이 변경될 때마다) + useEffect(() => { + const loadExistingLocations = async () => { + console.log("🏗️ [RackStructure] 기존 데이터 조회 체크:", { + warehouseCode: warehouseCodeForQuery, + floor: floorForQuery, + zone: zoneForQuery, + }); + + // 필수 조건이 충족되지 않으면 기존 데이터 초기화 + if (!warehouseCodeForQuery || !floorForQuery || !zoneForQuery) { + console.log("⚠️ [RackStructure] 필수 조건 미충족 - 조회 스킵"); + setExistingLocations([]); + setDuplicateErrors([]); + return; + } + + setIsCheckingDuplicates(true); + try { + // warehouse_location 테이블에서 해당 창고/층/구역의 기존 데이터 조회 + const filterParams = { + warehouse_id: warehouseCodeForQuery, + floor: floorForQuery, + zone: zoneForQuery, + }; + console.log("🔍 기존 위치 데이터 조회 시작:", filterParams); + + const response = await DynamicFormApi.getTableData("warehouse_location", { + filters: filterParams, + page: 1, + pageSize: 1000, // 충분히 큰 값 + }); + + console.log("🔍 기존 위치 데이터 응답:", response); + + // API 응답 구조: { success: true, data: [...] } 또는 { success: true, data: { data: [...] } } + const dataArray = Array.isArray(response.data) + ? response.data + : (response.data?.data || []); + + if (response.success && dataArray.length > 0) { + const existing = dataArray.map((item: any) => ({ + row_num: item.row_num, + level_num: item.level_num, + location_code: item.location_code, + })); + setExistingLocations(existing); + console.log("✅ 기존 위치 데이터 조회 완료:", existing.length, "개", existing); + } else { + console.log("⚠️ 기존 위치 데이터 없음 또는 조회 실패"); + setExistingLocations([]); + } + } catch (error) { + console.error("기존 위치 데이터 조회 실패:", error); + setExistingLocations([]); + } finally { + setIsCheckingDuplicates(false); + } + }; + + loadExistingLocations(); + }, [warehouseCodeForQuery, floorForQuery, zoneForQuery]); + + // 조건 변경 시 기존 데이터와 중복 체크 + useEffect(() => { + if (existingLocations.length === 0) { + setDuplicateErrors([]); + return; + } + + // 현재 조건에서 생성될 열 목록 + const plannedRows = new Map(); // row -> levels + conditions.forEach((cond) => { + if (cond.startRow > 0 && cond.endRow >= cond.startRow && cond.levels > 0) { + for (let row = cond.startRow; row <= cond.endRow; row++) { + const levels: number[] = []; + for (let level = 1; level <= cond.levels; level++) { + levels.push(level); + } + plannedRows.set(row, levels); + } + } + }); + + // 기존 데이터와 중복 체크 + const errors: { row: number; existingLevels: number[] }[] = []; + plannedRows.forEach((levels, row) => { + const existingForRow = existingLocations.filter( + (loc) => parseInt(loc.row_num) === row + ); + if (existingForRow.length > 0) { + const existingLevels = existingForRow.map((loc) => parseInt(loc.level_num)); + const duplicateLevels = levels.filter((l) => existingLevels.includes(l)); + if (duplicateLevels.length > 0) { + errors.push({ row, existingLevels: duplicateLevels }); + } + } + }); + + setDuplicateErrors(errors); + }, [conditions, existingLocations]); + + // 기존 데이터와 중복이 있는지 확인 + const hasDuplicateWithExisting = duplicateErrors.length > 0; + // 통계 계산 const statistics = useMemo(() => { let totalLocations = 0; @@ -312,11 +535,12 @@ export const RackStructureComponent: React.FC = ({ const floor = context?.floor || "1"; const zone = context?.zone || "A"; - // 코드 생성 (예: WH001-1A-01-1) + // 코드 생성 (예: WH001-1층D구역-01-1) const code = `${warehouseCode}-${floor}${zone}-${row.toString().padStart(2, "0")}-${level}`; - // 이름 생성 (예: A구역-01열-1단) - const name = `${zone}구역-${row.toString().padStart(2, "0")}열-${level}단`; + // 이름 생성 - zone에 이미 "구역"이 포함되어 있으면 그대로 사용 + const zoneName = zone.includes("구역") ? zone : `${zone}구역`; + const name = `${zoneName}-${row.toString().padStart(2, "0")}열-${level}단`; return { code, name }; }, @@ -325,12 +549,39 @@ export const RackStructureComponent: React.FC = ({ // 미리보기 생성 const generatePreview = useCallback(() => { + console.log("🔍 [generatePreview] 검증 시작:", { + missingFields, + hasRowOverlap, + hasDuplicateWithExisting, + duplicateErrorsCount: duplicateErrors.length, + existingLocationsCount: existingLocations.length, + }); + // 필수 필드 검증 if (missingFields.length > 0) { alert(`다음 필드를 먼저 입력해주세요: ${missingFields.join(", ")}`); return; } + // 열 범위 중복 검증 + if (hasRowOverlap) { + const overlapInfo = rowOverlapErrors.map((err) => { + const rows = err.overlappingRows.join(", "); + return `조건 ${err.conditionIndex + 1}과 조건 ${err.overlappingWith + 1}의 ${rows}열`; + }).join("\n"); + alert(`열 범위가 중복됩니다:\n${overlapInfo}\n\n중복된 열을 수정해주세요.`); + return; + } + + // 기존 데이터와 중복 검증 - duplicateErrors 직접 체크 + if (duplicateErrors.length > 0) { + const duplicateInfo = duplicateErrors.map((err) => { + return `${err.row}열 ${err.existingLevels.join(", ")}단`; + }).join(", "); + alert(`이미 등록된 위치가 있습니다:\n${duplicateInfo}\n\n해당 열/단을 제외하고 등록하거나, 기존 데이터를 삭제해주세요.`); + return; + } + const locations: GeneratedLocation[] = []; conditions.forEach((cond) => { @@ -338,15 +589,17 @@ export const RackStructureComponent: React.FC = ({ for (let row = cond.startRow; row <= cond.endRow; row++) { for (let level = 1; level <= cond.levels; level++) { const { code, name } = generateLocationCode(row, level); + // 테이블 컬럼명과 동일하게 생성 locations.push({ - rowNum: row, - levelNum: level, - locationCode: code, - locationName: name, - locationType: context?.locationType || "선반", + row_num: String(row), + level_num: String(level), + location_code: code, + location_name: name, + location_type: context?.locationType || "선반", status: context?.status || "사용", - // 추가 필드 - warehouseCode: context?.warehouseCode, + // 추가 필드 (테이블 컬럼명과 동일) + warehouse_id: context?.warehouseCode, + warehouse_name: context?.warehouseName, floor: context?.floor, zone: context?.zone, }); @@ -357,14 +610,14 @@ export const RackStructureComponent: React.FC = ({ // 정렬: 열 -> 단 순서 locations.sort((a, b) => { - if (a.rowNum !== b.rowNum) return a.rowNum - b.rowNum; - return a.levelNum - b.levelNum; + if (a.row_num !== b.row_num) return parseInt(a.row_num) - parseInt(b.row_num); + return parseInt(a.level_num) - parseInt(b.level_num); }); setPreviewData(locations); setIsPreviewGenerated(true); onChange?.(locations); - }, [conditions, context, generateLocationCode, onChange, missingFields]); + }, [conditions, context, generateLocationCode, onChange, missingFields, hasRowOverlap, duplicateErrors, existingLocations, rowOverlapErrors]); // 템플릿 저장 const saveTemplate = useCallback(() => { @@ -448,6 +701,66 @@ export const RackStructureComponent: React.FC = ({ )} + {/* 열 범위 중복 경고 */} + {hasRowOverlap && ( + + + + 열 범위가 중복됩니다! +
    + {rowOverlapErrors.map((err, idx) => ( +
  • + 조건 {err.conditionIndex + 1}과 조건 {err.overlappingWith + 1}: {err.overlappingRows.join(", ")}열 중복 +
  • + ))} +
+ + 중복된 열 범위를 수정해주세요. + +
+
+ )} + + {/* 기존 데이터 중복 경고 */} + {hasDuplicateWithExisting && ( + + + + 이미 등록된 위치가 있습니다! +
    + {duplicateErrors.map((err, idx) => ( +
  • + {err.row}열: {err.existingLevels.join(", ")}단 (이미 등록됨) +
  • + ))} +
+ + 해당 열/단을 제외하거나 기존 데이터를 삭제해주세요. + +
+
+ )} + + {/* 기존 데이터 로딩 중 표시 */} + {isCheckingDuplicates && ( + + + + 기존 위치 데이터를 확인하는 중... + + + )} + + {/* 기존 데이터 존재 알림 */} + {!isCheckingDuplicates && existingLocations.length > 0 && !hasDuplicateWithExisting && ( + + + + 해당 창고/층/구역에 {existingLocations.length}개의 위치가 이미 등록되어 있습니다. + + + )} + {/* 현재 매핑된 값 표시 */} {(context.warehouseCode || context.warehouseName || context.floor || context.zone) && (
@@ -548,10 +861,11 @@ export const RackStructureComponent: React.FC = ({ variant="outline" size="sm" onClick={generatePreview} + disabled={hasDuplicateWithExisting || hasRowOverlap || missingFields.length > 0 || isCheckingDuplicates} className="h-8 gap-1" > - 미리보기 생성 + {isCheckingDuplicates ? "확인 중..." : hasDuplicateWithExisting ? "중복 있음" : "미리보기 생성"} @@ -595,15 +909,15 @@ export const RackStructureComponent: React.FC = ({ {previewData.map((loc, idx) => ( {idx + 1} - {loc.locationCode} - {loc.locationName} - {context?.floor || "1"} - {context?.zone || "A"} + {loc.location_code} + {loc.location_name} + {loc.floor || context?.floor || "1"} + {loc.zone || context?.zone || "A"} - {loc.rowNum.toString().padStart(2, "0")} + {loc.row_num.padStart(2, "0")} - {loc.levelNum} - {loc.locationType} + {loc.level_num} + {loc.location_type} - ))} diff --git a/frontend/lib/registry/components/rack-structure/RackStructureRenderer.tsx b/frontend/lib/registry/components/rack-structure/RackStructureRenderer.tsx index ab832f51..e33658b5 100644 --- a/frontend/lib/registry/components/rack-structure/RackStructureRenderer.tsx +++ b/frontend/lib/registry/components/rack-structure/RackStructureRenderer.tsx @@ -14,24 +14,40 @@ export class RackStructureRenderer extends AutoRegisteringComponentRenderer { static componentDefinition = RackStructureDefinition; render(): React.ReactElement { - const { formData, isPreview, config } = this.props as any; + const { formData, isPreview, config, tableName, onFormDataChange } = this.props as Record; return ( } + tableName={tableName as string} + onChange={(locations) => + this.handleLocationsChange( + locations, + onFormDataChange as ((fieldName: string, value: unknown) => void) | undefined, + ) + } + isPreview={isPreview as boolean} /> ); } /** * 생성된 위치 데이터 변경 핸들러 + * formData에 _rackStructureLocations 키로 저장하여 저장 액션에서 감지 */ - protected handleLocationsChange = (locations: GeneratedLocation[]) => { - // 생성된 위치 데이터를 formData에 저장 + protected handleLocationsChange = ( + locations: GeneratedLocation[], + onFormDataChange?: (fieldName: string, value: unknown) => void, + ) => { + // 생성된 위치 데이터를 컴포넌트에 저장 this.updateComponent({ generatedLocations: locations }); + + // formData에도 저장하여 저장 액션에서 감지할 수 있도록 함 + if (onFormDataChange) { + console.log("📦 [RackStructure] 미리보기 데이터를 formData에 저장:", locations.length, "개"); + onFormDataChange("_rackStructureLocations", locations); + } }; } diff --git a/frontend/lib/registry/components/rack-structure/types.ts b/frontend/lib/registry/components/rack-structure/types.ts index 485a2208..5ab7bd7e 100644 --- a/frontend/lib/registry/components/rack-structure/types.ts +++ b/frontend/lib/registry/components/rack-structure/types.ts @@ -18,18 +18,19 @@ export interface RackStructureTemplate { createdAt?: string; } -// 생성될 위치 데이터 +// 생성될 위치 데이터 (테이블 컬럼명과 동일하게 매핑) export interface GeneratedLocation { - rowNum: number; // 열 번호 - levelNum: number; // 단 번호 - locationCode: string; // 위치 코드 (예: WH001-1A-01-1) - locationName: string; // 위치명 (예: A구역-01열-1단) - locationType?: string; // 위치 유형 - status?: string; // 사용 여부 + row_num: string; // 열 번호 (varchar) + level_num: string; // 단 번호 (varchar) + location_code: string; // 위치 코드 (예: WH001-1A-01-1) + location_name: string; // 위치명 (예: A구역-01열-1단) + location_type?: string; // 위치 유형 + status?: string; // 사용 여부 // 추가 필드 (상위 폼에서 매핑된 값) - warehouseCode?: string; - floor?: string; - zone?: string; + warehouse_id?: string; // 창고 ID/코드 + warehouse_name?: string; // 창고명 + floor?: string; // 층 + zone?: string; // 구역 } // 필드 매핑 설정 (상위 폼의 어떤 필드를 사용할지) diff --git a/frontend/lib/utils/buttonActions.ts b/frontend/lib/utils/buttonActions.ts index 275efbb5..c5e86849 100644 --- a/frontend/lib/utils/buttonActions.ts +++ b/frontend/lib/utils/buttonActions.ts @@ -114,7 +114,7 @@ export interface ButtonActionConfig { geolocationExtraValue?: string | number | boolean; // 추가로 변경할 값 (예: "active") geolocationExtraKeyField?: string; // 다른 테이블의 키 필드 (예: "vehicle_id") geolocationExtraKeySourceField?: string; // 현재 폼에서 키 값을 가져올 필드 (예: "vehicle_id") - + // 🆕 두 번째 테이블 설정 (위치정보 + 상태변경을 각각 다른 테이블에) geolocationSecondTableEnabled?: boolean; // 두 번째 테이블 사용 여부 geolocationSecondTableName?: string; // 두 번째 테이블명 (예: "vehicles") @@ -152,7 +152,7 @@ export interface ButtonActionConfig { updateTableName?: string; // 대상 테이블명 (다른 테이블 UPDATE 시) updateKeyField?: string; // 키 필드명 (WHERE 조건에 사용) updateKeySourceField?: string; // 키 값 소스 (폼 필드명 또는 __userId__ 등 특수 키워드) - + // 🆕 필드 값 변경 + 위치정보 수집 (update_field 액션에서 사용) updateWithGeolocation?: boolean; // 위치정보도 함께 수집할지 여부 updateGeolocationLatField?: string; // 위도 저장 필드 @@ -262,7 +262,7 @@ export interface ButtonActionContext { // 🆕 컴포넌트별 설정 (parentDataMapping 등) componentConfigs?: Record; // 컴포넌트 ID → 컴포넌트 설정 - + // 🆕 분할 패널 부모 데이터 (좌측 화면에서 선택된 데이터) splitPanelParentData?: Record; } @@ -276,10 +276,7 @@ export interface ButtonActionContext { * - __screenId__ : 현재 화면 ID * - __tableName__ : 현재 테이블명 */ -export function resolveSpecialKeyword( - sourceField: string | undefined, - context: ButtonActionContext -): any { +export function resolveSpecialKeyword(sourceField: string | undefined, context: ButtonActionContext): any { if (!sourceField) return undefined; // 특수 키워드 처리 @@ -416,6 +413,81 @@ export class ButtonActionExecutor { console.log("📦 [handleSave] beforeFormSave 이벤트 후 formData:", context.formData); + // 🆕 렉 구조 컴포넌트 일괄 저장 감지 + let rackStructureLocations: any[] | undefined; + let rackStructureFieldKey = "_rackStructureLocations"; + let hasEmptyRackStructureField = false; + + // formData에서 렉 구조 데이터 또는 빈 배열 찾기 + for (const [key, value] of Object.entries(context.formData || {})) { + // 배열인 경우만 체크 + if (Array.isArray(value)) { + if (value.length > 0 && value[0]) { + const firstItem = value[0]; + const isNewFormat = + firstItem.location_code && + firstItem.location_name && + firstItem.row_num !== undefined && + firstItem.level_num !== undefined; + const isOldFormat = + firstItem.locationCode && + firstItem.locationName && + firstItem.rowNum !== undefined && + firstItem.levelNum !== undefined; + + if (isNewFormat || isOldFormat) { + console.log("🏗️ [handleSave] 렉 구조 데이터 감지 - 필드:", key); + rackStructureLocations = value; + rackStructureFieldKey = key; + break; + } + } else if (value.length === 0 && key.startsWith("comp_")) { + // comp_로 시작하는 빈 배열은 렉 구조 컴포넌트일 가능성 있음 + // allComponents에서 확인 + const rackStructureComponentInLayout = context.allComponents?.find( + (comp: any) => + comp.type === "component" && comp.componentId === "rack-structure" && comp.columnName === key, + ); + if (rackStructureComponentInLayout) { + console.log("🏗️ [handleSave] 렉 구조 컴포넌트 감지 (미리보기 없음) - 필드:", key); + hasEmptyRackStructureField = true; + rackStructureFieldKey = key; + } + } + } + } + + // 렉 구조 컴포넌트가 있지만 미리보기 데이터가 없는 경우 + if (hasEmptyRackStructureField && (!rackStructureLocations || rackStructureLocations.length === 0)) { + alert("미리보기를 먼저 생성해주세요.\n\n렉 구조 조건을 설정한 후 '미리보기 생성' 버튼을 클릭하세요."); + return false; + } + + // 🆕 렉 구조 등록 화면 감지 (warehouse_location 테이블 + floor/zone 필드 있음 + 렉 구조 데이터 없음) + // 이 경우 일반 저장을 차단하고 미리보기 생성을 요구 + const isRackStructureScreen = + context.tableName === "warehouse_location" && + context.formData?.floor && + context.formData?.zone && + !rackStructureLocations; + + if (isRackStructureScreen) { + console.log("🏗️ [handleSave] 렉 구조 등록 화면 감지 - 미리보기 데이터 없음"); + alert( + "렉 구조 등록 화면입니다.\n\n" + + "미리보기를 먼저 생성해주세요.\n" + + "- 중복된 위치가 있으면 미리보기가 생성되지 않습니다.\n" + + "- 기존 데이터를 삭제하거나 다른 열/단을 선택해주세요.", + ); + return false; + } + + // 렉 구조 데이터가 있으면 일괄 저장 + if (rackStructureLocations && rackStructureLocations.length > 0) { + console.log("🏗️ [handleSave] 렉 구조 컴포넌트 감지 - 일괄 저장 시작:", rackStructureLocations.length, "개"); + return await this.handleRackStructureBatchSave(config, context, rackStructureLocations, rackStructureFieldKey); + } + // 🆕 SelectedItemsDetailInput 배치 저장 처리 (fieldGroups 구조) console.log("🔍 [handleSave] formData 구조 확인:", { isFormDataArray: Array.isArray(context.formData), @@ -585,12 +657,12 @@ export class ButtonActionExecutor { if (Object.keys(fieldsWithNumbering).length > 0) { console.log("🎯 채번 규칙 할당 시작 (allocateCode 호출)"); const { allocateNumberingCode } = await import("@/lib/api/numberingRule"); - + for (const [fieldName, ruleId] of Object.entries(fieldsWithNumbering)) { try { console.log(`🔄 ${fieldName} 필드에 대해 allocateCode 호출: ${ruleId}`); const allocateResult = await allocateNumberingCode(ruleId); - + if (allocateResult.success && allocateResult.data?.generatedCode) { const newCode = allocateResult.data.generatedCode; console.log(`✅ ${fieldName} 새 코드 할당: ${formData[fieldName]} → ${newCode}`); @@ -691,8 +763,8 @@ export class ButtonActionExecutor { } // 🆕 v3.9: RepeatScreenModal의 외부 테이블 데이터 저장 처리 - const repeatScreenModalKeys = Object.keys(context.formData).filter((key) => - key.startsWith("_repeatScreenModal_") && key !== "_repeatScreenModal_aggregations" + const repeatScreenModalKeys = Object.keys(context.formData).filter( + (key) => key.startsWith("_repeatScreenModal_") && key !== "_repeatScreenModal_aggregations", ); // RepeatScreenModal 데이터가 있으면 해당 테이블에 대한 메인 저장은 건너뜀 @@ -749,7 +821,7 @@ export class ButtonActionExecutor { console.log(`📝 [handleSave] ${targetTable} INSERT:`, dataWithMeta); const insertResult = await apiClient.post( `/table-management/tables/${targetTable}/add`, - dataWithMeta + dataWithMeta, ); console.log(`✅ [handleSave] ${targetTable} INSERT 완료:`, insertResult.data); } else if (id) { @@ -757,10 +829,10 @@ export class ButtonActionExecutor { const originalData = { id }; const updatedData = { ...dataWithMeta, id }; console.log(`📝 [handleSave] ${targetTable} UPDATE:`, { originalData, updatedData }); - const updateResult = await apiClient.put( - `/table-management/tables/${targetTable}/edit`, - { originalData, updatedData } - ); + const updateResult = await apiClient.put(`/table-management/tables/${targetTable}/edit`, { + originalData, + updatedData, + }); console.log(`✅ [handleSave] ${targetTable} UPDATE 완료:`, updateResult.data); } } catch (error: any) { @@ -794,12 +866,14 @@ export class ButtonActionExecutor { [joinKey.targetField]: sourceValue, }; - console.log(`📊 [handleSave] ${targetTable}.${targetColumn} = ${aggregatedValue} (조인: ${joinKey.sourceField} = ${sourceValue})`); - - const updateResult = await apiClient.put( - `/table-management/tables/${targetTable}/edit`, - { originalData, updatedData } + console.log( + `📊 [handleSave] ${targetTable}.${targetColumn} = ${aggregatedValue} (조인: ${joinKey.sourceField} = ${sourceValue})`, ); + + const updateResult = await apiClient.put(`/table-management/tables/${targetTable}/edit`, { + originalData, + updatedData, + }); console.log(`✅ [handleSave] ${targetTable} 집계 저장 완료:`, updateResult.data); } catch (error: any) { console.error(`❌ [handleSave] ${targetTable} 집계 저장 실패:`, error.response?.data || error.message); @@ -856,7 +930,7 @@ export class ButtonActionExecutor { // 복합키인 경우 로그 출력 if (primaryKeys.length > 1) { - console.log(`🔗 복합 기본키 감지:`, primaryKeys); + console.log("🔗 복합 기본키 감지:", primaryKeys); console.log(`📍 첫 번째 키 (${primaryKeyColumn}) 값을 사용: ${value}`); } @@ -908,6 +982,184 @@ export class ButtonActionExecutor { return await this.handleSave(config, context); } + /** + * 🆕 렉 구조 컴포넌트 일괄 저장 처리 + * 미리보기에서 생성된 위치 데이터를 일괄 INSERT + */ + private static async handleRackStructureBatchSave( + config: ButtonActionConfig, + context: ButtonActionContext, + locations: any[], + rackStructureFieldKey: string = "_rackStructureLocations", + ): Promise { + const { tableName, screenId, userId, companyCode } = context; + + console.log("🏗️ [handleRackStructureBatchSave] 렉 구조 일괄 저장 시작:", { + locationsCount: locations.length, + tableName, + screenId, + rackStructureFieldKey, + }); + + if (!tableName) { + throw new Error("테이블명이 지정되지 않았습니다."); + } + + if (locations.length === 0) { + throw new Error("저장할 위치 데이터가 없습니다. 먼저 미리보기를 생성해주세요."); + } + + console.log("🏗️ [handleRackStructureBatchSave] 렉 구조 데이터 예시:", locations[0]); + + // 저장 전 중복 체크 + const firstLocation = locations[0]; + const warehouseId = firstLocation.warehouse_id || firstLocation.warehouseCode; + const floor = firstLocation.floor; + const zone = firstLocation.zone; + + if (warehouseId && floor && zone) { + console.log("🔍 [handleRackStructureBatchSave] 기존 데이터 중복 체크:", { warehouseId, floor, zone }); + + try { + const existingResponse = await DynamicFormApi.getTableData(tableName, { + filters: { + warehouse_id: warehouseId, + floor: floor, + zone: zone, + }, + page: 1, + pageSize: 1000, + }); + + // API 응답 구조에 따라 데이터 추출 + const responseData = existingResponse.data as any; + const existingData = responseData?.data || responseData || []; + + if (Array.isArray(existingData) && existingData.length > 0) { + // 중복되는 위치 확인 + const existingSet = new Set(existingData.map((loc: any) => `${loc.row_num}-${loc.level_num}`)); + + const duplicates = locations.filter((loc) => { + const key = `${loc.row_num || loc.rowNum}-${loc.level_num || loc.levelNum}`; + return existingSet.has(key); + }); + + if (duplicates.length > 0) { + const duplicateInfo = duplicates + .slice(0, 5) + .map((d) => `${d.row_num || d.rowNum}열 ${d.level_num || d.levelNum}단`) + .join(", "); + + const moreCount = duplicates.length > 5 ? ` 외 ${duplicates.length - 5}개` : ""; + + alert( + `이미 등록된 위치가 있습니다!\n\n중복 위치: ${duplicateInfo}${moreCount}\n\n해당 위치를 제외하거나 기존 데이터를 삭제해주세요.`, + ); + return false; + } + } + } catch (checkError) { + console.warn("⚠️ [handleRackStructureBatchSave] 중복 체크 실패 (저장 계속 진행):", checkError); + } + } + + // 각 위치 데이터를 그대로 저장 (렉 구조 컴포넌트에서 이미 테이블 컬럼명으로 생성됨) + const recordsToInsert = locations.map((loc) => { + // 렉 구조 컴포넌트에서 생성된 데이터를 그대로 사용 + // 새로운 형식(스네이크 케이스)과 기존 형식(카멜 케이스) 모두 지원 + const record: Record = { + // 렉 구조에서 생성된 필드 (이미 테이블 컬럼명과 동일) + location_code: loc.location_code || loc.locationCode, + location_name: loc.location_name || loc.locationName, + row_num: loc.row_num || String(loc.rowNum), + level_num: loc.level_num || String(loc.levelNum), + // 창고 정보 (렉 구조 컴포넌트에서 전달) + warehouse_id: loc.warehouse_id || loc.warehouseCode, + warehouse_name: loc.warehouse_name || loc.warehouseName, + // 위치 정보 (렉 구조 컴포넌트에서 전달) + floor: loc.floor, + zone: loc.zone, + location_type: loc.location_type || loc.locationType, + status: loc.status || "사용", + // 사용자 정보 추가 + writer: userId, + company_code: companyCode, + }; + + return record; + }); + + console.log("🏗️ [handleRackStructureBatchSave] 저장할 레코드 수:", recordsToInsert.length); + console.log("🏗️ [handleRackStructureBatchSave] 첫 번째 레코드 예시:", recordsToInsert[0]); + + // 일괄 INSERT 실행 + try { + let successCount = 0; + let errorCount = 0; + const errors: string[] = []; + + for (let i = 0; i < recordsToInsert.length; i++) { + const record = recordsToInsert[i]; + try { + console.log(`🏗️ [handleRackStructureBatchSave] 저장 중 (${i + 1}/${recordsToInsert.length}):`, record); + + const result = await DynamicFormApi.saveFormData({ + screenId, + tableName, + data: record, + }); + + console.log(`🏗️ [handleRackStructureBatchSave] API 응답 (${i + 1}):`, result); + + if (result.success) { + successCount++; + } else { + errorCount++; + const errorMsg = result.message || result.error || "알 수 없는 오류"; + errors.push(errorMsg); + console.error(`❌ [handleRackStructureBatchSave] 저장 실패 (${i + 1}):`, errorMsg); + } + } catch (error: any) { + errorCount++; + const errorMsg = error.message || "저장 중 오류 발생"; + errors.push(errorMsg); + console.error(`❌ [handleRackStructureBatchSave] 예외 발생 (${i + 1}):`, error); + } + } + + console.log("🏗️ [handleRackStructureBatchSave] 저장 완료:", { + successCount, + errorCount, + errors: errors.slice(0, 5), // 처음 5개 오류만 로그 + }); + + if (errorCount > 0) { + if (successCount > 0) { + alert(`${successCount}개 저장 완료, ${errorCount}개 저장 실패\n\n오류: ${errors.slice(0, 3).join("\n")}`); + } else { + throw new Error(`저장 실패: ${errors[0]}`); + } + } else { + alert(`${successCount}개의 위치가 성공적으로 등록되었습니다.`); + } + + // 성공 후 새로고침 + if (context.onRefresh) { + context.onRefresh(); + } + + // 모달 닫기 + if (context.onClose) { + context.onClose(); + } + + return successCount > 0; + } catch (error: any) { + console.error("🏗️ [handleRackStructureBatchSave] 일괄 저장 오류:", error); + throw error; + } + } + /** * 🆕 배치 저장 액션 처리 (SelectedItemsDetailInput용 - 새로운 데이터 구조) * ItemData[] → 각 품목의 details 배열을 개별 레코드로 저장 @@ -919,7 +1171,7 @@ export class ButtonActionExecutor { ): Promise { const { formData, tableName, screenId, selectedRowsData, originalData } = context; - console.log(`🔍 [handleBatchSave] context 확인:`, { + console.log("🔍 [handleBatchSave] context 확인:", { hasSelectedRowsData: !!selectedRowsData, selectedRowsCount: selectedRowsData?.length || 0, hasOriginalData: !!originalData, @@ -1137,7 +1389,7 @@ export class ButtonActionExecutor { try { // 플로우 선택 데이터 우선 사용 - let dataToDelete = flowSelectedData && flowSelectedData.length > 0 ? flowSelectedData : selectedRowsData; + const dataToDelete = flowSelectedData && flowSelectedData.length > 0 ? flowSelectedData : selectedRowsData; console.log("🔍 handleDelete - 데이터 소스 확인:", { hasFlowSelectedData: !!(flowSelectedData && flowSelectedData.length > 0), @@ -1207,7 +1459,7 @@ export class ButtonActionExecutor { if (idField) deleteId = rowData[idField]; } - console.log(`🔍 폴백 방법으로 ID 추출:`, deleteId); + console.log("🔍 폴백 방법으로 ID 추출:", deleteId); } console.log("선택된 행 데이터:", rowData); @@ -1237,7 +1489,7 @@ export class ButtonActionExecutor { } else { console.log("🔄 테이블 데이터 삭제 완료, 테이블 새로고침 호출"); context.onRefresh?.(); // 테이블 새로고침 - + // 🆕 분할 패널 등 전역 테이블 새로고침 이벤트 발생 window.dispatchEvent(new CustomEvent("refreshTable")); console.log("🔄 refreshTable 전역 이벤트 발생"); @@ -1264,11 +1516,11 @@ export class ButtonActionExecutor { } context.onRefresh?.(); - + // 🆕 분할 패널 등 전역 테이블 새로고침 이벤트 발생 window.dispatchEvent(new CustomEvent("refreshTable")); console.log("🔄 refreshTable 전역 이벤트 발생 (단일 삭제)"); - + toast.success(config.successMessage || "삭제되었습니다."); return true; } catch (error) { @@ -1550,12 +1802,12 @@ export class ButtonActionExecutor { // 🆕 부모 화면의 선택된 데이터 가져오기 (excludeFilter에서 사용) const rawParentData = dataRegistry[dataSourceId]?.[0]?.originalData || dataRegistry[dataSourceId]?.[0] || {}; - + // 🆕 필드 매핑 적용 (소스 컬럼 → 타겟 컬럼) - let parentData = { ...rawParentData }; + const parentData = { ...rawParentData }; if (config.fieldMappings && Array.isArray(config.fieldMappings) && config.fieldMappings.length > 0) { console.log("🔄 [openModalWithData] 필드 매핑 적용:", config.fieldMappings); - + config.fieldMappings.forEach((mapping: { sourceField: string; targetField: string }) => { if (mapping.sourceField && mapping.targetField && rawParentData[mapping.sourceField] !== undefined) { // 타겟 필드에 소스 필드 값 복사 @@ -1564,7 +1816,7 @@ export class ButtonActionExecutor { } }); } - + console.log("📦 [openModalWithData] 부모 데이터 전달:", { dataSourceId, rawParentData, @@ -1688,7 +1940,7 @@ export class ButtonActionExecutor { const { selectedRowsData, flowSelectedData } = context; // 플로우 선택 데이터 우선 사용 - let dataToEdit = flowSelectedData && flowSelectedData.length > 0 ? flowSelectedData : selectedRowsData; + const dataToEdit = flowSelectedData && flowSelectedData.length > 0 ? flowSelectedData : selectedRowsData; // 선택된 데이터가 없는 경우 if (!dataToEdit || dataToEdit.length === 0) { @@ -1868,7 +2120,7 @@ export class ButtonActionExecutor { const { selectedRowsData, flowSelectedData } = context; // 플로우 선택 데이터 우선 사용 - let dataToCopy = flowSelectedData && flowSelectedData.length > 0 ? flowSelectedData : selectedRowsData; + const dataToCopy = flowSelectedData && flowSelectedData.length > 0 ? flowSelectedData : selectedRowsData; console.log("📋 handleCopy - 데이터 소스 확인:", { hasFlowSelectedData: !!(flowSelectedData && flowSelectedData.length > 0), @@ -1980,7 +2232,7 @@ export class ButtonActionExecutor { }); if (resetFieldName) { - toast.success(`복사본이 생성되었습니다. 품목코드는 저장 시 자동으로 생성됩니다.`); + toast.success("복사본이 생성되었습니다. 품목코드는 저장 시 자동으로 생성됩니다."); } else { console.warn("⚠️ 품목코드 필드를 찾을 수 없습니다. 전체 데이터를 복사합니다."); console.warn("⚠️ 사용 가능한 필드:", Object.keys(copiedData)); @@ -2753,7 +3005,7 @@ export class ButtonActionExecutor { } else { console.warn(`⚠️ 매핑 실패: ${sourceField} → ${targetField} (값을 찾을 수 없음)`); console.warn(` - valueType: ${valueType}, defaultValue: ${defaultValue}`); - console.warn(` - 소스 데이터 키들:`, Object.keys(sourceData)); + console.warn(" - 소스 데이터 키들:", Object.keys(sourceData)); console.warn(` - sourceData[${sourceField}] =`, sourceData[sourceField]); return; // 값이 없으면 해당 필드는 스킵 } @@ -2791,7 +3043,7 @@ export class ButtonActionExecutor { if (result.success) { console.log("✅ 삽입 성공:", result); - toast.success(`데이터가 타겟 테이블에 성공적으로 삽입되었습니다.`); + toast.success("데이터가 타겟 테이블에 성공적으로 삽입되었습니다."); } else { throw new Error(result.message || "삽입 실패"); } @@ -3020,7 +3272,7 @@ export class ButtonActionExecutor { const layoutResponse = await apiClient.get(`/screen-management/screens/${context.screenId}/layout`); if (layoutResponse.data?.success && layoutResponse.data?.data) { - let layoutData = layoutResponse.data.data; + const layoutData = layoutResponse.data.data; // components가 문자열이면 파싱 if (typeof layoutData.components === "string") { @@ -3455,13 +3707,13 @@ export class ButtonActionExecutor { const totalRows = preview.totalAffectedRows; const confirmMerge = confirm( - `⚠️ 코드 병합 확인\n\n` + + "⚠️ 코드 병합 확인\n\n" + `${oldValue} → ${newValue}\n\n` + - `영향받는 데이터:\n` + + "영향받는 데이터:\n" + `- 테이블 수: ${preview.preview.length}개\n` + `- 총 행 수: ${totalRows}개\n\n` + `데이터는 삭제되지 않고, "${columnName}" 컬럼 값만 변경됩니다.\n\n` + - `계속하시겠습니까?`, + "계속하시겠습니까?", ); if (!confirmMerge) { @@ -3486,7 +3738,7 @@ export class ButtonActionExecutor { if (response.data.success) { const data = response.data.data; toast.success( - `코드 병합 완료!\n` + `${data.affectedTables.length}개 테이블, ${data.totalRowsUpdated}개 행 업데이트`, + "코드 병합 완료!\n" + `${data.affectedTables.length}개 테이블, ${data.totalRowsUpdated}개 행 업데이트`, ); // 화면 새로고침 @@ -3532,9 +3784,10 @@ export class ButtonActionExecutor { } // Trip ID 생성 - const tripId = config.trackingAutoGenerateTripId !== false - ? `TRIP_${Date.now()}_${context.userId || "unknown"}` - : context.formData?.[config.trackingTripIdField || "trip_id"] || `TRIP_${Date.now()}`; + const tripId = + config.trackingAutoGenerateTripId !== false + ? `TRIP_${Date.now()}_${context.userId || "unknown"}` + : context.formData?.[config.trackingTripIdField || "trip_id"] || `TRIP_${Date.now()}`; this.currentTripId = tripId; this.trackingContext = context; @@ -3565,7 +3818,7 @@ export class ButtonActionExecutor { const keyValue = resolveSpecialKeyword(config.trackingStatusKeySourceField || "__userId__", context); if (keyValue) { - await apiClient.put(`/dynamic-form/update-field`, { + await apiClient.put("/dynamic-form/update-field", { tableName: statusTableName, keyField: keyField, keyValue: keyValue, @@ -3591,9 +3844,11 @@ export class ButtonActionExecutor { toast.success(config.successMessage || `위치 추적이 시작되었습니다. (${interval / 1000}초 간격)`); // 추적 시작 이벤트 발생 (UI 업데이트용) - window.dispatchEvent(new CustomEvent("trackingStarted", { - detail: { tripId, interval } - })); + window.dispatchEvent( + new CustomEvent("trackingStarted", { + detail: { tripId, interval }, + }), + ); return true; } catch (error: any) { @@ -3623,26 +3878,36 @@ export class ButtonActionExecutor { const tripId = this.currentTripId; // 마지막 위치 저장 (trip_status를 completed로) - const departure = this.trackingContext?.formData?.[this.trackingConfig?.trackingDepartureField || "departure"] || null; + const departure = + this.trackingContext?.formData?.[this.trackingConfig?.trackingDepartureField || "departure"] || null; const arrival = this.trackingContext?.formData?.[this.trackingConfig?.trackingArrivalField || "arrival"] || null; const departureName = this.trackingContext?.formData?.["departure_name"] || null; const destinationName = this.trackingContext?.formData?.["destination_name"] || null; - const vehicleId = this.trackingContext?.formData?.[this.trackingConfig?.trackingVehicleIdField || "vehicle_id"] || null; + const vehicleId = + this.trackingContext?.formData?.[this.trackingConfig?.trackingVehicleIdField || "vehicle_id"] || null; - await this.saveLocationToHistory(tripId, departure, arrival, departureName, destinationName, vehicleId, "completed"); + await this.saveLocationToHistory( + tripId, + departure, + arrival, + departureName, + destinationName, + vehicleId, + "completed", + ); // 🆕 거리/시간 계산 및 저장 if (tripId) { try { const tripStats = await this.calculateTripStats(tripId); console.log("📊 운행 통계:", tripStats); - + // 운행 통계를 두 테이블에 저장 if (tripStats) { const distanceMeters = Math.round(tripStats.totalDistanceKm * 1000); // km → m const timeMinutes = tripStats.totalTimeMinutes; const userId = this.trackingUserId || context.userId; - + console.log("💾 운행 통계 DB 저장 시도:", { tripId, userId, @@ -3651,34 +3916,37 @@ export class ButtonActionExecutor { startTime: tripStats.startTime, endTime: tripStats.endTime, }); - + const { apiClient } = await import("@/lib/api/client"); - + // 1️⃣ vehicle_location_history 마지막 레코드에 통계 저장 (이력용) try { - const lastRecordResponse = await apiClient.post(`/table-management/tables/vehicle_location_history/data`, { - page: 1, - size: 1, - search: { trip_id: tripId }, - sortBy: "recorded_at", - sortOrder: "desc", - autoFilter: true, - }); - + const lastRecordResponse = await apiClient.post( + "/table-management/tables/vehicle_location_history/data", + { + page: 1, + size: 1, + search: { trip_id: tripId }, + sortBy: "recorded_at", + sortOrder: "desc", + autoFilter: true, + }, + ); + const lastRecordData = lastRecordResponse.data?.data?.data || lastRecordResponse.data?.data?.rows || []; if (lastRecordData.length > 0) { const lastRecordId = lastRecordData[0].id; console.log("📍 마지막 레코드 ID:", lastRecordId); - + const historyUpdates = [ { field: "trip_distance", value: distanceMeters }, { field: "trip_time", value: timeMinutes }, { field: "trip_start", value: tripStats.startTime }, { field: "trip_end", value: tripStats.endTime }, ]; - + for (const update of historyUpdates) { - await apiClient.put(`/dynamic-form/update-field`, { + await apiClient.put("/dynamic-form/update-field", { tableName: "vehicle_location_history", keyField: "id", keyValue: lastRecordId, @@ -3693,7 +3961,7 @@ export class ButtonActionExecutor { } catch (historyError) { console.warn("⚠️ vehicle_location_history 저장 실패:", historyError); } - + // 2️⃣ vehicles 테이블에도 마지막 운행 통계 업데이트 (최신 정보용) if (userId) { try { @@ -3703,9 +3971,9 @@ export class ButtonActionExecutor { { field: "last_trip_start", value: tripStats.startTime }, { field: "last_trip_end", value: tripStats.endTime }, ]; - + for (const update of vehicleUpdates) { - await apiClient.put(`/dynamic-form/update-field`, { + await apiClient.put("/dynamic-form/update-field", { tableName: "vehicles", keyField: "user_id", keyValue: userId, @@ -3718,19 +3986,23 @@ export class ButtonActionExecutor { console.warn("⚠️ vehicles 테이블 저장 실패:", vehicleError); } } - + // 이벤트로 통계 전달 (UI에서 표시용) - window.dispatchEvent(new CustomEvent("tripCompleted", { - detail: { - tripId, - totalDistanceKm: tripStats.totalDistanceKm, - totalTimeMinutes: tripStats.totalTimeMinutes, - startTime: tripStats.startTime, - endTime: tripStats.endTime, - } - })); - - toast.success(`운행 종료! 총 ${tripStats.totalDistanceKm.toFixed(1)}km, ${tripStats.totalTimeMinutes}분 소요`); + window.dispatchEvent( + new CustomEvent("tripCompleted", { + detail: { + tripId, + totalDistanceKm: tripStats.totalDistanceKm, + totalTimeMinutes: tripStats.totalTimeMinutes, + startTime: tripStats.startTime, + endTime: tripStats.endTime, + }, + }), + ); + + toast.success( + `운행 종료! 총 ${tripStats.totalDistanceKm.toFixed(1)}km, ${tripStats.totalTimeMinutes}분 소요`, + ); } } catch (statsError) { console.warn("⚠️ 운행 통계 계산 실패:", statsError); @@ -3746,10 +4018,13 @@ export class ButtonActionExecutor { const { apiClient } = await import("@/lib/api/client"); const statusTableName = effectiveConfig.trackingStatusTableName || effectiveContext.tableName; const keyField = effectiveConfig.trackingStatusKeyField || "user_id"; - const keyValue = resolveSpecialKeyword(effectiveConfig.trackingStatusKeySourceField || "__userId__", effectiveContext); + const keyValue = resolveSpecialKeyword( + effectiveConfig.trackingStatusKeySourceField || "__userId__", + effectiveContext, + ); if (keyValue) { - await apiClient.put(`/dynamic-form/update-field`, { + await apiClient.put("/dynamic-form/update-field", { tableName: statusTableName, keyField: keyField, keyValue: keyValue, @@ -3771,9 +4046,11 @@ export class ButtonActionExecutor { toast.success(config.successMessage || "위치 추적이 종료되었습니다."); // 추적 종료 이벤트 발생 (UI 업데이트용) - window.dispatchEvent(new CustomEvent("trackingStopped", { - detail: { tripId } - })); + window.dispatchEvent( + new CustomEvent("trackingStopped", { + detail: { tripId }, + }), + ); // 화면 새로고침 context.onRefresh?.(); @@ -3798,8 +4075,8 @@ export class ButtonActionExecutor { try { // vehicle_location_history에서 해당 trip의 모든 위치 조회 const { apiClient } = await import("@/lib/api/client"); - - const response = await apiClient.post(`/table-management/tables/vehicle_location_history/data`, { + + const response = await apiClient.post("/table-management/tables/vehicle_location_history/data", { page: 1, size: 10000, search: { trip_id: tripId }, @@ -3814,7 +4091,7 @@ export class ButtonActionExecutor { // 응답 형식: data.data.data 또는 data.data.rows const rows = response.data?.data?.data || response.data?.data?.rows || []; - + if (!rows.length) { console.log("📊 통계 계산: 데이터 없음"); return null; @@ -3834,13 +4111,13 @@ export class ButtonActionExecutor { for (let i = 1; i < locations.length; i++) { const prev = locations[i - 1]; const curr = locations[i]; - + if (prev.latitude && prev.longitude && curr.latitude && curr.longitude) { const distance = this.calculateDistance( parseFloat(prev.latitude), parseFloat(prev.longitude), parseFloat(curr.latitude), - parseFloat(curr.longitude) + parseFloat(curr.longitude), ); totalDistanceM += distance; } @@ -3874,12 +4151,11 @@ export class ButtonActionExecutor { */ private static calculateDistance(lat1: number, lon1: number, lat2: number, lon2: number): number { const R = 6371000; // 지구 반경 (미터) - const dLat = (lat2 - lat1) * Math.PI / 180; - const dLon = (lon2 - lon1) * Math.PI / 180; - const a = + const dLat = ((lat2 - lat1) * Math.PI) / 180; + const dLon = ((lon2 - lon1) * Math.PI) / 180; + const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + - Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) * - Math.sin(dLon / 2) * Math.sin(dLon / 2); + Math.cos((lat1 * Math.PI) / 180) * Math.cos((lat2 * Math.PI) / 180) * Math.sin(dLon / 2) * Math.sin(dLon / 2); const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); return R * c; } @@ -3895,7 +4171,7 @@ export class ButtonActionExecutor { departureName: string | null, destinationName: string | null, vehicleId: number | null, - tripStatus: string = "active" + tripStatus: string = "active", ): Promise { return new Promise((resolve, reject) => { navigator.geolocation.getCurrentPosition( @@ -3925,7 +4201,7 @@ export class ButtonActionExecutor { console.log("📍 [saveLocationToHistory] 위치 저장:", locationData); // 1. vehicle_location_history에 저장 - const response = await apiClient.post(`/dynamic-form/location-history`, locationData); + const response = await apiClient.post("/dynamic-form/location-history", locationData); if (response.data?.success) { console.log("✅ 위치 이력 저장 성공:", response.data.data); @@ -3943,7 +4219,7 @@ export class ButtonActionExecutor { if (keyValue) { try { // latitude 업데이트 - await apiClient.put(`/dynamic-form/update-field`, { + await apiClient.put("/dynamic-form/update-field", { tableName: vehiclesTableName, keyField, keyValue, @@ -3952,7 +4228,7 @@ export class ButtonActionExecutor { }); // longitude 업데이트 - await apiClient.put(`/dynamic-form/update-field`, { + await apiClient.put("/dynamic-form/update-field", { tableName: vehiclesTableName, keyField, keyValue, @@ -3982,7 +4258,7 @@ export class ButtonActionExecutor { enableHighAccuracy: true, timeout: 10000, maximumAge: 0, - } + }, ); }); } @@ -4172,14 +4448,14 @@ export class ButtonActionExecutor { if (keyValue && targetTableName) { try { const { apiClient } = await import("@/lib/api/client"); - + // 위치 정보 필드들 업데이트 (위도, 경도, 정확도, 타임스탬프) const fieldsToUpdate = { ...updates }; - + // formData에서 departure, arrival만 포함 (테이블에 있을 가능성 높은 필드만) if (context.formData?.departure) fieldsToUpdate.departure = context.formData.departure; if (context.formData?.arrival) fieldsToUpdate.arrival = context.formData.arrival; - + // 추가 필드 변경 (status 등) if (config.geolocationExtraField && config.geolocationExtraValue !== undefined) { fieldsToUpdate[config.geolocationExtraField] = config.geolocationExtraValue; @@ -4191,7 +4467,7 @@ export class ButtonActionExecutor { let successCount = 0; for (const [field, value] of Object.entries(fieldsToUpdate)) { try { - const response = await apiClient.put(`/dynamic-form/update-field`, { + const response = await apiClient.put("/dynamic-form/update-field", { tableName: targetTableName, keyField, keyValue, @@ -4210,10 +4486,15 @@ export class ButtonActionExecutor { // 🆕 연속 위치 추적 시작 (공차 상태에서도 위치 기록) if (config.emptyVehicleTracking !== false) { await this.startEmptyVehicleTracking(config, context, { - latitude, longitude, accuracy, speed, heading, altitude + latitude, + longitude, + accuracy, + speed, + heading, + altitude, }); } - + toast.success(config.successMessage || "공차 등록이 완료되었습니다. 위치 추적을 시작합니다."); } catch (saveError) { console.error("❌ 위치정보 자동 저장 실패:", saveError); @@ -4261,9 +4542,16 @@ export class ButtonActionExecutor { * 공차 상태에서 연속 위치 추적 시작 */ private static async startEmptyVehicleTracking( - config: ButtonActionConfig, + config: ButtonActionConfig, context: ButtonActionContext, - initialPosition: { latitude: number; longitude: number; accuracy: number | null; speed: number | null; heading: number | null; altitude: number | null } + initialPosition: { + latitude: number; + longitude: number; + accuracy: number | null; + speed: number | null; + heading: number | null; + altitude: number | null; + }, ): Promise { try { // 기존 추적이 있으면 중지 @@ -4273,7 +4561,7 @@ export class ButtonActionExecutor { } const { apiClient } = await import("@/lib/api/client"); - + // Trip ID 생성 (공차용) const tripId = `EMPTY-${Date.now()}-${Math.random().toString(36).substring(2, 10)}`; this.emptyVehicleTripId = tripId; @@ -4315,7 +4603,7 @@ export class ButtonActionExecutor { this.emptyVehicleWatchId = navigator.geolocation.watchPosition( async (position) => { const { latitude, longitude, accuracy, speed, heading, altitude } = position.coords; - + try { await apiClient.post("/dynamic-form/location-history", { tripId: this.emptyVehicleTripId, @@ -4345,7 +4633,7 @@ export class ButtonActionExecutor { enableHighAccuracy: true, timeout: trackingInterval, maximumAge: 0, - } + }, ); console.log("🚗 공차 위치 추적 시작:", { tripId, watchId: this.emptyVehicleWatchId }); @@ -4435,26 +4723,30 @@ export class ButtonActionExecutor { * 운행알림 및 종료 액션 처리 * - 위치 수집 + 상태 변경 + 연속 추적 (시작/종료) */ - private static async handleOperationControl(config: ButtonActionConfig, context: ButtonActionContext): Promise { + private static async handleOperationControl( + config: ButtonActionConfig, + context: ButtonActionContext, + ): Promise { try { console.log("🔄 운행알림/종료 액션 실행:", { config, context }); // 🆕 출발지/도착지 필수 체크 (운행 시작 모드일 때만) // updateTrackingMode가 "start"이거나 updateTargetValue가 "active"/"inactive"인 경우 - const isStartMode = config.updateTrackingMode === "start" || - config.updateTargetValue === "active" || - config.updateTargetValue === "inactive"; - + const isStartMode = + config.updateTrackingMode === "start" || + config.updateTargetValue === "active" || + config.updateTargetValue === "inactive"; + if (isStartMode) { // 출발지/도착지 필드명 (기본값: departure, destination) const departureField = config.trackingDepartureField || "departure"; const destinationField = config.trackingArrivalField || "destination"; - + const departure = context.formData?.[departureField]; const destination = context.formData?.[destinationField]; - + console.log("📍 출발지/도착지 체크:", { departureField, destinationField, departure, destination }); - + if (!departure || departure === "" || !destination || destination === "") { toast.error("출발지와 도착지를 먼저 선택해주세요."); return false; @@ -4570,7 +4862,7 @@ export class ButtonActionExecutor { } } catch (geoError: any) { toast.dismiss(loadingToastId); - + // GeolocationPositionError 처리 if (geoError.code === 1) { toast.error("위치 정보 접근이 거부되었습니다."); @@ -4602,11 +4894,11 @@ export class ButtonActionExecutor { const keyField = config.updateKeyField; const keySourceField = config.updateKeySourceField; const targetTableName = config.updateTableName || tableName; - + if (keyField && keySourceField) { // 특수 키워드 변환 (예: __userId__ → 실제 사용자 ID) const keyValue = resolveSpecialKeyword(keySourceField, context); - + console.log("🔄 필드 값 변경 - 키 필드 사용:", { targetTable: targetTableName, keyField, @@ -4614,43 +4906,45 @@ export class ButtonActionExecutor { keyValue, updates, }); - + if (!keyValue) { console.warn("⚠️ 키 값이 없어서 업데이트를 건너뜁니다:", { keySourceField, keyValue }); toast.error("레코드를 식별할 키 값이 없습니다."); return false; } - + try { // 각 필드에 대해 개별 UPDATE 호출 const { apiClient } = await import("@/lib/api/client"); - + for (const [field, value] of Object.entries(updates)) { console.log(`🔄 DB UPDATE: ${targetTableName}.${field} = ${value} WHERE ${keyField} = ${keyValue}`); - - const response = await apiClient.put(`/dynamic-form/update-field`, { + + const response = await apiClient.put("/dynamic-form/update-field", { tableName: targetTableName, keyField: keyField, keyValue: keyValue, updateField: field, updateValue: value, }); - + if (!response.data?.success) { console.error(`❌ ${field} 업데이트 실패:`, response.data); toast.error(`${field} 업데이트에 실패했습니다.`); return false; } } - + console.log("✅ 모든 필드 업데이트 성공"); toast.success(config.successMessage || "상태가 변경되었습니다."); - + // 테이블 새로고침 이벤트 발생 - window.dispatchEvent(new CustomEvent("refreshTableData", { - detail: { tableName: targetTableName } - })); - + window.dispatchEvent( + new CustomEvent("refreshTableData", { + detail: { tableName: targetTableName }, + }), + ); + return true; } catch (apiError) { console.error("❌ 필드 값 변경 API 호출 실패:", apiError); @@ -4658,7 +4952,7 @@ export class ButtonActionExecutor { return false; } } - + // onSave 콜백이 있으면 사용 if (onSave) { console.log("🔄 필드 값 변경 후 자동 저장 (onSave 콜백)"); -- 2.43.0 From 7f44855bc14a4e8a568211899d9c7ff3655a8809 Mon Sep 17 00:00:00 2001 From: kjs Date: Mon, 8 Dec 2025 17:56:56 +0900 Subject: [PATCH 23/64] =?UTF-8?q?=EB=A0=89=EA=B5=AC=EC=A1=B0=20=EC=A4=91?= =?UTF-8?q?=EB=B3=B5=EB=93=B1=EB=A1=9D=20=EB=B0=A9=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rack-structure/RackStructureComponent.tsx | 39 +++++++++++-------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/frontend/lib/registry/components/rack-structure/RackStructureComponent.tsx b/frontend/lib/registry/components/rack-structure/RackStructureComponent.tsx index 7ddd6326..d80fd2c7 100644 --- a/frontend/lib/registry/components/rack-structure/RackStructureComponent.tsx +++ b/frontend/lib/registry/components/rack-structure/RackStructureComponent.tsx @@ -25,6 +25,7 @@ import { Alert, AlertDescription } from "@/components/ui/alert"; import { cn } from "@/lib/utils"; import { getCategoryLabelsByCodes } from "@/lib/api/tableCategoryValue"; import { DynamicFormApi } from "@/lib/api/dynamicForm"; +import { apiClient } from "@/lib/api/client"; import { RackStructureComponentProps, RackLineCondition, @@ -398,8 +399,8 @@ export const RackStructureComponent: React.FC = ({ // 기존 데이터 조회를 위한 값 추출 (useMemo 객체 참조 문제 방지) const warehouseCodeForQuery = context.warehouseCode; - const floorForQuery = context.floor; - const zoneForQuery = context.zone; + const floorForQuery = context.floor; // 라벨 값 (예: "1층") + const zoneForQuery = context.zone; // 라벨 값 (예: "A구역") // 기존 데이터 조회 (창고/층/구역이 변경될 때마다) useEffect(() => { @@ -411,6 +412,7 @@ export const RackStructureComponent: React.FC = ({ }); // 필수 조건이 충족되지 않으면 기존 데이터 초기화 + // DB에는 라벨 값(예: "1층", "A구역")으로 저장되어 있으므로 라벨 값 사용 if (!warehouseCodeForQuery || !floorForQuery || !zoneForQuery) { console.log("⚠️ [RackStructure] 필수 조건 미충족 - 조회 스킵"); setExistingLocations([]); @@ -421,27 +423,32 @@ export const RackStructureComponent: React.FC = ({ setIsCheckingDuplicates(true); try { // warehouse_location 테이블에서 해당 창고/층/구역의 기존 데이터 조회 - const filterParams = { - warehouse_id: warehouseCodeForQuery, - floor: floorForQuery, - zone: zoneForQuery, + // DB에는 라벨 값으로 저장되어 있으므로 라벨 값으로 필터링 + // equals 연산자를 사용하여 정확한 일치 검색 (ILIKE가 아닌 = 연산자 사용) + const searchParams = { + warehouse_id: { value: warehouseCodeForQuery, operator: "equals" }, + floor: { value: floorForQuery, operator: "equals" }, + zone: { value: zoneForQuery, operator: "equals" }, }; - console.log("🔍 기존 위치 데이터 조회 시작:", filterParams); + console.log("🔍 기존 위치 데이터 조회 시작 (정확한 일치):", searchParams); - const response = await DynamicFormApi.getTableData("warehouse_location", { - filters: filterParams, + // 직접 apiClient 사용하여 정확한 형식으로 요청 + // 백엔드는 search를 객체로 받아서 각 필드를 WHERE 조건으로 처리 + const response = await apiClient.post(`/table-management/tables/warehouse_location/data`, { page: 1, - pageSize: 1000, // 충분히 큰 값 + size: 1000, // 충분히 큰 값 + search: searchParams, // 백엔드가 기대하는 형식 (equals 연산자로 정확한 일치) }); - console.log("🔍 기존 위치 데이터 응답:", response); + console.log("🔍 기존 위치 데이터 응답:", response.data); - // API 응답 구조: { success: true, data: [...] } 또는 { success: true, data: { data: [...] } } - const dataArray = Array.isArray(response.data) - ? response.data - : (response.data?.data || []); + // API 응답 구조: { success: true, data: { data: [...], total, ... } } + const responseData = response.data?.data || response.data; + const dataArray = Array.isArray(responseData) + ? responseData + : (responseData?.data || []); - if (response.success && dataArray.length > 0) { + if (dataArray.length > 0) { const existing = dataArray.map((item: any) => ({ row_num: item.row_num, level_num: item.level_num, -- 2.43.0 From 660e889e23e3b211e2453f85cf676d783f397c84 Mon Sep 17 00:00:00 2001 From: leeheejin Date: Mon, 8 Dec 2025 14:34:18 +0900 Subject: [PATCH 24/64] =?UTF-8?q?=EC=84=B8=EA=B8=88=EA=B3=84=EC=82=B0?= =?UTF-8?q?=EC=84=9C=20=ED=95=98=EA=B8=B0=20=EC=A0=84=EC=97=90=20=EC=A0=80?= =?UTF-8?q?=EC=9E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/controllers/tableHistoryController.ts | 8 ++++---- backend-node/src/services/dynamicFormService.ts | 10 +++++++++- frontend/components/common/TableHistoryModal.tsx | 11 ++++++++++- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/backend-node/src/controllers/tableHistoryController.ts b/backend-node/src/controllers/tableHistoryController.ts index a32f31ad..8a506626 100644 --- a/backend-node/src/controllers/tableHistoryController.ts +++ b/backend-node/src/controllers/tableHistoryController.ts @@ -67,7 +67,7 @@ export class TableHistoryController { const whereClause = whereConditions.join(" AND "); - // 이력 조회 쿼리 + // 이력 조회 쿼리 (log_id로 정렬 - 시간 데이터 불일치 문제 해결) const historyQuery = ` SELECT log_id, @@ -84,7 +84,7 @@ export class TableHistoryController { full_row_after FROM ${logTableName} WHERE ${whereClause} - ORDER BY changed_at DESC + ORDER BY log_id DESC LIMIT ${limitParam} OFFSET ${offsetParam} `; @@ -196,7 +196,7 @@ export class TableHistoryController { const whereClause = whereConditions.length > 0 ? `WHERE ${whereConditions.join(" AND ")}` : ""; - // 이력 조회 쿼리 + // 이력 조회 쿼리 (log_id로 정렬 - 시간 데이터 불일치 문제 해결) const historyQuery = ` SELECT log_id, @@ -213,7 +213,7 @@ export class TableHistoryController { full_row_after FROM ${logTableName} ${whereClause} - ORDER BY changed_at DESC + ORDER BY log_id DESC LIMIT ${limitParam} OFFSET ${offsetParam} `; diff --git a/backend-node/src/services/dynamicFormService.ts b/backend-node/src/services/dynamicFormService.ts index d52c184f..99d6257c 100644 --- a/backend-node/src/services/dynamicFormService.ts +++ b/backend-node/src/services/dynamicFormService.ts @@ -1178,7 +1178,15 @@ export class DynamicFormService { console.log("📝 실행할 DELETE SQL:", deleteQuery); console.log("📊 SQL 파라미터:", [id]); - const result = await query(deleteQuery, [id]); + // 🔥 트랜잭션 내에서 app.user_id 설정 후 DELETE 실행 (이력 트리거용) + const result = await transaction(async (client) => { + // 이력 트리거에서 사용할 사용자 정보 설정 + if (userId) { + await client.query(`SET LOCAL app.user_id = '${userId}'`); + } + const res = await client.query(deleteQuery, [id]); + return res.rows; + }); console.log("✅ 서비스: 실제 테이블 삭제 성공:", result); diff --git a/frontend/components/common/TableHistoryModal.tsx b/frontend/components/common/TableHistoryModal.tsx index f2970b4f..52c7e9b6 100644 --- a/frontend/components/common/TableHistoryModal.tsx +++ b/frontend/components/common/TableHistoryModal.tsx @@ -13,6 +13,13 @@ import { DialogTitle, DialogDescription, } from "@/components/ui/dialog"; +import { + ResizableDialog, + ResizableDialogContent, + ResizableDialogHeader, + ResizableDialogTitle, + ResizableDialogDescription, +} from "@/components/ui/resizable-dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; @@ -137,7 +144,9 @@ export function TableHistoryModal({ const formatDate = (dateString: string) => { try { - return format(new Date(dateString), "yyyy년 MM월 dd일 HH:mm:ss", { locale: ko }); + // DB는 UTC로 저장, 브라우저가 자동으로 로컬 시간(KST)으로 변환 + const date = new Date(dateString); + return format(date, "yyyy년 MM월 dd일 HH:mm:ss", { locale: ko }); } catch { return dateString; } -- 2.43.0 From 1f28add0ed7ef901fe89d3e35dc41f90ebf26903 Mon Sep 17 00:00:00 2001 From: leeheejin Date: Mon, 8 Dec 2025 16:01:59 +0900 Subject: [PATCH 25/64] =?UTF-8?q?=EC=84=B8=EA=B8=88=EA=B3=84=EC=82=B0?= =?UTF-8?q?=EC=84=9C=20=EB=B0=9C=ED=96=89=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend-node/src/app.ts | 2 + .../src/controllers/taxInvoiceController.ts | 331 +++++++ backend-node/src/middleware/errorHandler.ts | 12 +- backend-node/src/routes/taxInvoiceRoutes.ts | 40 + .../src/services/taxInvoiceService.ts | 612 +++++++++++++ .../tax-invoice/TaxInvoiceDetail.tsx | 621 +++++++++++++ .../components/tax-invoice/TaxInvoiceForm.tsx | 706 +++++++++++++++ .../components/tax-invoice/TaxInvoiceList.tsx | 818 ++++++++++++++++++ frontend/components/tax-invoice/index.ts | 4 + frontend/lib/api/taxInvoice.ts | 229 +++++ frontend/lib/registry/components/index.ts | 3 + .../TaxInvoiceListComponent.tsx | 48 + .../TaxInvoiceListConfigPanel.tsx | 166 ++++ .../TaxInvoiceListRenderer.tsx | 32 + .../components/tax-invoice-list/index.ts | 37 + .../components/tax-invoice-list/types.ts | 41 + 16 files changed, 3701 insertions(+), 1 deletion(-) create mode 100644 backend-node/src/controllers/taxInvoiceController.ts create mode 100644 backend-node/src/routes/taxInvoiceRoutes.ts create mode 100644 backend-node/src/services/taxInvoiceService.ts create mode 100644 frontend/components/tax-invoice/TaxInvoiceDetail.tsx create mode 100644 frontend/components/tax-invoice/TaxInvoiceForm.tsx create mode 100644 frontend/components/tax-invoice/TaxInvoiceList.tsx create mode 100644 frontend/components/tax-invoice/index.ts create mode 100644 frontend/lib/api/taxInvoice.ts create mode 100644 frontend/lib/registry/components/tax-invoice-list/TaxInvoiceListComponent.tsx create mode 100644 frontend/lib/registry/components/tax-invoice-list/TaxInvoiceListConfigPanel.tsx create mode 100644 frontend/lib/registry/components/tax-invoice-list/TaxInvoiceListRenderer.tsx create mode 100644 frontend/lib/registry/components/tax-invoice-list/index.ts create mode 100644 frontend/lib/registry/components/tax-invoice-list/types.ts diff --git a/backend-node/src/app.ts b/backend-node/src/app.ts index d36ad8c3..53a4fa4d 100644 --- a/backend-node/src/app.ts +++ b/backend-node/src/app.ts @@ -75,6 +75,7 @@ import orderRoutes from "./routes/orderRoutes"; // 수주 관리 import screenEmbeddingRoutes from "./routes/screenEmbeddingRoutes"; // 화면 임베딩 및 데이터 전달 import vehicleTripRoutes from "./routes/vehicleTripRoutes"; // 차량 운행 이력 관리 import driverRoutes from "./routes/driverRoutes"; // 공차중계 운전자 관리 +import taxInvoiceRoutes from "./routes/taxInvoiceRoutes"; // 세금계산서 관리 import { BatchSchedulerService } from "./services/batchSchedulerService"; // import collectionRoutes from "./routes/collectionRoutes"; // 임시 주석 // import batchRoutes from "./routes/batchRoutes"; // 임시 주석 @@ -245,6 +246,7 @@ app.use("/api/numbering-rules", numberingRuleRoutes); // 채번 규칙 관리 app.use("/api/entity-search", entitySearchRoutes); // 엔티티 검색 app.use("/api/orders", orderRoutes); // 수주 관리 app.use("/api/driver", driverRoutes); // 공차중계 운전자 관리 +app.use("/api/tax-invoice", taxInvoiceRoutes); // 세금계산서 관리 app.use("/api", screenEmbeddingRoutes); // 화면 임베딩 및 데이터 전달 app.use("/api/vehicle", vehicleTripRoutes); // 차량 운행 이력 관리 // app.use("/api/collections", collectionRoutes); // 임시 주석 diff --git a/backend-node/src/controllers/taxInvoiceController.ts b/backend-node/src/controllers/taxInvoiceController.ts new file mode 100644 index 00000000..588a856c --- /dev/null +++ b/backend-node/src/controllers/taxInvoiceController.ts @@ -0,0 +1,331 @@ +/** + * 세금계산서 컨트롤러 + * 세금계산서 API 엔드포인트 처리 + */ + +import { Request, Response } from "express"; +import { TaxInvoiceService } from "../services/taxInvoiceService"; +import { logger } from "../utils/logger"; + +interface AuthenticatedRequest extends Request { + user?: { + userId: string; + companyCode: string; + }; +} + +export class TaxInvoiceController { + /** + * 세금계산서 목록 조회 + * GET /api/tax-invoice + */ + static async getList(req: AuthenticatedRequest, res: Response): Promise { + try { + const companyCode = req.user?.companyCode; + if (!companyCode) { + res.status(401).json({ success: false, message: "인증 정보가 없습니다." }); + return; + } + + const { + page = "1", + pageSize = "20", + invoice_type, + invoice_status, + start_date, + end_date, + search, + buyer_name, + } = req.query; + + const result = await TaxInvoiceService.getList(companyCode, { + page: parseInt(page as string, 10), + pageSize: parseInt(pageSize as string, 10), + invoice_type: invoice_type as "sales" | "purchase" | undefined, + invoice_status: invoice_status as string | undefined, + start_date: start_date as string | undefined, + end_date: end_date as string | undefined, + search: search as string | undefined, + buyer_name: buyer_name as string | undefined, + }); + + res.json({ + success: true, + data: result.data, + pagination: { + page: result.page, + pageSize: result.pageSize, + total: result.total, + totalPages: Math.ceil(result.total / result.pageSize), + }, + }); + } catch (error: any) { + logger.error("세금계산서 목록 조회 실패:", error); + res.status(500).json({ + success: false, + message: error.message || "세금계산서 목록 조회 중 오류가 발생했습니다.", + }); + } + } + + /** + * 세금계산서 상세 조회 + * GET /api/tax-invoice/:id + */ + static async getById(req: AuthenticatedRequest, res: Response): Promise { + try { + const companyCode = req.user?.companyCode; + if (!companyCode) { + res.status(401).json({ success: false, message: "인증 정보가 없습니다." }); + return; + } + + const { id } = req.params; + const result = await TaxInvoiceService.getById(id, companyCode); + + if (!result) { + res.status(404).json({ success: false, message: "세금계산서를 찾을 수 없습니다." }); + return; + } + + res.json({ + success: true, + data: result, + }); + } catch (error: any) { + logger.error("세금계산서 상세 조회 실패:", error); + res.status(500).json({ + success: false, + message: error.message || "세금계산서 조회 중 오류가 발생했습니다.", + }); + } + } + + /** + * 세금계산서 생성 + * POST /api/tax-invoice + */ + static async create(req: AuthenticatedRequest, res: Response): Promise { + try { + const companyCode = req.user?.companyCode; + const userId = req.user?.userId; + if (!companyCode || !userId) { + res.status(401).json({ success: false, message: "인증 정보가 없습니다." }); + return; + } + + const data = req.body; + + // 필수 필드 검증 + if (!data.invoice_type) { + res.status(400).json({ success: false, message: "세금계산서 유형은 필수입니다." }); + return; + } + if (!data.invoice_date) { + res.status(400).json({ success: false, message: "작성일자는 필수입니다." }); + return; + } + if (data.supply_amount === undefined || data.supply_amount === null) { + res.status(400).json({ success: false, message: "공급가액은 필수입니다." }); + return; + } + + const result = await TaxInvoiceService.create(data, companyCode, userId); + + res.status(201).json({ + success: true, + data: result, + message: "세금계산서가 생성되었습니다.", + }); + } catch (error: any) { + logger.error("세금계산서 생성 실패:", error); + res.status(500).json({ + success: false, + message: error.message || "세금계산서 생성 중 오류가 발생했습니다.", + }); + } + } + + /** + * 세금계산서 수정 + * PUT /api/tax-invoice/:id + */ + static async update(req: AuthenticatedRequest, res: Response): Promise { + try { + const companyCode = req.user?.companyCode; + const userId = req.user?.userId; + if (!companyCode || !userId) { + res.status(401).json({ success: false, message: "인증 정보가 없습니다." }); + return; + } + + const { id } = req.params; + const data = req.body; + + const result = await TaxInvoiceService.update(id, data, companyCode, userId); + + if (!result) { + res.status(404).json({ success: false, message: "세금계산서를 찾을 수 없습니다." }); + return; + } + + res.json({ + success: true, + data: result, + message: "세금계산서가 수정되었습니다.", + }); + } catch (error: any) { + logger.error("세금계산서 수정 실패:", error); + res.status(500).json({ + success: false, + message: error.message || "세금계산서 수정 중 오류가 발생했습니다.", + }); + } + } + + /** + * 세금계산서 삭제 + * DELETE /api/tax-invoice/:id + */ + static async delete(req: AuthenticatedRequest, res: Response): Promise { + try { + const companyCode = req.user?.companyCode; + const userId = req.user?.userId; + if (!companyCode || !userId) { + res.status(401).json({ success: false, message: "인증 정보가 없습니다." }); + return; + } + + const { id } = req.params; + const result = await TaxInvoiceService.delete(id, companyCode, userId); + + if (!result) { + res.status(404).json({ success: false, message: "세금계산서를 찾을 수 없습니다." }); + return; + } + + res.json({ + success: true, + message: "세금계산서가 삭제되었습니다.", + }); + } catch (error: any) { + logger.error("세금계산서 삭제 실패:", error); + res.status(500).json({ + success: false, + message: error.message || "세금계산서 삭제 중 오류가 발생했습니다.", + }); + } + } + + /** + * 세금계산서 발행 + * POST /api/tax-invoice/:id/issue + */ + static async issue(req: AuthenticatedRequest, res: Response): Promise { + try { + const companyCode = req.user?.companyCode; + const userId = req.user?.userId; + if (!companyCode || !userId) { + res.status(401).json({ success: false, message: "인증 정보가 없습니다." }); + return; + } + + const { id } = req.params; + const result = await TaxInvoiceService.issue(id, companyCode, userId); + + if (!result) { + res.status(404).json({ + success: false, + message: "세금계산서를 찾을 수 없거나 이미 발행된 상태입니다.", + }); + return; + } + + res.json({ + success: true, + data: result, + message: "세금계산서가 발행되었습니다.", + }); + } catch (error: any) { + logger.error("세금계산서 발행 실패:", error); + res.status(500).json({ + success: false, + message: error.message || "세금계산서 발행 중 오류가 발생했습니다.", + }); + } + } + + /** + * 세금계산서 취소 + * POST /api/tax-invoice/:id/cancel + */ + static async cancel(req: AuthenticatedRequest, res: Response): Promise { + try { + const companyCode = req.user?.companyCode; + const userId = req.user?.userId; + if (!companyCode || !userId) { + res.status(401).json({ success: false, message: "인증 정보가 없습니다." }); + return; + } + + const { id } = req.params; + const { reason } = req.body; + + const result = await TaxInvoiceService.cancel(id, companyCode, userId, reason); + + if (!result) { + res.status(404).json({ + success: false, + message: "세금계산서를 찾을 수 없거나 취소할 수 없는 상태입니다.", + }); + return; + } + + res.json({ + success: true, + data: result, + message: "세금계산서가 취소되었습니다.", + }); + } catch (error: any) { + logger.error("세금계산서 취소 실패:", error); + res.status(500).json({ + success: false, + message: error.message || "세금계산서 취소 중 오류가 발생했습니다.", + }); + } + } + + /** + * 월별 통계 조회 + * GET /api/tax-invoice/stats/monthly + */ + static async getMonthlyStats(req: AuthenticatedRequest, res: Response): Promise { + try { + const companyCode = req.user?.companyCode; + if (!companyCode) { + res.status(401).json({ success: false, message: "인증 정보가 없습니다." }); + return; + } + + const { year, month } = req.query; + const now = new Date(); + const targetYear = year ? parseInt(year as string, 10) : now.getFullYear(); + const targetMonth = month ? parseInt(month as string, 10) : now.getMonth() + 1; + + const result = await TaxInvoiceService.getMonthlyStats(companyCode, targetYear, targetMonth); + + res.json({ + success: true, + data: result, + period: { year: targetYear, month: targetMonth }, + }); + } catch (error: any) { + logger.error("월별 통계 조회 실패:", error); + res.status(500).json({ + success: false, + message: error.message || "통계 조회 중 오류가 발생했습니다.", + }); + } + } +} + diff --git a/backend-node/src/middleware/errorHandler.ts b/backend-node/src/middleware/errorHandler.ts index 611e5d08..54d8f0a2 100644 --- a/backend-node/src/middleware/errorHandler.ts +++ b/backend-node/src/middleware/errorHandler.ts @@ -28,6 +28,16 @@ export const errorHandler = ( // PostgreSQL 에러 처리 (pg 라이브러리) if ((err as any).code) { const pgError = err as any; + // 원본 에러 메시지 로깅 (디버깅용) + console.error("🔴 PostgreSQL Error:", { + code: pgError.code, + message: pgError.message, + detail: pgError.detail, + hint: pgError.hint, + table: pgError.table, + column: pgError.column, + constraint: pgError.constraint, + }); // PostgreSQL 에러 코드 참조: https://www.postgresql.org/docs/current/errcodes-appendix.html if (pgError.code === "23505") { // unique_violation @@ -42,7 +52,7 @@ export const errorHandler = ( // 기타 무결성 제약 조건 위반 error = new AppError("데이터 무결성 제약 조건 위반입니다.", 400); } else { - error = new AppError("데이터베이스 오류가 발생했습니다.", 500); + error = new AppError(`데이터베이스 오류: ${pgError.message}`, 500); } } diff --git a/backend-node/src/routes/taxInvoiceRoutes.ts b/backend-node/src/routes/taxInvoiceRoutes.ts new file mode 100644 index 00000000..aa663faf --- /dev/null +++ b/backend-node/src/routes/taxInvoiceRoutes.ts @@ -0,0 +1,40 @@ +/** + * 세금계산서 라우터 + * /api/tax-invoice 경로 처리 + */ + +import { Router } from "express"; +import { TaxInvoiceController } from "../controllers/taxInvoiceController"; +import { authenticateToken } from "../middleware/authMiddleware"; + +const router = Router(); + +// 모든 라우트에 인증 미들웨어 적용 +router.use(authenticateToken); + +// 목록 조회 +router.get("/", TaxInvoiceController.getList); + +// 월별 통계 (상세 조회보다 먼저 정의해야 함) +router.get("/stats/monthly", TaxInvoiceController.getMonthlyStats); + +// 상세 조회 +router.get("/:id", TaxInvoiceController.getById); + +// 생성 +router.post("/", TaxInvoiceController.create); + +// 수정 +router.put("/:id", TaxInvoiceController.update); + +// 삭제 +router.delete("/:id", TaxInvoiceController.delete); + +// 발행 +router.post("/:id/issue", TaxInvoiceController.issue); + +// 취소 +router.post("/:id/cancel", TaxInvoiceController.cancel); + +export default router; + diff --git a/backend-node/src/services/taxInvoiceService.ts b/backend-node/src/services/taxInvoiceService.ts new file mode 100644 index 00000000..63e94d5e --- /dev/null +++ b/backend-node/src/services/taxInvoiceService.ts @@ -0,0 +1,612 @@ +/** + * 세금계산서 서비스 + * 세금계산서 CRUD 및 비즈니스 로직 처리 + */ + +import { query, transaction } from "../database/db"; +import { logger } from "../utils/logger"; + +// 세금계산서 타입 정의 +export interface TaxInvoice { + id: string; + company_code: string; + invoice_number: string; + invoice_type: "sales" | "purchase"; // 매출/매입 + invoice_status: "draft" | "issued" | "sent" | "cancelled"; + + // 공급자 정보 + supplier_business_no: string; + supplier_name: string; + supplier_ceo_name: string; + supplier_address: string; + supplier_business_type: string; + supplier_business_item: string; + + // 공급받는자 정보 + buyer_business_no: string; + buyer_name: string; + buyer_ceo_name: string; + buyer_address: string; + buyer_email: string; + + // 금액 정보 + supply_amount: number; + tax_amount: number; + total_amount: number; + + // 날짜 정보 + invoice_date: string; + issue_date: string | null; + + // 기타 + remarks: string; + order_id: string | null; + customer_id: string | null; + + // 첨부파일 (JSON 배열로 저장) + attachments: TaxInvoiceAttachment[] | null; + + created_date: string; + updated_date: string; + writer: string; +} + +// 첨부파일 타입 +export interface TaxInvoiceAttachment { + id: string; + file_name: string; + file_path: string; + file_size: number; + file_type: string; + uploaded_at: string; + uploaded_by: string; +} + +export interface TaxInvoiceItem { + id: string; + tax_invoice_id: string; + company_code: string; + item_seq: number; + item_date: string; + item_name: string; + item_spec: string; + quantity: number; + unit_price: number; + supply_amount: number; + tax_amount: number; + remarks: string; +} + +export interface CreateTaxInvoiceDto { + invoice_type: "sales" | "purchase"; + supplier_business_no?: string; + supplier_name?: string; + supplier_ceo_name?: string; + supplier_address?: string; + supplier_business_type?: string; + supplier_business_item?: string; + buyer_business_no?: string; + buyer_name?: string; + buyer_ceo_name?: string; + buyer_address?: string; + buyer_email?: string; + supply_amount: number; + tax_amount: number; + total_amount: number; + invoice_date: string; + remarks?: string; + order_id?: string; + customer_id?: string; + items?: CreateTaxInvoiceItemDto[]; + attachments?: TaxInvoiceAttachment[]; // 첨부파일 +} + +export interface CreateTaxInvoiceItemDto { + item_date?: string; + item_name: string; + item_spec?: string; + quantity: number; + unit_price: number; + supply_amount: number; + tax_amount: number; + remarks?: string; +} + +export interface TaxInvoiceListParams { + page?: number; + pageSize?: number; + invoice_type?: "sales" | "purchase"; + invoice_status?: string; + start_date?: string; + end_date?: string; + search?: string; + buyer_name?: string; +} + +export class TaxInvoiceService { + /** + * 세금계산서 번호 채번 + * 형식: YYYYMM-NNNNN (예: 202512-00001) + */ + static async generateInvoiceNumber(companyCode: string): Promise { + const now = new Date(); + const yearMonth = `${now.getFullYear()}${String(now.getMonth() + 1).padStart(2, "0")}`; + const prefix = `${yearMonth}-`; + + // 해당 월의 마지막 번호 조회 + const result = await query<{ max_num: string }>( + `SELECT invoice_number as max_num + FROM tax_invoice + WHERE company_code = $1 + AND invoice_number LIKE $2 + ORDER BY invoice_number DESC + LIMIT 1`, + [companyCode, `${prefix}%`] + ); + + let nextNum = 1; + if (result.length > 0 && result[0].max_num) { + const lastNum = parseInt(result[0].max_num.split("-")[1], 10); + nextNum = lastNum + 1; + } + + return `${prefix}${String(nextNum).padStart(5, "0")}`; + } + + /** + * 세금계산서 목록 조회 + */ + static async getList( + companyCode: string, + params: TaxInvoiceListParams + ): Promise<{ data: TaxInvoice[]; total: number; page: number; pageSize: number }> { + const { + page = 1, + pageSize = 20, + invoice_type, + invoice_status, + start_date, + end_date, + search, + buyer_name, + } = params; + + const offset = (page - 1) * pageSize; + const conditions: string[] = ["company_code = $1"]; + const values: any[] = [companyCode]; + let paramIndex = 2; + + if (invoice_type) { + conditions.push(`invoice_type = $${paramIndex}`); + values.push(invoice_type); + paramIndex++; + } + + if (invoice_status) { + conditions.push(`invoice_status = $${paramIndex}`); + values.push(invoice_status); + paramIndex++; + } + + if (start_date) { + conditions.push(`invoice_date >= $${paramIndex}`); + values.push(start_date); + paramIndex++; + } + + if (end_date) { + conditions.push(`invoice_date <= $${paramIndex}`); + values.push(end_date); + paramIndex++; + } + + if (search) { + conditions.push( + `(invoice_number ILIKE $${paramIndex} OR buyer_name ILIKE $${paramIndex} OR supplier_name ILIKE $${paramIndex})` + ); + values.push(`%${search}%`); + paramIndex++; + } + + if (buyer_name) { + conditions.push(`buyer_name ILIKE $${paramIndex}`); + values.push(`%${buyer_name}%`); + paramIndex++; + } + + const whereClause = conditions.join(" AND "); + + // 전체 개수 조회 + const countResult = await query<{ count: string }>( + `SELECT COUNT(*) as count FROM tax_invoice WHERE ${whereClause}`, + values + ); + const total = parseInt(countResult[0]?.count || "0", 10); + + // 데이터 조회 + values.push(pageSize, offset); + const data = await query( + `SELECT * FROM tax_invoice + WHERE ${whereClause} + ORDER BY created_date DESC + LIMIT $${paramIndex} OFFSET $${paramIndex + 1}`, + values + ); + + return { data, total, page, pageSize }; + } + + /** + * 세금계산서 상세 조회 (품목 포함) + */ + static async getById( + id: string, + companyCode: string + ): Promise<{ invoice: TaxInvoice; items: TaxInvoiceItem[] } | null> { + const invoiceResult = await query( + `SELECT * FROM tax_invoice WHERE id = $1 AND company_code = $2`, + [id, companyCode] + ); + + if (invoiceResult.length === 0) { + return null; + } + + const items = await query( + `SELECT * FROM tax_invoice_item + WHERE tax_invoice_id = $1 AND company_code = $2 + ORDER BY item_seq`, + [id, companyCode] + ); + + return { invoice: invoiceResult[0], items }; + } + + /** + * 세금계산서 생성 + */ + static async create( + data: CreateTaxInvoiceDto, + companyCode: string, + userId: string + ): Promise { + return await transaction(async (client) => { + // 세금계산서 번호 채번 + const invoiceNumber = await this.generateInvoiceNumber(companyCode); + + // 세금계산서 생성 + const invoiceResult = await client.query( + `INSERT INTO tax_invoice ( + company_code, invoice_number, invoice_type, invoice_status, + supplier_business_no, supplier_name, supplier_ceo_name, supplier_address, + supplier_business_type, supplier_business_item, + buyer_business_no, buyer_name, buyer_ceo_name, buyer_address, buyer_email, + supply_amount, tax_amount, total_amount, invoice_date, + remarks, order_id, customer_id, attachments, writer + ) VALUES ( + $1, $2, $3, 'draft', + $4, $5, $6, $7, $8, $9, + $10, $11, $12, $13, $14, + $15, $16, $17, $18, + $19, $20, $21, $22, $23 + ) RETURNING *`, + [ + companyCode, + invoiceNumber, + data.invoice_type, + data.supplier_business_no || null, + data.supplier_name || null, + data.supplier_ceo_name || null, + data.supplier_address || null, + data.supplier_business_type || null, + data.supplier_business_item || null, + data.buyer_business_no || null, + data.buyer_name || null, + data.buyer_ceo_name || null, + data.buyer_address || null, + data.buyer_email || null, + data.supply_amount, + data.tax_amount, + data.total_amount, + data.invoice_date, + data.remarks || null, + data.order_id || null, + data.customer_id || null, + data.attachments ? JSON.stringify(data.attachments) : null, + userId, + ] + ); + + const invoice = invoiceResult.rows[0]; + + // 품목 생성 + if (data.items && data.items.length > 0) { + for (let i = 0; i < data.items.length; i++) { + const item = data.items[i]; + await client.query( + `INSERT INTO tax_invoice_item ( + tax_invoice_id, company_code, item_seq, + item_date, item_name, item_spec, quantity, unit_price, + supply_amount, tax_amount, remarks + ) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11)`, + [ + invoice.id, + companyCode, + i + 1, + item.item_date || null, + item.item_name, + item.item_spec || null, + item.quantity, + item.unit_price, + item.supply_amount, + item.tax_amount, + item.remarks || null, + ] + ); + } + } + + logger.info("세금계산서 생성 완료", { + invoiceId: invoice.id, + invoiceNumber, + companyCode, + userId, + }); + + return invoice; + }); + } + + /** + * 세금계산서 수정 + */ + static async update( + id: string, + data: Partial, + companyCode: string, + userId: string + ): Promise { + return await transaction(async (client) => { + // 기존 세금계산서 확인 + const existing = await client.query( + `SELECT * FROM tax_invoice WHERE id = $1 AND company_code = $2`, + [id, companyCode] + ); + + if (existing.rows.length === 0) { + return null; + } + + // 발행된 세금계산서는 수정 불가 + if (existing.rows[0].invoice_status !== "draft") { + throw new Error("발행된 세금계산서는 수정할 수 없습니다."); + } + + // 세금계산서 수정 + const updateResult = await client.query( + `UPDATE tax_invoice SET + supplier_business_no = COALESCE($3, supplier_business_no), + supplier_name = COALESCE($4, supplier_name), + supplier_ceo_name = COALESCE($5, supplier_ceo_name), + supplier_address = COALESCE($6, supplier_address), + supplier_business_type = COALESCE($7, supplier_business_type), + supplier_business_item = COALESCE($8, supplier_business_item), + buyer_business_no = COALESCE($9, buyer_business_no), + buyer_name = COALESCE($10, buyer_name), + buyer_ceo_name = COALESCE($11, buyer_ceo_name), + buyer_address = COALESCE($12, buyer_address), + buyer_email = COALESCE($13, buyer_email), + supply_amount = COALESCE($14, supply_amount), + tax_amount = COALESCE($15, tax_amount), + total_amount = COALESCE($16, total_amount), + invoice_date = COALESCE($17, invoice_date), + remarks = COALESCE($18, remarks), + attachments = $19, + updated_date = NOW() + WHERE id = $1 AND company_code = $2 + RETURNING *`, + [ + id, + companyCode, + data.supplier_business_no, + data.supplier_name, + data.supplier_ceo_name, + data.supplier_address, + data.supplier_business_type, + data.supplier_business_item, + data.buyer_business_no, + data.buyer_name, + data.buyer_ceo_name, + data.buyer_address, + data.buyer_email, + data.supply_amount, + data.tax_amount, + data.total_amount, + data.invoice_date, + data.remarks, + data.attachments ? JSON.stringify(data.attachments) : null, + ] + ); + + // 품목 업데이트 (기존 삭제 후 재생성) + if (data.items) { + await client.query( + `DELETE FROM tax_invoice_item WHERE tax_invoice_id = $1 AND company_code = $2`, + [id, companyCode] + ); + + for (let i = 0; i < data.items.length; i++) { + const item = data.items[i]; + await client.query( + `INSERT INTO tax_invoice_item ( + tax_invoice_id, company_code, item_seq, + item_date, item_name, item_spec, quantity, unit_price, + supply_amount, tax_amount, remarks + ) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11)`, + [ + id, + companyCode, + i + 1, + item.item_date || null, + item.item_name, + item.item_spec || null, + item.quantity, + item.unit_price, + item.supply_amount, + item.tax_amount, + item.remarks || null, + ] + ); + } + } + + logger.info("세금계산서 수정 완료", { invoiceId: id, companyCode, userId }); + + return updateResult.rows[0]; + }); + } + + /** + * 세금계산서 삭제 + */ + static async delete(id: string, companyCode: string, userId: string): Promise { + return await transaction(async (client) => { + // 기존 세금계산서 확인 + const existing = await client.query( + `SELECT * FROM tax_invoice WHERE id = $1 AND company_code = $2`, + [id, companyCode] + ); + + if (existing.rows.length === 0) { + return false; + } + + // 발행된 세금계산서는 삭제 불가 + if (existing.rows[0].invoice_status !== "draft") { + throw new Error("발행된 세금계산서는 삭제할 수 없습니다."); + } + + // 품목 삭제 + await client.query( + `DELETE FROM tax_invoice_item WHERE tax_invoice_id = $1 AND company_code = $2`, + [id, companyCode] + ); + + // 세금계산서 삭제 + await client.query(`DELETE FROM tax_invoice WHERE id = $1 AND company_code = $2`, [ + id, + companyCode, + ]); + + logger.info("세금계산서 삭제 완료", { invoiceId: id, companyCode, userId }); + + return true; + }); + } + + /** + * 세금계산서 발행 (상태 변경) + */ + static async issue(id: string, companyCode: string, userId: string): Promise { + const result = await query( + `UPDATE tax_invoice SET + invoice_status = 'issued', + issue_date = NOW(), + updated_date = NOW() + WHERE id = $1 AND company_code = $2 AND invoice_status = 'draft' + RETURNING *`, + [id, companyCode] + ); + + if (result.length === 0) { + return null; + } + + logger.info("세금계산서 발행 완료", { invoiceId: id, companyCode, userId }); + + return result[0]; + } + + /** + * 세금계산서 취소 + */ + static async cancel( + id: string, + companyCode: string, + userId: string, + reason?: string + ): Promise { + const result = await query( + `UPDATE tax_invoice SET + invoice_status = 'cancelled', + remarks = CASE WHEN $3 IS NOT NULL THEN remarks || ' [취소사유: ' || $3 || ']' ELSE remarks END, + updated_date = NOW() + WHERE id = $1 AND company_code = $2 AND invoice_status IN ('draft', 'issued') + RETURNING *`, + [id, companyCode, reason || null] + ); + + if (result.length === 0) { + return null; + } + + logger.info("세금계산서 취소 완료", { invoiceId: id, companyCode, userId, reason }); + + return result[0]; + } + + /** + * 월별 통계 조회 + */ + static async getMonthlyStats( + companyCode: string, + year: number, + month: number + ): Promise<{ + sales: { count: number; supply_amount: number; tax_amount: number; total_amount: number }; + purchase: { count: number; supply_amount: number; tax_amount: number; total_amount: number }; + }> { + const startDate = `${year}-${String(month).padStart(2, "0")}-01`; + const endDate = new Date(year, month, 0).toISOString().split("T")[0]; // 해당 월 마지막 날 + + const result = await query<{ + invoice_type: string; + count: string; + supply_amount: string; + tax_amount: string; + total_amount: string; + }>( + `SELECT + invoice_type, + COUNT(*) as count, + COALESCE(SUM(supply_amount), 0) as supply_amount, + COALESCE(SUM(tax_amount), 0) as tax_amount, + COALESCE(SUM(total_amount), 0) as total_amount + FROM tax_invoice + WHERE company_code = $1 + AND invoice_date >= $2 + AND invoice_date <= $3 + AND invoice_status != 'cancelled' + GROUP BY invoice_type`, + [companyCode, startDate, endDate] + ); + + const stats = { + sales: { count: 0, supply_amount: 0, tax_amount: 0, total_amount: 0 }, + purchase: { count: 0, supply_amount: 0, tax_amount: 0, total_amount: 0 }, + }; + + for (const row of result) { + const type = row.invoice_type as "sales" | "purchase"; + stats[type] = { + count: parseInt(row.count, 10), + supply_amount: parseFloat(row.supply_amount), + tax_amount: parseFloat(row.tax_amount), + total_amount: parseFloat(row.total_amount), + }; + } + + return stats; + } +} + diff --git a/frontend/components/tax-invoice/TaxInvoiceDetail.tsx b/frontend/components/tax-invoice/TaxInvoiceDetail.tsx new file mode 100644 index 00000000..9fe45e91 --- /dev/null +++ b/frontend/components/tax-invoice/TaxInvoiceDetail.tsx @@ -0,0 +1,621 @@ +"use client"; + +/** + * 세금계산서 상세 보기 컴포넌트 + * PDF 출력 및 첨부파일 다운로드 기능 포함 + */ + +import { useState, useEffect, useRef } from "react"; +import { format } from "date-fns"; +import { ko } from "date-fns/locale"; +import { + Printer, + Download, + FileText, + Image, + File, + Loader2, +} from "lucide-react"; + +import { Button } from "@/components/ui/button"; +import { + Dialog, + DialogContent, + DialogHeader, + DialogTitle, +} from "@/components/ui/dialog"; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from "@/components/ui/table"; +import { Badge } from "@/components/ui/badge"; +import { ScrollArea } from "@/components/ui/scroll-area"; +import { Separator } from "@/components/ui/separator"; +import { toast } from "sonner"; + +import { + getTaxInvoiceById, + TaxInvoice, + TaxInvoiceItem, + TaxInvoiceAttachment, +} from "@/lib/api/taxInvoice"; +import { apiClient } from "@/lib/api/client"; + +interface TaxInvoiceDetailProps { + open: boolean; + onClose: () => void; + invoiceId: string; +} + +// 상태 라벨 +const statusLabels: Record = { + draft: "임시저장", + issued: "발행완료", + sent: "전송완료", + cancelled: "취소됨", +}; + +// 상태 색상 +const statusColors: Record = { + draft: "bg-gray-100 text-gray-800", + issued: "bg-green-100 text-green-800", + sent: "bg-blue-100 text-blue-800", + cancelled: "bg-red-100 text-red-800", +}; + +export function TaxInvoiceDetail({ open, onClose, invoiceId }: TaxInvoiceDetailProps) { + const [invoice, setInvoice] = useState(null); + const [items, setItems] = useState([]); + const [loading, setLoading] = useState(true); + const [pdfLoading, setPdfLoading] = useState(false); + const printRef = useRef(null); + + // 데이터 로드 + useEffect(() => { + if (open && invoiceId) { + loadData(); + } + }, [open, invoiceId]); + + const loadData = async () => { + setLoading(true); + try { + const response = await getTaxInvoiceById(invoiceId); + if (response.success) { + setInvoice(response.data.invoice); + setItems(response.data.items); + } + } catch (error: any) { + toast.error("데이터 로드 실패", { description: error.message }); + } finally { + setLoading(false); + } + }; + + // 금액 포맷 + const formatAmount = (amount: number) => { + return new Intl.NumberFormat("ko-KR").format(amount); + }; + + // 날짜 포맷 + const formatDate = (dateString: string | null) => { + if (!dateString) return "-"; + try { + return format(new Date(dateString), "yyyy년 MM월 dd일", { locale: ko }); + } catch { + return dateString; + } + }; + + // 파일 미리보기 URL 생성 (objid 기반) - 이미지용 + const getFilePreviewUrl = (attachment: TaxInvoiceAttachment) => { + // objid가 숫자형이면 API를 통해 미리보기 + if (attachment.id && !attachment.id.includes("-")) { + // apiClient의 baseURL 사용 + const baseURL = apiClient.defaults.baseURL || ""; + return `${baseURL}/files/preview/${attachment.id}`; + } + return attachment.file_path; + }; + + // 공통 인쇄용 HTML 생성 함수 + const generatePrintHtml = (autoPrint: boolean = false) => { + if (!invoice) return ""; + + const invoiceTypeText = invoice.invoice_type === "sales" ? "매출" : "매입"; + const itemsHtml = items.map((item, index) => ` + + ${index + 1} + ${item.item_date?.split("T")[0] || "-"} + ${item.item_name} + ${item.item_spec || "-"} + ${item.quantity} + ${formatAmount(item.unit_price)} + ${formatAmount(item.supply_amount)} + ${formatAmount(item.tax_amount)} + + `).join(""); + + return ` + + + + 세금계산서_${invoice.invoice_number} + + + +
+
+

세금계산서 (${invoiceTypeText})

+
계산서번호: ${invoice.invoice_number}
+ ${statusLabels[invoice.invoice_status]} +
+ +
+
+

공급자

+
사업자번호${invoice.supplier_business_no || "-"}
+
상호${invoice.supplier_name || "-"}
+
대표자${invoice.supplier_ceo_name || "-"}
+
업태/종목${invoice.supplier_business_type || "-"} / ${invoice.supplier_business_item || "-"}
+
주소${invoice.supplier_address || "-"}
+
+
+

공급받는자

+
사업자번호${invoice.buyer_business_no || "-"}
+
상호${invoice.buyer_name || "-"}
+
대표자${invoice.buyer_ceo_name || "-"}
+
이메일${invoice.buyer_email || "-"}
+
주소${invoice.buyer_address || "-"}
+
+
+ +
+

품목 내역

+ + + + + + + + + + + + + + + ${itemsHtml || ''} + +
No일자품목명규격수량단가공급가액세액
품목 내역이 없습니다.
+
+ +
+
+
공급가액${formatAmount(invoice.supply_amount)}원
+
세액${formatAmount(invoice.tax_amount)}원
+
합계금액${formatAmount(invoice.total_amount)}원
+
+
+ + ${invoice.remarks ? `
비고: ${invoice.remarks}
` : ""} + + ${invoice.attachments && invoice.attachments.length > 0 ? ` +
+

첨부파일 (${invoice.attachments.length}개)

+
    + ${invoice.attachments.map(file => `
  • 📄 ${file.file_name}
  • `).join("")} +
+
+ ` : ""} + + +
+ + ${autoPrint ? `` : ""} + + + `; + }; + + // 인쇄 + const handlePrint = () => { + if (!invoice) return; + + const printWindow = window.open("", "_blank"); + if (!printWindow) { + toast.error("팝업이 차단되었습니다. 팝업 차단을 해제해주세요."); + return; + } + + printWindow.document.write(generatePrintHtml(true)); + printWindow.document.close(); + }; + + // PDF 다운로드 (인쇄 다이얼로그 사용) + const handleDownloadPdf = async () => { + if (!invoice) return; + + setPdfLoading(true); + try { + const printWindow = window.open("", "_blank"); + if (!printWindow) { + toast.error("팝업이 차단되었습니다. 팝업 차단을 해제해주세요."); + return; + } + + printWindow.document.write(generatePrintHtml(true)); + printWindow.document.close(); + toast.success("PDF 인쇄 창이 열렸습니다. 'PDF로 저장'을 선택하세요."); + } catch (error: any) { + console.error("PDF 생성 오류:", error); + toast.error("PDF 생성 실패", { description: error.message }); + } finally { + setPdfLoading(false); + } + }; + + // 파일 아이콘 + const getFileIcon = (fileType: string) => { + if (fileType.startsWith("image/")) return ; + if (fileType.includes("pdf")) return ; + return ; + }; + + // 파일 다운로드 (인증 토큰 포함) + const handleDownload = async (attachment: TaxInvoiceAttachment) => { + try { + // objid가 숫자형이면 API를 통해 다운로드 + if (attachment.id && !attachment.id.includes("-")) { + const response = await apiClient.get(`/files/download/${attachment.id}`, { + responseType: "blob", + }); + + // Blob으로 다운로드 + const blob = new Blob([response.data]); + const url = window.URL.createObjectURL(blob); + const link = document.createElement("a"); + link.href = url; + link.download = attachment.file_name; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + window.URL.revokeObjectURL(url); + } else { + // 직접 경로로 다운로드 + window.open(attachment.file_path, "_blank"); + } + } catch (error: any) { + toast.error("파일 다운로드 실패", { description: error.message }); + } + }; + + if (loading) { + return ( + !o && onClose()}> + + + 세금계산서 상세 + +
+ 로딩 중... +
+
+
+ ); + } + + if (!invoice) { + return null; + } + + return ( + !o && onClose()}> + + + 세금계산서 상세 +
+ + +
+
+ + +
+
+ {/* 헤더 */} +
+

+ {invoice.invoice_type === "sales" ? "세금계산서 (매출)" : "세금계산서 (매입)"} +

+

+ 계산서번호: {invoice.invoice_number} +

+ + {statusLabels[invoice.invoice_status]} + +
+ + {/* 공급자 / 공급받는자 정보 */} +
+ {/* 공급자 */} +
+

공급자

+
+
+ 사업자번호 + {invoice.supplier_business_no || "-"} +
+
+ 상호 + {invoice.supplier_name || "-"} +
+
+ 대표자 + {invoice.supplier_ceo_name || "-"} +
+
+ 업태/종목 + + {invoice.supplier_business_type || "-"} / {invoice.supplier_business_item || "-"} + +
+
+ 주소 + {invoice.supplier_address || "-"} +
+
+
+ + {/* 공급받는자 */} +
+

공급받는자

+
+
+ 사업자번호 + {invoice.buyer_business_no || "-"} +
+
+ 상호 + {invoice.buyer_name || "-"} +
+
+ 대표자 + {invoice.buyer_ceo_name || "-"} +
+
+ 이메일 + {invoice.buyer_email || "-"} +
+
+ 주소 + {invoice.buyer_address || "-"} +
+
+
+
+ + {/* 품목 내역 */} +
+

품목 내역

+ + + + No + 일자 + 품목명 + 규격 + 수량 + 단가 + 공급가액 + 세액 + + + + {items.length > 0 ? ( + items.map((item, index) => ( + + {index + 1} + {item.item_date?.split("T")[0] || "-"} + {item.item_name} + {item.item_spec || "-"} + {item.quantity} + + {formatAmount(item.unit_price)} + + + {formatAmount(item.supply_amount)} + + + {formatAmount(item.tax_amount)} + + + )) + ) : ( + + + 품목 내역이 없습니다. + + + )} + +
+
+ + {/* 합계 */} +
+
+
+ 공급가액 + {formatAmount(invoice.supply_amount)}원 +
+
+ 세액 + {formatAmount(invoice.tax_amount)}원 +
+ +
+ 합계금액 + + {formatAmount(invoice.total_amount)}원 + +
+
+
+ + {/* 비고 */} + {invoice.remarks && ( +
+

비고

+

+ {invoice.remarks} +

+
+ )} + + {/* 날짜 정보 */} +
+ 작성일: {formatDate(invoice.invoice_date)} + {invoice.issue_date && 발행일: {formatDate(invoice.issue_date)}} +
+
+ + {/* 첨부파일 */} + {invoice.attachments && invoice.attachments.length > 0 && ( +
+ +

첨부파일 ({invoice.attachments.length}개)

+ + {/* 이미지 미리보기 */} + {invoice.attachments.some((f) => f.file_type?.startsWith("image/")) && ( +
+ {invoice.attachments + .filter((f) => f.file_type?.startsWith("image/")) + .map((file) => ( +
+ {file.file_name} { + (e.target as HTMLImageElement).style.display = "none"; + }} + /> +
+
+

{file.file_name}

+ +
+
+
+ ))} +
+ )} + + {/* 기타 파일 목록 */} + {invoice.attachments.some((f) => !f.file_type?.startsWith("image/")) && ( +
+ {invoice.attachments + .filter((f) => !f.file_type?.startsWith("image/")) + .map((file) => ( +
+
+ {getFileIcon(file.file_type)} + {file.file_name} +
+ +
+ ))} +
+ )} +
+ )} +
+
+
+
+ ); +} + diff --git a/frontend/components/tax-invoice/TaxInvoiceForm.tsx b/frontend/components/tax-invoice/TaxInvoiceForm.tsx new file mode 100644 index 00000000..08c3fb37 --- /dev/null +++ b/frontend/components/tax-invoice/TaxInvoiceForm.tsx @@ -0,0 +1,706 @@ +"use client"; + +/** + * 세금계산서 작성/수정 폼 + * 파일 첨부 기능 포함 + */ + +import { useState, useEffect, useCallback } from "react"; +import { format } from "date-fns"; +import { + Plus, + Trash2, + Upload, + X, + FileText, + Image, + File, + Paperclip, +} from "lucide-react"; + +import { Button } from "@/components/ui/button"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; +import { Textarea } from "@/components/ui/textarea"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import { + Dialog, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle, +} from "@/components/ui/dialog"; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from "@/components/ui/table"; +import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; +import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; +import { ScrollArea } from "@/components/ui/scroll-area"; +import { Badge } from "@/components/ui/badge"; +import { toast } from "sonner"; + +import { + createTaxInvoice, + updateTaxInvoice, + getTaxInvoiceById, + TaxInvoice, + TaxInvoiceAttachment, + CreateTaxInvoiceDto, + CreateTaxInvoiceItemDto, +} from "@/lib/api/taxInvoice"; +import { apiClient } from "@/lib/api/client"; + +interface TaxInvoiceFormProps { + open: boolean; + onClose: () => void; + onSave: () => void; + invoice?: TaxInvoice | null; +} + +// 품목 초기값 +const emptyItem: CreateTaxInvoiceItemDto = { + item_date: format(new Date(), "yyyy-MM-dd"), + item_name: "", + item_spec: "", + quantity: 1, + unit_price: 0, + supply_amount: 0, + tax_amount: 0, + remarks: "", +}; + +export function TaxInvoiceForm({ open, onClose, onSave, invoice }: TaxInvoiceFormProps) { + // 폼 상태 + const [formData, setFormData] = useState({ + invoice_type: "sales", + invoice_date: format(new Date(), "yyyy-MM-dd"), + supply_amount: 0, + tax_amount: 0, + total_amount: 0, + items: [{ ...emptyItem }], + }); + + // 첨부파일 상태 + const [attachments, setAttachments] = useState([]); + const [uploading, setUploading] = useState(false); + + const [saving, setSaving] = useState(false); + const [activeTab, setActiveTab] = useState("basic"); + + // 수정 모드일 때 데이터 로드 + useEffect(() => { + if (invoice) { + loadInvoiceData(invoice.id); + } else { + // 새 세금계산서 + setFormData({ + invoice_type: "sales", + invoice_date: format(new Date(), "yyyy-MM-dd"), + supply_amount: 0, + tax_amount: 0, + total_amount: 0, + items: [{ ...emptyItem }], + }); + setAttachments([]); + } + }, [invoice]); + + // 세금계산서 데이터 로드 + const loadInvoiceData = async (id: string) => { + try { + const response = await getTaxInvoiceById(id); + if (response.success) { + const { invoice: inv, items } = response.data; + setFormData({ + invoice_type: inv.invoice_type, + invoice_date: inv.invoice_date?.split("T")[0] || "", + supplier_business_no: inv.supplier_business_no, + supplier_name: inv.supplier_name, + supplier_ceo_name: inv.supplier_ceo_name, + supplier_address: inv.supplier_address, + supplier_business_type: inv.supplier_business_type, + supplier_business_item: inv.supplier_business_item, + buyer_business_no: inv.buyer_business_no, + buyer_name: inv.buyer_name, + buyer_ceo_name: inv.buyer_ceo_name, + buyer_address: inv.buyer_address, + buyer_email: inv.buyer_email, + supply_amount: inv.supply_amount, + tax_amount: inv.tax_amount, + total_amount: inv.total_amount, + remarks: inv.remarks, + items: + items.length > 0 + ? items.map((item) => ({ + item_date: item.item_date?.split("T")[0] || "", + item_name: item.item_name, + item_spec: item.item_spec, + quantity: item.quantity, + unit_price: item.unit_price, + supply_amount: item.supply_amount, + tax_amount: item.tax_amount, + remarks: item.remarks, + })) + : [{ ...emptyItem }], + }); + setAttachments(inv.attachments || []); + } + } catch (error: any) { + toast.error("데이터 로드 실패", { description: error.message }); + } + }; + + // 필드 변경 + const handleChange = (field: keyof CreateTaxInvoiceDto, value: any) => { + setFormData((prev) => ({ ...prev, [field]: value })); + }; + + // 품목 변경 + const handleItemChange = (index: number, field: keyof CreateTaxInvoiceItemDto, value: any) => { + setFormData((prev) => { + const items = [...(prev.items || [])]; + items[index] = { ...items[index], [field]: value }; + + // 공급가액 자동 계산 + if (field === "quantity" || field === "unit_price") { + const qty = field === "quantity" ? value : items[index].quantity; + const price = field === "unit_price" ? value : items[index].unit_price; + items[index].supply_amount = qty * price; + items[index].tax_amount = Math.round(items[index].supply_amount * 0.1); + } + + // 총액 재계산 + const totalSupply = items.reduce((sum, item) => sum + (item.supply_amount || 0), 0); + const totalTax = items.reduce((sum, item) => sum + (item.tax_amount || 0), 0); + + return { + ...prev, + items, + supply_amount: totalSupply, + tax_amount: totalTax, + total_amount: totalSupply + totalTax, + }; + }); + }; + + // 품목 추가 + const handleAddItem = () => { + setFormData((prev) => ({ + ...prev, + items: [...(prev.items || []), { ...emptyItem }], + })); + }; + + // 품목 삭제 + const handleRemoveItem = (index: number) => { + setFormData((prev) => { + const items = (prev.items || []).filter((_, i) => i !== index); + const totalSupply = items.reduce((sum, item) => sum + (item.supply_amount || 0), 0); + const totalTax = items.reduce((sum, item) => sum + (item.tax_amount || 0), 0); + + return { + ...prev, + items: items.length > 0 ? items : [{ ...emptyItem }], + supply_amount: totalSupply, + tax_amount: totalTax, + total_amount: totalSupply + totalTax, + }; + }); + }; + + // 파일 업로드 + const handleFileUpload = async (e: React.ChangeEvent) => { + const files = e.target.files; + if (!files || files.length === 0) return; + + setUploading(true); + try { + for (const file of Array.from(files)) { + const formDataUpload = new FormData(); + formDataUpload.append("files", file); // 백엔드 Multer 필드명: "files" + formDataUpload.append("category", "tax-invoice"); + + const response = await apiClient.post("/files/upload", formDataUpload, { + headers: { "Content-Type": "multipart/form-data" }, + }); + + if (response.data.success && response.data.files?.length > 0) { + const uploadedFile = response.data.files[0]; + const newAttachment: TaxInvoiceAttachment = { + id: uploadedFile.objid || `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`, + file_name: uploadedFile.realFileName || file.name, + file_path: uploadedFile.filePath, + file_size: uploadedFile.fileSize || file.size, + file_type: file.type, + uploaded_at: new Date().toISOString(), + uploaded_by: "", + }; + setAttachments((prev) => [...prev, newAttachment]); + toast.success(`'${file.name}' 업로드 완료`); + } + } + } catch (error: any) { + toast.error("파일 업로드 실패", { description: error.message }); + } finally { + setUploading(false); + // input 초기화 + e.target.value = ""; + } + }; + + // 첨부파일 삭제 + const handleRemoveAttachment = (id: string) => { + setAttachments((prev) => prev.filter((a) => a.id !== id)); + }; + + // 파일 아이콘 + const getFileIcon = (fileType: string) => { + if (fileType.startsWith("image/")) return ; + if (fileType.includes("pdf")) return ; + return ; + }; + + // 파일 크기 포맷 + const formatFileSize = (bytes: number) => { + if (bytes < 1024) return `${bytes} B`; + if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`; + return `${(bytes / (1024 * 1024)).toFixed(1)} MB`; + }; + + // 저장 + const handleSave = async () => { + // 유효성 검사 + if (!formData.invoice_date) { + toast.error("작성일자를 입력해주세요."); + return; + } + + setSaving(true); + try { + const dataToSave = { + ...formData, + attachments, + }; + + let response; + if (invoice) { + response = await updateTaxInvoice(invoice.id, dataToSave); + } else { + response = await createTaxInvoice(dataToSave); + } + + if (response.success) { + toast.success(response.message || "저장되었습니다."); + onSave(); + } + } catch (error: any) { + toast.error("저장 실패", { description: error.message }); + } finally { + setSaving(false); + } + }; + + // 금액 포맷 + const formatAmount = (amount: number) => { + return new Intl.NumberFormat("ko-KR").format(amount); + }; + + return ( + !o && onClose()}> + + + {invoice ? "세금계산서 수정" : "세금계산서 작성"} + 세금계산서 정보를 입력해주세요. + + + +
+ + + 기본정보 + 공급자 + 공급받는자 + + 첨부파일 + {attachments.length > 0 && ( + + {attachments.length} + + )} + + + + {/* 기본정보 탭 */} + +
+
+ + +
+
+ + handleChange("invoice_date", e.target.value)} + className="h-9" + /> +
+
+ + handleChange("remarks", e.target.value)} + className="h-9" + placeholder="비고 입력" + /> +
+
+ + {/* 품목 테이블 */} + + +
+ 품목 내역 + +
+
+ + + + + 일자 + 품목명 + 규격 + 수량 + 단가 + 공급가액 + 세액 + + + + + {(formData.items || []).map((item, index) => ( + + + + handleItemChange(index, "item_date", e.target.value) + } + className="h-8 text-xs" + /> + + + + handleItemChange(index, "item_name", e.target.value) + } + className="h-8 text-xs" + placeholder="품목명" + /> + + + + handleItemChange(index, "item_spec", e.target.value) + } + className="h-8 text-xs" + placeholder="규격" + /> + + + + handleItemChange(index, "quantity", parseFloat(e.target.value) || 0) + } + className="h-8 text-right text-xs" + min={0} + /> + + + + handleItemChange( + index, + "unit_price", + parseFloat(e.target.value) || 0 + ) + } + className="h-8 text-right text-xs" + min={0} + /> + + + {formatAmount(item.supply_amount || 0)} + + + {formatAmount(item.tax_amount || 0)} + + + + + + ))} + +
+
+
+ + {/* 합계 */} +
+
+
+ 공급가액 + {formatAmount(formData.supply_amount || 0)}원 +
+
+ 세액 + {formatAmount(formData.tax_amount || 0)}원 +
+
+ 합계 + + {formatAmount(formData.total_amount || 0)}원 + +
+
+
+
+ + {/* 공급자 탭 */} + +
+
+ + handleChange("supplier_business_no", e.target.value)} + className="h-9" + placeholder="000-00-00000" + /> +
+
+ + handleChange("supplier_name", e.target.value)} + className="h-9" + placeholder="상호명" + /> +
+
+ + handleChange("supplier_ceo_name", e.target.value)} + className="h-9" + placeholder="대표자명" + /> +
+
+ + handleChange("supplier_business_type", e.target.value)} + className="h-9" + placeholder="업태" + /> +
+
+ + handleChange("supplier_business_item", e.target.value)} + className="h-9" + placeholder="종목" + /> +
+
+ + handleChange("supplier_address", e.target.value)} + className="h-9" + placeholder="주소" + /> +
+
+
+ + {/* 공급받는자 탭 */} + +
+
+ + handleChange("buyer_business_no", e.target.value)} + className="h-9" + placeholder="000-00-00000" + /> +
+
+ + handleChange("buyer_name", e.target.value)} + className="h-9" + placeholder="상호명" + /> +
+
+ + handleChange("buyer_ceo_name", e.target.value)} + className="h-9" + placeholder="대표자명" + /> +
+
+ + handleChange("buyer_email", e.target.value)} + className="h-9" + placeholder="email@example.com" + /> +
+
+ + handleChange("buyer_address", e.target.value)} + className="h-9" + placeholder="주소" + /> +
+
+
+ + {/* 첨부파일 탭 */} + + {/* 업로드 영역 */} +
+ + +
+ + {/* 첨부파일 목록 */} + {attachments.length > 0 && ( +
+ +
+ {attachments.map((file) => ( +
+
+ {getFileIcon(file.file_type)} +
+

{file.file_name}

+

+ {formatFileSize(file.file_size)} +

+
+
+ +
+ ))} +
+
+ )} + + {attachments.length === 0 && ( +
+ + 첨부된 파일이 없습니다. +
+ )} +
+
+
+
+ + + + + +
+
+ ); +} + diff --git a/frontend/components/tax-invoice/TaxInvoiceList.tsx b/frontend/components/tax-invoice/TaxInvoiceList.tsx new file mode 100644 index 00000000..a4c59822 --- /dev/null +++ b/frontend/components/tax-invoice/TaxInvoiceList.tsx @@ -0,0 +1,818 @@ +"use client"; + +/** + * 세금계산서 목록 컴포넌트 + * 세금계산서 목록 조회, 검색, 필터링 기능 + */ + +import { useState, useEffect, useCallback } from "react"; +import { format } from "date-fns"; +import { ko } from "date-fns/locale"; +import { + Plus, + Search, + Filter, + FileText, + Eye, + Edit, + Trash2, + Send, + CheckCircle, + XCircle, + Clock, + RefreshCw, + Paperclip, + Image, + File, + ArrowUpDown, + ArrowUp, + ArrowDown, + X, +} from "lucide-react"; +import { + Popover, + PopoverContent, + PopoverTrigger, +} from "@/components/ui/popover"; + +import { Button } from "@/components/ui/button"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from "@/components/ui/table"; +import { Badge } from "@/components/ui/badge"; +import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; +import { + Dialog, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle, +} from "@/components/ui/dialog"; +import { toast } from "sonner"; + +import { + getTaxInvoiceList, + deleteTaxInvoice, + issueTaxInvoice, + cancelTaxInvoice, + TaxInvoice, + TaxInvoiceListParams, +} from "@/lib/api/taxInvoice"; +import { TaxInvoiceForm } from "./TaxInvoiceForm"; +import { TaxInvoiceDetail } from "./TaxInvoiceDetail"; + +// 상태 뱃지 색상 +const statusBadgeVariant: Record = { + draft: "outline", + issued: "default", + sent: "secondary", + cancelled: "destructive", +}; + +// 상태 라벨 +const statusLabels: Record = { + draft: "임시저장", + issued: "발행완료", + sent: "전송완료", + cancelled: "취소됨", +}; + +// 유형 라벨 +const typeLabels: Record = { + sales: "매출", + purchase: "매입", +}; + +// 컬럼 정의 +interface ColumnDef { + key: string; + label: string; + sortable?: boolean; + filterable?: boolean; + filterType?: "text" | "select"; + filterOptions?: { value: string; label: string }[]; + width?: string; + align?: "left" | "center" | "right"; +} + +const columns: ColumnDef[] = [ + { key: "invoice_number", label: "계산서번호", sortable: true, filterable: true, filterType: "text", width: "120px" }, + { key: "invoice_type", label: "유형", sortable: true, filterable: true, filterType: "select", + filterOptions: [{ value: "sales", label: "매출" }, { value: "purchase", label: "매입" }], width: "80px" }, + { key: "invoice_status", label: "상태", sortable: true, filterable: true, filterType: "select", + filterOptions: [ + { value: "draft", label: "임시저장" }, { value: "issued", label: "발행완료" }, + { value: "sent", label: "전송완료" }, { value: "cancelled", label: "취소됨" } + ], width: "100px" }, + { key: "invoice_date", label: "작성일", sortable: true, filterable: true, filterType: "text", width: "100px" }, + { key: "buyer_name", label: "공급받는자", sortable: true, filterable: true, filterType: "text" }, + { key: "attachments", label: "첨부", sortable: false, filterable: false, width: "60px", align: "center" }, + { key: "supply_amount", label: "공급가액", sortable: true, filterable: false, align: "right" }, + { key: "tax_amount", label: "세액", sortable: true, filterable: false, align: "right" }, + { key: "total_amount", label: "합계", sortable: true, filterable: false, align: "right" }, +]; + +export function TaxInvoiceList() { + // 상태 + const [invoices, setInvoices] = useState([]); + const [loading, setLoading] = useState(false); + const [pagination, setPagination] = useState({ + page: 1, + pageSize: 20, + total: 0, + totalPages: 0, + }); + + // 필터 상태 + const [filters, setFilters] = useState({ + page: 1, + pageSize: 20, + }); + const [searchText, setSearchText] = useState(""); + + // 정렬 상태 + const [sortConfig, setSortConfig] = useState<{ key: string; direction: "asc" | "desc" } | null>(null); + + // 컬럼별 필터 상태 + const [columnFilters, setColumnFilters] = useState>({}); + const [activeFilterColumn, setActiveFilterColumn] = useState(null); + + // 모달 상태 + const [showForm, setShowForm] = useState(false); + const [showDetail, setShowDetail] = useState(false); + const [selectedInvoice, setSelectedInvoice] = useState(null); + const [editMode, setEditMode] = useState(false); + + // 확인 다이얼로그 상태 + const [confirmDialog, setConfirmDialog] = useState<{ + open: boolean; + type: "delete" | "issue" | "cancel"; + invoice: TaxInvoice | null; + }>({ + open: false, + type: "delete", + invoice: null, + }); + + // 데이터 로드 + const loadData = useCallback(async () => { + setLoading(true); + try { + // 컬럼 필터를 API 파라미터에 추가 + const apiFilters: TaxInvoiceListParams = { + ...filters, + invoice_type: columnFilters.invoice_type as "sales" | "purchase" | undefined, + invoice_status: columnFilters.invoice_status, + search: columnFilters.invoice_number || columnFilters.buyer_name || searchText || undefined, + }; + + const response = await getTaxInvoiceList(apiFilters); + if (response.success) { + let data = response.data; + + // 클라이언트 사이드 정렬 적용 + if (sortConfig) { + data = [...data].sort((a, b) => { + const aVal = a[sortConfig.key as keyof TaxInvoice]; + const bVal = b[sortConfig.key as keyof TaxInvoice]; + + if (aVal === null || aVal === undefined) return 1; + if (bVal === null || bVal === undefined) return -1; + + // 숫자 비교 + if (typeof aVal === "number" && typeof bVal === "number") { + return sortConfig.direction === "asc" ? aVal - bVal : bVal - aVal; + } + + // 문자열 비교 + const strA = String(aVal).toLowerCase(); + const strB = String(bVal).toLowerCase(); + if (sortConfig.direction === "asc") { + return strA.localeCompare(strB, "ko"); + } + return strB.localeCompare(strA, "ko"); + }); + } + + // 클라이언트 사이드 필터 적용 (날짜 필터) + if (columnFilters.invoice_date) { + data = data.filter((item) => + item.invoice_date?.includes(columnFilters.invoice_date) + ); + } + + setInvoices(data); + setPagination(response.pagination); + } + } catch (error: any) { + toast.error("데이터 로드 실패", { description: error.message }); + } finally { + setLoading(false); + } + }, [filters, sortConfig, columnFilters, searchText]); + + useEffect(() => { + loadData(); + }, [loadData]); + + // 정렬 핸들러 + const handleSort = (columnKey: string) => { + setSortConfig((prev) => { + if (prev?.key === columnKey) { + // 같은 컬럼 클릭: asc -> desc -> null 순환 + if (prev.direction === "asc") return { key: columnKey, direction: "desc" }; + return null; + } + // 새 컬럼: asc로 시작 + return { key: columnKey, direction: "asc" }; + }); + }; + + // 컬럼 필터 핸들러 + const handleColumnFilter = (columnKey: string, value: string) => { + setColumnFilters((prev) => { + if (!value) { + const { [columnKey]: _, ...rest } = prev; + return rest; + } + return { ...prev, [columnKey]: value }; + }); + setFilters((prev) => ({ ...prev, page: 1 })); // 필터 변경 시 첫 페이지로 + }; + + // 필터 초기화 + const clearColumnFilter = (columnKey: string) => { + setColumnFilters((prev) => { + const { [columnKey]: _, ...rest } = prev; + return rest; + }); + setActiveFilterColumn(null); + }; + + // 모든 필터 초기화 + const clearAllFilters = () => { + setColumnFilters({}); + setSortConfig(null); + setSearchText(""); + setFilters({ page: 1, pageSize: 20 }); + }; + + // 정렬 아이콘 렌더링 + const renderSortIcon = (columnKey: string) => { + if (sortConfig?.key !== columnKey) { + return ; + } + return sortConfig.direction === "asc" + ? + : ; + }; + + // 검색 + const handleSearch = () => { + setFilters((prev) => ({ ...prev, search: searchText, page: 1 })); + }; + + // 필터 변경 + const handleFilterChange = (key: keyof TaxInvoiceListParams, value: string | undefined) => { + setFilters((prev) => ({ + ...prev, + [key]: value === "all" ? undefined : value, + page: 1, + })); + }; + + // 새 세금계산서 + const handleNew = () => { + setSelectedInvoice(null); + setEditMode(false); + setShowForm(true); + }; + + // 상세 보기 + const handleView = (invoice: TaxInvoice) => { + setSelectedInvoice(invoice); + setShowDetail(true); + }; + + // 수정 + const handleEdit = (invoice: TaxInvoice) => { + if (invoice.invoice_status !== "draft") { + toast.warning("임시저장 상태의 세금계산서만 수정할 수 있습니다."); + return; + } + setSelectedInvoice(invoice); + setEditMode(true); + setShowForm(true); + }; + + // 삭제 확인 + const handleDeleteConfirm = (invoice: TaxInvoice) => { + if (invoice.invoice_status !== "draft") { + toast.warning("임시저장 상태의 세금계산서만 삭제할 수 있습니다."); + return; + } + setConfirmDialog({ open: true, type: "delete", invoice }); + }; + + // 발행 확인 + const handleIssueConfirm = (invoice: TaxInvoice) => { + if (invoice.invoice_status !== "draft") { + toast.warning("임시저장 상태의 세금계산서만 발행할 수 있습니다."); + return; + } + setConfirmDialog({ open: true, type: "issue", invoice }); + }; + + // 취소 확인 + const handleCancelConfirm = (invoice: TaxInvoice) => { + if (!["draft", "issued"].includes(invoice.invoice_status)) { + toast.warning("취소할 수 없는 상태입니다."); + return; + } + setConfirmDialog({ open: true, type: "cancel", invoice }); + }; + + // 확인 다이얼로그 실행 + const handleConfirmAction = async () => { + const { type, invoice } = confirmDialog; + if (!invoice) return; + + try { + if (type === "delete") { + const response = await deleteTaxInvoice(invoice.id); + if (response.success) { + toast.success("세금계산서가 삭제되었습니다."); + loadData(); + } + } else if (type === "issue") { + const response = await issueTaxInvoice(invoice.id); + if (response.success) { + toast.success("세금계산서가 발행되었습니다."); + loadData(); + } + } else if (type === "cancel") { + const response = await cancelTaxInvoice(invoice.id); + if (response.success) { + toast.success("세금계산서가 취소되었습니다."); + loadData(); + } + } + } catch (error: any) { + toast.error("작업 실패", { description: error.message }); + } finally { + setConfirmDialog({ open: false, type: "delete", invoice: null }); + } + }; + + // 폼 저장 완료 + const handleFormSave = () => { + setShowForm(false); + setSelectedInvoice(null); + loadData(); + }; + + // 금액 포맷 + const formatAmount = (amount: number) => { + return new Intl.NumberFormat("ko-KR").format(amount); + }; + + // 날짜 포맷 + const formatDate = (dateString: string) => { + try { + return format(new Date(dateString), "yyyy-MM-dd", { locale: ko }); + } catch { + return dateString; + } + }; + + return ( +
+ {/* 헤더 */} +
+

세금계산서 관리

+ +
+ + {/* 필터 영역 */} + + +
+ {/* 검색 */} +
+ +
+ setSearchText(e.target.value)} + onKeyDown={(e) => e.key === "Enter" && handleSearch()} + className="h-9" + /> + +
+
+ + {/* 유형 필터 */} +
+ + +
+ + {/* 상태 필터 */} +
+ + +
+ + {/* 새로고침 */} + + + {/* 필터 초기화 */} + {(Object.keys(columnFilters).length > 0 || sortConfig) && ( + + )} +
+ + {/* 활성 필터 표시 */} + {Object.keys(columnFilters).length > 0 && ( +
+ {Object.entries(columnFilters).map(([key, value]) => { + const column = columns.find((c) => c.key === key); + let displayValue = value; + if (column?.filterOptions) { + displayValue = column.filterOptions.find((o) => o.value === value)?.label || value; + } + return ( + + {column?.label}: {displayValue} + + + ); + })} +
+ )} +
+
+ + {/* 테이블 */} + + + + + + {columns.map((column) => ( + +
+ {/* 컬럼 필터 (filterable인 경우) */} + {column.filterable && ( + setActiveFilterColumn(open ? column.key : null)} + > + + + + +
+
{column.label} 필터
+ {column.filterType === "select" ? ( + + ) : ( + handleColumnFilter(column.key, e.target.value)} + onKeyDown={(e) => e.key === "Enter" && setActiveFilterColumn(null)} + className="h-8 text-xs" + autoFocus + /> + )} + {columnFilters[column.key] && ( + + )} +
+
+
+ )} + + {/* 컬럼 라벨 + 정렬 */} + {column.sortable ? ( + + ) : ( + {column.label} + )} +
+
+ ))} + 작업 +
+
+ + {loading ? ( + + + 로딩 중... + + + ) : invoices.length === 0 ? ( + + + + 세금계산서가 없습니다. + + + ) : ( + invoices.map((invoice) => ( + + {invoice.invoice_number} + + + {typeLabels[invoice.invoice_type]} + + + + + {statusLabels[invoice.invoice_status]} + + + {formatDate(invoice.invoice_date)} + + {invoice.buyer_name || "-"} + + + {invoice.attachments && invoice.attachments.length > 0 ? ( +
+ + + {invoice.attachments.length} + +
+ ) : ( + - + )} +
+ + {formatAmount(invoice.supply_amount)} + + + {formatAmount(invoice.tax_amount)} + + + {formatAmount(invoice.total_amount)} + + +
+ + {invoice.invoice_status === "draft" && ( + <> + + + + + )} + {invoice.invoice_status === "issued" && ( + + )} +
+
+
+ )) + )} +
+
+
+
+ + {/* 페이지네이션 */} + {pagination.totalPages > 1 && ( +
+
+ 총 {pagination.total}건 중 {(pagination.page - 1) * pagination.pageSize + 1}- + {Math.min(pagination.page * pagination.pageSize, pagination.total)}건 +
+
+ + +
+
+ )} + + {/* 세금계산서 작성/수정 폼 */} + {showForm && ( + setShowForm(false)} + onSave={handleFormSave} + invoice={editMode ? selectedInvoice : null} + /> + )} + + {/* 세금계산서 상세 */} + {showDetail && selectedInvoice && ( + setShowDetail(false)} + invoiceId={selectedInvoice.id} + /> + )} + + {/* 확인 다이얼로그 */} + !open && setConfirmDialog({ ...confirmDialog, open: false })} + > + + + + {confirmDialog.type === "delete" && "세금계산서 삭제"} + {confirmDialog.type === "issue" && "세금계산서 발행"} + {confirmDialog.type === "cancel" && "세금계산서 취소"} + + + {confirmDialog.type === "delete" && + "이 세금계산서를 삭제하시겠습니까? 삭제된 데이터는 복구할 수 없습니다."} + {confirmDialog.type === "issue" && + "이 세금계산서를 발행하시겠습니까? 발행 후에는 수정할 수 없습니다."} + {confirmDialog.type === "cancel" && "이 세금계산서를 취소하시겠습니까?"} + + + + + + + + +
+ ); +} + diff --git a/frontend/components/tax-invoice/index.ts b/frontend/components/tax-invoice/index.ts new file mode 100644 index 00000000..149e2812 --- /dev/null +++ b/frontend/components/tax-invoice/index.ts @@ -0,0 +1,4 @@ +export { TaxInvoiceList } from "./TaxInvoiceList"; +export { TaxInvoiceForm } from "./TaxInvoiceForm"; +export { TaxInvoiceDetail } from "./TaxInvoiceDetail"; + diff --git a/frontend/lib/api/taxInvoice.ts b/frontend/lib/api/taxInvoice.ts new file mode 100644 index 00000000..be41f24c --- /dev/null +++ b/frontend/lib/api/taxInvoice.ts @@ -0,0 +1,229 @@ +/** + * 세금계산서 API 클라이언트 + */ + +import { apiClient } from "./client"; + +// 세금계산서 타입 +export interface TaxInvoice { + id: string; + company_code: string; + invoice_number: string; + invoice_type: "sales" | "purchase"; + invoice_status: "draft" | "issued" | "sent" | "cancelled"; + supplier_business_no: string; + supplier_name: string; + supplier_ceo_name: string; + supplier_address: string; + supplier_business_type: string; + supplier_business_item: string; + buyer_business_no: string; + buyer_name: string; + buyer_ceo_name: string; + buyer_address: string; + buyer_email: string; + supply_amount: number; + tax_amount: number; + total_amount: number; + invoice_date: string; + issue_date: string | null; + remarks: string; + order_id: string | null; + customer_id: string | null; + attachments: TaxInvoiceAttachment[] | null; + created_date: string; + updated_date: string; + writer: string; +} + +// 첨부파일 타입 +export interface TaxInvoiceAttachment { + id: string; + file_name: string; + file_path: string; + file_size: number; + file_type: string; + uploaded_at: string; + uploaded_by: string; +} + +// 세금계산서 품목 타입 +export interface TaxInvoiceItem { + id: string; + tax_invoice_id: string; + company_code: string; + item_seq: number; + item_date: string; + item_name: string; + item_spec: string; + quantity: number; + unit_price: number; + supply_amount: number; + tax_amount: number; + remarks: string; +} + +// 생성 DTO +export interface CreateTaxInvoiceDto { + invoice_type: "sales" | "purchase"; + supplier_business_no?: string; + supplier_name?: string; + supplier_ceo_name?: string; + supplier_address?: string; + supplier_business_type?: string; + supplier_business_item?: string; + buyer_business_no?: string; + buyer_name?: string; + buyer_ceo_name?: string; + buyer_address?: string; + buyer_email?: string; + supply_amount: number; + tax_amount: number; + total_amount: number; + invoice_date: string; + remarks?: string; + order_id?: string; + customer_id?: string; + items?: CreateTaxInvoiceItemDto[]; + attachments?: TaxInvoiceAttachment[]; +} + +// 품목 생성 DTO +export interface CreateTaxInvoiceItemDto { + item_date?: string; + item_name: string; + item_spec?: string; + quantity: number; + unit_price: number; + supply_amount: number; + tax_amount: number; + remarks?: string; +} + +// 목록 조회 파라미터 +export interface TaxInvoiceListParams { + page?: number; + pageSize?: number; + invoice_type?: "sales" | "purchase"; + invoice_status?: string; + start_date?: string; + end_date?: string; + search?: string; + buyer_name?: string; +} + +// 목록 응답 +export interface TaxInvoiceListResponse { + success: boolean; + data: TaxInvoice[]; + pagination: { + page: number; + pageSize: number; + total: number; + totalPages: number; + }; +} + +// 상세 응답 +export interface TaxInvoiceDetailResponse { + success: boolean; + data: { + invoice: TaxInvoice; + items: TaxInvoiceItem[]; + }; +} + +// 월별 통계 응답 +export interface TaxInvoiceMonthlyStatsResponse { + success: boolean; + data: { + sales: { count: number; supply_amount: number; tax_amount: number; total_amount: number }; + purchase: { count: number; supply_amount: number; tax_amount: number; total_amount: number }; + }; + period: { year: number; month: number }; +} + +/** + * 세금계산서 목록 조회 + */ +export async function getTaxInvoiceList( + params?: TaxInvoiceListParams +): Promise { + const response = await apiClient.get("/tax-invoice", { params }); + return response.data; +} + +/** + * 세금계산서 상세 조회 + */ +export async function getTaxInvoiceById(id: string): Promise { + const response = await apiClient.get(`/tax-invoice/${id}`); + return response.data; +} + +/** + * 세금계산서 생성 + */ +export async function createTaxInvoice( + data: CreateTaxInvoiceDto +): Promise<{ success: boolean; data: TaxInvoice; message: string }> { + const response = await apiClient.post("/tax-invoice", data); + return response.data; +} + +/** + * 세금계산서 수정 + */ +export async function updateTaxInvoice( + id: string, + data: Partial +): Promise<{ success: boolean; data: TaxInvoice; message: string }> { + const response = await apiClient.put(`/tax-invoice/${id}`, data); + return response.data; +} + +/** + * 세금계산서 삭제 + */ +export async function deleteTaxInvoice( + id: string +): Promise<{ success: boolean; message: string }> { + const response = await apiClient.delete(`/tax-invoice/${id}`); + return response.data; +} + +/** + * 세금계산서 발행 + */ +export async function issueTaxInvoice( + id: string +): Promise<{ success: boolean; data: TaxInvoice; message: string }> { + const response = await apiClient.post(`/tax-invoice/${id}/issue`); + return response.data; +} + +/** + * 세금계산서 취소 + */ +export async function cancelTaxInvoice( + id: string, + reason?: string +): Promise<{ success: boolean; data: TaxInvoice; message: string }> { + const response = await apiClient.post(`/tax-invoice/${id}/cancel`, { reason }); + return response.data; +} + +/** + * 월별 통계 조회 + */ +export async function getTaxInvoiceMonthlyStats( + year?: number, + month?: number +): Promise { + const params: Record = {}; + if (year) params.year = year; + if (month) params.month = month; + const response = await apiClient.get("/tax-invoice/stats/monthly", { params }); + return response.data; +} + diff --git a/frontend/lib/registry/components/index.ts b/frontend/lib/registry/components/index.ts index ff9d9240..f3e0552d 100644 --- a/frontend/lib/registry/components/index.ts +++ b/frontend/lib/registry/components/index.ts @@ -77,6 +77,9 @@ import "./screen-split-panel/ScreenSplitPanelRenderer"; // 화면 분할 패널 // 🆕 범용 폼 모달 컴포넌트 import "./universal-form-modal/UniversalFormModalRenderer"; // 섹션 기반 폼, 채번규칙, 다중 행 저장 지원 +// 🆕 세금계산서 관리 컴포넌트 +import "./tax-invoice-list/TaxInvoiceListRenderer"; // 세금계산서 목록, 작성, 발행, 취소 + // 🆕 렉 구조 설정 컴포넌트 import "./rack-structure/RackStructureRenderer"; // 창고 렉 위치 일괄 생성 diff --git a/frontend/lib/registry/components/tax-invoice-list/TaxInvoiceListComponent.tsx b/frontend/lib/registry/components/tax-invoice-list/TaxInvoiceListComponent.tsx new file mode 100644 index 00000000..43bad4f2 --- /dev/null +++ b/frontend/lib/registry/components/tax-invoice-list/TaxInvoiceListComponent.tsx @@ -0,0 +1,48 @@ +"use client"; + +/** + * 세금계산서 목록 컴포넌트 (레지스트리용 래퍼) + */ + +import React from "react"; +import { TaxInvoiceList } from "@/components/tax-invoice"; +import { TaxInvoiceListConfig } from "./types"; + +interface TaxInvoiceListComponentProps { + config?: TaxInvoiceListConfig; + componentId?: string; + isEditMode?: boolean; +} + +export function TaxInvoiceListComponent({ + config, + componentId, + isEditMode, +}: TaxInvoiceListComponentProps) { + // 편집 모드에서는 플레이스홀더 표시 + if (isEditMode) { + return ( +
+
+
📄
+

세금계산서 목록

+

+ {config?.title || "세금계산서 관리"} +

+
+
+ ); + } + + return ( +
+ +
+ ); +} + +// 래퍼 컴포넌트 (레지스트리 호환용) +export function TaxInvoiceListWrapper(props: any) { + return ; +} + diff --git a/frontend/lib/registry/components/tax-invoice-list/TaxInvoiceListConfigPanel.tsx b/frontend/lib/registry/components/tax-invoice-list/TaxInvoiceListConfigPanel.tsx new file mode 100644 index 00000000..fc3fd62b --- /dev/null +++ b/frontend/lib/registry/components/tax-invoice-list/TaxInvoiceListConfigPanel.tsx @@ -0,0 +1,166 @@ +"use client"; + +/** + * 세금계산서 목록 설정 패널 + */ + +import React from "react"; +import { Label } from "@/components/ui/label"; +import { Input } from "@/components/ui/input"; +import { Switch } from "@/components/ui/switch"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import { TaxInvoiceListConfig, defaultTaxInvoiceListConfig } from "./types"; + +interface TaxInvoiceListConfigPanelProps { + config: TaxInvoiceListConfig; + onChange: (config: TaxInvoiceListConfig) => void; +} + +export function TaxInvoiceListConfigPanel({ + config, + onChange, +}: TaxInvoiceListConfigPanelProps) { + const currentConfig = { ...defaultTaxInvoiceListConfig, ...config }; + + const handleChange = (key: keyof TaxInvoiceListConfig, value: any) => { + onChange({ ...currentConfig, [key]: value }); + }; + + return ( +
+ {/* 기본 설정 */} +
+

기본 설정

+ +
+ + handleChange("title", e.target.value)} + placeholder="세금계산서 관리" + className="h-8 text-xs" + /> +
+ +
+ + handleChange("showHeader", checked)} + /> +
+
+ + {/* 기본 필터 */} +
+

기본 필터

+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+ + {/* 권한 설정 */} +
+

권한 설정

+ +
+ + handleChange("canCreate", checked)} + /> +
+ +
+ + handleChange("canEdit", checked)} + /> +
+ +
+ + handleChange("canDelete", checked)} + /> +
+ +
+ + handleChange("canIssue", checked)} + /> +
+ +
+ + handleChange("canCancel", checked)} + /> +
+
+
+ ); +} + diff --git a/frontend/lib/registry/components/tax-invoice-list/TaxInvoiceListRenderer.tsx b/frontend/lib/registry/components/tax-invoice-list/TaxInvoiceListRenderer.tsx new file mode 100644 index 00000000..7f4b2806 --- /dev/null +++ b/frontend/lib/registry/components/tax-invoice-list/TaxInvoiceListRenderer.tsx @@ -0,0 +1,32 @@ +"use client"; + +import React from "react"; +import { AutoRegisteringComponentRenderer } from "../../AutoRegisteringComponentRenderer"; +import { TaxInvoiceListDefinition } from "./index"; +import { TaxInvoiceListComponent } from "./TaxInvoiceListComponent"; + +/** + * 세금계산서 목록 렌더러 + * 자동 등록 시스템을 사용하여 컴포넌트를 레지스트리에 등록 + */ +export class TaxInvoiceListRenderer extends AutoRegisteringComponentRenderer { + static componentDefinition = TaxInvoiceListDefinition; + + render(): React.ReactElement { + return ; + } +} + +// 자동 등록 실행 +TaxInvoiceListRenderer.registerSelf(); + +// 강제 등록 (디버깅용) +if (typeof window !== "undefined") { + setTimeout(() => { + try { + TaxInvoiceListRenderer.registerSelf(); + } catch (error) { + console.error("TaxInvoiceList 강제 등록 실패:", error); + } + }, 1000); +} diff --git a/frontend/lib/registry/components/tax-invoice-list/index.ts b/frontend/lib/registry/components/tax-invoice-list/index.ts new file mode 100644 index 00000000..b7a589cc --- /dev/null +++ b/frontend/lib/registry/components/tax-invoice-list/index.ts @@ -0,0 +1,37 @@ +"use client"; + +import React from "react"; +import { createComponentDefinition } from "../../utils/createComponentDefinition"; +import { ComponentCategory } from "@/types/component"; +import { TaxInvoiceListWrapper } from "./TaxInvoiceListComponent"; +import { TaxInvoiceListConfigPanel } from "./TaxInvoiceListConfigPanel"; +import { TaxInvoiceListConfig, defaultTaxInvoiceListConfig } from "./types"; + +/** + * 세금계산서 목록 컴포넌트 정의 + * 세금계산서 CRUD, 발행, 취소 기능을 제공하는 컴포넌트 + */ +export const TaxInvoiceListDefinition = createComponentDefinition({ + id: "tax-invoice-list", + name: "세금계산서 목록", + nameEng: "Tax Invoice List", + description: "세금계산서 목록 조회, 작성, 발행, 취소 기능을 제공하는 컴포넌트", + category: ComponentCategory.DISPLAY, + webType: "text", + component: TaxInvoiceListWrapper, + defaultConfig: defaultTaxInvoiceListConfig, + defaultSize: { width: 1200, height: 700 }, + configPanel: TaxInvoiceListConfigPanel, + icon: "FileText", + tags: ["세금계산서", "매출", "매입", "발행", "인보이스"], + version: "1.0.0", + author: "개발팀", + documentation: "", +}); + +// 타입 내보내기 +export type { TaxInvoiceListConfig } from "./types"; +export { TaxInvoiceListWrapper } from "./TaxInvoiceListComponent"; +export { TaxInvoiceListConfigPanel } from "./TaxInvoiceListConfigPanel"; +export { TaxInvoiceListRenderer } from "./TaxInvoiceListRenderer"; + diff --git a/frontend/lib/registry/components/tax-invoice-list/types.ts b/frontend/lib/registry/components/tax-invoice-list/types.ts new file mode 100644 index 00000000..57ebb948 --- /dev/null +++ b/frontend/lib/registry/components/tax-invoice-list/types.ts @@ -0,0 +1,41 @@ +/** + * 세금계산서 목록 컴포넌트 타입 정의 + */ + +export interface TaxInvoiceListConfig { + // 기본 설정 + title?: string; + showHeader?: boolean; + + // 필터 설정 + defaultInvoiceType?: "all" | "sales" | "purchase"; + defaultStatus?: "all" | "draft" | "issued" | "sent" | "cancelled"; + + // 페이지네이션 + pageSize?: number; + + // 권한 설정 + canCreate?: boolean; + canEdit?: boolean; + canDelete?: boolean; + canIssue?: boolean; + canCancel?: boolean; + + // 스타일 + height?: string | number; +} + +export const defaultTaxInvoiceListConfig: TaxInvoiceListConfig = { + title: "세금계산서 관리", + showHeader: true, + defaultInvoiceType: "all", + defaultStatus: "all", + pageSize: 20, + canCreate: true, + canEdit: true, + canDelete: true, + canIssue: true, + canCancel: true, + height: "auto", +}; + -- 2.43.0 From 66ef1172ee2ab63f92701a3fcf07198ebc03e265 Mon Sep 17 00:00:00 2001 From: SeongHyun Kim Date: Fri, 5 Dec 2025 12:59:03 +0900 Subject: [PATCH 26/64] =?UTF-8?q?feat(UniversalFormModal):=20=EC=97=B0?= =?UTF-8?q?=EB=8F=99=20=ED=95=84=EB=93=9C=20=EA=B7=B8=EB=A3=B9=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - LinkedFieldGroup, LinkedFieldMapping 타입 정의 - 소스 테이블 데이터 캐싱 및 드롭다운 렌더링 - 선택 시 여러 컬럼에 자동 값 매핑 처리 - 설정 패널에 연동 필드 그룹 관리 UI 추가 - 일반 섹션/반복 섹션 모두 지원 --- .../UniversalFormModalComponent.tsx | 224 ++++++++++++ .../UniversalFormModalConfigPanel.tsx | 323 ++++++++++++++++++ .../components/universal-form-modal/config.ts | 26 ++ .../components/universal-form-modal/types.ts | 31 ++ 4 files changed, 604 insertions(+) diff --git a/frontend/lib/registry/components/universal-form-modal/UniversalFormModalComponent.tsx b/frontend/lib/registry/components/universal-form-modal/UniversalFormModalComponent.tsx index 85133424..65e079ae 100644 --- a/frontend/lib/registry/components/universal-form-modal/UniversalFormModalComponent.tsx +++ b/frontend/lib/registry/components/universal-form-modal/UniversalFormModalComponent.tsx @@ -33,6 +33,7 @@ import { FormDataState, RepeatSectionItem, SelectOptionConfig, + LinkedFieldGroup, } from "./types"; import { defaultConfig, generateUniqueId } from "./config"; @@ -100,6 +101,11 @@ export function UniversalFormModalComponent({ [key: string]: { value: string; label: string }[]; }>({}); + // 연동 필드 그룹 데이터 캐시 (테이블별 데이터) + const [linkedFieldDataCache, setLinkedFieldDataCache] = useState<{ + [tableKey: string]: Record[]; + }>({}); + // 로딩 상태 const [saving, setSaving] = useState(false); @@ -342,6 +348,125 @@ export function UniversalFormModalComponent({ [selectOptionsCache], ); + // 연동 필드 그룹 데이터 로드 + const loadLinkedFieldData = useCallback( + async (sourceTable: string): Promise[]> => { + // 캐시 확인 - 이미 배열로 캐시되어 있으면 반환 + if (Array.isArray(linkedFieldDataCache[sourceTable]) && linkedFieldDataCache[sourceTable].length > 0) { + return linkedFieldDataCache[sourceTable]; + } + + let data: Record[] = []; + + try { + console.log(`[연동필드] ${sourceTable} 데이터 로드 시작`); + // 현재 회사 기준으로 데이터 조회 (POST 메서드, autoFilter 사용) + const response = await apiClient.post(`/table-management/tables/${sourceTable}/data`, { + page: 1, + size: 1000, + autoFilter: true, // 현재 회사 기준 자동 필터링 + }); + + console.log(`[연동필드] ${sourceTable} API 응답:`, response.data); + + if (response.data?.success) { + // data가 배열인지 확인 + const responseData = response.data?.data; + if (Array.isArray(responseData)) { + data = responseData; + } else if (responseData?.rows && Array.isArray(responseData.rows)) { + // { rows: [...], total: ... } 형태일 수 있음 + data = responseData.rows; + } + console.log(`[연동필드] ${sourceTable} 파싱된 데이터 ${data.length}개:`, data.slice(0, 3)); + } + + // 캐시 저장 (빈 배열이라도 저장하여 중복 요청 방지) + setLinkedFieldDataCache((prev) => ({ ...prev, [sourceTable]: data })); + } catch (error) { + console.error(`연동 필드 데이터 로드 실패 (${sourceTable}):`, error); + // 실패해도 빈 배열로 캐시하여 무한 요청 방지 + setLinkedFieldDataCache((prev) => ({ ...prev, [sourceTable]: [] })); + } + + return data; + }, + [linkedFieldDataCache], + ); + + // 연동 필드 그룹 선택 시 매핑된 필드에 값 설정 + const handleLinkedFieldSelect = useCallback( + ( + group: LinkedFieldGroup, + selectedValue: string, + sectionId: string, + repeatItemId?: string + ) => { + // 캐시에서 데이터 찾기 + const sourceData = linkedFieldDataCache[group.sourceTable] || []; + const selectedRow = sourceData.find( + (row) => String(row[group.valueColumn]) === selectedValue + ); + + if (!selectedRow) { + console.warn("선택된 항목을 찾을 수 없습니다:", selectedValue); + return; + } + + // 매핑된 필드에 값 설정 + if (repeatItemId) { + // 반복 섹션 내 아이템 업데이트 + setRepeatSections((prev) => { + const sectionItems = prev[sectionId] || []; + const updatedItems = sectionItems.map((item) => { + if (item._id === repeatItemId) { + const updatedItem = { ...item }; + for (const mapping of group.mappings) { + updatedItem[mapping.targetColumn] = selectedRow[mapping.sourceColumn]; + } + return updatedItem; + } + return item; + }); + return { ...prev, [sectionId]: updatedItems }; + }); + } else { + // 일반 섹션 필드 업데이트 + setFormData((prev) => { + const newData = { ...prev }; + for (const mapping of group.mappings) { + newData[mapping.targetColumn] = selectedRow[mapping.sourceColumn]; + } + if (onChange) { + setTimeout(() => onChange(newData), 0); + } + return newData; + }); + } + }, + [linkedFieldDataCache, onChange], + ); + + // 연동 필드 그룹 표시 텍스트 생성 + const getLinkedFieldDisplayText = useCallback( + (group: LinkedFieldGroup, row: Record): string => { + const code = row[group.valueColumn] || ""; + const name = row[group.displayColumn] || ""; + + switch (group.displayFormat) { + case "name_only": + return name; + case "code_name": + return `${code} - ${name}`; + case "name_code": + return `${name} (${code})`; + default: + return name; + } + }, + [], + ); + // 필수 필드 검증 const validateRequiredFields = useCallback((): { valid: boolean; missingFields: string[] } => { const missingFields: string[] = []; @@ -729,6 +854,64 @@ export function UniversalFormModalComponent({ })(); }; + // 연동 필드 그룹 드롭다운 렌더링 + const renderLinkedFieldGroup = ( + group: LinkedFieldGroup, + sectionId: string, + repeatItemId?: string, + currentValue?: string, + sectionColumns: number = 2, + ) => { + const fieldKey = `linked_${group.id}_${repeatItemId || "main"}`; + const cachedData = linkedFieldDataCache[group.sourceTable]; + // 배열인지 확인하고, 아니면 빈 배열 사용 + const sourceData = Array.isArray(cachedData) ? cachedData : []; + const defaultSpan = Math.floor(12 / sectionColumns); + const actualGridSpan = sectionColumns === 1 ? 12 : group.gridSpan || defaultSpan; + + // 데이터 로드 (아직 없으면, 그리고 캐시에 없을 때만) + if (!cachedData && group.sourceTable) { + loadLinkedFieldData(group.sourceTable); + } + + return ( +
+ + +
+ ); + }; + // 섹션의 열 수에 따른 기본 gridSpan 계산 const getDefaultGridSpan = (sectionColumns: number = 2): number => { // 12칸 그리드 기준: 1열=12, 2열=6, 3열=4, 4열=3 @@ -806,6 +989,7 @@ export function UniversalFormModalComponent({
+ {/* 일반 필드 렌더링 */} {section.fields.map((field) => renderFieldWithColumns( field, @@ -815,6 +999,18 @@ export function UniversalFormModalComponent({ sectionColumns, ), )} + {/* 연동 필드 그룹 렌더링 */} + {(section.linkedFieldGroups || []).map((group) => { + const firstMapping = group.mappings?.[0]; + const currentValue = firstMapping ? formData[firstMapping.targetColumn] : undefined; + return renderLinkedFieldGroup( + group, + section.id, + undefined, + currentValue ? String(currentValue) : undefined, + sectionColumns, + ); + })}
@@ -827,6 +1023,7 @@ export function UniversalFormModalComponent({
+ {/* 일반 필드 렌더링 */} {section.fields.map((field) => renderFieldWithColumns( field, @@ -836,6 +1033,19 @@ export function UniversalFormModalComponent({ sectionColumns, ), )} + {/* 연동 필드 그룹 렌더링 */} + {(section.linkedFieldGroups || []).map((group) => { + // 매핑된 첫 번째 타겟 컬럼의 현재 값을 찾아서 선택 상태 표시 + const firstMapping = group.mappings?.[0]; + const currentValue = firstMapping ? formData[firstMapping.targetColumn] : undefined; + return renderLinkedFieldGroup( + group, + section.id, + undefined, + currentValue ? String(currentValue) : undefined, + sectionColumns, + ); + })}
@@ -885,6 +1095,7 @@ export function UniversalFormModalComponent({
+ {/* 일반 필드 렌더링 */} {section.fields.map((field) => renderFieldWithColumns( field, @@ -894,6 +1105,19 @@ export function UniversalFormModalComponent({ sectionColumns, ), )} + {/* 연동 필드 그룹 렌더링 (반복 섹션 내) */} + {(section.linkedFieldGroups || []).map((group) => { + // 반복 섹션 아이템 내의 매핑된 첫 번째 타겟 컬럼 값 + const firstMapping = group.mappings?.[0]; + const currentValue = firstMapping ? item[firstMapping.targetColumn] : undefined; + return renderLinkedFieldGroup( + group, + section.id, + item._id, + currentValue ? String(currentValue) : undefined, + sectionColumns, + ); + })}
))} diff --git a/frontend/lib/registry/components/universal-form-modal/UniversalFormModalConfigPanel.tsx b/frontend/lib/registry/components/universal-form-modal/UniversalFormModalConfigPanel.tsx index 90c9d64b..dc35a77e 100644 --- a/frontend/lib/registry/components/universal-form-modal/UniversalFormModalConfigPanel.tsx +++ b/frontend/lib/registry/components/universal-form-modal/UniversalFormModalConfigPanel.tsx @@ -37,17 +37,23 @@ import { UniversalFormModalConfigPanelProps, FormSectionConfig, FormFieldConfig, + LinkedFieldGroup, + LinkedFieldMapping, FIELD_TYPE_OPTIONS, MODAL_SIZE_OPTIONS, SELECT_OPTION_TYPE_OPTIONS, + LINKED_FIELD_DISPLAY_FORMAT_OPTIONS, } from "./types"; import { defaultFieldConfig, defaultSectionConfig, defaultNumberingRuleConfig, defaultSelectOptionsConfig, + defaultLinkedFieldGroupConfig, + defaultLinkedFieldMappingConfig, generateSectionId, generateFieldId, + generateLinkedFieldGroupId, } from "./config"; // 도움말 텍스트 컴포넌트 @@ -87,6 +93,24 @@ export function UniversalFormModalConfigPanel({ config, onChange }: UniversalFor // eslint-disable-next-line react-hooks/exhaustive-deps }, [config.saveConfig.tableName]); + // 연동 필드 그룹의 소스 테이블 컬럼 로드 + useEffect(() => { + const allSourceTables = new Set(); + config.sections.forEach((section) => { + (section.linkedFieldGroups || []).forEach((group) => { + if (group.sourceTable) { + allSourceTables.add(group.sourceTable); + } + }); + }); + allSourceTables.forEach((tableName) => { + if (!tableColumns[tableName]) { + loadTableColumns(tableName); + } + }); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [config.sections]); + const loadTables = async () => { try { const response = await apiClient.get("/table-management/tables"); @@ -842,6 +866,305 @@ export function UniversalFormModalConfigPanel({ config, onChange }: UniversalFor )}
+ {/* 연동 필드 그룹 설정 */} +
+
+ 연동 필드 그룹 + +
+

+ 부서코드/부서명 연동 저장 +

+ + {(selectedSection.linkedFieldGroups || []).length > 0 && ( +
+ {(selectedSection.linkedFieldGroups || []).map((group, groupIndex) => ( +
+
+ + #{groupIndex + 1} + + +
+ + {/* 라벨 */} +
+ + { + const updatedGroups = (selectedSection.linkedFieldGroups || []).map((g) => + g.id === group.id ? { ...g, label: e.target.value } : g + ); + updateSection(selectedSection.id, { linkedFieldGroups: updatedGroups }); + }} + placeholder="예: 겸직부서" + className="h-5 text-[9px] mt-0.5" + /> +
+ + {/* 소스 테이블 */} +
+ + +
+ + {/* 표시 형식 */} +
+ + +
+ + {/* 표시 컬럼 / 값 컬럼 */} +
+
+ + +
+
+ + +
+
+ + {/* 필드 매핑 */} +
+
+ + +
+ + {(group.mappings || []).map((mapping, mappingIndex) => ( +
+ + -> + + +
+ ))} +
+ + {/* 기타 옵션 */} +
+
+ { + const updatedGroups = (selectedSection.linkedFieldGroups || []).map((g) => + g.id === group.id ? { ...g, required: !!checked } : g + ); + updateSection(selectedSection.id, { linkedFieldGroups: updatedGroups }); + }} + className="h-3 w-3" + /> + +
+
+ + { + const updatedGroups = (selectedSection.linkedFieldGroups || []).map((g) => + g.id === group.id ? { ...g, gridSpan: parseInt(e.target.value) || 6 } : g + ); + updateSection(selectedSection.id, { linkedFieldGroups: updatedGroups }); + }} + className="h-4 w-8 text-[8px] px-1" + /> +
+
+
+ ))} +
+ )} +
+ {/* 필드 목록 */} diff --git a/frontend/lib/registry/components/universal-form-modal/config.ts b/frontend/lib/registry/components/universal-form-modal/config.ts index 9da7b46c..5383512b 100644 --- a/frontend/lib/registry/components/universal-form-modal/config.ts +++ b/frontend/lib/registry/components/universal-form-modal/config.ts @@ -90,6 +90,27 @@ export const defaultSectionConfig = { itemTitle: "항목 {index}", confirmRemove: false, }, + linkedFieldGroups: [], +}; + +// 기본 연동 필드 그룹 설정 +export const defaultLinkedFieldGroupConfig = { + id: "", + label: "연동 필드", + sourceTable: "dept_info", + displayFormat: "code_name" as const, + displayColumn: "dept_name", + valueColumn: "dept_code", + mappings: [], + required: false, + placeholder: "선택하세요", + gridSpan: 6, +}; + +// 기본 연동 필드 매핑 설정 +export const defaultLinkedFieldMappingConfig = { + sourceColumn: "", + targetColumn: "", }; // 기본 채번규칙 설정 @@ -136,3 +157,8 @@ export const generateSectionId = (): string => { export const generateFieldId = (): string => { return generateUniqueId("field"); }; + +// 유틸리티: 연동 필드 그룹 ID 생성 +export const generateLinkedFieldGroupId = (): string => { + return generateUniqueId("linked"); +}; diff --git a/frontend/lib/registry/components/universal-form-modal/types.ts b/frontend/lib/registry/components/universal-form-modal/types.ts index e8d2ffd6..11ccfd25 100644 --- a/frontend/lib/registry/components/universal-form-modal/types.ts +++ b/frontend/lib/registry/components/universal-form-modal/types.ts @@ -96,6 +96,27 @@ export interface FormFieldConfig { }; } +// 연동 필드 매핑 설정 +export interface LinkedFieldMapping { + sourceColumn: string; // 소스 테이블 컬럼 (예: "dept_code") + targetColumn: string; // 저장할 컬럼 (예: "position_code") +} + +// 연동 필드 그룹 설정 (섹션 레벨) +// 하나의 드롭다운에서 선택 시 여러 컬럼에 자동 저장 +export interface LinkedFieldGroup { + id: string; + label: string; // 드롭다운 라벨 (예: "겸직부서") + sourceTable: string; // 소스 테이블 (예: "dept_info") + displayFormat: "name_only" | "code_name" | "name_code"; // 표시 형식 + displayColumn: string; // 표시할 컬럼 (예: "dept_name") + valueColumn: string; // 값으로 사용할 컬럼 (예: "dept_code") + mappings: LinkedFieldMapping[]; // 필드 매핑 목록 + required?: boolean; // 필수 여부 + placeholder?: string; // 플레이스홀더 + gridSpan?: number; // 그리드 스팬 (1-12) +} + // 반복 섹션 설정 export interface RepeatSectionConfig { minItems?: number; // 최소 항목 수 (기본: 0) @@ -119,6 +140,9 @@ export interface FormSectionConfig { repeatable?: boolean; repeatConfig?: RepeatSectionConfig; + // 연동 필드 그룹 (부서코드/부서명 등 연동 저장) + linkedFieldGroups?: LinkedFieldGroup[]; + // 섹션 레이아웃 columns?: number; // 필드 배치 컬럼 수 (기본: 2) gap?: string; // 필드 간 간격 @@ -257,3 +281,10 @@ export const SELECT_OPTION_TYPE_OPTIONS = [ { value: "table", label: "테이블 참조" }, { value: "code", label: "공통코드" }, ] as const; + +// 연동 필드 표시 형식 옵션 +export const LINKED_FIELD_DISPLAY_FORMAT_OPTIONS = [ + { value: "name_only", label: "이름만 (예: 영업부)" }, + { value: "code_name", label: "코드 - 이름 (예: SALES - 영업부)" }, + { value: "name_code", label: "이름 (코드) (예: 영업부 (SALES))" }, +] as const; -- 2.43.0 From 94986d4af01b4c666ebaad688c1d552076e6d8d2 Mon Sep 17 00:00:00 2001 From: SeongHyun Kim Date: Fri, 5 Dec 2025 17:25:12 +0900 Subject: [PATCH 27/64] =?UTF-8?q?refactor(UniversalFormModal):=20=EB=8B=A4?= =?UTF-8?q?=EC=A4=91=20=EC=BB=AC=EB=9F=BC=20=EC=A0=80=EC=9E=A5=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=EC=9D=84=20=ED=95=84=EB=93=9C=20=EB=A0=88=EB=B2=A8?= =?UTF-8?q?=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 섹션 레벨 linkedFieldGroups 제거, 필드 레벨 linkedFieldGroup으로 변경 - FormFieldConfig에 linkedFieldGroup 속성 추가 (enabled, sourceTable, displayColumn, displayFormat, mappings) - select 필드 렌더링에서 linkedFieldGroup 활성화 시 다중 컬럼 저장 처리 - API 응답 파싱 개선 (responseData.data 구조 지원) - 저장 실패 시 상세 에러 메시지 표시 - ConfigPanel에 다중 컬럼 저장 설정 UI 및 HelpText 추가 --- .../UniversalFormModalComponent.tsx | 299 ++++----- .../UniversalFormModalConfigPanel.tsx | 606 ++++++++---------- .../components/universal-form-modal/types.ts | 9 + 3 files changed, 384 insertions(+), 530 deletions(-) diff --git a/frontend/lib/registry/components/universal-form-modal/UniversalFormModalComponent.tsx b/frontend/lib/registry/components/universal-form-modal/UniversalFormModalComponent.tsx index 65e079ae..4f2f5c6b 100644 --- a/frontend/lib/registry/components/universal-form-modal/UniversalFormModalComponent.tsx +++ b/frontend/lib/registry/components/universal-form-modal/UniversalFormModalComponent.tsx @@ -33,7 +33,6 @@ import { FormDataState, RepeatSectionItem, SelectOptionConfig, - LinkedFieldGroup, } from "./types"; import { defaultConfig, generateUniqueId } from "./config"; @@ -121,6 +120,33 @@ export function UniversalFormModalComponent({ initializeForm(); }, [config, initialData]); + // 필드 레벨 linkedFieldGroup 데이터 로드 + useEffect(() => { + const loadData = async () => { + const tablesToLoad = new Set(); + + // 모든 섹션의 필드에서 linkedFieldGroup.sourceTable 수집 + config.sections.forEach((section) => { + section.fields.forEach((field) => { + if (field.linkedFieldGroup?.enabled && field.linkedFieldGroup?.sourceTable) { + tablesToLoad.add(field.linkedFieldGroup.sourceTable); + } + }); + }); + + // 각 테이블 데이터 로드 + for (const tableName of tablesToLoad) { + if (!linkedFieldDataCache[tableName]) { + console.log(`[UniversalFormModal] linkedFieldGroup 데이터 로드: ${tableName}`); + await loadLinkedFieldData(tableName); + } + } + }; + + loadData(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [config.sections]); + // 폼 초기화 const initializeForm = useCallback(async () => { const newFormData: FormDataState = {}; @@ -364,18 +390,22 @@ export function UniversalFormModalComponent({ const response = await apiClient.post(`/table-management/tables/${sourceTable}/data`, { page: 1, size: 1000, - autoFilter: true, // 현재 회사 기준 자동 필터링 + autoFilter: { enabled: true, filterColumn: "company_code" }, // 현재 회사 기준 자동 필터링 }); console.log(`[연동필드] ${sourceTable} API 응답:`, response.data); if (response.data?.success) { - // data가 배열인지 확인 + // data 구조 확인: { data: { data: [...], total, page, ... } } 또는 { data: [...] } const responseData = response.data?.data; if (Array.isArray(responseData)) { + // 직접 배열인 경우 data = responseData; + } else if (responseData?.data && Array.isArray(responseData.data)) { + // { data: [...], total: ... } 형태 (tableManagementService 응답) + data = responseData.data; } else if (responseData?.rows && Array.isArray(responseData.rows)) { - // { rows: [...], total: ... } 형태일 수 있음 + // { rows: [...], total: ... } 형태 (다른 API 응답) data = responseData.rows; } console.log(`[연동필드] ${sourceTable} 파싱된 데이터 ${data.length}개:`, data.slice(0, 3)); @@ -394,79 +424,6 @@ export function UniversalFormModalComponent({ [linkedFieldDataCache], ); - // 연동 필드 그룹 선택 시 매핑된 필드에 값 설정 - const handleLinkedFieldSelect = useCallback( - ( - group: LinkedFieldGroup, - selectedValue: string, - sectionId: string, - repeatItemId?: string - ) => { - // 캐시에서 데이터 찾기 - const sourceData = linkedFieldDataCache[group.sourceTable] || []; - const selectedRow = sourceData.find( - (row) => String(row[group.valueColumn]) === selectedValue - ); - - if (!selectedRow) { - console.warn("선택된 항목을 찾을 수 없습니다:", selectedValue); - return; - } - - // 매핑된 필드에 값 설정 - if (repeatItemId) { - // 반복 섹션 내 아이템 업데이트 - setRepeatSections((prev) => { - const sectionItems = prev[sectionId] || []; - const updatedItems = sectionItems.map((item) => { - if (item._id === repeatItemId) { - const updatedItem = { ...item }; - for (const mapping of group.mappings) { - updatedItem[mapping.targetColumn] = selectedRow[mapping.sourceColumn]; - } - return updatedItem; - } - return item; - }); - return { ...prev, [sectionId]: updatedItems }; - }); - } else { - // 일반 섹션 필드 업데이트 - setFormData((prev) => { - const newData = { ...prev }; - for (const mapping of group.mappings) { - newData[mapping.targetColumn] = selectedRow[mapping.sourceColumn]; - } - if (onChange) { - setTimeout(() => onChange(newData), 0); - } - return newData; - }); - } - }, - [linkedFieldDataCache, onChange], - ); - - // 연동 필드 그룹 표시 텍스트 생성 - const getLinkedFieldDisplayText = useCallback( - (group: LinkedFieldGroup, row: Record): string => { - const code = row[group.valueColumn] || ""; - const name = row[group.displayColumn] || ""; - - switch (group.displayFormat) { - case "name_only": - return name; - case "code_name": - return `${code} - ${name}`; - case "name_code": - return `${name} (${code})`; - default: - return name; - } - }, - [], - ); - // 필수 필드 검증 const validateRequiredFields = useCallback((): { valid: boolean; missingFields: string[] } => { const missingFields: string[] = []; @@ -532,7 +489,13 @@ export function UniversalFormModalComponent({ } } catch (error: any) { console.error("저장 실패:", error); - toast.error(error.message || "저장에 실패했습니다."); + // axios 에러의 경우 서버 응답 메시지 추출 + const errorMessage = + error.response?.data?.message || + error.response?.data?.error?.details || + error.message || + "저장에 실패했습니다."; + toast.error(errorMessage); } finally { setSaving(false); } @@ -749,7 +712,88 @@ export function UniversalFormModalComponent({
); - case "select": + case "select": { + // 다중 컬럼 저장이 활성화된 경우 + const lfgMappings = field.linkedFieldGroup?.mappings; + if (field.linkedFieldGroup?.enabled && field.linkedFieldGroup?.sourceTable && lfgMappings && lfgMappings.length > 0) { + const lfg = field.linkedFieldGroup; + const sourceTableName = lfg.sourceTable as string; + const cachedData = linkedFieldDataCache[sourceTableName]; + const sourceData = Array.isArray(cachedData) ? cachedData : []; + + // 첫 번째 매핑의 sourceColumn을 드롭다운 값으로 사용 + const valueColumn = lfgMappings[0].sourceColumn || ""; + + // 데이터 로드 (아직 없으면) + if (!cachedData && sourceTableName) { + loadLinkedFieldData(sourceTableName); + } + + // 표시 텍스트 생성 함수 + const getDisplayText = (row: Record): string => { + const displayVal = row[lfg.displayColumn || ""] || ""; + const valueVal = row[valueColumn] || ""; + switch (lfg.displayFormat) { + case "code_name": + return `${valueVal} - ${displayVal}`; + case "name_code": + return `${displayVal} (${valueVal})`; + case "name_only": + default: + return String(displayVal); + } + }; + + return ( + + ); + } + + // 일반 select 필드 return ( ); + } case "date": return ( @@ -854,64 +899,6 @@ export function UniversalFormModalComponent({ })(); }; - // 연동 필드 그룹 드롭다운 렌더링 - const renderLinkedFieldGroup = ( - group: LinkedFieldGroup, - sectionId: string, - repeatItemId?: string, - currentValue?: string, - sectionColumns: number = 2, - ) => { - const fieldKey = `linked_${group.id}_${repeatItemId || "main"}`; - const cachedData = linkedFieldDataCache[group.sourceTable]; - // 배열인지 확인하고, 아니면 빈 배열 사용 - const sourceData = Array.isArray(cachedData) ? cachedData : []; - const defaultSpan = Math.floor(12 / sectionColumns); - const actualGridSpan = sectionColumns === 1 ? 12 : group.gridSpan || defaultSpan; - - // 데이터 로드 (아직 없으면, 그리고 캐시에 없을 때만) - if (!cachedData && group.sourceTable) { - loadLinkedFieldData(group.sourceTable); - } - - return ( -
- - -
- ); - }; - // 섹션의 열 수에 따른 기본 gridSpan 계산 const getDefaultGridSpan = (sectionColumns: number = 2): number => { // 12칸 그리드 기준: 1열=12, 2열=6, 3열=4, 4열=3 @@ -999,18 +986,6 @@ export function UniversalFormModalComponent({ sectionColumns, ), )} - {/* 연동 필드 그룹 렌더링 */} - {(section.linkedFieldGroups || []).map((group) => { - const firstMapping = group.mappings?.[0]; - const currentValue = firstMapping ? formData[firstMapping.targetColumn] : undefined; - return renderLinkedFieldGroup( - group, - section.id, - undefined, - currentValue ? String(currentValue) : undefined, - sectionColumns, - ); - })}
@@ -1033,19 +1008,6 @@ export function UniversalFormModalComponent({ sectionColumns, ), )} - {/* 연동 필드 그룹 렌더링 */} - {(section.linkedFieldGroups || []).map((group) => { - // 매핑된 첫 번째 타겟 컬럼의 현재 값을 찾아서 선택 상태 표시 - const firstMapping = group.mappings?.[0]; - const currentValue = firstMapping ? formData[firstMapping.targetColumn] : undefined; - return renderLinkedFieldGroup( - group, - section.id, - undefined, - currentValue ? String(currentValue) : undefined, - sectionColumns, - ); - })}
@@ -1105,19 +1067,6 @@ export function UniversalFormModalComponent({ sectionColumns, ), )} - {/* 연동 필드 그룹 렌더링 (반복 섹션 내) */} - {(section.linkedFieldGroups || []).map((group) => { - // 반복 섹션 아이템 내의 매핑된 첫 번째 타겟 컬럼 값 - const firstMapping = group.mappings?.[0]; - const currentValue = firstMapping ? item[firstMapping.targetColumn] : undefined; - return renderLinkedFieldGroup( - group, - section.id, - item._id, - currentValue ? String(currentValue) : undefined, - sectionColumns, - ); - })}
))} diff --git a/frontend/lib/registry/components/universal-form-modal/UniversalFormModalConfigPanel.tsx b/frontend/lib/registry/components/universal-form-modal/UniversalFormModalConfigPanel.tsx index dc35a77e..acc53acc 100644 --- a/frontend/lib/registry/components/universal-form-modal/UniversalFormModalConfigPanel.tsx +++ b/frontend/lib/registry/components/universal-form-modal/UniversalFormModalConfigPanel.tsx @@ -37,7 +37,6 @@ import { UniversalFormModalConfigPanelProps, FormSectionConfig, FormFieldConfig, - LinkedFieldGroup, LinkedFieldMapping, FIELD_TYPE_OPTIONS, MODAL_SIZE_OPTIONS, @@ -49,11 +48,8 @@ import { defaultSectionConfig, defaultNumberingRuleConfig, defaultSelectOptionsConfig, - defaultLinkedFieldGroupConfig, - defaultLinkedFieldMappingConfig, generateSectionId, generateFieldId, - generateLinkedFieldGroupId, } from "./config"; // 도움말 텍스트 컴포넌트 @@ -93,13 +89,14 @@ export function UniversalFormModalConfigPanel({ config, onChange }: UniversalFor // eslint-disable-next-line react-hooks/exhaustive-deps }, [config.saveConfig.tableName]); - // 연동 필드 그룹의 소스 테이블 컬럼 로드 + // 다중 컬럼 저장의 소스 테이블 컬럼 로드 useEffect(() => { const allSourceTables = new Set(); config.sections.forEach((section) => { - (section.linkedFieldGroups || []).forEach((group) => { - if (group.sourceTable) { - allSourceTables.add(group.sourceTable); + // 필드 레벨의 linkedFieldGroup 확인 + section.fields.forEach((field) => { + if (field.linkedFieldGroup?.sourceTable) { + allSourceTables.add(field.linkedFieldGroup.sourceTable); } }); }); @@ -578,47 +575,6 @@ export function UniversalFormModalConfigPanel({ config, onChange }: UniversalFor 겸직 등 반복 데이터가 있는 섹션 - - - -
- - - updateSaveConfig({ - multiRowSave: { ...config.saveConfig.multiRowSave, typeColumn: e.target.value }, - }) - } - placeholder="employment_type" - className="h-6 text-[10px] mt-1" - /> - 메인/서브를 구분하는 컬럼명 -
-
- - - updateSaveConfig({ - multiRowSave: { ...config.saveConfig.multiRowSave, mainTypeValue: e.target.value }, - }) - } - className="h-6 text-[10px] mt-1" - /> -
-
- - - updateSaveConfig({ - multiRowSave: { ...config.saveConfig.multiRowSave, subTypeValue: e.target.value }, - }) - } - className="h-6 text-[10px] mt-1" - /> -
)} @@ -683,7 +639,7 @@ export function UniversalFormModalConfigPanel({ config, onChange }: UniversalFor { @@ -866,305 +822,6 @@ export function UniversalFormModalConfigPanel({ config, onChange }: UniversalFor )} - {/* 연동 필드 그룹 설정 */} -
-
- 연동 필드 그룹 - -
-

- 부서코드/부서명 연동 저장 -

- - {(selectedSection.linkedFieldGroups || []).length > 0 && ( -
- {(selectedSection.linkedFieldGroups || []).map((group, groupIndex) => ( -
-
- - #{groupIndex + 1} - - -
- - {/* 라벨 */} -
- - { - const updatedGroups = (selectedSection.linkedFieldGroups || []).map((g) => - g.id === group.id ? { ...g, label: e.target.value } : g - ); - updateSection(selectedSection.id, { linkedFieldGroups: updatedGroups }); - }} - placeholder="예: 겸직부서" - className="h-5 text-[9px] mt-0.5" - /> -
- - {/* 소스 테이블 */} -
- - -
- - {/* 표시 형식 */} -
- - -
- - {/* 표시 컬럼 / 값 컬럼 */} -
-
- - -
-
- - -
-
- - {/* 필드 매핑 */} -
-
- - -
- - {(group.mappings || []).map((mapping, mappingIndex) => ( -
- - -> - - -
- ))} -
- - {/* 기타 옵션 */} -
-
- { - const updatedGroups = (selectedSection.linkedFieldGroups || []).map((g) => - g.id === group.id ? { ...g, required: !!checked } : g - ); - updateSection(selectedSection.id, { linkedFieldGroups: updatedGroups }); - }} - className="h-3 w-3" - /> - -
-
- - { - const updatedGroups = (selectedSection.linkedFieldGroups || []).map((g) => - g.id === group.id ? { ...g, gridSpan: parseInt(e.target.value) || 6 } : g - ); - updateSection(selectedSection.id, { linkedFieldGroups: updatedGroups }); - }} - className="h-4 w-8 text-[8px] px-1" - /> -
-
-
- ))} -
- )} -
- {/* 필드 목록 */} @@ -1467,7 +1124,8 @@ export function UniversalFormModalConfigPanel({ config, onChange }: UniversalFor {/* Select 옵션 설정 */} {selectedField.fieldType === "select" && (
- + + 드롭다운에 표시될 옵션 목록을 어디서 가져올지 설정합니다. + {selectedField.selectOptions?.type === "static" && ( + 직접 입력: 옵션을 수동으로 입력합니다. (현재 미구현 - 테이블 참조 사용 권장) + )} + {selectedField.selectOptions?.type === "table" && (
+ 테이블 참조: DB 테이블에서 옵션 목록을 가져옵니다.
- + + 예: dept_info (부서 테이블)
- + @@ -1530,12 +1194,13 @@ export function UniversalFormModalConfigPanel({ config, onChange }: UniversalFor }, }) } - placeholder="code" + placeholder="dept_code" className="h-6 text-[10px] mt-1" /> + 선택 시 실제 저장되는 값 (예: D001)
- + @@ -1546,15 +1211,17 @@ export function UniversalFormModalConfigPanel({ config, onChange }: UniversalFor }, }) } - placeholder="name" + placeholder="dept_name" className="h-6 text-[10px] mt-1" /> + 드롭다운에 보여질 텍스트 (예: 영업부)
)} {selectedField.selectOptions?.type === "code" && (
+ 공통코드: 공통코드 테이블에서 옵션을 가져옵니다. + 예: POSITION_CODE (직급), STATUS_CODE (상태) 등 +
+ )} +
+ )} + + {/* 다중 컬럼 저장 (select 타입만) */} + {selectedField.fieldType === "select" && ( +
+
+ 다중 컬럼 저장 + + updateField(selectedSection.id, selectedField.id, { + linkedFieldGroup: { + ...selectedField.linkedFieldGroup, + enabled: checked, + }, + }) + } + /> +
+ + 드롭다운 선택 시 여러 컬럼에 동시 저장합니다. +
예: 부서 선택 시 부서코드 + 부서명을 각각 다른 컬럼에 저장 +
+ + {selectedField.linkedFieldGroup?.enabled && ( +
+ {/* 소스 테이블 */} +
+ + + 드롭다운 옵션을 가져올 테이블 +
+ + {/* 표시 형식 */} +
+ + +
+ + {/* 표시 컬럼 / 값 컬럼 */} +
+
+ + + 사용자가 드롭다운에서 보게 될 텍스트 (예: 영업부, 개발부) +
+
+ + {/* 저장할 컬럼 매핑 */} +
+
+ + +
+ 드롭다운 선택 시 소스 테이블의 어떤 값을 어떤 컬럼에 저장할지 설정 + + {(selectedField.linkedFieldGroup?.mappings || []).map((mapping, mappingIndex) => ( +
+
+ 매핑 #{mappingIndex + 1} + +
+
+ + +
+
+ + +
+
+ ))} + + {(selectedField.linkedFieldGroup?.mappings || []).length === 0 && ( +

+ + 버튼을 눌러 매핑을 추가하세요 +

+ )} +
)}
diff --git a/frontend/lib/registry/components/universal-form-modal/types.ts b/frontend/lib/registry/components/universal-form-modal/types.ts index 11ccfd25..de2526c2 100644 --- a/frontend/lib/registry/components/universal-form-modal/types.ts +++ b/frontend/lib/registry/components/universal-form-modal/types.ts @@ -74,6 +74,15 @@ export interface FormFieldConfig { // Select 옵션 selectOptions?: SelectOptionConfig; + // 다중 컬럼 저장 (드롭다운 선택 시 여러 컬럼에 동시 저장) + linkedFieldGroup?: { + enabled?: boolean; // 사용 여부 + sourceTable?: string; // 소스 테이블 (예: dept_info) + displayColumn?: string; // 표시할 컬럼 (예: dept_name) - 드롭다운에 보여줄 텍스트 + displayFormat?: "name_only" | "code_name" | "name_code"; // 표시 형식 + mappings?: LinkedFieldMapping[]; // 저장할 컬럼 매핑 (첫 번째 매핑의 sourceColumn이 드롭다운 값으로 사용됨) + }; + // 유효성 검사 validation?: FieldValidationConfig; -- 2.43.0 From ce7847b13da1e5919e2bbc0c4f8c5c5c08ef8c21 Mon Sep 17 00:00:00 2001 From: SeongHyun Kim Date: Fri, 5 Dec 2025 18:15:20 +0900 Subject: [PATCH 28/64] =?UTF-8?q?feat(SplitPanelLayout2):=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EC=A1=B0=EC=9D=B8=20=ED=85=8C=EC=9D=B4=EB=B8=94=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - JoinTableConfig 타입 정의 (joinTable, joinType, mainColumn, joinColumn, selectColumns) - RightPanelConfig.joinTables 배열 추가로 다중 조인 지원 - loadJoinTableData(), mergeJoinData() 함수로 클라이언트 사이드 조인 처리 - JoinTableItem 컴포넌트로 조인 테이블 설정 UI 제공 - 표시 컬럼에 sourceTable 추가로 테이블별 컬럼 구분 - 메인+조인 테이블 컬럼 통합 로드 기능 --- .../SplitPanelLayout2Component.tsx | 110 +++- .../SplitPanelLayout2ConfigPanel.tsx | 563 ++++++++++++++++-- .../components/split-panel-layout2/types.ts | 33 + 3 files changed, 655 insertions(+), 51 deletions(-) diff --git a/frontend/lib/registry/components/split-panel-layout2/SplitPanelLayout2Component.tsx b/frontend/lib/registry/components/split-panel-layout2/SplitPanelLayout2Component.tsx index 0dd00543..e8400c49 100644 --- a/frontend/lib/registry/components/split-panel-layout2/SplitPanelLayout2Component.tsx +++ b/frontend/lib/registry/components/split-panel-layout2/SplitPanelLayout2Component.tsx @@ -7,6 +7,7 @@ import { ColumnConfig, DataTransferField, ActionButtonConfig, + JoinTableConfig, } from "./types"; import { defaultConfig } from "./config"; import { cn } from "@/lib/utils"; @@ -128,6 +129,94 @@ export const SplitPanelLayout2Component: React.FC> => { + const resultMap = new Map(); + if (!joinConfig.joinTable || !joinConfig.mainColumn || !joinConfig.joinColumn || mainData.length === 0) { + return resultMap; + } + + // 메인 데이터에서 조인할 키 값들 추출 + const joinKeys = [...new Set(mainData.map((item) => item[joinConfig.mainColumn]).filter(Boolean))]; + if (joinKeys.length === 0) return resultMap; + + try { + console.log(`[SplitPanelLayout2] 조인 테이블 로드: ${joinConfig.joinTable}, 키: ${joinKeys.length}개`); + + const response = await apiClient.post(`/table-management/tables/${joinConfig.joinTable}/data`, { + page: 1, + size: 1000, + // 조인 키 값들로 필터링 + dataFilter: { + enabled: true, + matchType: "any", // OR 조건으로 여러 키 매칭 + filters: joinKeys.map((key, idx) => ({ + id: `join_key_${idx}`, + columnName: joinConfig.joinColumn, + operator: "equals", + value: String(key), + valueType: "static", + })), + }, + autoFilter: { + enabled: true, + filterColumn: "company_code", + filterType: "company", + }, + }); + + if (response.data.success) { + const joinData = response.data.data?.data || []; + // 조인 컬럼 값을 키로 하는 Map 생성 + joinData.forEach((item: any) => { + const key = item[joinConfig.joinColumn]; + if (key) { + resultMap.set(String(key), item); + } + }); + console.log(`[SplitPanelLayout2] 조인 테이블 로드 완료: ${joinData.length}건`); + } + } catch (error) { + console.error(`[SplitPanelLayout2] 조인 테이블 로드 실패 (${joinConfig.joinTable}):`, error); + } + + return resultMap; + }, []); + + // 메인 데이터에 조인 테이블 데이터 병합 + const mergeJoinData = useCallback(( + mainData: any[], + joinConfig: JoinTableConfig, + joinDataMap: Map + ): any[] => { + return mainData.map((item) => { + const joinKey = item[joinConfig.mainColumn]; + const joinRow = joinDataMap.get(String(joinKey)); + + if (joinRow && joinConfig.selectColumns) { + // 선택된 컬럼만 병합 + const mergedItem = { ...item }; + joinConfig.selectColumns.forEach((col) => { + // alias가 있으면 alias_컬럼명, 없으면 그냥 컬럼명 + const targetKey = joinConfig.alias ? `${joinConfig.alias}_${col}` : col; + // 메인 테이블에 같은 컬럼이 없으면 추가 + if (!(col in mergedItem)) { + mergedItem[col] = joinRow[col]; + } else if (joinConfig.alias) { + // 메인 테이블에 같은 컬럼이 있으면 alias로 추가 + mergedItem[targetKey] = joinRow[col]; + } + }); + return mergedItem; + } + + return item; + }); + }, []); + // 우측 데이터 로드 (좌측 선택 항목 기반) const loadRightData = useCallback(async (selectedItem: any) => { if (!config.rightPanel?.tableName || !config.joinConfig?.leftColumn || !config.joinConfig?.rightColumn || !selectedItem) { @@ -173,7 +262,24 @@ export const SplitPanelLayout2Component: React.FC 0 && data.length > 0) { + console.log(`[SplitPanelLayout2] 조인 테이블 처리 시작: ${joinTables.length}개`); + + for (const joinTableConfig of joinTables) { + const joinDataMap = await loadJoinTableData(joinTableConfig, data); + if (joinDataMap.size > 0) { + data = mergeJoinData(data, joinTableConfig, joinDataMap); + } + } + + console.log(`[SplitPanelLayout2] 조인 데이터 병합 완료`); + } + setRightData(data); console.log(`[SplitPanelLayout2] 우측 데이터 로드 완료: ${data.length}건`); } else { @@ -196,7 +302,7 @@ export const SplitPanelLayout2Component: React.FC { diff --git a/frontend/lib/registry/components/split-panel-layout2/SplitPanelLayout2ConfigPanel.tsx b/frontend/lib/registry/components/split-panel-layout2/SplitPanelLayout2ConfigPanel.tsx index da520d92..1a32f2ca 100644 --- a/frontend/lib/registry/components/split-panel-layout2/SplitPanelLayout2ConfigPanel.tsx +++ b/frontend/lib/registry/components/split-panel-layout2/SplitPanelLayout2ConfigPanel.tsx @@ -28,7 +28,7 @@ import { import { Check, ChevronsUpDown, Plus, X } from "lucide-react"; import { cn } from "@/lib/utils"; import { apiClient } from "@/lib/api/client"; -import type { SplitPanelLayout2Config, ColumnConfig, DataTransferField } from "./types"; +import type { SplitPanelLayout2Config, ColumnConfig, DataTransferField, JoinTableConfig } from "./types"; // lodash set 대체 함수 const setPath = (obj: any, path: string, value: any): any => { @@ -245,6 +245,68 @@ export const SplitPanelLayout2ConfigPanel: React.FC { + const loadJoinTableColumns = async () => { + const joinTables = config.rightPanel?.joinTables || []; + if (joinTables.length === 0 || !config.rightPanel?.tableName) return; + + // 메인 테이블 컬럼 먼저 로드 + try { + const mainResponse = await apiClient.get(`/table-management/tables/${config.rightPanel.tableName}/columns?size=200`); + let mainColumns: ColumnInfo[] = []; + + if (mainResponse.data?.success) { + const columnList = mainResponse.data.data?.columns || mainResponse.data.data || []; + mainColumns = columnList.map((c: any) => ({ + column_name: c.columnName ?? c.column_name ?? c.name ?? "", + data_type: c.dataType ?? c.data_type ?? c.type ?? "", + column_comment: c.displayName ?? c.column_comment ?? c.label ?? "", + })); + } + + // 조인 테이블들의 선택된 컬럼 추가 + const joinColumns: ColumnInfo[] = []; + for (const jt of joinTables) { + if (jt.joinTable && jt.selectColumns && jt.selectColumns.length > 0) { + try { + const joinResponse = await apiClient.get(`/table-management/tables/${jt.joinTable}/columns?size=200`); + if (joinResponse.data?.success) { + const columnList = joinResponse.data.data?.columns || joinResponse.data.data || []; + const transformedColumns = columnList.map((c: any) => ({ + column_name: c.columnName ?? c.column_name ?? c.name ?? "", + data_type: c.dataType ?? c.data_type ?? c.type ?? "", + column_comment: c.displayName ?? c.column_comment ?? c.label ?? "", + })); + + // 선택된 컬럼 추가 (테이블명으로 구분) + jt.selectColumns.forEach((selCol) => { + const col = transformedColumns.find((c: ColumnInfo) => c.column_name === selCol); + if (col) { + joinColumns.push({ + ...col, + column_comment: col.column_comment ? `${col.column_comment} (${jt.joinTable})` : `${col.column_name} (${jt.joinTable})`, + }); + } + }); + } + } catch (error) { + console.error(`조인 테이블 ${jt.joinTable} 컬럼 로드 실패:`, error); + } + } + } + + // 메인 + 조인 컬럼 합치기 + setRightColumns([...mainColumns, ...joinColumns]); + console.log(`[loadJoinTableColumns] 우측 컬럼 로드 완료: 메인 ${mainColumns.length}개 + 조인 ${joinColumns.length}개`); + } catch (error) { + console.error("조인 테이블 컬럼 로드 실패:", error); + } + }; + + loadJoinTableColumns(); + }, [config.rightPanel?.tableName, config.rightPanel?.joinTables]); + // 테이블 선택 컴포넌트 const TableSelect: React.FC<{ value: string; @@ -388,13 +450,28 @@ export const SplitPanelLayout2ConfigPanel: React.FC void; placeholder: string; - }> = ({ columns, value, onValueChange, placeholder }) => { + showTableName?: boolean; // 테이블명 표시 여부 + tableName?: string; // 메인 테이블명 (조인 컬럼과 구분용) + }> = ({ columns, value, onValueChange, placeholder, showTableName = false, tableName }) => { // 현재 선택된 값의 라벨 찾기 const selectedColumn = columns.find((col) => col.column_name === value); const displayValue = selectedColumn ? selectedColumn.column_comment || selectedColumn.column_name : value || ""; + // 컬럼이 조인 테이블에서 온 것인지 확인 (column_comment에 괄호가 있으면 조인 테이블) + const isJoinColumn = (col: ColumnInfo) => col.column_comment?.includes("(") && col.column_comment?.includes(")"); + + // 컬럼 표시 텍스트 생성 + const getColumnDisplayText = (col: ColumnInfo) => { + const label = col.column_comment || col.column_name; + if (showTableName && tableName && !isJoinColumn(col)) { + // 메인 테이블 컬럼에 테이블명 추가 + return `${label} (${tableName})`; + } + return label; + }; + return ( onUpdate("joinType", value)} + > + + + + + LEFT JOIN (데이터 없어도 표시) + INNER JOIN (데이터 있어야만 표시) + + + + + {/* 조인 조건 */} +
+ +
+
+ + onUpdate("mainColumn", value)} + placeholder="메인 테이블 컬럼" + /> +
+
=
+
+ + onUpdate("joinColumn", value)} + placeholder="조인 테이블 컬럼" + /> +
+
+
+ + {/* 가져올 컬럼 선택 */} +
+
+ + +
+

+ 조인 테이블에서 표시할 컬럼들을 선택하세요 +

+
+ {(joinTable.selectColumns || []).map((col, colIndex) => ( +
+ { + const current = [...(joinTable.selectColumns || [])]; + current[colIndex] = value; + onUpdate("selectColumns", current); + }} + placeholder="컬럼 선택" + /> + +
+ ))} + {(joinTable.selectColumns || []).length === 0 && ( +
+ 가져올 컬럼을 추가하세요 +
+ )} +
+
+ + ); + }; + // 표시 컬럼 추가 const addDisplayColumn = (side: "left" | "right") => { const path = side === "left" ? "leftPanel.displayColumns" : "rightPanel.displayColumns"; @@ -440,14 +742,25 @@ export const SplitPanelLayout2ConfigPanel: React.FC { + const updateDisplayColumn = ( + side: "left" | "right", + index: number, + fieldOrPartial: keyof ColumnConfig | Partial, + value?: any + ) => { const path = side === "left" ? "leftPanel.displayColumns" : "rightPanel.displayColumns"; const currentColumns = side === "left" ? [...(config.leftPanel?.displayColumns || [])] : [...(config.rightPanel?.displayColumns || [])]; if (currentColumns[index]) { - currentColumns[index] = { ...currentColumns[index], [field]: value }; + if (typeof fieldOrPartial === "object") { + // 여러 필드를 한 번에 업데이트 + currentColumns[index] = { ...currentColumns[index], ...fieldOrPartial }; + } else { + // 단일 필드 업데이트 + currentColumns[index] = { ...currentColumns[index], [fieldOrPartial]: value }; + } updateConfig(path, currentColumns); } }; @@ -687,6 +1000,66 @@ export const SplitPanelLayout2ConfigPanel: React.FC + {/* 추가 조인 테이블 설정 */} +
+
+ + +
+

+ 다른 테이블을 조인하면 표시할 컬럼에서 해당 테이블의 컬럼도 선택할 수 있습니다. +

+
+ {(config.rightPanel?.joinTables || []).map((joinTable, index) => ( + { + const current = [...(config.rightPanel?.joinTables || [])]; + if (typeof fieldOrPartial === "object") { + // 여러 필드를 한 번에 업데이트 + current[index] = { ...current[index], ...fieldOrPartial }; + } else { + // 단일 필드 업데이트 + current[index] = { ...current[index], [fieldOrPartial]: value }; + } + updateConfig("rightPanel.joinTables", current); + }} + onRemove={() => { + const current = config.rightPanel?.joinTables || []; + updateConfig( + "rightPanel.joinTables", + current.filter((_, i) => i !== index) + ); + }} + /> + ))} +
+
+ {/* 표시 컬럼 */}
@@ -696,52 +1069,144 @@ export const SplitPanelLayout2ConfigPanel: React.FC
+

+ 테이블을 선택한 후 해당 테이블의 컬럼을 선택하세요. +

- {(config.rightPanel?.displayColumns || []).map((col, index) => ( -
-
- 컬럼 {index + 1} - + {(config.rightPanel?.displayColumns || []).map((col, index) => { + // 선택 가능한 테이블 목록: 메인 테이블 + 조인 테이블들 + const availableTables = [ + config.rightPanel?.tableName, + ...(config.rightPanel?.joinTables || []).map((jt) => jt.joinTable), + ].filter(Boolean) as string[]; + + // 선택된 테이블의 컬럼만 필터링 + const selectedSourceTable = col.sourceTable || config.rightPanel?.tableName; + const filteredColumns = rightColumns.filter((c) => { + // 조인 테이블 컬럼인지 확인 (column_comment에 테이블명 포함) + const isJoinColumn = c.column_comment?.includes("(") && c.column_comment?.includes(")"); + + if (selectedSourceTable === config.rightPanel?.tableName) { + // 메인 테이블 선택 시: 조인 컬럼 아닌 것만 + return !isJoinColumn; + } else { + // 조인 테이블 선택 시: 해당 테이블 컬럼만 + return c.column_comment?.includes(`(${selectedSourceTable})`); + } + }); + + // 테이블 라벨 가져오기 + const getTableLabel = (tableName: string) => { + const table = tables.find((t) => t.table_name === tableName); + return table?.table_comment || tableName; + }; + + return ( +
+
+ 컬럼 {index + 1} + +
+ + {/* 테이블 선택 */} +
+ + +
+ + {/* 컬럼 선택 */} +
+ + +
+ + {/* 표시 라벨 */} +
+ + updateDisplayColumn("right", index, "label", e.target.value)} + placeholder="라벨명 (미입력 시 컬럼명 사용)" + className="h-8 text-xs" + /> +
+ + {/* 표시 위치 */} +
+ + +
- updateDisplayColumn("right", index, "name", value)} - placeholder="컬럼 선택" - /> -
- - updateDisplayColumn("right", index, "label", e.target.value)} - placeholder="라벨명 (미입력 시 컬럼명 사용)" - className="h-8 text-xs" - /> -
-
- - -
-
- ))} + ); + })} {(config.rightPanel?.displayColumns || []).length === 0 && (
표시할 컬럼을 추가하세요 diff --git a/frontend/lib/registry/components/split-panel-layout2/types.ts b/frontend/lib/registry/components/split-panel-layout2/types.ts index 872563df..4c9f7cae 100644 --- a/frontend/lib/registry/components/split-panel-layout2/types.ts +++ b/frontend/lib/registry/components/split-panel-layout2/types.ts @@ -9,6 +9,7 @@ export interface ColumnConfig { name: string; // 컬럼명 label: string; // 표시 라벨 + sourceTable?: string; // 소스 테이블명 (메인 테이블 또는 조인 테이블) displayRow?: "name" | "info"; // 표시 위치 (name: 이름 행, info: 정보 행) width?: number; // 너비 (px) bold?: boolean; // 굵게 표시 @@ -94,6 +95,17 @@ export interface RightPanelConfig { actionButtons?: ActionButtonConfig[]; // 복수 액션 버튼 배열 primaryKeyColumn?: string; // 기본키 컬럼명 (수정/삭제용, 기본: id) emptyMessage?: string; // 데이터 없을 때 메시지 + + /** + * 추가 조인 테이블 설정 + * 메인 테이블에 다른 테이블을 JOIN하여 추가 정보를 함께 표시합니다. + * + * 사용 예시: + * - 메인 테이블: user_dept (부서-사용자 관계) + * - 조인 테이블: user_info (사용자 개인정보) + * - 결과: 부서별 사원 목록에 이메일, 전화번호 등 개인정보 함께 표시 + */ + joinTables?: JoinTableConfig[]; } /** @@ -104,6 +116,27 @@ export interface JoinConfig { rightColumn: string; // 우측 테이블의 조인 컬럼 } +/** + * 추가 조인 테이블 설정 + * 우측 패널의 메인 테이블에 다른 테이블을 JOIN하여 추가 컬럼을 가져옵니다. + * + * 예시: user_dept (메인) + user_info (조인) → 부서관계 + 개인정보 함께 표시 + * + * - joinTable: 조인할 테이블명 (예: user_info) + * - joinType: 조인 방식 (LEFT JOIN 권장) + * - mainColumn: 메인 테이블의 조인 컬럼 (예: user_id) + * - joinColumn: 조인 테이블의 조인 컬럼 (예: user_id) + * - selectColumns: 조인 테이블에서 가져올 컬럼들 (예: email, cell_phone) + */ +export interface JoinTableConfig { + joinTable: string; // 조인할 테이블명 + joinType: "LEFT" | "INNER"; // 조인 타입 (LEFT: 없어도 표시, INNER: 있어야만 표시) + mainColumn: string; // 메인 테이블의 조인 컬럼 + joinColumn: string; // 조인 테이블의 조인 컬럼 + selectColumns: string[]; // 조인 테이블에서 가져올 컬럼들 + alias?: string; // 테이블 별칭 (중복 컬럼명 구분용) +} + /** * 메인 설정 */ -- 2.43.0 From b9265c97eeed8179fe470fb115b6a7749c9ca7f7 Mon Sep 17 00:00:00 2001 From: SeongHyun Kim Date: Mon, 8 Dec 2025 11:33:35 +0900 Subject: [PATCH 29/64] =?UTF-8?q?feat(UniversalFormModal):=20=EC=A0=84?= =?UTF-8?q?=EC=9A=A9=20API=20=EC=A0=80=EC=9E=A5=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EB=B0=8F=20=EC=82=AC=EC=9B=90+=EB=B6=80=EC=84=9C=20=ED=86=B5?= =?UTF-8?q?=ED=95=A9=20=EC=A0=80=EC=9E=A5=20API=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - CustomApiSaveConfig 타입 정의 (apiType, mainDeptFields, subDeptFields) - saveWithCustomApi() 함수 추가로 테이블 직접 저장 대신 전용 API 호출 - adminController에 saveUserWithDept(), getUserWithDept() API 추가 - user_info + user_dept 트랜잭션 저장, 메인 부서 변경 시 자동 겸직 전환 - ConfigPanel에 전용 API 저장 설정 UI 추가 - SplitPanelLayout2: getColumnValue()로 조인 테이블 컬럼 값 추출 개선 - 검색 컬럼 선택 시 표시 컬럼 기반으로 변경 --- .../src/controllers/adminController.ts | 394 +++++++++++++++- backend-node/src/routes/adminRoutes.ts | 4 + frontend/lib/api/user.ts | 124 +++++ .../SplitPanelLayout2Component.tsx | 48 +- .../SplitPanelLayout2ConfigPanel.tsx | 145 ++++-- .../UniversalFormModalComponent.tsx | 310 +++++++++---- .../UniversalFormModalConfigPanel.tsx | 433 +++++++++++++++--- .../components/universal-form-modal/types.ts | 41 ++ 8 files changed, 1311 insertions(+), 188 deletions(-) diff --git a/backend-node/src/controllers/adminController.ts b/backend-node/src/controllers/adminController.ts index 3ac5d26b..5bcda820 100644 --- a/backend-node/src/controllers/adminController.ts +++ b/backend-node/src/controllers/adminController.ts @@ -3,7 +3,7 @@ import { logger } from "../utils/logger"; import { AuthenticatedRequest } from "../types/auth"; import { ApiResponse } from "../types/common"; import { Client } from "pg"; -import { query, queryOne } from "../database/db"; +import { query, queryOne, getPool } from "../database/db"; import config from "../config/environment"; import { AdminService } from "../services/adminService"; import { EncryptUtil } from "../utils/encryptUtil"; @@ -3406,3 +3406,395 @@ export async function copyMenu( }); } } + +/** + * ============================================================ + * 사원 + 부서 통합 관리 API + * ============================================================ + * + * 사원 정보(user_info)와 부서 관계(user_dept)를 트랜잭션으로 동시 저장합니다. + * + * ## 핵심 기능 + * 1. user_info 테이블에 사원 개인정보 저장 + * 2. user_dept 테이블에 메인 부서 + 겸직 부서 저장 + * 3. 메인 부서 변경 시 기존 메인 → 겸직으로 자동 전환 + * 4. 트랜잭션으로 데이터 정합성 보장 + * + * ## 요청 데이터 구조 + * ```json + * { + * "userInfo": { + * "user_id": "string (필수)", + * "user_name": "string (필수)", + * "email": "string", + * "cell_phone": "string", + * "sabun": "string", + * ... + * }, + * "mainDept": { + * "dept_code": "string (필수)", + * "dept_name": "string", + * "position_name": "string" + * }, + * "subDepts": [ + * { + * "dept_code": "string (필수)", + * "dept_name": "string", + * "position_name": "string" + * } + * ] + * } + * ``` + */ + +// 사원 + 부서 저장 요청 타입 +interface UserWithDeptRequest { + userInfo: { + user_id: string; + user_name: string; + user_name_eng?: string; + user_password?: string; + email?: string; + tel?: string; + cell_phone?: string; + sabun?: string; + user_type?: string; + user_type_name?: string; + status?: string; + locale?: string; + // 메인 부서 정보 (user_info에도 저장) + dept_code?: string; + dept_name?: string; + position_code?: string; + position_name?: string; + }; + mainDept?: { + dept_code: string; + dept_name?: string; + position_name?: string; + }; + subDepts?: Array<{ + dept_code: string; + dept_name?: string; + position_name?: string; + }>; + isUpdate?: boolean; // 수정 모드 여부 +} + +/** + * POST /api/admin/users/with-dept + * 사원 + 부서 통합 저장 API + */ +export const saveUserWithDept = async ( + req: AuthenticatedRequest, + res: Response +): Promise => { + const client = await getPool().connect(); + + try { + const { userInfo, mainDept, subDepts = [], isUpdate = false } = req.body as UserWithDeptRequest; + const companyCode = req.user?.companyCode || "*"; + const currentUserId = req.user?.userId; + + logger.info("사원+부서 통합 저장 요청", { + userId: userInfo?.user_id, + mainDept: mainDept?.dept_code, + subDeptsCount: subDepts.length, + isUpdate, + companyCode, + }); + + // 필수값 검증 + if (!userInfo?.user_id || !userInfo?.user_name) { + res.status(400).json({ + success: false, + message: "사용자 ID와 이름은 필수입니다.", + error: { code: "REQUIRED_FIELD_MISSING" }, + }); + return; + } + + // 트랜잭션 시작 + await client.query("BEGIN"); + + // 1. 기존 사용자 확인 + const existingUser = await client.query( + "SELECT user_id FROM user_info WHERE user_id = $1", + [userInfo.user_id] + ); + const isExistingUser = existingUser.rows.length > 0; + + // 2. 비밀번호 암호화 (새 사용자이거나 비밀번호가 제공된 경우) + let encryptedPassword = null; + if (userInfo.user_password) { + encryptedPassword = await EncryptUtil.encrypt(userInfo.user_password); + } + + // 3. user_info 저장 (UPSERT) + // mainDept가 있으면 user_info에도 메인 부서 정보 저장 + const deptCode = mainDept?.dept_code || userInfo.dept_code || null; + const deptName = mainDept?.dept_name || userInfo.dept_name || null; + const positionName = mainDept?.position_name || userInfo.position_name || null; + + if (isExistingUser) { + // 기존 사용자 수정 + const updateFields: string[] = []; + const updateValues: any[] = []; + let paramIndex = 1; + + // 동적으로 업데이트할 필드 구성 + const fieldsToUpdate: Record = { + user_name: userInfo.user_name, + user_name_eng: userInfo.user_name_eng, + email: userInfo.email, + tel: userInfo.tel, + cell_phone: userInfo.cell_phone, + sabun: userInfo.sabun, + user_type: userInfo.user_type, + user_type_name: userInfo.user_type_name, + status: userInfo.status || "active", + locale: userInfo.locale, + dept_code: deptCode, + dept_name: deptName, + position_code: userInfo.position_code, + position_name: positionName, + company_code: companyCode !== "*" ? companyCode : undefined, + }; + + // 비밀번호가 제공된 경우에만 업데이트 + if (encryptedPassword) { + fieldsToUpdate.user_password = encryptedPassword; + } + + for (const [key, value] of Object.entries(fieldsToUpdate)) { + if (value !== undefined) { + updateFields.push(`${key} = $${paramIndex}`); + updateValues.push(value); + paramIndex++; + } + } + + if (updateFields.length > 0) { + updateValues.push(userInfo.user_id); + await client.query( + `UPDATE user_info SET ${updateFields.join(", ")} WHERE user_id = $${paramIndex}`, + updateValues + ); + } + } else { + // 새 사용자 등록 + await client.query( + `INSERT INTO user_info ( + user_id, user_name, user_name_eng, user_password, + email, tel, cell_phone, sabun, + user_type, user_type_name, status, locale, + dept_code, dept_name, position_code, position_name, + company_code, regdate + ) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, NOW())`, + [ + userInfo.user_id, + userInfo.user_name, + userInfo.user_name_eng || null, + encryptedPassword || null, + userInfo.email || null, + userInfo.tel || null, + userInfo.cell_phone || null, + userInfo.sabun || null, + userInfo.user_type || null, + userInfo.user_type_name || null, + userInfo.status || "active", + userInfo.locale || null, + deptCode, + deptName, + userInfo.position_code || null, + positionName, + companyCode !== "*" ? companyCode : null, + ] + ); + } + + // 4. user_dept 처리 + if (mainDept?.dept_code || subDepts.length > 0) { + // 4-1. 기존 부서 관계 조회 (메인 부서 변경 감지용) + const existingDepts = await client.query( + "SELECT dept_code, is_primary FROM user_dept WHERE user_id = $1", + [userInfo.user_id] + ); + const existingMainDept = existingDepts.rows.find((d: any) => d.is_primary === true); + + // 4-2. 메인 부서가 변경된 경우, 기존 메인 부서를 겸직으로 전환 + if (mainDept?.dept_code && existingMainDept && existingMainDept.dept_code !== mainDept.dept_code) { + logger.info("메인 부서 변경 감지 - 기존 메인을 겸직으로 전환", { + userId: userInfo.user_id, + oldMain: existingMainDept.dept_code, + newMain: mainDept.dept_code, + }); + + await client.query( + "UPDATE user_dept SET is_primary = false, updated_at = NOW() WHERE user_id = $1 AND dept_code = $2", + [userInfo.user_id, existingMainDept.dept_code] + ); + } + + // 4-3. 기존 겸직 부서 삭제 (메인 제외) + // 새로 입력받은 subDepts로 교체하기 위해 기존 겸직 삭제 + await client.query( + "DELETE FROM user_dept WHERE user_id = $1 AND is_primary = false", + [userInfo.user_id] + ); + + // 4-4. 메인 부서 저장 (UPSERT) + if (mainDept?.dept_code) { + await client.query( + `INSERT INTO user_dept (user_id, dept_code, is_primary, dept_name, user_name, position_name, company_code, created_at, updated_at) + VALUES ($1, $2, true, $3, $4, $5, $6, NOW(), NOW()) + ON CONFLICT (user_id, dept_code) DO UPDATE SET + is_primary = true, + dept_name = $3, + user_name = $4, + position_name = $5, + company_code = $6, + updated_at = NOW()`, + [ + userInfo.user_id, + mainDept.dept_code, + mainDept.dept_name || null, + userInfo.user_name, + mainDept.position_name || null, + companyCode !== "*" ? companyCode : null, + ] + ); + } + + // 4-5. 겸직 부서 저장 + for (const subDept of subDepts) { + if (!subDept.dept_code) continue; + + // 메인 부서와 같은 부서는 겸직으로 추가하지 않음 + if (mainDept?.dept_code === subDept.dept_code) continue; + + await client.query( + `INSERT INTO user_dept (user_id, dept_code, is_primary, dept_name, user_name, position_name, company_code, created_at, updated_at) + VALUES ($1, $2, false, $3, $4, $5, $6, NOW(), NOW()) + ON CONFLICT (user_id, dept_code) DO UPDATE SET + is_primary = false, + dept_name = $3, + user_name = $4, + position_name = $5, + company_code = $6, + updated_at = NOW()`, + [ + userInfo.user_id, + subDept.dept_code, + subDept.dept_name || null, + userInfo.user_name, + subDept.position_name || null, + companyCode !== "*" ? companyCode : null, + ] + ); + } + } + + // 트랜잭션 커밋 + await client.query("COMMIT"); + + logger.info("사원+부서 통합 저장 완료", { + userId: userInfo.user_id, + isUpdate: isExistingUser, + }); + + res.json({ + success: true, + message: isExistingUser ? "사원 정보가 수정되었습니다." : "사원이 등록되었습니다.", + data: { + userId: userInfo.user_id, + isUpdate: isExistingUser, + }, + }); + } catch (error: any) { + // 트랜잭션 롤백 + await client.query("ROLLBACK"); + + logger.error("사원+부서 통합 저장 실패", { error: error.message, body: req.body }); + + // 중복 키 에러 처리 + if (error.code === "23505") { + res.status(400).json({ + success: false, + message: "이미 존재하는 사용자 ID입니다.", + error: { code: "DUPLICATE_USER_ID" }, + }); + return; + } + + res.status(500).json({ + success: false, + message: "사원 저장 중 오류가 발생했습니다.", + error: { code: "SAVE_ERROR", details: error.message }, + }); + } finally { + client.release(); + } +} + +/** + * GET /api/admin/users/:userId/with-dept + * 사원 + 부서 정보 조회 API (수정 모달용) + */ +export const getUserWithDept = async ( + req: AuthenticatedRequest, + res: Response +): Promise => { + try { + const { userId } = req.params; + const companyCode = req.user?.companyCode || "*"; + + logger.info("사원+부서 조회 요청", { userId, companyCode }); + + // 1. user_info 조회 + let userQuery = "SELECT * FROM user_info WHERE user_id = $1"; + const userParams: any[] = [userId]; + + // 최고 관리자가 아니면 회사 필터링 + if (companyCode !== "*") { + userQuery += " AND company_code = $2"; + userParams.push(companyCode); + } + + const userResult = await query(userQuery, userParams); + + if (userResult.length === 0) { + res.status(404).json({ + success: false, + message: "사용자를 찾을 수 없습니다.", + error: { code: "USER_NOT_FOUND" }, + }); + return; + } + + const userInfo = userResult[0]; + + // 2. user_dept 조회 (메인 + 겸직) + let deptQuery = "SELECT * FROM user_dept WHERE user_id = $1 ORDER BY is_primary DESC, created_at ASC"; + const deptResult = await query(deptQuery, [userId]); + + const mainDept = deptResult.find((d: any) => d.is_primary === true); + const subDepts = deptResult.filter((d: any) => d.is_primary === false); + + res.json({ + success: true, + data: { + userInfo, + mainDept: mainDept || null, + subDepts, + }, + }); + } catch (error: any) { + logger.error("사원+부서 조회 실패", { error: error.message, userId: req.params.userId }); + res.status(500).json({ + success: false, + message: "사원 조회 중 오류가 발생했습니다.", + error: { code: "QUERY_ERROR", details: error.message }, + }); + } +} diff --git a/backend-node/src/routes/adminRoutes.ts b/backend-node/src/routes/adminRoutes.ts index 188e5580..b9964962 100644 --- a/backend-node/src/routes/adminRoutes.ts +++ b/backend-node/src/routes/adminRoutes.ts @@ -18,6 +18,8 @@ import { getDepartmentList, // 부서 목록 조회 checkDuplicateUserId, // 사용자 ID 중복 체크 saveUser, // 사용자 등록/수정 + saveUserWithDept, // 사원 + 부서 통합 저장 (NEW!) + getUserWithDept, // 사원 + 부서 조회 (NEW!) getCompanyList, getCompanyListFromDB, // 실제 DB에서 회사 목록 조회 getCompanyByCode, // 회사 단건 조회 @@ -50,8 +52,10 @@ router.delete("/menus/:menuId", deleteMenu); // 메뉴 삭제 router.get("/users", getUserList); router.get("/users/:userId", getUserInfo); // 사용자 상세 조회 router.get("/users/:userId/history", getUserHistory); // 사용자 변경이력 조회 +router.get("/users/:userId/with-dept", getUserWithDept); // 사원 + 부서 조회 (NEW!) router.patch("/users/:userId/status", changeUserStatus); // 사용자 상태 변경 router.post("/users", saveUser); // 사용자 등록/수정 (기존) +router.post("/users/with-dept", saveUserWithDept); // 사원 + 부서 통합 저장 (NEW!) router.put("/users/:userId", saveUser); // 사용자 수정 (REST API) router.put("/profile", updateProfile); // 프로필 수정 router.post("/users/check-duplicate", checkDuplicateUserId); // 사용자 ID 중복 체크 diff --git a/frontend/lib/api/user.ts b/frontend/lib/api/user.ts index 83c725c2..6a829042 100644 --- a/frontend/lib/api/user.ts +++ b/frontend/lib/api/user.ts @@ -183,6 +183,127 @@ export async function checkDuplicateUserId(userId: string) { return response.data; } +// ============================================================ +// 사원 + 부서 통합 관리 API +// ============================================================ + +/** + * 사원 + 부서 정보 저장 요청 타입 + */ +export interface SaveUserWithDeptRequest { + userInfo: { + user_id: string; + user_name: string; + user_name_eng?: string; + user_password?: string; + email?: string; + tel?: string; + cell_phone?: string; + sabun?: string; + user_type?: string; + user_type_name?: string; + status?: string; + locale?: string; + dept_code?: string; + dept_name?: string; + position_code?: string; + position_name?: string; + }; + mainDept?: { + dept_code: string; + dept_name?: string; + position_name?: string; + }; + subDepts?: Array<{ + dept_code: string; + dept_name?: string; + position_name?: string; + }>; + isUpdate?: boolean; +} + +/** + * 사원 + 부서 정보 응답 타입 + */ +export interface UserWithDeptResponse { + userInfo: Record; + mainDept: { + dept_code: string; + dept_name?: string; + position_name?: string; + is_primary: boolean; + } | null; + subDepts: Array<{ + dept_code: string; + dept_name?: string; + position_name?: string; + is_primary: boolean; + }>; +} + +/** + * 사원 + 부서 통합 저장 + * + * user_info와 user_dept 테이블에 트랜잭션으로 동시 저장합니다. + * - 메인 부서 변경 시 기존 메인은 겸직으로 자동 전환 + * - 겸직 부서는 전체 삭제 후 재입력 방식 + * + * @param data 저장할 사원 및 부서 정보 + * @returns 저장 결과 + */ +export async function saveUserWithDept(data: SaveUserWithDeptRequest): Promise> { + try { + console.log("사원+부서 통합 저장 API 호출:", data); + + const response = await apiClient.post("/admin/users/with-dept", data); + + console.log("사원+부서 통합 저장 API 응답:", response.data); + return response.data; + } catch (error: any) { + console.error("사원+부서 통합 저장 API 오류:", error); + + // Axios 에러 응답 처리 + if (error.response?.data) { + return error.response.data; + } + + return { + success: false, + message: error.message || "사원 저장 중 오류가 발생했습니다.", + }; + } +} + +/** + * 사원 + 부서 정보 조회 (수정 모달용) + * + * user_info와 user_dept 정보를 함께 조회합니다. + * + * @param userId 조회할 사용자 ID + * @returns 사원 정보 및 부서 관계 정보 + */ +export async function getUserWithDept(userId: string): Promise> { + try { + console.log("사원+부서 조회 API 호출:", userId); + + const response = await apiClient.get(`/admin/users/${userId}/with-dept`); + + console.log("사원+부서 조회 API 응답:", response.data); + return response.data; + } catch (error: any) { + console.error("사원+부서 조회 API 오류:", error); + + if (error.response?.data) { + return error.response.data; + } + + return { + success: false, + message: error.message || "사원 조회 중 오류가 발생했습니다.", + }; + } +} + // 사용자 API 객체로 export export const userAPI = { getList: getUserList, @@ -195,4 +316,7 @@ export const userAPI = { getCompanyList: getCompanyList, getDepartmentList: getDepartmentList, checkDuplicateId: checkDuplicateUserId, + // 사원 + 부서 통합 관리 + saveWithDept: saveUserWithDept, + getWithDept: getUserWithDept, }; diff --git a/frontend/lib/registry/components/split-panel-layout2/SplitPanelLayout2Component.tsx b/frontend/lib/registry/components/split-panel-layout2/SplitPanelLayout2Component.tsx index e8400c49..3bdd2015 100644 --- a/frontend/lib/registry/components/split-panel-layout2/SplitPanelLayout2Component.tsx +++ b/frontend/lib/registry/components/split-panel-layout2/SplitPanelLayout2Component.tsx @@ -200,7 +200,11 @@ export const SplitPanelLayout2Component: React.FC { - // alias가 있으면 alias_컬럼명, 없으면 그냥 컬럼명 + // 조인 테이블명.컬럼명 형식으로 저장 (sourceTable 참조용) + const tableColumnKey = `${joinConfig.joinTable}.${col}`; + mergedItem[tableColumnKey] = joinRow[col]; + + // alias가 있으면 alias_컬럼명, 없으면 그냥 컬럼명으로도 저장 (하위 호환성) const targetKey = joinConfig.alias ? `${joinConfig.alias}_${col}` : col; // 메인 테이블에 같은 컬럼이 없으면 추가 if (!(col in mergedItem)) { @@ -210,6 +214,7 @@ export const SplitPanelLayout2Component: React.FC { + // col.name이 "테이블명.컬럼명" 형식인 경우 처리 + const actualColName = col.name.includes(".") ? col.name.split(".")[1] : col.name; + const tableFromName = col.name.includes(".") ? col.name.split(".")[0] : null; + const effectiveSourceTable = col.sourceTable || tableFromName; + + // sourceTable이 설정되어 있고, 메인 테이블이 아닌 경우 + if (effectiveSourceTable && effectiveSourceTable !== config.rightPanel?.tableName) { + // 1. 테이블명.컬럼명 형식으로 먼저 시도 (mergeJoinData에서 저장한 형식) + const tableColumnKey = `${effectiveSourceTable}.${actualColName}`; + if (item[tableColumnKey] !== undefined) { + return item[tableColumnKey]; + } + // 2. 조인 테이블의 alias가 설정된 경우 alias_컬럼명으로 시도 + const joinTable = config.rightPanel?.joinTables?.find(jt => jt.joinTable === effectiveSourceTable); + if (joinTable?.alias) { + const aliasKey = `${joinTable.alias}_${actualColName}`; + if (item[aliasKey] !== undefined) { + return item[aliasKey]; + } + } + // 3. 그냥 컬럼명으로 시도 (메인 테이블에 없는 경우 조인 데이터가 직접 들어감) + if (item[actualColName] !== undefined) { + return item[actualColName]; + } + } + // 4. 기본: 컬럼명으로 직접 접근 + return item[actualColName]; + }, [config.rightPanel?.tableName, config.rightPanel?.joinTables]); + // 값 포맷팅 const formatValue = (value: any, format?: ColumnConfig["format"]): string => { if (value === null || value === undefined) return "-"; @@ -916,7 +952,7 @@ export const SplitPanelLayout2Component: React.FC 0 && (
{nameRowColumns.map((col, idx) => { - const value = item[col.name]; + const value = getColumnValue(item, col); if (value === null || value === undefined) return null; return ( @@ -931,7 +967,7 @@ export const SplitPanelLayout2Component: React.FC 0 && (
{infoRowColumns.map((col, idx) => { - const value = item[col.name]; + const value = getColumnValue(item, col); if (value === null || value === undefined) return null; return ( @@ -950,7 +986,7 @@ export const SplitPanelLayout2Component: React.FC 0 && (
{nameRowColumns.map((col, idx) => { - const value = item[col.name]; + const value = getColumnValue(item, col); if (value === null || value === undefined) return null; if (idx === 0) { return ( @@ -971,7 +1007,7 @@ export const SplitPanelLayout2Component: React.FC 0 && (
{infoRowColumns.map((col, idx) => { - const value = item[col.name]; + const value = getColumnValue(item, col); if (value === null || value === undefined) return null; return ( @@ -1079,7 +1115,7 @@ export const SplitPanelLayout2Component: React.FC ( - {formatValue(item[col.name], col.format)} + {formatValue(getColumnValue(item, col), col.format)} ))} {(config.rightPanel?.showEditButton || config.rightPanel?.showDeleteButton) && ( diff --git a/frontend/lib/registry/components/split-panel-layout2/SplitPanelLayout2ConfigPanel.tsx b/frontend/lib/registry/components/split-panel-layout2/SplitPanelLayout2ConfigPanel.tsx index 1a32f2ca..c875316a 100644 --- a/frontend/lib/registry/components/split-panel-layout2/SplitPanelLayout2ConfigPanel.tsx +++ b/frontend/lib/registry/components/split-panel-layout2/SplitPanelLayout2ConfigPanel.tsx @@ -279,12 +279,14 @@ export const SplitPanelLayout2ConfigPanel: React.FC { const col = transformedColumns.find((c: ColumnInfo) => c.column_name === selCol); if (col) { joinColumns.push({ ...col, + // 유니크 키를 위해 테이블명_컬럼명 형태로 저장 + column_name: `${jt.joinTable}.${col.column_name}`, column_comment: col.column_comment ? `${col.column_comment} (${jt.joinTable})` : `${col.column_name} (${jt.joinTable})`, }); } @@ -727,8 +729,13 @@ export const SplitPanelLayout2ConfigPanel: React.FC { - // 조인 테이블 컬럼인지 확인 (column_comment에 테이블명 포함) - const isJoinColumn = c.column_comment?.includes("(") && c.column_comment?.includes(")"); + // 조인 테이블 컬럼인지 확인 (column_name이 "테이블명.컬럼명" 형태) + const isJoinColumn = c.column_name.includes("."); if (selectedSourceTable === config.rightPanel?.tableName) { // 메인 테이블 선택 시: 조인 컬럼 아닌 것만 return !isJoinColumn; } else { - // 조인 테이블 선택 시: 해당 테이블 컬럼만 - return c.column_comment?.includes(`(${selectedSourceTable})`); + // 조인 테이블 선택 시: 해당 테이블 컬럼만 (테이블명.컬럼명 형태) + return c.column_name.startsWith(`${selectedSourceTable}.`); } }); @@ -1163,11 +1170,15 @@ export const SplitPanelLayout2ConfigPanel: React.FC { // 조인 컬럼의 경우 테이블명 제거하고 표시 const displayLabel = c.column_comment?.replace(/\s*\([^)]+\)$/, "") || c.column_name; + // 실제 컬럼명 (테이블명.컬럼명에서 컬럼명만 추출) + const actualColumnName = c.column_name.includes(".") + ? c.column_name.split(".")[1] + : c.column_name; return ( {displayLabel} - {c.column_name} + {actualColumnName} ); @@ -1231,6 +1242,7 @@ export const SplitPanelLayout2ConfigPanel: React.FC { const current = config.rightPanel?.searchColumns || []; updateConfig("rightPanel.searchColumns", [...current, { columnName: "", label: "" }]); @@ -1240,36 +1252,99 @@ export const SplitPanelLayout2ConfigPanel: React.FC
+

+ 표시할 컬럼 중 검색에 사용할 컬럼을 선택하세요. +

- {(config.rightPanel?.searchColumns || []).map((searchCol, index) => ( -
- { - const current = [...(config.rightPanel?.searchColumns || [])]; - current[index] = { ...current[index], columnName: value }; - updateConfig("rightPanel.searchColumns", current); - }} - placeholder="컬럼 선택" - /> - + {(config.rightPanel?.searchColumns || []).map((searchCol, index) => { + // 표시할 컬럼 정보를 가져와서 테이블명과 함께 표시 + const displayColumns = config.rightPanel?.displayColumns || []; + + // 유효한 컬럼만 필터링 (name이 있는 것만) + const validDisplayColumns = displayColumns.filter((dc) => dc.name && dc.name.trim() !== ""); + + // 현재 선택된 컬럼의 표시 정보 + const selectedDisplayCol = validDisplayColumns.find((dc) => dc.name === searchCol.columnName); + const selectedColInfo = rightColumns.find((c) => c.column_name === searchCol.columnName); + const selectedLabel = selectedDisplayCol?.label || + selectedColInfo?.column_comment?.replace(/\s*\([^)]+\)$/, "") || + searchCol.columnName; + const selectedTableName = selectedDisplayCol?.sourceTable || config.rightPanel?.tableName || ""; + const selectedTableLabel = tables.find((t) => t.table_name === selectedTableName)?.table_comment || selectedTableName; + + return ( +
+ + +
+ ); + })} + {(config.rightPanel?.displayColumns || []).length === 0 && ( +
+ 먼저 표시할 컬럼을 추가하세요
- ))} - {(config.rightPanel?.searchColumns || []).length === 0 && ( + )} + {(config.rightPanel?.displayColumns || []).length > 0 && (config.rightPanel?.searchColumns || []).length === 0 && (
검색할 컬럼을 추가하세요
diff --git a/frontend/lib/registry/components/universal-form-modal/UniversalFormModalComponent.tsx b/frontend/lib/registry/components/universal-form-modal/UniversalFormModalComponent.tsx index 4f2f5c6b..3938645d 100644 --- a/frontend/lib/registry/components/universal-form-modal/UniversalFormModalComponent.tsx +++ b/frontend/lib/registry/components/universal-form-modal/UniversalFormModalComponent.tsx @@ -444,65 +444,8 @@ export function UniversalFormModalComponent({ return { valid: missingFields.length === 0, missingFields }; }, [config.sections, formData]); - // 저장 처리 - const handleSave = useCallback(async () => { - if (!config.saveConfig.tableName) { - toast.error("저장할 테이블이 설정되지 않았습니다."); - return; - } - - // 필수 필드 검증 - const { valid, missingFields } = validateRequiredFields(); - if (!valid) { - toast.error(`필수 항목을 입력해주세요: ${missingFields.join(", ")}`); - return; - } - - setSaving(true); - - try { - const { multiRowSave } = config.saveConfig; - - if (multiRowSave?.enabled) { - // 다중 행 저장 - await saveMultipleRows(); - } else { - // 단일 행 저장 - await saveSingleRow(); - } - - // 저장 후 동작 - if (config.saveConfig.afterSave?.showToast) { - toast.success("저장되었습니다."); - } - - if (config.saveConfig.afterSave?.refreshParent) { - window.dispatchEvent(new CustomEvent("refreshParentData")); - } - - // onSave 콜백은 저장 완료 알림용으로만 사용 - // 실제 저장은 이미 위에서 완료됨 (saveSingleRow 또는 saveMultipleRows) - // EditModal 등 부모 컴포넌트의 저장 로직이 다시 실행되지 않도록 - // _saveCompleted 플래그를 포함하여 전달 - if (onSave) { - onSave({ ...formData, _saveCompleted: true }); - } - } catch (error: any) { - console.error("저장 실패:", error); - // axios 에러의 경우 서버 응답 메시지 추출 - const errorMessage = - error.response?.data?.message || - error.response?.data?.error?.details || - error.message || - "저장에 실패했습니다."; - toast.error(errorMessage); - } finally { - setSaving(false); - } - }, [config, formData, repeatSections, onSave, validateRequiredFields]); - // 단일 행 저장 - const saveSingleRow = async () => { + const saveSingleRow = useCallback(async () => { const dataToSave = { ...formData }; // 메타데이터 필드 제거 @@ -534,15 +477,15 @@ export function UniversalFormModalComponent({ if (!response.data?.success) { throw new Error(response.data?.message || "저장 실패"); } - }; + }, [config.sections, config.saveConfig.tableName, formData]); // 다중 행 저장 (겸직 등) - const saveMultipleRows = async () => { + const saveMultipleRows = useCallback(async () => { const { multiRowSave } = config.saveConfig; if (!multiRowSave) return; - let { commonFields = [], repeatSectionId = "", typeColumn, mainTypeValue, subTypeValue, mainSectionFields = [] } = - multiRowSave; + let { commonFields = [], repeatSectionId = "" } = multiRowSave; + const { typeColumn, mainTypeValue, subTypeValue, mainSectionFields = [] } = multiRowSave; // 공통 필드가 설정되지 않은 경우, 기본정보 섹션의 모든 필드를 공통 필드로 사용 if (commonFields.length === 0) { @@ -563,56 +506,57 @@ export function UniversalFormModalComponent({ // 디버깅: 설정 확인 console.log("[UniversalFormModal] 다중 행 저장 설정:", { commonFields, - mainSectionFields, repeatSectionId, + mainSectionFields, typeColumn, mainTypeValue, subTypeValue, + repeatSections, + formData, }); - console.log("[UniversalFormModal] 현재 formData:", formData); - // 공통 필드 데이터 추출 - const commonData: Record = {}; - for (const fieldName of commonFields) { + // 반복 섹션 데이터 + const repeatItems = repeatSections[repeatSectionId] || []; + + // 저장할 행들 생성 + const rowsToSave: any[] = []; + + // 공통 데이터 (모든 행에 적용) + const commonData: any = {}; + commonFields.forEach((fieldName) => { if (formData[fieldName] !== undefined) { commonData[fieldName] = formData[fieldName]; } - } - console.log("[UniversalFormModal] 추출된 공통 데이터:", commonData); + }); - // 메인 섹션 필드 데이터 추출 - const mainSectionData: Record = {}; - if (mainSectionFields && mainSectionFields.length > 0) { - for (const fieldName of mainSectionFields) { - if (formData[fieldName] !== undefined) { - mainSectionData[fieldName] = formData[fieldName]; - } + // 메인 섹션 필드 데이터 (메인 행에만 적용되는 부서/직급 등) + const mainSectionData: any = {}; + mainSectionFields.forEach((fieldName) => { + if (formData[fieldName] !== undefined) { + mainSectionData[fieldName] = formData[fieldName]; } - } - console.log("[UniversalFormModal] 추출된 메인 섹션 데이터:", mainSectionData); + }); - // 저장할 행들 준비 - const rowsToSave: Record[] = []; + console.log("[UniversalFormModal] 공통 데이터:", commonData); + console.log("[UniversalFormModal] 메인 섹션 데이터:", mainSectionData); + console.log("[UniversalFormModal] 반복 항목:", repeatItems); - // 1. 메인 행 생성 - const mainRow: Record = { - ...commonData, - ...mainSectionData, - }; + // 메인 행 (공통 데이터 + 메인 섹션 필드) + const mainRow: any = { ...commonData, ...mainSectionData }; if (typeColumn) { mainRow[typeColumn] = mainTypeValue || "main"; } rowsToSave.push(mainRow); - // 2. 반복 섹션 행들 생성 (겸직 등) - const repeatItems = repeatSections[repeatSectionId] || []; + // 반복 섹션 행들 (공통 데이터 + 반복 섹션 필드) for (const item of repeatItems) { - const subRow: Record = { ...commonData }; + const subRow: any = { ...commonData }; - // 반복 섹션 필드 복사 - Object.keys(item).forEach((key) => { - if (!key.startsWith("_")) { - subRow[key] = item[key]; + // 반복 섹션의 필드 값 추가 + const repeatSection = config.sections.find((s) => s.id === repeatSectionId); + repeatSection?.fields.forEach((field) => { + if (item[field.columnName] !== undefined) { + subRow[field.columnName] = item[field.columnName]; } }); @@ -666,7 +610,187 @@ export function UniversalFormModalComponent({ } console.log(`[UniversalFormModal] ${rowsToSave.length}개 행 저장 완료`); - }; + }, [config.sections, config.saveConfig, formData, repeatSections]); + + // 커스텀 API 저장 (사원+부서 통합 저장 등) + const saveWithCustomApi = useCallback(async () => { + const { customApiSave } = config.saveConfig; + if (!customApiSave) return; + + console.log("[UniversalFormModal] 커스텀 API 저장 시작:", customApiSave.apiType); + + const saveUserWithDeptApi = async () => { + const { mainDeptFields, subDeptSectionId, subDeptFields } = customApiSave; + + // 1. userInfo 데이터 구성 + const userInfo: Record = {}; + + // 모든 필드에서 user_info에 해당하는 데이터 추출 + config.sections.forEach((section) => { + if (section.repeatable) return; // 반복 섹션은 제외 + + section.fields.forEach((field) => { + const value = formData[field.columnName]; + if (value !== undefined && value !== null && value !== "") { + userInfo[field.columnName] = value; + } + }); + }); + + // 2. mainDept 데이터 구성 + let mainDept: { dept_code: string; dept_name?: string; position_name?: string } | undefined; + + if (mainDeptFields) { + const deptCode = formData[mainDeptFields.deptCodeField || "dept_code"]; + if (deptCode) { + mainDept = { + dept_code: deptCode, + dept_name: formData[mainDeptFields.deptNameField || "dept_name"], + position_name: formData[mainDeptFields.positionNameField || "position_name"], + }; + } + } + + // 3. subDepts 데이터 구성 (반복 섹션에서) + const subDepts: Array<{ dept_code: string; dept_name?: string; position_name?: string }> = []; + + if (subDeptSectionId && repeatSections[subDeptSectionId]) { + const subDeptItems = repeatSections[subDeptSectionId]; + const deptCodeField = subDeptFields?.deptCodeField || "dept_code"; + const deptNameField = subDeptFields?.deptNameField || "dept_name"; + const positionNameField = subDeptFields?.positionNameField || "position_name"; + + subDeptItems.forEach((item) => { + const deptCode = item[deptCodeField]; + if (deptCode) { + subDepts.push({ + dept_code: deptCode, + dept_name: item[deptNameField], + position_name: item[positionNameField], + }); + } + }); + } + + // 4. API 호출 + console.log("[UniversalFormModal] 사원+부서 저장 데이터:", { userInfo, mainDept, subDepts }); + + const { saveUserWithDept } = await import("@/lib/api/user"); + const response = await saveUserWithDept({ + userInfo: userInfo as any, + mainDept, + subDepts, + isUpdate: !!initialData?.user_id, // 초기 데이터가 있으면 수정 모드 + }); + + if (!response.success) { + throw new Error(response.message || "사원 저장 실패"); + } + + console.log("[UniversalFormModal] 사원+부서 저장 완료:", response.data); + }; + + const saveWithGenericCustomApi = async () => { + if (!customApiSave.customEndpoint) { + throw new Error("커스텀 API 엔드포인트가 설정되지 않았습니다."); + } + + const dataToSave = { ...formData }; + + // 메타데이터 필드 제거 + Object.keys(dataToSave).forEach((key) => { + if (key.startsWith("_")) { + delete dataToSave[key]; + } + }); + + // 반복 섹션 데이터 포함 + if (Object.keys(repeatSections).length > 0) { + dataToSave._repeatSections = repeatSections; + } + + const method = customApiSave.customMethod || "POST"; + const response = method === "PUT" + ? await apiClient.put(customApiSave.customEndpoint, dataToSave) + : await apiClient.post(customApiSave.customEndpoint, dataToSave); + + if (!response.data?.success) { + throw new Error(response.data?.message || "저장 실패"); + } + }; + + switch (customApiSave.apiType) { + case "user-with-dept": + await saveUserWithDeptApi(); + break; + case "custom": + await saveWithGenericCustomApi(); + break; + default: + throw new Error(`지원하지 않는 API 타입: ${customApiSave.apiType}`); + } + }, [config.sections, config.saveConfig, formData, repeatSections, initialData]); + + // 저장 처리 + const handleSave = useCallback(async () => { + // 커스텀 API 저장 모드가 아닌 경우에만 테이블명 체크 + if (!config.saveConfig.customApiSave?.enabled && !config.saveConfig.tableName) { + toast.error("저장할 테이블이 설정되지 않았습니다."); + return; + } + + // 필수 필드 검증 + const { valid, missingFields } = validateRequiredFields(); + if (!valid) { + toast.error(`필수 항목을 입력해주세요: ${missingFields.join(", ")}`); + return; + } + + setSaving(true); + + try { + const { multiRowSave, customApiSave } = config.saveConfig; + + // 커스텀 API 저장 모드 + if (customApiSave?.enabled) { + await saveWithCustomApi(); + } else if (multiRowSave?.enabled) { + // 다중 행 저장 + await saveMultipleRows(); + } else { + // 단일 행 저장 + await saveSingleRow(); + } + + // 저장 후 동작 + if (config.saveConfig.afterSave?.showToast) { + toast.success("저장되었습니다."); + } + + if (config.saveConfig.afterSave?.refreshParent) { + window.dispatchEvent(new CustomEvent("refreshParentData")); + } + + // onSave 콜백은 저장 완료 알림용으로만 사용 + // 실제 저장은 이미 위에서 완료됨 (saveSingleRow 또는 saveMultipleRows) + // EditModal 등 부모 컴포넌트의 저장 로직이 다시 실행되지 않도록 + // _saveCompleted 플래그를 포함하여 전달 + if (onSave) { + onSave({ ...formData, _saveCompleted: true }); + } + } catch (error: any) { + console.error("저장 실패:", error); + // axios 에러의 경우 서버 응답 메시지 추출 + const errorMessage = + error.response?.data?.message || + error.response?.data?.error?.details || + error.message || + "저장에 실패했습니다."; + toast.error(errorMessage); + } finally { + setSaving(false); + } + }, [config, formData, repeatSections, onSave, validateRequiredFields, saveSingleRow, saveMultipleRows, saveWithCustomApi]); // 폼 초기화 const handleReset = useCallback(() => { diff --git a/frontend/lib/registry/components/universal-form-modal/UniversalFormModalConfigPanel.tsx b/frontend/lib/registry/components/universal-form-modal/UniversalFormModalConfigPanel.tsx index acc53acc..8552cd6f 100644 --- a/frontend/lib/registry/components/universal-form-modal/UniversalFormModalConfigPanel.tsx +++ b/frontend/lib/registry/components/universal-form-modal/UniversalFormModalConfigPanel.tsx @@ -416,62 +416,74 @@ export function UniversalFormModalConfigPanel({ config, onChange }: UniversalFor {/* 저장 테이블 - Combobox */}
- - - - - - - - - 테이블을 찾을 수 없습니다 - - {tables.map((t) => ( - { - updateSaveConfig({ tableName: t.name }); - setTableSelectOpen(false); - }} - className="text-xs" - > - - {t.name} - {t.label !== t.name && ( - ({t.label}) - )} - - ))} - - - - - - {config.saveConfig.tableName && ( -

- 컬럼 {currentColumns.length}개 로드됨 -

+ {config.saveConfig.customApiSave?.enabled ? ( +
+ 전용 API 저장 모드에서는 API가 테이블 저장을 처리합니다. + {config.saveConfig.customApiSave?.apiType === "user-with-dept" && ( + 대상 테이블: user_info + user_dept + )} +
+ ) : ( + <> + + + + + + + + + 테이블을 찾을 수 없습니다 + + {tables.map((t) => ( + { + updateSaveConfig({ tableName: t.name }); + setTableSelectOpen(false); + }} + className="text-xs" + > + + {t.name} + {t.label !== t.name && ( + ({t.label}) + )} + + ))} + + + + + + {config.saveConfig.tableName && ( +

+ 컬럼 {currentColumns.length}개 로드됨 +

+ )} + )}
- {/* 다중 행 저장 설정 */} + {/* 다중 행 저장 설정 - 전용 API 모드에서는 숨김 */} + {!config.saveConfig.customApiSave?.enabled && (
다중 행 저장 @@ -578,6 +590,321 @@ export function UniversalFormModalConfigPanel({ config, onChange }: UniversalFor
)}
+ )} + + {/* 커스텀 API 저장 설정 */} +
+
+ 전용 API 저장 + + updateSaveConfig({ + customApiSave: { ...config.saveConfig.customApiSave, enabled: checked, apiType: "user-with-dept" }, + }) + } + /> +
+ 테이블 직접 저장 대신 전용 백엔드 API를 사용합니다. 복잡한 비즈니스 로직(다중 테이블, 트랜잭션)에 적합합니다. + + {config.saveConfig.customApiSave?.enabled && ( +
+ {/* API 타입 선택 */} +
+ + +
+ + {/* 사원+부서 통합 저장 설정 */} + {config.saveConfig.customApiSave?.apiType === "user-with-dept" && ( +
+

+ user_info와 user_dept 테이블에 트랜잭션으로 저장합니다. + 메인 부서 변경 시 기존 메인은 겸직으로 자동 전환됩니다. +

+ + {/* 메인 부서 필드 매핑 */} +
+ +
+
+ 부서코드: + +
+
+ 부서명: + +
+
+ 직급: + +
+
+
+ + {/* 겸직 부서 반복 섹션 */} +
+ + +
+ + {/* 겸직 부서 필드 매핑 */} + {config.saveConfig.customApiSave?.subDeptSectionId && ( +
+ +
+
+ 부서코드: + +
+
+ 부서명: + +
+
+ 직급: + +
+
+
+ )} +
+ )} + + {/* 커스텀 API 설정 */} + {config.saveConfig.customApiSave?.apiType === "custom" && ( +
+
+ + + updateSaveConfig({ + customApiSave: { ...config.saveConfig.customApiSave, customEndpoint: e.target.value }, + }) + } + placeholder="/api/custom/endpoint" + className="h-6 text-[10px] mt-1" + /> +
+
+ + +
+
+ )} +
+ )} +
{/* 저장 후 동작 */}
diff --git a/frontend/lib/registry/components/universal-form-modal/types.ts b/frontend/lib/registry/components/universal-form-modal/types.ts index de2526c2..04f7df0e 100644 --- a/frontend/lib/registry/components/universal-form-modal/types.ts +++ b/frontend/lib/registry/components/universal-form-modal/types.ts @@ -178,6 +178,9 @@ export interface SaveConfig { // 다중 행 저장 설정 multiRowSave?: MultiRowSaveConfig; + // 커스텀 API 저장 설정 (테이블 직접 저장 대신 전용 API 사용) + customApiSave?: CustomApiSaveConfig; + // 저장 후 동작 (간편 설정) showToast?: boolean; // 토스트 메시지 (기본: true) refreshParent?: boolean; // 부모 새로고침 (기본: true) @@ -191,6 +194,44 @@ export interface SaveConfig { }; } +/** + * 커스텀 API 저장 설정 + * + * 테이블 직접 저장 대신 전용 백엔드 API를 호출합니다. + * 복잡한 비즈니스 로직(다중 테이블 저장, 트랜잭션 등)에 사용합니다. + * + * ## 지원하는 API 타입 + * - `user-with-dept`: 사원 + 부서 통합 저장 (/api/admin/users/with-dept) + * + * ## 데이터 매핑 설정 + * - `userInfoFields`: user_info 테이블에 저장할 필드 매핑 + * - `mainDeptFields`: 메인 부서 정보 필드 매핑 + * - `subDeptSectionId`: 겸직 부서 반복 섹션 ID + */ +export interface CustomApiSaveConfig { + enabled: boolean; + apiType: "user-with-dept" | "custom"; // 확장 가능한 API 타입 + + // user-with-dept 전용 설정 + userInfoFields?: string[]; // user_info에 저장할 필드 목록 (columnName) + mainDeptFields?: { + deptCodeField?: string; // 메인 부서코드 필드명 + deptNameField?: string; // 메인 부서명 필드명 + positionNameField?: string; // 메인 직급 필드명 + }; + subDeptSectionId?: string; // 겸직 부서 반복 섹션 ID + subDeptFields?: { + deptCodeField?: string; // 겸직 부서코드 필드명 + deptNameField?: string; // 겸직 부서명 필드명 + positionNameField?: string; // 겸직 직급 필드명 + }; + + // 커스텀 API 전용 설정 + customEndpoint?: string; // 커스텀 API 엔드포인트 + customMethod?: "POST" | "PUT"; // HTTP 메서드 + customDataTransform?: string; // 데이터 변환 함수명 (추후 확장) +} + // 모달 설정 export interface ModalConfig { title: string; -- 2.43.0 From 3fc6bd55387be660d375a8f157d1a253ffc9b9b7 Mon Sep 17 00:00:00 2001 From: SeongHyun Kim Date: Mon, 8 Dec 2025 15:34:19 +0900 Subject: [PATCH 30/64] =?UTF-8?q?feat(ModalRepeaterTable):=20=ED=95=AD?= =?UTF-8?q?=EB=AA=A9=20=EA=B2=80=EC=83=89=20=EB=AA=A8=EB=8B=AC=20=EC=BB=AC?= =?UTF-8?q?=EB=9F=BC=20=EB=9D=BC=EB=B2=A8=20=EC=84=A4=EC=A0=95=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - sourceColumnLabels 타입 정의 (Record) - ConfigPanel에 소스 컬럼별 표시 라벨 입력 UI 추가 - columnLabels 생성 시 sourceColumnLabels 우선 적용 - 컬럼 삭제 시 해당 라벨도 함께 삭제 - 빈 상태 안내 메시지 추가 --- .../ModalRepeaterTableComponent.tsx | 10 ++- .../ModalRepeaterTableConfigPanel.tsx | 82 ++++++++++++++----- .../components/modal-repeater-table/types.ts | 1 + 3 files changed, 68 insertions(+), 25 deletions(-) diff --git a/frontend/lib/registry/components/modal-repeater-table/ModalRepeaterTableComponent.tsx b/frontend/lib/registry/components/modal-repeater-table/ModalRepeaterTableComponent.tsx index 3a5b43dd..6e0432d1 100644 --- a/frontend/lib/registry/components/modal-repeater-table/ModalRepeaterTableComponent.tsx +++ b/frontend/lib/registry/components/modal-repeater-table/ModalRepeaterTableComponent.tsx @@ -185,6 +185,9 @@ export function ModalRepeaterTableComponent({ const rawSourceColumns = componentConfig?.sourceColumns || propSourceColumns || []; const sourceColumns = rawSourceColumns.filter((col: string) => col && col.trim() !== ""); + // 모달 컬럼 라벨 (컬럼명 -> 표시 라벨) + const sourceColumnLabels = componentConfig?.sourceColumnLabels || {}; + const sourceSearchFields = componentConfig?.sourceSearchFields || propSourceSearchFields || []; const modalTitle = componentConfig?.modalTitle || propModalTitle || "항목 검색"; const modalButtonText = componentConfig?.modalButtonText || propModalButtonText || "품목 검색"; @@ -546,11 +549,12 @@ export function ModalRepeaterTableComponent({ handleChange(newData); }; - // 컬럼명 -> 라벨명 매핑 생성 + // 컬럼명 -> 라벨명 매핑 생성 (sourceColumnLabels 우선, 없으면 columns에서 가져옴) const columnLabels = columns.reduce((acc, col) => { - acc[col.field] = col.label; + // sourceColumnLabels에 정의된 라벨 우선 사용 + acc[col.field] = sourceColumnLabels[col.field] || col.label; return acc; - }, {} as Record); + }, { ...sourceColumnLabels } as Record); return (
diff --git a/frontend/lib/registry/components/modal-repeater-table/ModalRepeaterTableConfigPanel.tsx b/frontend/lib/registry/components/modal-repeater-table/ModalRepeaterTableConfigPanel.tsx index 348ae045..507ab54d 100644 --- a/frontend/lib/registry/components/modal-repeater-table/ModalRepeaterTableConfigPanel.tsx +++ b/frontend/lib/registry/components/modal-repeater-table/ModalRepeaterTableConfigPanel.tsx @@ -520,7 +520,7 @@ export function ModalRepeaterTableConfigPanel({ {/* 소스 컬럼 */}
- +

- 모달 테이블에 표시할 컬럼들 + 모달 테이블에 표시할 컬럼과 헤더 라벨을 설정합니다

-
+
{(localConfig.sourceColumns || []).map((column, index) => ( -
- +
+
+ {/* 컬럼 선택 */} +
+ + +
+ {/* 라벨 입력 */} +
+ + { + const newLabels = { ...(localConfig.sourceColumnLabels || {}) }; + if (e.target.value) { + newLabels[column] = e.target.value; + } else { + delete newLabels[column]; + } + updateConfig({ sourceColumnLabels: newLabels }); + }} + placeholder={tableColumns.find(c => c.columnName === column)?.displayName || column || "라벨 입력"} + className="h-8 text-xs" + disabled={!column} + /> +
+
))} + {(localConfig.sourceColumns || []).length === 0 && ( +
+

+ "추가" 버튼을 클릭하여 모달에 표시할 컬럼을 추가하세요 +

+
+ )}
diff --git a/frontend/lib/registry/components/modal-repeater-table/types.ts b/frontend/lib/registry/components/modal-repeater-table/types.ts index 180830ee..c0cac4a9 100644 --- a/frontend/lib/registry/components/modal-repeater-table/types.ts +++ b/frontend/lib/registry/components/modal-repeater-table/types.ts @@ -7,6 +7,7 @@ export interface ModalRepeaterTableProps { // 소스 데이터 (모달에서 가져올 데이터) sourceTable: string; // 검색할 테이블 (예: "item_info") sourceColumns: string[]; // 모달에 표시할 컬럼들 + sourceColumnLabels?: Record; // 모달 컬럼 라벨 (컬럼명 -> 표시 라벨) sourceSearchFields?: string[]; // 검색 가능한 필드들 // 🆕 저장 대상 테이블 설정 -- 2.43.0 From cd1777267f9294e281f344a8cfaa2e3f8e42e39b Mon Sep 17 00:00:00 2001 From: leeheejin Date: Mon, 8 Dec 2025 16:18:44 +0900 Subject: [PATCH 31/64] =?UTF-8?q?=EC=84=B8=EA=B8=88=EA=B3=84=EC=82=B0?= =?UTF-8?q?=EC=84=9C=20=EC=97=85=EA=B7=B8=EB=A0=88=EC=9D=B4=EB=93=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/controllers/taxInvoiceController.ts | 34 ++ backend-node/src/routes/taxInvoiceRoutes.ts | 3 + .../src/services/taxInvoiceService.ts | 176 +++++++++- .../components/tax-invoice/CostTypeStats.tsx | 329 ++++++++++++++++++ .../components/tax-invoice/TaxInvoiceForm.tsx | 24 +- .../components/tax-invoice/TaxInvoiceList.tsx | 24 +- frontend/lib/api/taxInvoice.ts | 61 ++++ 7 files changed, 643 insertions(+), 8 deletions(-) create mode 100644 frontend/components/tax-invoice/CostTypeStats.tsx diff --git a/backend-node/src/controllers/taxInvoiceController.ts b/backend-node/src/controllers/taxInvoiceController.ts index 588a856c..5b7f4436 100644 --- a/backend-node/src/controllers/taxInvoiceController.ts +++ b/backend-node/src/controllers/taxInvoiceController.ts @@ -36,6 +36,7 @@ export class TaxInvoiceController { end_date, search, buyer_name, + cost_type, } = req.query; const result = await TaxInvoiceService.getList(companyCode, { @@ -47,6 +48,7 @@ export class TaxInvoiceController { end_date: end_date as string | undefined, search: search as string | undefined, buyer_name: buyer_name as string | undefined, + cost_type: cost_type as any, }); res.json({ @@ -327,5 +329,37 @@ export class TaxInvoiceController { }); } } + + /** + * 비용 유형별 통계 조회 + * GET /api/tax-invoice/stats/cost-type + */ + static async getCostTypeStats(req: AuthenticatedRequest, res: Response): Promise { + try { + const companyCode = req.user?.companyCode; + if (!companyCode) { + res.status(401).json({ success: false, message: "인증 정보가 없습니다." }); + return; + } + + const { year, month } = req.query; + const targetYear = year ? parseInt(year as string, 10) : undefined; + const targetMonth = month ? parseInt(month as string, 10) : undefined; + + const result = await TaxInvoiceService.getCostTypeStats(companyCode, targetYear, targetMonth); + + res.json({ + success: true, + data: result, + period: { year: targetYear, month: targetMonth }, + }); + } catch (error: any) { + logger.error("비용 유형별 통계 조회 실패:", error); + res.status(500).json({ + success: false, + message: error.message || "통계 조회 중 오류가 발생했습니다.", + }); + } + } } diff --git a/backend-node/src/routes/taxInvoiceRoutes.ts b/backend-node/src/routes/taxInvoiceRoutes.ts index aa663faf..1a4bc6f0 100644 --- a/backend-node/src/routes/taxInvoiceRoutes.ts +++ b/backend-node/src/routes/taxInvoiceRoutes.ts @@ -18,6 +18,9 @@ router.get("/", TaxInvoiceController.getList); // 월별 통계 (상세 조회보다 먼저 정의해야 함) router.get("/stats/monthly", TaxInvoiceController.getMonthlyStats); +// 비용 유형별 통계 +router.get("/stats/cost-type", TaxInvoiceController.getCostTypeStats); + // 상세 조회 router.get("/:id", TaxInvoiceController.getById); diff --git a/backend-node/src/services/taxInvoiceService.ts b/backend-node/src/services/taxInvoiceService.ts index 63e94d5e..73577bb0 100644 --- a/backend-node/src/services/taxInvoiceService.ts +++ b/backend-node/src/services/taxInvoiceService.ts @@ -6,6 +6,9 @@ import { query, transaction } from "../database/db"; import { logger } from "../utils/logger"; +// 비용 유형 타입 +export type CostType = "purchase" | "installation" | "repair" | "maintenance" | "disposal" | "other"; + // 세금계산서 타입 정의 export interface TaxInvoice { id: string; @@ -46,6 +49,9 @@ export interface TaxInvoice { // 첨부파일 (JSON 배열로 저장) attachments: TaxInvoiceAttachment[] | null; + // 비용 유형 (구매/설치/수리/유지보수/폐기/기타) + cost_type: CostType | null; + created_date: string; updated_date: string; writer: string; @@ -99,6 +105,7 @@ export interface CreateTaxInvoiceDto { customer_id?: string; items?: CreateTaxInvoiceItemDto[]; attachments?: TaxInvoiceAttachment[]; // 첨부파일 + cost_type?: CostType; // 비용 유형 } export interface CreateTaxInvoiceItemDto { @@ -121,6 +128,7 @@ export interface TaxInvoiceListParams { end_date?: string; search?: string; buyer_name?: string; + cost_type?: CostType; // 비용 유형 필터 } export class TaxInvoiceService { @@ -169,6 +177,7 @@ export class TaxInvoiceService { end_date, search, buyer_name, + cost_type, } = params; const offset = (page - 1) * pageSize; @@ -214,6 +223,12 @@ export class TaxInvoiceService { paramIndex++; } + if (cost_type) { + conditions.push(`cost_type = $${paramIndex}`); + values.push(cost_type); + paramIndex++; + } + const whereClause = conditions.join(" AND "); // 전체 개수 조회 @@ -282,13 +297,13 @@ export class TaxInvoiceService { supplier_business_type, supplier_business_item, buyer_business_no, buyer_name, buyer_ceo_name, buyer_address, buyer_email, supply_amount, tax_amount, total_amount, invoice_date, - remarks, order_id, customer_id, attachments, writer + remarks, order_id, customer_id, attachments, cost_type, writer ) VALUES ( $1, $2, $3, 'draft', $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, - $19, $20, $21, $22, $23 + $19, $20, $21, $22, $23, $24 ) RETURNING *`, [ companyCode, @@ -313,6 +328,7 @@ export class TaxInvoiceService { data.order_id || null, data.customer_id || null, data.attachments ? JSON.stringify(data.attachments) : null, + data.cost_type || null, userId, ] ); @@ -402,6 +418,7 @@ export class TaxInvoiceService { invoice_date = COALESCE($17, invoice_date), remarks = COALESCE($18, remarks), attachments = $19, + cost_type = COALESCE($20, cost_type), updated_date = NOW() WHERE id = $1 AND company_code = $2 RETURNING *`, @@ -425,6 +442,7 @@ export class TaxInvoiceService { data.invoice_date, data.remarks, data.attachments ? JSON.stringify(data.attachments) : null, + data.cost_type, ] ); @@ -608,5 +626,159 @@ export class TaxInvoiceService { return stats; } + + /** + * 비용 유형별 통계 조회 + */ + static async getCostTypeStats( + companyCode: string, + year?: number, + month?: number + ): Promise<{ + by_cost_type: Array<{ + cost_type: CostType | null; + count: number; + supply_amount: number; + tax_amount: number; + total_amount: number; + }>; + by_month: Array<{ + year_month: string; + cost_type: CostType | null; + count: number; + total_amount: number; + }>; + summary: { + total_count: number; + total_amount: number; + purchase_amount: number; + installation_amount: number; + repair_amount: number; + maintenance_amount: number; + disposal_amount: number; + other_amount: number; + }; + }> { + const conditions: string[] = ["company_code = $1", "invoice_status != 'cancelled'"]; + const values: any[] = [companyCode]; + let paramIndex = 2; + + // 연도/월 필터 + if (year && month) { + const startDate = `${year}-${String(month).padStart(2, "0")}-01`; + const endDate = new Date(year, month, 0).toISOString().split("T")[0]; + conditions.push(`invoice_date >= $${paramIndex} AND invoice_date <= $${paramIndex + 1}`); + values.push(startDate, endDate); + paramIndex += 2; + } else if (year) { + conditions.push(`EXTRACT(YEAR FROM invoice_date) = $${paramIndex}`); + values.push(year); + paramIndex++; + } + + const whereClause = conditions.join(" AND "); + + // 비용 유형별 집계 + const byCostType = await query<{ + cost_type: CostType | null; + count: string; + supply_amount: string; + tax_amount: string; + total_amount: string; + }>( + `SELECT + cost_type, + COUNT(*) as count, + COALESCE(SUM(supply_amount), 0) as supply_amount, + COALESCE(SUM(tax_amount), 0) as tax_amount, + COALESCE(SUM(total_amount), 0) as total_amount + FROM tax_invoice + WHERE ${whereClause} + GROUP BY cost_type + ORDER BY total_amount DESC`, + values + ); + + // 월별 비용 유형 집계 + const byMonth = await query<{ + year_month: string; + cost_type: CostType | null; + count: string; + total_amount: string; + }>( + `SELECT + TO_CHAR(invoice_date, 'YYYY-MM') as year_month, + cost_type, + COUNT(*) as count, + COALESCE(SUM(total_amount), 0) as total_amount + FROM tax_invoice + WHERE ${whereClause} + GROUP BY TO_CHAR(invoice_date, 'YYYY-MM'), cost_type + ORDER BY year_month DESC, cost_type`, + values + ); + + // 전체 요약 + const summaryResult = await query<{ + total_count: string; + total_amount: string; + purchase_amount: string; + installation_amount: string; + repair_amount: string; + maintenance_amount: string; + disposal_amount: string; + other_amount: string; + }>( + `SELECT + COUNT(*) as total_count, + COALESCE(SUM(total_amount), 0) as total_amount, + COALESCE(SUM(CASE WHEN cost_type = 'purchase' THEN total_amount ELSE 0 END), 0) as purchase_amount, + COALESCE(SUM(CASE WHEN cost_type = 'installation' THEN total_amount ELSE 0 END), 0) as installation_amount, + COALESCE(SUM(CASE WHEN cost_type = 'repair' THEN total_amount ELSE 0 END), 0) as repair_amount, + COALESCE(SUM(CASE WHEN cost_type = 'maintenance' THEN total_amount ELSE 0 END), 0) as maintenance_amount, + COALESCE(SUM(CASE WHEN cost_type = 'disposal' THEN total_amount ELSE 0 END), 0) as disposal_amount, + COALESCE(SUM(CASE WHEN cost_type = 'other' THEN total_amount ELSE 0 END), 0) as other_amount + FROM tax_invoice + WHERE ${whereClause}`, + values + ); + + const summary = summaryResult[0] || { + total_count: "0", + total_amount: "0", + purchase_amount: "0", + installation_amount: "0", + repair_amount: "0", + maintenance_amount: "0", + disposal_amount: "0", + other_amount: "0", + }; + + return { + by_cost_type: byCostType.map((row) => ({ + cost_type: row.cost_type, + count: parseInt(row.count, 10), + supply_amount: parseFloat(row.supply_amount), + tax_amount: parseFloat(row.tax_amount), + total_amount: parseFloat(row.total_amount), + })), + by_month: byMonth.map((row) => ({ + year_month: row.year_month, + cost_type: row.cost_type, + count: parseInt(row.count, 10), + total_amount: parseFloat(row.total_amount), + })), + summary: { + total_count: parseInt(summary.total_count, 10), + total_amount: parseFloat(summary.total_amount), + purchase_amount: parseFloat(summary.purchase_amount), + installation_amount: parseFloat(summary.installation_amount), + repair_amount: parseFloat(summary.repair_amount), + maintenance_amount: parseFloat(summary.maintenance_amount), + disposal_amount: parseFloat(summary.disposal_amount), + other_amount: parseFloat(summary.other_amount), + }, + }; + } } diff --git a/frontend/components/tax-invoice/CostTypeStats.tsx b/frontend/components/tax-invoice/CostTypeStats.tsx new file mode 100644 index 00000000..786c093a --- /dev/null +++ b/frontend/components/tax-invoice/CostTypeStats.tsx @@ -0,0 +1,329 @@ +"use client"; + +/** + * 비용 유형별 통계 대시보드 + * 구매/설치/수리/유지보수/폐기 등 비용 정산 현황 + */ + +import { useState, useEffect, useCallback } from "react"; +import { + BarChart3, + TrendingUp, + TrendingDown, + Package, + Wrench, + Settings, + Trash2, + DollarSign, + Calendar, + RefreshCw, +} from "lucide-react"; + +import { Card, CardContent, CardHeader, CardTitle, CardDescription } from "@/components/ui/card"; +import { Button } from "@/components/ui/button"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import { Badge } from "@/components/ui/badge"; +import { Progress } from "@/components/ui/progress"; +import { toast } from "sonner"; + +import { getCostTypeStats, CostTypeStatsResponse, CostType, costTypeLabels } from "@/lib/api/taxInvoice"; + +// 비용 유형별 아이콘 +const costTypeIcons: Record = { + purchase: , + installation: , + repair: , + maintenance: , + disposal: , + other: , +}; + +// 비용 유형별 색상 +const costTypeColors: Record = { + purchase: "bg-blue-500", + installation: "bg-green-500", + repair: "bg-orange-500", + maintenance: "bg-purple-500", + disposal: "bg-red-500", + other: "bg-gray-500", +}; + +export function CostTypeStats() { + const [loading, setLoading] = useState(false); + const [stats, setStats] = useState(null); + const [selectedYear, setSelectedYear] = useState(new Date().getFullYear()); + const [selectedMonth, setSelectedMonth] = useState(undefined); + + // 연도 옵션 생성 (최근 5년) + const yearOptions = Array.from({ length: 5 }, (_, i) => new Date().getFullYear() - i); + + // 월 옵션 생성 + const monthOptions = Array.from({ length: 12 }, (_, i) => i + 1); + + // 데이터 로드 + const loadStats = useCallback(async () => { + setLoading(true); + try { + const response = await getCostTypeStats(selectedYear, selectedMonth); + if (response.success) { + setStats(response.data); + } + } catch (error: any) { + toast.error("통계 로드 실패", { description: error.message }); + } finally { + setLoading(false); + } + }, [selectedYear, selectedMonth]); + + useEffect(() => { + loadStats(); + }, [loadStats]); + + // 금액 포맷 + const formatAmount = (amount: number) => { + if (amount >= 100000000) { + return `${(amount / 100000000).toFixed(1)}억`; + } + if (amount >= 10000) { + return `${(amount / 10000).toFixed(0)}만`; + } + return new Intl.NumberFormat("ko-KR").format(amount); + }; + + // 전체 금액 대비 비율 계산 + const getPercentage = (amount: number) => { + if (!stats?.summary.total_amount || stats.summary.total_amount === 0) return 0; + return (amount / stats.summary.total_amount) * 100; + }; + + return ( +
+ {/* 헤더 */} +
+
+

비용 정산 현황

+

구매/설치/수리/유지보수/폐기 비용 통계

+
+
+ + + +
+
+ + {/* 요약 카드 */} +
+ + + 총 비용 + + + +
+ {formatAmount(stats?.summary.total_amount || 0)}원 +
+

+ {stats?.summary.total_count || 0}건 +

+
+
+ + + + 구매 비용 + + + +
+ {formatAmount(stats?.summary.purchase_amount || 0)}원 +
+ +
+
+ + + + 수리/유지보수 + + + +
+ {formatAmount((stats?.summary.repair_amount || 0) + (stats?.summary.maintenance_amount || 0))}원 +
+ +
+
+ + + + 설치/폐기 + + + +
+ {formatAmount((stats?.summary.installation_amount || 0) + (stats?.summary.disposal_amount || 0))}원 +
+ +
+
+
+ + {/* 비용 유형별 상세 */} + + + 비용 유형별 상세 + 각 비용 유형별 금액 및 비율 + + +
+ {stats?.by_cost_type && stats.by_cost_type.length > 0 ? ( + stats.by_cost_type.map((item) => { + const costType = item.cost_type as CostType; + const percentage = getPercentage(item.total_amount); + return ( +
+
+ {costType && costTypeIcons[costType]} + + {costType ? costTypeLabels[costType] : "미분류"} + +
+
+
+
+
+
+ + {percentage.toFixed(1)}% + +
+
+
+
+ {formatAmount(item.total_amount)}원 +
+
{item.count}건
+
+
+ ); + }) + ) : ( +
+ 데이터가 없습니다. +
+ )} +
+ + + + {/* 월별 추이 */} + {!selectedMonth && stats?.by_month && stats.by_month.length > 0 && ( + + + 월별 비용 추이 + {selectedYear}년 월별 비용 현황 + + +
+ {/* 월별 그룹핑 */} + {Array.from(new Set(stats.by_month.map((item) => item.year_month))) + .sort() + .reverse() + .slice(0, 6) + .map((yearMonth) => { + const monthData = stats.by_month.filter((item) => item.year_month === yearMonth); + const monthTotal = monthData.reduce((sum, item) => sum + item.total_amount, 0); + const [year, month] = yearMonth.split("-"); + + return ( +
+
+ {month}월 +
+
+ {monthData.map((item) => { + const costType = item.cost_type as CostType; + const width = monthTotal > 0 ? (item.total_amount / monthTotal) * 100 : 0; + return ( +
+ ); + })} +
+
+ {formatAmount(monthTotal)}원 +
+
+ ); + })} +
+ + {/* 범례 */} +
+ {Object.entries(costTypeLabels).map(([key, label]) => ( +
+
+ {label} +
+ ))} +
+ + + )} +
+ ); +} + diff --git a/frontend/components/tax-invoice/TaxInvoiceForm.tsx b/frontend/components/tax-invoice/TaxInvoiceForm.tsx index 08c3fb37..9112ad33 100644 --- a/frontend/components/tax-invoice/TaxInvoiceForm.tsx +++ b/frontend/components/tax-invoice/TaxInvoiceForm.tsx @@ -59,6 +59,8 @@ import { TaxInvoiceAttachment, CreateTaxInvoiceDto, CreateTaxInvoiceItemDto, + CostType, + costTypeLabels, } from "@/lib/api/taxInvoice"; import { apiClient } from "@/lib/api/client"; @@ -141,6 +143,7 @@ export function TaxInvoiceForm({ open, onClose, onSave, invoice }: TaxInvoiceFor tax_amount: inv.tax_amount, total_amount: inv.total_amount, remarks: inv.remarks, + cost_type: inv.cost_type || undefined, items: items.length > 0 ? items.map((item) => ({ @@ -344,7 +347,7 @@ export function TaxInvoiceForm({ open, onClose, onSave, invoice }: TaxInvoiceFor {/* 기본정보 탭 */} -
+
+
+ + +
({ value, label })), width: "90px" }, { key: "invoice_status", label: "상태", sortable: true, filterable: true, filterType: "select", filterOptions: [ { value: "draft", label: "임시저장" }, { value: "issued", label: "발행완료" }, { value: "sent", label: "전송완료" }, { value: "cancelled", label: "취소됨" } - ], width: "100px" }, + ], width: "90px" }, { key: "invoice_date", label: "작성일", sortable: true, filterable: true, filterType: "text", width: "100px" }, { key: "buyer_name", label: "공급받는자", sortable: true, filterable: true, filterType: "text" }, - { key: "attachments", label: "첨부", sortable: false, filterable: false, width: "60px", align: "center" }, + { key: "attachments", label: "첨부", sortable: false, filterable: false, width: "50px", align: "center" }, { key: "supply_amount", label: "공급가액", sortable: true, filterable: false, align: "right" }, { key: "tax_amount", label: "세액", sortable: true, filterable: false, align: "right" }, { key: "total_amount", label: "합계", sortable: true, filterable: false, align: "right" }, @@ -178,6 +182,7 @@ export function TaxInvoiceList() { ...filters, invoice_type: columnFilters.invoice_type as "sales" | "purchase" | undefined, invoice_status: columnFilters.invoice_status, + cost_type: columnFilters.cost_type as CostType | undefined, search: columnFilters.invoice_number || columnFilters.buyer_name || searchText || undefined, }; @@ -614,13 +619,13 @@ export function TaxInvoiceList() { {loading ? ( - + 로딩 중... ) : invoices.length === 0 ? ( - + 세금계산서가 없습니다. @@ -634,6 +639,15 @@ export function TaxInvoiceList() { {typeLabels[invoice.invoice_type]} + + {invoice.cost_type ? ( + + {costTypeLabels[invoice.cost_type as CostType]} + + ) : ( + - + )} + {statusLabels[invoice.invoice_status]} diff --git a/frontend/lib/api/taxInvoice.ts b/frontend/lib/api/taxInvoice.ts index be41f24c..493f99a1 100644 --- a/frontend/lib/api/taxInvoice.ts +++ b/frontend/lib/api/taxInvoice.ts @@ -4,6 +4,19 @@ import { apiClient } from "./client"; +// 비용 유형 +export type CostType = "purchase" | "installation" | "repair" | "maintenance" | "disposal" | "other"; + +// 비용 유형 라벨 +export const costTypeLabels: Record = { + purchase: "구매", + installation: "설치", + repair: "수리", + maintenance: "유지보수", + disposal: "폐기", + other: "기타", +}; + // 세금계산서 타입 export interface TaxInvoice { id: string; @@ -31,6 +44,7 @@ export interface TaxInvoice { order_id: string | null; customer_id: string | null; attachments: TaxInvoiceAttachment[] | null; + cost_type: CostType | null; // 비용 유형 created_date: string; updated_date: string; writer: string; @@ -86,6 +100,7 @@ export interface CreateTaxInvoiceDto { customer_id?: string; items?: CreateTaxInvoiceItemDto[]; attachments?: TaxInvoiceAttachment[]; + cost_type?: CostType; // 비용 유형 } // 품목 생성 DTO @@ -110,6 +125,7 @@ export interface TaxInvoiceListParams { end_date?: string; search?: string; buyer_name?: string; + cost_type?: CostType; // 비용 유형 필터 } // 목록 응답 @@ -227,3 +243,48 @@ export async function getTaxInvoiceMonthlyStats( return response.data; } +// 비용 유형별 통계 응답 +export interface CostTypeStatsResponse { + success: boolean; + data: { + by_cost_type: Array<{ + cost_type: CostType | null; + count: number; + supply_amount: number; + tax_amount: number; + total_amount: number; + }>; + by_month: Array<{ + year_month: string; + cost_type: CostType | null; + count: number; + total_amount: number; + }>; + summary: { + total_count: number; + total_amount: number; + purchase_amount: number; + installation_amount: number; + repair_amount: number; + maintenance_amount: number; + disposal_amount: number; + other_amount: number; + }; + }; + period: { year?: number; month?: number }; +} + +/** + * 비용 유형별 통계 조회 + */ +export async function getCostTypeStats( + year?: number, + month?: number +): Promise { + const params: Record = {}; + if (year) params.year = year; + if (month) params.month = month; + const response = await apiClient.get("/tax-invoice/stats/cost-type", { params }); + return response.data; +} + -- 2.43.0 From 0e7dff037d8c1de5b95f95cd045e777f2000b099 Mon Sep 17 00:00:00 2001 From: kjs Date: Mon, 15 Dec 2025 09:40:41 +0900 Subject: [PATCH 32/64] Merge branch 'main' of https://g.wace.me/chpark/vexplor -- 2.43.0 From 47ac3dcaf15167afc354bf6da938942dad2303c3 Mon Sep 17 00:00:00 2001 From: Johngreen Date: Mon, 22 Dec 2025 15:33:24 +0900 Subject: [PATCH 33/64] Add Kubernetes deployment and CI/CD workflow Introduce Kubernetes manifests for backend, frontend, ingress, storage, and namespace setup under k8s/. Add Gitea Actions workflow for automated build and deployment to Kubernetes. Provide deployment and cluster setup guides in docs/ and project root. Update .gitignore to exclude Kubernetes secret files. --- .gitea/workflows/deploy.yml | 327 +++++++++++++++++++++++ .gitignore | 5 + docs/KUBERNETES_DEPLOYMENT_GUIDE.md | 375 +++++++++++++++++++++++++++ k8s/ingress-nginx.yaml | 41 +++ k8s/local-path-provisioner.yaml | 135 ++++++++++ k8s/namespace.yaml | 9 + k8s/vexplor-backend-deployment.yaml | 133 ++++++++++ k8s/vexplor-config.yaml | 32 +++ k8s/vexplor-frontend-deployment.yaml | 92 +++++++ k8s/vexplor-ingress.yaml | 58 +++++ k8s/vexplor-secret.yaml.template | 38 +++ kubernetes-setup-guide.md | 304 ++++++++++++++++++++++ 12 files changed, 1549 insertions(+) create mode 100644 .gitea/workflows/deploy.yml create mode 100644 docs/KUBERNETES_DEPLOYMENT_GUIDE.md create mode 100644 k8s/ingress-nginx.yaml create mode 100644 k8s/local-path-provisioner.yaml create mode 100644 k8s/namespace.yaml create mode 100644 k8s/vexplor-backend-deployment.yaml create mode 100644 k8s/vexplor-config.yaml create mode 100644 k8s/vexplor-frontend-deployment.yaml create mode 100644 k8s/vexplor-ingress.yaml create mode 100644 k8s/vexplor-secret.yaml.template create mode 100644 kubernetes-setup-guide.md diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml new file mode 100644 index 00000000..e307079e --- /dev/null +++ b/.gitea/workflows/deploy.yml @@ -0,0 +1,327 @@ +# Gitea Actions Workflow - vexplor 자동 배포 +# +# 환경 변수: +# - GITEA_DOMAIN: g.wace.me +# - HARBOR_REGISTRY: harbor.wace.me +# - K8S_NAMESPACE: vexplor +# +# 필수 Secrets (Repository Settings > Secrets): +# - HARBOR_USERNAME: Harbor 사용자명 +# - HARBOR_PASSWORD: Harbor 비밀번호 +# - KUBECONFIG: base64로 인코딩된 Kubernetes config +# +# Application Secrets: +# - k8s/vexplor-secret.yaml 파일에서 관리 + +name: Deploy vexplor + +on: + push: + branches: + - main + - master + paths: + - "backend-node/**" + - "frontend/**" + - "docker/**" + - "k8s/**" + - ".gitea/workflows/deploy.yml" + workflow_dispatch: + +env: + GITEA_DOMAIN: g.wace.me + HARBOR_REGISTRY: localhost:5001 + HARBOR_REGISTRY_K8S: 192.168.1.100:5001 + HARBOR_REGISTRY_EXTERNAL: harbor.wace.me + HARBOR_PROJECT: speefox_vexplor + K8S_NAMESPACE: vexplor + + # Frontend 빌드 환경 변수 + NEXT_PUBLIC_API_URL: "https://api.vexplor.com/api" + NEXT_PUBLIC_ENV: "production" + INTERNAL_API_URL: "http://vexplor-backend-service:3001" + + # Frontend 설정 + FRONTEND_IMAGE_NAME: vexplor-frontend + FRONTEND_DEPLOYMENT_NAME: vexplor-frontend + FRONTEND_CONTAINER_NAME: vexplor-frontend + FRONTEND_BUILD_CONTEXT: frontend + FRONTEND_DOCKERFILE_PATH: docker/deploy/frontend.Dockerfile + + # Backend 설정 + BACKEND_IMAGE_NAME: vexplor-backend + BACKEND_DEPLOYMENT_NAME: vexplor-backend + BACKEND_CONTAINER_NAME: vexplor-backend + BACKEND_BUILD_CONTEXT: backend-node + BACKEND_DOCKERFILE_PATH: docker/deploy/backend.Dockerfile + +jobs: + build-and-deploy: + runs-on: ubuntu-24.04 + + steps: + # 작업 디렉토리 정리 + - name: Clean workspace + run: | + echo "작업 디렉토리 정리..." + cd /workspace + rm -rf source + mkdir -p source + echo "정리 완료" + + # 필수 도구 설치 + - name: Install required tools + run: | + echo "필수 도구 설치 중..." + apt-get update -qq + apt-get install -y git curl ca-certificates gnupg + + # kubectl 설치 + curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" + chmod +x kubectl + mv kubectl /usr/local/bin/ + + # Docker 클라이언트 설치 + install -m 0755 -d /etc/apt/keyrings + curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc + chmod a+r /etc/apt/keyrings/docker.asc + + echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ + $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null + + apt-get update -qq + apt-get install -y docker-ce-cli + + echo "설치 완료:" + git --version + kubectl version --client + docker --version + + export DOCKER_HOST=unix:///var/run/docker.sock + docker version || echo "소켓 연결 대기 중..." + + # 저장소 체크아웃 + - name: Checkout code + run: | + echo "저장소 체크아웃..." + cd /workspace/source + + git clone --depth 1 --branch ${GITHUB_REF_NAME} \ + https://oauth2:${{ github.token }}@${GITEA_DOMAIN}/${GITHUB_REPOSITORY}.git . + + echo "체크아웃 완료" + git log -1 --oneline + + # 빌드 환경 설정 + - name: Set up build environment + run: | + IMAGE_TAG="v$(date +%Y%m%d-%H%M%S)-${GITHUB_SHA::7}" + echo "IMAGE_TAG=${IMAGE_TAG}" >> $GITHUB_ENV + + # Frontend 이미지 + echo "FRONTEND_FULL_IMAGE=${HARBOR_REGISTRY}/${HARBOR_PROJECT}/${FRONTEND_IMAGE_NAME}" >> $GITHUB_ENV + echo "FRONTEND_FULL_IMAGE_K8S=${HARBOR_REGISTRY_K8S}/${HARBOR_PROJECT}/${FRONTEND_IMAGE_NAME}" >> $GITHUB_ENV + + # Backend 이미지 + echo "BACKEND_FULL_IMAGE=${HARBOR_REGISTRY}/${HARBOR_PROJECT}/${BACKEND_IMAGE_NAME}" >> $GITHUB_ENV + echo "BACKEND_FULL_IMAGE_K8S=${HARBOR_REGISTRY_K8S}/${HARBOR_PROJECT}/${BACKEND_IMAGE_NAME}" >> $GITHUB_ENV + + echo "빌드 태그: ${IMAGE_TAG}" + + # Harbor 로그인 + - name: Login to Harbor + env: + HARBOR_USER: ${{ secrets.HARBOR_USERNAME }} + HARBOR_PASS: ${{ secrets.HARBOR_PASSWORD }} + run: | + echo "Harbor 로그인..." + export DOCKER_HOST=unix:///var/run/docker.sock + echo "${HARBOR_PASS}" | docker login ${HARBOR_REGISTRY} \ + --username ${HARBOR_USER} \ + --password-stdin + echo "Harbor 로그인 완료" + + # Backend 빌드 및 푸시 + - name: Build and Push Backend image + run: | + echo "Backend 이미지 빌드 및 푸시..." + export DOCKER_HOST=unix:///var/run/docker.sock + cd /workspace/source + + docker build \ + -t ${BACKEND_FULL_IMAGE}:${IMAGE_TAG} \ + -t ${BACKEND_FULL_IMAGE}:latest \ + -f ${BACKEND_DOCKERFILE_PATH} \ + ${BACKEND_BUILD_CONTEXT} + + docker push ${BACKEND_FULL_IMAGE}:${IMAGE_TAG} + docker push ${BACKEND_FULL_IMAGE}:latest + echo "Backend 푸시 완료" + + # Frontend 빌드 및 푸시 + - name: Build and Push Frontend image + run: | + echo "Frontend 이미지 빌드 및 푸시..." + export DOCKER_HOST=unix:///var/run/docker.sock + cd /workspace/source + + echo "빌드 환경 변수:" + echo " NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL}" + echo " NEXT_PUBLIC_ENV=${NEXT_PUBLIC_ENV}" + + docker build \ + -t ${FRONTEND_FULL_IMAGE}:${IMAGE_TAG} \ + -t ${FRONTEND_FULL_IMAGE}:latest \ + -f ${FRONTEND_DOCKERFILE_PATH} \ + --build-arg NEXT_PUBLIC_API_URL="${NEXT_PUBLIC_API_URL}" \ + ${FRONTEND_BUILD_CONTEXT} + + docker push ${FRONTEND_FULL_IMAGE}:${IMAGE_TAG} + docker push ${FRONTEND_FULL_IMAGE}:latest + echo "Frontend 푸시 완료" + + # Kubernetes 설정 + - name: Setup Kubernetes config + env: + KUBECONFIG_CONTENT: ${{ secrets.KUBECONFIG }} + run: | + echo "Kubernetes 설정..." + + if [ -z "${KUBECONFIG_CONTENT}" ]; then + echo "KUBECONFIG secret이 설정되지 않았습니다!" + exit 1 + fi + + mkdir -p ~/.kube + echo "${KUBECONFIG_CONTENT}" | base64 -d > ~/.kube/config + chmod 600 ~/.kube/config + + if [ ! -s ~/.kube/config ]; then + echo "kubeconfig 파일이 비어있습니다" + exit 1 + fi + + echo "kubeconfig 파일 생성 완료" + kubectl cluster-info > /dev/null 2>&1 && echo "Kubernetes 클러스터 연결 성공" + + # Kubernetes 배포 + - name: Deploy to Kubernetes + run: | + echo "Kubernetes 배포 시작..." + + cd /workspace/source + + # 네임스페이스 생성 (없을 때만) + echo "네임스페이스 확인..." + kubectl apply -f k8s/namespace.yaml + + # ConfigMap 적용 + echo "ConfigMap 적용..." + kubectl apply -f k8s/vexplor-config.yaml -n ${K8S_NAMESPACE} + + # Secret 적용 (존재하는 경우에만) + if [ -f k8s/vexplor-secret.yaml ]; then + echo "Secret 적용..." + kubectl apply -f k8s/vexplor-secret.yaml -n ${K8S_NAMESPACE} + fi + + # Harbor Registry Secret 생성 (없을 때만) + echo "Harbor Registry Secret 확인..." + if ! kubectl get secret harbor-registry -n ${K8S_NAMESPACE} > /dev/null 2>&1; then + echo "Harbor Registry Secret 생성 중..." + kubectl create secret docker-registry harbor-registry \ + --docker-server=${HARBOR_REGISTRY_K8S} \ + --docker-username=${{ secrets.HARBOR_USERNAME }} \ + --docker-password=${{ secrets.HARBOR_PASSWORD }} \ + -n ${K8S_NAMESPACE} + echo "Harbor Registry Secret 생성 완료" + else + echo "Harbor Registry Secret 이미 존재" + fi + + # Backend 배포 + echo "Backend 배포..." + kubectl apply -f k8s/vexplor-backend-deployment.yaml -n ${K8S_NAMESPACE} + + if kubectl get deployment ${BACKEND_DEPLOYMENT_NAME} -n ${K8S_NAMESPACE} > /dev/null 2>&1; then + echo "Backend 이미지 업데이트..." + kubectl set image deployment/${BACKEND_DEPLOYMENT_NAME} \ + ${BACKEND_CONTAINER_NAME}=${BACKEND_FULL_IMAGE_K8S}:latest \ + -n ${K8S_NAMESPACE} + kubectl rollout restart deployment/${BACKEND_DEPLOYMENT_NAME} -n ${K8S_NAMESPACE} + fi + + echo "Backend Rolling Update 진행 중..." + kubectl rollout status deployment/${BACKEND_DEPLOYMENT_NAME} -n ${K8S_NAMESPACE} --timeout=5m + echo "Backend 배포 완료" + + # Frontend 배포 + echo "Frontend 배포..." + kubectl apply -f k8s/vexplor-frontend-deployment.yaml -n ${K8S_NAMESPACE} + + if kubectl get deployment ${FRONTEND_DEPLOYMENT_NAME} -n ${K8S_NAMESPACE} > /dev/null 2>&1; then + echo "Frontend 이미지 업데이트..." + kubectl set image deployment/${FRONTEND_DEPLOYMENT_NAME} \ + ${FRONTEND_CONTAINER_NAME}=${FRONTEND_FULL_IMAGE_K8S}:latest \ + -n ${K8S_NAMESPACE} + kubectl rollout restart deployment/${FRONTEND_DEPLOYMENT_NAME} -n ${K8S_NAMESPACE} + fi + + echo "Frontend Rolling Update 진행 중..." + kubectl rollout status deployment/${FRONTEND_DEPLOYMENT_NAME} -n ${K8S_NAMESPACE} --timeout=5m + echo "Frontend 배포 완료" + + # Ingress 배포 + echo "Ingress 배포..." + kubectl apply -f k8s/vexplor-ingress.yaml -n ${K8S_NAMESPACE} + + echo "전체 배포 완료!" + + # 배포 검증 + - name: Verify deployment + run: | + echo "배포 검증..." + echo "" + echo "Backend 상태:" + kubectl get deployment ${BACKEND_DEPLOYMENT_NAME} -n ${K8S_NAMESPACE} + kubectl get pods -l app=${BACKEND_DEPLOYMENT_NAME} -n ${K8S_NAMESPACE} + echo "" + echo "Frontend 상태:" + kubectl get deployment ${FRONTEND_DEPLOYMENT_NAME} -n ${K8S_NAMESPACE} + kubectl get pods -l app=${FRONTEND_DEPLOYMENT_NAME} -n ${K8S_NAMESPACE} + echo "" + echo "Services:" + kubectl get svc -n ${K8S_NAMESPACE} + echo "" + echo "Ingress:" + kubectl get ingress -n ${K8S_NAMESPACE} + echo "" + echo "검증 완료" + + # 배포 요약 + - name: Deployment summary + if: success() + run: | + echo "==========================================" + echo "배포가 성공적으로 완료되었습니다!" + echo "==========================================" + echo "빌드 버전: ${IMAGE_TAG}" + echo "Frontend: https://v1.vexplor.com" + echo "Backend API: https://api.vexplor.com" + echo "==========================================" + + # 실패 시 롤백 + - name: Rollback on failure + if: failure() + run: | + echo "배포 실패! 이전 버전으로 롤백..." + kubectl rollout undo deployment/${BACKEND_DEPLOYMENT_NAME} -n ${K8S_NAMESPACE} || true + kubectl rollout undo deployment/${FRONTEND_DEPLOYMENT_NAME} -n ${K8S_NAMESPACE} || true + + # Harbor 로그아웃 + - name: Logout from Harbor + if: always() + run: | + export DOCKER_HOST=unix:///var/run/docker.sock + docker logout ${HARBOR_REGISTRY} || true + diff --git a/.gitignore b/.gitignore index a771d2c9..5b2b1f56 100644 --- a/.gitignore +++ b/.gitignore @@ -225,6 +225,11 @@ secrets.yml api-keys.json tokens.json +# Kubernetes Secrets (절대 커밋하지 않음!) +k8s/vexplor-secret.yaml +k8s/*-secret.yaml +!k8s/*-secret.yaml.template + # 데이터베이스 덤프 파일 *.sql *.dump diff --git a/docs/KUBERNETES_DEPLOYMENT_GUIDE.md b/docs/KUBERNETES_DEPLOYMENT_GUIDE.md new file mode 100644 index 00000000..f5c99cbf --- /dev/null +++ b/docs/KUBERNETES_DEPLOYMENT_GUIDE.md @@ -0,0 +1,375 @@ +# vexplor 쿠버네티스 자동 배포 가이드 + +## 개요 + +이 문서는 vexplor 프로젝트를 Gitea Actions를 통해 쿠버네티스 클러스터에 자동 배포하는 방법을 설명합니다. + +**작성일**: 2024년 12월 22일 + +--- + +## 아키텍처 + +``` +┌─────────────────────────────────────────────────────────────────┐ +│ Gitea Repository │ +│ g.wace.me/chpark/vexplor │ +└─────────────────────┬───────────────────────────────────────────┘ + │ push to main + ▼ +┌─────────────────────────────────────────────────────────────────┐ +│ Gitea Actions Runner │ +│ 1. Checkout code │ +│ 2. Build Docker images (frontend, backend) │ +│ 3. Push to Harbor Registry │ +│ 4. Deploy to Kubernetes │ +└─────────────────────┬───────────────────────────────────────────┘ + │ + ┌──────────┴──────────┐ + ▼ ▼ +┌──────────────────┐ ┌──────────────────┐ +│ Harbor Registry │ │ Kubernetes (K8s) │ +│ harbor.wace.me │ │ 112.168.212.142 │ +└──────────────────┘ └──────────────────┘ + │ + ┌────────────────┼────────────────┐ + ▼ ▼ ▼ + ┌──────────┐ ┌──────────┐ ┌──────────┐ + │ Frontend │ │ Backend │ │ Ingress │ + │ :3000 │ │ :3001 │ │ Nginx │ + └──────────┘ └──────────┘ └──────────┘ + │ │ │ + └────────────────┴────────────────┘ + │ + ▼ + ┌─────────────────────┐ + │ External Access │ + │ v1.vexplor.com │ + │ api.vexplor.com │ + └─────────────────────┘ +``` + +--- + +## 사전 요구사항 + +### 1. 쿠버네티스 클러스터 + +```bash +# 서버 정보 +IP: 112.168.212.142 +SSH: ssh -p 22 wace@112.168.212.142 +K8s 버전: v1.28.15 +``` + +### 2. Harbor 레지스트리 접근 권한 + +Harbor에 `vexplor` 프로젝트가 생성되어 있어야 합니다. + +### 3. Gitea Repository Secrets + +Gitea 저장소에 다음 Secrets를 설정해야 합니다: + +| Secret 이름 | 설명 | +|------------|------| +| `HARBOR_USERNAME` | Harbor 사용자명 | +| `HARBOR_PASSWORD` | Harbor 비밀번호 | +| `KUBECONFIG` | base64 인코딩된 Kubernetes config | + +--- + +## 초기 설정 + +### 1단계: 쿠버네티스 클러스터 접속 + +```bash +ssh -p 22 wace@112.168.212.142 +``` + +### 2단계: Nginx Ingress Controller 설치 + +```bash +# Nginx Ingress Controller 설치 (baremetal용) +kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.9.5/deploy/static/provider/baremetal/deploy.yaml + +# 설치 확인 +kubectl get pods -n ingress-nginx +kubectl get svc -n ingress-nginx +``` + +### 3단계: Local Path Provisioner 설치 (PVC용) + +```bash +# Local Path Provisioner 설치 +kubectl apply -f k8s/local-path-provisioner.yaml + +# 설치 확인 +kubectl get pods -n local-path-storage +kubectl get storageclass +``` + +### 4단계: Cert-Manager 설치 (SSL 인증서용) + +```bash +# Cert-Manager 설치 +kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.3/cert-manager.yaml + +# 설치 확인 +kubectl get pods -n cert-manager + +# ClusterIssuer 생성 (Let's Encrypt) +cat < Secrets > Actions 메뉴로 이동 +3. 다음 Secrets 추가: + +#### HARBOR_USERNAME +Harbor 로그인 사용자명 + +#### HARBOR_PASSWORD +Harbor 로그인 비밀번호 + +#### KUBECONFIG +```bash +# 쿠버네티스 서버에서 실행 +cat ~/.kube/config | base64 -w 0 +``` +출력된 값을 KUBECONFIG secret으로 등록 + +--- + +## 배포 트리거 + +### 자동 배포 (Push) + +다음 경로의 파일이 변경되어 `main` 브랜치에 push되면 자동으로 배포됩니다: + +- `backend-node/**` +- `frontend/**` +- `docker/**` +- `k8s/**` +- `.gitea/workflows/deploy.yml` + +### 수동 배포 + +1. Gitea 저장소 > Actions 탭으로 이동 +2. "Deploy vexplor" 워크플로우 선택 +3. "Run workflow" 버튼 클릭 + +--- + +## 파일 구조 + +``` +vexplor/ +├── .gitea/ +│ └── workflows/ +│ └── deploy.yml # Gitea Actions 워크플로우 +├── docker/ +│ └── deploy/ +│ ├── backend.Dockerfile # 백엔드 배포용 Dockerfile +│ └── frontend.Dockerfile # 프론트엔드 배포용 Dockerfile +├── k8s/ +│ ├── namespace.yaml # 네임스페이스 정의 +│ ├── vexplor-config.yaml # ConfigMap +│ ├── vexplor-secret.yaml.template # Secret 템플릿 +│ ├── vexplor-backend-deployment.yaml # 백엔드 Deployment/Service/PVC +│ ├── vexplor-frontend-deployment.yaml # 프론트엔드 Deployment/Service +│ ├── vexplor-ingress.yaml # Ingress 설정 +│ ├── local-path-provisioner.yaml # 스토리지 프로비저너 +│ └── ingress-nginx.yaml # Ingress 컨트롤러 패치 +└── docs/ + └── KUBERNETES_DEPLOYMENT_GUIDE.md # 이 문서 +``` + +--- + +## 운영 명령어 + +### 상태 확인 + +```bash +# 전체 리소스 확인 +kubectl get all -n vexplor + +# Pod 상태 확인 +kubectl get pods -n vexplor -o wide + +# 로그 확인 +kubectl logs -f deployment/vexplor-backend -n vexplor +kubectl logs -f deployment/vexplor-frontend -n vexplor + +# Pod 상세 정보 +kubectl describe pod -n vexplor +``` + +### 수동 배포/롤백 + +```bash +# 이미지 업데이트 +kubectl set image deployment/vexplor-backend \ + vexplor-backend=harbor.wace.me/vexplor/vexplor-backend:v20241222-120000-abc1234 \ + -n vexplor + +# 롤아웃 상태 확인 +kubectl rollout status deployment/vexplor-backend -n vexplor + +# 롤백 +kubectl rollout undo deployment/vexplor-backend -n vexplor +kubectl rollout undo deployment/vexplor-frontend -n vexplor + +# 히스토리 확인 +kubectl rollout history deployment/vexplor-backend -n vexplor +``` + +### 스케일링 + +```bash +# 레플리카 수 조정 +kubectl scale deployment/vexplor-backend --replicas=3 -n vexplor +kubectl scale deployment/vexplor-frontend --replicas=3 -n vexplor +``` + +### Pod 재시작 + +```bash +# Deployment 재시작 (롤링 업데이트) +kubectl rollout restart deployment/vexplor-backend -n vexplor +kubectl rollout restart deployment/vexplor-frontend -n vexplor +``` + +--- + +## 문제 해결 + +### Pod이 Pending 상태일 때 + +```bash +# Pod 이벤트 확인 +kubectl describe pod -n vexplor + +# 노드 리소스 확인 +kubectl describe node +kubectl top nodes +``` + +### ImagePullBackOff 오류 + +```bash +# Harbor Secret 확인 +kubectl get secret harbor-registry -n vexplor -o yaml + +# Secret 재생성 +kubectl delete secret harbor-registry -n vexplor +kubectl create secret docker-registry harbor-registry \ + --docker-server=192.168.1.100:5001 \ + --docker-username= \ + --docker-password= \ + -n vexplor +``` + +### Ingress가 작동하지 않을 때 + +```bash +# Ingress 상태 확인 +kubectl get ingress -n vexplor +kubectl describe ingress vexplor-ingress -n vexplor + +# Ingress Controller 로그 +kubectl logs -f deployment/ingress-nginx-controller -n ingress-nginx +``` + +### SSL 인증서 문제 + +```bash +# Certificate 상태 확인 +kubectl get certificate -n vexplor +kubectl describe certificate vexplor-tls -n vexplor + +# Cert-Manager 로그 +kubectl logs -f deployment/cert-manager -n cert-manager +``` + +--- + +## 네트워크 설정 + +### 방화벽 포트 개방 + +쿠버네티스 서버에서 다음 포트가 개방되어야 합니다: + +| 포트 | 용도 | +|-----|------| +| 30080 | HTTP (Ingress NodePort) | +| 30443 | HTTPS (Ingress NodePort) | +| 6443 | Kubernetes API | + +### DNS 설정 + +다음 도메인이 쿠버네티스 서버 IP를 가리키도록 설정: + +- `v1.vexplor.com` → 112.168.212.142 +- `api.vexplor.com` → 112.168.212.142 + +--- + +## 환경 변수 + +### Backend 환경 변수 + +| 변수 | 설명 | 소스 | +|-----|------|-----| +| `NODE_ENV` | 환경 (production) | ConfigMap | +| `PORT` | 서버 포트 (3001) | ConfigMap | +| `DATABASE_URL` | PostgreSQL 연결 문자열 | Secret | +| `JWT_SECRET` | JWT 서명 키 | Secret | +| `JWT_EXPIRES_IN` | JWT 만료 시간 | ConfigMap | +| `CORS_ORIGIN` | CORS 허용 도메인 | ConfigMap | + +### Frontend 환경 변수 + +| 변수 | 설명 | 소스 | +|-----|------|-----| +| `NODE_ENV` | 환경 (production) | ConfigMap | +| `NEXT_PUBLIC_API_URL` | 클라이언트 API URL | ConfigMap | +| `SERVER_API_URL` | SSR용 내부 API URL | Deployment | + +--- + +## 참고 자료 + +- [Kubernetes 공식 문서](https://kubernetes.io/docs/) +- [Gitea Actions 문서](https://docs.gitea.com/usage/actions/overview) +- [Nginx Ingress Controller](https://kubernetes.github.io/ingress-nginx/) +- [Cert-Manager](https://cert-manager.io/docs/) +- [Harbor Registry](https://goharbor.io/docs/) + diff --git a/k8s/ingress-nginx.yaml b/k8s/ingress-nginx.yaml new file mode 100644 index 00000000..dfb551cd --- /dev/null +++ b/k8s/ingress-nginx.yaml @@ -0,0 +1,41 @@ +# Nginx Ingress Controller 설치 +# 단일 노드 클러스터용 설정 (NodePort 사용) +# +# 설치 명령어: +# kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.9.5/deploy/static/provider/baremetal/deploy.yaml +# +# 또는 이 파일로 커스텀 설치: +# kubectl apply -f k8s/ingress-nginx.yaml + +# NodePort를 80, 443으로 고정하는 패치용 설정 +apiVersion: v1 +kind: Service +metadata: + name: ingress-nginx-controller + namespace: ingress-nginx + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/instance: ingress-nginx + app.kubernetes.io/component: controller +spec: + type: NodePort + externalTrafficPolicy: Local + ipFamilyPolicy: SingleStack + ipFamilies: + - IPv4 + ports: + - name: http + port: 80 + protocol: TCP + targetPort: http + nodePort: 30080 + - name: https + port: 443 + protocol: TCP + targetPort: https + nodePort: 30443 + selector: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/instance: ingress-nginx + app.kubernetes.io/component: controller + diff --git a/k8s/local-path-provisioner.yaml b/k8s/local-path-provisioner.yaml new file mode 100644 index 00000000..7965bc26 --- /dev/null +++ b/k8s/local-path-provisioner.yaml @@ -0,0 +1,135 @@ +# Local Path Provisioner - 단일 노드 클러스터용 스토리지 +# Rancher의 Local Path Provisioner 사용 +# 참고: https://github.com/rancher/local-path-provisioner + +apiVersion: v1 +kind: Namespace +metadata: + name: local-path-storage + +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: local-path-provisioner-service-account + namespace: local-path-storage + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: local-path-provisioner-role +rules: + - apiGroups: [""] + resources: ["nodes", "persistentvolumeclaims", "configmaps"] + verbs: ["get", "list", "watch"] + - apiGroups: [""] + resources: ["endpoints", "persistentvolumes", "pods"] + verbs: ["*"] + - apiGroups: [""] + resources: ["events"] + verbs: ["create", "patch"] + - apiGroups: ["storage.k8s.io"] + resources: ["storageclasses"] + verbs: ["get", "list", "watch"] + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: local-path-provisioner-bind +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: local-path-provisioner-role +subjects: + - kind: ServiceAccount + name: local-path-provisioner-service-account + namespace: local-path-storage + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: local-path-provisioner + namespace: local-path-storage +spec: + replicas: 1 + selector: + matchLabels: + app: local-path-provisioner + template: + metadata: + labels: + app: local-path-provisioner + spec: + serviceAccountName: local-path-provisioner-service-account + containers: + - name: local-path-provisioner + image: rancher/local-path-provisioner:v0.0.26 + imagePullPolicy: IfNotPresent + command: + - local-path-provisioner + - --debug + - start + - --config + - /etc/config/config.json + volumeMounts: + - name: config-volume + mountPath: /etc/config/ + env: + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + volumes: + - name: config-volume + configMap: + name: local-path-config + +--- +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: local-path + annotations: + storageclass.kubernetes.io/is-default-class: "true" +provisioner: rancher.io/local-path +volumeBindingMode: WaitForFirstConsumer +reclaimPolicy: Delete + +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: local-path-config + namespace: local-path-storage +data: + config.json: |- + { + "nodePathMap": [ + { + "node": "DEFAULT_PATH_FOR_NON_LISTED_NODES", + "paths": ["/opt/local-path-provisioner"] + } + ] + } + setup: |- + #!/bin/sh + set -eu + mkdir -m 0777 -p "$VOL_DIR" + teardown: |- + #!/bin/sh + set -eu + rm -rf "$VOL_DIR" + helperPod.yaml: |- + apiVersion: v1 + kind: Pod + metadata: + name: helper-pod + spec: + containers: + - name: helper-pod + image: busybox:latest + imagePullPolicy: IfNotPresent + diff --git a/k8s/namespace.yaml b/k8s/namespace.yaml new file mode 100644 index 00000000..aa37dc26 --- /dev/null +++ b/k8s/namespace.yaml @@ -0,0 +1,9 @@ +# vexplor 네임스페이스 +apiVersion: v1 +kind: Namespace +metadata: + name: vexplor + labels: + name: vexplor + project: vexplor + diff --git a/k8s/vexplor-backend-deployment.yaml b/k8s/vexplor-backend-deployment.yaml new file mode 100644 index 00000000..37778fe7 --- /dev/null +++ b/k8s/vexplor-backend-deployment.yaml @@ -0,0 +1,133 @@ +# vexplor Backend Deployment +apiVersion: apps/v1 +kind: Deployment +metadata: + name: vexplor-backend + namespace: vexplor + labels: + app: vexplor-backend + component: backend +spec: + replicas: 2 + selector: + matchLabels: + app: vexplor-backend + strategy: + type: RollingUpdate + rollingUpdate: + maxSurge: 1 + maxUnavailable: 0 + template: + metadata: + labels: + app: vexplor-backend + component: backend + spec: + imagePullSecrets: + - name: harbor-registry + containers: + - name: vexplor-backend + image: harbor.wace.me/vexplor/vexplor-backend:latest + imagePullPolicy: Always + ports: + - containerPort: 3001 + protocol: TCP + envFrom: + - configMapRef: + name: vexplor-config + - secretRef: + name: vexplor-secret + env: + - name: PORT + value: "3001" + - name: HOST + value: "0.0.0.0" + resources: + requests: + memory: "256Mi" + cpu: "100m" + limits: + memory: "1Gi" + cpu: "500m" + livenessProbe: + httpGet: + path: /api/health + port: 3001 + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 3 + readinessProbe: + httpGet: + path: /api/health + port: 3001 + initialDelaySeconds: 10 + periodSeconds: 5 + timeoutSeconds: 3 + failureThreshold: 3 + volumeMounts: + - name: uploads + mountPath: /app/uploads + - name: data + mountPath: /app/data + - name: logs + mountPath: /app/logs + volumes: + - name: uploads + persistentVolumeClaim: + claimName: vexplor-backend-uploads-pvc + - name: data + persistentVolumeClaim: + claimName: vexplor-backend-data-pvc + - name: logs + emptyDir: {} + +--- +# Backend Service +apiVersion: v1 +kind: Service +metadata: + name: vexplor-backend-service + namespace: vexplor + labels: + app: vexplor-backend +spec: + type: ClusterIP + selector: + app: vexplor-backend + ports: + - name: http + port: 3001 + targetPort: 3001 + protocol: TCP + +--- +# Backend PVC - Uploads +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: vexplor-backend-uploads-pvc + namespace: vexplor +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi + storageClassName: local-path + +--- +# Backend PVC - Data +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: vexplor-backend-data-pvc + namespace: vexplor +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 5Gi + storageClassName: local-path + diff --git a/k8s/vexplor-config.yaml b/k8s/vexplor-config.yaml new file mode 100644 index 00000000..39af783d --- /dev/null +++ b/k8s/vexplor-config.yaml @@ -0,0 +1,32 @@ +# vexplor ConfigMap - 환경 설정 +apiVersion: v1 +kind: ConfigMap +metadata: + name: vexplor-config + namespace: vexplor + labels: + app: vexplor +data: + # 공통 설정 + NODE_ENV: "production" + TZ: "Asia/Seoul" + + # Backend 설정 + BACKEND_PORT: "3001" + BACKEND_HOST: "0.0.0.0" + JWT_EXPIRES_IN: "24h" + LOG_LEVEL: "info" + CORS_CREDENTIALS: "true" + + # Frontend 설정 + FRONTEND_PORT: "3000" + FRONTEND_HOSTNAME: "0.0.0.0" + NEXT_TELEMETRY_DISABLED: "1" + + # 내부 서비스 URL (클러스터 내부 통신) + INTERNAL_BACKEND_URL: "http://vexplor-backend-service:3001" + + # 외부 URL (클라이언트 접근용) + NEXT_PUBLIC_API_URL: "https://api.vexplor.com/api" + CORS_ORIGIN: "https://v1.vexplor.com,https://api.vexplor.com" + diff --git a/k8s/vexplor-frontend-deployment.yaml b/k8s/vexplor-frontend-deployment.yaml new file mode 100644 index 00000000..013b8348 --- /dev/null +++ b/k8s/vexplor-frontend-deployment.yaml @@ -0,0 +1,92 @@ +# vexplor Frontend Deployment +apiVersion: apps/v1 +kind: Deployment +metadata: + name: vexplor-frontend + namespace: vexplor + labels: + app: vexplor-frontend + component: frontend +spec: + replicas: 2 + selector: + matchLabels: + app: vexplor-frontend + strategy: + type: RollingUpdate + rollingUpdate: + maxSurge: 1 + maxUnavailable: 0 + template: + metadata: + labels: + app: vexplor-frontend + component: frontend + spec: + imagePullSecrets: + - name: harbor-registry + containers: + - name: vexplor-frontend + image: harbor.wace.me/vexplor/vexplor-frontend:latest + imagePullPolicy: Always + ports: + - containerPort: 3000 + protocol: TCP + envFrom: + - configMapRef: + name: vexplor-config + env: + - name: PORT + value: "3000" + - name: HOSTNAME + value: "0.0.0.0" + - name: NODE_ENV + value: "production" + - name: NEXT_PUBLIC_API_URL + value: "https://api.vexplor.com/api" + # 서버사이드 렌더링시 내부 백엔드 호출용 + - name: SERVER_API_URL + value: "http://vexplor-backend-service:3001" + resources: + requests: + memory: "256Mi" + cpu: "100m" + limits: + memory: "1Gi" + cpu: "500m" + livenessProbe: + httpGet: + path: / + port: 3000 + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 3 + readinessProbe: + httpGet: + path: / + port: 3000 + initialDelaySeconds: 10 + periodSeconds: 5 + timeoutSeconds: 3 + failureThreshold: 3 + +--- +# Frontend Service +apiVersion: v1 +kind: Service +metadata: + name: vexplor-frontend-service + namespace: vexplor + labels: + app: vexplor-frontend +spec: + type: ClusterIP + selector: + app: vexplor-frontend + ports: + - name: http + port: 3000 + targetPort: 3000 + protocol: TCP + diff --git a/k8s/vexplor-ingress.yaml b/k8s/vexplor-ingress.yaml new file mode 100644 index 00000000..df3e0d38 --- /dev/null +++ b/k8s/vexplor-ingress.yaml @@ -0,0 +1,58 @@ +# vexplor Ingress - Nginx Ingress Controller 기반 +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: vexplor-ingress + namespace: vexplor + labels: + app: vexplor + annotations: + # Nginx Ingress Controller 설정 + kubernetes.io/ingress.class: nginx + nginx.ingress.kubernetes.io/proxy-body-size: "100m" + nginx.ingress.kubernetes.io/proxy-read-timeout: "300" + nginx.ingress.kubernetes.io/proxy-send-timeout: "300" + nginx.ingress.kubernetes.io/proxy-connect-timeout: "60" + + # WebSocket 지원 + nginx.ingress.kubernetes.io/proxy-http-version: "1.1" + nginx.ingress.kubernetes.io/upstream-hash-by: "$remote_addr" + + # SSL Redirect + nginx.ingress.kubernetes.io/ssl-redirect: "true" + nginx.ingress.kubernetes.io/force-ssl-redirect: "true" + + # Cert-Manager (Let's Encrypt) + cert-manager.io/cluster-issuer: "letsencrypt-prod" +spec: + ingressClassName: nginx + tls: + - hosts: + - v1.vexplor.com + - api.vexplor.com + secretName: vexplor-tls + rules: + # Frontend 도메인 + - host: v1.vexplor.com + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: vexplor-frontend-service + port: + number: 3000 + + # Backend API 도메인 + - host: api.vexplor.com + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: vexplor-backend-service + port: + number: 3001 + diff --git a/k8s/vexplor-secret.yaml.template b/k8s/vexplor-secret.yaml.template new file mode 100644 index 00000000..97e6b4f1 --- /dev/null +++ b/k8s/vexplor-secret.yaml.template @@ -0,0 +1,38 @@ +# vexplor Secret 템플릿 +# 이 파일은 템플릿입니다. 실제 값으로 채운 후 vexplor-secret.yaml로 저장하세요. +# 주의: vexplor-secret.yaml은 .gitignore에 추가되어야 합니다! +# +# Secret 값은 base64로 인코딩해야 합니다: +# echo -n "your-value" | base64 +# +apiVersion: v1 +kind: Secret +metadata: + name: vexplor-secret + namespace: vexplor + labels: + app: vexplor +type: Opaque +data: + # 데이터베이스 연결 정보 (base64 인코딩 필요) + # echo -n "postgresql://postgres:password@211.115.91.141:11134/plm" | base64 + DATABASE_URL: "cG9zdGdyZXNxbDovL3Bvc3RncmVzOnZleHBsb3IwOTA5ISFAMjExLjExNS45MS4xNDE6MTExMzQvcGxt" + + # JWT 시크릿 + # echo -n "your-jwt-secret" | base64 + JWT_SECRET: "aWxzaGluLXBsbS1zdXBlci1zZWNyZXQtand0LWtleS0yMDI0" + + # 메일 암호화 키 + # echo -n "your-encryption-key" | base64 + ENCRYPTION_KEY: "aWxzaGluLXBsbS1tYWlsLWVuY3J5cHRpb24ta2V5LTMyY2hhcmFjdGVycy0yMDI0LXNlY3VyZQ==" + + # API 키들 + # echo -n "your-kma-api-key" | base64 + KMA_API_KEY: "b2dkWHIyZTlUNGlIVjY5bnZWLUl3QQ==" + + # echo -n "your-its-api-key" | base64 + ITS_API_KEY: "ZDZiOWJlZmVjMzExNGQ2NDgyODQ2NzRiOGZkZGNjMzI=" + + # echo -n "your-expressway-api-key" | base64 + EXPRESSWAY_API_KEY: "" + diff --git a/kubernetes-setup-guide.md b/kubernetes-setup-guide.md new file mode 100644 index 00000000..3d27b04c --- /dev/null +++ b/kubernetes-setup-guide.md @@ -0,0 +1,304 @@ +# 쿠버네티스 클러스터 구축 가이드 + +## 📋 개요 + +이 문서는 Digital Twin 프로젝트의 쿠버네티스 클러스터 구축 과정을 정리한 가이드입니다. + +**작성일**: 2024년 12월 22일 + +--- + +## 🖥️ 서버 정보 + +### 기존 서버 (참조용) + +| 항목 | 값 | +|------|-----| +| IP | 211.115.91.170 | +| SSH 포트 | 12991 | +| 사용자 | geonhee | +| OS | Ubuntu 24.04.3 LTS | +| K8s 버전 | v1.28.0 | +| 컨테이너 런타임 | containerd 1.7.28 | + +### 새 서버 (구축 완료) + +| 항목 | 값 | +|------|-----| +| IP | 112.168.212.142 | +| SSH 포트 | 22 | +| 사용자 | wace | +| 호스트명 | waceserver | +| OS | Ubuntu 24.04.3 LTS | +| K8s 버전 | v1.28.15 | +| 컨테이너 런타임 | containerd 1.7.28 | +| 내부 IP | 10.10.0.74 | +| CPU | 20코어 | +| 메모리 | 31GB | + +--- + +## 🔐 SSH 접속 설정 + +### SSH 키 기반 인증 설정 + +```bash +# 1. 로컬에서 SSH 키 확인 +ls -la ~/.ssh/ + +# 2. 공개키를 서버에 복사 +ssh-copy-id -p 12991 geonhee@211.115.91.170 # 기존 서버 +ssh-copy-id -p 22 wace@112.168.212.142 # 새 서버 + +# 3. 비밀번호 없이 접속 테스트 +ssh -p 12991 geonhee@211.115.91.170 +ssh -p 22 wace@112.168.212.142 +``` + +### SSH Config 설정 (선택사항) + +```bash +# ~/.ssh/config 파일에 추가 +Host wace-old + HostName 211.115.91.170 + Port 12991 + User geonhee + +Host wace-new + HostName 112.168.212.142 + Port 22 + User wace +``` + +--- + +## 🚀 쿠버네티스 클러스터 구축 과정 + +### 1단계: Swap 비활성화 + +쿠버네티스는 swap이 활성화되어 있으면 제대로 동작하지 않습니다. + +```bash +# swap 비활성화 +sudo swapoff -a + +# 영구적으로 비활성화 (재부팅 후에도 유지) +sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab + +# 확인 (아무것도 출력되지 않으면 성공) +swapon --show +``` + +### 2단계: containerd 설정 + +```bash +# containerd 기본 설정 생성 +sudo containerd config default | sudo tee /etc/containerd/config.toml + +# SystemdCgroup 활성화 (중요!) +sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml + +# containerd 재시작 +sudo systemctl restart containerd + +# 상태 확인 +sudo systemctl is-active containerd +``` + +### 3단계: kubeadm init (클러스터 초기화) + +```bash +sudo kubeadm init --pod-network-cidr=10.244.0.0/16 +``` + +**출력 결과 (중요 정보)**: +- 클러스터 초기화 성공 +- API 서버: https://10.10.0.74:6443 +- 워커 노드 조인 토큰 생성됨 + +### 4단계: kubectl 설정 + +일반 사용자가 kubectl을 사용할 수 있도록 설정합니다. + +```bash +mkdir -p $HOME/.kube +sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config +sudo chown $(id -u):$(id -g) $HOME/.kube/config + +# 확인 +kubectl cluster-info +``` + +### 5단계: 네트워크 플러그인 설치 (Flannel) + +Pod 간 통신을 위한 네트워크 플러그인을 설치합니다. + +```bash +kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml +``` + +### 6단계: 단일 노드 설정 + +마스터 노드에서도 워크로드를 실행할 수 있도록 taint를 제거합니다. + +```bash +kubectl taint nodes --all node-role.kubernetes.io/control-plane- +``` + +--- + +## ✅ 구축 결과 + +### 클러스터 상태 + +```bash +kubectl get nodes -o wide +``` + +| NAME | STATUS | ROLES | VERSION | INTERNAL-IP | OS-IMAGE | CONTAINER-RUNTIME | +|------|--------|-------|---------|-------------|----------|-------------------| +| waceserver | Ready | control-plane | v1.28.15 | 10.10.0.74 | Ubuntu 24.04.3 LTS | containerd://1.7.28 | + +### 시스템 Pod 상태 + +```bash +kubectl get pods -n kube-system +kubectl get pods -n kube-flannel +``` + +| 컴포넌트 | 상태 | +|---------|------| +| etcd | ✅ Running | +| kube-apiserver | ✅ Running | +| kube-controller-manager | ✅ Running | +| kube-scheduler | ✅ Running | +| kube-proxy | ✅ Running | +| coredns (x2) | ✅ Running | +| kube-flannel | ✅ Running | + +--- + +## 📌 워커 노드 추가 (필요 시) + +다른 서버를 워커 노드로 추가하려면: + +```bash +kubeadm join 10.10.0.74:6443 --token 4lfga6.luad9f367uxh0rlq \ + --discovery-token-ca-cert-hash sha256:9bea59b6fd34115c3f893a4b10bacc0a5409192b288564dc055251210081c86e +``` + +**토큰 만료 시 새 토큰 생성**: +```bash +kubeadm token create --print-join-command +``` + +--- + +## 🔧 유용한 명령어 + +### 클러스터 정보 확인 + +```bash +# 노드 상태 +kubectl get nodes -o wide + +# 모든 Pod 상태 +kubectl get pods -A + +# 클러스터 정보 +kubectl cluster-info + +# 컴포넌트 상태 +kubectl get componentstatuses +``` + +### 문제 해결 + +```bash +# kubelet 로그 확인 +sudo journalctl -u kubelet -f + +# containerd 로그 확인 +sudo journalctl -u containerd -f + +# Pod 상세 정보 +kubectl describe pod -n + +# Pod 로그 확인 +kubectl logs -n +``` + +### 클러스터 리셋 (초기화 실패 시) + +```bash +sudo kubeadm reset +sudo rm -rf /etc/cni/net.d +sudo rm -rf $HOME/.kube +sudo iptables -F && sudo iptables -t nat -F && sudo iptables -t mangle -F && sudo iptables -X +``` + +--- + +## 📂 다음 단계: 자동 배포 설정 + +쿠버네티스 클러스터 구축이 완료되었습니다. 다음 단계로 진행할 사항: + +1. **Ingress Controller 설치** (외부 트래픽 라우팅) ✅ 완료 +2. **Cert-Manager 설치** (SSL 인증서 자동 관리) +3. **Harbor/Registry 연동** (컨테이너 이미지 저장소) +4. **CI/CD 파이프라인 구성** (Gitea Actions) ✅ 완료 +5. **Helm 설치** (패키지 관리) +6. **애플리케이션 배포** (Deployment, Service, Ingress) ✅ 완료 + +### Gitea Actions 자동 배포 설정 완료 + +자세한 설정 방법은 [KUBERNETES_DEPLOYMENT_GUIDE.md](docs/KUBERNETES_DEPLOYMENT_GUIDE.md) 참조 + +#### 생성된 파일 목록 + +``` +.gitea/workflows/deploy.yml # Gitea Actions 워크플로우 +k8s/ +├── namespace.yaml # 네임스페이스 정의 +├── vexplor-config.yaml # ConfigMap +├── vexplor-secret.yaml.template # Secret 템플릿 +├── vexplor-backend-deployment.yaml # 백엔드 Deployment/Service/PVC +├── vexplor-frontend-deployment.yaml# 프론트엔드 Deployment/Service +├── vexplor-ingress.yaml # Ingress 설정 +├── local-path-provisioner.yaml # 스토리지 프로비저너 +└── ingress-nginx.yaml # Ingress 컨트롤러 패치 +``` + +#### Gitea Repository Secrets 설정 필요 + +| Secret 이름 | 설명 | +|------------|------| +| `HARBOR_USERNAME` | Harbor 사용자명 | +| `HARBOR_PASSWORD` | Harbor 비밀번호 | +| `KUBECONFIG` | base64 인코딩된 Kubernetes config | + +```bash +# KUBECONFIG 생성 방법 (K8s 서버에서 실행) +cat ~/.kube/config | base64 -w 0 +``` + +--- + +## 📞 참고 정보 + +### 서버 접속 + +```bash +# 새 서버 (쿠버네티스 클러스터) +ssh -p 22 wace@112.168.212.142 + +# 기존 서버 (참조용) +ssh -p 12991 geonhee@211.115.91.170 +``` + +### 관련 문서 + +- [Kubernetes 공식 문서](https://kubernetes.io/docs/) +- [kubeadm 설치 가이드](https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/) +- [Flannel 네트워크 플러그인](https://github.com/flannel-io/flannel) + -- 2.43.0 From 15265ebfc9eec6c7a2b9fc4efacfab919bed2481 Mon Sep 17 00:00:00 2001 From: Johngreen Date: Mon, 22 Dec 2025 17:39:26 +0900 Subject: [PATCH 34/64] Refactor deploy workflow to use SSH for k8s operations Replaces direct kubectl usage with SSH-based remote execution for Kubernetes deployment steps. Updates secrets and environment variables to use SSH key and connection info, and modifies manifest transfer and deployment verification to operate over SSH. This improves security and flexibility for remote Kubernetes server management. --- .gitea/workflows/deploy.yml | 165 ++++++++++++++++++++---------------- 1 file changed, 94 insertions(+), 71 deletions(-) diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index e307079e..ec48126e 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -8,7 +8,7 @@ # 필수 Secrets (Repository Settings > Secrets): # - HARBOR_USERNAME: Harbor 사용자명 # - HARBOR_PASSWORD: Harbor 비밀번호 -# - KUBECONFIG: base64로 인코딩된 Kubernetes config +# - K8S_SSH_KEY: base64로 인코딩된 SSH 비밀키 (쿠버네티스 서버 접속용) # # Application Secrets: # - k8s/vexplor-secret.yaml 파일에서 관리 @@ -31,10 +31,15 @@ on: env: GITEA_DOMAIN: g.wace.me HARBOR_REGISTRY: localhost:5001 - HARBOR_REGISTRY_K8S: 192.168.1.100:5001 + HARBOR_REGISTRY_K8S: harbor.wace.me HARBOR_REGISTRY_EXTERNAL: harbor.wace.me HARBOR_PROJECT: speefox_vexplor K8S_NAMESPACE: vexplor + + # 쿠버네티스 서버 SSH 접속 정보 + K8S_SSH_HOST: 112.168.212.142 + K8S_SSH_PORT: 22 + K8S_SSH_USER: wace # Frontend 빌드 환경 변수 NEXT_PUBLIC_API_URL: "https://api.vexplor.com/api" @@ -74,12 +79,7 @@ jobs: run: | echo "필수 도구 설치 중..." apt-get update -qq - apt-get install -y git curl ca-certificates gnupg - - # kubectl 설치 - curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" - chmod +x kubectl - mv kubectl /usr/local/bin/ + apt-get install -y git curl ca-certificates gnupg openssh-client # Docker 클라이언트 설치 install -m 0755 -d /etc/apt/keyrings @@ -94,7 +94,7 @@ jobs: echo "설치 완료:" git --version - kubectl version --client + ssh -V docker --version export DOCKER_HOST=unix:///var/run/docker.sock @@ -180,100 +180,121 @@ jobs: docker push ${FRONTEND_FULL_IMAGE}:latest echo "Frontend 푸시 완료" - # Kubernetes 설정 - - name: Setup Kubernetes config + # SSH 키 설정 (쿠버네티스 서버 접속용) + - name: Setup SSH Key env: - KUBECONFIG_CONTENT: ${{ secrets.KUBECONFIG }} + SSH_KEY_CONTENT: ${{ secrets.K8S_SSH_KEY }} run: | - echo "Kubernetes 설정..." + echo "SSH 키 설정..." - if [ -z "${KUBECONFIG_CONTENT}" ]; then - echo "KUBECONFIG secret이 설정되지 않았습니다!" + if [ -z "${SSH_KEY_CONTENT}" ]; then + echo "K8S_SSH_KEY secret이 설정되지 않았습니다!" exit 1 fi - mkdir -p ~/.kube - echo "${KUBECONFIG_CONTENT}" | base64 -d > ~/.kube/config - chmod 600 ~/.kube/config + mkdir -p ~/.ssh + echo "${SSH_KEY_CONTENT}" | base64 -d > ~/.ssh/id_rsa + chmod 600 ~/.ssh/id_rsa - if [ ! -s ~/.kube/config ]; then - echo "kubeconfig 파일이 비어있습니다" - exit 1 - fi + # known_hosts에 쿠버네티스 서버 추가 + ssh-keyscan -p ${K8S_SSH_PORT} ${K8S_SSH_HOST} >> ~/.ssh/known_hosts 2>/dev/null - echo "kubeconfig 파일 생성 완료" - kubectl cluster-info > /dev/null 2>&1 && echo "Kubernetes 클러스터 연결 성공" + # SSH 연결 테스트 + echo "SSH 연결 테스트..." + ssh -o StrictHostKeyChecking=no -p ${K8S_SSH_PORT} ${K8S_SSH_USER}@${K8S_SSH_HOST} "echo 'SSH 연결 성공'" + echo "SSH 키 설정 완료" - # Kubernetes 배포 - - name: Deploy to Kubernetes + # k8s 매니페스트 파일을 쿠버네티스 서버로 전송 + - name: Transfer k8s manifests run: | - echo "Kubernetes 배포 시작..." - + echo "k8s 매니페스트 파일 전송..." cd /workspace/source - # 네임스페이스 생성 (없을 때만) + # 쿠버네티스 서버에 디렉토리 생성 + ssh -p ${K8S_SSH_PORT} ${K8S_SSH_USER}@${K8S_SSH_HOST} "mkdir -p ~/vexplor-deploy/k8s" + + # k8s 파일 전송 + scp -P ${K8S_SSH_PORT} -r k8s/* ${K8S_SSH_USER}@${K8S_SSH_HOST}:~/vexplor-deploy/k8s/ + + echo "매니페스트 파일 전송 완료" + + # Kubernetes 배포 (SSH를 통해 원격 실행) + - name: Deploy to Kubernetes + env: + HARBOR_USER: ${{ secrets.HARBOR_USERNAME }} + HARBOR_PASS: ${{ secrets.HARBOR_PASSWORD }} + run: | + echo "Kubernetes 배포 시작 (SSH 원격 실행)..." + + # SSH를 통해 쿠버네티스 서버에서 kubectl 명령 실행 + ssh -p ${K8S_SSH_PORT} ${K8S_SSH_USER}@${K8S_SSH_HOST} << 'DEPLOY_SCRIPT' + set -e + cd ~/vexplor-deploy + echo "네임스페이스 확인..." kubectl apply -f k8s/namespace.yaml - # ConfigMap 적용 echo "ConfigMap 적용..." - kubectl apply -f k8s/vexplor-config.yaml -n ${K8S_NAMESPACE} + kubectl apply -f k8s/vexplor-config.yaml -n vexplor # Secret 적용 (존재하는 경우에만) if [ -f k8s/vexplor-secret.yaml ]; then echo "Secret 적용..." - kubectl apply -f k8s/vexplor-secret.yaml -n ${K8S_NAMESPACE} + kubectl apply -f k8s/vexplor-secret.yaml -n vexplor fi - # Harbor Registry Secret 생성 (없을 때만) + echo "네임스페이스 및 ConfigMap 적용 완료" + DEPLOY_SCRIPT + + # Harbor Registry Secret 생성 (별도로 처리 - 환경변수 사용) echo "Harbor Registry Secret 확인..." - if ! kubectl get secret harbor-registry -n ${K8S_NAMESPACE} > /dev/null 2>&1; then - echo "Harbor Registry Secret 생성 중..." - kubectl create secret docker-registry harbor-registry \ - --docker-server=${HARBOR_REGISTRY_K8S} \ - --docker-username=${{ secrets.HARBOR_USERNAME }} \ - --docker-password=${{ secrets.HARBOR_PASSWORD }} \ - -n ${K8S_NAMESPACE} - echo "Harbor Registry Secret 생성 완료" - else - echo "Harbor Registry Secret 이미 존재" - fi + ssh -p ${K8S_SSH_PORT} ${K8S_SSH_USER}@${K8S_SSH_HOST} "kubectl get secret harbor-registry -n vexplor" > /dev/null 2>&1 || \ + ssh -p ${K8S_SSH_PORT} ${K8S_SSH_USER}@${K8S_SSH_HOST} "kubectl create secret docker-registry harbor-registry \ + --docker-server=${HARBOR_REGISTRY_K8S} \ + --docker-username=${HARBOR_USER} \ + --docker-password='${HARBOR_PASS}' \ + -n vexplor" + echo "Harbor Registry Secret 확인 완료" # Backend 배포 echo "Backend 배포..." - kubectl apply -f k8s/vexplor-backend-deployment.yaml -n ${K8S_NAMESPACE} + ssh -p ${K8S_SSH_PORT} ${K8S_SSH_USER}@${K8S_SSH_HOST} << BACKEND_DEPLOY + set -e + cd ~/vexplor-deploy + kubectl apply -f k8s/vexplor-backend-deployment.yaml -n vexplor - if kubectl get deployment ${BACKEND_DEPLOYMENT_NAME} -n ${K8S_NAMESPACE} > /dev/null 2>&1; then - echo "Backend 이미지 업데이트..." - kubectl set image deployment/${BACKEND_DEPLOYMENT_NAME} \ - ${BACKEND_CONTAINER_NAME}=${BACKEND_FULL_IMAGE_K8S}:latest \ - -n ${K8S_NAMESPACE} - kubectl rollout restart deployment/${BACKEND_DEPLOYMENT_NAME} -n ${K8S_NAMESPACE} - fi + echo "Backend 이미지 업데이트..." + kubectl set image deployment/${BACKEND_DEPLOYMENT_NAME} \ + ${BACKEND_CONTAINER_NAME}=${HARBOR_REGISTRY_K8S}/${HARBOR_PROJECT}/${BACKEND_IMAGE_NAME}:latest \ + -n vexplor || true + kubectl rollout restart deployment/${BACKEND_DEPLOYMENT_NAME} -n vexplor echo "Backend Rolling Update 진행 중..." - kubectl rollout status deployment/${BACKEND_DEPLOYMENT_NAME} -n ${K8S_NAMESPACE} --timeout=5m + kubectl rollout status deployment/${BACKEND_DEPLOYMENT_NAME} -n vexplor --timeout=5m echo "Backend 배포 완료" + BACKEND_DEPLOY # Frontend 배포 echo "Frontend 배포..." - kubectl apply -f k8s/vexplor-frontend-deployment.yaml -n ${K8S_NAMESPACE} + ssh -p ${K8S_SSH_PORT} ${K8S_SSH_USER}@${K8S_SSH_HOST} << FRONTEND_DEPLOY + set -e + cd ~/vexplor-deploy + kubectl apply -f k8s/vexplor-frontend-deployment.yaml -n vexplor - if kubectl get deployment ${FRONTEND_DEPLOYMENT_NAME} -n ${K8S_NAMESPACE} > /dev/null 2>&1; then - echo "Frontend 이미지 업데이트..." - kubectl set image deployment/${FRONTEND_DEPLOYMENT_NAME} \ - ${FRONTEND_CONTAINER_NAME}=${FRONTEND_FULL_IMAGE_K8S}:latest \ - -n ${K8S_NAMESPACE} - kubectl rollout restart deployment/${FRONTEND_DEPLOYMENT_NAME} -n ${K8S_NAMESPACE} - fi + echo "Frontend 이미지 업데이트..." + kubectl set image deployment/${FRONTEND_DEPLOYMENT_NAME} \ + ${FRONTEND_CONTAINER_NAME}=${HARBOR_REGISTRY_K8S}/${HARBOR_PROJECT}/${FRONTEND_IMAGE_NAME}:latest \ + -n vexplor || true + kubectl rollout restart deployment/${FRONTEND_DEPLOYMENT_NAME} -n vexplor echo "Frontend Rolling Update 진행 중..." - kubectl rollout status deployment/${FRONTEND_DEPLOYMENT_NAME} -n ${K8S_NAMESPACE} --timeout=5m + kubectl rollout status deployment/${FRONTEND_DEPLOYMENT_NAME} -n vexplor --timeout=5m echo "Frontend 배포 완료" + FRONTEND_DEPLOY # Ingress 배포 echo "Ingress 배포..." - kubectl apply -f k8s/vexplor-ingress.yaml -n ${K8S_NAMESPACE} + ssh -p ${K8S_SSH_PORT} ${K8S_SSH_USER}@${K8S_SSH_HOST} "cd ~/vexplor-deploy && kubectl apply -f k8s/vexplor-ingress.yaml -n vexplor" echo "전체 배포 완료!" @@ -281,22 +302,24 @@ jobs: - name: Verify deployment run: | echo "배포 검증..." + ssh -p ${K8S_SSH_PORT} ${K8S_SSH_USER}@${K8S_SSH_HOST} << 'VERIFY_SCRIPT' echo "" echo "Backend 상태:" - kubectl get deployment ${BACKEND_DEPLOYMENT_NAME} -n ${K8S_NAMESPACE} - kubectl get pods -l app=${BACKEND_DEPLOYMENT_NAME} -n ${K8S_NAMESPACE} + kubectl get deployment vexplor-backend -n vexplor + kubectl get pods -l app=vexplor-backend -n vexplor echo "" echo "Frontend 상태:" - kubectl get deployment ${FRONTEND_DEPLOYMENT_NAME} -n ${K8S_NAMESPACE} - kubectl get pods -l app=${FRONTEND_DEPLOYMENT_NAME} -n ${K8S_NAMESPACE} + kubectl get deployment vexplor-frontend -n vexplor + kubectl get pods -l app=vexplor-frontend -n vexplor echo "" echo "Services:" - kubectl get svc -n ${K8S_NAMESPACE} + kubectl get svc -n vexplor echo "" echo "Ingress:" - kubectl get ingress -n ${K8S_NAMESPACE} + kubectl get ingress -n vexplor echo "" echo "검증 완료" + VERIFY_SCRIPT # 배포 요약 - name: Deployment summary @@ -315,8 +338,8 @@ jobs: if: failure() run: | echo "배포 실패! 이전 버전으로 롤백..." - kubectl rollout undo deployment/${BACKEND_DEPLOYMENT_NAME} -n ${K8S_NAMESPACE} || true - kubectl rollout undo deployment/${FRONTEND_DEPLOYMENT_NAME} -n ${K8S_NAMESPACE} || true + ssh -p ${K8S_SSH_PORT} ${K8S_SSH_USER}@${K8S_SSH_HOST} "kubectl rollout undo deployment/vexplor-backend -n vexplor" || true + ssh -p ${K8S_SSH_PORT} ${K8S_SSH_USER}@${K8S_SSH_HOST} "kubectl rollout undo deployment/vexplor-frontend -n vexplor" || true # Harbor 로그아웃 - name: Logout from Harbor -- 2.43.0 From 44254731145918c9bac47c4295c0eca21951f4fc Mon Sep 17 00:00:00 2001 From: Johngreen Date: Mon, 22 Dec 2025 18:25:35 +0900 Subject: [PATCH 35/64] Update app.ts --- backend-node/src/app.ts | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/backend-node/src/app.ts b/backend-node/src/app.ts index e928f96c..b3d84ecb 100644 --- a/backend-node/src/app.ts +++ b/backend-node/src/app.ts @@ -280,12 +280,20 @@ app.use(errorHandler); const PORT = config.port; const HOST = config.host; -app.listen(PORT, HOST, async () => { +const server = app.listen(PORT, HOST, async () => { logger.info(`🚀 Server is running on ${HOST}:${PORT}`); logger.info(`📊 Environment: ${config.nodeEnv}`); logger.info(`🔗 Health check: http://${HOST}:${PORT}/health`); logger.info(`🌐 External access: http://39.117.244.52:${PORT}/health`); + // 비동기 초기화 작업 (에러가 발생해도 서버는 유지) + initializeServices().catch(err => { + logger.error('❌ 서비스 초기화 중 치명적 에러 발생:', err); + }); +}); + +// 서비스 초기화 함수 분리 +async function initializeServices() { // 데이터베이스 마이그레이션 실행 try { const { @@ -343,6 +351,15 @@ app.listen(PORT, HOST, async () => { } catch (error) { logger.error(`❌ 메일 자동 삭제 스케줄러 시작 실패:`, error); } +} + +// 우아한 종료 처리 +process.on('SIGTERM', () => { + logger.info('SIGTERM signal received: closing HTTP server'); + server.close(() => { + logger.info('HTTP server closed'); + process.exit(0); + }); }); export default app; -- 2.43.0 From f2647415a17b0be3aea9fab18b4ed077b9b53141 Mon Sep 17 00:00:00 2001 From: Johngreen Date: Mon, 22 Dec 2025 18:39:00 +0900 Subject: [PATCH 36/64] Update vexplor-backend-deployment.yaml --- k8s/vexplor-backend-deployment.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/k8s/vexplor-backend-deployment.yaml b/k8s/vexplor-backend-deployment.yaml index 37778fe7..a9ab534d 100644 --- a/k8s/vexplor-backend-deployment.yaml +++ b/k8s/vexplor-backend-deployment.yaml @@ -51,7 +51,7 @@ spec: cpu: "500m" livenessProbe: httpGet: - path: /api/health + path: /health port: 3001 initialDelaySeconds: 30 periodSeconds: 10 @@ -59,7 +59,7 @@ spec: failureThreshold: 3 readinessProbe: httpGet: - path: /api/health + path: /health port: 3001 initialDelaySeconds: 10 periodSeconds: 5 -- 2.43.0 From a0b53c8223f1cb155641b1827e150484893bacf7 Mon Sep 17 00:00:00 2001 From: Johngreen Date: Sun, 28 Dec 2025 18:19:08 +0900 Subject: [PATCH 37/64] =?UTF-8?q?=EC=97=85=EC=B2=B4=EB=B3=84=20=EB=B0=B0?= =?UTF-8?q?=ED=8F=AC=EA=B5=AC=EC=A1=B0=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 +- deploy/customers/README.md | 115 ++++++++++ deploy/customers/enkid.env | 36 ++++ deploy/customers/spifox.env | 36 ++++ deploy/onpremise/README.md | 321 ++++++++++++++++++++++++++++ deploy/onpremise/docker-compose.yml | 155 ++++++++++++++ deploy/onpremise/env.example | 65 ++++++ deploy/onpremise/scripts/backup.sh | 57 +++++ deploy/onpremise/scripts/install.sh | 79 +++++++ deploy/onpremise/scripts/update.sh | 41 ++++ k8s/ingress-nginx.yaml | 41 ---- kubernetes-setup-guide.md | 75 +++---- 디지털트윈 아키텍쳐_v3.png | Bin 0 -> 1036683 bytes 13 files changed, 946 insertions(+), 79 deletions(-) create mode 100644 deploy/customers/README.md create mode 100644 deploy/customers/enkid.env create mode 100644 deploy/customers/spifox.env create mode 100644 deploy/onpremise/README.md create mode 100644 deploy/onpremise/docker-compose.yml create mode 100644 deploy/onpremise/env.example create mode 100644 deploy/onpremise/scripts/backup.sh create mode 100644 deploy/onpremise/scripts/install.sh create mode 100644 deploy/onpremise/scripts/update.sh delete mode 100644 k8s/ingress-nginx.yaml create mode 100644 디지털트윈 아키텍쳐_v3.png diff --git a/.gitignore b/.gitignore index 5b2b1f56..24814953 100644 --- a/.gitignore +++ b/.gitignore @@ -291,4 +291,6 @@ uploads/ *.hwp *.hwpx -claude.md \ No newline at end of file +claude.md + +.cursor/mcp.json \ No newline at end of file diff --git a/deploy/customers/README.md b/deploy/customers/README.md new file mode 100644 index 00000000..8b55214b --- /dev/null +++ b/deploy/customers/README.md @@ -0,0 +1,115 @@ +# 고객사별 환경 변수 관리 + +## 개요 + +이 폴더는 각 고객사(업체)별 환경 변수 설정을 **참고용**으로 관리합니다. + +**중요:** 실제 비밀번호는 이 파일에 저장하지 마세요. 템플릿으로만 사용합니다. + +--- + +## 고객사 목록 + +| 고객사 | 파일 | 배포 형태 | 상태 | +| :--- | :--- | :--- | :--- | +| 스피폭스 | `spifox.env` | 온프레미스 (공장 서버) | 진행 중 | +| 엔키드 | `enkid.env` | 온프레미스 (공장 서버) | 예정 | + +--- + +## 신규 고객사 추가 절차 + +### 1단계: 환경 변수 파일 생성 + +```bash +# 기존 파일 복사 +cp spifox.env newcustomer.env + +# 수정 +nano newcustomer.env +``` + +필수 수정 항목: +- `COMPANY_CODE`: 고유한 회사 코드 (예: NEWCO) +- `SERVER_IP`: 고객사 서버 IP +- `DB_PASSWORD`: 고유한 비밀번호 +- `JWT_SECRET`: 고유한 시크릿 키 + +### 2단계: 데이터베이스에 회사 등록 + +```sql +-- company_info 테이블에 추가 +INSERT INTO company_info (company_code, company_name, status) +VALUES ('NEWCO', '신규고객사', 'ACTIVE'); +``` + +### 3단계: 관리자 계정 생성 + +```sql +-- user_info 테이블에 관리자 추가 +INSERT INTO user_info (user_id, user_name, company_code, role) +VALUES ('newco_admin', '신규고객사 관리자', 'NEWCO', 'COMPANY_ADMIN'); +``` + +### 4단계: 고객사 서버에 배포 + +```bash +# 고객사 서버에 SSH 접속 +ssh user@customer-server + +# 설치 폴더 생성 +sudo mkdir -p /opt/vexplor +cd /opt/vexplor + +# docker-compose.yml 복사 (deploy/onpremise/에서) +# .env 파일 복사 및 수정 + +# 서비스 시작 +docker compose up -d +``` + +--- + +## 환경 변수 설명 + +| 변수 | 설명 | 예시 | +| :--- | :--- | :--- | +| `COMPANY_CODE` | 회사 고유 코드 (멀티테넌시) | `SPIFOX`, `ENKID` | +| `SERVER_IP` | 서버의 실제 IP | `192.168.0.100` | +| `DB_PASSWORD` | DB 비밀번호 | (고객사별 고유) | +| `JWT_SECRET` | JWT 토큰 시크릿 | (고객사별 고유) | +| `IMAGE_TAG` | Docker 이미지 버전 | `latest`, `v1.0.0` | + +--- + +## 보안 주의사항 + +1. **비밀번호**: 이 폴더의 파일에는 실제 비밀번호를 저장하지 마세요 +2. **Git**: `.env` 파일이 커밋되지 않도록 `.gitignore` 확인 +3. **고객사별 격리**: 각 고객사는 별도 서버, 별도 DB로 완전 격리 +4. **키 관리**: JWT_SECRET은 고객사별로 반드시 다르게 설정 + +--- + +## 구조 다이어그램 + +``` +[Harbor (이미지 저장소)] + │ + │ docker pull + ↓ +┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ +│ 스피폭스 공장 │ │ 엔키드 공장 │ │ 신규 고객사 │ +│ ┌─────────────┐ │ │ ┌─────────────┐ │ │ ┌─────────────┐ │ +│ │ Vexplor │ │ │ │ Vexplor │ │ │ │ Vexplor │ │ +│ │ SPIFOX │ │ │ │ ENKID │ │ │ │ NEWCO │ │ +│ └─────────────┘ │ │ └─────────────┘ │ │ └─────────────┘ │ +│ │ │ │ │ │ +│ [독립 DB] │ │ [독립 DB] │ │ [독립 DB] │ +└─────────────────┘ └─────────────────┘ └─────────────────┘ + +* 각 공장은 완전히 독립적으로 운영 +* 같은 Docker 이미지 사용, .env만 다름 +* 데이터는 절대 섞이지 않음 (물리적 격리) +``` + diff --git a/deploy/customers/enkid.env b/deploy/customers/enkid.env new file mode 100644 index 00000000..3a9e84df --- /dev/null +++ b/deploy/customers/enkid.env @@ -0,0 +1,36 @@ +# ============================================ +# 엔키드(ENKID) 공장 서버 환경 변수 +# ============================================ +# 이 파일을 엔키드 공장 서버의 /opt/vexplor/.env로 복사 + +# 회사 정보 +COMPANY_CODE=ENKID + +# 서버 정보 (실제 서버 IP로 변경 필요) +SERVER_IP=10.0.0.50 + +# 데이터베이스 +DB_USER=vexplor +DB_PASSWORD=enkid_secure_password_here +DB_NAME=vexplor +DB_PORT=5432 + +# 백엔드 +BACKEND_PORT=3001 +JWT_SECRET=enkid_jwt_secret_minimum_32_characters +JWT_EXPIRES_IN=24h +LOG_LEVEL=info + +# 프론트엔드 +FRONTEND_PORT=80 + +# Harbor 레지스트리 +HARBOR_USER=enkid_harbor_user +HARBOR_PASSWORD=enkid_harbor_password + +# 이미지 태그 +IMAGE_TAG=latest + +# Watchtower (1시간마다 업데이트 확인) +UPDATE_INTERVAL=3600 + diff --git a/deploy/customers/spifox.env b/deploy/customers/spifox.env new file mode 100644 index 00000000..ab7d6004 --- /dev/null +++ b/deploy/customers/spifox.env @@ -0,0 +1,36 @@ +# ============================================ +# 스피폭스(SPIFOX) 공장 서버 환경 변수 +# ============================================ +# 이 파일을 스피폭스 공장 서버의 /opt/vexplor/.env로 복사 + +# 회사 정보 +COMPANY_CODE=SPIFOX + +# 서버 정보 (실제 서버 IP로 변경 필요) +SERVER_IP=192.168.0.100 + +# 데이터베이스 +DB_USER=vexplor +DB_PASSWORD=spifox_secure_password_here +DB_NAME=vexplor +DB_PORT=5432 + +# 백엔드 +BACKEND_PORT=3001 +JWT_SECRET=spifox_jwt_secret_minimum_32_characters +JWT_EXPIRES_IN=24h +LOG_LEVEL=info + +# 프론트엔드 +FRONTEND_PORT=80 + +# Harbor 레지스트리 +HARBOR_USER=spifox_harbor_user +HARBOR_PASSWORD=spifox_harbor_password + +# 이미지 태그 +IMAGE_TAG=latest + +# Watchtower (1시간마다 업데이트 확인) +UPDATE_INTERVAL=3600 + diff --git a/deploy/onpremise/README.md b/deploy/onpremise/README.md new file mode 100644 index 00000000..76cad490 --- /dev/null +++ b/deploy/onpremise/README.md @@ -0,0 +1,321 @@ +# Vexplor 온프레미스(공장) 배포 가이드 + +## 개요 + +이 가이드는 Vexplor를 **공장 내부 서버(온프레미스)**에 배포하는 방법을 설명합니다. + +**Watchtower**를 사용하여 Harbor에 새 이미지가 푸시되면 **자동으로 업데이트**됩니다. + +--- + +## 사전 요구사항 + +### 서버 요구사항 + +| 항목 | 최소 사양 | 권장 사양 | +| :--- | :--- | :--- | +| OS | Ubuntu 20.04+ | Ubuntu 22.04 LTS | +| CPU | 4 Core | 8 Core | +| RAM | 8 GB | 16 GB | +| Disk | 50 GB | 100 GB SSD | +| Network | Harbor 접근 가능 | - | + +### 필수 소프트웨어 + +```bash +# Docker 설치 확인 +docker --version # 20.10 이상 + +# Docker Compose 설치 확인 +docker compose version # v2.0 이상 +``` + +--- + +## 1단계: 초기 설정 + +### 1.1 배포 폴더 생성 + +```bash +# 배포 폴더 생성 +sudo mkdir -p /opt/vexplor +cd /opt/vexplor + +# 파일 복사 (또는 git clone) +# deploy/onpremise/ 폴더의 내용을 복사 +``` + +### 1.2 환경 변수 설정 + +```bash +# 예제 파일 복사 +cp env.example .env + +# 편집 +nano .env +``` + +**필수 수정 항목:** + +```bash +# 서버 IP (이 서버의 실제 IP) +SERVER_IP=192.168.0.100 + +# 회사 코드 +COMPANY_CODE=SPIFOX + +# DB 비밀번호 (강력한 비밀번호 설정) +DB_PASSWORD=MySecurePassword123! + +# JWT 시크릿 (32자 이상) +JWT_SECRET=your-super-secret-jwt-key-minimum-32-chars + +# Harbor 인증 정보 +HARBOR_USER=your_username +HARBOR_PASSWORD=your_password +``` + +### 1.3 Harbor 레지스트리 로그인 + +Watchtower가 이미지를 당겨올 수 있도록 Docker 로그인이 필요합니다. + +```bash +# Harbor 로그인 +docker login harbor.wace.me + +# Username: (입력) +# Password: (입력) + +# 로그인 성공 확인 +cat ~/.docker/config.json +``` + +--- + +## 2단계: 서비스 실행 + +### 2.1 서비스 시작 + +```bash +cd /opt/vexplor + +# 이미지 다운로드 & 실행 +docker compose up -d + +# 상태 확인 +docker compose ps +``` + +### 2.2 정상 동작 확인 + +```bash +# 모든 컨테이너 Running 상태 확인 +docker compose ps + +# 로그 확인 +docker compose logs -f + +# 개별 서비스 로그 +docker compose logs -f backend +docker compose logs -f frontend +docker compose logs -f watchtower +``` + +### 2.3 웹 접속 테스트 + +``` +프론트엔드: http://SERVER_IP:80 +백엔드 API: http://SERVER_IP:3001/health +``` + +--- + +## 3단계: 자동 업데이트 확인 + +### Watchtower 동작 확인 + +```bash +# Watchtower 로그 확인 +docker compose logs -f watchtower +``` + +**정상 로그 예시:** + +``` +watchtower | time="2024-12-28T10:00:00+09:00" level=info msg="Checking for updates..." +watchtower | time="2024-12-28T10:00:05+09:00" level=info msg="Found new image harbor.wace.me/vexplor/vexplor-backend:latest" +watchtower | time="2024-12-28T10:00:10+09:00" level=info msg="Stopping container vexplor-backend" +watchtower | time="2024-12-28T10:00:15+09:00" level=info msg="Starting container vexplor-backend" +``` + +### 업데이트 주기 변경 + +```bash +# .env 파일에서 변경 +UPDATE_INTERVAL=3600 # 1시간마다 확인 + +# 변경 후 watchtower 재시작 +docker compose restart watchtower +``` + +--- + +## 운영 가이드 + +### 서비스 관리 명령어 + +```bash +# 모든 서비스 상태 확인 +docker compose ps + +# 모든 서비스 중지 +docker compose stop + +# 모든 서비스 시작 +docker compose start + +# 모든 서비스 재시작 +docker compose restart + +# 모든 서비스 삭제 (데이터 유지) +docker compose down + +# 모든 서비스 삭제 + 볼륨 삭제 (주의: 데이터 삭제됨!) +docker compose down -v +``` + +### 로그 확인 + +```bash +# 전체 로그 (실시간) +docker compose logs -f + +# 특정 서비스 로그 +docker compose logs -f backend +docker compose logs -f frontend +docker compose logs -f database + +# 최근 100줄만 +docker compose logs --tail=100 backend +``` + +### 수동 업데이트 (긴급 시) + +자동 업데이트를 기다리지 않고 즉시 업데이트하려면: + +```bash +# 최신 이미지 다운로드 +docker compose pull + +# 재시작 +docker compose up -d +``` + +### 특정 버전으로 롤백 + +```bash +# .env 파일에서 버전 지정 +IMAGE_TAG=v1.0.0 + +# 재시작 +docker compose up -d +``` + +--- + +## 백업 가이드 + +### DB 백업 + +```bash +# 백업 디렉토리 생성 +mkdir -p /opt/vexplor/backups + +# PostgreSQL 백업 +docker compose exec database pg_dump -U vexplor vexplor > /opt/vexplor/backups/backup_$(date +%Y%m%d_%H%M%S).sql +``` + +### 업로드 파일 백업 + +```bash +# 볼륨 위치 확인 +docker volume inspect vexplor_backend_uploads + +# 또는 직접 복사 +docker cp vexplor-backend:/app/uploads /opt/vexplor/backups/uploads_$(date +%Y%m%d) +``` + +### 자동 백업 스크립트 (Cron) + +```bash +# crontab 편집 +crontab -e + +# 매일 새벽 3시 DB 백업 +0 3 * * * docker compose -f /opt/vexplor/docker-compose.yml exec -T database pg_dump -U vexplor vexplor > /opt/vexplor/backups/backup_$(date +\%Y\%m\%d).sql +``` + +--- + +## 문제 해결 + +### 컨테이너가 시작되지 않음 + +```bash +# 로그 확인 +docker compose logs backend + +# 일반적인 원인: +# 1. 환경 변수 누락 → .env 파일 확인 +# 2. 포트 충돌 → netstat -tlnp | grep 3001 +# 3. 메모리 부족 → free -h +``` + +### DB 연결 실패 + +```bash +# DB 컨테이너 상태 확인 +docker compose logs database + +# DB 직접 접속 테스트 +docker compose exec database psql -U vexplor -d vexplor -c "SELECT 1" +``` + +### Watchtower가 업데이트하지 않음 + +```bash +# Watchtower 로그 확인 +docker compose logs watchtower + +# Harbor 인증 확인 +docker pull harbor.wace.me/vexplor/vexplor-backend:latest + +# 라벨 확인 (라벨이 있는 컨테이너만 업데이트) +docker inspect vexplor-backend | grep watchtower +``` + +### 디스크 공간 부족 + +```bash +# 사용하지 않는 이미지/컨테이너 정리 +docker system prune -a + +# 오래된 로그 정리 +docker compose logs --tail=0 backend # 로그 초기화 +``` + +--- + +## 보안 권장사항 + +1. **방화벽 설정**: 필요한 포트(80, 3001)만 개방 +2. **SSL/TLS**: Nginx 리버스 프록시 + Let's Encrypt 적용 권장 +3. **정기 백업**: 최소 주 1회 DB 백업 +4. **로그 모니터링**: 비정상 접근 감시 + +--- + +## 연락처 + +배포 관련 문의: [담당자 이메일] + diff --git a/deploy/onpremise/docker-compose.yml b/deploy/onpremise/docker-compose.yml new file mode 100644 index 00000000..f913384b --- /dev/null +++ b/deploy/onpremise/docker-compose.yml @@ -0,0 +1,155 @@ +# Vexplor 온프레미스(공장) 배포용 Docker Compose +# 사용법: docker-compose up -d + +version: '3.8' + +services: + # ============================================ + # 1. 데이터베이스 (PostgreSQL) + # ============================================ + database: + image: postgres:15-alpine + container_name: vexplor-db + environment: + POSTGRES_USER: ${DB_USER:-vexplor} + POSTGRES_PASSWORD: ${DB_PASSWORD:?DB_PASSWORD is required} + POSTGRES_DB: ${DB_NAME:-vexplor} + TZ: Asia/Seoul + volumes: + - postgres_data:/var/lib/postgresql/data + - ./init-db:/docker-entrypoint-initdb.d # 초기화 스크립트 (선택) + ports: + - "${DB_PORT:-5432}:5432" + restart: always + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-vexplor}"] + interval: 10s + timeout: 5s + retries: 5 + networks: + - vexplor-network + + # ============================================ + # 2. 백엔드 API (Node.js) + # ============================================ + backend: + image: harbor.wace.me/vexplor/vexplor-backend:${IMAGE_TAG:-latest} + container_name: vexplor-backend + environment: + NODE_ENV: production + PORT: 3001 + HOST: 0.0.0.0 + TZ: Asia/Seoul + # DB 연결 + DB_HOST: database + DB_PORT: 5432 + DB_USER: ${DB_USER:-vexplor} + DB_PASSWORD: ${DB_PASSWORD} + DB_NAME: ${DB_NAME:-vexplor} + # JWT + JWT_SECRET: ${JWT_SECRET:?JWT_SECRET is required} + JWT_EXPIRES_IN: ${JWT_EXPIRES_IN:-24h} + # 회사 코드 (온프레미스는 단일 회사) + DEFAULT_COMPANY_CODE: ${COMPANY_CODE:-SPIFOX} + # 로깅 + LOG_LEVEL: ${LOG_LEVEL:-info} + volumes: + - backend_uploads:/app/uploads + - backend_data:/app/data + - backend_logs:/app/logs + ports: + - "${BACKEND_PORT:-3001}:3001" + depends_on: + database: + condition: service_healthy + restart: always + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:3001/health"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 40s + networks: + - vexplor-network + labels: + - "com.centurylinklabs.watchtower.enable=true" + + # ============================================ + # 3. 프론트엔드 (Next.js) + # ============================================ + frontend: + image: harbor.wace.me/vexplor/vexplor-frontend:${IMAGE_TAG:-latest} + container_name: vexplor-frontend + environment: + NODE_ENV: production + PORT: 3000 + HOSTNAME: 0.0.0.0 + TZ: Asia/Seoul + # 백엔드 API URL (내부 통신) + NEXT_PUBLIC_API_URL: http://${SERVER_IP:-localhost}:${BACKEND_PORT:-3001}/api + ports: + - "${FRONTEND_PORT:-80}:3000" + depends_on: + - backend + restart: always + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:3000"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 30s + networks: + - vexplor-network + labels: + - "com.centurylinklabs.watchtower.enable=true" + + # ============================================ + # 4. Watchtower (자동 업데이트) + # ============================================ + watchtower: + image: containrrr/watchtower:latest + container_name: vexplor-watchtower + environment: + TZ: Asia/Seoul + # Harbor 레지스트리 인증 + REPO_USER: ${HARBOR_USER} + REPO_PASS: ${HARBOR_PASSWORD} + # 업데이트 설정 + WATCHTOWER_POLL_INTERVAL: ${UPDATE_INTERVAL:-300} # 5분마다 확인 (초 단위) + WATCHTOWER_CLEANUP: "true" # 이전 이미지 자동 삭제 + WATCHTOWER_INCLUDE_STOPPED: "true" # 중지된 컨테이너도 업데이트 + WATCHTOWER_ROLLING_RESTART: "true" # 순차 재시작 (다운타임 최소화) + WATCHTOWER_LABEL_ENABLE: "true" # 라벨이 있는 컨테이너만 업데이트 + # 업데이트 시간 제한 (선택: 새벽 2-4시만 업데이트) + # WATCHTOWER_SCHEDULE: "0 0 2 * * *" # cron 형식 (매일 새벽 2시) + # 알림 설정 (선택) + # WATCHTOWER_NOTIFICATIONS: slack + # WATCHTOWER_NOTIFICATION_SLACK_HOOK_URL: ${SLACK_WEBHOOK_URL} + volumes: + - /var/run/docker.sock:/var/run/docker.sock + # Harbor 인증 정보 (docker login 후 생성됨) + - ~/.docker/config.json:/config.json:ro + restart: always + networks: + - vexplor-network + +# ============================================ +# 볼륨 정의 +# ============================================ +volumes: + postgres_data: + driver: local + backend_uploads: + driver: local + backend_data: + driver: local + backend_logs: + driver: local + +# ============================================ +# 네트워크 정의 +# ============================================ +networks: + vexplor-network: + driver: bridge + diff --git a/deploy/onpremise/env.example b/deploy/onpremise/env.example new file mode 100644 index 00000000..7ffc0d5b --- /dev/null +++ b/deploy/onpremise/env.example @@ -0,0 +1,65 @@ +# ============================================ +# Vexplor 온프레미스(공장) 환경 변수 +# ============================================ +# 사용법: 이 파일을 .env로 복사 후 값 수정 +# cp env.example .env + +# ============================================ +# 서버 정보 +# ============================================ +# 이 서버의 IP 주소 (프론트엔드가 백엔드 API 호출할 때 사용) +SERVER_IP=192.168.0.100 + +# ============================================ +# 회사 정보 +# ============================================ +# 이 공장의 회사 코드 (멀티테넌시용) +COMPANY_CODE=SPIFOX + +# ============================================ +# 데이터베이스 설정 +# ============================================ +DB_USER=vexplor +DB_PASSWORD=your_secure_password_here +DB_NAME=vexplor +DB_PORT=5432 + +# ============================================ +# 백엔드 설정 +# ============================================ +BACKEND_PORT=3001 +JWT_SECRET=your_jwt_secret_key_minimum_32_characters +JWT_EXPIRES_IN=24h +LOG_LEVEL=info + +# ============================================ +# 프론트엔드 설정 +# ============================================ +FRONTEND_PORT=80 + +# ============================================ +# Harbor 레지스트리 인증 +# ============================================ +# Watchtower가 이미지를 당겨올 때 사용 +HARBOR_USER=your_harbor_username +HARBOR_PASSWORD=your_harbor_password + +# ============================================ +# 이미지 태그 +# ============================================ +# latest 또는 특정 버전 (v1.0.0 등) +IMAGE_TAG=latest + +# ============================================ +# Watchtower 설정 +# ============================================ +# 업데이트 확인 주기 (초 단위) +# 300 = 5분, 3600 = 1시간, 86400 = 24시간 +UPDATE_INTERVAL=3600 + +# ============================================ +# 알림 설정 (선택) +# ============================================ +# Slack 웹훅 URL (업데이트 알림 받기) +# SLACK_WEBHOOK_URL=https://hooks.slack.com/services/xxx/xxx/xxx + diff --git a/deploy/onpremise/scripts/backup.sh b/deploy/onpremise/scripts/backup.sh new file mode 100644 index 00000000..1e3a65fd --- /dev/null +++ b/deploy/onpremise/scripts/backup.sh @@ -0,0 +1,57 @@ +#!/bin/bash +# ============================================ +# Vexplor 백업 스크립트 +# Cron에 등록하여 정기 백업 가능 +# ============================================ + +set -e + +INSTALL_DIR="/opt/vexplor" +BACKUP_DIR="/opt/vexplor/backups" +DATE=$(date +%Y%m%d_%H%M%S) + +# 백업 디렉토리 생성 +mkdir -p $BACKUP_DIR + +echo "==========================================" +echo " Vexplor 백업 시작 - $DATE" +echo "==========================================" + +cd $INSTALL_DIR + +# 1. PostgreSQL 데이터베이스 백업 +echo "[1/3] 데이터베이스 백업..." +docker compose exec -T database pg_dump -U vexplor vexplor > "$BACKUP_DIR/db_$DATE.sql" +gzip "$BACKUP_DIR/db_$DATE.sql" +echo " → $BACKUP_DIR/db_$DATE.sql.gz" + +# 2. 업로드 파일 백업 +echo "[2/3] 업로드 파일 백업..." +docker cp vexplor-backend:/app/uploads "$BACKUP_DIR/uploads_$DATE" 2>/dev/null || echo " → 업로드 폴더 없음 (스킵)" +if [ -d "$BACKUP_DIR/uploads_$DATE" ]; then + tar -czf "$BACKUP_DIR/uploads_$DATE.tar.gz" -C "$BACKUP_DIR" "uploads_$DATE" + rm -rf "$BACKUP_DIR/uploads_$DATE" + echo " → $BACKUP_DIR/uploads_$DATE.tar.gz" +fi + +# 3. 환경 설정 백업 +echo "[3/3] 환경 설정 백업..." +cp "$INSTALL_DIR/.env" "$BACKUP_DIR/env_$DATE" +cp "$INSTALL_DIR/docker-compose.yml" "$BACKUP_DIR/docker-compose_$DATE.yml" +echo " → $BACKUP_DIR/env_$DATE" +echo " → $BACKUP_DIR/docker-compose_$DATE.yml" + +# 4. 오래된 백업 정리 (30일 이상) +echo "" +echo "[정리] 30일 이상 된 백업 삭제..." +find $BACKUP_DIR -type f -mtime +30 -delete 2>/dev/null || true + +# 완료 +echo "" +echo "==========================================" +echo " 백업 완료!" +echo "==========================================" +echo "" +echo "백업 위치: $BACKUP_DIR" +ls -lh $BACKUP_DIR | tail -10 + diff --git a/deploy/onpremise/scripts/install.sh b/deploy/onpremise/scripts/install.sh new file mode 100644 index 00000000..880dcbcc --- /dev/null +++ b/deploy/onpremise/scripts/install.sh @@ -0,0 +1,79 @@ +#!/bin/bash +# ============================================ +# Vexplor 온프레미스 초기 설치 스크립트 +# ============================================ + +set -e + +echo "==========================================" +echo " Vexplor 온프레미스 설치 스크립트" +echo "==========================================" + +# 색상 정의 +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +# 설치 경로 +INSTALL_DIR="/opt/vexplor" + +# 1. Docker 설치 확인 +echo -e "\n${YELLOW}[1/5] Docker 설치 확인...${NC}" +if ! command -v docker &> /dev/null; then + echo -e "${RED}Docker가 설치되어 있지 않습니다.${NC}" + echo "다음 명령어로 설치하세요:" + echo " curl -fsSL https://get.docker.com | sh" + echo " sudo usermod -aG docker \$USER" + exit 1 +fi +echo -e "${GREEN}Docker $(docker --version | cut -d' ' -f3)${NC}" + +# 2. Docker Compose 확인 +echo -e "\n${YELLOW}[2/5] Docker Compose 확인...${NC}" +if ! docker compose version &> /dev/null; then + echo -e "${RED}Docker Compose v2가 설치되어 있지 않습니다.${NC}" + exit 1 +fi +echo -e "${GREEN}$(docker compose version)${NC}" + +# 3. 설치 디렉토리 생성 +echo -e "\n${YELLOW}[3/5] 설치 디렉토리 생성...${NC}" +sudo mkdir -p $INSTALL_DIR +sudo chown $USER:$USER $INSTALL_DIR +echo -e "${GREEN}$INSTALL_DIR 생성 완료${NC}" + +# 4. 파일 복사 +echo -e "\n${YELLOW}[4/5] 설정 파일 복사...${NC}" +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" + +cp "$SCRIPT_DIR/docker-compose.yml" "$INSTALL_DIR/" +cp "$SCRIPT_DIR/env.example" "$INSTALL_DIR/" + +if [ ! -f "$INSTALL_DIR/.env" ]; then + cp "$SCRIPT_DIR/env.example" "$INSTALL_DIR/.env" + echo -e "${YELLOW}[주의] .env 파일을 생성했습니다. 반드시 수정하세요!${NC}" +fi + +echo -e "${GREEN}파일 복사 완료${NC}" + +# 5. Harbor 로그인 안내 +echo -e "\n${YELLOW}[5/5] Harbor 레지스트리 로그인...${NC}" +if [ ! -f ~/.docker/config.json ] || ! grep -q "harbor.wace.me" ~/.docker/config.json 2>/dev/null; then + echo -e "${YELLOW}Harbor 로그인이 필요합니다:${NC}" + echo " docker login harbor.wace.me" +else + echo -e "${GREEN}Harbor 로그인 확인됨${NC}" +fi + +# 완료 메시지 +echo -e "\n==========================================" +echo -e "${GREEN} 설치 준비 완료!${NC}" +echo "==========================================" +echo "" +echo "다음 단계:" +echo " 1. 환경 변수 설정: nano $INSTALL_DIR/.env" +echo " 2. Harbor 로그인: docker login harbor.wace.me" +echo " 3. 서비스 시작: cd $INSTALL_DIR && docker compose up -d" +echo "" + diff --git a/deploy/onpremise/scripts/update.sh b/deploy/onpremise/scripts/update.sh new file mode 100644 index 00000000..77e7678b --- /dev/null +++ b/deploy/onpremise/scripts/update.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# ============================================ +# Vexplor 수동 업데이트 스크립트 +# Watchtower를 기다리지 않고 즉시 업데이트할 때 사용 +# ============================================ + +set -e + +INSTALL_DIR="/opt/vexplor" +cd $INSTALL_DIR + +echo "==========================================" +echo " Vexplor 수동 업데이트" +echo "==========================================" + +# 1. 현재 상태 백업 +echo "[1/4] 현재 설정 백업..." +docker compose config > "backup-config-$(date +%Y%m%d-%H%M%S).yml" + +# 2. 최신 이미지 다운로드 +echo "[2/4] 최신 이미지 다운로드..." +docker compose pull backend frontend + +# 3. 서비스 재시작 (롤링 업데이트) +echo "[3/4] 서비스 재시작..." +docker compose up -d --no-deps backend +sleep 10 # 백엔드가 완전히 뜰 때까지 대기 +docker compose up -d --no-deps frontend + +# 4. 상태 확인 +echo "[4/4] 상태 확인..." +sleep 5 +docker compose ps + +echo "" +echo "==========================================" +echo " 업데이트 완료!" +echo "==========================================" +echo "" +echo "로그 확인: docker compose logs -f" + diff --git a/k8s/ingress-nginx.yaml b/k8s/ingress-nginx.yaml deleted file mode 100644 index dfb551cd..00000000 --- a/k8s/ingress-nginx.yaml +++ /dev/null @@ -1,41 +0,0 @@ -# Nginx Ingress Controller 설치 -# 단일 노드 클러스터용 설정 (NodePort 사용) -# -# 설치 명령어: -# kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.9.5/deploy/static/provider/baremetal/deploy.yaml -# -# 또는 이 파일로 커스텀 설치: -# kubectl apply -f k8s/ingress-nginx.yaml - -# NodePort를 80, 443으로 고정하는 패치용 설정 -apiVersion: v1 -kind: Service -metadata: - name: ingress-nginx-controller - namespace: ingress-nginx - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/instance: ingress-nginx - app.kubernetes.io/component: controller -spec: - type: NodePort - externalTrafficPolicy: Local - ipFamilyPolicy: SingleStack - ipFamilies: - - IPv4 - ports: - - name: http - port: 80 - protocol: TCP - targetPort: http - nodePort: 30080 - - name: https - port: 443 - protocol: TCP - targetPort: https - nodePort: 30443 - selector: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/instance: ingress-nginx - app.kubernetes.io/component: controller - diff --git a/kubernetes-setup-guide.md b/kubernetes-setup-guide.md index 3d27b04c..8f785b46 100644 --- a/kubernetes-setup-guide.md +++ b/kubernetes-setup-guide.md @@ -12,29 +12,29 @@ ### 기존 서버 (참조용) -| 항목 | 값 | -|------|-----| -| IP | 211.115.91.170 | -| SSH 포트 | 12991 | -| 사용자 | geonhee | -| OS | Ubuntu 24.04.3 LTS | -| K8s 버전 | v1.28.0 | -| 컨테이너 런타임 | containerd 1.7.28 | +| 항목 | 값 | +| --------------- | ------------------ | +| IP | 211.115.91.170 | +| SSH 포트 | 12991 | +| 사용자 | geonhee | +| OS | Ubuntu 24.04.3 LTS | +| K8s 버전 | v1.28.0 | +| 컨테이너 런타임 | containerd 1.7.28 | ### 새 서버 (구축 완료) -| 항목 | 값 | -|------|-----| -| IP | 112.168.212.142 | -| SSH 포트 | 22 | -| 사용자 | wace | -| 호스트명 | waceserver | -| OS | Ubuntu 24.04.3 LTS | -| K8s 버전 | v1.28.15 | -| 컨테이너 런타임 | containerd 1.7.28 | -| 내부 IP | 10.10.0.74 | -| CPU | 20코어 | -| 메모리 | 31GB | +| 항목 | 값 | +| --------------- | ------------------ | +| IP | 112.168.212.142 | +| SSH 포트 | 22 | +| 사용자 | wace | +| 호스트명 | waceserver | +| OS | Ubuntu 24.04.3 LTS | +| K8s 버전 | v1.28.15 | +| 컨테이너 런타임 | containerd 1.7.28 | +| 내부 IP | 10.10.0.74 | +| CPU | 20코어 | +| 메모리 | 31GB | --- @@ -112,6 +112,7 @@ sudo kubeadm init --pod-network-cidr=10.244.0.0/16 ``` **출력 결과 (중요 정보)**: + - 클러스터 초기화 성공 - API 서버: https://10.10.0.74:6443 - 워커 노드 조인 토큰 생성됨 @@ -155,9 +156,9 @@ kubectl taint nodes --all node-role.kubernetes.io/control-plane- kubectl get nodes -o wide ``` -| NAME | STATUS | ROLES | VERSION | INTERNAL-IP | OS-IMAGE | CONTAINER-RUNTIME | -|------|--------|-------|---------|-------------|----------|-------------------| -| waceserver | Ready | control-plane | v1.28.15 | 10.10.0.74 | Ubuntu 24.04.3 LTS | containerd://1.7.28 | +| NAME | STATUS | ROLES | VERSION | INTERNAL-IP | OS-IMAGE | CONTAINER-RUNTIME | +| ---------- | ------ | ------------- | -------- | ----------- | ------------------ | ------------------- | +| waceserver | Ready | control-plane | v1.28.15 | 10.10.0.74 | Ubuntu 24.04.3 LTS | containerd://1.7.28 | ### 시스템 Pod 상태 @@ -166,15 +167,15 @@ kubectl get pods -n kube-system kubectl get pods -n kube-flannel ``` -| 컴포넌트 | 상태 | -|---------|------| -| etcd | ✅ Running | -| kube-apiserver | ✅ Running | +| 컴포넌트 | 상태 | +| ----------------------- | ---------- | +| etcd | ✅ Running | +| kube-apiserver | ✅ Running | | kube-controller-manager | ✅ Running | -| kube-scheduler | ✅ Running | -| kube-proxy | ✅ Running | -| coredns (x2) | ✅ Running | -| kube-flannel | ✅ Running | +| kube-scheduler | ✅ Running | +| kube-proxy | ✅ Running | +| coredns (x2) | ✅ Running | +| kube-flannel | ✅ Running | --- @@ -188,6 +189,7 @@ kubeadm join 10.10.0.74:6443 --token 4lfga6.luad9f367uxh0rlq \ ``` **토큰 만료 시 새 토큰 생성**: + ```bash kubeadm token create --print-join-command ``` @@ -271,11 +273,11 @@ k8s/ #### Gitea Repository Secrets 설정 필요 -| Secret 이름 | 설명 | -|------------|------| -| `HARBOR_USERNAME` | Harbor 사용자명 | -| `HARBOR_PASSWORD` | Harbor 비밀번호 | -| `KUBECONFIG` | base64 인코딩된 Kubernetes config | +| Secret 이름 | 설명 | +| ------------------- | --------------------------------- | +| `HARBOR_USERNAME` | Harbor 사용자명 | +| `HARBOR_PASSWORD` | Harbor 비밀번호 | +| `KUBECONFIG` | base64 인코딩된 Kubernetes config | ```bash # KUBECONFIG 생성 방법 (K8s 서버에서 실행) @@ -301,4 +303,3 @@ ssh -p 12991 geonhee@211.115.91.170 - [Kubernetes 공식 문서](https://kubernetes.io/docs/) - [kubeadm 설치 가이드](https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/) - [Flannel 네트워크 플러그인](https://github.com/flannel-io/flannel) - diff --git a/디지털트윈 아키텍쳐_v3.png b/디지털트윈 아키텍쳐_v3.png new file mode 100644 index 0000000000000000000000000000000000000000..b72e754936d5bb355c9a5caffaa55e61c33523bc GIT binary patch literal 1036683 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�KsP%w63jvf&hO+vtA5+TIygEi;Q0ubQ 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 z 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�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ξ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

yx8)S*g2m`fXEmqa-`p~I@l(<@u5PtK9I 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

?-X;D`xrh}yZrLtI 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

cKJb4IFsuWpD6<=`uh$c2~(fKHesFdWJ9 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 q?)40)K?80>NoH Date: Sun, 28 Dec 2025 18:24:50 +0900 Subject: [PATCH 38/64] Update deploy.yml --- .gitea/workflows/deploy.yml | 238 ++++++++---------------------------- 1 file changed, 50 insertions(+), 188 deletions(-) diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index ec48126e..e5c8d001 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -1,19 +1,16 @@ -# Gitea Actions Workflow - vexplor 자동 배포 +# Gitea Actions Workflow - vexplor 이미지 빌드 & Harbor Push # -# 환경 변수: -# - GITEA_DOMAIN: g.wace.me -# - HARBOR_REGISTRY: harbor.wace.me -# - K8S_NAMESPACE: vexplor +# 동작 방식: +# 1. main 브랜치에 push 시 자동 실행 +# 2. Docker 이미지 빌드 (Backend, Frontend) +# 3. Harbor 레지스트리에 Push +# 4. 공장 서버의 Watchtower가 새 이미지 감지 후 자동 업데이트 # # 필수 Secrets (Repository Settings > Secrets): # - HARBOR_USERNAME: Harbor 사용자명 # - HARBOR_PASSWORD: Harbor 비밀번호 -# - K8S_SSH_KEY: base64로 인코딩된 SSH 비밀키 (쿠버네티스 서버 접속용) -# -# Application Secrets: -# - k8s/vexplor-secret.yaml 파일에서 관리 -name: Deploy vexplor +name: Build and Push Images on: push: @@ -24,44 +21,35 @@ on: - "backend-node/**" - "frontend/**" - "docker/**" - - "k8s/**" - ".gitea/workflows/deploy.yml" - workflow_dispatch: + paths-ignore: + - "**.md" + - "deploy/**" + - "k8s/**" + workflow_dispatch: # 수동 실행도 가능 env: GITEA_DOMAIN: g.wace.me HARBOR_REGISTRY: localhost:5001 - HARBOR_REGISTRY_K8S: harbor.wace.me HARBOR_REGISTRY_EXTERNAL: harbor.wace.me HARBOR_PROJECT: speefox_vexplor - K8S_NAMESPACE: vexplor - - # 쿠버네티스 서버 SSH 접속 정보 - K8S_SSH_HOST: 112.168.212.142 - K8S_SSH_PORT: 22 - K8S_SSH_USER: wace # Frontend 빌드 환경 변수 NEXT_PUBLIC_API_URL: "https://api.vexplor.com/api" NEXT_PUBLIC_ENV: "production" - INTERNAL_API_URL: "http://vexplor-backend-service:3001" # Frontend 설정 FRONTEND_IMAGE_NAME: vexplor-frontend - FRONTEND_DEPLOYMENT_NAME: vexplor-frontend - FRONTEND_CONTAINER_NAME: vexplor-frontend FRONTEND_BUILD_CONTEXT: frontend FRONTEND_DOCKERFILE_PATH: docker/deploy/frontend.Dockerfile # Backend 설정 BACKEND_IMAGE_NAME: vexplor-backend - BACKEND_DEPLOYMENT_NAME: vexplor-backend - BACKEND_CONTAINER_NAME: vexplor-backend BACKEND_BUILD_CONTEXT: backend-node BACKEND_DOCKERFILE_PATH: docker/deploy/backend.Dockerfile jobs: - build-and-deploy: + build-and-push: runs-on: ubuntu-24.04 steps: @@ -79,7 +67,7 @@ jobs: run: | echo "필수 도구 설치 중..." apt-get update -qq - apt-get install -y git curl ca-certificates gnupg openssh-client + apt-get install -y git curl ca-certificates gnupg # Docker 클라이언트 설치 install -m 0755 -d /etc/apt/keyrings @@ -94,7 +82,6 @@ jobs: echo "설치 완료:" git --version - ssh -V docker --version export DOCKER_HOST=unix:///var/run/docker.sock @@ -120,13 +107,13 @@ jobs: # Frontend 이미지 echo "FRONTEND_FULL_IMAGE=${HARBOR_REGISTRY}/${HARBOR_PROJECT}/${FRONTEND_IMAGE_NAME}" >> $GITHUB_ENV - echo "FRONTEND_FULL_IMAGE_K8S=${HARBOR_REGISTRY_K8S}/${HARBOR_PROJECT}/${FRONTEND_IMAGE_NAME}" >> $GITHUB_ENV # Backend 이미지 echo "BACKEND_FULL_IMAGE=${HARBOR_REGISTRY}/${HARBOR_PROJECT}/${BACKEND_IMAGE_NAME}" >> $GITHUB_ENV - echo "BACKEND_FULL_IMAGE_K8S=${HARBOR_REGISTRY_K8S}/${HARBOR_PROJECT}/${BACKEND_IMAGE_NAME}" >> $GITHUB_ENV + echo "==========================================" echo "빌드 태그: ${IMAGE_TAG}" + echo "==========================================" # Harbor 로그인 - name: Login to Harbor @@ -144,7 +131,9 @@ jobs: # Backend 빌드 및 푸시 - name: Build and Push Backend image run: | - echo "Backend 이미지 빌드 및 푸시..." + echo "==========================================" + echo "Backend 이미지 빌드 시작..." + echo "==========================================" export DOCKER_HOST=unix:///var/run/docker.sock cd /workspace/source @@ -154,14 +143,22 @@ jobs: -f ${BACKEND_DOCKERFILE_PATH} \ ${BACKEND_BUILD_CONTEXT} + echo "Backend 이미지 푸시..." docker push ${BACKEND_FULL_IMAGE}:${IMAGE_TAG} docker push ${BACKEND_FULL_IMAGE}:latest - echo "Backend 푸시 완료" + + echo "==========================================" + echo "Backend 푸시 완료!" + echo " - ${BACKEND_FULL_IMAGE}:${IMAGE_TAG}" + echo " - ${BACKEND_FULL_IMAGE}:latest" + echo "==========================================" # Frontend 빌드 및 푸시 - name: Build and Push Frontend image run: | - echo "Frontend 이미지 빌드 및 푸시..." + echo "==========================================" + echo "Frontend 이미지 빌드 시작..." + echo "==========================================" export DOCKER_HOST=unix:///var/run/docker.sock cd /workspace/source @@ -176,175 +173,40 @@ jobs: --build-arg NEXT_PUBLIC_API_URL="${NEXT_PUBLIC_API_URL}" \ ${FRONTEND_BUILD_CONTEXT} + echo "Frontend 이미지 푸시..." docker push ${FRONTEND_FULL_IMAGE}:${IMAGE_TAG} docker push ${FRONTEND_FULL_IMAGE}:latest - echo "Frontend 푸시 완료" + + echo "==========================================" + echo "Frontend 푸시 완료!" + echo " - ${FRONTEND_FULL_IMAGE}:${IMAGE_TAG}" + echo " - ${FRONTEND_FULL_IMAGE}:latest" + echo "==========================================" - # SSH 키 설정 (쿠버네티스 서버 접속용) - - name: Setup SSH Key - env: - SSH_KEY_CONTENT: ${{ secrets.K8S_SSH_KEY }} - run: | - echo "SSH 키 설정..." - - if [ -z "${SSH_KEY_CONTENT}" ]; then - echo "K8S_SSH_KEY secret이 설정되지 않았습니다!" - exit 1 - fi - - mkdir -p ~/.ssh - echo "${SSH_KEY_CONTENT}" | base64 -d > ~/.ssh/id_rsa - chmod 600 ~/.ssh/id_rsa - - # known_hosts에 쿠버네티스 서버 추가 - ssh-keyscan -p ${K8S_SSH_PORT} ${K8S_SSH_HOST} >> ~/.ssh/known_hosts 2>/dev/null - - # SSH 연결 테스트 - echo "SSH 연결 테스트..." - ssh -o StrictHostKeyChecking=no -p ${K8S_SSH_PORT} ${K8S_SSH_USER}@${K8S_SSH_HOST} "echo 'SSH 연결 성공'" - echo "SSH 키 설정 완료" - - # k8s 매니페스트 파일을 쿠버네티스 서버로 전송 - - name: Transfer k8s manifests - run: | - echo "k8s 매니페스트 파일 전송..." - cd /workspace/source - - # 쿠버네티스 서버에 디렉토리 생성 - ssh -p ${K8S_SSH_PORT} ${K8S_SSH_USER}@${K8S_SSH_HOST} "mkdir -p ~/vexplor-deploy/k8s" - - # k8s 파일 전송 - scp -P ${K8S_SSH_PORT} -r k8s/* ${K8S_SSH_USER}@${K8S_SSH_HOST}:~/vexplor-deploy/k8s/ - - echo "매니페스트 파일 전송 완료" - - # Kubernetes 배포 (SSH를 통해 원격 실행) - - name: Deploy to Kubernetes - env: - HARBOR_USER: ${{ secrets.HARBOR_USERNAME }} - HARBOR_PASS: ${{ secrets.HARBOR_PASSWORD }} - run: | - echo "Kubernetes 배포 시작 (SSH 원격 실행)..." - - # SSH를 통해 쿠버네티스 서버에서 kubectl 명령 실행 - ssh -p ${K8S_SSH_PORT} ${K8S_SSH_USER}@${K8S_SSH_HOST} << 'DEPLOY_SCRIPT' - set -e - cd ~/vexplor-deploy - - echo "네임스페이스 확인..." - kubectl apply -f k8s/namespace.yaml - - echo "ConfigMap 적용..." - kubectl apply -f k8s/vexplor-config.yaml -n vexplor - - # Secret 적용 (존재하는 경우에만) - if [ -f k8s/vexplor-secret.yaml ]; then - echo "Secret 적용..." - kubectl apply -f k8s/vexplor-secret.yaml -n vexplor - fi - - echo "네임스페이스 및 ConfigMap 적용 완료" - DEPLOY_SCRIPT - - # Harbor Registry Secret 생성 (별도로 처리 - 환경변수 사용) - echo "Harbor Registry Secret 확인..." - ssh -p ${K8S_SSH_PORT} ${K8S_SSH_USER}@${K8S_SSH_HOST} "kubectl get secret harbor-registry -n vexplor" > /dev/null 2>&1 || \ - ssh -p ${K8S_SSH_PORT} ${K8S_SSH_USER}@${K8S_SSH_HOST} "kubectl create secret docker-registry harbor-registry \ - --docker-server=${HARBOR_REGISTRY_K8S} \ - --docker-username=${HARBOR_USER} \ - --docker-password='${HARBOR_PASS}' \ - -n vexplor" - echo "Harbor Registry Secret 확인 완료" - - # Backend 배포 - echo "Backend 배포..." - ssh -p ${K8S_SSH_PORT} ${K8S_SSH_USER}@${K8S_SSH_HOST} << BACKEND_DEPLOY - set -e - cd ~/vexplor-deploy - kubectl apply -f k8s/vexplor-backend-deployment.yaml -n vexplor - - echo "Backend 이미지 업데이트..." - kubectl set image deployment/${BACKEND_DEPLOYMENT_NAME} \ - ${BACKEND_CONTAINER_NAME}=${HARBOR_REGISTRY_K8S}/${HARBOR_PROJECT}/${BACKEND_IMAGE_NAME}:latest \ - -n vexplor || true - kubectl rollout restart deployment/${BACKEND_DEPLOYMENT_NAME} -n vexplor - - echo "Backend Rolling Update 진행 중..." - kubectl rollout status deployment/${BACKEND_DEPLOYMENT_NAME} -n vexplor --timeout=5m - echo "Backend 배포 완료" - BACKEND_DEPLOY - - # Frontend 배포 - echo "Frontend 배포..." - ssh -p ${K8S_SSH_PORT} ${K8S_SSH_USER}@${K8S_SSH_HOST} << FRONTEND_DEPLOY - set -e - cd ~/vexplor-deploy - kubectl apply -f k8s/vexplor-frontend-deployment.yaml -n vexplor - - echo "Frontend 이미지 업데이트..." - kubectl set image deployment/${FRONTEND_DEPLOYMENT_NAME} \ - ${FRONTEND_CONTAINER_NAME}=${HARBOR_REGISTRY_K8S}/${HARBOR_PROJECT}/${FRONTEND_IMAGE_NAME}:latest \ - -n vexplor || true - kubectl rollout restart deployment/${FRONTEND_DEPLOYMENT_NAME} -n vexplor - - echo "Frontend Rolling Update 진행 중..." - kubectl rollout status deployment/${FRONTEND_DEPLOYMENT_NAME} -n vexplor --timeout=5m - echo "Frontend 배포 완료" - FRONTEND_DEPLOY - - # Ingress 배포 - echo "Ingress 배포..." - ssh -p ${K8S_SSH_PORT} ${K8S_SSH_USER}@${K8S_SSH_HOST} "cd ~/vexplor-deploy && kubectl apply -f k8s/vexplor-ingress.yaml -n vexplor" - - echo "전체 배포 완료!" - - # 배포 검증 - - name: Verify deployment - run: | - echo "배포 검증..." - ssh -p ${K8S_SSH_PORT} ${K8S_SSH_USER}@${K8S_SSH_HOST} << 'VERIFY_SCRIPT' - echo "" - echo "Backend 상태:" - kubectl get deployment vexplor-backend -n vexplor - kubectl get pods -l app=vexplor-backend -n vexplor - echo "" - echo "Frontend 상태:" - kubectl get deployment vexplor-frontend -n vexplor - kubectl get pods -l app=vexplor-frontend -n vexplor - echo "" - echo "Services:" - kubectl get svc -n vexplor - echo "" - echo "Ingress:" - kubectl get ingress -n vexplor - echo "" - echo "검증 완료" - VERIFY_SCRIPT - - # 배포 요약 - - name: Deployment summary + # 빌드 완료 요약 + - name: Build summary if: success() run: | + echo "" echo "==========================================" - echo "배포가 성공적으로 완료되었습니다!" + echo " 이미지 빌드 & Push 완료!" echo "==========================================" + echo "" echo "빌드 버전: ${IMAGE_TAG}" - echo "Frontend: https://v1.vexplor.com" - echo "Backend API: https://api.vexplor.com" + echo "" + echo "푸시된 이미지:" + echo " - Backend: ${HARBOR_REGISTRY_EXTERNAL}/${HARBOR_PROJECT}/${BACKEND_IMAGE_NAME}:latest" + echo " - Frontend: ${HARBOR_REGISTRY_EXTERNAL}/${HARBOR_PROJECT}/${FRONTEND_IMAGE_NAME}:latest" + echo "" + echo "다음 단계:" + echo " - 공장 서버의 Watchtower가 자동으로 새 이미지를 감지합니다" + echo " - 또는 수동 업데이트: docker compose pull && docker compose up -d" + echo "" echo "==========================================" - # 실패 시 롤백 - - name: Rollback on failure - if: failure() - run: | - echo "배포 실패! 이전 버전으로 롤백..." - ssh -p ${K8S_SSH_PORT} ${K8S_SSH_USER}@${K8S_SSH_HOST} "kubectl rollout undo deployment/vexplor-backend -n vexplor" || true - ssh -p ${K8S_SSH_PORT} ${K8S_SSH_USER}@${K8S_SSH_HOST} "kubectl rollout undo deployment/vexplor-frontend -n vexplor" || true - # Harbor 로그아웃 - name: Logout from Harbor if: always() run: | export DOCKER_HOST=unix:///var/run/docker.sock docker logout ${HARBOR_REGISTRY} || true - -- 2.43.0 From 48e5fc9ca44fe467c64c88381f322c3b7eef9071 Mon Sep 17 00:00:00 2001 From: Johngreen Date: Sun, 28 Dec 2025 19:49:58 +0900 Subject: [PATCH 39/64] =?UTF-8?q?Watchtower=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/onpremise/docker-compose.yml | 11 +- deploy/onpremise/scripts/server-setup.sh | 130 +++++++++++++++++++++++ 2 files changed, 136 insertions(+), 5 deletions(-) create mode 100644 deploy/onpremise/scripts/server-setup.sh diff --git a/deploy/onpremise/docker-compose.yml b/deploy/onpremise/docker-compose.yml index f913384b..336fd453 100644 --- a/deploy/onpremise/docker-compose.yml +++ b/deploy/onpremise/docker-compose.yml @@ -1,7 +1,5 @@ # Vexplor 온프레미스(공장) 배포용 Docker Compose -# 사용법: docker-compose up -d - -version: '3.8' +# 사용법: docker compose up -d services: # ============================================ @@ -33,7 +31,7 @@ services: # 2. 백엔드 API (Node.js) # ============================================ backend: - image: harbor.wace.me/vexplor/vexplor-backend:${IMAGE_TAG:-latest} + image: harbor.wace.me/speefox_vexplor/vexplor-backend:${IMAGE_TAG:-latest} container_name: vexplor-backend environment: NODE_ENV: production @@ -49,6 +47,8 @@ services: # JWT JWT_SECRET: ${JWT_SECRET:?JWT_SECRET is required} JWT_EXPIRES_IN: ${JWT_EXPIRES_IN:-24h} + # 암호화 키 (메일 등 민감정보 암호화용) + ENCRYPTION_KEY: ${ENCRYPTION_KEY:-vexplor-encryption-key-32characters-secure} # 회사 코드 (온프레미스는 단일 회사) DEFAULT_COMPANY_CODE: ${COMPANY_CODE:-SPIFOX} # 로깅 @@ -78,7 +78,7 @@ services: # 3. 프론트엔드 (Next.js) # ============================================ frontend: - image: harbor.wace.me/vexplor/vexplor-frontend:${IMAGE_TAG:-latest} + image: harbor.wace.me/speefox_vexplor/vexplor-frontend:${IMAGE_TAG:-latest} container_name: vexplor-frontend environment: NODE_ENV: production @@ -111,6 +111,7 @@ services: container_name: vexplor-watchtower environment: TZ: Asia/Seoul + DOCKER_API_VERSION: "1.44" # Harbor 레지스트리 인증 REPO_USER: ${HARBOR_USER} REPO_PASS: ${HARBOR_PASSWORD} diff --git a/deploy/onpremise/scripts/server-setup.sh b/deploy/onpremise/scripts/server-setup.sh new file mode 100644 index 00000000..fa20a85f --- /dev/null +++ b/deploy/onpremise/scripts/server-setup.sh @@ -0,0 +1,130 @@ +#!/bin/bash +# ============================================ +# Vexplor 온프레미스 서버 초기 설정 스크립트 +# 스피폭스 공장 서버용 +# ============================================ +# 사용법: sudo bash server-setup.sh + +set -e + +# 색상 정의 +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' + +echo "" +echo "==========================================" +echo " Vexplor 서버 초기 설정" +echo "==========================================" +echo "" + +# root 권한 확인 +if [ "$EUID" -ne 0 ]; then + echo -e "${RED}이 스크립트는 root 권한이 필요합니다.${NC}" + echo "다음 명령어로 실행하세요: sudo bash server-setup.sh" + exit 1 +fi + +# ============================================ +# 1. Docker 설치 +# ============================================ +echo -e "${YELLOW}[1/5] Docker 설치 중...${NC}" + +# 기존 Docker 제거 +apt-get remove -y docker docker-engine docker.io containerd runc 2>/dev/null || true + +# 필수 패키지 설치 +apt-get update +apt-get install -y ca-certificates curl gnupg + +# Docker GPG 키 추가 +install -m 0755 -d /etc/apt/keyrings +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg +chmod a+r /etc/apt/keyrings/docker.gpg + +# Docker 저장소 추가 +echo \ + "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ + $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ + tee /etc/apt/sources.list.d/docker.list > /dev/null + +# Docker 설치 +apt-get update +apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin + +echo -e "${GREEN}Docker 설치 완료!${NC}" +docker --version +docker compose version + +# ============================================ +# 2. 사용자를 docker 그룹에 추가 +# ============================================ +echo "" +echo -e "${YELLOW}[2/5] 사용자 권한 설정...${NC}" + +# wace 사용자를 docker 그룹에 추가 +usermod -aG docker wace + +echo -e "${GREEN}wace 사용자를 docker 그룹에 추가했습니다.${NC}" + +# ============================================ +# 3. Vexplor 디렉토리 생성 +# ============================================ +echo "" +echo -e "${YELLOW}[3/5] Vexplor 디렉토리 생성...${NC}" + +mkdir -p /opt/vexplor +chown wace:wace /opt/vexplor + +echo -e "${GREEN}/opt/vexplor 디렉토리 생성 완료!${NC}" + +# ============================================ +# 4. Docker 서비스 시작 및 자동 시작 설정 +# ============================================ +echo "" +echo -e "${YELLOW}[4/5] Docker 서비스 설정...${NC}" + +systemctl start docker +systemctl enable docker + +echo -e "${GREEN}Docker 서비스 활성화 완료!${NC}" + +# ============================================ +# 5. 방화벽 설정 (필요시) +# ============================================ +echo "" +echo -e "${YELLOW}[5/5] 방화벽 설정 확인...${NC}" + +if command -v ufw &> /dev/null; then + ufw status + echo "" + echo "필요시 다음 포트를 개방하세요:" + echo " sudo ufw allow 80/tcp # 웹 서비스" + echo " sudo ufw allow 3001/tcp # 백엔드 API" +else + echo "ufw가 설치되어 있지 않습니다. (방화벽 설정 스킵)" +fi + +# ============================================ +# 완료 +# ============================================ +echo "" +echo "==========================================" +echo -e "${GREEN} 서버 초기 설정 완료!${NC}" +echo "==========================================" +echo "" +echo "다음 단계:" +echo " 1. 로그아웃 후 다시 로그인 (docker 그룹 적용)" +echo " exit" +echo " ssh -p 22 wace@112.168.212.142" +echo "" +echo " 2. Docker 동작 확인" +echo " docker ps" +echo "" +echo " 3. Vexplor 배포 진행" +echo " cd /opt/vexplor" +echo " # docker-compose.yml 및 .env 파일 복사 후" +echo " docker compose up -d" +echo "" + -- 2.43.0 From 66034a1548e1455fdeb06079776eaac5c0ccea6c Mon Sep 17 00:00:00 2001 From: Johngreen Date: Sun, 28 Dec 2025 19:58:47 +0900 Subject: [PATCH 40/64] Update docker-compose.yml --- deploy/onpremise/docker-compose.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/deploy/onpremise/docker-compose.yml b/deploy/onpremise/docker-compose.yml index 336fd453..a779cad7 100644 --- a/deploy/onpremise/docker-compose.yml +++ b/deploy/onpremise/docker-compose.yml @@ -116,13 +116,12 @@ services: REPO_USER: ${HARBOR_USER} REPO_PASS: ${HARBOR_PASSWORD} # 업데이트 설정 - WATCHTOWER_POLL_INTERVAL: ${UPDATE_INTERVAL:-300} # 5분마다 확인 (초 단위) + # WATCHTOWER_POLL_INTERVAL: ${UPDATE_INTERVAL:-300} # 간격 기반 (비활성화) + WATCHTOWER_SCHEDULE: "0 0 * * * *" # 매시 정각에 실행 (cron 형식) WATCHTOWER_CLEANUP: "true" # 이전 이미지 자동 삭제 WATCHTOWER_INCLUDE_STOPPED: "true" # 중지된 컨테이너도 업데이트 WATCHTOWER_ROLLING_RESTART: "true" # 순차 재시작 (다운타임 최소화) WATCHTOWER_LABEL_ENABLE: "true" # 라벨이 있는 컨테이너만 업데이트 - # 업데이트 시간 제한 (선택: 새벽 2-4시만 업데이트) - # WATCHTOWER_SCHEDULE: "0 0 2 * * *" # cron 형식 (매일 새벽 2시) # 알림 설정 (선택) # WATCHTOWER_NOTIFICATIONS: slack # WATCHTOWER_NOTIFICATION_SLACK_HOOK_URL: ${SLACK_WEBHOOK_URL} -- 2.43.0 From 5252b7d9ee1e7a10cee35642a1f4c75a32ccd11c Mon Sep 17 00:00:00 2001 From: Johngreen Date: Mon, 29 Dec 2025 12:30:46 +0900 Subject: [PATCH 41/64] =?UTF-8?q?=EB=AC=B8=EC=84=9C=EC=97=85=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- digitalTwin/architecture-v4.md | 209 +++++ digitalTwin/fleet-management-plan.md | 725 ++++++++++++++++++ .../디지털트윈 아키텍쳐_v3.png | Bin digitalTwin/디지털트윈 아키텍쳐_v4.png | Bin 0 -> 2955549 bytes 4 files changed, 934 insertions(+) create mode 100644 digitalTwin/architecture-v4.md create mode 100644 digitalTwin/fleet-management-plan.md rename 디지털트윈 아키텍쳐_v3.png => digitalTwin/디지털트윈 아키텍쳐_v3.png (100%) create mode 100644 digitalTwin/디지털트윈 아키텍쳐_v4.png diff --git a/digitalTwin/architecture-v4.md b/digitalTwin/architecture-v4.md new file mode 100644 index 00000000..96e32ef1 --- /dev/null +++ b/digitalTwin/architecture-v4.md @@ -0,0 +1,209 @@ +# 디지털트윈 아키텍처 v4 + +## 변경사항 (v3 → v4) + +| 구분 | v3 | v4 | +| :--- | :--- | :--- | +| OTA 업데이트 | 개념만 존재 | Fleet Manager + MQTT 구현 | +| 디바이스 관리 | 없음 | Device Registry 추가 | +| 상태 모니터링 | 없음 | Heartbeat + Metrics 추가 | +| 원격 제어 | 없음 | MQTT 기반 명령 추가 | +| Agent | 없음 | Fleet Agent 추가 | + +--- + +## Mermaid 다이어그램 + +```mermaid +--- +config: + layout: dagre +--- +flowchart BT + subgraph Global_Platform["☁️ Vexplor 글로벌 플랫폼"] + direction TB + AAS_Dashboard["💻 AAS 통합 대시보드
(React/Next.js)
• 중앙 모니터링
• Fleet 관리 UI"] + Global_API["🌐 글로벌 API 게이트웨이
• 사용자 인증 (Auth)
• 고객사 라우팅
• Fleet API"] + + subgraph Fleet_System["🎛️ Fleet Management"] + Fleet_Manager["📊 Fleet Manager
• Device Registry
• 배포 오케스트레이션
• 상태 모니터링"] + MQTT_Broker["📡 MQTT Broker
(Mosquitto/EMQX)
• 실시간 통신
• 10,000+ 연결"] + Monitoring["📈 Monitoring
(Prometheus/Grafana)
• 메트릭 수집
• 알림"] + end + + Update_Server["🚀 배포/업데이트 매니저
• Docker 이미지 레지스트리 (Harbor)
• 버전 관리
• Canary 배포"] + end + + subgraph Local_Server["스피폭스 사내 서버 (Local Server)"] + Fleet_Agent_A["🤖 Fleet Agent
• MQTT 연결
• Heartbeat (30초)
• 원격 명령 실행
• Docker 관리"] + VEX_Engine["VEX Flow 엔진
데이터 수집/처리"] + Customer_DB[("사내 통합 DB
(모든 데이터 보유)")] + Watchtower_A["🐋 Watchtower
이미지 자동 업데이트"] + end + + subgraph Edge_Internals["🖥️ 엣지 디바이스 (Store & Forward)"] + Edge_Collector["수집/가공
(Python)"] + Edge_Buffer[("💾 로컬 버퍼
(TimescaleDB)
단절 시 임시 저장")] + Edge_Sender["📤 전송 매니저
(Priority Queue)"] + Edge_Retry_Queue[("🕒 재전송 큐
(SQLite/File)")] + end + + subgraph Factory_A["🏭 스피폭스 공장 현장 (Factory Floor)"] + Edge_Internals + PLC_A["PLC / 센서"] + end + + subgraph Customer_A["🏢 고객사 A: 스피폭스 (사내망)"] + Local_Server + Factory_A + end + + subgraph Local_Server_B["고객사 B 사내 서버"] + Fleet_Agent_B["🤖 Fleet Agent"] + Watchtower_B["🐋 Watchtower"] + end + + subgraph Customer_B["🏭 고객사 B (확장 예정)"] + Local_Server_B + end + + subgraph Local_Server_N["고객사 N 사내 서버"] + Fleet_Agent_N["🤖 Fleet Agent"] + end + + subgraph Customer_N["🏭 고객사 N (10,000개)"] + Local_Server_N + end + + %% 대시보드 연결 + AAS_Dashboard <--> Global_API + AAS_Dashboard <--> Fleet_Manager + + %% Fleet System 내부 연결 + Fleet_Manager <--> MQTT_Broker + Fleet_Manager <--> Monitoring + Fleet_Manager <--> Update_Server + + %% 공장 내부 연결 + PLC_A <--> Edge_Collector + Edge_Collector --> Edge_Buffer + Edge_Buffer --> Edge_Sender + Edge_Sender -- ① 정상 전송 --> VEX_Engine + Edge_Sender -- ② 전송 실패 시 --> Edge_Retry_Queue + Edge_Retry_Queue -. ③ 네트워크 복구 시 재전송 .-> Edge_Sender + VEX_Engine <--> Customer_DB + + %% Fleet Agent 연결 (MQTT - Outbound Only) + Fleet_Agent_A == 📡 MQTT (Heartbeat/명령) ==> MQTT_Broker + Fleet_Agent_B == 📡 MQTT ==> MQTT_Broker + Fleet_Agent_N == 📡 MQTT ==> MQTT_Broker + + %% Agent ↔ 로컬 컴포넌트 + Fleet_Agent_A <--> VEX_Engine + Fleet_Agent_A <--> Watchtower_A + Fleet_Agent_A <--> Customer_DB + + %% OTA 업데이트 (Pull 방식) + Update_Server -. 이미지 배포 .-> Watchtower_A + Update_Server -. 이미지 배포 .-> Watchtower_B + Watchtower_A -. 컨테이너 업데이트 .-> VEX_Engine + + %% 엣지 업데이트 + VEX_Engine -. 엣지 업데이트 .-> Edge_Collector + + %% 스타일 + AAS_Dashboard:::user + Global_API:::global + Update_Server:::global + Fleet_Manager:::fleet + MQTT_Broker:::fleet + Monitoring:::fleet + VEX_Engine:::localServer + Customer_DB:::localServer + Fleet_Agent_A:::agent + Fleet_Agent_B:::agent + Fleet_Agent_N:::agent + Watchtower_A:::agent + Watchtower_B:::agent + Edge_Collector:::edge + Edge_Buffer:::edgedb + Edge_Sender:::edge + Edge_Retry_Queue:::fail + PLC_A:::factory + + classDef factory fill:#e1f5fe,stroke:#01579b,stroke-width:2px + classDef edge fill:#fff9c4,stroke:#fbc02d,stroke-width:2px + classDef edgedb fill:#fff9c4,stroke:#fbc02d,stroke-width:2px,stroke-dasharray: 5 5 + classDef localServer fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px + classDef global fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px + classDef user fill:#ffebee,stroke:#c62828,stroke-width:2px + classDef fleet fill:#e3f2fd,stroke:#1565c0,stroke-width:2px + classDef agent fill:#fff3e0,stroke:#ef6c00,stroke-width:2px + classDef fail fill:#ffebee,stroke:#c62828,stroke-width:2px,stroke-dasharray: 5 5 + + linkStyle 8 stroke:#2e7d32,stroke-width:2px,fill:none + linkStyle 9 stroke:#c62828,stroke-width:2px,fill:none + linkStyle 10 stroke:#fbc02d,stroke-width:2px,stroke-dasharray: 5 5,fill:none +``` + +--- + +## 추가된 컴포넌트 설명 + +### 1. Fleet Management (신규) + +| 컴포넌트 | 역할 | +| :--- | :--- | +| **Fleet Manager** | 10,000개 디바이스 등록/관리, 배포 오케스트레이션 | +| **MQTT Broker** | 실시간 양방향 통신 (Outbound Only 유지) | +| **Monitoring** | Prometheus + Grafana, 메트릭 수집 & 알림 | + +### 2. Fleet Agent (각 공장 서버에 설치) + +| 기능 | 설명 | +| :--- | :--- | +| **MQTT 연결** | 글로벌 플랫폼과 상시 연결 (Outbound) | +| **Heartbeat** | 30초마다 상태 보고 | +| **원격 명령** | 업데이트, 재시작, 설정 변경 수신 | +| **Docker 관리** | 컨테이너 상태 모니터링 & 제어 | + +### 3. Watchtower (기존 유지) + +- Harbor에서 새 이미지 자동 Pull +- Fleet Agent의 명령으로 즉시 업데이트 가능 + +--- + +## 통신 흐름 비교 + +### v3 (기존) +``` +보안 커넥터 ←→ 글로벌 API (양방향 터널) +``` + +### v4 (신규) +``` +Fleet Agent ──→ MQTT Broker (Outbound Only) + ←── 명령 수신 (Subscribe) + ──→ 상태 보고 (Publish) + +Watchtower ──→ Harbor (Pull Only) +``` + +**장점:** +- 방화벽 Inbound 규칙 불필요 +- 10,000개 동시 연결 가능 +- 실시간 명령 전달 + +--- + +## 데이터 흐름 + +``` +[공장 → 글로벌] +PLC → 엣지 → VEX Flow → Fleet Agent → MQTT → Fleet Manager → Dashboard + +[글로벌 → 공장] +Dashboard → Fleet Manager → MQTT → Fleet Agent → Docker/VEX Flow +``` + diff --git a/digitalTwin/fleet-management-plan.md b/digitalTwin/fleet-management-plan.md new file mode 100644 index 00000000..e80aaab9 --- /dev/null +++ b/digitalTwin/fleet-management-plan.md @@ -0,0 +1,725 @@ +# Fleet Management 시스템 구축 계획서 + +## 개요 + +**목표:** 10,000개 이상의 온프레미스 공장 서버를 중앙에서 효율적으로 관리 + +**현재 상태:** 1개 업체 (스피폭스), Watchtower 기반 자동 업데이트 + +**목표 상태:** 10,000개 업체, 실시간 모니터링 & 원격 제어 가능 + +--- + +## 목차 + +1. [아키텍처 설계](#1-아키텍처-설계) +2. [Phase별 구현 계획](#2-phase별-구현-계획) +3. [핵심 컴포넌트 상세](#3-핵심-컴포넌트-상세) +4. [데이터베이스 스키마](#4-데이터베이스-스키마) +5. [API 설계](#5-api-설계) +6. [기술 스택](#6-기술-스택) +7. [일정 및 마일스톤](#7-일정-및-마일스톤) +8. [리스크 및 대응](#8-리스크-및-대응) + +--- + +## 1. 아키텍처 설계 + +### 1.1 전체 아키텍처 + +``` +┌─────────────────────────────────────────────────────────────────────────┐ +│ Vexplor 글로벌 플랫폼 │ +├─────────────────────────────────────────────────────────────────────────┤ +│ │ +│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ +│ │ Web UI │ │ Fleet API │ │ Config │ │ Monitoring │ │ +│ │ (Dashboard) │ │ Gateway │ │ Server │ │ & Alerts │ │ +│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │ +│ │ │ │ │ │ +│ └────────────────┼────────────────┼────────────────┘ │ +│ │ │ │ +│ ▼ ▼ │ +│ ┌─────────────┐ ┌─────────────┐ │ +│ │ Message │ │ Device │ │ +│ │ Broker │ │ Registry │ │ +│ │ (MQTT) │ │ (Redis) │ │ +│ └──────┬──────┘ └─────────────┘ │ +│ │ │ +└──────────────────────────┼────────────────────────────────────────────┘ + │ + │ MQTT (TLS) + │ + ┌──────────────────┼──────────────────┐ + │ │ │ + ▼ ▼ ▼ + ┌─────────┐ ┌─────────┐ ┌─────────┐ + │ Agent │ │ Agent │ │ Agent │ + │ 스피폭스 │ │ 엔키드 │ │ 고객 N │ + └─────────┘ └─────────┘ └─────────┘ + │ │ │ + ┌─────────┐ ┌─────────┐ ┌─────────┐ + │ Vexplor │ │ Vexplor │ │ Vexplor │ + │ Backend │ │ Backend │ │ Backend │ + │Frontend │ │Frontend │ │Frontend │ + │ DB │ │ DB │ │ DB │ + └─────────┘ └─────────┘ └─────────┘ +``` + +### 1.2 통신 흐름 + +``` +[공장 서버 → 글로벌] +1. Agent 시작 시 MQTT 연결 (Outbound Only) +2. 주기적 Heartbeat 전송 (30초) +3. 상태/메트릭 보고 (5분) +4. 로그 전송 (선택적) + +[글로벌 → 공장 서버] +1. 업데이트 명령 +2. 설정 변경 +3. 재시작 명령 +4. 데이터 요청 +``` + +--- + +## 2. Phase별 구현 계획 + +### Phase 1: 기반 구축 (1~10개 업체) +**기간:** 2주 + +| 구현 항목 | 설명 | 우선순위 | +| :--- | :--- | :--- | +| Device Registry API | 디바이스 등록/조회 | P0 | +| Heartbeat API | 상태 보고 수신 | P0 | +| 기본 대시보드 | 디바이스 목록/상태 표시 | P1 | +| Agent 기본 버전 | Heartbeat 전송 기능 | P0 | + +**산출물:** +- `POST /api/fleet/devices/register` +- `POST /api/fleet/devices/heartbeat` +- `GET /api/fleet/devices` +- Agent Docker 이미지 + +--- + +### Phase 2: 실시간 통신 (10~100개 업체) +**기간:** 4주 + +| 구현 항목 | 설명 | 우선순위 | +| :--- | :--- | :--- | +| MQTT 브로커 설치 | Eclipse Mosquitto | P0 | +| Agent MQTT 연결 | 상시 연결 유지 | P0 | +| 원격 명령 기능 | 업데이트/재시작 명령 | P1 | +| 실시간 상태 업데이트 | WebSocket → 대시보드 | P1 | + +**산출물:** +- MQTT 브로커 (Docker) +- Agent v2 (MQTT 지원) +- 원격 명령 UI + +--- + +### Phase 3: 배포 관리 (100~500개 업체) +**기간:** 6주 + +| 구현 항목 | 설명 | 우선순위 | +| :--- | :--- | :--- | +| 버전 관리 시스템 | 릴리즈 버전 관리 | P0 | +| 단계적 롤아웃 | Canary 배포 | P0 | +| 롤백 기능 | 이전 버전 복구 | P0 | +| 그룹 관리 | 지역/업종별 그룹핑 | P1 | +| 배포 스케줄링 | 시간대별 배포 | P2 | + +**산출물:** +- Release Management UI +- Deployment Pipeline +- Rollback 자동화 + +--- + +### Phase 4: 모니터링 강화 (500~2,000개 업체) +**기간:** 6주 + +| 구현 항목 | 설명 | 우선순위 | +| :--- | :--- | :--- | +| 메트릭 수집 | CPU/Memory/Disk | P0 | +| 알림 시스템 | Slack/Email/SMS | P0 | +| 로그 중앙화 | 원격 로그 수집 | P1 | +| 이상 탐지 | 자동 장애 감지 | P1 | +| SLA 대시보드 | 가용성 리포트 | P2 | + +**산출물:** +- Prometheus + Grafana +- Alert Manager +- Log Aggregator (Loki) + +--- + +### Phase 5: 대규모 확장 (2,000~10,000개 업체) +**기간:** 8주 + +| 구현 항목 | 설명 | 우선순위 | +| :--- | :--- | :--- | +| MQTT 클러스터링 | 고가용성 브로커 | P0 | +| 샤딩 | 지역별 분산 | P0 | +| 자동 프로비저닝 | 신규 업체 자동 설정 | P1 | +| API Rate Limiting | 과부하 방지 | P1 | +| 멀티 리전 | 글로벌 분산 | P2 | + +**산출물:** +- MQTT Cluster (EMQX) +- Regional Gateway +- Auto-provisioning System + +--- + +## 3. 핵심 컴포넌트 상세 + +### 3.1 Fleet Agent (공장 서버에 설치) + +``` +┌─────────────────────────────────────────┐ +│ Fleet Agent │ +├─────────────────────────────────────────┤ +│ ┌─────────────┐ ┌─────────────┐ │ +│ │ MQTT │ │ Command │ │ +│ │ Client │ │ Executor │ │ +│ └──────┬──────┘ └──────┬──────┘ │ +│ │ │ │ +│ ▼ ▼ │ +│ ┌─────────────────────────────┐ │ +│ │ Core Controller │ │ +│ └─────────────────────────────┘ │ +│ │ │ │ +│ ▼ ▼ │ +│ ┌─────────────┐ ┌─────────────┐ │ +│ │ Metrics │ │ Docker │ │ +│ │ Collector │ │ Manager │ │ +│ └─────────────┘ └─────────────┘ │ +└─────────────────────────────────────────┘ +``` + +**주요 기능:** +- MQTT 연결 유지 (자동 재연결) +- Heartbeat 전송 (30초) +- 시스템 메트릭 수집 +- Docker 컨테이너 관리 +- 원격 명령 실행 + +### 3.2 Fleet Manager (글로벌 서버) + +**주요 기능:** +- 디바이스 등록/인증 +- 상태 모니터링 +- 배포 오케스트레이션 +- 설정 관리 +- 알림 발송 + +### 3.3 Message Broker (MQTT) + +**선택지:** +| 옵션 | 장점 | 단점 | 추천 규모 | +| :--- | :--- | :--- | :--- | +| Mosquitto | 가볍고 간단 | 클러스터링 어려움 | ~1,000 | +| EMQX | 클러스터링, 고성능 | 복잡함 | 1,000~100,000 | +| HiveMQ | 엔터프라이즈급 | 비용 | 100,000+ | + +**권장:** Phase 1~3은 Mosquitto, Phase 4~5는 EMQX + +--- + +## 4. 데이터베이스 스키마 + +### 4.1 디바이스 테이블 + +```sql +-- 디바이스 (공장 서버) 정보 +CREATE TABLE fleet_devices ( + id SERIAL PRIMARY KEY, + device_id VARCHAR(50) UNIQUE NOT NULL, -- 고유 식별자 + company_code VARCHAR(20) NOT NULL, -- 회사 코드 + device_name VARCHAR(100), -- 표시 이름 + + -- 연결 정보 + ip_address VARCHAR(45), + last_seen_at TIMESTAMPTZ, + is_online BOOLEAN DEFAULT false, + + -- 버전 정보 + agent_version VARCHAR(20), + app_version VARCHAR(20), + + -- 시스템 정보 + os_info JSONB, + hardware_info JSONB, + + -- 그룹/태그 + device_group VARCHAR(50), + tags JSONB DEFAULT '[]', + + -- 메타 + created_at TIMESTAMPTZ DEFAULT NOW(), + updated_at TIMESTAMPTZ DEFAULT NOW(), + + FOREIGN KEY (company_code) REFERENCES company_info(company_code) +); + +CREATE INDEX idx_fleet_devices_company ON fleet_devices(company_code); +CREATE INDEX idx_fleet_devices_online ON fleet_devices(is_online); +CREATE INDEX idx_fleet_devices_group ON fleet_devices(device_group); +``` + +### 4.2 Heartbeat 로그 테이블 + +```sql +-- Heartbeat 기록 (TimescaleDB 권장) +CREATE TABLE fleet_heartbeats ( + id BIGSERIAL, + device_id VARCHAR(50) NOT NULL, + received_at TIMESTAMPTZ DEFAULT NOW(), + + -- 상태 + status VARCHAR(20), -- OK, WARNING, ERROR + uptime_seconds BIGINT, + + -- 메트릭 + cpu_percent DECIMAL(5,2), + memory_percent DECIMAL(5,2), + disk_percent DECIMAL(5,2), + + -- 컨테이너 상태 + containers JSONB, + + PRIMARY KEY (device_id, received_at) +); + +-- TimescaleDB 하이퍼테이블 변환 (선택) +-- SELECT create_hypertable('fleet_heartbeats', 'received_at'); +``` + +### 4.3 배포 테이블 + +```sql +-- 릴리즈 버전 관리 +CREATE TABLE fleet_releases ( + id SERIAL PRIMARY KEY, + version VARCHAR(20) NOT NULL, + release_type VARCHAR(20), -- stable, beta, hotfix + + -- 이미지 정보 + backend_image VARCHAR(200), + frontend_image VARCHAR(200), + agent_image VARCHAR(200), + + -- 변경사항 + changelog TEXT, + + -- 상태 + status VARCHAR(20) DEFAULT 'draft', -- draft, testing, released, deprecated + released_at TIMESTAMPTZ, + + created_at TIMESTAMPTZ DEFAULT NOW() +); + +-- 배포 작업 +CREATE TABLE fleet_deployments ( + id SERIAL PRIMARY KEY, + release_id INTEGER REFERENCES fleet_releases(id), + + -- 배포 대상 + target_type VARCHAR(20), -- all, group, specific + target_value VARCHAR(100), -- 그룹명 또는 device_id + + -- 롤아웃 설정 + rollout_strategy VARCHAR(20), -- immediate, canary, scheduled + rollout_percentage INTEGER, + scheduled_at TIMESTAMPTZ, + + -- 상태 + status VARCHAR(20) DEFAULT 'pending', + started_at TIMESTAMPTZ, + completed_at TIMESTAMPTZ, + + -- 결과 + total_devices INTEGER, + success_count INTEGER DEFAULT 0, + failed_count INTEGER DEFAULT 0, + + created_at TIMESTAMPTZ DEFAULT NOW() +); + +-- 개별 디바이스 배포 상태 +CREATE TABLE fleet_deployment_status ( + id SERIAL PRIMARY KEY, + deployment_id INTEGER REFERENCES fleet_deployments(id), + device_id VARCHAR(50), + + status VARCHAR(20) DEFAULT 'pending', -- pending, downloading, installing, completed, failed + started_at TIMESTAMPTZ, + completed_at TIMESTAMPTZ, + error_message TEXT, + + UNIQUE(deployment_id, device_id) +); +``` + +### 4.4 알림 규칙 테이블 + +```sql +-- 알림 규칙 +CREATE TABLE fleet_alert_rules ( + id SERIAL PRIMARY KEY, + name VARCHAR(100) NOT NULL, + + -- 조건 + condition_type VARCHAR(50), -- offline, version_mismatch, high_cpu, etc. + condition_value JSONB, + threshold_minutes INTEGER, -- 조건 지속 시간 + + -- 알림 채널 + notify_channels JSONB, -- ["slack", "email"] + notify_targets JSONB, -- 수신자 목록 + + -- 상태 + is_enabled BOOLEAN DEFAULT true, + + created_at TIMESTAMPTZ DEFAULT NOW() +); + +-- 알림 기록 +CREATE TABLE fleet_alerts ( + id SERIAL PRIMARY KEY, + rule_id INTEGER REFERENCES fleet_alert_rules(id), + device_id VARCHAR(50), + + alert_type VARCHAR(50), + message TEXT, + severity VARCHAR(20), -- info, warning, critical + + -- 해결 상태 + status VARCHAR(20) DEFAULT 'open', -- open, acknowledged, resolved + resolved_at TIMESTAMPTZ, + + created_at TIMESTAMPTZ DEFAULT NOW() +); +``` + +--- + +## 5. API 설계 + +### 5.1 Device Management API + +```yaml +# 디바이스 등록 +POST /api/fleet/devices/register +Request: + device_id: string (required) + company_code: string (required) + device_name: string + agent_version: string + os_info: object +Response: + success: boolean + data: + device_id: string + mqtt_credentials: + broker_url: string + username: string + password: string + +# 디바이스 목록 조회 +GET /api/fleet/devices +Query: + company_code: string + is_online: boolean + device_group: string + page: number + limit: number +Response: + success: boolean + data: Device[] + pagination: { total, page, limit } + +# 디바이스 상세 조회 +GET /api/fleet/devices/:deviceId +Response: + success: boolean + data: + device: Device + recent_heartbeats: Heartbeat[] + recent_alerts: Alert[] +``` + +### 5.2 Heartbeat API + +```yaml +# Heartbeat 전송 +POST /api/fleet/devices/:deviceId/heartbeat +Request: + status: string + uptime_seconds: number + metrics: + cpu_percent: number + memory_percent: number + disk_percent: number + containers: + - name: string + status: string + version: string +Response: + success: boolean + data: + commands: Command[] # 대기 중인 명령 반환 +``` + +### 5.3 Deployment API + +```yaml +# 배포 생성 +POST /api/fleet/deployments +Request: + release_id: number + target_type: "all" | "group" | "specific" + target_value: string + rollout_strategy: "immediate" | "canary" | "scheduled" + rollout_percentage: number + scheduled_at: datetime +Response: + success: boolean + data: + deployment_id: number + estimated_devices: number + +# 배포 상태 조회 +GET /api/fleet/deployments/:deploymentId +Response: + success: boolean + data: + deployment: Deployment + status_summary: + pending: number + in_progress: number + completed: number + failed: number + device_statuses: DeploymentStatus[] + +# 배포 롤백 +POST /api/fleet/deployments/:deploymentId/rollback +Response: + success: boolean + data: + rollback_deployment_id: number +``` + +### 5.4 Command API + +```yaml +# 원격 명령 전송 +POST /api/fleet/devices/:deviceId/commands +Request: + command_type: "update" | "restart" | "config" | "logs" + payload: object +Response: + success: boolean + data: + command_id: string + status: "queued" + +# 명령 결과 조회 +GET /api/fleet/commands/:commandId +Response: + success: boolean + data: + command_id: string + status: "queued" | "sent" | "executing" | "completed" | "failed" + result: object +``` + +--- + +## 6. 기술 스택 + +### 6.1 글로벌 플랫폼 + +| 컴포넌트 | 기술 | 비고 | +| :--- | :--- | :--- | +| Fleet API | Node.js (기존 backend-node 확장) | 기존 코드 재사용 | +| Message Broker | Mosquitto → EMQX | 단계적 전환 | +| Device Registry | Redis | 빠른 조회 | +| Database | PostgreSQL | 기존 DB 확장 | +| Time-series DB | TimescaleDB | Heartbeat 저장 | +| Monitoring | Prometheus + Grafana | 메트릭 시각화 | +| Log | Loki | 로그 중앙화 | +| Alert | AlertManager | 알림 관리 | + +### 6.2 Fleet Agent + +| 컴포넌트 | 기술 | 비고 | +| :--- | :--- | :--- | +| Runtime | Go 또는 Node.js | 가볍고 안정적 | +| MQTT Client | Paho MQTT | 표준 라이브러리 | +| Docker SDK | Docker API | 컨테이너 관리 | +| Metrics | gopsutil | 시스템 메트릭 | + +### 6.3 대시보드 + +| 컴포넌트 | 기술 | 비고 | +| :--- | :--- | :--- | +| UI Framework | Next.js (기존) | 기존 코드 확장 | +| Real-time | Socket.io | 실시간 상태 | +| Charts | Recharts | 메트릭 시각화 | +| Map | Leaflet | 지역별 표시 | + +--- + +## 7. 일정 및 마일스톤 + +### 7.1 전체 일정 + +``` +2025 Q1 2025 Q2 2025 Q3 +│ │ │ +├── Phase 1 (2주) ─────────┤ │ +│ Device Registry │ │ +│ Heartbeat API │ │ +│ 기본 대시보드 │ │ +│ │ │ +│ ├── Phase 2 (4주) ──────────┤ │ +│ │ MQTT 브로커 │ │ +│ │ Agent v2 │ │ +│ │ 원격 명령 │ │ +│ │ │ │ +│ │ ├── Phase 3 (6주) ──────┤ +│ │ │ 버전 관리 │ +│ │ │ Canary 배포 │ +│ │ │ 롤백 │ +│ │ │ │ +``` + +### 7.2 상세 마일스톤 + +| 마일스톤 | 목표 | 완료 기준 | 예상 일정 | +| :--- | :--- | :--- | :--- | +| M1 | Device Registry | 디바이스 등록/조회 API 완료 | 1주차 | +| M2 | Heartbeat | 상태 보고 & 저장 완료 | 2주차 | +| M3 | Basic Dashboard | 디바이스 목록 UI 완료 | 2주차 | +| M4 | MQTT Setup | 브로커 설치 & 연결 테스트 | 4주차 | +| M5 | Agent v2 | MQTT 기반 Agent 완료 | 6주차 | +| M6 | Remote Command | 업데이트/재시작 명령 완료 | 8주차 | +| M7 | Release Mgmt | 버전 관리 UI 완료 | 10주차 | +| M8 | Canary Deploy | 단계적 배포 완료 | 14주차 | + +--- + +## 8. 리스크 및 대응 + +### 8.1 기술적 리스크 + +| 리스크 | 영향 | 확률 | 대응 | +| :--- | :--- | :--- | :--- | +| MQTT 연결 불안정 | 높음 | 중간 | 자동 재연결, 오프라인 큐 | +| 대량 동시 접속 | 높음 | 높음 | 클러스터링, 로드밸런싱 | +| 보안 취약점 | 높음 | 낮음 | TLS 필수, 인증 강화 | +| 네트워크 단절 | 중간 | 높음 | 로컬 캐시, 재전송 로직 | + +### 8.2 운영 리스크 + +| 리스크 | 영향 | 확률 | 대응 | +| :--- | :--- | :--- | :--- | +| 잘못된 배포 | 높음 | 중간 | Canary 배포, 자동 롤백 | +| 모니터링 누락 | 중간 | 중간 | 다중 알림 채널 | +| 버전 파편화 | 중간 | 높음 | 강제 업데이트 정책 | + +--- + +## 9. 다음 단계 + +### 즉시 시작할 작업 (Phase 1) + +1. **Device Registry 테이블 생성** + - `fleet_devices` 테이블 마이그레이션 + +2. **Fleet API 엔드포인트 개발** + - `POST /api/fleet/devices/register` + - `POST /api/fleet/devices/:deviceId/heartbeat` + - `GET /api/fleet/devices` + +3. **Agent 기본 버전 개발** + - Docker 이미지로 배포 + - 주기적 Heartbeat 전송 + +4. **대시보드 기본 화면** + - 디바이스 목록 + - 온라인/오프라인 상태 표시 + +--- + +## 부록 + +### A. MQTT 토픽 설계 + +``` +vexplor/ +├── devices/ +│ ├── {device_id}/ +│ │ ├── status # 상태 보고 (Agent → Server) +│ │ ├── metrics # 메트릭 보고 (Agent → Server) +│ │ ├── commands # 명령 수신 (Server → Agent) +│ │ └── responses # 명령 응답 (Agent → Server) +│ │ +├── broadcasts/ +│ ├── all # 전체 공지 +│ └── groups/{group} # 그룹별 공지 +│ +└── system/ + ├── announcements # 시스템 공지 + └── maintenance # 점검 알림 +``` + +### B. Agent 설정 파일 + +```yaml +# /opt/vexplor/agent/config.yaml +device: + id: "SPIFOX-001" + company_code: "SPIFOX" + name: "스피폭스 메인 서버" + +mqtt: + broker: "mqtts://mqtt.vexplor.com:8883" + username: "${MQTT_USERNAME}" + password: "${MQTT_PASSWORD}" + keepalive: 60 + reconnect_interval: 5 + +heartbeat: + interval: 30 # seconds + +metrics: + enabled: true + interval: 300 # 5 minutes + collect: + - cpu + - memory + - disk + - network + +docker: + socket: "/var/run/docker.sock" + managed_containers: + - vexplor-backend + - vexplor-frontend + - vexplor-db +``` + +### C. 참고 자료 + +- [EMQX Documentation](https://docs.emqx.com/) +- [Eclipse Mosquitto](https://mosquitto.org/) +- [AWS IoT Device Management](https://aws.amazon.com/iot-device-management/) +- [Google Cloud IoT Core](https://cloud.google.com/iot-core) +- [HashiCorp Nomad](https://www.nomadproject.io/) + diff --git a/디지털트윈 아키텍쳐_v3.png b/digitalTwin/디지털트윈 아키텍쳐_v3.png similarity index 100% rename from 디지털트윈 아키텍쳐_v3.png rename to digitalTwin/디지털트윈 아키텍쳐_v3.png diff --git a/digitalTwin/디지털트윈 아키텍쳐_v4.png b/digitalTwin/디지털트윈 아키텍쳐_v4.png new file mode 100644 index 0000000000000000000000000000000000000000..62d72b474f0e4a8e16bf9d282889b1908825573a GIT binary patch literal 2955549 zcmeEvXIK;1y0xNMuuB`MDgx3~ItbVh>C&Ym2uKMnK&U}1gMfh2AvCGdd*}gCK)Tcb z2}D}xiPQig@NMpW&iCuw=g!qR=giDAKU5R~N%mXTyViQQfe+ObPSG&Y95`^`l;VSX zngXwxBV|PMCE{=bnAfPz1!Lz2NyAZ zc_x;=2fh;}iQdXKjvqtCF5gI@XT5Uob>CH`YJp+xB9(-bT*7X@j$_}Hd@~ii?tJcb z8~%!LUu<0LCADMC46zeuj$Fwj2b^PRwxS8|y~D#QUs+a0LJ=jslc0oGC8Ukaa?-{| z9SKVC?pjSCuHMAWkbPD*kb7kx`sf9z4j(&v@z%2g2mdM`q(1p8y_)|zoLhVkpZ}%K zX#Z8E&|kg%*NQyws=m@hUi^#Y)3LKpsg=(D)vCm?GAhnvf0dH=|0B-8|NP;6;!oBBTm%>^44>E**lYYN%Gx^sQlE2&3pQcTHrT!lTxBP}g*zPsdN)*ER z_nvn%={K9j9o`Jν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%0DUU? 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 H31F0b6O0{b4+Ae%WCg~N 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¨jQN(h@GJ3nna@EKFih;L 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

dF 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

%DYjuqQm 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

nNWt?K`q6 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
hRyZN^Hz z>$Jh=#_yl-{t-jAW^mPk=$&W(bx#7+V1?RZYF_35X`E7)%k0Og#@iLAhFo~9vNNY( zz~pA`f`UPxE;c%)aNV&LSly6+Jj?l#f{GgJ5rf6=9^d>;bH-Jebv0-E+M!!dz?`t;fA4SbvkXO!GnOujcNYxCXjy3@`wb?^pGHp5n_1aKK%=xGoNY>~nA{GIVY z)%taN$s@<4zNyZ?bUuJ^njJo+0`)LN4&v-P0&Mx#vVcDX>3I;N2g%nvoNbS35|FGq ztyo}YBds-iDbqi3#~%RyA6~R!STripih19%c;kXBgsVsbEx$!#+ulSM$F||?SlL6-QI@2ldh7e{NlJRC*_h9AT#FmQKj4O{-S$m_+Clum2c_WUu@NHM+(pXq=KTH zAv-F-kv=-gtAG0$ok#E-&#wfQ?OdFRWJ8*WFtYkmqepyH~%_kbJwIkM|%L zY?Km;swDMqC&Ru=Kns!TJ{ZH^a}@%|Ra)u>^g8Az)BXSGA28ZW;1ibf-BM#+x{Y51 zB^O))I@;>Upc;nQnqkrxAC^f0)B{vcy9hOWqED%OKao(=yCuqZdwOeTKBjo@znTB< z)em6J+X1CW5y;H9z65&d&^8AITgkMTse|t7qZVFiA?4;k*(b$1W2MW zk%T#W3}Joo&Gv7J`VYhW$BS_iOMT+>+S*z?AY5p3r}@C*P-9+FVg`}0xEPb~-0E7U zXVYt#FjYDNz`T@}GI)M0p``?%04(L6F(pU*dJLdsp|>a{BiOWTBv@O?Ae4`CGDJt5Q#Ybru*Q15DLq412ZZ z+I&VeOLKU3k@RIHB0zi3MVU7@wy0DhTSQcLwGVp`fj(JZVY_-$%o_Si@sE%SebI?4d3hL`AD-nk#}}qD+q(f)R!Zq-W1BmO25CcjYD|r?jGIzgI8Zj zpV2-Pd7cF^zUB7LV|-#z^%r$4w!1@qF4g{pWeXde<-wWeTg9FMWwm*D^b7FfWkZuI zFz=QmC?&&}VsbRuh_SwI^}B1T@%y%SPTKP)f&8teSl=`q}!&^>+fh`zW= zy?G5JIUhUoCYKzpkh=&ihLrg1ta7oWynfvRpO*c6cz>MYH(y9?V_BcKCB5DV6z#0f zY{tv#m%m-DkZ+$e54`7%%S9HcT9AdzEG@-??+*t8K|?GqJ~^4)n`AZQg|5kGl+>jGL?i&~mk%RcF=Z1W`Qi=osdTb$W1@e9ITnZI4JKZm-SM;RuBh z@2a2A!Z((UH-cgr#~R5FdwLvLsu{e~`_SNT`S)+B6o9Xn3>KMnwL5$MgxbFxQv6x? zid4sfdWYt7g6B4G!M#=kJugVNj4oZoALZF)?lUmQ7AE6Dlfn;F`FG6Et|sarRz?=z zv}gtV*p)rst*zLe*B##b=8C7Svv223G1kQ9=>X3Wd*|kKH-Sa-5luXQ(SRE_elIDd zRV^PBL=55I&!pRa3pPyrEbMWETzIC(^0fv z^qY%ZuZpuys_rj)@8BwU=fvk-0QXiTtLL{Gnkclq0O2ZVFA(oL`C*s(x@gMttyepp zn{h1>9p16AOKESaDO75nK@fDe_rRjJlG1ma(-*>T(>OG$fHns~i!Ug^8GP$3I0Hza6fux@VZjf2R-%@u=4PZSal}?8hNU^@cAP zj3#oQ`s)vTasB@dir?QHwB^QH_Y2`~zQ5)qV0zd|xHmgF1ugqs+^lC#J-QDzQP@nD zi<{I`#PsUx`VX{b&b+B3hjY`+^Y}OO4Eyca0oq#H@t@fI%QdT?Pkrwo!HsXUN)~5- z>au;y(DD&_h=2PDyz*F{2{nT}7MCf_c9A_AqT-Ny+1j_sIH$xWr~qPa+w>6yGOj3P z0{buD_|F5Xkz(oU5A8uG`aV_*kP5TSU{UING(Z+wR^1=ApRQ5c+(k z3%j-5BUaEN{+7Zq%i|e-x3{Me@6GvMr}s(6KrV1K{%B$E&jbC<W`)0q-t;6yCe8plY2uJ@`N(*qV!L%t=2W zxVp%<(;!2WX5`FiZMI#-!)z z4(c%~A#QDS@ef8O(?q$!_X|EOc%mE})sPvmXsnQ{zQ)c2gN$LNjaFX{JN`ap@gIu! z_f!8u2WnQfHH8wNH2ue-7-!K)H3vmCfw32JubP|3mPRFbKRzXPg$+T?t|(lb?8=|< z!>pma{R901a!PDJ*bVst=7hr~^ZPdh0*C{GF)^{Joq+G)EPs~MEGiIjC7~9&<89JV zylu*Snr*m$)A{^r8$b&*ld&pIu&rHzGo|6}dD>(fD)fdmL4A^e{B zRtt)w@B91j`DEPZ-gD3So_Ws|`IZQXzh=n@y8R&fes8QQO*A%kHA8{Oq_GstqEcO0 zRk$F_NYoHs7h`W#w*kxY^3}pJURG%EJ6|4m4g@{bd8D?Qe*_vgfl$|@rsuZ=Z7`cY zh|Pc7kHZ#L_A8fjX82xhjlq_;$C52f28#JLJhi?>dk?i8t&~pg>WQnZyG||WfQHhs21HvSQt!T?wmdoY0e#~9&o`is$p$72>xIi9&G^*E1J z&4F6pz`NF{W#pV%cFt5*R#q=_yISoDylHaIq9CaXTduAC{f7>KVw3%+?%(n?&FACM zuYb<|K&@?oPX;B6lAn`BJy0KlBTc${kmdaL7*AwliDfwG$hU%qG7r_J7(q)Ze$|+@ zyuy?E)8$2Dc@KYpIdYsFpB+P)%*1BtPs_T>^ltD|>;3kouV_Y$k1ZtXtE3dmL~I*`d}`#YUFf=%{omh+LjkC9_0UbJN6BII3O%{8 za{xeR=JNEbrlkzyy*HIcUDA$;a5t%*+CW;U)ITE$5PR64_PSN(pAN`NE|b0C~KY zu}(jcHsZx6Lj!^gd(ANkA}Syph6oUE0NAsvngLngom`VP^ki`eQKQ1274*cZ(rY6v zHJ_-3QPTUahOuUlE}O;3!;{rkwUQvJSqLbA|Gsv|fxX)RQlG!{+n-pa*6-WB@ts@k z7JyCG)(%;h8Sj=BuP$rbA#X1ppqxW?HCFEe?9Jgc&+gE-0PIv>0zB1H8NP7aF>K_b ze8BEN?yPUyf*%)PrMZ1fF6#9z>!aItjQC1}EqNj*>X#d3F4?kA$KiP?&WWVEw9+G) zq7x_43ARa=$v%x{rlwz?yNf=oQ+b4bM6V-bk+)D65$SXj130~PYQo%hZf*t6)){6A zx`+a8?TtD~JcC78=E2A%VaS8lEbsn@rB`5!H2Jk&ZA6hC^;Bq2IXQ+_33*a+`6DEdf7x{ zD&bEc08zWyPh06BkLlG2H$8g!Fi7zV%apIrs#XdlJd30&VD}BR_ysC&{MX?VumsOX z5tUo<_lCdMHy>bPOz=cYa)YqqCH7i@lDx%2^10c}3>CM%SMe|A0F&^o)2y+D&#;Q} zFDm{ncZj+sxtmw=O{oO!&`og-h+aFyJs7xtMwI;^IXSnovbH&D?c!RFqCF;vpac!X zDj2oPPy8yIh%}+LJ+*)@e4XZRHPXD-r7(k9U{c_d?7VKV9{>L#`WPxv!wWu9_JDNh z%9`#c_Lq2)T9|A`pMKco3=-~QSHQrIPIuBGO?k~tXS}NpLipd**KC@n)#?uWOz1ts zZ=Jg65(N}paq&y~3-Z+C#q3)q{AW}6pQrZr5R{e8YK_3B;EEPbh!i3w)jhCD|7hey z*mI|IyvNtwe#vsALiEvur2iz9Y6gN6?V0p`1^J3>Xi8{e>lLEoj4sCM%|-c%x|*>U zl`Xl+xsZ(v^x3Amh`{LmmmJ4?Xt@~<%76vW7zWI5aYvSnp(r5rU0|1vuNx1}fcV#L zJ}!5-R*gR{%rlR(y7i4Z)Zn;wjv8Z7nbE6*Ad*R!%@h6q@2H*@Rj-+Rao`)g{sZjt z!B+xODFW=0>nra_CD*P8yaUfzf+yFUS_JGxN4sT|+rV#=ZWTjZ2~lYGh@S4I$bHPX zPPM4W%nTi!?4eHw^$QCqik;@8@I39V)4q<8 zAWZCaA1nj;=NExZjJ%%>BHEKmzZxHWSI_!j?o2bDV;tT|esE=tq{4Js#V-S{Z0G}l zzk06)*qdcrIuSRU0=<@k(bi4zMqys#;{;U=$-~?*x-TSxHQiXvLPgX|`qP`OzH4op zIWRA@zAeD4Tbel=HkRsjVpogx(TNRMv-#)1uR>TNFBVJY{*Qfw37tZN?*?ENLXsx> zWONdL+V{vR;P6_S52z)a=jU#!CScbCmS#~pe!^(ru> zUM^c(Vg844#XsNQPV!S*rG*;D#buQ-wC7GV0q}fBqGa=)NCVj6&y&#lU{s zM7rNMGuS|qjr40iX9dKw9F9_NQ*sjxe2zv=0->KlK9tz=b(Pnd|LTDUB(5C!gH*4U z&Q(AUByUz(@!BvY(LEK)Qoupa(X9Sy%>INMXvqV;`{@*v?4`73j9QZ1t zGG9^;<9H=d!o;N807zu{2fTxd9F7ZRpp#pi(AewrJACP(v+R$2a(i-?uKy1Xtyi9F z%>ItZ`-U}$_p(TwD05>YJv($()<}%q_sm48KRI(;>77()yn~3CpMGkd=O#V2nMW?3 zxmx8=R#DLhN}$VM%6_te%5#J)8pH8S20j8%3Co*V7l?a~EfgPi*N`Zy39@Cq4i>%N za@a=m=cZ#MQq3o7;(y2Shx6;(ZiY&JyQr$LmkBmr_n2T~w+kez_>6X+RyC@{I$Gvx zdfvp#O&?R@aXct4b6m3YD`l9UvhW}ECA(kp_9{h7Pt=Nviuyc6yS0#gfGpwc1HM zo4oibKz{}_hjm~H3rP>Je>?ZN>k1P~@VeCIZ9T}}6eDF`ox|*!#@nymoMx)lwfr~u zM*=OLqxLMIiNgSZ>`y!}L(F=j`Wbz{GAFg4?o#vowVj`KXd09b56=4J`#g06Y93_& zK1LazE{oeAVotjxWOd-n-~j`1JyYQj(iVdDYAA_eI8HBxyVe3?AbyX{eUwznig;#y`&Ro5)helf!LTh7=d9glV$1I1J-6#rkN^8hj|vbJfi z|CE1!<7>Cv!)HK*_=bvV!Jw*}(_0reqEtEVT$AU1FhL+zYi7Omg&%2bLED4=%L za8Ujec-y5b7>#Z6v*aIrLtqS? zVsp_lrCQ%tW#HRlvtb#U1@%BlL;IL*)bz-R4Za2wg`XWKE4i0;rFq;R;LfQEvv+W) zZfEblY=*4^&6yfOFcr;8CyZ3w3jXOYxB>q^O7Z~(O4O}zIzv|^ni8J_ucF+~SxaJu z#CUgHp`gftNYD0+z>y5dXoZT`C*FGPc9NWB1nWdmeNBN8beu;+Fgo~U-(`NW*94h| zVLh9Sn{Tr0R%~W9y1UIKDZ@ng1EIe-3gC1sJf>=B1S)j3%bLHEbwUc1U>(imUeUO7 z6ff}iVjmkXoilHwOHP4!PjuXraz_3d)j_Df=Br&Qntt$`!+)d}AcV%OFNZpmpe1f9 z(@uwCEwe1weX23=fONn*aiW;R`-fCIi}ruHZ=tamj86T(dPP8ie|Ru^n1%Z zM(8bpe`#pQ%t5#|zmSuHO^PILK4k?w-}PD z)@mZYTEw;`gKt>YKa>@J45R=R+`GOFRx)X7jQeYJzr$gGm10CLnQC;B33@h|HD?C6 zN~J%XFlQMobDdQnf}WR@WEsWY`nD8p++6E3w*m=K@`{S41ddCUZ%dD&Z%V0Rr=7U) z*JQb?a-V)Vss^Mdy;E;^dKTpxObx4NTN<5U9+-?5gmtc=nNBI!gE{WFRS@XbZ<|30 zSP#EqL{YO+T|C-V?Wo4wvHLb668teOR=WPtZejl)4DdhH;;lcY_-CK=odm#y(X)#x zdlY%k6av~`d+4ffOnBAkQdPTDocnN1c5%&6c9k{$7f7@MtJi1$-%5}^EVb}A!HFo* zGqcx4qx~zx!^4whW_^_0#ZvL|naMk8{^HXT4h{~^sAqsz^~Cj&PV3`X#p*vVeJPL@ ze+A~PnhrEk0mnFjm54p%-G zGCHM$AKvpjj5GY6XQGl}OsnvJ0>!N$4Il}uXK!0x*;8ix;;;tnwtYis>U_#y+O8;r zYITK_7ayfTCZ%4Q$Njb8hm-6diPtC2;@R~_Muu|o(nO;6SmM|O&wlTtI`7Wa)j_&a zdy$-^C45WAla8Cq$EUiHsB(pt1;KSU&0JITpUGdC)0QYBbX9P|f1)zQf9|FtqkWBCKam8!!284``-?aKgx}cTD`IEgVzN=zg?3Ybc<`+z|oc?)=`|B?Gr(VN5gw$a3F`X4&4cC?rX zHu>6!oQz&iCl#gCy#D_n1oirWxwtef67}t!57-KJ_SVcSc zv!j$p+8C`%fQ3#_py|~C4r0Naqi7FmQ7tICN@#?cHvT$=H>^2LLvX^Y87iR;0>D}C zy;p>{D}yt*rEIj&5r<^vGEe;7S|eT%FrGH&7wg6m_=rX^{T+i8y)v5dd@-e<>!wtfHI@RT z0FA&5%rixJ!H-E>%HgKvf285|-QIg%CbcPvNutPk6My)C%*HRT4Gk}!g1@acbyUt4 zscjkdZ}%d0bbnz`SjXP6qG_pHOVz|k_`DoK;hdj&vd~KUoCBX~qoK2Uek`C> zvwO6Uf4@8cys-*YRH_i7jS+Sjv!N<4vvB$dmD)@C)5ZdbF?Msm{d?=h3!O{jgcdYc zbQOz}mLB|5q{NK(2HN#FOur0t`Zq$bkrr0Ad(!(H!-_LkoK9hlj~Xgo5^Rdo6*<+E zrb|s@O#lC|aO%_dwrNhk{H_bT-_`GZsl}VaBM;OF80h@$%2qV}V{e7+z~YU!cAfUz zw}EO(@RH(NXLHY(c))k^G03VjC|;xTgUsuhm2#geimgAfy1n}){Y`vyBEF_y*6-)f z&5n(tvGwMEzRKl2ZGU{%{|fm5fVs;A7!7=4RQmqQHg*Fyo^*Nq#!ix6GW~79?5Sm< zv5{}hxl!I%tBXgnD1Ngm%0M!3Th>9EJ~|01>+;*#`&U2lO1>sgR;}A@7&lVRC*W^n z4!x<#!;*lQ3}X5*A;&+pb|=ug-ZTa9RDICn@~yQ6xnIa%?PMK8?YxwqyMWaVs_Yh9 zqP*9z9IuEi8I?vv&vBI6W!KNcxd1`xpKaGwl4)|&Ympj1V1scMUs=fKL|+;2 zD!P*UDa|s?-z|2j98sayu@@Lm9OtJ@dZf~@z89!coHgShceZu^Wg|n8@qRIX3px6$ z%eFd-KUBunyL?2*{=5-=$d&TL@xr{0tPh>kj2T=^q;I845XZEFGy-WwrN& zV@&*S21eH~3snk{lj%JJ5+3O*nCr%U^8YQ019LodS3b6JY)n+N%-Qp05@yM-2MOY{ zM*=zC+Ka{KWHLgoV`JB5n7U24Ih*834C6tGE!8D-rjq~H{lngFC z|99&HRZm<@_O`21YDON#6|DA`h;%4?LgjCwgZMIwq^;_Cj<1({|091_&kMTQT*JHq zZ2jKJ>u!I`w46kr;``;kOvaIJQP+!SpP4gHKEzCq3dsX$JJm%=Ff_+&AeDHnDrIwq z;p^N|FUQKPxAd>Guf_}q4qHf!KX9*n@_~ zByYa|Qe+A9dfi=s4or#e&(#t^kPN(n6UR(>U4ln*}u_+I11x=Zb(}vrLj2BvtrK-Ri#ko#4kGT(eC~ zYjt$Hu83Syq+X3&tWM+6d~0tO{~D2Iw65kEF#$|Z#OD!IkEI@?&@SLon{9g+{#d7` zdAx%2-BN>3*?hNV{GjW;>-5hD=G8<1=FvrnQd?^x;EW+PcZP7W?Gj zUVYiKbJE^JFSCFWz}zZ5e#ACrl4b70yFPHihv7EbCm((zKF1>A>r+ZCzTGP`?Mavz zVS9uwTnZ1L9T$CSfhr`wP1!;-!U9-?Gvmsmppq$wE6^^>={O3rJss@wPm>_adXONxsgQD}~5gDDjp8ubun0GYs+EBT*hFyjqj z%Bq7L?bKFi2y30!xr&+4xR5uZwIaN?ULC`kpsNfkrf{LbiNiC69+TFgA;;Z4$sV)L zmVq-z3K&gd4fpa#*(a5tMU+SE;Fm?a79WWMZt*uU>*I9aKhVU)i`UN|{@4lVs{_E! z0hunZ3o*L=VHcJ6j_f=JlKJ~`;@!o=nR-bwSyP;ga?cbkqUXY#_qL(Rf6Fa>nhP4( zomq9+>lD#x=D+xOg;6ZbY{Ep9s3=NsBD?o>;H)gBYK<^q(2Go-mCdRVEs#d7MUXGa zr%J4s&DD@3_&)W?nA}^ao5p!sv*=ZK73cct4HcRczE1GHl82q-bAY}N+(N?bU`lno zqaDIKljGt7Phsw|`0o>Kp3zMb6~o>Y?fo>yqghtpV`Rz4n2ia?aR`|1PE{FgGYRj1 zZl~clc|3YQJEJ!A&Qo{r8xye1m8Zr_-Dw@RR4#bh;i2+`czvtp$oydfA{DQ@OT<-!#gTyJ?T(nQA*(;V%*PU5cPtXr=&59C`mG4tqn{<^I#)1&)L^xjY+ zsG|R1s2Bpfl;XR8!OJunEpNF7pGSJt9jt>c6pT~NOMFwRm-(?P2#lY<8}Obn5*`$8 z%EuQ~NtVEw?BXlo@7fo076p1C{|9&N#3Se50&$D;%d(8~74PUoHqbbx+BXy$&=UA? z9m9xMymLZ;QgQ%W+c3P&J+zP6Z+Vk?_^Nm_f2^5S-?qKI|G_8b))&TkwtFlwVyq?B zURfs*X>V*s?+JNXgp+gii<#*3`Vog{Y6Y?iWL56teskRMp9)#0S!eCq8|f)uZjCcu<6AR)vp+iWZ^t;Tp%Q(Etgy zcpIocm0^BvQ;(f}Vuka6bv2x}Tzp=~hh@C*4Lu&E@Z3G|nxO@ge@fWFA~nQh;{G_x zfa{)<#*9*UN|%9eT;Pzj()6C_J-)*gnE*8@dyfhnxjkBz)J$PT=nFwS+b$JIqiP>jIXI8YI^j z;SDh<3*GaREviChgtXhsfo+%h-vR8OI5w5IsgC`7cuFR(zAePOGI%Rs{v1l)9=w|v z59oYHz${y}W*^xp+*SCO_Q06k+tsd#bGHY2_}t&h5zGZ-H3!OEozYUAloJ3{6v)Q< zO8b10fcfg=o(bQ_moz6KE#!0j*=!My1DA+shpWH=R6w_sndH|JhT?LM(9%m^BY77u zKl?mbILVb81{FvG`l8EJ8DYCo?_=Ya(>P;v7M4q*Iwb|apixGFqt|7&B1%p5WYR)n z>5=?6HU9PRg$B;!ZEw)dZUw;oI3IZsmQybc=#ydpR>cNIEWOOBCybn1P~~)?--MG+ z$E&itgE7LmHDUlUCq$J{oXWm{?I^Fa^J^xja4}lUqptVJjlP{qg42!sdNeE!GF_a< zS;c{rIVNm0k`SS5xW-22P8a%NL>4>jUOZE zxEW;?O*p#RDqwl!p%Vi!bHa#`o=apTwYdy%rmW^6c4Mi_RGMU4Slw)ND*p(S(1XUQ z^B-=jlBF1@WiW*yf*AH2SA z&zQtxsY)l2T+Us9F|+pJxJePUvU1Mh&=~6HO9bF^(B?X+_iQC(Dj0pcrNW>8G>RY; z7;CS33Z`Uu*f!i>NdnH(vlOv0s0=Ip$+&7d$D<+2D5Oh=HfCaOGwBJZFT`3iD#h3w zz{}+Glzbn#^&xTtR%yIqz9G()odTWTmfK?sWn}A!gz%yIRsQye%qy?+)-9E~hwz=K zlVUOi4{!y^edmHYg_z6v~S5I_K9axvs?P{q`J9+5V`N z?nJ^w^}%6y1wCxO1`*`Lgu$Jnlu1+U*`b-ciNU#$0E0g7S*<|Cac;I5ihu(|rY289 zzy$7p9ql{i>h9;f5=Vhpy^}^id2w8TGWi#KwPRQ2{9_8(qp89dK~!#tYgbULAwMXG zKO-2;F9DzoH{sjFSl?p>@%{iy*ygc6Zi{XI9OcxkZnKW@BwF6Vdj4Rff(j^`d~Q`1YpMuCnk{;ziob&L=mw z7<&VPY+OaArr^Zh%%B$v)Zj)@D9~TDPZT_uRk`dc_4{~T(CfWuwY(3#0FuuyzGXIm z-fS~ib+gnm?B&<1CoQ0HgSo_K_?t?=Pk493bobR9br4fVrF9e4+R)OU18=jsV02u| zN&vqRiqP!PZ2vq3s63Ep79>~LT9l`Fc{4kSekAe?ygoy_Mu;XF~S_|(ARSIrUIY8R=B4H>ExQcCoqXx^y`XZb$W+EHcPgP38tPK_YyI#^hV zj7s6R@F6YW-Zrvfh(&P)Ri|o57sS}Z6;XY}BGQlAUX$slN6C;!S9M|L07+PKzas{jV{Hof@5OTB zbu5yjiqewbd4d3_4y}M`fH>kVKCN_0k?TDvdoV}Q5VSwnqW+F|n=Echc09-{3o<($ z#Vs50UYlNht%6Ncii&HkKC1Y+74=2V&NNBuAL6%R*kE|yLJmu~7qy>8Sk7QI_%f zsh0nlhXG8fjNf*_pRNqgUG}Pz0IIcYBa9{_T5H^Fr;VjIFfY%!cQx){#hQ0hs6BBr zRX1E7298I=_d%Clsu&;84=}B&08vM`!EFteD)=L~i?VgsP%@!>5aYY+%2?t#FI=e@6oev4rgMXY3?(y-jgw3VKHe;$p2EXFt3_R6feg*B<)b0s*psr9+>E zLbu$|`VdZI;`f)ABy_>mj#c)M_?u$0739c)4NF_TdWni%hnJP?;$2)8#*JM5BF&?oLc&Eq;!}t*o3_Q72mU z?#X;J$9lo?q8nuK8t&a~b_+Ksz)?NZzOM^38dPf-`M4=mpnd*w#>K4E<=6AX@KjNQ z{F8&v?cO}6ia{2_=ZiB^gTuvYZeB>#eUXKdlN6a#I^O113(c-F>`!ki?zPEG@8F8F zJUF~GQBE;KYH0g8R#4W6UBz`Kp3HDjZ|=HG(1R8o|s&q*nFR7 z%u{--jMAfYWYly)?cAg3sJQCLQBS%EAx|E{KAk5YWsrrDGl}Q;?rFtegvF!dZqa}f zO;ZmPuZG9xZsFwn*WewtWMu8 z%}pIbcK!bDcoyVj(qj1u{`=1Rz5Wt|;%4UmqClUy$DJ`PyA!%jR1d~dZ-<7QXICuA zosCsp^^_w5W|pZ1Epxu77}059q%2R3JrPWev9LJ9A5L~Is1&LxYsP!McO_?{`47(d z5UWFPv#V4{QY?YH)veJNu&k+WsYiwvr_sKx8oLAnu)7+2v0#r13?DRCA5%V~ZbUy> zW6v-E558;-r89_kYz3AIJq8EY0*nSTatroyLnsaNkD;qpE0e0wirj(#Qk78>=Uk0% zExL9XlxwgJb;2%X8~0he{Y<6WFo&rQ&kgA8O8sdLyiVgJ?Br6Jgu1d~858A=f!O8f z(~nYUk?v>K5xC`+p<_cMhU)MY=&LX`gh<5=^slu!y|wgeJXCguKG_mZUcspInu-{G z>%80N%o=k{T=Gbllm;Nrd8umj+vmkLO7_+urKSpKO)U^dBG8ozu7RzR>%BPed-j}3 zZZr5`OU3gZr`ffjav!94{u!*Gire20{-dsJz9=}(*xwo&;SU2@%=%Po7Z11|;^uZP z)gm13mMidLc6X4E%8pKIIp_3A2EG2q-UlOmJ;vvSA6}c5O<=JHT9w1D(gTT{JX$Il zD{usdj>1+(|2e^?})%(3GNh3Frz3m`JihV zOAUMwS`_YOd5uia*xLF}7L>48v+1k}5 zYswr(xq65R!Y68|(zrwA3RQjf%!r;Tc3B3OAVyCVFQ5G}P<1^nSi{F$*Cmje5f@xu zi_6EsQ@qTI>MU^pd}5Dg7P;Zobxw;CWZl*iaeqZaHH!+|aHFa8JB1Y<7n#PNp*Qta zw!q$U)d@CSpSrRO6&toQ_)k6TTHSkWzgo<=K%|EHa-S%&d-Ko(MZ-8(&QS!&^Yej$ zXvH={6ST{iu|6gaF8O*RoX;$7V1GOIwng~JJq4<_tX8+nxDH5x!=G=`Pg`=aRo)K3 zukb;NVLgQ1n#X!91u4_$=X1@!gIWl_`R71WN2ip_0R0^hDWQrrxn{R5lk1oNpuQh5 z)%St*45PLkn$#4a;?qscs0V4PIl36@DCkaaxFd- z>uJGl>30qF*r9w_RSCY-P&hS^7*KYZYZssQRk`I3=m7`;h^VSUXJYgg!YJi6%Uaex zggS(d*|o~39Ylq3J}?|IB77oPahMuk=c+q?P@V5c6m;|+E<@~Q@N&acb_HP#2*;gH z@?XtbHW@;2`t+PPMKM&5G3ELu)d)^} zfvBNu!%64_xyUURo+lT8qXDD^b4vur0%%%^``bK@(`XrLu{h)bNDnt*`jDH-*!}q# zZdFVrw z#GiWt4}i`J+%WX5S-IYOL=vz9B964=bh*8y_k3Rv5tth+^5g-pd0l>sryabH(zLa$ zc%{s3-|o|QoDqg-Vm7CB&)x-U-3i% zu@wX^B{|u=C|wt^l`#sGgxkQp5rV^}ugE*~sGMS$PD7yLJ4b@?sKpFuauCuTyh*-8 zH~~#ZIX_x~5A{MU10IewIm}rniH}pGzCCngGc1<$jij=t{MN5pPDqWnzAyxBJa}Sj9zoOWgJg9&Nu@!h>2zT%^ zeh|OjROMO+GKw+i&~RSB(*?Ea)C9n$0?|=bl|}~cR#;GBufPtk^Sc}5@sx=(d`Udz z>&ST^wq5*$P!R4L*#o7V7BYTnMbUx$WP$=;D+2g!0&umS*(CpSIolTk7F)R!@w~8v z*9kcZTcnRZpvopd1Wf&rohm(AL4Yyn6tdTo{7kMlO)EVIO#l_08(o~vq8qV*_7fmN zz}bSeo_7ePE8x+It5aOE_pXd*xBZ7$H?xh9|D#5;$B-1b& z6HyVpYMc1XoVP>SIu}_$l2Ufc{&mU74L*F~wCXS{z_gm`tmi z?R`SZNwwfQOX!;^PF?k`7|95MV z@UwWas1fMeMtf)zGi{PzK;AFGDz3k6XfQ($k@shf*y}IEx{G)B_{E+8$qKjPJBhl0 zwv}zZn4?iJrCb084lADd6R0~3shHAdv?2sl!p)k$QK|l~1i0LQIi=XQ4Qf;-%=!c- z2tCZdFb5T7V*q#Ly5u=< zxC=R2ksV}$b~WGls`x{&RK{W!j-(+*s7@Lb@Cp@Qe-syt4CU=C$CwyEaK#QwysIHV z5X5husGRPwmKFwhDsuF80VSy??!!xGuoeV7$gU;QEA$mpIm|Gl1=s2VjAH!`U z%9r-dl2fT>6(n_4Hl~>xw&V|3f0C)>i}H*Y6zEm6>3ry#OcSZ+(C~EG_yRL0+ruV* zXieqTbZA3+G^9o@E>Qrizmgof=Jvnwku@LIx82Y}yL_*9wHn$^+8;t1RUk*qa=#A| z8!(Q>?T1ghl}XQ3kxR8{o>F}qGR0JIhamd6zJgva2V65N1cQLFQi9~`7B^4D1<+XR!u4V*mQC$IeW%+7V zmIqU-u zpZ{BcGt2un&v2S?-9UrI=xo(WU@qS+3=K?gTtBM4I>-@D?gMH?`WB`U`y~@)xCsBf z1z!CPpg5%08~LrCWgmGZQ%lgzN+0v`S;x(SfCSGxPt5PRb2T~qwcp3a?#9`bqd06bcBYrli+K=67wG1e>{FzJDFrFWZ&KN? zzgUwzn~$7sb}1h;x66=8r4F@1%#$Jhx9AIS5w6of)Vtnz&w~;DDR-N$-!&wF-cz4+ zRr|22(c|}T;Q*&P?nLZda5`xrAv+=Bwp!R)rkrOOdltzv{;B*X5vgC@-R2so<~J9` zeMbvDT%y9UGH!qf9QF;cSl9MNXrQX9xYT(;H!7$d>cOn->uyDFeCxmvz#LCJL}0rC z+=*z`N4^CF0)JmwpTX=&GB*Ir%}c)i1$InvPk4pFg>(Je5AI017yk!Wc6DzCC|iSI zC~M~MOuQqfqNl19lqn)CB_O&7+!K?nFN4v>`4lXcRQt<1PWdMrE3Orl9yPu~wv}DR~`aVL{e$Y%WqJ0yx z{p-(sZjM_042$39i%<5AmJX+agrjfy`T5m|Sajn%A`RwVKr?@)6iml^x(UaLr~WpR ziYj(Wu~rFj-e^a(oq(~5R-{>1O<`lQpFGpLcHN1{tR~dvI7!nywVourp3ofxu>+H3 z3bxV^lf1A8afS~=(ejc9r@VKkqwaR$Ur!Z}>8tQb_-(!;(L1G{h7`rsdoZb$qRh<@gsSZ3lm9e;le>;+ zytyA_`I9}WpW&WNSvwZ??T!T>utgIndbbir6r8njQI#qYPS>i_O~v7G-j%s-a_L&h z&8!-t(=Eb|G7e!~LXI3-&w9{yPZmtFqa_UQk=qrC1yU}&&O&%S;Y;7IV2Ag-94dQ& z?Zv8!tE``r_s;h0QF=A)A4?gt&2*TVs&r8)Qi2m^XZa|7T@KS5(=xFBUp!vy;Fh`* zv#w;8C*q{1-z$Ef1z;rayK1YvBJAZ1$=ns{)wOHg@Vdw?+u%=Rs`=uQ7~@}LfVFc@&b1X@0HUMcnKH;!7j%24 zkGQ7?U9V5)=a&r*v(+lOXFTw`)05D2X_?B2wc{`#OPoLd&)41SHcGp+;n z0ET2N(L`K_%S&v{n@B=%BLF)ZrJQ9GN7`&t#L({%Biq885sbTx3bCFmF(&LeRkpsxJRpwgg%=Z zXu%I3^;=up<{#5ZVCtCwB7NZ^zAh)Cd&FT_GT+ z$&;-YpB+7ay3+UdZ3k&3(Pflvm_Il_qF+3X2@D?wQ80Y>BwW<#Zf#v2L&fLhDd)rQ zPuVN{o;K(pP5Z?1=F;lnS?{hK;+jj@RFw*Q74!k`OOLeC79>VX_UX3CM{@ozwM$?VCB8AU8RmbUEMAQ7!l_N*%7IeC4w zhRG)GlU-e19Q>rh^9^>`wR05=2efoIH(-6!;<&hUuJ=#6mItGtt6n$()irjl)Ps1> zUK;k`Ly_y9CCOJd(DNfJMo7uLlyW(<75bB*Iz?hl zbz%O-h@5?@+G@E5_{IX3Q+CJ$RI#?K=mU0z!}+TP_-g%U=xMt!<%Jf^bg{zav`NXN zRg_jhU?5MXemDH_UmJPz-$|BS7qlF`M^F%67ZGzOAK#CD!9sQDUnnLn`ukc8zv$vn z*d*276>2CI+8rI}6w!WG1mg9^{fez=Wq_Tdc`nx*qr8)|x5&#QX2YFqdinqaWxRP< zI-8w~&SOK+n<9fpr3009LjfBn<4p(|U@x9lA-zHuf2tfZB~>-|dUZdi13x*a67u#u z8`~}c(mM~Nfsw2x)qERqUn(OG6_WAh#Cl3Jd~KI(UAgs)u?O8&XCDTG!95{gY=~Q* zN@|diG^p@uiSih(#O@PVuU9``OmUAOmSm|4(_a%Tj~qH<(JeJ}doJ**AB`p>oz-7oj&P0JQd69wYCpN?i4d**3le?Q|k zZ!mtBr^P@%C(6h!FTsVw63tX&ckUygon|L!{7#3>KCe3b0@}9mz?1~?lVhT&k&>SJ zNJ$sFVIEnwxz?VcWVk$s7fJKqbta2kU6j;Wg1QUv^Si~{TtkFhWM-V+9%H$XdOkgs zRa5Wesz}B&;27DK9ssOg@IHL%rF2@!Tnw-|a!ulj+exU}QT*6c@j^|I&+n)9{`)R~ zNbwQ%=Drv%pSdCVgaTVIa2qA(ArWKoDF(TAwEe0Z;s(5Spt<_7YWETbrv5rz6v&!xd6$@G>;|81|GS(;EmB?qT8##0m z3e8;#U8p3FhANKJrAVG++BiJaxu8lx?AG_&EFWa5OXRIG5=EBVwD_;;9IJ!51%HTvbh_ zuUT&^+jB(vtE2y`m+Nb|4j&zmdRYDtkKNDC9vwS=(!i_32Ad$q)M++-$-cgZTA(D; zVbzIu2FdP7HMb9I+P=HZ21a)<(v7Dgw%J_oz~aM!RTn|!$q@<{vN4?3CVR^dgZ}pmc%z^+r zWY#@?#W!6xoXAv8DzsRXwDXhq?JlOb2cRjz>mbFJOjm4Qm@@#$C`yT$6C zh3Mfx>FzkLAx|0~PEvq&<1oJhqVRQNl#&S3<=IQHe=?tmG;Khms3t2TSn%Vwk5w{D zY4H6H;CIQmbL{dJb*)>PZeJDmwsWvKdASpM8&0?UOa84TcHrcFnf@#Iobwb4dxUE@ zm#p8L=#qX@kz$;ws9vBs(ah52-rOF_ z^{yWcHihN3e$)HStj`0E1Kau!8@DM(sJCi4|4KQtlyI}5wzif-I^pltCzUVb38QYm z65Xz_NT2)&{eaF|g6c$`T!LmHp%+g+<^rmj|Ji*YM8_Gph9Yx;+phvgw|%#4D^+jC z^$LA&q)OLBqxB7bdI*^dg3*f?SNa22Ym~*@!TQSoavGpWtweVZd90x*en**lBTy;i zN8oF5?DmH=SV?YeWu3gwdZIks%<>_!1D?(XgxJ_bA) zW|j8_@YDwec&U!~e@j^uEZ_aDA?g+2{oHQy}{y0fwRM)IR$M~H$NRD<4x%!rz&yV_N~qEkDvP~&7$ zR7%>rEy5{)+~}nSm{d%hFbajzI*nKz%Be<)jfs|?0e)?x0q2RUAlzNssJ*#{@V&rJ zTI1W3tp|HuabW^<@qO&(2QJE(UzNLfDri_EMSxA2{&-48X`~~1-)X~w!w7dD&v84W zJ4EwUjJ=jnUibod8Lq-nfLN~DGdQuIO=au_E*OZ+$Stp^Pc&^A>-j3YTJi7hX85f8 zi(Bjc2i8&01CU(sC4BX`s{*&|lW_HGiK{9LDy}9*`f+g?$X3!>^ep!!xaHcbsinyA zg#fE}5vxMM6hM_n)i!%JR?=Tt>hQcBKl{D&ecR7+{(Pd(c*1P^uMv{>{Qm^1VRMUf z2g;p9O?qmYay*+W+1OH~hn1TD!nZXARpt~$vX6W`6>D{IyBlI{A_N~5)%#GHvIDgT z6YdPnSZU(69D1w6v`rKY(k8KmRD{=P4JmcM23Z8SYbtxB!Vo(rAhh5*xy z@vER*z}7Jm(0?O;`aV=eKox~jZA1|!MEs~ayG~*Ujy(8I`Q}Qw4os{% z!<|i1jrjfE);5G&u654G#{`^5|GC3Ic2j_GgG7Bf5*dGjrBrc8Tg>G|p{+%It5L*# zw|DNeoiYR2Z`-!5`Vrfmzy1n@NO;aDDk&+cynOXa89f^OE4M%5Zz0cmatK=z;) zY-Lqz@hIEAq=T!p(ZI*lznUGFz`a5GrQeGRZ$)A8*jT*Zc%^kU`SnGg9*SXrS?iJ9 z?h2cyIktw8MU0|qd|y1pSX!q5qV(?#tsJbJYkcs2RCfA7K<8IICu_-?TN-9Cy>`h{ z_t#C8c66fAaiT5l7uI{vOdEB*-oG^=N(=-opN2V`P>EV^2m`BEZ-esG81fMMkm`D# zDxA=_XYW>l0N8IZzzhtQ#I8qqET^vdS1dkp=Pt_@TlI>DmZsVg; z+QfzL6{3IHz-sRfd(qq=ASr(H`^~&R>VIc(9DVMsJxinQ0^A>bg@lRHKq<_kPS~8!ctL$~Jt zcNxTIH`fqT@FuP2mPMA$_Vrqe#Qse1(xt^lpP*cqTJ%g)@f9v(^%R%EiBWBoKN(uX znKWBbV^335S7bBQy~!hDB&Y`_rth{@PPBSkME(0QKLk6RQj6l=dGz+17-kDYiJSvseHDjl0c$O9+m-13(Q zZXTLctY`}LlT){XsJ+_5K`pbe5pBfR&z7~s-a43OEdmy}2HixZ{b8rn=E0ZzJ;$}v zHYL(gVD3kc9=UMRTW?hLv|4J>nB28D?5KC|(F~3a0y;Y#fc3qkJn-&O4N;5C-Jbvk z#m_k;Ep$6wNz3%ngkjtkX%M9Gb)crP%tX6AFQt4^8l??#TyTTBm!BYW?l2;!=#^7-X~~(tL8V5nvRgmal!MA|Wn%w+$~eTNq+irF)sQaw5Q%g97hk)Fx~o?6#xUYjN=g!<3gW7EBErKPu18PW24R zqWk!x2rkj2Hv*?o9X>S+a&3Kk;EQy7)*9}Ox|LWfh))&0W1fU)n1*>nO3!&D?9e+37C%vNW~AtcU|#s=p`qH=p+hqeqsK5vg% zm6ct-w>bu?SZ~%|ck8ze8?es4N14nM32R2qa|wMv1@l!b^F{u&O%bt|70mrCWwDtJ zrxbYI#Rsxf9dG72cZtK=KQ51mwL?5ayFIU%Upm;3FU{U?!fq)y0_qA%h75F9Sg>OH z6R>FWnXHweO2&%=qH!pva+u_j9ypeCamZ-bap=}jN@$A8<5|yD@;K?cEz2%K76DVL zx=_eYpOF_5YVQHD@jbBHCUhzF-m84iBq5w5%nDOM2q585D;wyumgH*W9~3oXAG#Ipux z0abW#w9{S2^(bFNhCo9~@YTzXSIsevWu9~A+0oA;*$|ZA1>|r$_^6~^s155|p3L#P zbt@|u$)4|am(iN_9qEE5sFi#hy>^ODcd@Dpf-dj5zTz|ITZ)Xh)$JRJ7%sJq+@vzR zWca37b3;}ZBdOk0elmoMgb6dvu?pKi@*w5u!{COG+WnGqSCBD^6`*rUD&Q3QrS1dv zmIKGr_s0nWqlDjO%a(`^vlkj^BQ7?pKoi1|12SkYb&@a=Y%=Tk_T}Sl$na(3M${8Y>GW5JO@% zKjs=~Egd@=5~6rZ;g*2l2<9&(wX8DPb8X6*;W3!rm-y0ve7~UtPDLm$=0?a)l@Ffo zhIlT8(=qkwG@7CE{cm^IS0`>OA#Gso7>HSUgCxvW1e@Q0@*zSdT550joiT@1bWWHj zb6P4g|GHFd!n9N+I$&l@G|$;h#(#hfCB(z2$azBYjZ5`6Xw6D$d^P~zrRw6lD_a}B7hkANwNP}zjhbR2Q zJw`&b8;ZwBq|BFG`ol2be&t^;oUKCUvy+^jScX{qFO7?7m#=HB_Zm&CpPB+4j{)#c z8CQuo=RbM$+38!EW4=2zP^M!60Ra+MRh5vByaY_XBew3e zEOxckdG2S`f!;T($hBq({A?yd{ZO|jx%qrs!zu<}yK7ymznu-e5l=Vq>jGV<4&Qye z6g*0CN_n{=2*yfqsQHXv=rZ%3eA`i!=XmbEcRj%f?|%cS)-~9j<1sdUNja0t!7CH)2`O;?bWhMafL9JvV8##4jwo)lc}e#?d5G zbFfl0#T>@W81bu9aebQ`EIIU6bU3_@YA)m;PJ~`$o8fnofQ}&N3FQNnx3ou3z(E4+ zQ1RU^gcqq@;fgi*9mSyMgOh~>^f6%k3SR=Q>VW>rrpr#80F!yl!)@da5bQnCVR2@ z5L#^FsqajZRkt4o`5*v7g<8}4%EG*>7QA#KdRkJIwP+N$P*HC|;lZZXr!fpBD7u}| zM%1zbGB0^RCH>*K^Kv4&&TS3T8A^=NE$XE+cZh*Z{r(UVyw~!LAELA&KH6(t< z>!z&HE~h|{SsaW%O|NS-G0ka({K-n-8oGWKLn@^rsv>Pbd+=?vWQwxl&EH{SbB%qbA zHgS;Jv!NUFtFqorbG4uVLDk*aM<#v= z!VY}jQcYWTlca4~fqd^7I1I`b2XyJMQi?6$R~8qzs!H5LS=!M`*v%0IIc;ItN-l>c zo}L>HYb`SadKe1r$tcCNu6Xi0mq+%=DfBl{h9e{G2T=IRDW7CL9dErvz&dW8$+X3+ z*&2MdJS2X`BZoO-Tw9dg#Xq1t{-m~RRujtS8^U={3cNdbD$Y2r|Dd-PQ;k3~D(R;s zW5X=h{wkUysN%0Qz@o0dHbV}x5OL{_X@R5y3FOhIDKLJ_`n!b}U#1il%;aR8X`A6s z&UM;<`SRrl2kX_7N>u*p<~uCim7g~DlhrK50?;p&8bx^HoMUr}X?E%_$kM~Iii^I! z%4p<0l5%J)ahNShh>ray=QJGu`s?w57Z0Zdjxn57OMxW?+8Z_{`VL&@dfgs_ywo7Z z<_gK+Y>?#2WKwAS_0DuI4E|6BnxipvB zdh}juJftuP(mN7oQzV|7rp;m;G`)WB&Er!S$`c(!x)EbP+vrF4gdTg-ehNP-f!ji^Cwn(VY*jFz98NGZ9)HE-PaDgh+DpukuV5)`diGQ&1MQ&WzQTs zeEt01V}B^xWAN;?guAI+qNYJi;dK5pV=ISe-@+-txAbk-N>8m><8*UaeOSdbU^Xjb za7e{GV7B5ky{-6|Fk}7}(XY;O$g5C19jJrBtnRFVm%PCP0OtqfR@ zaxpDDM=weM3aHkV8Sjxm3VfPY(##^0TFXw0yOz%vwT@_LXgnw{FE7wEmnV15k`DD( zp<(DZo~^_)MFf*hpZWN<6feJHY0u*@;~!kYmD0DXK^fp=-(GuwDHidjb%g}jitPUA zFCh341<%f^;?3@LKQ96-e!VkpeM~x}^WEVd3l)o=UHQ>`nd&~8Md{AU%D(M<*rO;z z0O|M0-7-y?2n@7cDc`oj&mmrNKCgJZ*v4*xJlm8^#RZ z!*Y!Q9fP|WFle+S{vy|&BqiyJ;Q36jKzo*zon_jpt)T~bkCP%Hhvc&DQ)g$BoJSs2 zYe1FD@d2%>#^T8l2S&b0H;j~3*Gx{9YSvk4q1SQlz5;0cRiK-Mr{2E@%TyEeU)13w zS&LN+Y|xT)5l+?;2oJ)KpW&}J2X0WNl1D>wn;6hbTfUkH^FuH1_y1~9qkdnd_VJyE_feJ%B7x+C3=-$? zF*7W0q^9^POZ88GM}35|&AyXu?zJKF3XE36UNj0NZLq+Itp8abRD0L8(i37@>1`E{ zGgK~QA1@AQ0-9}8BOa(81yWJ%mreY1 z4UXLYhIra%)+wsbM6q*txel1{qHt(#``U2zktZ_hp27BMEZV37Ff0PHwzMdmZa)*e zGpAxHtaT)lVry%ygyi84ez!Lzf<7~B5rS0n33*=xFc)W6dh`>rd*Ch*Tf6Px2%r(Z zyW+wUZ4AWnT=F-Ts?xZ00zxt80i%Fcd(VgBj<>2C%q5%*B{_a!#m>i2p1SXq20Ya{ z^_yd@pnl77cqB=?`*#nZlhOSgq_(+ayHlrGUT*)c-Kl&B{ExOZ3ulHay(W(w33A9;!dYb>^s-JC@Kh7b`I*4`C8>ae+Uy8~IS2=YN=mAa>kLE!t zxe9Knt*zZV{8wGDxq}$LF>tdFa_`AGrxQ&b%@K=EI$xTaJ;Q(uvR^CVdaGa<)5v`F z$^dXk$6{@3vH|H4#8y5UJNfRIQV)C-`@A#QcaxQrDwPU+ZKtCX%_&|knOU%%J-BqT>fKuw7I^aJj#YTn~no7@S7nb65D5ArQkl0Y!M zi%{h7M1y}YMyb0*m*MrxAc4@}eb-Cgd-DfoWTm&NFYY=nAejn_=5y!*dOsWtaqE-Q z!JY5qdaxs~Ho!_06pZ=icl=&=ZzQoLy@DAC3`gL3d3w`4M(&>KKl=6LlD0kvC%0yL z%0e^$RCnIK@$S+`Ry)1EVa!JvmeF79O}syUOLr&vhKZDQ(;xcOKZAlO1$*3V-0yVq znzijRd~ZT<6=COYIXo_1pm4u=J{|%TiMAi4!4()P(Z7i|#4WQJM#}wHa^3AGP@=|g zrxUQzi3!7)L1G46i+`%`bIJKzqCbr}F-q0)(_okJeRZ@2B1wzIL;Lh^6| zsj*OvrRnKpUaw@#g+NCV+HE4j z!$UaHDm&VNk~3SPz$`pm!lmlce1`jr+O1;QSP9krE$WW=e2YG|qXF48IbMv0S|<(e zU76G?@%-qy0~;*(XR$>}9gEz#~Eikp6dCW(sOY7Fm{ z(mtYx_ zra(`Er;kr)q%c}D(PuKX!gq;AF1JHrvZgro?@8{F&h*b4#-FK4(_B(YX*Tv>8ax6t zEu_r<-~3f)pUuZpe%6?LP9I#jtnKCo=Hnle5EOG!=2zM~F_FE%$#CeRdj9_C`iLMh zQ_vifdAR+k%dAr!iOED(PN8S? zc-g`v10<}5M+1Tq8wkO)&WKDKeiv|pjx*_TiEgX`+K8w+fe2y3m$8_D~!cgD3!;a;o#(z+F~5EfCIQTd%fm* z5F-(F)gc1@m-5VGXS9Vn*Co;+^d?XMLATYVpZac4_>`qx$}~FI-;h1^W0=re;HQtH z(Hgwc5_f6l&Q#9V4N|6j8?E}KH5qqufnM2}r{cU|22q;bty)$vS{4a910=FMI^~jf zwW#@+o-!|Cc9LpDwdU~s!)fS@+^Q^hOt=srRopS=5z!#@2m6CB^fFX<_;J3!yy#)P=Qn)%yEx8^|I6T7x@hSi#Wh>Y>G6;vKzZcyqF5q zZqi#m)y#twgFr^G6Mhq;nn^c+tC^1BiCheki@jx)PxJs6Y880C|Az=T;TE(M!cdfU zd-wQk@8%(rg-4}Cw#V@Bb|;{rt^e9SVI?=D!S`)2_fPc=;elO`ce^Sc2@T#9jHzNXgrZIR-@e z7yy7gt*C-ZwFZL)4r|&<_Cllgxjwi0Jk!yJ7pZjI*(?@bY+p;OaisFi%*QqX#_;Ud z#&8uC0QO^E*KVSo@YC|EGH%+bH*7lFci?i78Ya_ft9e!qUt0q0NE5dqiUf>uG0O47;U z%Ic5g*3Nq6lt|rcubG`~iM@XCJ1r*b_T7N9u1=FlOmO2)=F5m+n@%FqO=t_Z+H7ts ztzzJR0Ycl77!QfV$FAb(Ikr2K7Uu|@VETZ?W)eHWl3>TA0lS1*r+jDglXv_3`)}@I zEEJ=;Vr<+`EiTfvb||u(VfG1@e021px%8oIl*!B^kWFuaRbc&gj9^EB;i=)sBx=-j z3N|S3iF4LPz_WK}$LkgB)}9Sob9+-J*m4W(`KMD&aBpU;q)-zKtc-N1o39i5=7 ze8_@+=kCS)hV4pG*_X_OPz{#(g@z1L7m$vzf0Bpo>+7>D_kUC{ljIw^s;#(YfXk4Ln?M^8t9TBmg!x&Br;ENLLodema~quGVcZ-`IpUXutL zj!ktv44$~vbOAVBtR~{=lrfcpeLB^AJ}6Dv-+1+=iGl;SQIz`m{(=LEF~y1x+hM@$ z5cds|6Sd6BPAP_~>DISVuT0EZ0Igf5EkKJGy3#xuh4`zB=JUQ|uq0t12*Y1#X1$A+ z=Hf;A*uMqFHy~Zc@VUsn!N`R<(W{}tGr75rXobC=URMvHJAuA2GWZIL(P$CBV7vxB z?j_Al&*^FNxeHh`wVLxR>gCi*WB(f3`yM|);wmR$Cl?3tmA?fpF+gG&!V))_sKv`M zS1)t>x%+nSRJ^i=yUYR@hC5brp5EM#2a<&DR7&tRsil$UXps5>{c_Bb{U|KnTzw%b zvc`|-y7_%b*)jc!x;Iz|J$c2w`+7w0yni-V0A*aLsHZ?-344pR6F|Lf!T!VMDGbxP z6A@r^ChJkFi#`#^GDM%q2AoPs>o-D*Q~m_Ck;p3sjDrM+Vz!VV+W--_j>G+)*4eBtG=3 zqqMwwmHIFvAIhq7)xx#J4HR|O{udc)?oOmdGpIK zGQXg@gducEkQh_{4j8nSK&cXE{urSiV+0(y^q6AyP|P2`3%Cdd$u1v3IF1q2S}8H| zF>^r&dN6=5SJAtCfAAM#un&4aa^0*~e@S>EN{Hx%RM*WbHWmS^-GI7KY1Vf5DpCFw zS~s-4*d>Gz9I&u$y2t_zsWAdG24ZxU;+s4cYa=$I>5oMXQc1qaBvhr;&G7JW0uUGTBjuLjTKZM?j$fg?5S$VK?j{Q(mS9h3bEZb7!bz!v_5 zR|9uBrMAvM53?JT0f9uHJ8X-gd+H?){@2)jrW8&;0u1qW)e4nY34VR3ACURWTh-mW z-X$gA4om#1QEj@Z-B}=qG~M;Sel)A%x<0->jynNU&jrgA^mz0}T(@l|fudxln4slP_7^z#S&8Y2VwTEUX#q-?l>Q3T!AVTN*cr|#?LVylKA-|jHX9Lq2jko} z*>dh4f4!*1?2k62Q|9Kb>2(9TN6w6l37~2)=4$70dS(C+~=9v}>(8Kn&Y0p*qk1|ou9@gDBvSeL#&aX|X z^ZVk~KYQUq2VV8q&uso`hwaZu5BX0K*KMl6dJbi9Li6sY1{pH0P1eBVA@ejad5FK5 zMZ*`P;rFe`d1Y^%+}+*B%QV*uV2xg+{nYRwVjHYzz@j|j_`n;xuJ`B!>*qvKF zAZt=Y1ZJz`7!paZ{dz9mIHNAN?=}ikH(wsuEQLyld#C>0^^ke(9asa!sEDJA1U@8Zmf)s=XAB$#j1D)cAK%S_S@Lzf;ci^l}KbLfX z3%kT?{H7v>#zqbISxAIiy0O(@sMhSeX{K@D!HUT`loa%E`YgLF;S>C>r@v1Jq@K>4 zM*>M8T1k)6=8GK_`+*)3h(q0$C`s#zgIT>k^IOzA_I>BF{S!0K=5UU87^gOQ36Z}V z0sjgAxLT4YwrS*{2dtHyM3f6l=o-5d|kaRC(ub zOd;nq4`yH+Ta_dI(8Gh@HOQ@OX?WMMqqJ?XizZShn`-q`lp^D%lI9Ni+a>XyHX}G& zB@+AktQ30Axt>ZI+(pKov+A(9YcBX$vg&D-0=M`3)}QSM8=f_>x^LnRHuM}C!|yfS zz50a3+0y_5w0dx2@_PiGDNp(tN}8 z1D{|K0Olt>b_EFt3$RB>?SaUL~k?dQMuJXd)HibLEln%(UJ_rlRUnzwVU?CIcMmlRVSn4mdvM6Q?^T*{L31 zBDhLz+^3qE;&Q+g$T%B0x{}keU3QFAE4iM15h~&p6qJ@SbYT0&pWx=#4p);9VzN|@ zM{af1Sp{2wc0y`M3e{^IN6>ne1$0&Lr*({!Qd84Y)}+66K$JZ20OF;;&J4dT@sQcF zHOc&~eC1@`;c%r6igAD6$L`~Qcv{cf+D$1ZsPcZohE3^VDjKGDw4#%gwwvZxW;oH??Nx*RK2`0= zhBWCN#$#&{1ueYzwPdeqv))axZTr4^L~W;ylGX(Wvw$d-oo|ub?G9M!cfCBAzrrz$ z$q@JP8O&8Q<84}v1(OOEl{>1;Zac>%k>}X%-)6v07&zag8KG&zsG5cBuCW`Kslmhu z<&hUNbdAdQ8#~BBQyXLK<|cq;;(-U3W_gv0)c?9UnqDqw6x2C&Re_!jDTPM^v+lIM z=^6Oa(Z#VG{Me%@hI_OWm&;@jnm+DdnY5jqU49Fls^lN*I`vA-qsSqrK30tba6js@ z;+ujujB710&Yxbl|GQ3^uZ81#);GxlUDApm+^>rZWXHQH(8ig}cQ2H>vdiu`S6R8e zj!l;&JXQe8N}1snZ!D}}h^6^k0>slQimrl!gxjT6#?1KBL1;6-RKyqn^mf zvx2*vk;EbS8>JVTGJ+cGdvfiAtfDUg=G-$%`*rf2=1aSAL#yx4czqT8jEhFzTv_?2u)H;8Jy}i>N6z5@g#^&~?Jt5(MsxV9iDK4Y1-#K9TkYR|6#P1lYAHT+zgno8;hz z{A6LEG&<9-7PI73@~+~J%+t}oQ+3{ZB*GqMKs27TBRm+mc?gQ9duK!#U58}|-6W`R zp!{A-IGN{42e;|h=G#ptTJc1lT><{SmxpD4k-@L+WZ}eMhA#qt^{d+V&m#&(oh5`e ztY7b~5CQg(BizY@(Xi9g?qwJ0Dui7{9ew5wKqq#-Q*&Ec!3mfuZ!-)SZ+t~S(}PZ$ zB{$5<9v}zn4=S&o16lS+v0@1I4F~GC!JO6uUHSY*C!;;2a-kO*kyI#(RNLR8 z5%;L-r&MkkSpkY@J8d?YFn-~gdi}|-`zPyxRhehVBtAVjOS^G<9hW^$RzQinMM=rX zV>gm)=yGF>2({`K@dt+7YDS4u$p{3(R$vW*YeHMy1z= z=Z_IH26^U@qfeLSh4x$**g!GlYpuU^c~HOv(;PzHr<8g4bT5AOaC}*KIu5MV(la@_ zZ{NPrOXD_Ca;Be@5by?0ZMDfyER`?(lv!Wx2-=m}*3byjEY&(t9OX6@9L)K6{zZxR zs83+i6y@)Z6;R@Wd0){PH%`1AIltAFUCPgO@2_d~=UKbajMumK2219-G)8jQyRrDI ze{5PIHSlAi!}RY5xEf+E{wl$NRhiE@Ah?d}XL@nx&YnGsH(c7h*VQ!=0 z+;Q8HTy5)O185?|MJ^iKpPs>!n*yx{i@*pYnSD}9HzhBcC$(KN-K8uvT+cFs>c zrv;Kn9cR+GLK6zFdzoVrE+m?PlwJq}NvodrL^9s<>{*c^iUL>9S2SjeisOUo4kxse zWCqR{J}7z9==e8+TzwIUWX@lw?xLQGLY-pYf5h%AME-szLO14 zi?0EAVz2H4hLDYY8+M91KV0dK?Ufk%MEx|SnX#ww#p}^cV8?W ztFL(P0gV2omi3#9yZWiOkiqeX-lY>Sj)R|^D*^gik2|C`-^0E2GXVMq7~kjIBeyHl z$0;|x)cUXNteL?i%f#)S`xdMn^R$!jw`&CV>^TwRK#Z!r&AS`8KEU>)nV8LuA9hJ8 z{il#(tz)FNHPKk*zhb;1(b!bWy2E5ZCFHXcQVFm-4NjUzwy$(v8SuK`xyzt?MnScZ zv@2IRc|TD8$H4N1%FFmJa?<>MxwFp1@<06yyt5se(d|H>U&ihxy{w<0miBkSOITU* zbyyo$s;C?#F4nj_DNfNW=|aUK|AAUhsj;1e4dz?OvKa-^{`bCJh6NPh5`z{3>P3Z6 zSQTR9Am!WKGa_#13-W(VcA3xW0{-~t#X#y$s;a8uA-jg5pZf_{J|+NH8#X^q{9lyT z?ck}S;#1XPoBTGfYb}FVI~YPU(*rkyTvi^mH?Z!5vncRdAM`x3l?e=(p0Q3_wTEcA z1MxjGv?VxtvgO-nmb+ZV_pAFw9%Q_B@yf$}eAim!6fW7nf-QzO$ z!X`yx_r>=(f|S?&&M}$bVaxQD#pv)G(pA3W%sCt(Htbu`N9 zp@~Q~Dz)%!!TN*-QI#y$6?qkV3IQa=bLOb*Qu1^t=#(|;{|ADD*n?4eqN>SC2{~mR zm&_k!3`SS+nVvi)K-W$Yz1XeH*XlR~$sc_q>!K<&YJ zYya%k5wA{gocGiAn>?AM6ot*sa_g=Ck#mHgO5L8_Vq$cp;n?wEat~$+x~^6AqIEuS zm34YWQK8yONWQU&3y}<5yp^)E!@X0?zQ5*b%Dnh8`TMb8e=X_-zrE_wbNKZ;W!U71 z?6C2@Z~>=m)7h=c^Vl#4R|$Kh-NscdO74``%$~oy$e+rGE4>i4sQF}vgXW*n3&*e~ z9|rt@hXuBtuy?+FoYr(SIty$keqRBS{sg4Nks@=$%^t-jo zr`d-G<^VZ20Q!-OM>KnP%|kCd{)Sm!qcWm_!%y=_6ZkmVXRkC$JvIbpCj!pD1+9SC z0!4K4#slB{>IcdqR1p$V^i#GkHHraTStQF+-jw~O-N(xJ(UQoK3p)2dE*vP7%6D9Z zv}H|)~icI-{l5h?x)d92arj$yl%6EXjk%hOF)Y>qrVafC0nqe&O`^o1BDsw_*Y zW7xIJr4*#|$b@0q<{)&27Tt?qQQ7{1u?XB+VWZ5P?-Lkbv;1pne8hu3PsGxO8)VOM zNadu_m<-d>yEhbs)x7RzQQ9u)qv;vd$=o`BCuTkf9Z!-2nc}?yh(~%u<-b7_cTGeU zJbps5w-$q5N(w4^`puR}_lMe$3FRxf_(qv60d$YFH9p6$}*vEC4O zb5vaxuZY_B!{MZA>bhAc-huqBqtp;}){<`9pvk(~!k&`diS7R*FQv3Jm#i42x{D!L zOfc(A9!ZNi6OoB#TCg5k9*F!2`m7*P)d6dTdvV8CS)TA?UR677dJfXbisK>1x78lP;A>Agss!Mq*hb|IqX9(Bp0yaW9LAYa3Q`xM7a742>2 z6#eo{yu(EFSJ6*3W780{9OAwAN>sN?sQufn2(=V%H}RLigH<0{JL`1HS&L9MiE*x+ z+Zl3qdx;oikwqBrt+PuI0s6|)DkD7&XJJ{k zb?8ggZGpa>+eEsHN1c^qpnM18XHccAp8m@}AK zNKn^mD_r^VIz$BLQZj2E?W9Jn>Y8+)&KwAackLvuvR#;BxF<+-J!@fPW} z;t8&Jl54z|yB14Q6PU)`60_K?+3qA60q>f?>X@GV>?o{2i#}HXkP1uI$0pUjAWwPE z9`JsuUBwi@XEA)3qC1^e_y!OFWpXaHY0)z?LAd{ZB|YEC`HEi$TXjB*e*H;mCbGxq@gKvKCW2Gz)|3iH5TlhhLB%|A;=_ zceSgMc=1E6a32sRHm0XF_SP^NSmlZ3H@d*sl zq+BWbFTlq-yO)CsTLXE4b2=KIdg9n%(HmFEirS-zZo-3Mgmt58`+_ZO#>(w!c1^GC z1{N_%N+%owu=#p0^6ek34(+?GT_v>}PnspF&OX%%I!IT&7AC&$(=Gs@%mJ!un1FT!Mm$v>)acVb%fR%J93!TD_e5L z1S%D^|4sUQ4&x8914BqcI!;3~7?htj^$27Og8aVx*W8r=)IpEY(|oX^y#e)_?WD<` zpbN|0b;R!{tqJitVq0r(XGC{yXms&%p8{&scck;pf)YL$LM@zvZLAe%rdT8y`9bJQOA`CJU0EY;OyXDsd`Z^< zsl_7W=VHaa-e!<|;1$Ifr0G5W2og_#dr_u9n)kOZJ8y{!qP48mb0VkUo~5%7EK-iW z^1^I$)VX~);?8qh&eOyT6Wa6O$s8%<{(W-DBsW-)A^H(<40*{_Q!^NxGI)ch<$A+6 zcVB!V&BpFxZKmLHo5+S_o|lc2XP%8aubTyG0qwD<+yj^F>G2jze~%0=2 ztQE|v%$}d<0@YJAX-NOciiuNOzxv@s@!XENG{v}V0)^pR&akFn^7)o6CXhUOzd%vR z79qOf0``AVjsH~_t{vdM>{dK6-ak1JI-;{NAJ)t{!2JYY z;Y`mQCCQBqO-=dt2nij@0?2FWHa4V7)aBo_+(|RrG{-PCuZ-85Njk)=3kX_%bGekn zZB*XleTMj3A@;{VAb%7)?5bI-Cwol?`U2vg;+@`fuX_L50hO4R@}-Vzrsp7qgnlY) zXH0CPO)`#jyTVQ|fFJIuJePQ~*XRe!2l`-ZTRV+x)-)t*ouDSmiR)IHBMNr&<4NTC zhA4REprX|BhyIpnKj7zTZ&mL_gz8*v_{@f1d(nNjI$cY$%FZW1%Rm_ZRuev~bt#!h z2vB974QPgrDc}KXT)F^y$!*VN)blQ+ri4~HwV?8E4UW_}bhAL$a{lMF+*!27^=73 zm+DsZNXLfMh$msy%eiCtJ*THP=tJ@YrRJXX{Z|hAg@OJ>Vu=;O6JRzDxqpEH;;N&X3 ziBzxgog(fweN-ww$E2d_IDYR8ZLktAP&lE-%F%yx$d)sDtZk%D>%3Ykech%%dkk^dmA9Xskaj)4tFTAg6#48Iu$E>dc{F)0f zdBFsVL*=M)eCnRYM7e!e*DiaCWD&sh@~SzHtM#%ynG=s zUP)%c#b3ez86USKl*0%#7UBw&cu9R|LyEV4d@)e@nGQynG8ym@FVhKSEJNKO5mu3UGZ|Uv z;L9q1uzwlbzm~Z^2cU0FG{EE86a;X{t8fRDi^1pej zB&51lVe0_j*N^e@|0!zSEC`Cl`X z1pRg;SLt0V|IzdwyM1cFLtEai?$&U(!5X4Uz1mBQ(vg4$tZfn7rUgq%hEELmjK&|b z%QQqaJ8LDRPPE9jcWM$fEz%s`(W{ivb9;p7>By-9w^eeTfJ=igUDs-T+$Qs7a{38s z+CmyLi1V>mR-lVSi}EmmGT!|C>Y|?~-AYh3t-`^b471ezLAbIUzrT}(zHSbZS25|Z zOBy3oX8frpX~Pg}E)9*`nqESXH$P?8;J;Okz#_I^1Z1aeuFBl3-MaVYXe?g{{%Pgk5)*HP(UACz?QIJdZ5>C%C(!6& zNW1(Q7#X1P1|>Kqu0ow(d-<0)=-&*~z1y#7$=V zi@^%NQ^GjuIyA9!_&vIxJptrU(~Ddvskc!MDSw-kn>oH;PMt}>{->ZE4Lf6?^@vDA zKlg&VBo`94r=vS*Fj(}enF>i$k!+sFM6cF-RWW#6{^2owpqVbE!0uks`Qy|W)tunZ z_Uhjmf$zW7D?L5UOtt>EQ3g;-p+>X;3F;{zK7-KUOd`vdhXq`dj_xU>vwft2?zq-alWlG>jI z{=g!D)_W^%?ZqfVnc{VE`V+H?t!#9_@HwtB;w|I*DVnd1WMR|Wh*7l_nq*qBo$qKtMpAa-r{PsX14yc&PLZ$Ah;k_>&WCzXb zHbu2NjkI5yg+zA_53^Y%;tt}NA!`PWpzuA)>Ar@EIY{zSUd@IbxTy!FIju9q2Gd}E zc&FBR`eAG_)>mDNrJ5q(wVKEyBsM)J`nRec@n?z-gCTrd^S2=i!lT;LmWp#Y{RX%E z%kt!Rc>jq6)Bi<;au>Ay^33yR_Bidl5Wn!a3NV`4NBHU$0dfiLterMF-R0Jcx6}10 ziwq1mL_y*m%)N&T8RlO1%=M=9I~|Xe|Al8*X5)M0>CM3xLD)NinuWyrgcf$L^y8yh z=2ko6P&DQ!&T$*6d63UJXHd)K_STPk-@1|7VpYn#rY)ji=a?9Mz$JYTT6c46DDzNlfH4A@-dO%v_x9vrF5t5;kN>4LMj%l9h5D3SX1Okz36B6>=Q*k|NbqO zkh8zt!E7y?-&(K%RA6z8p^cm#)?|p_d2i@EyGtGTFYv=pdMU<-|hA!oY48R$6|oV>Z|@u}Lp zhC;^GZKs1+@?Ez6pt77ZDRURkvp4O0Jk4&&lL6U5FU9JiWYeh*DHY+MkM4i5#7P0C zTXNU%e52OHDDPsmfPL&s-*0F`dLFuf@h{G0xB8z*7czYhbGh<}k`Pc$BgL+wH@UoB zI*8ZKA!o+wN<3bS&CPu z-6sF_|9!%9A-IynCrO+=dT|&^kfgCRXu2 zoko}>W$@G4ByH!PD+@wGH&`ongwj0&4I+~)X3{GL0HK59-1pM{}K z{+n?2XyQHblVQ!p6HNY7!i~mc$wK|}MITN8w5|;JOa)ZIp;KTz0wu*Nk=_w8s$n@A zJG%;fy-C!$59!QHP#2N|s=Sh!Cp>#1YzyuAyt}s96)CvHSf+Ugo8tGkD1?^+ zaq|O}G(T_KV!hFnmbNdAJDR#@^GCIa)f>Y3QJ0Im@buI*<~$#>3341Mu_hbsQQl!< zBXOVN2X>(|0U&whpE!B9R5NEv>fJ3LJg&YRpy5S&YY%Umov7g0zEBC<8$-h}dYBS- zg4RS?1WXTq9HL%Gu6VOJx5||)U>%W&G>lV1E7`!0iN7t=$d3SSSIBX(#6LM@8v6Cw ze~C~lez@;02Y1Z44dGwQyokFn0x0`jTx>GM1sA9#eipeYxgO)8tA{%uBBt?l;B<{_+nU2H&@50P3Jlo(Uc$kiX@1e2DTmK| zP=^0iJ8gbWidwQhUpbi(0=phi*{P|IKVyDb$}9}C#h!5gq~Y$B4;*NZP!ASLjtOH; z*!vHk7sD<9K&o!*xbNWjiN<>UaQpQBSC+duUrXC)V;xF6VO))Mfa2Uf&sBPt( zaM45~HB!kn-ccPj8~C~Z5omP!L5rJo+>f*6yW|hVF1HtQ)l&kO8-Q-)kNKWJ0kSPT*e2ldo?8cvC+Q0N!~DFLddAT42wmd z-n+%2Zd*-k_;q`}(=KNSM7zN_WT))NVEm|ajBOX;f#zhTq*dyKXVr}Q6F(P4MvgV$ zCV4SGmnf#Mu50yb-Ldg~h)t}l2iH{Gx&w$6<>1LOtaP1sDomPP`3LCFZV4NR#Kn3G zV-3jSUwkCs!^P6uP{dhi*?d{1@Z4OlUygk*%LW+>zfK=_2&%e=$I@R3My*_1&_-56 z0~PB-YbVi_`iIC*qnzl4KzDG+qPjkFi@x1LVRX~44?F#sfIt+KSzQY?3Ht}_`O$yr z4%fyN44$3!Y_dU>=Vcvu4fHFvh1kD!(edqQFR1iHcIFvyjR2tp!G^wn1n5_KW-nSk zu|Rz0|9R&E<#)EdcEFz~mM8cM319-p3YmwRpIHJwoBJ2SM13!i5l`7=@lp;*I$dHb zljI4Jy6tHWu3hS}D5Tvf1S?C(+@ zht6~n0if);FsrgZ^rg(im+veC@jiXdp}avpR&(-jLt~Zv-Ir6F9$N<8e1>@&;GeQo z;I@jd_3ynNfDImq&_VMz{~vAF9oJOWw0BuuyVy~r*-!*Q6hS(60V#s?s#!!zs0IiS z*sKK$#X?b9EEH*pNGCvW6`~+SX+c6;F=Qcx2mwL}A>Ro$s*C!5|M9ydH}{^IdCrt) z=1h2qnJ{QJQyRCPN)Ru2t>wORD(=0udeP|}oo$|H_bAHa&10IzLWSw8$T^<@o}%IsleB@5regECF61T&HtO?|hf+k231v~!9i`Xu_T$w%S{RpC44uFH z548DVoeSnBFJUKjT&%3Gf0G`>w@=A)3NUH3oAdRJoW~-pVnUg{EY*M_9PT-1bf5|D zQWCY_t9vh$0ZFC~?k_2@SM47e&rD6Tf73#ZYZ2v*Zey=ZDr`nZgSka~a3R$|X>l@& zdCvC-so2wgBGo2CEm>Am=5k zaL50ZC(N`h*O$V(4=%(FEvCxGwq#`J( zL_~&wN;i~0I|I~xb_ ze(aK?*!^R}QRtg!_Y-)aIvN=oUGeU|qVc^nhT2zXx_3TKKE$g04rRc|Q6U2|Vbeu2 zfCu}*3BN6gxxjO8sxVQ4xr!Ibu=+ZRUrNv@H5k? z#Q|9IBEYY-QB~&_k~awgHp!Azcd#;*>M}w1{o7QDUI%IwPJxFF=1Ux|l}i$UXw{me zv}A`OCcJ=)o|szTjrapsWJ4XKww9@CF@H^b`>IS&3+B|{-zSu+UhH}|jlBoIpWqR@ zy_J+ua;wtPrhi5cUVqi`KK%N&SCAwLT;0)D;@abc=I4#)MXu|yY)r~u&G?;JR(fu` zhLm3WY4{=eGZS9tdu{MT4zP}l_z%7<8SiW+=abNn_X<}wZzAQoROfK2gefBZ9e#1R zHh0~=*tag!rGP+ye=S$_!o5OKLH^b!%v1waPYl@2lfycMe!Jp%m6&5aZ=t^xvJ0Ub zey8=f$X-`%S_%5W-PK}`&m#?j&k8D3LX;dz#u;Q^)d`8&zJk88pM8<}+}a5uo#+?t zbVaY@Xf33?50CrzLp)25o%O}xov?zSODJLgxnPA(LQ>)=J0^1j;;>j*OGlOp+*ySj znBe+joq^w$MgA^i5J@of%?|?H$91Eu0K0ULxE}u1VByBf&~4F4X0VSrrtHVp7VLzcP7t!%@W1S;(>^cj23iuY(0>e2r+z0ge-32CDWD1Vr* z6beM}pw{W_5+SXqc?)CB?w!ZoX>%eoBU$$+LesLnA=}HG;=b-3U(`tLkXS3G?zyWY z-Kq1;;i!1hK&x}Fk2@NELc7RUSBtmLeEIChKak{w3G3~HIb_+2a9r%&^x z5z(YWZJZc~me$M%I}TRjxsSex!Zq24%;#4eN#VWEv?3E5jZ&1MWD=1U?$oq>{N?VUC(@HNu}Ci6WnE zIVL{K96r+?&BsqvxdWLwo}9xC#^3w_h~Ksxjt{*{g(*bVZ~f#kK?YY?*Fut>W9K&w z4RVy~G#CD(-)Cyv*7g`QGGtmwtR$cs+fpbxDKa0A!m&-^W5HebtjNPly1B&n|Sc1B@6OcBr)%O-wG7QWl5z4r*;l zEx=3WD2JPn>}l(@`w9->)s5HTqt5)<7m(*AgdZ{bT66j$zV`Te2C*__H3qTLsx;f@r;FG$wG_CkhX}QhPC75k z=g_3$B(J*kne*Mhs7o%c2o;el!2wGcbCKty(otTBB+mzRxen3Yo}K^xV)XHL0_(1{ zx%RO?#M|)PNzkh07yqDO*Wr5uu2A19^TOmEITkO%m+^4JbzTkUy!GzlyijKSxQkTX z96-8^#kJmz!TL``_~wTiMaOs@rLEM&^%lVy{@q6J>tl%L>QIi2i8N$ag>C=H_Ey`>Yc+8wxsof>R?sKdGt6Xc7XRah$=V%O z^hBq8xf?YwzZ9!fUP1wxxG22j5Xp<{w-1NWVMtC&Dvd8o`$N92lD$w+m+I*cA8wXw zRq)!Qnb2|KiF&pL$zJ034g9h1+8kE&-M!SLX1MWl(tM&C=54<5&R61W)VnhhT;p;F zp}b8u@CQ4xPIR#nRk-p;9e-+5o%ll&#OM!024R-lj!n4q{r(d&1wa(U_!C44YiC1w zyZ64O&rDS>f(9RW`C&j2C?-Qv9q-k|Yb-on&(!mS*T(sbfn<1e{IOc!kBzsW^Ibk> zOtos=+oX?~@Q~aWn(GGuh0LkbhZBL*B4&Y_+{TYv_Pz5mci$~_5J_CG@kvAzx6nv2 zx2t}nF4e)kz$g7@qxx3Bfo zg^zJ0@62%=^>-~JQ|yBq|LxriCYtqkFFtUV(g9s4T}AcmnC`{h>Cs75SuWBoays>Q zE}wpsYQl@+6s#pmaGSD?=zZfn7zc%iqp{~m90sJ*4$0{cUM^zEsuy%h&EsSyERp@r09)5OwW@YU z;EH?4c}(29o3hJUt@)5{$k-K`Z78@5cX*gn_2He5!P3pX{++|EOLc#rD70}euypgh z{yXNuw-YIx{?Q{Ro{M2N-@uDOocEMDFh;yh^`mv_=;@5z3^$ zW%#AZ0T=cYp>l%aSsoK>K_x>=;-edMw3&mV8(QRCb`wpYLi<7xXcUAc!|=DV4;@6I z0)?HDruP80FIn_HGj%xF)>nErfqPIW$@j2Wm|3~cxoer7tYd}xQ;y60pNIpAUEz~| z-R#ciq|O(Y;k*85zs`#r%rRK^A-M0WSk136BsmU43$FTy1|`+XRo#D=nVyTwd>XNO zoM|bn;;0e`_)29N0z7q;;t>R*_BQSf%jUrl)lc$CB>L?;X5iRPD@=G38Om#91_i_d zzq{u#8!3Cd!xV^KnhXWwDcaMXuMzxf?5YJj%8bH9?Mlk!T$D}rhS|TWzsicb(pL@( zT7O8ftn2mqkCoO*hTsppVC8G>DQl<|40ZcILVd6E!BuvbZ?E+C0k+vSigV2vT)kGEM}JY6pbjo%j&3Uji~;nWZ0TvXDjJ+;hpy(6c4 zBu(+0KjGlHv~eOh;8vnZqpHpyVJUS(m=aH=^|!B3cft(9*`Q@H^>@GlPfLy0k|CNH z2Cewp+PJIm-jKNyW}Jnee-b$wzj>Lvuj|ReC{XjEO;0gURy4W<_BOmUY?d!~((Zd} z(DP0RuikJ>keKP4{QP8%l3VxQT%FA5{RG1iEkxs_$YUI5Vr|6249oVP^ljKpQ0JZ; z%s+)xK?`&sB$Dn@WMD4k6MM*}EbeEYYr1>+A6Jl0i&ZQcwxLJ9%M_-4_^}i(kXtYc z7y~8>7f(B{KDfSCR(2`I&TsyuxFXcSzB@+BBlks`F{c!l179jK8q;v)2109c>au(j%}}bG1P{>k>SMl5AcLC zl%^FAkQOViWCpJxydbJEiTiCJn}f=&t_h2#2BM#+ob`M}Fc4zf#j~B*Zy;C>{E?*H z1YG-s>7r|1K=$=*C|hFzY{O?^6&+MMc6WrIQP~~n1$smuO2jPwU#o$lp=fHVqslK=cS$7?aLHV-RJucOdS63XY{Hi z37=;Hj2nWKzF64WviuWcqi3u^i@}Ee`Jg?_!oO8AY*VM5!2WFMpL6i1JnZK^UTn3` zi<(=r{BxSd&t`EhM|t>^`3avkwH3cSUz=^zks7BB4K!L%+@~cYj-fog{|{&u7bOHW zKY}tjlenLhD+rHxb{|5~H%D0w}e=Y3P z&kiDRyA6CK<1i{{)HDS+6a{)x-~fkYSblexv}k&&$d8&o8?T27l3AvV^D17oayV`% zN+HuqN&QUBK&nGbH}5D9Ks!C5?%6R~Ywz%62Z9(m!8`KJgo3jT7}Uy{y(6%7TO!vp zH8W8l!Mpty=2+wz3ZzW)fqYVYsG`HzS!Or{=U{oW4^Zr>A3%utCh@^WqshhtgsA{R zv$O9QH{s6PWUyDC3O-L>@?N%Zc&XV~v#Iq^*KhlNnQC#Lm3Yp2I_)=s;_u(_!R_&> zpN&P3%4aSM%?b(b3OcuMjn5|Gb*N8$ z_uX4obZANBp2F&?3e=($4;y)bM(IY=`d`oPEQ4K<p|#ZEB0tAvVO&G!EpzYP0QYec^4^gbRm+)dA|@?}XilGVy!8rG>jKz?3i>!+QfQ zD-Sk4TYovP?NFkZUq}xC7ci2C1v3&H8W>4+h(0CfqD?D5xM+q2P}sSm!yJ&W6$zM8crPqO~Hlc;;fzLIzA4Mt^hF~Wu^HXqZ4Uu9Mbs%Nqh>%Ct< zHb`)(6?fo(+i~xV<<2mN#8HEdQ$Iab)Uz(fba!;C1nTIyZ#2frT zqO4)r>BhuE3n8r%SL?>Y<-2>A)Co3};NgLuUHkt^atPoGtGk{N?HauTtw~FQraEc= zSxQ;>9`&okyskFSCeh1LbY!;ZguZ9}!m|z}j?=wS!R=KUpV|+^9XWz|Fd`MH3VGkmghA?s#!e% zV6r{|Ow$-c9&+r`VQAo`q$gts?lpV>Q^8JVH4?qpjB~1M0mw<~j|eT@)U)rEx|87n zFw!dvG*Xq;%+n%DK-nHG(Vc+7sulWW3eVKXMDj0rzTWcMGf>us1=i+-7FQYe5ZTK|TDeKnW&nIEM0$I-C#-TX6_k3rYyJM)+Kb8b4QxVyXy8hJso+&pCZk;i2T;mBeB z)hDT;rVsVpfLsH)Lh$P(_#};13K?Ov*B*C|TTgw7x}eR{j*D{tRLh$x-)T=V{kgtz zrIfZ%rMX%^_~JJ{GpB!nxJ*vR0+w$|pXkbHAFr!csB&H8S@?WCgGK4`Ne4tjrT1rR z!v>?1Ue>@U&5auGv=^TsV6W`v6m7U1MYu2Y=o2HT^cGO@T~I7nH98QVR4|cRJ^6{= z^U21q=YrXp`K`Aa?6jz|aJGX|PE4mBGdZ&wu#R!hoAkOFcJZ#nm0GK9=YbBrfiHHDjYR5J#_w`2%$7_o``gP=Fd0j=IeoA z)_b)!iTUaYH6Xa^^6B-pAB*!kb=5d8-5gHK4t(olF#6FIm%W;TZ5fkV`_kf(MwcZR z%}^!IWyUZ5+|(B-u0NvYN{VtymWxVqFz{%OYzn#biQ+YR)mP--(g-$6@*(@SSam%j zKRZFZTajbj;X|p=dl^PG?&Il!L{;7Arq9pDz6UvAd9EmrfZC|TGBeWTgE((jwU3I& zXv^+A{6AUMDNhM}b-a5);7JRMa&x+(K`>DTzD=LdH;Y|w&?wRMwj5#{r%Zu4sT#@(=-;ebl+dO(nxjf zOI?PewBYL}_6X!%WP`*KrIy_8r;CS{EIfZB8@pZgU&m!eT8>AH2~V0Hyn424kLunn zd!KCy`1RyJV@%xL7|!NBo10%f`TlcW!MlU;cbl>w>dM7b#hfSPt;aH|)azPqk_cmmc{mX8OCrb^*HkOPEgU>t@7)f1J*9om;rOA0mbmlvD za`-E1?De(y@0ud!LhGSK;FP#`Sz%sHEW$RjXGZj=^qz^No4re3E?naigd5V zpcM%&v^9+Le%LG5Jnd&>Jo}DQ>Vv${m$K*QvmK8)Kn9eMS79bl_l5WG5^SWd!>sa} zL;EU+_V~O!8r*j)m=Hu7^2Ew$i&(VT4W1wmn=;Z=+OC(SX=72{%8GDLhgPFijtDb^ zS|!l}jWw1QWq=8W$dpCtemH6M1-16>v|P0FE|cId<~`|;UK6p9uE>tUthb|D%TlXi z>UWwdBw1Dpua?B8$yC_HQ7o!-JpH@km!g}P^@U*A(nQA|sk8V!EQQr1Z*ze%EKW#7 zcP)9}7pHRe7XFNf|A=bcZ&UoOZ-LIFr~0TMlcY1j0>Z5Y5F)(Q(e8-_5vBt#@~4IO#a*b|#5Zq9 z_nv=XWt^%8XF>J$%X|?0{o0~dM6)rzhM4nD2cB8w-Np&({O6e{ zDp|#MV3(;s?Z!H|JiSjKzV;G*Tb@yu06k|%%oI~H%I zb@=jijZJR)&ZL?K;GnG%O3kI`0ZZSI*5142FR=X4E&0Nu7M=4CNIlC z6Lt<-6hgHy8GGX6CCxA(74~KYZooj3`}sviAA9}#w<)biV4WL}#FV$=ac@?tKfg7T zm4)uvC2vwc%SziyxOw!SEr{!EuYkXhqj=ZD3o=>M@~Wtig2WJh(N+akyl!8Mw~g+= zzi&D^^|(xRsECTMn~49|C{<;CT{3 zR-qk%=k$$U?{~th`TMkucHu^%C_(Xn9vr!Oa!yBitG+co36{+g%nqjOd&9_=`N*b6 z&F$~tH&+ZV)4RX_%a8p}|7dhVUMTJ@uAYo!Kk^f{XTS>U6jDge@`RXT{CaHb7_`@t zVhON0iCWmHWapYC(+$`+r8@H}m=sGrQUIKwo4MkkTDE_BgoQ}NO`V!w9*Suz zkA2^$gwO5kz}pzHeOlV7#5SqxYKV~mfA-7Ugs{rrtl5EISL6G<==aQESG#BXW}?Ua$cs-=@SZEBPeTU|DNK5tDW936%XM$X!uz|1 zx?^O$bQa!MRD@@pFqK+IA$6I;Eu^gXSuquJebZlID~6J~3n~=Jz_YV8x;GT?HkZSE zJz!nnn-*bF#p?r``K6k18iKXz%Ix#4H{_0OfLO}!tU`9eE7?M9?uUOkPjm#JDqwXV zJS&D^Yyv$?xFds6ZacZ}U)FX$y|AE)Kj6cKv+^;4is!CRy1)G98<@R@c3pz!YpJdZ zHOC{ILo^gcZZ=4F4qmhKcM?q7^#1@8U^#91=Pw_6Oep;MvOMzT;^&P7QjYFGkaUG;w_aH4*KQLNhYXab+1VJ1l5~S*s{l3Mxro` zk36hl-f@SxFR~AD{>>cDq?;s`IV$7swa5!8a;KDk9&dNsA=hKU$m!r>Q)0cx|nsw(RiC$W0#=&|Yzsm4*0n8UeN_beGP=u7=0t$Rvnh}R|9)jKdZYfb-jqF}SU z#s8n&Faf>=-tMa?lU%~tU+){@DLpm+OwaE+VX{MKtV}95l>1&9Pjm;(>tqN3mf!1# zE1C{`L(jp|zjba+@Qc=#ri9iOxkCe3Pf7xYKa4#IXLRVH)Py6vBN8$_6^|XWS(d6} zM;fZM)Q^@Fv}n7xXVT*~-`9ZCBGJ@-rS?4mK~?Uly99P%V6`x}0^=ttx#X7DD*rzV zsR8)H3y4z5lSDd41)k#0z!pz=8=X$Z3E;sIT= z-lrEtmxmJhvfdW0TQ_^lUQfD4w4nsWsDgE?DRxk2Q@jdXDfOBw4xz9UTZOA)$uSiYTNvaYSLC%CaW928gS`)we zlUSK2U;Cazdj~CwAR+lVV4Yx6Mg%L6MN+!#vRa{BAv$ zGz#Put!{@?dn+J*$osdW7KanV$c3*?Jy!8@II`;NC%=5 z0_fntp7KVJ6WC?Hp1Sr4&;sNl5VI~fC*`6bU8;|VtP9L-)dJtVI?Jg4V9Oo$d6VX9 z)dHbzjGcI=Nhk+i(H6{u5mj@k;Z)MLS5|>-MuE#vAHLA}@^*4%d{wfBQDMsEgNk|7nGh!mD=R*vUDSWM6WB<8qjpiHn#%nsI^{zv-eK zl$>ezdOFGT>$kt$=12apy}-9%W4gA{1X=%>;F_NRrEOn2i_$`42F6VMP?kDsityUH zZqur?VidYFfwSV^E|n`G8Ls+nI_+S^rPg60k5#H|3-i~eNrsX0k9}UD>92;Q3HS_u zaAy$4y3{wey!NKIhExbE)d(H+{vU&u`b zp8(ZJ%;vYGoG|jBW2mbWHfOR+I#I75U+3d8ae-|K*dLtq{qZF}n6>}%b0kfkR}O|S zKos_C24@OT3(c!{H%N~2idU~%c%PP&JJi~!Jxr?xYG&@UBCR-V`7QAk3pWKjk{tuJ z2_EeC@2eh-7~Jj8a&T5YY9#%QW3AeC=Z%dLxDVjK*X+0Cd7XJE{`Be=@^E)YcWhmE zUlFdWATgIl*wx8MR}&GHi7tCrzbBR*QJL&TZrt;7qS`8~d*M`96P?vxxC!s-&$qTG z9GsV;O>`s=LPF`M>|wK??6lh*NempKZ*Tpr>SsEPV%F|&bcQ+3zDv(d@gFPm$$DL= zem=u~<_PvPXa%#hUzPFxy-pU|((LVp1?p1Xu0>Y4|2(KD&)yXwYSDIt5?zy7b|%vs z5nsc2m@%v6A!YgW;#HtE#a`?ol6MtwU85K9i_|SQfj}s)%B!D7cm~(6Zry!{6eH>h zW3aA+kcwgzHsN-bn{VI@lXGgx%wZv1LjE&9@f%=tZ&S^Rzn?G_OO`f%2KTwW_qR}R zN}PD&M7!-7TK$ZN9Z$5V|GH%qh^Cf#ocWJ9AffH|vstXdLw;*Tos8N3sRu$bFvean zXMm5o&kj`?5P>NhP?8FR8j5CLniVx4Ykyp9&N20oH^s2DSoOk3D{~57UGG75QCumZFaKJUpJL6|EaJjBMFZDNff4;Sxyb@k^%p;=Za zPs+`$axm>@COPngUb=%9Xj#tyA{n{4P~7uF3+rQHc4;pyRsq+v&PkJH_IPB&Ywc`L zX?^%14rPdt9tjJN3lnDVqQFF=sX|q{Kp? z($O0rJ!OUH$i2aXi^tDmxH#|Nxdq^q%>b#3yI-V4Y}`sad2e7x9)1;AD&G_`MUTcv zjdD(YoBbwK6`CG({IxBx!0diBEl!rA#i&p|q-LqcEDL}yKrAus+_ZtD)9w{KI1s56Sz zNh5{aebWC)LfwA&5EK2R`iXEF{Wo&vN~>E3XBB=U94Qy*QLh;8VO4QN!z6?Gps+tP z69xilHG#J;I!Jl0G4_ObXo7Ua7lrAG(y%6lVnUI%RDV`Q*58}h;DbZ=N(-l6kHuX@zAs%FeA5J0Mi`{)_3e_g$>5q{T&^0idi^9 zT(gpwJ}>44Jk>3^9MgrTZx~7{9A72owt$c9l-Vre*&VKq!u^{ViQ?uB!qsx)@?c}u zLEiq9fB#K8sS5C4Zl~U=S)a#NU_RJ`;d%X#CRWiHnV}Tzv7Gi~EXv7Mx>DG4l!zO1 zInfm1(OQDQzS1L+1JvAnd>V`VSx+>>zMfu=-ExEY2brG1!n%agb@c}SSj`8|u(39Y zA=Y*di&x)YKI^73NeRBk!}w%X;0Q_~%i=3DlU8O%^65)~Nv_8E`uPZrLU--WGK~lfsQ2SGUzXjT9{Rp2Zn`5fKObo%lAO-J_((1(t@Ea-u z9veMH$;}lfq@0ZS3_!RYdfQGqh#?^g9V?TwN!ZV`+Wv*1l-yr zzQen5O>*>~Jdh!7htr^;diRz@|D^8C4nmFEpj6b8qdU9l&OvI*yFkqIugwhZig0!= zl%2WaZ?R-!mm8qwT3Wm$0ac%srC00~-iGY=Ml})OnAeBBDoU*C-e=NJL#Wt)Exi%x z&YlITF;&O*kwNTPDGBhU#dmGv?2K7wWU2qy15N6m6|CDNmj=DS5$3VDcQjJo!+!Lw zfeWIe?JArPA0BHm&ucsV+CKy@RsVw88&|$)lVzBv7mcal6+Bi&^aN{IUx*-fcMh5< zmh2U-Upc#OgQCLd823ZICR3+HjZ<%&rB54jPduB$vVVDp zsed4gSMjnc3jeL}8n%@A70kap{7&Ev$G{RsMVI*1mpmN2<>ham-eH=YIoR?$^-Q1R zsT_NI)KRkL#AykW->o^X)LCBL^an=a4|6yK`|v*1Ki=4V zLkx=+6^-Hp?H^`vDsiKgofz&2M!`J!N6%Xuw_^FlLe7wf+24r3XLT{YpwgXCUbZlE zmc+~CT2t?Fus<@Z!-qswhEL1ncE!~*D`10|0Gwr1o@8H>caM2nFT?YX!JL!1iT>6m zHYPa%S7uKz%Wu2UDb-(8W<-$);83|LsTgNmsq;GeU`iCBAZT&3R z-jnw%AKq&CjXX%V8x@J6)LDq@qYr4c`7uTk_LSJ^GziUZ6rXpN$woT+^G<;q6&$M-Y$*=+y{H8=hyiSy@l1y>U^np1r4G`P6yGmExo=phjhYZmsnBtgiFi;tJ@D)H5(RY3h%{p9Y`?9aZ4g}@Ht zyu?987F&A*Zt&>-r+>_=$kB3$Gq%>Y1pUh!mi;_iYc_E;3L-CLI9$CvX8}%^8&Y^J zZ&Q$(!=?Z-@Wm@Yg}XQa-OF5V{lt*{svzM-oQQR?wW)W1J)s5$=h2!19Q)2M^Ey9Z zgn3K$zE(pM$2@FZG`meGZ~yS&pAPXB^|k;HCypdVT3YEP*b$BdDFjHx$+QFxWuc%& zE^9yg`?oX-s?{=FUpjSH?w8;*vxRZ=tba2u_e6gq_dNZrzw=7Ws{M_pj&#rNY5cbU zu;M&t$Y2i65Kq{>nqmmuxHv?2T=D1_3dba>b@*QLa<(7b8(_tJLMZGYt*5KwP?)zh zRIo$XG&P^{${~=Qo-yOK7j2v6VUWeEeb_@#M$g+UaaEUYFJE7!)YME*HBd5v)zEK` z{Tnv+NE0R^A`&m4Nqa$pP;Y!X1GFbnBe3|WbAJ<7*h>fi*zD{Z9S%8R#t}_0d-~ zsp{!bZ<~@GB?XPqFSXhhRpz`RXJ(vBKRSz)zh`--FWAQ`!x^Q&&eT^oSJ^#Y#!I=M zohju$ZN~*$WogD@P{gz5q_K-HMD^6E(PbpwxovvvyUR?d8;TAfbPG#)l{c8IDRA3s z#T5}o)K^O22obcxm()kze6xpK#fw$^hSD{e^(5eHnjEUp<`ffXocRk zGmN(OTJ`7M_$RP=7ESIcE`8d%OUc<^zb}DsM-}Wg-~@65LW9Oa%oXM3-3o~ zp`G`ceI63|_z+*0-|KGg`){2CXd+2;>l~-L`o%Qlw0}%3@VrG9WP}31zMwcI#6P~W8yn(@QKkTfN6dNe zPmxV@>qy7|c0O4!Sk_5-eJ@JGntHP#Fx<)A!=HP2;La?IHPz_;b9JWQr?iZ3fq$4+&`>6- zjnJ`{S0{bt>F-~(-Yt9x(!KuF?255;-g18a1)12z!Et&UNaX46CG}!or66R`akw4}nonp*h784((Q&4)yQZ^>A`=Zv z!ok{C)pBs3mqX%gq@mLIMdO)aCRlNCf>i?Td}Ww}A1qG)TFZMcAD{iHJ}$L(F9F_{ zNZG-Qo-(teaWVynOtfG{u)h?Rm${PKp1T}$2qS(QEqMO(jJA`FqJ3gEYQMPz*? z7TTibJGO;Y(i`AKrw7?grK~4Cg|SxGFdHwJ(I5*??>p5ZYGIS};e{t*4o%3si z4n-U0Yu&A^rjPf0oG=t47$y^9JVI6Q$!{eyN_K(T`6h(S6SaSG!|T7+cW22i@odQu z323TBKsz5us^6h!OC5(QO(unaQ^UC;F6{ff?R{H|C%QwuN7~!1tGg3sd&}v2%H%6O z7kMtJsBAf-5ip!OvGg$rqpt(=yP~LC5xq`%1fE zpdx_t;u=`xWZtD3@6ScotEDTqHI6hypv;Tpe>bKcqK!O`j4E&B@mmiiB1(Es3`X=> z|2kWwXZsh=>E*E^Dx+iwqP6PD$;nlXeZ!VJA~tyX4gA}8CtDK5eWGPTY)%@L!#`0X z>_Oqqx$ME5H&YhkNdZ~4@I8}0FlHTamOOm6`az`C$`_s-@@QbUMJQcMeUL{!_%G$R z4dfYGXAz^Tk1*CFGbC`3;BCO;?echF4MV$%duu=LN=~bVXT*wc{RSx9>~BnK?f$`B z3vv-~7nYfe&Mgb_>0R5G&(qay1rQg?P7h@+y_L6h_mEOr4=GZPV;tlDcGz<0QSoxe zWy$~s|0cuejg-^+vzA5jw;-QAdnVrE+A#!DeJATX`&gB?DrJW&Jrv+7d4znfxKTYA z_J@?=V7LLPyb2)j;(Z?nnPi0OOG8Wz{}Nb*;t@^IC17>Vac} zXm2y_!lmB=5(8h+W**_Z-E~XB0M+Oa2hbX;d!Z$z2C>CzmpHTF$`V8 zx*7mitMfr-Qd48y9bdYVy)zC!WbcgdZXu+_%Y$4({?qJDun?BF%DA%e;lo zTJ4~+Y{$Tj$#4@`A8ZKKX`_Hx&ZC(7)vNmsNu8O<<#iue|W9I#5J3BZ|O2pWYvX|WJCBN?dgmeFg0{r}RNezZm;wg^~<*qlT5 zkA~WKMWgU{i{j-mRh>k%a=p>UjaaWs7S?XgHYOoNnA3Qg(91v5bZLCs6IWKDx)nXD zkK__H@-gi)4No*Ac%Iv6Yao{yO>f0-!2mtGPhK?9Nb9kp7WPnt zRmS}^r(1@c98W+ui;j8qTYdE|&|nIFJQ+4l9VE^{On$eg*hWhe%V4vRc0hG?G zbE4w{*uon1mK2X682SBj3AGdWjE$d8*C6zEjA;CL^?82#y_6 zdK95Lj&9Trahl*MsadqzPli{&@Vqd(|Mx#&!hMB%@??`#bE{RHab?8%yDNUBB zFf^K@^c)DlEec?qB+j1F#(L3*b-wNi#c7QBS5i9|6iBFRAb<9M_-EKnAFwz!7W-yp zF>f0|CYFkF`?$Hy(h9959QBw$wksDy=i+XTaUIM$8^uABUmGi~t>C0#EkU!8@G+!& zSh(i9(G1zOQ0PQ*iusR?g?gOELqYWP5^R&Gfg@>5)MW9drM{=e`Aw5oSz*Nvj4E*U zjN)U99Ha%Q+K>wnYI?|)P=^b#GJKF_c(v^g&0Z(sx?sDLsx66knq`Wg%r-W*VF}1G zw>|}kmPQ@)y>u;3CDQ6*ud`>*FzZaFX=q#W9=o<0rRSN0&1U%6E59J)1YXeN;Jy2~ z0mnn>Dt|7w*1R_wtA#oZUxwI#Gq^NIVp;wv&?w=4y86uVndt5FL86i{>OHF4jDvVa>G~{v_5$3>P?)#bw%TE$bqcey$se8 zby2?${?yH%vE@G&@$<{D0nr#|Mf{;bjHLmK6V(6B^t~=SbZ}z(=j_?a&k||8qfscX zuE_GB#Y;-#RccKsg-#=}f%W)I$gg(F(n|Qo5$RM2Dl`HOXZQ5f?)ZyGhV>}gzILaL zX#Dk)!M8p?{-n(o&@CKdhjYuXnc$O&o6zVE>nQJyG$9LnL6m3=7R`AF+S)9{2(^jU z3CxU9~32!3%bmH}_Cf)M$15a~$n@`yG_%?w46PB--6VjzK zW58u`0xIl0ieMv`_10fOImKjdH~JcTH$spXRC}@L@6I{!L@mAz7{xhywXnZ;H}B^{{WADB4Gh)lj&owCXvUoc4S0){`k}Yn)BF zD`S*5g<;C$PLl*!KwD29ANXvh&%VOH%g*$1xb<(i>KexcB9Ghh1MkeRFnJ#Z2!-D_ z{rb!gJ^QaT@*^*B{!Oy}?huvt*uBTV{_gf}hH@5%|F@j+Y<|;2UdzK@Qy&W{xi}#+ zsJ<^KX7rziQzlT$;cHce!~vr)SjYwvA#*T8nIK;l7Fr@Gm)v6`LN9#jbk1$ILT=+u zq{q_yX5EfXc$|;9Xo-u}d#JZ~-ak(m;T5wkZ!q0ROgUl+ewdMj|1^(Qy_)52KUP!jdP!uxqBuNj+zk;1Ew zLpE>U&dI!8SLRWq7_ygGZs@os4N{W>5^WK>0)tMZ^7slb3N15mfC)Ivoe%nQp;YP- z!ga`0(T)Rjqc>76DFzS2hpyh9)f7E|eQYU=D!J~d1lY5A+iy@(YBtoUKmuGPI`X`| z_UY+}1zIP1B@-^F1X-0QH*BZPEi>HS&9jR%fsvBKBe+$dPHL5wesJE9j%}t-eF7UW zBMT~&7zocAoA2Ggow21)a~1U2Gs5uf#`Mv4A)w5dnj%|nS43?f*L76>#hZsRrw(nC zRXgyO6|~Bont{9JL;eYeG^dapg8!Xm4yn3%n$w6;ddAI^xhL7Qw; zw~!&dQN1vZDo9Gc-qbluuYPlgh9E_cDL00~!=3EW8SHd&1Y==Nhe=3CoXvW5n>YJF zgBL=5K|kEeNjhpI3St6%=+DO%(=Sm^Kvj-rS(h`P9uUO?zE^S=B6oDDL|90g&bqm6 z#@HQh{zd0NzKGasZqD!P(cjrbUc2?ND_<977thVo8Bw=u{_dr=HRoGU>xgdn5#++| z;L&}I=ScUN_-MN|k#a*>N@Jca>S8hFkswVb%UWd*JCUkl?1BmHhyv{qnS&8_NkzpY z{u$ItJHjDpK!FQKjqPW4XGoz?*Qq6!jj6e_%z{x6cmc^}$=2T~zron=Z+;9lRN2>h zy;>NA6iBd&Q|G=Rmt$s%l^Z;cxAcATvAeeNhvctV{RkGaCC$ zTh_;I?SyW-t;eng+wZkM-kv8puSV4SQOlX&$`6I=n={cpPww&h;7%OBHx%U3luH{F zyZD-=AL#6rg#=rKI{ZB+vxcBrTTEj5`k^#(Bh0rVT-oHe#7fg z1jyT=J@L7_Q}N;E2$xFkA!anL>rD`Ok=pZ1sE=IE=?ZH`C*B~wenZJY2kW47(Zm^ zzp!MUmnN^1n~f7klk&>Woa6*bp)F7z^M*7(W89em?r%@@)JDEH^g}{d?{Ccg-GP5@ zHato2ZdhKxxO%P(qDdZ(_*VT;cmyd5c3M70!C@)wf#T(+*ynbGt%H5_?oVM98yba& za>*3wHkoci-zpx7Ylj_N3MYc@SF%`_JIipYsKp8HjiB~(J3v${?4`B&zqc-C4%Ria zG^C*V-12!jBqS1Rn`o8=fbD?6==mB^iMk>~Bn}PL6k25>7waRh;I} zzbi}!8)ZI=jZRt#kc-J(4EpTlYqGP|q%+7TxZH~yktqukV1A_R+`Sx?BtP>7z4i_} zF`H@MIlazS6wFb|tR4AYCj!VbX@@?WzY7#O(dVs*6Kv$fVcyV-nt@}=6&4HcH>q!nIz%%I{vvb+++~w`Bs|5+VN{WD zC>-y+I{%smYeY-kkW8nC=R|bap`jpUwzCR% z_hG;91c3aqWYhn!UHmDU$>~c1e8E8uSD^1~$6)G>QZ*1_zB#W)MPUlZ{6vcf?oL9E ziQDjudiE=y_ck{-lkFZN-@o60sj#4V+w+^mfP&^gmW*i3cD=FWr+xLMZKE+^(UxZi z@64D)8M3%1q%4&uW2gy<>IyTok;56r@E4|AEPG850y|)I3Zc42>wj_ZVP$c@EzDZ*2&0tpG9M@k6oIOOqpS>HdR{l?! zdPkbLyXIlrTN*{y9X3|#yNuI(4MeWaLF$tisojH*KT6X4<>af=)o}WicEtR5zyHQL zM#_zQ?Pa00HyF0Z43Nr8gXd`}n43vQ#jQJKRBsj*VNh~lmNe9>!(xN*B+4mTUbDVJ z#ZHb$M8%Llf{!!Smnm58j_@Bs4wVYRV=(^mZ(H&cIjBMPcJyk2a^2-V$38Gqk)RdHH z%L^L5Hdlx+HT>o>%>B^rS6{T_A7n%YfCKt0e-&gigP5Im^Tne<79!PIx0S*dAtoVGTL|CutMSZ zY{w5yQiwS9r0p{t82o2x&f>$kv)!au>}QOUI?uY|wmc={&I0B}_FI#)&e|l#P*}a* z=qTSy^^rkFo4LX0sNbn~vGZ%#Mn%c*aRrIPv81Hlsmnf#2e#k%o@ykxOJ9CLZ%74VEZx1ht^`KBYwAhGwIBn8oE1#92pQL znYe4vEUHFl7be`KM*+D%ASm>-mAXzL+}FBVmU0&|qrZn_uDH|Ws+bez>lnvI^gvii z4KnoW!jja+;f@Z<5kVUf8p=Eh!t|8vs+GM0iQyXGe3w_FOWPl&;j3EaBo!E_*~jQP zA~8ov+`)kZmy5KwM0c`aDpBs1^uM9oy?3s_WQ}H;mknyG%xuZi0p`n<_8Ndut;m^< zeVsAf`1-}dc}-r*kMyTogqFglIYAUCa%qSSDkM|FN9$rnlGJ)@T#+d~+A2{aHQH!VUBlpNKkBqF(zW4aGlxo=8HZbEZ@R^L>vsa(0H z!gA-nH-)WSE7vegt~JAAW|;ANt4Kx7_xJn#_qN&l{eC@<$MbwWUoG_?ycVaNJ%@)VNbTv>;qkGsT&{k5GPNqbnl~@kiw0Q#B=3S0B!Fb%32NO<4#4YEzN5YlHPbT@i zE%lX~R?wWeTyu$XV@rQqK^aKhO2jVNAum*#TrunbwVRrVh;U&1lVhZAcPX66oj57N zli0w;aUqjB9yP{ORrPWwb8$yG@4R^^$yW?|q+(v#Vka)wUSR=R-cx$`A1bc9uWY%-HOtez1Mjc>)(U`Ir)={^b_-)5Djp zS;=gK#jb=`@)=+>Y=1NwP8I()m>11#%S=fLy)GVJ5UICfRlV>8qzMa)(_D*p&iQyK zb==VQuv{FSUQ^K7GuG;GgpnWa0~>)qq<-PZ0Zt@brj8Q-VCFW;LFEckUi$6N`0@1( zA^TZPOb}&B!3csRS#VmD?)^cNegHmE#doFZ;zf%1H2v6_64dlH&0P+|_f_4BteS+X zXw8^>I-nluGc#=Wb|699jxblc`M2D4VsP~l6hkJPpmQ3dWJqW1ZdHf4_wi5eP@%Tld?5?Wcri>SFV?_*1BKh(LwyvWGS;Ig*1m4eQtsdW#3^Afs; zLgwlpiNQ3QeP*-p&(($G`ibQIRdh^5tGh2hHdk>X+6Nh&h%cVDzNS#kR&hF5)4?w` zLW0U2K6qfcrIwenJ_mi??tOT(lL)MAukq>m6737R#JMkdydxyTM=Cb)=0@rXN| zOv+*R1ZxY)@`EIXzw1?!HD|OcZMvG@L}+KBCq&Z3Ib*AMeNF}`An-|C>O+s!R*Ab6 zSoyll1t*sE7guIT`S8ZvVYl}$0mG5?qv5E$H$jK?XY&Yms>Fw8ng+YBEL0F8%P3FX zO>K2dNMfyTi4cP`?tlX68UpXVRz1D3X>4NHMh$lfSrInKFOw*?Yrw>5_6!)DrWL+y zv8F)y^VryMo|t$Y)E|5$5mA-QqDfI3ju5G9JluR>Le3SRICHIFe+bMlnP1)@0__0L zGgx_e)=v<45r`=od+sa3#e-1k-k+|%qVQ~gNrFGgOm#ZFDT?Xae3L^6`?lMYA!Y4C zD--x9jr;mK{QI_Y8Hg#g=Xc&Kz-3AHPl~=+3y`<=Lj0|YhyBiN)+e>KW2t(-2`Roj zFfy#%l9H&0p8*=U+^N@kcCDqj4W~{t;ZaH91rDbCSw}M6MWC_k8O77rbJ#V@h4qSp6_(uf+4< z`-8g(uR~7^^s8L-9ho=;{r>igk^`w=`QYxZGG~nRy^ZJN;|K8%Idnwe^Km=hVu~U` zPX=oHMsap!;mkTBpwzSmC1ZETr(g$J~c}JHgz}@PKVl?GJoW)V)x;A6 z)Q5Q8UYTZjx2Nrg!j>a-!G;6`q6rq!LJN~UP=}bwuhSJEQ&bt{AEM+H@h!bFo@59al(yW^rY}4IxkDXpAc#3|3qe$R|JwW2A6*Jn}7fI zmFT|r`M8rsze@7Ul>YeqFOu9WpelqHSYbEGg5UatwTD(vmqeE{uGZU)56KTwfIYTK zOY;m;mx`I5KkEZ5A1)Iu_T(*=WVx-^U>Zq2H!#jaZYox7f3}>Gj9iGvIbabJRc9%b zNnWQLgKHqAV$##L)DL|B$zeJ&QsaCei^9ssWm!jk08<2I49>C004LF@lZs~*M{>Pl zAM)5{A7oZ37KGt{b08xHE*HN91G$G7+;IMqXe#od67kOG8VlOKQElzb2ER+ledTO< z^M;r)9@D-yTSRI8)#^z9(?PK(26{q^`Pyk^cCeeRk{DkFM1}aVqPCiv0x#EFvLKWu z>8L^E=4B)!!$^S49-!DH$#n#33g*xv^R69JY>X^m&+iQjRu^)08?Ws-g zs4MvT-(y?GlPe5S>ayZ?X&nRGOy#o;n`B9Fe4^bQaPb_olduUNT;>&Yp{Ezp~r#alSFmg;;>s;3YIAX)rLmYK~k3=cNeloSU2kN7xV1sL5z^ z-H>^QXOUCiE_`=>nlQ`@@bWQ4Z03e+eM{f>0(lJfSE$1a=82P`ZB}N_sY>xmZ{}$d z9@y<5ZMx2B4GZn?Wvu!W!XQ5Nk=t^v&+lUS?%k|>8PB#eTSoXwp3jQ&34o!Oza{{f z%o;CJ8Q_zqk9m+h(Q;H1m1`tSZOV^8jfJ*L=9Ox6*#z|4)kn~&Uf`(~_MKSDG5dGP zt$HVaAui->7yl0L2UA9cUOb0c_J+`Qp*o&C0PH%qqeH2LD?wyOytBKQj9lG5A$5zJDURe=FDP5fC7>|NT*D zFBk7BcP<*rjZaCb_ecvJ+q`|b1mRNEEZ5$UfWO`7lG2ncQ&(Rj6!iLHKmHA+X`=ri zy^}UuGRuW!YGk52Prc zH?VdAty@ODuC}5xJbNuxnKt>iTyBGWX@%m@okbq}`2yGz;*{03Z1qE`^xwI!MW`EB z{_I`=lxy9;6{!I2yp52|w^F~789i<8i)x_xa`7v>3y&rvN7bcZ23?9sFVie}svil! zX7{QIsQGTZWAOB_+qGW`Z;tm_lF0|Babr`iLO%EZiSl}`1e8t&={0n>UU?olY*M)U zHCGF!y6?ZJztzqgQG}dun#sMY;|OZ;Q^|Fo%LcE5SQRe`n4ra>oqHyrCs-zy>mc|Y z86nmz?2V5vGLK-u1UP<3VfU@&+~tO|sE8U1_*y6NvDp`)nK0CeMVMIOV)6!n9(a@V zK`f8^`A&GC;E5)b&n|N!9f^e|MjLeL%@$QD_m*C=J3gRCuowX5Bm?G&db)~Q8fZRv zMMUM7UM2`x%2s|Hek{BBawCDleR@?9xYO6(R$=g-*wtKxk9 zq4x2-^QlK*3Ll5*IT+v{ttw)J^dX;tMi`v2pDy4BV;kV!;Y@fc?p`s8Mi7+iAQ z;V|ENg4dqc2xoe4=0sxIJv&VX#XLW=^GX*0FV`NI1|H{w$AGHte4Bf;gp*`}km)PW z=MKSgB6`S|*Oo*k10lbKE~OM|%QZtfg$t)QPZLoC7paZ0p59;V-b_0(npQAD_rjE! zGM}}EY`xIiI*_rA;z-H5=i&gJ<~Xh`fVzq%wZ~92*Y-27L*JO%zm`uF$>zBfZkHka zl7+Hv2n0$Pw#$_;w3?kS+tCgutkUV=<^`sNUW*)Qxo5|nxgmoZ!f zLS0SsVK`kiCnkl{JJ0 z2PjLg&0b4@dj71h_TUTuqyYwmD1XTsb5=aBGWWMr$0Fne2y=TRx-1|8&FS_$twClZ0s#gHkHPE80Wx8%UK2`n)nlYhd^#Y$A z{f_NeMP9JusgluyqVXFzH?A)G`_`zj;bZy$Bg<=9FL8C7h(?s?RGuwXhH4-*PKf{F zXZ-wn-HL0~b{W1hXwH<`!Jg$MqMH_hayjc&5B1?ew?BsVb1QRHtO5Btw;B?rYZ6l1eiXQzT0fR%~F7}w~FeC zfLj2r!MJSFIz_gGUotT&Cw=UxbXy63etO%*n?jzfIC5uw;>kmc2R7HpUwojm+21=!aq#Z;$ zo5oOMu-(w!smaNrNCnWy6{Kc8?Aq&}aj(2&LxNAtC)is8The5S)*Cg;{UOtLG(g%> zx?w&1A3}-7k!7pS2t@PvW$8>@YO`Wi!0=5TZ!n4)c^USn-y}OW9;oJ627G`l#Dv^ zzG(%zA+)z7kP~<;kiu%Xm+{3WYiql}^o zUwbFg(2YaNa{1}LUb?9sB1BO>a8y!TI*s%QMdhx^*`NKB;Hd%gc{(+HPez$W_6Tx` z^s4@yFdNxq>N3obyn>&Mm`-Q_$HK_ll!s-pCzaI*hsCO&8d#S4y--a~XPh`A`=RT& zn`X^W#MRh8;qwC442ZolnTtfr&b7?kIN2!Av!8aiq9K+|UeU*-wA8D_W$miZRVt@$ zls7UBYhr$bc8A}5>%nI0Wm*r8tj{z4Qpj6p{fCOtcdb)A(;b?{o2p%Qq4&&0P@=N6 zV!~DT+{RgPZW|BZG>l&HAu)cLr(y(fPX~~)>3jB}zcf&@zUadpyPpi4u4o8?15PGe z^Ih{d1yi-jv1>Ju7YET788$+*_06*M5e>NpmvIR`%7x4qr@@c$&u&HB=H)vqk&i|u zGj85*HN6DC zW=`9y!0de&*t}tn;Acl8=j1;{QHx?zKFk&>S_=eb86R=OZUr%7p=15HBY=*Zsj)ac z8=N)&0$78B`pm>;U+&tGs05@F;yB(U%YZO7yLc*eclSP?hz3D}HrF=l`2ZssH#O)z z1ajMe+uk!UQ;2o7tJS!2@kfs}LtlVuo&XL=HU)YCi$(?~W`XeRA8KmCY{m}Xx!rX( z(2qNH2p-;v*x|kRl=r}rEffJsPM{nZe7b2%bDP^AE!;N-0kzaD*$Av*Z|_ac-kBbJ zQAQ{~HM(YVf-&S%jo z?>(mjHr!`7>AN2M21YY3n&qW%jb@I&Mem67v{kX5QBB^GC?1e_>l&J^4_#mv5g>%V z4S1ka;=6csr4rM6ZA2E2iulUSXr<|qsDa~2C1lQC=0n?vorlVv*ID( zs26{0v=OMY?&{r_%s4M(3JRJpsn(v2PYJ)9A{x=Dr>%Wg^0y5-i>fw%F{08P>Ldl6 z$<(q$}LQZ!%9E7b%b{<=8hQIq5&|)a0lgyNG0~~g&VId}sfqCdM z1$g`WTvA8+YieErrAUbE#!%70QX@C9aU<>K_>0UlXhUg<(r(-npnFFr^~4c1pAqPR z;(YPYM5nk!R2WJr>`Tw5dvF%F3{DbLl|mq>8)E~!$|6txgkNd`bA0^xHI1|`c^}s> zooDPEZ;|x#u*-w$?|S)lWaSh~l=k!rk=GLCk9)4&vZED7RtTSoq_~vXyH%Yj34T}d zwVi?~La1%O5yfv_sCL-Q^69maq^z3~ayQ&HI)QV;yTn7q5!o5Aa|C|an?9qf912zM1J$ z0EU^)g-MP%J*7#DCQC}EUf0@U<4HHKGB4Hga&1}P0Vz$fRU!9Rtezt4+T$<_f-@?V~Wpc zw#vvkYg_z>Bp|f250*}H?r{~*tE+m$$}EVP32b#?r({{*WtG`|Bg!%hNR040zEEvW z+qD7cjrO(b;vG!H52GwPeOxV%>7n$3-^&L(iH5=rOlJpXpP2rXo0ihs8Rpz-m z{ZOYKB2+AqHm@p08?~B0v*5p09OLy@p(o4v2Qk8P$J1k10s4Iy1-`lwK-Oc=1rfAP6`C<`V z1Eag7mBYmT3GsCZmbFRt6@Z%F!1~7)DaGt3%D2pP=N;CCj(skA}TCDpzu$Aqxla z&v#&nUf^BffXp2ggfyHjnvYmEt}bGkf0+9}At>!cLeqG2idw)E7-`!25!9TQ2icCt zwr)XB|Ww3Z8jZ0#~(gk$?z1D|8#grH@ zdO@?;D*m}iG?wZ~_bER8>J?Cv$3G~tBho$i@P_{eu?FubtSpkst4(I85M3RwH=cV! zBLoE>Fv^VXOnO<-jDMEfQt<3m_@SjnuW5-6CbGQcj+6md$plfU!cDKmSUz3HA9Hu6WZzb=8d>DTU)@h zWQ&2!nrkQ5-^qe`nYuD^-|}v`UcfXE0_-}fFMzTg=;hqsTZ9%p2UexX7pdLfo|F}C zT}pg5&UDUak!a;$ph{>M)3CfG{KBoH#__&;>)y8I+rj@GcEjn<9jQAi{bhd?7Mj4`}m%!o2l(}{)gSuSb?EbF)J*mgS^Fs;wUkdl zfi96v6Qx>2IZs640RzNW1E^r+6D1?o!o_xL&eiw{0!rP%fIscAZSE4(lkbVV>!u#9 z7l54!u1LJrSsa0Z%p&;tLGGu_du21T%3}Quzvte8Ox?Ur+~lELqyXjeh_`Qy+4}J4 z9yvorGElk2Uf8YPy$MJvdVr_$AIyeH(m-7=N*G51&LYXzZLth5b7JsASV?V?^}1oU z`%S3Z$WcX?+HH@+f28;V_%9{HHwty!R|*tMBTYZ=-SlDxjULuN2{cmO+A^W7BLkF-$_vKzM13n$Qw|>}`gGPe zKyJrMdkL2T&vh*3=4;k(%qa)Dl+Nzv>f}Go`|eWj%bX#1WaQA6lPU_*nl*B{NH0$l zOGFGDNS&$dW^c!U@{E5#tH_daY^JHZ>I1UMln0_z`TEC3lMLGp!j|9_d}%F@qc zQV{E5U(gwCibiQ57PnIo-{jTwXE)v{EVrAxQjJwNXF694l#;!HNkm5#2uFYlu$L>@ zIj|AP2b@*(E0J_7$%U1z#U0-oc~ftUf5(Kv(Y(?m>xp2rdViCvLQ$=Tcjb2>_DcA| zqY@}tW|2n?w0NZlVDBj-gcr_uzqLGM*M>?Gb$e#ptQTI~--Y%ua2UP=);^+zP9`eT zx38jxm|@thfZmAOGr*k#Lmi4ceQ@Bly>ur%FXn}j1#=?5L_%+ch2|HgxQ&H5;n8s zh&W8@o5d(onpWG6*B_Jh74o4e{bxhRGo^9gD*DOdbEjq$E;9DP9TS|l^bgZw0~39f zjZxJ@wBAZjvlMl`+vImq<~ALt8nAi$isPP1ZP4pO0z+jo(7*>(eLikc6 zZf3$_iuCbLcl5HlP_ylAgek`)wA>vs-nkcHI<59G6u^=crBe3<8Weyli-6gnCTJKE zKD52G;#B+GGvmZ*{!6;;vxai_u@RB&P|d@ds~B@$C?-EwtWVQsN9DN`SbrHDy;h~qe{vs~53Vx%E=+^lyw#+qO zeP=zuI^&I%+>Mh32F+D&`1ac~$-_^9VK+CyXFG&9^5OhoKGU5f*(WI=>2Pq$)x+rd z(B_MLm0yLxd}pVmKEP(j0V@KV0D$SfgtC)63sC~>Wr-o|Nt*10+&H=h*wgWn%bY0vJ-V@Pp zgy=_3-kcbXix^8BUv^9KuS;0?#7LvNH7o7WY=1v)AB_ES6zDzwdCzy!MyJ~}d0h%@ zUefe<$2ya9n`J z_R_;JO%X0S$JVg$3vMO55XVw|*T@I<-}^-5jZyo==fOw!>Q2<2|Oo&nxwPRvl~lHpBtc$X3i=t*L!L(n`T z?bGN4@AlpZMAvRKzP5!)r%i8u7BJcf6--^=8X5vt73pE6)Hk* z^UL>_eePiV1HckhD0$n0iY=^jQTl$laAX5KRWUyP0xP>}pnvS1Y_!z@?Pa&p{b~Wf zf3l8+{Vr1l_i}Au6ZvhR3k4pW7|k6qwqzvKspVDY)%m!A#1qo zoi>LC$j$K$VX)j^8bZ4?(H81L4ws@jXmFShb{AI{DBOC_RMUw83&Vvj+CAGRsaO#5 z;8cz2Y$cT5q7#+(8vR}X!*v_*vb?@f75|Ae&I*{4S%MYZ0tuhkH{nt|zE26A2l827dyVSc8 z^DKGQCj*AA<*UAWg^4f&Qm`S^{_s3c-WEcfe(;ctwIn+$<@281a-l9{r55nwJM&lm zq(InlNUx_k#iSDHrHBfh;&IqH1P$O5&NPk4x}{meQv)iPZ0d~(w($sd8>mSJS{N;J zR8l=*01^Y4U|{M<*}e8}>BCwb0q^_^Fx)KFbnew8W^M*kWjZ@XXv@D?B__oz`N; z%!t+@jzh+mGkwiJHf;7$o|+g&O9QMm$^oicJ-}w6b-jtvkr89YE^^I5e^&aXSO&pu zeTzOusQFOboD$dZmRrzxJ{L9eR;q3n5#zMWM$dPKrU#5^2KmgszABUZa%Io#F8`9^05O~k|vwA_3q6R1}Hs|+u)@R zrad{Yi)vJ0=Ies$S+X$s3Uva)s1=4lEvN2|S0Tk2Tu>-3XZQeWYX&x`=#dqN_EzRG z@9Xl5S=c+ZZIrfG7oK2K%OJ8`}<-)t@Co zRmFO|*e3{-z{HY)+b2-w1SJ#N1v=0^Cm{-qTtbcVl)!5Azrq!P#f&W)b~a4P(Fv z1z-wKo@oUh^*Dri%%7M2i-B1I;^AZ?C?2&|Csr0pIBY2UXHx#iqC$7beb4ppef|hh z-MzrjuzWjQzUH$+afcrOs?$uqGe!;osJrC<1)x|r#F%!sI&}cuS`U1uj3R|xtm;iE zq{CStOP@41@6@j-HP>>RHo1jxstTObCL%a&Ip3JF=Z-n1=%U=CuU4=2f&e2{6~@+3 z+PedGMN^B)%Q}Wp8{H-Dol)IOzP!0)-hF`V`nwYEKgq>7PTU5QX|M`;P(=ty_TH)q zN;T?nXlgn}!DuH=pOYn$iA~3z#9IB4E{n#z`;}6lVc@7&qLbHsmk3QsRSB@7c@Zl! z;Qu2_4sDbVy>so)jD&~-jfw+f(f#KTx9+x;25KO@N-Ti)t-WYAG|)O#_XbD-N?VIK zh-V4>_y8u{s9F;N{_}BS=PQ8BtTX*ujE6DEbzmeiN8+i&2iRXy;Sw;Oqu~dEae6r2 zbBH7Jh(vhy+BpVv1!-O%eRA(ts&)IbHds9!cbBTWqBbg=l9FNs0cH%=;YV(c((!Yh z`_ktqpgBwxp3w=lD>*aYdkMrbJghx(x4WP&weF+iZ3FK|;Ixyr>^oh@Cr-l(u6fSj zY!Q2m^EdsOItxoKm;4G;1Rg6bu*xBHP0e23i0afi3Y+S={8o}&FYpn~(8=dJKn*GT~s&{#O{ zULC3X>)1NPTguhfv!(a4{Kp9%VGUK{aVA}Eqmz?U)R>DFR7#TUj{2wn^nEGz)E@~^ zgq$Q@ilsjysPAe4<@%0 zrfVeiMSOy%i-g}G7an0sGY(f6cC`AJS6cHG@2c%&!I$?)|gDm6? zpZ(2L#Jq%3z+5Ex4lrHnkKv(F9uVSXGkD(E1HC3Z3yq^duSr()6?nATd5MM~I9+vj z4Nl!^70K5H)u}b^ZWSN@hFA#=9f?`ubnnatc{tF0M-~hTwwTAN=fG-d;9WHrcN%6! z*Y62Vo;tWw^h;P!s}WCkPclxx`~~(3->gXt*x)riZmnxC0tY__dqs59-+&lUUlT97 zuV^AHTJMW91>R6e>#rL?yAMy=h9cnS*?J@z4=9QyBGd1OCXLWr$qZzkODk<_e?swD z)6gF~^_H{Xi$wi=S^(7o#6HmSUExtl#6S!A(~tZY7W&&?F5Y53|G-vwZQ7XMC+H8! zNQg3E$+M&ItkM%aGIxd->)&RgKuO~woaYo=T1z{O(;buORTA_S6ISU<<^0{(J4xwp zeFw}h>C&y;1sIjmtDM0 z0oj=?kRP}NM`FM;DLnDcp|iS-QJ=?O3!99Oz%H$(@`w z`rp#B-?SbQy#p9hfptqH`0Q`olLn0fP63cfGsQH-JoJgugBh3zk<(E<+y%qV4SSwY zi}fYzTm6dTHrvS+P3P?N)yV0K@z%pH!Lp$}f=`H>30k?}%l2={)j zxq4aH{sD4O9j!EfB6Zb+#WRe%Keh|M^!bi~%ZDc2Axgw+R*dM!Nj#kdi?Hua)``*o z&>Z@Vim%)f!pF3yXZ-0#3(~YyFXdT-V=G>@d4cWp6xnU7OS5bm57iM4HD^h#&j=l9 zxdsg6M0~}F@ zDGr~?ios~s6%22m-$*nsW5{cl&jY10$X4fp^2>6~8( zblU})Bg5n}JDl;2p>v7mVE0`|fL8@(gA!3Fa9E>iuqLpJKDY3Hw&4I#w?VwNoJH)Z z1FA>w(gUYKGD}UY(7rWV(_>D2HlH70y2eP$Ddg43&B5-)dm+CB~@Vw z4XUBaQ(woqE<9j~Hmrn)3-V@kX1<@aMis+|O^|ieB={zbGo0;R%Oo9MHMKOvM15_< zj@unz-jZKa6>2`;Wt9XTNjOr+AEnWfObwf#1GM)uDbv^I-efOqws10Hjv*E>uR^@F zV#pc2uC+%x^2*`rFt=f7|BQn!!Y<)l+rOV( z{R36!U}c_=$KxsNfBBZctvo#bE4jVLq6@{HReJ5nq?rv$;YeCn<(8q*tG!Q*1-n|o zC+;g)$&gz2Dr)bSZ@&0>I!1x?M733LjZLtAkCYqx(ayL>N7tQJdOdI;@b<=W zC5b@GrpC;4T)LqPJvB20Ihf(2Ma?`zD#3eu(`Hl7QM^?<=N6~lAL2U1#wra0A)h(7 zor|*=mX>q|%C3+#+YjMp3JRY(wpmtL46nPGn{G2e^*Nq{176(XG-xien`H zTw3=2U>273M%_J$=ifA^Mqqbj7!|dufLgXcBoL|YK0RoShSC49si>;vS@Jhd?QSbg z)4sT{!~gQWkU6#ebH?Yq@OB=B2U%TN*+$XOTwLXWvZmIKq5dcA$vKvd9tS>S3EfW ztL*w+inled^Qx#n-j-c=tfqbQ&cJs-z9gQt!Ln>Bp%GOktuS}^8m8NonCd_ZY_W7*ct9|fv?dW&eWuztij;#+nb9SVzqQY z8Jq1S>qB?ujrDk5$;6&+rX@6AzVjc5_mPk}n#62@z#LiGBtKK|s$;4WJIiOpINwcJOl;y~%zq%W8~WxH z0!Z&DATn6rHzO(H>el1nvA%Z69`Qtn!jFCcQ=~REO055ygD|_mnxd$#Q$|Q{Hx={J zrq_}`coLDCoyQ3~lnxi zeoB3#bzn}8)#)%C~!qUKnD{y#X>g#O=HOQJipNe6P2Q57H>m`0?OQC^-6Bn+_&*;wgy3 zy+r55ht{J7S~3O+U=%`LS8x}zXQXUx^;ar0VQ*}7F|;;lKj;Iqw@li0Gta}iNad?Q zEWxQId|j4#pG1zf6kXW(`+r+^I^Na=UFhUFTP@?HK4mei@pN9j)~UwZRdo{D7Mzg-Th`Rc?PO}Em z?IvcG26FevRwR}aOO@JfHN9>d-Jc$*&8RoRi>B>gEk`yLmbd;3#ee>7C6D_u#Oq0= zpgbP6?uCDkS-d|`-5yvV;@$(nHKTH$r=!iehjouuQ;uHhFEP(rfa%$qjQCF%_o z*mmB?3Z~SpP08TJv5~1Z8NOSjqu-5>8}Dtw5H$1MM8)uF>iw+w`$J}HE2%?MyC*`C zv4}igMTj{%I8*iJwVr{H266Li*AzfW_^En#Ke)nhQsnqzW~}v$nP42l9}^ktcbOXJ zD~Qs|!yHFVrfoN`)v{}}Mld~e->i_e#{+S$SH)DY`G(}1p&^ua!?eem*i|P(H>^eZ zIjSZ7)-NdE@^`3R61R+Kt?85>NeG!{eAs0Hx|$3+LZ$6L8F+=|3AZ>cAj5(bF39~K zEel|eKDiDzy?N8qzJo%AS5Z^$TE5~(8&bXB0p^_YvfXrWKUqc{KGxQj^Xw8V%WlT2 zk2H~ztBiHp;{zF=@`pX~O82bh_gNz`bXI^t+n=#nbk@Be7#`(!p5HqyVx(!&ul)1^ zFjo$pFB0(_m7X){T{yVnv{Yq!@CzIjuuwOJgK23(;i{!ps71c+w2q0Zg zoiMe<*61}EbG^K&M^$(lhp^FXZ`Ca`ame71&$Bk(xlUccJE>>)l)Z2LdI!sMr5r3o zy{QEQ>|-RF!HyMYqlGzZSz|(hb04xc`BuMduFiyg;d5sxgUe z4{r`TzY2fh=Xa9k_+-&(kXG{QRbh(-Vz!{r`&}@N z)`~=zka{^@E6d$BXQztarOd`o@5!I(i=N$+NSzS!Z5^;t!~vydpN8VTaVz0|hfMeM zMI*T7F+ey6wF15|t4G;{kXx7{oV2x3v~j^;nPZIM3n$Cd?pby|4#s(zn`4hN+s6e_ z*!cj@NWrQXc%QeGyX%ja4FDl@^LfwOEk1Wq3VwTW{1A)zdW+`+iz@uh*H|joW)hI> z&1(X9D2b}I6u>g~_kZI?wt&4g<-H^{yH2B~J#jjCwW6?uBW7FIj^(+4i?KybUx3Lb zY`tBObMq8?d#Q)FSk0i!Zma5SnZC0~z*z8%`4RsqBU^j>OsBzTu12L6*_s0O;h*%Y zYBmv?vlE%|-=d3o;UKXP`6PI4@;m|#DrP2FMQU{&9tydDIl=31*hb_l2+OKFQ|#WA z7A*-Y?E+wFENv@6t`_r>=OBq$WIDZXEAlTcB)SDdJrQ*7#guop=IMRccdwQht+J4; zSdszecfWHpiP!x6-0QE>?7Ha_dAO-L_bJ+p{@9G-`Jx@~Z|AE7P^SieV@WZSwM zCJ4=5HAd1X+;zr!vv0LJbXyNfUqLL^#d^{47m2!UnI*ORtTUydwuN( z$7{8yU4@$T=N82T(E;)}*elLfvOZUogAfKH*9(^7yddfUnS zwiB-f+@{Y4BiH;82)RftXn`oLR(kf_GBrwVHk=yO&lsdQre0xxc&n~1st-erZteuO8p{*fqw4G9?22-CR{!)q zE7Aml_`8yvSw#+@y6|ee_^=@-2R?m5ZS_$@BrD3#`q;qtZ7_>^vT$)(^fG5FyzruN zo1c@#aCN3Y1Rx!BQviJG3fsJAFY(|VYH@mkVow%&MZZf4vx}M6#7)^sM!rv5%vx?z zgEiYy^9WV0qp|Dsj3nBVO`2y<M%)VvK>1>>+O6HnvTNb}fuW)JcL6~E%%@|npg1D2`F*An3xp(=Iz@HCtR0o zY%z;i+vDN}fWmN!c(~E*rdamGLCS5QbM;oUqFhjNtFQhH{95d7KG?I~99yp{@dPV! zD`GIRWjCFv?MlEhwiGJO)N9XdF#y!gVSAPso-oJ*5B{yI^Q#PUAA@A=jfN6e=GKH! zyzPtJ9>0%HPYS;0@izG@wVeyLeu0*}pS^ki|E=pYuU>cehh*~9HI~&1WSmdOs%J{Q z!xGusr)PRj;GUn1QWuv#nPuV=*WL$iSbw^^@*zk1!!9TE!;pIO_9fvcA28SG~4$4S|o<H)UOaYD!u8+(Ix)bPfDW%0%9xy<><`BS&C|n z#=ON{$Zg{svkIsB`ueWpa;w|(v>&fx!sfCJj$aQc^pi?APX`E0c@uXhf;EYC7W8#2^YI`;HT8S*%6X#~ySbH@%Wkuz>JNDAh4RU4Q2z|I;^ z1^h!o^I`7{EOBNAPm*Ug3s-)Wt+qaHb7P}B)y{uZ&Ikz5-rMo&;zg5IpM(o3Z~aeD z^W~MTpB)feJ=iG&QjWGK1l4@^<_q<&kGcX$>r%j}xfXW0B_sXusvGKmCN$j$0G76I zz~Z#t-|6pZh0fdQL}HPTdn$6x&bOdUU)Q<2S6#1r*&XEIK+DyC%EQy!gDw7ELSlif z<|;s5^>koK1c=OO;h&Z4-%l(Zba9^bdeUxB1M+P|VoA%uZW0`P_I}E6ft=d#%B%lD z-dok^JY`9`Gbod)6dKK;m6-2B{MxBewlD_{NUv_QYfVbJBlNIw#ZwpaENZ5A|hnjAfVcJQF5cK|C0@F4)wTqzl8I zTK{)mG?N|=cG8ISH?1Gxwvk-`q*PQ^j&273P@H?8s^m3t0mBF6&aeaC>864Dt;rP0 zF13CkWOa^58i((M$B1<;vmtitM#yAYYGHmN0N4d1jkL@ZA9$(*SIa7PJ$)6ciRAKD zMc#<3D<+}6cO1g)NiAHXix_n+zO@9d*%SdV0ZNeu#i8aBL}Z3%q}!Z~Qokc(!l2p3-|6*`m#oiWm z^9L@ZL~pqGTPCX!r74jc9K|YJ`*Iys<2C%0!#Ar>?pw>gslGo}_n?Y|9zs zc>p;G$&MGUQq35vOKa=^{E#mKy(vnmEy>eb6CoLq9kl-cg?9q@XZtmqfFibE}e|*Ji%!m?pkagRWlzArBqo}HR+Bt z=v-O10u6rl>LxD4n`GW65+}$YJJ;i*bS)>lAhL>`_GP(Mil5&_AQ(MpF1iB5nSnMW z1icu`N(joUj`};GgGjW>;ayOJCpPQZ(rI&k zY66PuLlq2n2pUkqS2N=>$0BX3vIqpHjL}_E%}~r4Z9+JW*$@t50#pg1lZ=$Zcx+0$ z!;EOt&`@$pbMqfN^nRjl`Q^U@H}|KhtZ-P>mOv$arN_BM+f#>d+$m|sDdcY*CO8#Q zJL!ml#}1X=3hG;vu76xIyX=q2qGbiVy#DV5J$7-?Gkk3O`pHAhRK>R}KqrG?g_xl! z{_v(C(z`WkKxMqN;S;%ta4ONmQ(I_O-$An8)?;dN*3H*cX86?7Lj)#@lxB^%eAz>; zolC;Ak589CQm8dOnPFEFokGLx4v5t|c*nWe)%8-;{W-YM1n|qC3ru1QZtIr@tYSuq zvf=PCAFi8UdKad3O5O*rcIAJG9hLqp0c_jPSKJ{8YA!-9qX`;_|(_ zFe>mR$Z;5GDrpLp_PxX#YKPETXf+W4%D5BZ(su(W#N4aK`Xwi0km9R#U%v#PVxRlP zKwCMvGB?kjsa@i~LG0L!N^d)*LvO1PBOk$grzo(w($B!~KzDQJ;V`&noOw~X3}Q6s za%yum+jGA&21M&Cf)-l=UlS7>9+)Qevps zca=$%L(LsOzy{jYmon(P=1$PksIi~tDVoT${qgPK~NN&X@xS_ zZLk-BAlKLTvg_P`3y_TAFcf#Db|Pl7$hYHo$k+2NZ6rtwN3l&*2${t+uB~h_bD-nwqWAjB3W$h zjUfVja~I}NAQ-i_?T)NPml>ulZyDpU{lo3&uLI0np4R4m#SK>xxpJj!LQC%36McWQKOVR#)T620Tg9LqfQr1uesEaIhPN-nj=A2vNKMNu zlaQ?VJG=Ws*Y^90efil@L*JcAQ8#o#{-10qSAF$vnV5Br&-k9;I|;ixgIRXAvp`aL z*x3hT<*`>!f%aSU(r*b5w|A!hWQzNzI(?XB*8h6;w$0vb70xFQ+yS?V@?r3-igN^V zZT+FGJ#GocDD#Ii9xGLoX8<6*s5QY^4dA%E?O$)trMB8{*$L8h(Mmc`X6MF8Aw3I7 zG~rPy5*mMaX_W8LOLymWS#I11fdhNe%|R`QNy!wWJS`cjx+{NGZ~P~!`hEFFReXyk zYhKy>IAM`>^(_tsEg%pgE-xLF5=p)#frps+_|*P!OGjz*#CI{J^dBne|Krzc|G{#8 zza1{$5B4&7n`$-~4ZKmPjYxq$!2ic}4&;5hqq$ZYk8n#0R%x%-o$S0~JmN z+VjfZ#blZ;B*L)^TJgkx(8y;jcXxE($6c^1@7bG(k@0S}M6d0Rb?yy)?}Yh&;s4PA zz&{r~yQX;98}x6=3|yezo@9<5nZDB9)01iTDlyR}W9z1Fb&Wv+@YQFmcgvP^#_vjY zvDk5^bk7#$8XEEbmo)X)djP7vc}TUQU)0H-L_=|0i*K$L78Z_nC>2@Y#|S>+J~(<~ zyLslOn?pSY*XfDVwh%q#{_((iwnwp#fc4Iavvwy-j09;$}w^0rVYL4lKELeieG?6LZydU}j zj{)S{ly@(W*$dBS7d^XjCCp)XC@dP-m4e{&!ZAYF8?-3LOaiQbqUIkzWUK4$+z89+$VUmfA7lMUi}i9#dZhi0b|$!rP8z{=Mb5F#zBOZu%R-XE&GcETE< z?_5JL)sXaJ(g{yQ@}(Uypdmgx60n3xclab{)bE=6_~kL9t%Q;1K>bE5S7Bw}q_ z5*ojW#bPZqhdat8>O@;-N=y@T9Kh}Rd zdY=lhAZ#zKrVCpjBEJP_B=E(DH8JE-(T5$0t68Kee9a7E9*_!(vu`G$1T3ctUCrW}f zGF?^|*Q=5F6UIUGF|Bv9#8Z@L?gf5-@OtUfi}Pb_lkCXd-mODtlYdY%oEQFZ?9&~V zbVRdJZV>LD_r89=%AXvpD)<)RM6a6u-k9;bYkvR%9J>6w)8|D>IdU{&hnDMNWW7kukZ%{g92x$x1v2YQ;a z5spE?66@`2QftEQGujN{v%`=VhpV@`CAd_)U0qAnrDA?}#bm+ttE*#FsbYsx(Fp3f z32Yfr{K_xyxWucr)}giQwUWj_Z?mw=IoJX}-K;^*ZuuJ)_J6J#fBm4opo`baC|e$! z{LuwgU)S$%Az)rm^ptnwbYp=2KB7C>CPU*bH(!j{x0O!l5J?N#;(+<&QEg9A1V(wN?e z$ozmZof+0og-%cW-em8KyV|=J{|F4`{nXRr;9;>W98g(VY2PfNr4=$V+UYlpsBoO< zGjrRu<(qu}pYokQZMvg0M5dUBXOI7=1Sp$WKa@kG?`gch9Cu^Fpt$0r*`}oM)lM5% zR^aQtN2uFGPOHlC+20Tn6N?Yh`>)2Aejw!I!0T4d=<4X$hPnfbq})^9Z|-&6 z_e;xsE&yvb8ct+RFL+MGixc)LJ9iSCl*<1jr~lWM_Gijc=uYIB6e&5``C@rzAa9w2 zcaUA$(HO}0Bed{^htN;kiu23*YpxZjTT0x|>J!z-LI9CZY3Kg$KCw{ykb{zAf(c7Q zqnn|52e$Wz%WUn<`GMiV9SH}3`9Wd!1q;p&To2=#-@%L@{C`{Y=u;sv<{dxy`NxNT zS-M?BE0D>`xozUzSAgyND=PGW$o+3EYd=uc-(Bc;3IF{8M)6{ca=Yof z!y3nQviMHR#$sCdj^yAW#il&~Wn%CegZ|K9+Quea)Q-eW5f&M>3ql`I31W|K>i_C%R+LG|BqyJ_j-va+&@ zSKo9=xUG6*RBDC_lnw1kcoICtDe|>)fLFGCx??I=dzR%o*?hdQV5lwYGgdY78_PM7A_EJk0Ro{N3lhzf6VH1tyX6vNxydR>44PxLr;f zNgx=ld%mE=mX?3Pv5KH-db>!*l$oO-H&61LOuwn=51+E};>Go+6{L+DV#0skZ}Y=5 zy?L&cjU0Up`g)oAU#V#s8OfEoE*a=Eogxhv5qW&!!YLM&=R+|Wg~i1T6yagd8x>j_ z-dNPi1;{7Jq?wpkj$O>9U>xe$+w1LWfBr@CK#$9WbB|xyl3_(5e}PhRnd;&2#Dgcq z;&vp_!W2OoOCOHh%Pc!82$K6zfcYs@SucC?1=0~`cLqLN<#+a9R|n{}0PKbe(!T;A zbJcbp#;rY3{pAP2p(rtzm528B`TCAIw!pBL*1<*A>=y2X)KpTSAE)#-%B>k)rphG*a23Jy!pOWq$eCU;HWu+E+-?hp1)}eVB=#xyNs5>w5#*%hz&D*Fw_hZk0 z9uqTf5tn1)VkQ{EB!0G~rKO?2UtQE|`;q8%Fe`(E7i);1P3{P+V+j4W%X;grhFxO_jZI6glrH2ebNDaX^3)?2AD^Yf4MbnD9AuaB1&R#edPLNHFW%*>P` z42dUAP1CxBx#)%0mk^@mFl`2Ob8uXP2$Pp6w@@p1HdMsl64F}I@W?srt7K(`fSDTg zIeP24#GUzCH|xZaF9n3xC!_7&YfKah*eS*LWc`=aT_eZEx_~{V#{G6-u76!kU|tN6 zq?V;;RZOMg<(6N(I`yaevt8FGD*Iiyww|yC6-9`vNQASGWOW-YwCcD4wQZFEs#(dy zDc27vB;QxNk&9~9_i&=^3au%ddr`Z{{#rltXnsQ#Jp z$Eg)gV!64w&w=7f>DJH!R3U+&XQ!pw*{&5E*VuNuq$a+ou#oC}oOZ(-xqt?8h1SNs zJsllgBR!jH2fWbrGZr$}Xz+`xCmJ)9;S|)=v(uwZH}|?}>aNvHJK%RVaxJAz;bcRy zUv8jY6%gg)dlR2|?4RHJKGEs>D=^ovdd1E^YJp0mnd844w*`VoGI7GRSQDBGo;J`b z_xlD{zCykQpdI?@IQVA1aA+J9Tir-c7=}OUjQf(htq}o8{1QHW1R$i6Bg24Rq87X5 zL0A4^!%Q!rN;C-0+2`+`0>;hq7CdvaW?lg!);TGMgt*r^9RmXrD0UZ4PARp$=>M+A zd&>QJ>K+DSBR5r;gvAiHL>gGaC5MHRA)9;?ffsrF(XD2EL@cnI`QHBsIud=98&=O_?z6DXcR=kU?6~M?ZUC z!W);j>+S|q01uEsEFF~6zwImYXMrvH&l$AS8%w2^-LPCTGMiOL{-*`IVvU9rT#;v$c>t(T1b9Hvw>=Z~l z@)#IaoVTwr0eb4s-spf%joD{vHBzf_KXZQveyD3q&yazieKvSJHdRQ*FjM}b%52^`nFPb@q|P{IO5;83Q9A)}Gna!+OChseCuLX9?f7|A z6#oW{zU@+PqHGPHGTK5Dx#?AXqjbF4yH7Q*Uq>PaosbGg?2hlg9whXhK=R-uY;_1z zyY9OO>@fJ)r9BDEYpiy+uUPR~2$5-{D2Ma6WEmh7 z=jUSzN3jk!;aZmjH>i8Bq8CfaE?^e;c8m2$c2 zgFy{F_P{Ef=z3((>+eWpVPSx~UGR*{St38n= z5Mz@kWt649W5OTXj;!SoN17(XMeNeuf5%uqKH+<|P_K2Y>^wgxM|&xRO$Fvfh zjqUIP;^M_AdWNAFE`>CiehOaNX^c9y!tQx5#a_$EZnvl(Yw767VPIrLu0X*|qL6sx zZCu=W4Fw6Xq@XyRv?xSvuM6&}RZHhoi)qDt3(It@DT@hq&-AmvqL8pSNSQ)^W{-z#d=P)7yJqCipY&|Y)~Fo+QvOan36Ln{LO}?65{!rXd4cR)OtGl9 z`Oci3+H2Z@91Vxx`YNr?Asp*a(leOExKg^?UjzfN%!P%I?U+Lvs7?aa(8=md(^dYK zbk(Aq*;*G#c#bzxFs#cW0j}Vdlh_I~N<|px?|4wsVLDa5c-RLI0R51<<`Coi?+X0K z7y>Nk>tjuZRPH9PW$KUr2k)mi6htaX$l8G8g>Rc4JXj>A5EAKUAZO_!7fRI74{hx$ ztlI6ly#;@xtG-q`EUnc|*Q7G8rKQ!--|=Q+Z>ah4>SBb&rjm}4QTFgstaYBh&B*yi zU=vj&C6rKy4(O9(F`4l40q%X9zggvKkp$v$br_$1*No<`j zRkP)P@wq+>+Hd?6tZ9f>`)gZGra&TKfkUWX!$Rg>}OZM1f^$tl|mLo)jS(HQ0)4~N6HDYVynKNO6keaWkj|9*yAlc;#FNkZMU2)IND)!K_BHJ(GKK{Tc zrC$@HyhFL{IE#@Oc?eWo0yvSIpYEg$U15s^#q4H2?@(@&Xe{T z-M!klQI~KOFdAS3swue)%zJEIO@}DTyV`zd0H;?jE^#kbM$Khert8f}C4iB*W$;GG z{$_^&o8Vv@h$XX>xRI6$(@)r3{SyHBTwHH>;&Y!o>Ss;zx2Kjp^&(&5u0!0%uX=ry zr*}eOtM}2#G?p%i-_Sx!LO?^?Z2{-fedxlQeQ3Y7C%(=9AgddNQm3`q#Wa=9Ujv(Q zhcGgcD+iNyfi*(=mA8{F1mHpgm`*_tR*)o+T?9ewj^I(*aK;OiB8(8FiY0%!=|tmw zb&m?&sR?R+Za$+^%A{#smH9oG_#SMS1-PXC%ZQen%0)Yhm&Sz^S+ZmPCO|=0`YVqJ zAYi*jo`qy_SI!AiPvk_E@zmye1P%?R~g;Ck$;LDws z$m;gH6qL5i&x{rj(R4$&T@EB$`DGB5JrgdAlrr0o_Ld;K1;TkFJtPnUGyajsB;{0J z5AV)zV=%(!UL{EmWk+QmvSSZxa)4HEPwsjg)zNFrYILS!j!sU++|@h<)(|`L6QXH- zq9sdu9v3z2jw96yb5GFcOE-qygTie{qj|*=K zi)%id=k|1UWzDrKAH$AV3uxBuSbVBAD%P?wlj38V+3#4kE_oJHSaYVqNx*Y&*>~#;$ph<=XnEQgz>fMvbeerlxe-k00s01#(f2z0<;%7H6QHJ>u-C^U6Vb`bV2Mig6*GaRq*XfwP9zSHB^}A1LPE!~NZyFTr+oq-Vjcb!Tr@yMdjsW!cb3 zDMiPG8*bjXy|uT|2qy`ba^slr7|>`KNW~96Uda;)$duk$*!YkMKV!5R1Z&t#beLE- zFJ->&D}&o$Z$RR^A*- zMvZ{s=;yPollm^i>c7d>>nu=2rPn*#BXU+tG_a_`{}RPCFqr5!=70BmK#_Xmk-W3B zcY&GNAv)aLT$Yx2c;k5->dPL4)fYFi)WBD2Fop!<3IZvmOYL}ua-1ACa0iSectSkd z?cf*iyAZ;G#iwN&SG#f=KmHUnGyY?xA#_{Wcz0&Q5Wa&otX(hlvzbnY?oS!kT4V+{ z_cR4Y6)fGaDcF)hkMa4V3DZ6>TBPWvaey`ykjVbzbtceu(MC7?5k$=h{S3}*gb#{y zv8iG=2QtFxaQtI?wfx%T;HiTT`VD9hVGXu)19pV!1$ulR=T_sO>R2}mGA}^)X|5ng zykQQKdyn_>-0MVqR@2a~AaqJa6%~`mXB!(COH01zmXfo>8*qG^;q>634SJFgFo#^t zcbE@5cOc=N?AD9#4okz&&_EfaL2!iIYDtj>BVl6&IpI#gjb&9XA5N72t9ks3lfzL_ zx&J!h2lffu{!!`oFHWwP_bm#|?EVra4!`E6bkUBo0wAw};zL8*s1B`!kEmqP2ih5; zsvYfIp-9zyW>c+_t`_YrN%IWT++DMUejr9j2%bM5CntJcm`Pqcwn2SM4+a9^K05f9 zbXV_bh+Ls~e<+YX%5)pdGU_?B&$gb`Y|$H!ui zU1le|QO9}ekcp$U00smJRsz0)$l|VSpeymqW-7FThxAz4C7LZ%*RuNj!{q3H*2nwZ z$lhPRSl9Zv87+!_Lm8kswqMY!Kc z?K-9raF6ywoN+w7ynbpR6kns?7Bea2U|P+^)*S#V8$$(>qgr^Waws>peh%#qOKfH7 zqUG23G^}(IO2W;O>RXM&g}e5|3p~5H8cR~QK9zxG@CX8%&%SR#`8?9CB~)aRYTdSu zfZ5rp>;dy*Va5lg`HkLv?ou+?tyG)>qYU4d+&L9A7nK2$1OgCQfqk6<&Ik7qBTX9{ zr#)U30vQHxFd7 zO*39~!K%fmdUh_SF|T}TLaWSJKpK|R`OFydes*Jb3+~8xBJVftW4P%1WrWphzKDEF z=S5Uhrh3d#$E2jBT*02=y_e?XIlJ1!WvQO@aCoKG2vDuOJ1>c_m@wjvn|&ZTClCHbhdqHqQqc@Bo0I72YD)~297uR~%S4m;H;U&+?M715IWQZCTUi2S|+ z@BnUH3lr=u@3Z)fnF5LmbGOS1b^vchY=jXo?jv}}TgYBG!L4FGc2w&B*CqmmXxh<4Xd^bq=a^qi@BFRAhIbXIme}_< z3G2TZxTq)*hTUuZBfp5oZ(if`FQg%%{u_G@LysHD)lR*+VCLzAedICI5mPvhWv`P@ zAV|iCu#XrQiKd7^)ZGM*$BEeC3!j0l$I=4>HhVZzn6Q@cW);S6GD^9{Xc zyrBBGL33%$l;MIRdNuQVp(Z{vk35!nMEv`jTN{l*(*+H)+9{8W3dH;tERJ+73Gs>1 z#cIbkP8Z2dXF?8A188bK`*mSI7(6DW89A(3O0d3kNQvf+aELs&)gk1h)w_4^ z#{CUGNdS|R?_9?@|AWnef8;b*-vW`dks3Z54kxfr`<|%NS{m4T=015ZYf6h#3cFF> z03$Ra?^_?NTFS8a^sMpa+%MP9*mq_=1;wu*PpKIgE^6i3jIm4Om#82!D@c5}%o+Rv z{FOnl+Cb^OHyfL+1^({1b>_29=!NZw1WG&es zgk5%+$;*{_qsaw+pn8>8p{Z30)p|w}C_nq@UFkAG#@n4}RLk{>524S(Gk8`sa80yZ zsqMx|R+IK1vP-MVzUN6?(&+6nHO5sl1-9y zST=xmD3&2*q>z7hgzc`rJ|7&v5T5?FCL6W|UTPLXt%ud3dcwi?hSs}RcRk3S{6ci{ z;uBeilQ)gf+jA>0v)1MA6`oq7W@;Ibys-V~uw5)8ay6m=vQ}NZ+Q--46lhv4#dH)n z1x`x*ESF{gy_|IV2r-rHFMsuCk@?6nFIh?zDQ=6pN%!<$fBA=>zOH>z0(xTl{X)J| z)Q`m&`}=!YRRiRnete?$NI=fIXN)bKBzO7N%=SCwys~va%0{?t+30Q9y|#A;S-aD+ ztm9rerqkeMVXBk26FS*G-n~1q6yHCGR=OJPb5Fb4u}p4I~BZV5-(&ETea}nFZdxPumFokj%b)* z`}_M}MW~Rn#UC`g%p9%@tt?S64PRKI9YzOZIyqgnk{|Wy&iUb>MwZ`}|BDR%@t>o5 zPY#&m3hG*ojSX0o^NoA;Y%*xTUL$!Rfu(yA8UxLOk3gU_$(=do`K~VHtA4{U+`33l zXSX}Ly)o5W)*nH!f)d4z@l)N#rLNsio^?pU8*h5zV%-74ARjv*1NpVMxC)Q#p$>KM zoUv!E!sx8DWG#u;6F*IUUpf?{Y-7xv%VpYY`IuyJ-07&f&7()r{jU1lnbq4Zx8B0VYDUe~{Fy5tzi$QSQS z@m!cGoIT4b!P@1@P~Y2#{3BkCnsp5+=%RuC3Af|vPvCG?0v>0qbjwpS zybGGUnvUIor$$2#pvF{j!RGh9$YOoJsHfK*S!k?oC8}YC9#HDPI6-_a*=Z#iXTIp(~J-sm$?d=^e8&2!0YeV$t(v7k?vzy?9x#MFu`P#Aw zi-c_*FjP%)#DJxI(k+qrSrI~9#@wDt_Q6S#S0v*KBy$R)cY;sHAKV&u4hC+WOwf1n zmTY!TPsbZMg~qs-5fLyqj`;XS*zQg@HfN!YUD~yP+o(qLO81dNFZAtU|M8LRhhKK2 z-U|6QfX(MGc)GV5Rr>6PFhM647S4Ol&zDL`=Udg+dQ)_SGePvMZB|s4>|5PxN)+mL z-3gb04$#cGeqD`2??y)ETVB2%U0$|&TXamJ4)qd9*Vt|4&Kx2BL{znYo}TEa;e&ye zwNrf42{!pkuhg!1F6COG)ClOUcEM8HtxTD^%RMsX4c7~dslf<+87-l$npnHrUmr`B za5C4Rl5?S{uapfo@;1b3RN+M5mZD3?;(=q}IGcpgTYmLRh)s{k1bNKCo4yg|S~wn2 zZ@q!^K@?ToH{)%eI^lSfYVqC?L(2npnS)RUaUBaWdoO=|`?|`Tyz!nzAq*MT+}TiR zZB5P2Fn6~cwEl?hF035=QgU;^a?XKy-=m_g)Lib&Z!4bugI*Gy!^puXpJ59JbvP57I<-4B70eex2hw zLy6FXJ=YI_Wm)VFr%cyb`}xUUyhu^~LV!nwfg+ArAGGKX zqGHHxGsoh^*ICA_gpN*|IcEH(M1))?Y^I3XY;&eL*7K_*|FPM8wYx82WE1hA*=A)P zH74MN?JuvzrR>$#$8b*-ee)ob^K=)Q~(^xn!|(V zMJ+72&ny*Ie*~f7!)r^nAe&6Uj)vD9y&nEj4r4PuK(SW|M%VFiarHFq z)b5no%)jMGhQRq{AZ8Of#OlTur5bq-YAqa?eNy_P=xB^3i`WB9xrxV#BSC8>*(MXh zw+B@*$MabIqfBY95R&6nDPsw3Km&Okf~s3W)YWtEjmJeI>KCmBjfhcETfu zw6`@%cxK{>8H#aFA=MxXri7m8gBoCskgVZ+d`DzkzMsqGSSUj*(Q6hE1>&L z<^L3XT|7tpzWOBzn#lQwf#y%o`|ShYk1U@VB!R~4@2YiFu0DAo@*s#ag5U39NwArv zxsr-r0QGuX{NZ<$}rmD)z>K>-cn#t=<^}##X>SVdGYO;6+Nqu*8 zr$v`~W>NdcMsp{`B)V-SN2{$GxlZMtAR+nA(C}rKeN?P$Fj;4Jq(U9myuG`dLM_?h zrfGNlEixU+IVSR!rn^wjwlNziEAXK1pZK1CcX0K0 z&%CZ{y<1hTU*Os*;hl~(%Lw7RE|vh3s)@bkKHocEe*=%g&SfHF0;7WF+l{4dY%!l42$!7~x}ya(J0;GQOUOK)w#?4i>g?{0mRm-e zWfd;bEdUW?z5l+Ecj@5X)b@uZn)Y+rM&lX$OM=&qtyf`Me8n6sLSw!}k&!0NF0Nx;q#B6D{cN zBYn2FII|)ohgQyj}}f_pB@>Q5rqq<+pkT75)XiOM2BpL zy{l&s>LI!5x2%FY-XSEQ_O~ABZ(PimtkHL!^e#LN z|ugGbv9DO%D)KaLoAjLE58mIBX=5?of4`tsXI~9lG&Kwhn_O(hB^h~n##z<*!n&gTsJQ{KJQ8$xtthu3;H}OD>9w)FPVvK!M zAsu1P0tDLLH?nWxZy4R)9U?G+;Z??;dW%3V-XW7KH-x_T1^753T_gbUI?> z3}EgK)lG{dTy`H>-P~%?b%%j*)M*MkhWe}^^KwI=VKGdDH{~LPu+!6V7|s_T!|)Ko zE+2}LfN-{JUH$Iq|Hcr~!vM^tj;MQZT9Ee+4S)I-lZJ;?z=GT-zVon}NeB;-9=Uz3xduUy%dKgXI zGL^lm^!o({^TypPlOAf=g!@1J)ym%bOlpCVb{C zb-?nhOT~8Y3|i<#`5V=3j?4OYLp3$@*{Or%6;)hIu_zj~wp#QQJJ2xrlCCi$p>j?+ zT=Fu{$Cs;Pr5bef^lWDzMf5@*MK*KVB;mVUDw{ZLi)EanK3q^-owCGKK-~ zS_qNVHfFD}*c7`5#h!OX`gpH+7h9r_a4>0KH640&;3**?Q39L2 z{u7z<6Wu3Oq!u)9|A~1%k<}(nGF-aJ{LMUn@m)Vf)^p)XHM)kcv{d6JQexGuoss`W zHm9oMU0Wc$HN6Sqg)#CvW>m5^CiAX`xU{#mQPp0|8CW`7&BMyWbHvITr3{+X-Ng7< zLlqN_e%zR2P#qeHzrq{09Ji!yD%O-HuEyHhWzzxxN!TS8?kwvL(n`ENoP8^dtfA zo%CMw^P8dJ2{Qg+3wBq6GCJg%bhD^eWY(Bkb0cxDR-L+txtZBTD_0?rOhD; z(?J|099=DPS<14(_M5j)F*5lFjVSL{d}~58Ft0$=9GnOGo5T zyKmn>TDy?IMZKWGqbpb@o8of-XQevnB3kvHQ0K{q)L5Oflv zy{>9fDQA}6eIAG0O@)W$(F3W?jt&9-Ns`u(SOw_*i$!$P7!|D&(Sg|D_Cz+hG^&X5 zy%5KQ;Y`K;`S4t$%1i4-?@qu_3lx>r6@|*P{ilu)t1EvF-O-;9OqHe<;lTNTFpSDG zGs)zuKJEp%>QLpkA~*w_2n54l=`uXHcn$LtCL_fP07j;#X0+ce6$bem4Fw-%O9VxP z0^$06i0+h#D^O#-!3K*rFJE-o(sAeh~bi1@Gxd+KH!dwk_QmF97Ir^aFY`NR+ zk*|Ytd@7(kHMbM&QzPP8)<3vp<>W6`A6LhU1}_@z zZ&ItZEj}gEy#`5H^ph7D7%*Qyr`=)5T%r6iy}LZ<`-k_D)CD4tP6z18iUM+`+Nw1g=T3&e$%AssX92I)$*Lm&L_Vv33Qu_H`5J zX&CobJ8Qmi)!mM;l$Ss(qDxE_HM$f)$sDB^)pB8r_{6*Vj&lyINqYgz6^28?Z_k?F zV2uQnqn?UNr_}n{yrz-cn9GG^nf~jk*{8}Sc(St0EiJDMg~@+YAXy0MqTVwu?bxO} zELHEU(~sL=yq@thzNL7Jk@uT*QxT$=rOT2no{c{^V{`7211*T57Ks*NzvTuH-E8-y zI?Ryz1MR|g6BZ<$JmrR5Eb?R`3z4VJpA9>MGg=%U5or~I*H|SQTz6J7NCLEpOwuq(P9sgrx&>fNM+I4*QBvH1d*Gwf_E-sszBYxI=k7~)#{nH z+Dr2N`uFO8i0$3qVEjYAdzK#}!aw`;(Ge}58N_$}SUhpW@P$u*(v4CuMUp zqkPe)s-@5v% z;D-=yEow2Na(hFw^0nc?0-kn?Ltj@*L_(iuc%AmC#O#<`Nj|8S$uzYb5No_p;Kw-sQ4IrsLy^Hze<`- z{jS#9h#4Y&bw7%cZ{bEjo3HSlmOiAzdi3oms3L$^EmoZex|mFB1U@D@Y_=Whyz5wn zW1`PY6!V#Y?BuT41R@ocg;X{}{bX|AN4@~Lm_`ZPU0I=n?N(Pg=fCS7)r2yyI~8$9 zoeuc?`uykz$Lh@k`)boby_OpVDu=-KX(ei~0M9C2AY<_ouotK8wo~zuxj3^!3`s~7F3kRn=c?iZBE>rWbs|9Sf2QPr{=w^G z@15FvzE?+j)rgvBTY`y2+IGv!JAh7@bc@r`pFZ6Y1Fyb%KG-)}WZG=+{sI79+6i*D z6ak{EZbeHnZiyXPAk9?Wa&o^L4>gQAGw>Rum)_sh-?W&#>cdbMSULW38R!wz+}sk} z-1htBbb)EaZUlpFMW$7;0~pa0!mzEuUX8CR7PC(T0m`G5o)Wo6}0VxqKIqJp}EYzAo`QJ*(`q%Ak|CF74NT(+w`#9Qiy^&i^q z1HAU94^k<6e&Kg;55*n-^QHNdGo*NBLE%j7DuG7|Dp2Y`go``$?1&Ptq2uw=vzJYI z<3CT!wa&Fo&&H|{){!zi;e-ti&7Aos=80ivs@yt(j7e7*v)H;Gxw^{T>0^0@H%`O8 zF5@P6a|=#ioo86BD~+vR%RWw?aVk{yDEHp(FuDn`qu+h-3_W$3LbLNl7x(9_{rSZ{ zYIW~?)#VlX#?oXW-`8G}7E1Q^s(Utri#1@+nniI9qXIP`Rcdg~(JuEgZe^hGuF%rd z((<3935k4)jfh-O6)-lFQP@F3fmdj>2hPs-k1kS|Cm&w8pwX72ZtYK52vWO8MO}w-*Ky99X)OkHQUM+;+z7Yu?s@h&-q8s*rAe{b(UBL+SU+aUl|;nfmx@9%*5_bBrR zi1FYNX<@@iZyll1>#Jv8wDb+mRE=4Km3OcS@WlXBWN>Z9t@DPn5yi!(56fZA`6O3i zH!ce&8g>buH9FgCQF5zGZ*9eN=Umu|e)ZJIn>Mfwua8e%j?qnZW{G5A3=WhCO@K7d1>sbHQZJKOA>ola*@%&dv2J(7g}6JX z1F~U*^oczq2cr`um?sRPkMC13aw_k6r{Ne-C@1rorXr`En$G#491BHxc`wWrL-FCA z9Q<0fjL5F5I3p@PK!yR0DX*-&HT)jvS{ts*TDD0R+#Qlh4F}Jjz993a?G>MlE(a8R zAZEH=n~Vu@WE`wS;#R0*JvDB?GbtrK0?vlhn<}+7eNeCznY7$`w}$HIT$$_rSp0l4 zQzexf=+wAMdcOPA2%GX~1-&BEiD3`@sfkNAT8YN=tOsM5MnVm1wcA=b)9B0gj*gc- zAp8+U=gbSmQZ&{mk@oS@M4l5h(=E-}^2v?Y)rfuv1->tyF+e29*X z^+&7hFu~}^8+XsZc^%tnRp7e=pN&Q0gRS zP*9x4KJ$=RU7>y%ou?`3YSDe?K<^^E<*Rv)9ZN8;_DGzhqGP?+owTTVq;?M;&7m=u$K%kEm^iF_uMaeR zixn`T=9L{KbMp+n#h#1>Dh?;Q%FsJGxFY*3(*tk7Xw!qz<-_bgd} zfG1FPbSyHEbWI@Z>56)A?RCO9D_3X6Y)|!g?~1(tip)9 zsIpS*x|scMdCy|m6RVHuk&&Z*8Fzwj#~-+QU;o;b^&L6=(ByvV)1#_DZ_v?oUS;bB zS66bUrQEFRuH&qp5V(nHDi9aux~pU9oCBYdlZO^t>|E)*q8!UhhB(~U3&tAtK0m+6 zR(Lj&BQiPJDjunHSwKMUJZ}OQy@;)Vo0=fA>4~Qt9KCZ6>N_EBI^A}gGhCXXECJ@= z_iUV;*>n2{tv33Va<_y2k-9qFZEaQ6vO~}o?YU*??nRbE5kScp6=!6?;$RPM%~n)* z#8nI%!^+mq?8mnO%yxvgv`18W8R82kAl=nbdJUp&h)t41CfO>`` z+yD?QH)ioUP*rOT2yfpzb*sgVT}|tXWI@ru{)4ysdOOuK9m*LV6SO%lakJ*;?DHdP zINjYfspvu4s$~2@&O!X%Dq=lOF{+hqh;K|@l0rOooPeK}#*J0$OQ{A2lS-uM0DYW0 z!`&OE-PR|=5!N|p9sdB)#m~OTKXIWJZlW+GTW(y3?R)iZWjN19f|ti`(!n^cIPc@d zNyTCQnSs-C#k04+x{+?ZrSQ5HbU|$KY-#3r#gG z9ZJb5Q98~1mZ-9kuf~#A1!&}B290Lm1~i9SzyJ>v;`sC=nFa9D>5kAik(FYr77y*G z8kwqsZW8Iz@CV8&M^Z{Ow!n%*x=XH>+m^52Ar@PX7wGj^=)`4$7q)dx;YFt2Xy?aPJRvGzLWv)=CJ*WMk zw*l(^`lNm3Om>bLYK~*ZrINL`-wAK_>*;F4>jD9a*QlZos_6O%g=!81nJO~ycdip5 zA!Ls4%T)4~$`~ZR1VA~p`VTMeV*KJInba6UvVbnSzjsPMWqrV}%d#H>$UeowBfS$V zJN}lQjiDoL7z_oyC3cx>Wv)yj_C=$K$U@%JL}B}KrNfp0Gwj~m$8}|8Q^khY0|6GA zC$TGDV&M8na#MQytof|JUCX8J6e-IPY6cx5?_GvFqSHBuF4b4eO6@??-5iY?whk7T z3!%Y63D{CwZ|^uC?3-#fF0K-N(`7ofPQre`Bwb_nmNH*{1dqe|%L1P@4LfLO?)dKg zn$<{_^Kq$0zjUR*}T z%9%1-V}XHeM=Pr=P3zv)a3(SPnwGb3iA-y_J{FmFnKDW_z2$1`%cLYeQ(FMc01urI zpry^!sdaj`I=&CiyyA`ZxRp6h`MjmkIp9L3u7)YjGqC8{C65D_(o3A`I-=vW>@Vsc zoELS=o$&Ak(k9wj!&C1n2htyZdX)7DU5)Skc>UCSAs%tezOD9xY-;x@Alpl#0opB+ zAeU@=twW2SE-?g9swcrNJ%Im z@V(5r<9P0!^P9Qz&7HsY#1Pm!t3J=O)>~}ae&f>lcUeL94KZ65f{R@UHpT|3}B9|(!5J6jYrwIl z-vIra&ntB6ps=8ObGos|FsCBiAqY-uyp>U2ZZthrq_EJP6t}J7Y#0^AG5y&FGT4)U zv>;7(RCu}K$SDrwVN895Mtb$(GmSjf94=|q)^L{8@7hJK=?(3s-NJs=r=*s3p$qW1Ij(zhI+0+ur zl8#Cs=REcBXGZXpc7O7movaccJ30)@$b4jE6sILY^Shm#w>e?R<22tns+Ry&qG!YsCW1s{@= zBP&`u+7`i3mMx__eDk^~o}1ub-&@gNb)Sum%lBpJDO-L{w+sU*`&*S+p3157UXCs< z(dD;na%$gBJ&wtH+{~Q1Ka6PQE;rF69HYO<_@H%c?AJTo*OBFUI^<(r&-TIcA`_5M z%sIUOs|n*z-*^5rfVt26zu?2t)CAW#G|WHm%&#!wfaCYdMo*(cbqdGXfF?(9L8TFo zW(=cf=TKn>XY@sL6eLpi?s?^-M1)oN-LW<{Br%J2&HiQzjM&jb032|(=VWJ>b%$LR zC776=HWM2Q5BHc6zZFg5e{U8J@zfs4n;zoO)dvFw05H+rTokFhVYyyvB&MK#J_ogT zg#TLqtq6kGi}7Kxp+2X@oY;FjK#-GbO7OiU*cE@*QZgEu?5;D_-3%Z z_oLx+)*MvP&c;(8+I{c2F`h{xP%moxv{L@CmrbfU-w17B6{n7A*)W}-K{jVgt1krn zcs_jqPQ-{F!->PiW?jKOBl-H&Au-YA(=@c0Tc3g3WS5i{>c^`<z<<#R00n8ottPsKa=uw>G z#?zCm>WTcqJv}{q0CM1sC8VL9ODVx%7J|Fi`n$Mq-sBBIVfL9NB)VdmMj-@}7CR|; zSt%!@X@|KX7;gN)S-Z?}@>NrRo9L|{R{C2v@;|bOZ!%@-`fa!;Kh59qhVxP@7%w~4kc*tiz~=P^BZ?hcQzzOgQk8ccbc{B?fU z`DMbRUdU4G(NN4GMV&Uz6(&BwM_CM@3n{PM9n9@QwHW>N{jatB9mCZFk&L0*0;N6FKxL@lNmtOOd066_pJJ<28$UZqSNFcXHjofgTbbKAV z-zxNbQTU%B(7&2O$(TUmxEyi<(l@$j3-b?OS?F?t_~fsNdZLonV8>+s`(DN?^yQNf z?;e(}$zTyfCN(Hi;?7^6ggSY42h)~! zq_yfgSM!9vCVo2QL1%E;%w$bSq~c4CHZ3Qs_f$Axc=ST?Phz9vh!b{<jOz_?c3asYnKzp=_WXLV5WWsjfn|*i* z%IfLvcLVkZbLQsefz9h=37viu@&!huG-FM;YeYF7%X=iW$${wYLcn_*fB}k)%F4!-3K9^}o1WgbIK!!IDP8+9Atr$- z&}Q5*f8|Kg1C>B!*dvJ|Q}UGDi-FMPMmH%o19aI?9}M&YkJC(A)pJ}DLiuqc8^EMm zOYH#{aGY(7W$+eajy2a=sJ&AmG2O{d$8sYH@yRtjJGJ`#vh23b%8k4HPg)#0zBv3U z+8Qtz$g|R3vd$|g2s?SE^JzPF>cJxqmKm{>BP3<9$xPxK+v;#h&+RugyD{2Cun?f( zTU}Mz$c=wUNvS|z;*jN~nahb`$KhOY|=mCdB&A5SUa?vTR|upU*jfy&H=c)A;~4bitTN(+t-9o<1@ z$hv0o^QY%dF9xSb#gyzQ5!%1N)xHU>2)E{`nSKX*_-{7aH%CxywA2|zZ56*v5gA=z zEujviYwk#`mC}3-#?@VK)wYtSPt7mSO%a*Xv<*R0039>buztaYXItt8Hc=~*)kpn# zkSFpGU^3XIu`9&_1nLK?R~$v@91XWEEWB&yv*FGv`lii(aBr2pJ4MUOPHoN_8g+bX zWPsPbkLB z$D!o*uO<#!))tOu@xZ3IxqPX_baiZ4IJ;^UCt) z3+;dBCjZboe<3(2cMQYL`6!u32M5>1nu|S-X2D z+=H$=PC|1##`4AS_^QkiK8>B3vF^yVYVIV0)(KDP<=tc6r3vt8#lRq9uB{tC_ZX@6 zr_!uH%A;AGupmRyCgkf^aMST{+13gPE0L9s>91&2*oUvHSu-wUi+msrrF(eQXh^7V z8S4m+0Kl9p-*14uV*pwV=>Xu1xQ#?C?J;-Z311IXGn{qAOixABdzEW?=h4`M0TS&T z_#D$Fx7P@{_on}8`|Zb2Y%XBLCa5VXF9WLh@+v{*PLgWTy7(f>d~jhaZZ5ODWnca! zYV})^M{k{pke7R}-|MVefB&|u^xn1QGP|7Ixs-~a_TZ&S+0tVP_Rn|r2miZR4tTC= z)i1yN9mD0lLzpPHU0r4K+i$u0>D2aYKny&ND_19v%+0epl3x183L-y>)~@>Q?Zyx9 zX@njeOVV?eOW)94D9XlAU03E_ocNB|OI4lnKU&nsnCTh=a6wSev$e48GT(LGfhoI< zy#v6IHScYme1r4bfrnlR$XFPgoaD3{hU~r#d!T8^9&9xUc-LXUONe7d%hf(@FsEUs zq@*BTc9pN;li9<%ygwF%fb%MG(=1mjM#)Qa#SR?m0Ct{Imun? z2aPtw6HD2ptO|GNs$jqc0}Qh`|pl3_L-+2@ik zUSi0<^<;0zVm+z}G#7TBHLsd9+9pki)#{$rc;PkZ*(-3X*n|)ZySt)PMC9Ibn2tk z^O8>?FMZU#U0&^Qrdd=2?c!c{Gh@gFk}7Y!5xiBC)n&Ol!n?3o^L3`|+~g$P948>n z-)}s91y$FjO;~~lkCI&uB*3_AghEZOj?P_*i@Vas=g})%ysZxgqqi!_3tawe2#Ao6(;S7AX$|id5`at#!SiNX6T(VMohH3}^5= zqP)`{c(S4Th`jRc^KMNDB^|stMWLjNo{>gS=EQA^i+!-B8YuFt!_I^TDm^_uA|(?4}#e~s;a6p*eh3-W}QD}7acq) znb20j++W*v{fPFHq9^rp@&?PfURZxghwTWpY5u$#@Awbq~I(E&8$x3VY7UKdM|j=drH~2@G0k0AlA3z)C*2 zFWMOk5C(ZugERJ3K+ydvWY1f5A9z3{`7xoI2nTVg%Rrsw5H90Y&l<2&R5U%YS2zD~ zuARC=C^?sF>mB*hlHJ}Y>v~wqK|S(vg6(vv;X3R{*tCG>_3`|*+?lTTP)X1+@J&-R z>f6I~7!DTCcs|KGA=3s16uux2))ZQ2`dpgBk;TRQ^K*>#3dhnVeOGap<oiPOM@N2=89YE4{b1{%j+etLFP$r35lsCxB82X}>#9?YQssy5J4=U0 zMiQD7fqV$e8tVRw&-wGb-v=WYGF&t?mj5Y9{br(n8uEM_*}u{y#+j?Tn?m@~hK}1UQ>Z(oA*qydeS`LLSwR>!r$%_K+c*l&` zhgs_cx3GBDfQ)EqWpxf}XvwXpu1*cp%e{8_e4re9(RDf05MTAVEF@cj$bR|Mwc+(9 zD(Shs=G0T$4?_gOtU7i4XOLCAuOA2ZBxuGB;e`$N+3|lGHUoeT1(;d=S}B)s(BnuQ z9v8>0Z2#~^u8!T?uBC?RGW$+2B25(|p{vOXILgqV6jRzObQa4r9eE@PU#S zwBFHTxo>>9*PiKrb_kLD9ws4ijEd2Fs3dA}9*hf`TmF3gMC$ zJh6^sj`VC5U`~k%>=cO}K5NwQ`J2cYJ)}ERZjncN5ZR_std>eFe zQO5TeqH80Wm}N0p?f&_({Shih@wM>e_2`K9u5ZJ- zM&U3S_rlSk>ru_cC7+(D_$G1|elY1{ait{AmhrUK5AUZ6kB&|itSIGIY%>cC}_o2w&fFNj5LbdR$I}ZS~q+9K=p^$2ch<}{DaG`G)=FYZ`J#KGSX-F?31vNg9)A!~A#7_>E)p^({c>{W|t z8*K)WxXPecnp@eDkSUfPfGla)mWS_XdW} zng;BTc%k~(1GM$CHaka-rS`GW3*l!NYSO)9e_!Fi1!vb+)t)6Hj`;{wko9oyLW{DTElU^%peJ{9rW)x z_CmGfZG|yX{60?={7(AH?si2*vs@W#)^^0c+{M@3)3v*JS?kv_1_Pv;|5sj-s(w6y z#@b!$Ne+aUbdZDH>v7_?;WhPW2Lq#>F)a24K!{e$4R|j{B8&`?u9H3%9pQv)ax-(8 zndZk$6`nbD$r4eOaWjdgx$f#zu#EA8hSD; z*@x~9E_45IY0zRG5I9`Ws%`(f(N)~c*IU=BhpKXu_UAJUlQ{7|CH2c62q;)C0kJft zqf=o{UNq>29XAS2-Mpzr3k#;zefpka^@VQ|dOczahNV^a3PvqE^lahQ>s6C?mjoPb zr>FOm!MwEcLT}QQ7$#oPQ#y6#cn@U--G>@R%=@{l6;Bt^Wdy3R)q7GNV0<7INw{r6 zm8mKdYV6$au9-8)hZpl*+5&960RY8aJSD}qYkq-`N!g3X$`7SnS#`HikKtjDLyh*H zKLkEbFRTvmfsrJdG zu5(U$GsIY%_()GL-e$Ve2s9!QcMm)Oul zPp5JESqD)qog0_VDY^H35x4ZbrjQ_g?{n(hp4Ki)&G&Sx!oxun>FFVNtFG?O2kkur zlaqP9Deim&4rl7F^(p*n;Bo(Vb^2A_ug9Ry*Y)BIRj)gLc*3uaA{aLas87f0L6rRU|B=Wbg| zCw>_MIoxiqk3xGNF`5l!U2Jpw*G491Z$TsY=!(GPW_QYZK92J zlwZYQ_O)VvL6!?pZ9`y@C-DqV5C1~H`9I#$7emlnCwT?+qk$w_eAti~uM#V&fn6PA zvgl2uO6cJReDZ4JhdiUbocDB6N|~w&*L+gc&z;+3zI0AePA*;4hMQ>o75RfT=WcUd zrlljWbwiYXMnCF9YG=?sJo7Ls+EbT4;AC~xxL*B=l$6@`$hgj38!ImilsT2EN!xbS zD#WMkm+Y>jYjJU74~!w))wH;?&U(jX$%^I!a@sAxRNJcHXK8-^X8v+J@t-$JklcTe5R&ukdZ?08v6vi_zU9kh3_trFvUm$$gfx6r@aI?7z%&)YRy*p)BW9j%* zWF71-Y-t6+XbOR}G1y;i@ic?An{?r+X*yzab8|}}u=#OCH*3OWAZ z?f1EqN`<<;#W~xeFCjk2LxoTouCDqGX2+_BH(6(!j@1Bt5d@~~R5Ss{le&AmayxIQ zrt$E*<@QKh$#$@05`Y-q9AE+j>FFf=CnceOnk>#`At3Dp;(db&dFpzTNwr87)t~&( zPg&#lN_)}v#LXORIq%$$y^MxreT19f++~i!!bePvCcKib2IoQ9%i?heheYBS4`Sb^ z@M^@zA3V7KfoFc6a&~L4m7!Rf_Yyg58BGSuGISiZ&G$wxfqg~oQSWA&*=ptQK*xrvT*mhRb-P+#Eqn>(Co7|9k5v)g? zE%=0&S-}3^nB$34p7%hVEOly3z4;WuEk|*BM+>k@<5!Rm3=Ymd7r$R^7v#0;JMpQy zTE4ulY;cr?l~tcR#rqu}^mR|p!Z})k>>Fg+8c&5-1DFnro(z{uY}iX-qt=~6S8&1e zq3x~Wv~P#>_%XS8l1zmMF8S=k*`vOA1&QH0fnW^X&bnBZm5R0!fWpOmYK}$S;sU2^ zUp$hnPrio&54CjYK82$rsj?cvlqV4p#*S6JY}z7E~vi(fJ9d>*vd@%?2_Y`LY2weY|hsI!|pS z3rhhhD6S)pX)ej_Y|_?wV5tZKSMB-~65mFa4`7N4aBOqZ%6(`G21y4k?qu<7ptnt- zR+#__qfFi+=}RDhk`{?k{*^5K`W^_NuNQm2J@`X&{M|7B@G4c8FtJu#{PhoGJ?pG- z^#%u`ASP$f;!~xG*2=4r@(+~;cG?bO` zttSwAuyH->e9D+WZCo`=VA`yIAZI7d)l=kG-{h4Xz^nM=o-ADOU7dNc!H-HtRiP4b zaa973KRA68^1frLF?RRfN#E4#*-I=VUt4J5-*)OazXur~Ja9vLs~gwdDIoce5%=%> z!+zo~TQ9a3pn~M@zMyxQYu+^ZmGm5N9>wrtzeVsY9uTW*Z#Wg+ct6o8&?~MXoq`au zLm51lOJyZGb<#JZIXgdJ+uU4!ATi`@$dwmb3W9^5Y$vx65LZix?OGmiB;}*M(rD>T zXMOdhVo8akOZrIiuhNV9aEq;64{TgaJYzWD{`i+3TV|+kh`O#g~qbkuMsA zv6dj^VCZh|B!=FRaK_=z&LrNU zDO1{U*pFz16#CqT=RghTP!Qo1BI!F9k`VtLO>N}vXr1!QgfqnYpRi-coJW8(mYm;*14CnHd!LPSYmbpy04kJX^Og0mQLv8!= zhA#`DUUd6<3zBruu~{*s7iHBHky684mTh;NTj`S&LdEb6PeN7s^bvi1eWR6w1=)Oi z7z}3f%!A1A_<}Eo-e<44^5^@^3 zR9ilqq;sWA$fbIIqQc5r(K7d;=H0CCyO~d#+Mjx}O8P3D5`T16h>O{hba=R|(|Lhi zDPI0_z*){0kNpmvQRHJg9KxqUv`(zQ#>#BL+|a{;x=2^sXB+HWhNiX5eSKuE3suCY z4tnWc)S6Acr}*vZgLO#LH$R&+IvyMC@OQ?Co0TCcQmWF(04IZr&U;3WA?3!Kq3z@> zJ;uBokENmvneH3aDah;|+7=)+z4zml=dn{6Nc5nK@qVRU^#+s(4*50%z4RUDa_9$j z?P={(h7xn?NftKmf8JU}I_)&)k9Wc0n#Q|o>BD{+zOrYCyORYBl^H#%wR6>FFloKw zxEmybI|DOzq*C9}Z=mDSg98sJ+Ok%?PDqzXAS-z=4y)bl^qyiowY$|fZ(>WWwuT0Y zqhb*C+ESE%;meXze(3>H{Z`|%3*6sv$RjnG{r=EP=P27Eh>1xfZOzy&1-8edS~=K% z^kskHL;ve74zUD>&61&mzk7?gq6vK3dw%NnXmF&k$F*Wiy8@+M@~*A6AQcH*qm`P!(qcWrUJyhR9#o~S?%mD`$) zm*w6b##w9GFO22pXIt~N43%CYJbB`iMFzVBEalv})7D@5yhyG*aovhdNkLqff!t3H zNtRU8#$hY+j_w%+T|M*DS4}rV(B6}r13TKh&*ArAO8}?bWi)uu=a~P*HrstYE=KFo zqbOdNg*;R85zVnZ0&Q&^CjDr?Y{kj6URlOV&zxfQ}Q7<9qLHIv$1!<%8?$X6zomT=Pyq@C~}QQ;9ZiXWM9yhhuw*6OPjjS=1$+TbH!76smnuD7=(AZ?_c@6)qYnN`mM^I5QuuXK{ zXZzL?k7|kdJ7)g<<4Z=OACcZSnfd!ZZDID)W*Wj829H|l+O6IR^O@pC8X4Eb<>eJK zXhUe66c?8&W1fC4M7s12wUJlcqwkzqCiiK?-9MMx@o07;5a4UyILpXRxDN}nZmxi z!gOa>^V`-i2l=~LfzjW6@E^Kb^f|Gxvv`O~tz~)}FQyr88v%W<>En~!+1VNKsVp$5 z=9yh?b*K(q9y)Y^aoN#ZuK8o~K;}XGc(w3+*bwg2DxGY$C3{Z3;sG6EXb4*uBu=1U zU}%^-VGo0~8&?UywL%%0Pp;+@)XqyUF4bWzqF9gcuU2@e--Kw&%U4_1NDyFa%`nRt zPh9@6=T@-xc#X%zHIinZ)8n$<6LDd9l#W~jZ&kK$+6J(H* ze*8a|zI1o4id58RswHJbap+cb9`w*d21hrTgxtS3=oCGrOc1dhG=%u@KJM&(q#2ns z#RCeKUdqu5doUn?tam!}ippZep>lwhRa7HOd+HneoXZ+@!4Q4LQJHqPj^u7beVLhZ zw)Bg&c_md<#aKD!%0_n@?#ZH8~-RlO%dVd8+{(6rLSUc0qqXn9TQ-MK2@qt!GA-XJVZ*Kdk**<n*78`ulc7IH_6}KV?fD#%E+`_dx2h>ITN#(xW#>6iMKWGDrEFS z>}Q!K6R8;W;k^vn(#sV9lMkHCr``WimC5l#O4TQfMW*ZTNn|)l zK$MDmdZER;Lxk0+^#EY_Z-eQyQ~69otu$g5Qyr6|?u3;i%&=YeA3gGDqR8p-5=bgq zo6=kw&!Z>RM^oKXSJt#uHEasX%3e=IXf^eEJ~EqW8cPy>k^;|loRcrF^2YgSYZSE$ z$p~@Xr8aPn_a~vv02NYHIJt9=EyHM?H`M2#St4GyEO&K7v_!ismqcy-5y9jcsg=FO zxBYpZJNOJVE3ta~;KeEDd$c4Zk82MGX!WYMuh??2uYC}v5PAYx_Z-@OypxxwV(8ql zq(>%hv zcH(29A*Ady3Bw28fa4_ai?1BTL$6LRDePiNPF|js%dBmEjk28oH|rJ+IsI00?a?wm zpPhvI?4bj1xwN$-L&t(wjk0NEE=g<+7Ot$b1A;&M_8*ij3R$v_jvE&}=M97j6v{!R zPB#XZ(ShX35!uvq(oFx#Ilsh*TZ!)cgg*lOPfz9l`I@iMwT5%l zwX>E_KKxf6b+|!v{tEvcnS&Wp%oKVujfA#>O~5|O%kq(4y+?_;N-`Vlv#sDr#geU|h^oN)xly1=J zw3LpOrluQ?^p8k%NyJ}x!ib$uG&RMJt^$|BkdP>m>_0u7@lbF%BQ|{SrERm|%}@jn zU9av`?N=FzLX4OREr+C?mE8Y#}zVl zA&s%OWR}Wa+1tn{WCZeA?6H-$woB7KR%d;z1YY)Ta?%EI*?0Qdhp41%(2NnCfu%d^ zHtjRjK5u#ZalhMwXXWDguzOl};kB#c(Qzf2i}7&7g7@#85p)%@qurFPBOU~dN$I&; zp38~RRixtW!{y7}?IRvNthRe&7Dms5Ng4R>&$Wj>4|X#%!MtExMAYx+uAp=+fIvAVEP0t{g7zn7dj~VN$%*8eP*A_f2FfbZPaa}Maj9hI=wnf7pTEnBT{_oVl7MRYJI#Z0)yw*>7a4LtT+BCv z!1Y?=MJE5;qnEdoCaATiuWl`dF1{{9=a?fIdZZo~2xxe9Kl%m1Bw^uYWfebdxEF0R zJcdewzC`j!WN*Ekq>D-*ytT5@yosY_?Wzb;8Mj=JT4)&!*y;&re(X_e1f910Jbc#F zl~MwS^yQ+_kgL44l!<=(?#^t`?D+h;O7ntv+HphtYP0>pB|h(M>|JtF14-r|f8k#Z z4FB)XDz%=Me$KE*Is88!6WBKY>~TI6_YT`!kwAoUKko=6qN7sgz zhXwgMI_plsWvrhq)IY5(ojm=my6x=t1u#%|+Ir4E{LSmBN=IwpHXjF2)`@QH{bejL zR`Pi_bHlL^!-AfP9Vpxj%MW5XY=O*y8mNg~NL^)Hdgq77^lfboVbx!ypHU+prx+L` z9Y#^*sFvCn*roY-`)c8$XB(0h7sL^7xX<3{NpvBV+J$&7`a;}p*{>UF>F6w#8&7|7 zu@+e_K5}#QDv;h0c>A+Gy`-%CK08?IwMUziZ;3|@7Z*SGp4(?!O5CEd+yDoEcJ$c! zmZv+%BztZWN*zAb2-;sbgN1z{<`&NfN9b_aPuJwP2WLy2EOv^P0g0j-jSgk8T}VLg zC(6?a30kTZf6aylbh{Z??t^O1NfkF?d<51z8V{Et46|pN11c9VnGFf{dEryX)3Ck; zRIw8FnaKzB)Z2&Eszk6l4CFBDIAWC!5(_=ox)qd&$K`4tOmgV$e;F)BrdQdf?0zHM z+^eyhu`5Ig;Jzml0N;TJm;9CDdNG)w8`ejgBGfjC0QDK^LH%$~S4V-srJK%8etyBB zs#PEFXJuz)Cb|>;jjZEJygM;PK=S*ucFuZfsPMftM)%oPuXiV$kquI+1S?+`q~OrC zni#P)CorpD=uS4>7v%Ulexy>@zM`R|mou%8DSuLwr6#jw^C>gqCfR#-9v%f)Cx@1% zrgbld-D=jg=ynQ1rNySV?1&9++KD|QH<&n>O8vZsY~r11Hj zZ+D%vwrD>b!f z>-Vx~GB&o$tKxmYeke3w__t}A>c$CH)l7)X`}h+99K+-cOQ3M1}ikK*G~Et&RVsw7HcIA7l_%NeJJaEd1o@mbL`GcyyW-yH2Az`|AQ@jbPAM~w>^ zQd0*>D}s&#u^D2vM7^Z+(9&%|{DB3;Sru91k>DD+KJa};&cNwkse#U*p+I3{xX>_P zzs@@s08%$3XMk$$%lh7)2aUMRhgG*^3D?zuHWFr{tpr`4*$C=b^m?06VcO(70xxs7 z>)fipQw6`<@PEH@I7Q5hZn}8z&1tDtFSWAr%N5ArTq8FNXy~Dr{{J@grDWeLM1LO8 zoFD{C;>y0IsIz^2$Ns?ZqtuI?tjub8K=O*=owSP0B1S;Jv+GE4LtRkXD741>_QIun zAGG0Jri)3Ay;Vw}#^RNf5vlR zC-dlOj-HLM4Yf~c#9f6RQ!tG&{#O2p`9_)fSkbc*C(}&Ql#ZAhhLU>;?}~oNKYz~2 z|2t>--EEGq`V0xW(fx*-hDh`xAJfwv45N+O_})9#UPT)8q6sh~>xizH`j6_~`%f%< zE+aDJ&aaMXW`mX)mK>FUKnlsHx}7~wD?RFxYGyVM2KBY|^m44#j7c(}Q0CgwDasd7 zB3D^0)pSo)*s!~-Wu`XZt6Zd(&Jt&Qg4LHRSD*#AOz%o;OO=TgCPn0yR1_!87Z`#S z+m&tcpr27Cr$35K{#I5oShM4bF*goXm#OM5o1j?ey|1H_X2JM=(LAgk15a7$=yeNDu2w?I!yk2$@YO0MV4UsJ>d!>cfejQ7d} zVmUg&UUfHlVkiv{y8)|kk-#NJl!1QIR+Y6d3AjWB#fQPaMC>hL5`2%);>~`g@&!3J-g4#oMmcGXTdVcnC`!PQ($lNf-O=b=hoidW-Lc34Bunw19HhS z-o<*m#q?;PBS=l7zFTFi_3P;i-2%i{&4Ab*bIRnfmkqH#NcWXn!lk2x=}GBgC$wxZ z5A`*n!{~fOe?)tEAiZ5{ZegB^=kiOr%EJtji>t!EALX_pu!hBEFu+Ph2|{^JuNf$U zMGm0lRdV;RuiHzGgId}(J=E1%pQu2V!L~tT^H84vOa!KGjZ#OjGoqdn;9T3y!zJAHF=e|K$v+SDKYTSwq9x!{>1 z6pVfN99Ms2o82Lyte!*ceDQ&fC36Ab0^z+e7cV`x zh!q_Ch!Wp&c6$~iRmg`+>fEDF&Iw@Hb!%!ILl4_k?`_?@EPdl~jZ{-2U`Vecr_34$rvWgYos#JhiKwNiMyLYj)6d zny&)-y-2@}xG9Z7w(-9}*~xzWLVk>zt?VsWT@=0aD;7`-umF_*&se~0(SpZ@(z(Cn zGe3nCS)PmEcfuX{Rep1yuWv7A$Q<|MSrAZllcb-qT&S4`ip4ai!NSar@%^}6LAWGP-onAy6qNJZT z9$)>&f>YYer)j@8k50h#O&kS_I>;VGusvL@G6sKi5E!SH>3A6PM$tBJ5(IESg4rWh zCnpbS1h8xfQGgEcI+z#@_!j6_D9*KoD#Z`#zK#fC$c>4qkNdu9WPpuVGZGYeoChSW z-IMnNU_yd#FcFMLSO;~q5bD#XPb~B+0_yb{95Oye1BuNf46EMzr1da$uL_Lkm(ntDA4|51WIyr2+r_E9~`K zTlkEN*J*@rKSkd@9KVGIJ&ILQpFa%_l?f6rIVjM|ufbLxtV&MR9}K%`8|xxnlH!w# zi(w-(uZY!$%kw4lydlE2`!~F?<41^WxH8Dwb$j`6%O#nVfp8on;_J1On7x$(=Y@Od z2iq5xIU#+&B>5~fU9jSE6u`pEZGdez%$&V+o-vK_;Jc?(WQz557u8NB7@rv_G&KKq7U+9NyIbQt5R{{647L*rxUV zIVNW6##eNv&(iTOi+>?g4R=juThgOqL}Xz*>rvg;E0{uPvM)BDUMfF6+u5G`FtK==EumXe3%wkX*YvkJ>usy{b^qwP?Gk90f*?htNb?UlM#C^hhpfWHigF75+>@*{UBx5Ym|UWmx%hJv!N3Ua@@@k-r!Z=z84*Plus7*@u<75~!p-`8xGB;-h5F;Y~1xX~|Bs;t7 zvNUgz{k>((({XIYb3JZ8Cu`KHZ>AS01h%@7kH*n6Yo3>-9Onck3e*OwXj8_LR+Lx% zN^)|J0kF4oj3oa0%a@eL(4CwhPdf+2rQ08GL(4yZ-Y8-R+EpRSo}=7pek#)Y{~750 z55Vy_`&WC^USi0PbkWyHP*qh`y`hgB*r`AAE_r79sqMYEQZDj^dV;W5YHHkBnI}|S zU@<#lB!6N^MnWH~O6|){5RU8Eu(-*@WEkckT34yBWR-(mFX*dh*n=)ma}VuqP+YP* zYu)hDz~cGB4#IxOXix!2#G7W`K6rI;>|F|8Iwj4#f;eMr%G4D$X8GDwO)VLM~{I=&=yh$ayJ_|!M9Ie}J%Ia5+0_Pq5__P0+t3J%J8)6owrsh0QJR?M` z-S;_NO{6bLut*pOwGRsFDj`CiPrrIpy<@LzD1q-OL~Gn?Gyz1?*LbJT4FF$81a%py z$CqDqHW(0XoMz%(sm#_Z@$_ywVLy34ZD1gYM$+A+$=$d>(sQ#iBW7m;IhhN9Qp>)t zClt5FX(nM7DLVO{#_0;A_D%_p@cae|#xU2{*4L;@4_SHQCl>71kJ?QYQ<_1& z*kQ52Y~9u7{k32y8P|Z`=@>8YbTe$a05E{Xk7o|^gSf@gd*Iql{^R$nR`)0sOBUcM zQG(Nyjrq)2p1S zbHeTtr6=M8IpD+o!OS^q$lNJdkDX6%`Nm|;At;)3?Ci?-dYwdN+$xeP1_fTT-!g07F>R+2wItW*hl!gv7+2Tj9G)pb#bbdu#T8*~G zrgo|DZ32?bxdE{q5hu{{ig9pbMGe8k1iC4$7@(}?Z z8YQvutP7fboI1~NPyTrhD)*R!%59bSD5E}C!)j|g)|H|`4 zGOOaVx<)?As6^Nop=sTd0Nm=e#+Ol|Z`8B^oX#7UdDM?8#Kne4xjt`7EZ16RoBG6> z%r+8nTkI#M6P-7eLJfCIv(kL^kp3h7n-K@-QPbA&VXQEwOXwV zBU+ItdA=Qcv7iTyH0HuN(fr#?23@i&C_9KKeAQ zG)PmdooQ!Trkt_V^p18q;v&_xSB%;1UxCwV{1Vy)CnalEo>$< zJTVvA7XSQzt1R%Xp#hdNMOafEYT zn=NVl9E~@vp7ZnbML!R0nBT%toMF?0~FFWIG-Bz+$W0oRPs_!)ikUI91oxoKa;iu1de)ol})M}$y zd&(NOxJBnv#psjBE+lw3j*8zk0dh8gUu5Uyjon1_c;4jpybJs@>rqdbX3cK6!1n(~ z-E{{-{lD>VqNSp5Lz!)btC>Rs!eLGJRq{Tp z36b20>IcqsnM+?tmwV>ggR`@Zjm7Ii{QZq^9TrkTgmH! z!bBDJmck(6)YE~>Ey=w|a8hKdTWivKnho|m_N6|(f!kO*Vs>?`C35|IUyME13cir| zO=KCqu~9or+AY5>ZkdVr+0_R=61(`QzT6|7?1Axx z#V4iep^Ug&jXw9p8gOTQbBtca!70F*u#X z_zLWmMWta98k9$mR+8j}ats4_OoJFUI&W=cc53jIH!5qrHKhBTPr2@;bBQ-fIYPVn zFfj$Xwp^N_bd@4xYoR5wsU$GEtZneVG<%}u;{NG#=YEro{X?g>9rTm+7Gtk91-c#` zeIk6~>0!OG^V=MYdOVff#31U4b?LeN%Yn~76RjM4??~h#ziWZLCH!i~j>TVjBh`?L zJX9`~tP6@V2QU_k01_%zlE@EUn%!M#gL{0OAPENrP)O$n6>!WUXe3zyKza=~Xn)rV zkR8k_TV36{o)@0aZAze09D@g99X(Gyp*4a);T@Dz{BDJr;Owphh=mOWBO6?|^Y9$A zQVP{kyLeRQc&nLlpxEuL+hTRgv#DH&=e=hyE z)}P&sWh0Uy26@^=Wg-8{^eUYvmC4A(V)g2x*XcmAF?h*JVUH(U)TE@3+>;BXXsxez zdeXSYt+PNxJL)C0zntw>$^#onL6P(+_!$%5q`mbSOyYRy{fdgUfu>>i=HHU6jE;$n zIDzQyO#}7C=Pybfy*4L!_SX9^pMS{8+S*f)ze%*tMS}r65|l6&LJ>2~a1HN$QQCt| zH+t6XkG;9~4*!%2ej0zi8kj!*fJQlUzN0hJ37+ohmWg^~JRi5iOkdea3z&wauBOXv z%WdFvn&ptNQQ8>Md*uz!aTVC zpz~bGLRO;=LNy{CwJQ_13JR*dy5Lq2vFv;)-OX+Ku!8LivK75p!cVM9=#Fu_f$!h1 zpQte>dAI?TxbJ1T<(Y7b=$yT{^jJ-Zzj4F3<7->ha0K`!750?usvZer za+)RJ^F08Z&jcoH^WCC`KF+ojbMDx#C=BQrbamUSpsPHyn&;}dnulj}?ctR?KS2=I{aMA#_bap>aAX_zC-io!rt@qOQFpR?M(y3NLASN2Llll;Ezq- zM=noiTR*B%Zxv}kZVpbb!>fF29XNhUN{d$Qlg`1lyBMF@v*l<<&8k%ZOGTaAb0<0? z$gXweiXYso+j|+tIT~1f-Y4r0r%x;BI2|?XiSB85gw)*>C2>rROI`i(iuS?sO8Vpu z11xH{8#&Z@;I*2{Rw-VkB})bmJ}>i6Owh)5Az$oQtSr-OXB9BX*{rfUvd+MBZ+rIE zk`pHSrgJj<{EqfC9E)bT5?))=DY(m`M6|x0lOmnh9bxLUF7pB9*cJK6MZ-wtLp!}H z#TctxLoV9xJ*!$huB_ahf4+;=KNd2shl`6=wfEaE8gcLP-T8A%V|ixM=KdkUSIE(- z4006?)$;ISJ{cVyVVgP$n?&=rH5bE$J3ErHT3^^R<;^MUuB0<69p4vOtp@XS*d=uY}K^Kl$&SY8}^%j2tF%5z%92`;yFRw!blb0bjgC)Z&cROZ$N3nDj)|PICaz6V>FYk6Cy2YJ%j!ygV)S zP2jjUJaXWvSL}etbL-Ho7EQUXA;O@DdQiwbS0pFH+}+8{CsXzHC$2m7Hr{`(79GS; zw{xYBTMhp=lhW-8}x%tgC0$4F#-OiFwftoQTooAp3|n;%B|@pL!@< z?kCe2B3NpZw%H=#c^Zp=)x-C;_(7@WhjjRpiz|-NRQgzzUIjw1?f}a`wVd9tyM9w& zX?e%Bi{VvZh@_)NKkrnVX*+pLJe7%+s1LU<)4OZX=oUj*d#jO};fmC2V^GAE6w+ivXUaLWEXQ_tkEOC(LUXM zjP{(w)L6E$9A6ISquC9BMMs5Q?O6D%tT%>hyn`^>MkET_XCni*MCB8@DZ^k^Gb2p` zjJ>tLKAByZEpGc{p`ZiEaCefLYg4=2+AjP{W5*G$AVOm^NhU#^-K=;dw83( zNqC+L&zbP6xvgcu9jT(v#&Z6v)-d&f!+Ba2`TS0p!v$1HprB(hZ}SoGFK48+b#A-M zCO}?0OoB$bimg%Fa&$El3*hBk+;hhT2I$nZ&wiw|<;y&Wy38(Ack`5)R75g#)A`sW z)Zg`#oQPn3a(tvDNo3WrlJVY>Ip+ov^dD-MANXZb(qo-_BRpxL?m ziGp5P^Mq_)3p|1dx*?^H^pfwJYk0N#D4MR`N6o5q%`qsi+=3hXCNr?!vM92GvA07mqV5H*nvqy zi>`qKV0HBLIzivixbbnxn>TNAvsdWYeoZMQ_$Do{xz8$xB23IUk8#RF?nB+NRI^5mwt zN!K~y@EhB&jor5IJxep{{^Ib%_xfD$sp)p@T_;ucwgwbKwjOx|<5w9XJvqQ#uH>Md zUdy0%CTobK(Lw7!y;==&ijs0!az`$d8nqlWn*xhCBF~(8Y@&?3MKoQgqI}q#s4}LN zQRUt%HCAG0h0WpJjfOu^(RIAjjV%1UGya@*irWotX4+F@!B)XJ*If+^T$i0Z6K7bV z3v%Hg$l+cqx*|>qHPdidf_3i5t#f<%K})8Ng@vW4IPLJ!8cCSy&ypMdG%o%yY+8eU?z`uCq`VG zr^Yh^<21cfB-1#i(&W%oBm^6E@Zpe94;HpUU+`f&rlA&l+T6%lE>mA?;*7k{nnZ!N z!firAwW123z7-)`5z|GfeE=B9UCuX&HHAKGyH4zb5A|TU!(|Fyi*K+`csvA=K=5BN zODMiCz$Bo?b$Q>4e))ECFhT5`TyKc{@b9Pn>|Ft9KYQs3b2=IF=R-(1t9beALAN5j z2U64r^^OUgd?s6$0FJQKGqPIZy+&}4%y?zpV2v9815ls@^vsm_m^2=uiZeFxfCA!( zwKY|^olCjuG(0mQhCz)kAt_<;VlIKFf&Sb_!oj&6M;sIHlSXpH2_ZKe@Lavl9HeHV z-UFLvyHHDOo%Ea>FeeABw(jMtdGf)~{IOZ1^NiD25jCrmeewNxFEw^;`WzIlT?F? z9A3%AbPfoz1c^m-yC1%sZe*%_s&J%Ruz2wC{NSUHqEc$dEUlHDT5rh24Z0y85gl*d zJhqT@=5g351m^J)F6n*Yxj0olw-GJSm_pi@a^>XJXOd&dbs73+rJPa!kjVmUHVttX zVH1GpXZgU6)3i)Hx*$mkG&^cH`G?(Kt`ZWN*F1I)U=owq5QMrWp<0=L7xbQ9Vk{yJ z<4^*#bs_J*5sqm~>AZ20%n_BHV%;QEbYQ#_iPe(>hlgQGfX{(VQs1eMjD^3Emg zyE!EF#40&4l&9#BEu*sz5-HL>R!f^Y<=87%z{!pE6Ljp_w?t5eW$BLay_v3*o7b-K zjp?^B4Yv=v)Kpa59=-6;q9nv^Wjpj}E+jq8hQC^Z80VNeVTK=))^UF^j!?J%)uG`5 z9$JE=rozoaS_VISZ-;($j^#E${JP~5=XwWZOCFlKy6pUzJx7ih#kneb(Jy5deZmmb z%m&EfnnBIM!2Wx+pvqfT*eP3u-H78o@m&-<6}KnRnM3O7yjY35GSk5bkheJPhkLV1 zuRPxtE)uP|%i;x2qeQas#C54OsA$~&r|iMhZkwUUcSRY)TqRBBsN5hVWt-<4t=ePX zb*OFG4Lr#$#irQ({hzJZQ5jVB-N@R)Bd8C3)A#69LIMs12&G&pn8$nPfq1K2N26*}UZs;e zFR&$^!recmWT{~IV;wWK*Gnk3O#$O&4YQJbhPx-?@_NOCHjM}c$- zisN(S7Pej9s=zLkq8MIB9e%8_d`VbLXb4-cH8WX!GlU+jCfVxts=(4C5|?A^WST*yuWp+0LgBnkVqD!Www-gM#IlxHjKY zLuIQ`)JC`JbwUz5WK;~s-*7t&n)229R)sdC#g~+H9>e*~g`Xz5fdLM*3rXM2FO%3E zav~IYip#OC zrd?_`RtrP(4#{O=_mhKS^nP)dZ!0VSSscQJb@e``<$xF4w!uO_?WRbxyP_mI=diBs zYxY$vEFy{Oz~GSamM_e&p}<4!Q!+#v+`@M?P1>7=;u)7@=oPt@J^@m!>KhvkTLlVE2yk;-*yX=+ z8_Cgk?dB9>%yBh(4aNx4m zY1`}<#l@xTlO<9TAE|DT_eJ+b%5UZ6Ej8Z&>guZ(Z{Ziw0KF9vv11375P<=m)s~#3 zZ6;&8@~qYamyQC^uh6Fl=t`u6SrR%p>VWif&o^6h#JJ(h4V zloODtf1x8nQCWnPv+tNW&b>a_G<>KV8w+M{z?j9I?g_0I0?@p;#irQ62M;V@?TXYp z4MB5BrMtNBFK)&T*4!vg8TK0iwH5L@xZ%OW;UnF~qxCA(7Pn*645C4hq;W{0x6}(E z{C>s(g8v;bS#3KMX4exbzr??(el$$h&Fz7_k8pWnJ+!J2R&gV22{|cepp~t6_i`;} zaX#~$?6ZJh8+mO5BP}tj3aTY!8;gRfbWLh_-kI{p)|D}8AL|6%chxhlU9uY#R;E~> zA-G)Aca0Tz*ak4DTJFlXdf~J>eB_!x$ewLCE&_uN*M{TlOGDQ&FIp*HDl8>Dc#2e- zzH6n9Bv97^gqN3Bo3YN8trp%w_t>KAJ*s{uthj~Fj z!6t=3xtH<}A|m#H0TCMdD?MRJv{2|2_F#?TPA@UMZQjXTKzf}b(l@`$V%v@?Q>KzHjC5nWwYIHz>I&Kj?j>I;P$uh|d z+y#YbCI7`%Rh34LI4y3AhJgcRx-NQEJfR=x&7|p7Jg3vpb+zUu%aY!0VZ}1qkj=UE zR-az_1yf~D0NFiIzE`cOTdX2Qxot^mWy`JE19N36MDMd7A+jjIA^mO4dgr?R>Bc;VO2x^q|FUQD#W)GqyOlS>4IXF3w!z=b*OMaz6pY zq?d3zuZ@#{SR1?7DqAI}w-n6llVgn+pWkz;^oK_$;rhHS#M(&HzA0BH%e5@PVc;Y( z`HhuTV~(8pea9F3iw|#<(i>a?&Mb)+$_6#jeXsVP6}GC6-oF>QmE3(z1h~Pjn{~@? z))B5X6OOHIQ9D=>Q*+vY$3#V`KiCZsT_&o2_Ts87tUjDaOL2Ga(jPl~`1Z05^7p`# zakuYGKNf{aGc&DU+Rnro;XxUFP9$w(^?G6C^n62jXG~{!PC*Iq`bLGT1>2ZJY61(4 zVSs0Kr6A~0u&L?{p1brT#Wrxlg%OQ9Wh7-D@4UeMO_$feD1o?{qZ@=gV{&v)ir}Ks z@g3Ocy`0cYSDaPvUT#uTwHf_6lavBV3|DpSLx-Mnu{losSR2(_>%X>=EIR2F0R-NGw%%-oy@ z9GoHqJv@|b(|6T<39FWT?GAMYk;?d6d}YG*V){0!;f>7`VEdaAmDA{meE$591qI0Ke$9^uA>s z@iZ6e-ceed_68ShbGaypg*K&iv7n%!{}Jzsl|qF<_>}!Ez;AHa#thag113m86dGO~4y15IlTva#1Wrv}L2`K!Re!Q#{>UIPQwJW$u z$k9*4l}hZkR~Fq}c`sfjr8MlujT=U*l%6?`V$yBGL5c0CdY0ZCPg$*c%FXLR5%;w2 z@>+}uK}(iCUUL?S{)oZSmLqU^MM z>)z4{*Z%!bUkR^9?TNlTn~pe~ISWWrMem__n<=fk?MGGV!s}t3_1z7SSAy9PWaszG zSfc-eqZeN7ce#}*Pv5W^;KIV?!Twh5r6SG$B82!?u&{{H^r|%W*wGqr*jTWg_C{Nv z7`(kcX;^M0vdQsR@UdFe3w!QlnEmiLARuiGOT-(qzIQsJ8{vL6M?p@!hE?SF8LS(@ z3Jkj5H{19i=mG4(V7JDO4vn?UyPznons@{G3lWv~p1h)#V>t>mgLLQ5NeIl8Xln{} zan2b!QF20&o>@h|_~6=|b}P>f&snpu|H<-$|E!ZcLm#nkq4t2m`iJ?9J5|q}TYvST zrCjSm_!Gv~_@&z0;7=dHSylwjFS@+lkOO_d34EXVXr9Qi^ohYk&gIHvOES`+xX!Vw z<~~&&CaAzsP@Ud<&?cupbO6U@6P4bZd$X#tAH&HJMV1^48+gLVe;467Zd8;f+QVdJ z!PO;evrSsu12;$zsS+%g%y#AA$Rk6F@=o_Ud*Gd`35ir}f1rA&RJwH(gv1{rkr0~a z+sk3)n>>;T;b{`Z%7l|CdT1p-DO>-4>m`EjE53lLxJJ`~Y3hA_&h|dek9gNpd8He_rFQ;N025@OY;I&eh1x&a#{Nu_IgrP z;K>Vy-4V%K?$@)x2}R-5H|d_;iBX+V#=qQR*E@j(9_Y3Pa zqmy>Nb71vC=8P@y5Jk^{)#cC4waKXhm+rw>mq{f!mJnO@*RGXa%R7d*gzX$M;mHmQ z6|*m6t4*3GIK!V^s%7Z-%-`AhodKcRR%A?s67NFOtwTF`5x%iu&|X+4h3Ltrm+i!h z9Ki*5_BLgAc64lM0%w4VN_#YA2Zw1&oyzf$;-Grewbc!#XvbIiu!#r@k=U9f5?t90 zM67jHRHR43+B8Pb3YM87)5MD0aU(2e0$gl^^AnA@f%e^Cm)J8P_Fp=E7sb+*C%#_$g*V`lGs|L+PGmxXLhIhI)Pg)=aHz zD`ym+Fx+53b0@au;FNQ==0gV5Q5&f~NzeXj&t5oW)z3Q`a2%t1@0oHvQSZD?>&!$t zF@KL#fv{-D@;s?a_kxe^+kVTV(|=;`=%4}BAh;2dh|JOyTqkR|tzy(P%%}f=bUZNb zL4t0$eJ@5^NoBzd7xHjEU942b*=U`@F zV{E2VPeZ>Jh8pPF_5@pW_P4oLZ#wB_qZ;Prnv2Ghh!oq=m~bc$rIm#W8@*{T@xty@ zKxsHv8^n_VOU^Z|9!Qo6^XO-!@=<{EeF5Viy@nXS=0M5Hn@=vdwo&#pDtk-cW0`UH z(es{z_GGEY%T?m4;&nub*_#jid@Q)Qp~aqMDZacxX(98=MXz;*ce4d6PP~q(Y92}Q ztcZrWQwBAl;|-9+XvBCWQ&e8xeHCjvgVCzu;Qn_1bR+&1%xfzc)^}~THZpLL-2sdd z<6#vghF20rrwDDBp*8Xaqq-h(Jae7l)=vBD8NPs%R%Y1a0|(kXi3(K)6WhWM=JgLY zA8a1>v5BrTpi&$h98z2(@!_6)QvK%;TOEdyK|-M&o-~+&dNdZL0Y5ayWF9ipxpqiK(m` z;Copv-3vAJhQ5*BU1ofP*H|L$dWb!vT5RXSIWrZoCdy_g%g_+PJwuVr@O!5=%wMi0 zpKIc9kU{R$JHHG}m|Y&CxTX6|MZB!sZH*7c)^4RVBvLH+FJIy;-yNS?zQO5~%Ay6# z`{P9#Tv!j3Mfv+Z^1`1i%S`lfl;WA8dqu5bP&bWJlmB_^`SshJ=~6NDc6?HTh4ywq zXqeUF^%mjs`w;ls=$;16k*;eRi(@|*)dM6Qwu$_4G~=o zuRX3?&HLLN-;~>(+0V~V2$PsncPRh`GSA+Ff?)G~-knDY!ZO@Cr4gue|G?#JLQ++< zX@aN=+=*|L)0uJ9c*zE@#Wp^b`~9o_?egfpFI#48pDdgPQLfH9?ZOlaBGHl_s=kv~r z%;eht_cbk5j39KIS{h08?TXjQSiQj_Tw&5boU&r!zj9~+dj{&!MP=fRw~5k*60!6h zGxw7%cj(obj>QN3d`dSnf&UgE76EPO-SHp!N%rfguB&{6gg@r?e?jCqP#}p3oRK7V zjCoUC;o1o6=w$-YYVnxy5X-k7ViocfTG||`^&-K*^hJn0iepzLk*geN=Vf6MzhiC{w1|W#%FN32j z$5MNq|A=MS9$--SAJFxcn*{*kANa*p&oT$3-s{7V`M!Y+v_PI06b{n(lnpx-)gqD(-w=7jeb6=nn~rb~Io+ zd#NGjYZlS%=7jaP$69hhl%ZjcGf)V4{=b?WXvd~ozu>t3oGKv<*5a$09li%0-WDJZ z1={yU#7A?}&&2sdc^)twF@!8~dvU;X>9Nywl<$+N;~ghL-eNscU6>mq?! z;7Y`7jux?&%w#u+zNoGyR~_QP|9JJk31tz}WXqzsj(Y>xK(b*1rJa?_yrQ(zN5twa zRxxa*U$EV+Ee=-Ymh7jOSLP>%=WDQV+cT5+-M61ER-wUarX||nbT>2Epf6p+?ng6< zX5qAAm5+?#*YhiQD9VE6%K!QHX6j^7Beak?x5z~qq?w66yZ1F6+Hm4f%&)7%OCxwK zXLD)o?2tptB3fxQ#@Z~etAQN}BV?}v{*AE-_AXusw=)au2h7(Ui01HEhd^3bIFD${AfBD3+7{pA~` zjlP1Rw=wgEb#rbLo{o-%x37TTTF9} z;!6W~BCH3}c|^vvbEt>dzeaIvOyg=N)H%!8NogGlp32|C;HEz$f4Ki6+^~F@$-Hc5ZXC zE80Az1ERY?RW9$%@2|??*FF@#XzD`$$r`49_y3$-ezuI4P|&f)`C3`BfDRWUi_yLw z(xr}m_L?j`Hppc3yo=_tlJq&*U8_QLX zX0z0^o1E1ba1XUBUaf58N*Fe2vYQHy z!5$8SiF%@~epulU*%Y3rb~S_5MQac4JJU z6&N*7PKu6S^S%BpDx3GATRKw<<$D+YZn3pI1fK7rzVMQU~DL^D6$!0UHOq2mC zSXntqbhenwX%uz=$VHvajj~_<)?5@d7qt1FDbmuw4`u#C8}w%{mb?opRm9a_0~VsT z@FbDK;f=RwT~B~4xB;>dM~4h-hkR$555wtVDLJ=vej82iKNo4j1zOGSH&?Q4jTzK6 zhF&jKo-O*oEP9xhec`Mu7gwiPzdGT455~DnD(tLwI>hKLHKb-V(kJE`Euf|uV8TL3 zo7o`^LEqyl^IZgN2=;uQZ^Ycc?IXT}wCw9WtoZfp%eI#;*4{H>{=fgZF8?-J>blaj zVJXPPgFec|#S?m3<*qG+&t=gZs_2|#5Ce+Lxfy~?+Xz(G(_>!WaUp+|4=q~@+8W2+ zXC1W8?*~+&`FuNu3Rj0eeMhAxgQA2^QP7PrW1nxwfwAom8}P-MY_lc%0_Dy2m7qG9 z?=#){%nFo$8laqNO|pMfJIMyn94OQpyE_Otd0#Nj`! z5w_>)rN`>a?`nfHj`b7kc<^=>q3^oYEhp&R%X3$2sJum6GhSJXJAFerXKIp^ zJKX%rr2_3S*O<>h=ScDyF?=p8jsS+izX_fAE~C1xhva{!ruh5qrA3y0eb;>vpDiB= zrj;fbQ5}`(!sX1|Sxf&SZ<*L#g(RM6b69h}H#J&(y_-^eb~u6+;zpxS?4nuFK0(?r zLO6ek7}@IkJTu$fbg_(X2}QHWqcUe)2Wg2%?<9R6v3p-n^<;7LBZpc)`p$gT0P{)y zzWJE0&LjWnBrk#_|l;yTnb+6o5fqh zJO=eKm{j`vw#x6fiSKx_8T*N;@39@B)w2%2k1W4l&obnvSBIWr^q;g#-E+(fr_TcT z;nn?Lge2 zdJX9%LDRk}IqqBcD{2F;b(N_gec{)B zc+b9_75+{SYg~$3Mxg-#3(S*aFjGb&FKkV>H z9-1M89gh50v!~Wd_rjmk<=-JnDB!2oH%9yPSbSXHEK1eO*|L*11z5}}j#PQu6!O{e zeWGql)uK4Qp6Be|vr7*2oV5BT;XNzyT_QTgvH?{7ZXW^Z%f^6a<0K_Pd@g2_<}1W4 zRm}SJG!s>@AdU~06!s%sx}R6)udm}rcS2(~5CuYPx`X_cQtyl*Cfs@ZL$@LcD=={W zqf7aJI@QUk2Fu>2!V5b-&bxkk&S(F&dH>HF`WX#rSx?J0`rpUPpPunSaW0A*>QheG z_otP>|7c5cIOWi2iRncD{TQ7@>hYlH!M9{ZppbB{Wqnd(Cv>H5{)BG2h|;(gI|{ie zi%;xp>b`s_*BQ*q;_w-@B}x2r^iGo_)CsNGk#B7!;e{Bv^_%G!Y9+I#9$Zj-{m<;x zpBC(gx-5EZE&kDcb0f?QZN=uvx5)(v9mBzl=8CazA<)0USAHl1+Irx{w9ZJ;`wsG# zLB#u?s`cc6D|AyeUJ7`5KJ5rY~&lasvTnpm% z|G)3*D*=oej+8*(+?ZK4H$)!J>|bbSAZzo`?aXd@!&2CK)?S#9flrxxUVj zcZ6||rqP_rb$UFHR-95-LW#EQo^yG5Kb) zl;exL3o5ijG3bU8sT#MQg24RKOW^ZaE;(<&;Wb;E4s~{x4G9vmdKKDA?8~dZS_YQB zfa)}IzmWJh+SAwN0Ngd#UPHa=@v8yQe)rrG{l)RMFpRcWdlVXiWGN~+j=Jy~2teZi+TJM|l=>}8_JV3EOyuU+sH5#rCt6lKbQ7U~&H^1VYE z+1YyBD!vQ`vBGg$ActDt%E7o1k%ZlF*;z1(0OK$P&~)VDyQp{GjN=UFab7H#xNL~^%TM-Mm{NVI1q zs5z9BocZegwl1ss8-nTL0TW*OvuO z!u?ZC| z{KNa{Vh{rYx#$1eWq)2)!=|A|+_grj!Ve6E8J_L7Ef^rhfLO!w;LMn^t(z(K5K()=odyw-$PB4!iksz9!K;UdE>CpO0 z#TZ3iAqp$!B4fU0N`G2$K3Ao$y#u%5d6-~6q5HA1BnY9y->@?;VAk{{;|aYqF%(E- zD_4pNdVTFsMwfN)YDTFdqp$tYS8Qu)JN}<;hD((ODiQ(!x{52BMpvv*m607M_qIG{ z@OADW^ghoB=8q`;rt6iat~|#AT{J~FbL*h2AX@g{~lXqTE&+( z0{5UFBDVM?I0eOfOaKkt*iQ?jrem3odgQiKI4o)4%SO>+v@k>(jUQ&6ZFvk}c#SRB ztlMQEj?{cicS6@dvmb`PBI&%IlpMceNF$vGv}mjg+VoKN%?0JsemNKwb9 z0ZGIsP59wY1BJ26kuh*qd7FPZl{xA;*NUF~%G8LyLd$?SV({qfGmC%VWIhlpJoc2} zNyca!U>5wT=%w-6iG%v=f*0qo(a|q;Zi5itIZEZs1i}iAuR2OpGF^;mcF^n#m>`aM zTtH<-!`$N9IzBcFedsCN4#T~tQ9FB!G>O-q0{1YO>q|?=1jiz63cOMeWT< z%?dY=|3kCBJTw^5& zw&7g%{2*(s_qvlR4)S*(n860GNvFcZ*VkDc!^2G4?y;FBiR7#V!kbtFibbzl7WP#L zDQ@8xW$vN`uZBoBCVv^6{NwT1zmR*voq28D>THPZv(h>wuL6ajK#IhrDek%6E}A;A z_RZSCnHRNc zwA+u~|I1y(6f)JP<*x3Zr0*Zqy57nne4!X#%O{hC<}@**l3z?;`?k`>Xt+MO_$|)Q zv^xHEFZ%dskc0eo|5F@z^nFQwE=1%s3u8YWcY$uxMW)f=Hx!+p0dN)&{H-yA~c`~RrhuJ`pIHu2n1FCIN2q(E3CidAU-}6&{ zhiA!+r+Le>0_4^a_dw)o?O1!vB-Tnqiqa~feJylRes7brNzkbeT8kHL2&B`Wn_}NO zdS$NGZSJ$>6t+(Rj`Tg6B#hrnVk|9nRk0%Ip7HzAXc%+o6nTud0@z7|T1auU!1bzX z3bMy%&F4*b6lS?75~=Y<{+piZ?@)lxZ3Dd1N2U1+8EJHX+z0f7a?jCfs`f;?!35zA zsOJ!2RB)i7YZ*wz*clG;K##{2^)~m~l_jr!3pvsUU1dKNGU!1%!mDGcXShE9WOlp* z7vZJ3(dK7VN*)E#UL6C@Oe9cUhfWL=45&Fa)K^>+)o;qF<0{F6psrDl(^>(#Y%>O? z9$~0Xyif3KY%jgtzT!7P43x4y1a;WpRx_p7+4+DpY;>0?$lNm!uAH=%}U>SaOk!$mA07I!yIvun$FXKj}H{OnKdx4-9g+R1Bg!7?ZfP7 z8Lm08=}Vxb4-R~8hmQNAKP{%;<-6S1!b3>oK>^THm^4rv^m}9jiBHP$cH=K}U;T&{ zefq7Rj4n=X_{| z0mWm#o#a$>Aape{i8Bar6}ssr$qI@&!2)D^o+!$&6$L9e_*quV4~jmW^WDD2a{2q+ zs|!D!7=Gjdh`?!9pe@T|Yz>JQEOINc2VunUGK~Uh*4pGP7PSjeF#0*I32v~(cJw@+ z{i~$Nzg|6@CQ_C9jJA4K!QovcT*lWuDspO5=(tt5R z)q^lCYXY=V=HpGBe`@&P)L8)kz?pb#N3R;RM}Bk3P!Fz z$TOCPW-TthM?O(kWjEt5|}}u)=f~96lI`(I%86agrukT&+!)M#O?#M2vb(RS%9;Vn*%D zt3UOFxymgAjz-b5))>Gc?kvy5RL%qdTNuO~K3K1qirx#UfePT>l3(9)c+JIP@Qblu<%d4#{ch@e%vtKHE60pnO23J=^vu# z5{W7vK-7PUlquTTi_nhXJ@lH&`XB^2<@RZ4Wa8ne9+XFN3s~b(*+u3(bu@KG|9K# zuj*2<)u)BYVPFr+{@!Z--%aM6(&CnD^mb)qcwa~N zu@7x!swDY|+r;&MT8tZRp^IUffJq~!zHs(9iT8P7iw`5{1hW->RD@tB2$X}CFnkl% zCm=kMW+=c{tRf_D`A`8`I2MIqUr9iXKeC)ZtSY}MdN4%@k}UXSk_8G5_Bynb;-%NS zNtww!^VTWAJTXx_xPdPnSq}>O@9(gW0}xgF(p>kZZ@E3c zHAWaJ;HQd9LyOxpMT(&JR)Ya#Jww{$tr1NLK)oS_D=)qo8ZG_d9eZ3xb^5d0&9ZZY zK8ZvqTDD!T;{CI=r&&BG^?|;&m@ax9LSAmfQIu}Q*8lL9DlV6%3rQ@bx1?_GY%ns# z{tiff<`E^&p*q*)Rw?{Kx9CH?`q0$=pe4DSrGW?akHN!dW%RtG=sQCPXyu($(#5xy=7Ir4OAidyBZuSDJN)s`jC}xrwP$LQFB#Mvp5|*G3>*W+ zX{o3B@7feQdJ8p)r`}Z}gNkgR$?M*u2A8$)>bbDkA3cWt$5%O}$N!DzY4KSA^nym; z|C#1hjy=3u!qYQx78hb^JBm6>6N3MH@ccu@(I*caanl-j)GYrolsh+(GGe#p_!NkMf+ado)9m&yNkGk^BiT{Z#3N@c= z;$abgQ?h{R`wCN^BE53n>#KslC<5w5qy!={Ic_<_gamgCZ|6Z?hJ%cc7GK%W!EtfT zNyW;f+fQ^IbsrnI%MO8yXoh4aUy7W2$$1~Lq;=<`h4(b~U0=WDjOg6G z#^BHWQvQ$ka$2u!8#Tg+^k(A2u-1x-#Y6d(BKmBN zxybyD9CU5_C&f{V4of8>8uW-`C)ha@?@z1Y*pao#T;w#N559Z)vsv}R`#MU?G_*E2 zlUSc#x>7^8vaa!!Yq=D8fUKjfJ&H*!97^iJNF1tKw__f?1+lyVdGh&nY&Lcbw%G5% zG*=NWu>I`Z1OF4v@+oxo(qy!rwPFGC%<*JO{&k<3J} z%Fk1r4k|CVf4c_RElZRBex$osUcQCl2#JFMJ_2ho6TOt@L> zI6!_>Z`IRa$d{fel16f&(k-FGEVOLQc#tmQ*cJD3kdofCZ#pT0&(&XRk7E312ER3} zeShT(xWKlGm!h$GX+0R7`G_urRr9lUakuRHZnUYvc7IG`op-1aWsc86-iN2!9=yyD zI8hej&rL=V!xt`Tv7J^(aG-a6q}Jx?xb#=v>P$ic{M34yIMS4mLzYjsE=VsrDj3!C68rk`cJBZ4k)S?T84^%SV-UHtIHYEwENpXAYP*j%Jz-@S>K zLq56*k$J(T){we+_L-%~q|l-<7BlaKa33~}L9~Er87i?qV2kRq>F*emTbpd)l*%&` zssG*AtS*`qMQrnjqDTj#fDIMcWtPH9Uy7l*Dps$Y6a_9+(6pt_@~H4lzbQ9qSi*R+ z(Ea?PSzcA5`O@XGx06n(6M06%Fuo2oX*j2NnpXIKq7~gqs6wAuHz}6wE~T7_0@KeW zH9Wz1a`RAs$gCa7n+}N!yj9?Zg<6#JHqBUZm!kl>%hSSYDJ`s?m=3G#D4(F`%T=}` zHXz)Ux-DS;$(^1;-k>| z?ldQ>9sU?y5j0nTp$~8q1!ou%0}W&B*r)CperM6i3t1@lssI1oZs1Fy-q3Q

SzO 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

x^|2PB4o-GqPiO>uV!dqUWrP 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 literal 0 HcmV?d00001 -- 2.43.0 From 9a2b61f8379c3bb5389a16d51a93ec34377965ec Mon Sep 17 00:00:00 2001 From: kjs Date: Thu, 15 Jan 2026 10:48:45 +0900 Subject: [PATCH 42/64] Merge remote-tracking branch 'upstream/main' -- 2.43.0 From ea1c5c158ad5a4c92d3ec5f787734bb7282253f0 Mon Sep 17 00:00:00 2001 From: kjs Date: Thu, 15 Jan 2026 11:00:58 +0900 Subject: [PATCH 43/64] Merge remote-tracking branch 'upstream/main' -- 2.43.0 From 80a407393774ab710e5669e118da50e0189b318c Mon Sep 17 00:00:00 2001 From: kjs Date: Fri, 16 Jan 2026 15:48:06 +0900 Subject: [PATCH 44/64] Merge remote-tracking branch 'upstream/main' -- 2.43.0 From abdba28bf9eec9fcbdb51432d804b3b50c2c6730 Mon Sep 17 00:00:00 2001 From: kjs Date: Fri, 16 Jan 2026 15:52:55 +0900 Subject: [PATCH 45/64] Merge remote-tracking branch 'upstream/main' -- 2.43.0 From 9489384b4927e261e65aba096d34eabca9f81b3f Mon Sep 17 00:00:00 2001 From: kjs Date: Fri, 16 Jan 2026 16:26:12 +0900 Subject: [PATCH 46/64] Merge remote-tracking branch 'upstream/main' -- 2.43.0 From 8bdea667adffb5281de99219f9bf0fb59cb8e59c Mon Sep 17 00:00:00 2001 From: kjs Date: Fri, 16 Jan 2026 16:51:37 +0900 Subject: [PATCH 47/64] Merge remote-tracking branch 'upstream/main' -- 2.43.0 From 3898794913d09a2f25ed6680031800ddd8a6d562 Mon Sep 17 00:00:00 2001 From: kjs Date: Fri, 16 Jan 2026 17:41:28 +0900 Subject: [PATCH 48/64] Merge remote-tracking branch 'upstream/main' -- 2.43.0 From 41dfaf456d3c296638c0070933337ecf145dce46 Mon Sep 17 00:00:00 2001 From: kjs Date: Mon, 19 Jan 2026 09:37:45 +0900 Subject: [PATCH 49/64] Merge remote-tracking branch 'upstream/main' -- 2.43.0 From 00c655306dce647c375bdc03cc049fd072f7d7e5 Mon Sep 17 00:00:00 2001 From: kjs Date: Mon, 19 Jan 2026 09:51:30 +0900 Subject: [PATCH 50/64] Merge remote-tracking branch 'upstream/main' -- 2.43.0 From aea48ea1dc7bc01c1047f19011bdc96f35377f01 Mon Sep 17 00:00:00 2001 From: kjs Date: Mon, 19 Jan 2026 12:07:46 +0900 Subject: [PATCH 51/64] Merge remote-tracking branch 'upstream/main' -- 2.43.0 From b0b30935f337e05f131d3730139221107ccce46a Mon Sep 17 00:00:00 2001 From: kjs Date: Fri, 6 Feb 2026 16:10:21 +0900 Subject: [PATCH 52/64] Merge remote-tracking branch 'upstream/main' -- 2.43.0 From be7e47798fc0ca297ea618d5d8cdcad782bdca2d Mon Sep 17 00:00:00 2001 From: kjs Date: Fri, 6 Feb 2026 16:24:16 +0900 Subject: [PATCH 53/64] Merge remote-tracking branch 'upstream/main' -- 2.43.0 From bcb583e8227fb4571ddd3a060d3fff310e82a80c Mon Sep 17 00:00:00 2001 From: Johngreen Date: Wed, 25 Feb 2026 17:56:12 +0900 Subject: [PATCH 54/64] feat: add POST /api/data/equipment_mng/validate bulk validation endpoint Adds equipment ID bulk validation API for collector-config-manager integration. Accepts array of equipment IDs (max 500), returns existing equipment with names. Includes multi-tenancy company_code filtering and parameterized query for SQL injection prevention. --- backend-node/src/routes/dataRoutes.ts | 168 ++++++++++++++++++++------ 1 file changed, 132 insertions(+), 36 deletions(-) diff --git a/backend-node/src/routes/dataRoutes.ts b/backend-node/src/routes/dataRoutes.ts index c4c80e19..f671cafe 100644 --- a/backend-node/src/routes/dataRoutes.ts +++ b/backend-node/src/routes/dataRoutes.ts @@ -3,6 +3,7 @@ import { dataService } from "../services/dataService"; import { masterDetailExcelService } from "../services/masterDetailExcelService"; import { authenticateToken } from "../middleware/authMiddleware"; import { AuthenticatedRequest } from "../types/auth"; +import { getPool } from "../database/db"; const router = express.Router(); @@ -31,7 +32,7 @@ router.get( console.log(`🔍 마스터-디테일 관계 조회: screenId=${screenId}`); const relation = await masterDetailExcelService.getMasterDetailRelation( - parseInt(screenId) + parseInt(screenId), ); if (!relation) { @@ -60,7 +61,7 @@ router.get( error: error.message, }); } - } + }, ); /** @@ -86,7 +87,7 @@ router.post( // 1. 마스터-디테일 관계 조회 const relation = await masterDetailExcelService.getMasterDetailRelation( - parseInt(screenId) + parseInt(screenId), ); if (!relation) { @@ -100,7 +101,7 @@ router.post( const data = await masterDetailExcelService.getJoinedData( relation, companyCode, - filters + filters, ); console.log(`✅ 마스터-디테일 데이터 조회 완료: ${data.data.length}행`); @@ -117,7 +118,7 @@ router.post( error: error.message, }); } - } + }, ); /** @@ -140,11 +141,13 @@ router.post( }); } - console.log(`📤 마스터-디테일 엑셀 업로드: screenId=${screenId}, rows=${data.length}`); + console.log( + `📤 마스터-디테일 엑셀 업로드: screenId=${screenId}, rows=${data.length}`, + ); // 1. 마스터-디테일 관계 조회 const relation = await masterDetailExcelService.getMasterDetailRelation( - parseInt(screenId) + parseInt(screenId), ); if (!relation) { @@ -159,7 +162,7 @@ router.post( relation, data, companyCode, - userId + userId, ); console.log(`✅ 마스터-디테일 업로드 완료:`, { @@ -190,7 +193,7 @@ router.post( error: error.message, }); } - } + }, ); /** @@ -198,7 +201,7 @@ router.post( * - 마스터 정보는 UI에서 선택 * - 디테일 정보만 엑셀에서 업로드 * - 채번 규칙을 통해 마스터 키 자동 생성 - * + * * POST /api/data/master-detail/upload-simple */ router.post( @@ -206,7 +209,14 @@ router.post( authenticateToken, async (req: AuthenticatedRequest, res) => { try { - const { screenId, detailData, masterFieldValues, numberingRuleId, afterUploadFlowId, afterUploadFlows } = req.body; + const { + screenId, + detailData, + masterFieldValues, + numberingRuleId, + afterUploadFlowId, + afterUploadFlows, + } = req.body; const companyCode = req.user?.companyCode || "*"; const userId = req.user?.userId || "system"; @@ -217,10 +227,17 @@ router.post( }); } - console.log(`📤 마스터-디테일 간단 모드 업로드: screenId=${screenId}, rows=${detailData.length}`); + console.log( + `📤 마스터-디테일 간단 모드 업로드: screenId=${screenId}, rows=${detailData.length}`, + ); console.log(` 마스터 필드 값:`, masterFieldValues); console.log(` 채번 규칙 ID:`, numberingRuleId); - console.log(` 업로드 후 제어:`, afterUploadFlows?.length > 0 ? `${afterUploadFlows.length}개` : afterUploadFlowId || "없음"); + console.log( + ` 업로드 후 제어:`, + afterUploadFlows?.length > 0 + ? `${afterUploadFlows.length}개` + : afterUploadFlowId || "없음", + ); // 업로드 실행 const result = await masterDetailExcelService.uploadSimple( @@ -231,7 +248,7 @@ router.post( companyCode, userId, afterUploadFlowId, // 업로드 후 제어 실행 (단일, 하위 호환성) - afterUploadFlows // 업로드 후 제어 실행 (다중) + afterUploadFlows, // 업로드 후 제어 실행 (다중) ); console.log(`✅ 마스터-디테일 간단 모드 업로드 완료:`, { @@ -256,7 +273,7 @@ router.post( error: error.message, }); } - } + }, ); // ================================ @@ -389,7 +406,7 @@ router.get( parsedDataFilter, enableEntityJoinFlag, parsedDisplayColumns, // 🆕 표시 컬럼 전달 - parsedDeduplication // 🆕 중복 제거 설정 전달 + parsedDeduplication, // 🆕 중복 제거 설정 전달 ); if (!result.success) { @@ -397,7 +414,7 @@ router.get( } console.log( - `✅ 조인 데이터 조회 성공: ${result.data?.length || 0}개 항목` + `✅ 조인 데이터 조회 성공: ${result.data?.length || 0}개 항목`, ); return res.json({ @@ -412,7 +429,7 @@ router.get( error: error instanceof Error ? error.message : "Unknown error", }); } - } + }, ); /** @@ -501,7 +518,7 @@ router.get( } console.log( - `✅ 데이터 조회 성공: ${tableName}, ${result.data?.length || 0}개 항목` + `✅ 데이터 조회 성공: ${tableName}, ${result.data?.length || 0}개 항목`, ); // 페이징 정보 포함하여 반환 @@ -527,7 +544,7 @@ router.get( error: error instanceof Error ? error.message : "Unknown error", }); } - } + }, ); /** @@ -569,7 +586,7 @@ router.get( } console.log( - `✅ 컬럼 정보 조회 성공: ${tableName}, ${result.data?.length || 0}개 컬럼` + `✅ 컬럼 정보 조회 성공: ${tableName}, ${result.data?.length || 0}개 컬럼`, ); return res.json(result); @@ -581,7 +598,7 @@ router.get( error: error instanceof Error ? error.message : "Unknown error", }); } - } + }, ); /** @@ -633,7 +650,8 @@ router.get( } // 🆕 primaryKeyColumn 파싱 - const primaryKeyColumnStr = typeof primaryKeyColumn === "string" ? primaryKeyColumn : undefined; + const primaryKeyColumnStr = + typeof primaryKeyColumn === "string" ? primaryKeyColumn : undefined; console.log(`🔍 레코드 상세 조회: ${tableName}/${id}`, { enableEntityJoin: enableEntityJoinFlag, @@ -647,7 +665,7 @@ router.get( id, enableEntityJoinFlag, groupByColumnsArray, - primaryKeyColumnStr // 🆕 Primary Key 컬럼명 전달 + primaryKeyColumnStr, // 🆕 Primary Key 컬럼명 전달 ); if (!result.success) { @@ -675,7 +693,7 @@ router.get( error: error instanceof Error ? error.message : "Unknown error", }); } - } + }, ); /** @@ -729,7 +747,7 @@ router.post( records, req.user?.companyCode, req.user?.userId, - deleteOrphans + deleteOrphans, ); if (!result.success) { @@ -758,7 +776,81 @@ router.post( error: error instanceof Error ? error.message : "Unknown error", }); } - } + }, +); + +/** + * 설비 ID 일괄 검증 API + * POST /api/data/equipment_mng/validate + * + * 요청: { "equipmentIds": ["EQ_001", "EQ_002", "EQ_003"] } + * 응답: { "success": true, "data": [{ "equipment_id": "EQ_001", "equipment_name": "프레스 1호기" }, ...] } + * + * - 존재하는 설비만 반환 (존재하지 않는 ID는 응답에서 제외) + * - 멀티테넌시: company_code 필터링 적용 + */ +router.post( + "/equipment_mng/validate", + authenticateToken, + async (req: AuthenticatedRequest, res) => { + try { + const { equipmentIds } = req.body; + + if (!Array.isArray(equipmentIds) || equipmentIds.length === 0) { + return res.status(400).json({ + success: false, + message: "equipmentIds 배열이 필요합니다.", + }); + } + + // 최대 500개 제한 + if (equipmentIds.length > 500) { + return res.status(400).json({ + success: false, + message: "한 번에 최대 500개까지 검증할 수 있습니다.", + }); + } + + const companyCode = req.user?.companyCode; + const pool = getPool(); + + // Parameterized query로 SQL Injection 방지 + const placeholders = equipmentIds.map((_, i) => `$${i + 1}`).join(", "); + const params: any[] = [...equipmentIds]; + + let whereClause = `WHERE equipment_id IN (${placeholders})`; + + // 멀티테넌시 필터링 (company_code가 '*'이 아닌 경우) + if (companyCode && companyCode !== "*") { + params.push(companyCode); + whereClause += ` AND company_code = $${params.length}`; + } + + const query = ` + SELECT equipment_id, equipment_name + FROM equipment_mng + ${whereClause} + `; + + const result = await pool.query(query, params); + + console.log( + `✅ 설비 일괄 검증: ${result.rowCount}/${equipmentIds.length}개 확인`, + ); + + return res.json({ + success: true, + data: result.rows, + }); + } catch (error: any) { + console.error("설비 일괄 검증 오류:", error); + return res.status(500).json({ + success: false, + message: "설비 검증 중 오류가 발생했습니다.", + error: error.message, + }); + } + }, ); /** @@ -798,7 +890,7 @@ router.post( // 테이블에 company_code 컬럼이 있는지 확인하고 자동으로 추가 const hasCompanyCode = await dataService.checkColumnExists( tableName, - "company_code" + "company_code", ); if (hasCompanyCode && req.user?.companyCode) { enrichedData.company_code = req.user.companyCode; @@ -808,7 +900,7 @@ router.post( // 테이블에 company_name 컬럼이 있는지 확인하고 자동으로 추가 const hasCompanyName = await dataService.checkColumnExists( tableName, - "company_name" + "company_name", ); if (hasCompanyName && req.user?.companyName) { enrichedData.company_name = req.user.companyName; @@ -837,7 +929,7 @@ router.post( error: error instanceof Error ? error.message : "Unknown error", }); } - } + }, ); /** @@ -893,7 +985,7 @@ router.put( error: error instanceof Error ? error.message : "Unknown error", }); } - } + }, ); /** @@ -949,7 +1041,7 @@ router.post( error: error.message, }); } - } + }, ); /** @@ -972,12 +1064,16 @@ router.post( }); } - console.log(`🗑️ 그룹 삭제:`, { tableName, filterConditions, userCompany }); + console.log(`🗑️ 그룹 삭제:`, { + tableName, + filterConditions, + userCompany, + }); const result = await dataService.deleteGroupRecords( tableName, filterConditions, - userCompany // 회사 코드 전달 + userCompany, // 회사 코드 전달 ); if (!result.success) { @@ -994,7 +1090,7 @@ router.post( error: error.message, }); } - } + }, ); router.delete( @@ -1044,7 +1140,7 @@ router.delete( error: error instanceof Error ? error.message : "Unknown error", }); } - } + }, ); export default router; -- 2.43.0 From 440ad1e42550bf4de2ae391f6f3f582a4cf22abe Mon Sep 17 00:00:00 2001 From: kjs Date: Wed, 4 Mar 2026 23:03:17 +0900 Subject: [PATCH 55/64] Merge remote-tracking branch 'upstream/main' -- 2.43.0 From f9b1df89e79d4492a89480202e2b178a29f6b3cf Mon Sep 17 00:00:00 2001 From: kjs Date: Thu, 5 Mar 2026 13:30:15 +0900 Subject: [PATCH 56/64] Merge remote-tracking branch 'upstream/main' -- 2.43.0 From f1ae6c275ded64b6818cb95a94b15c72692947e5 Mon Sep 17 00:00:00 2001 From: kjs Date: Thu, 5 Mar 2026 19:22:23 +0900 Subject: [PATCH 57/64] Merge remote-tracking branch 'upstream/main' -- 2.43.0 From cede62bd9c88e62a71cd125f7e3115ec58de5271 Mon Sep 17 00:00:00 2001 From: kjs Date: Thu, 5 Mar 2026 19:38:18 +0900 Subject: [PATCH 58/64] fix: Correctly close the initializeServices function in app.ts - Fixed a syntax error by properly closing the initializeServices function. - This change ensures that the application initializes services correctly without any runtime issues. --- backend-node/src/app.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend-node/src/app.ts b/backend-node/src/app.ts index 86e6f40f..1c5689d2 100644 --- a/backend-node/src/app.ts +++ b/backend-node/src/app.ts @@ -432,6 +432,6 @@ async function initializeServices() { } catch (error) { logger.warn("⚠️ AI 어시스턴트 기동 스킵:", error); } -}); +} export default app; -- 2.43.0 From 7debee42c7f3173ec05cfe02578af4aa1f671303 Mon Sep 17 00:00:00 2001 From: kjs Date: Thu, 5 Mar 2026 21:47:11 +0900 Subject: [PATCH 59/64] Merge remote-tracking branch 'upstream/main' -- 2.43.0 From 53e814b38244e025d9fbcc3ec62e9c453561ad5d Mon Sep 17 00:00:00 2001 From: kjs Date: Fri, 13 Mar 2026 11:47:45 +0900 Subject: [PATCH 60/64] Merge remote-tracking branch 'upstream/main' -- 2.43.0 From 073899c5556b1c3115e54632f7d7749ecb126c49 Mon Sep 17 00:00:00 2001 From: kjs Date: Mon, 16 Mar 2026 09:36:19 +0900 Subject: [PATCH 61/64] Merge remote-tracking branch 'upstream/main' -- 2.43.0 From eccb6352053aca2b89ee9c0573ca467bccc1b2c1 Mon Sep 17 00:00:00 2001 From: kjs Date: Thu, 19 Mar 2026 09:48:21 +0900 Subject: [PATCH 62/64] Merge remote-tracking branch 'upstream/main' -- 2.43.0 From a238ba36231e35f1be5c4803bb38cd6deed5490b Mon Sep 17 00:00:00 2001 From: Johngreen Date: Fri, 20 Mar 2026 13:56:24 +0900 Subject: [PATCH 63/64] =?UTF-8?q?feat:=20V2=20WebView=20=EC=BB=B4=ED=8F=AC?= =?UTF-8?q?=EB=84=8C=ED=8A=B8=20+=20SSO=20=EC=97=B0=EB=8F=99=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - V2WebView 컴포넌트: iframe 기반 외부 웹 임베딩 - SSO 연동: 현재 로그인 JWT를 sso_token 파라미터로 자동 전달 - /api/system/raw-token: 범용 JWT 토큰 조회 API - V2WebViewConfigPanel: URL, SSO, sandbox 등 설정 UI + 개발자 가이드 Made-with: Cursor --- .omc/project-memory.json | 328 +++++++++++++ .../591d357c-df9d-4bbc-8dfa-1b98a9184e23.json | 8 + .omc/state/hud-state.json | 6 + .omc/state/hud-stdin-cache.json | 1 + .omc/state/idle-notif-cooldown.json | 3 + docs/AI_화면생성_시스템_설계서.md | 451 ++++++++++++++++++ frontend/app/api/fleet-sso/token/route.ts | 66 +++ frontend/app/api/system/raw-token/route.ts | 18 + .../v2/config-panels/V2WebViewConfigPanel.tsx | 236 +++++++++ frontend/lib/registry/components/index.ts | 1 + .../v2-web-view/V2WebViewComponent.tsx | 195 ++++++++ .../v2-web-view/V2WebViewRenderer.tsx | 16 + .../registry/components/v2-web-view/index.ts | 34 ++ .../registry/components/v2-web-view/types.ts | 13 + frontend/package-lock.json | 42 +- 15 files changed, 1381 insertions(+), 37 deletions(-) create mode 100644 .omc/project-memory.json create mode 100644 .omc/sessions/591d357c-df9d-4bbc-8dfa-1b98a9184e23.json create mode 100644 .omc/state/hud-state.json create mode 100644 .omc/state/hud-stdin-cache.json create mode 100644 .omc/state/idle-notif-cooldown.json create mode 100644 docs/AI_화면생성_시스템_설계서.md create mode 100644 frontend/app/api/fleet-sso/token/route.ts create mode 100644 frontend/app/api/system/raw-token/route.ts create mode 100644 frontend/components/v2/config-panels/V2WebViewConfigPanel.tsx create mode 100644 frontend/lib/registry/components/v2-web-view/V2WebViewComponent.tsx create mode 100644 frontend/lib/registry/components/v2-web-view/V2WebViewRenderer.tsx create mode 100644 frontend/lib/registry/components/v2-web-view/index.ts create mode 100644 frontend/lib/registry/components/v2-web-view/types.ts diff --git a/.omc/project-memory.json b/.omc/project-memory.json new file mode 100644 index 00000000..9a424223 --- /dev/null +++ b/.omc/project-memory.json @@ -0,0 +1,328 @@ +{ + "version": "1.0.0", + "lastScanned": 1772609393905, + "projectRoot": "/Users/johngreen/Dev/vexplor", + "techStack": { + "languages": [ + { + "name": "JavaScript/TypeScript", + "version": null, + "confidence": "high", + "markers": [ + "package.json" + ] + } + ], + "frameworks": [], + "packageManager": "npm", + "runtime": null + }, + "build": { + "buildCommand": null, + "testCommand": null, + "lintCommand": null, + "devCommand": null, + "scripts": {} + }, + "conventions": { + "namingStyle": null, + "importStyle": null, + "testPattern": null, + "fileOrganization": "type-based" + }, + "structure": { + "isMonorepo": false, + "workspaces": [], + "mainDirectories": [ + "docs", + "lib", + "scripts", + "src" + ], + "gitBranches": { + "defaultBranch": "main", + "branchingStrategy": null + } + }, + "customNotes": [], + "directoryMap": { + "WebContent": { + "path": "WebContent", + "purpose": null, + "fileCount": 5, + "lastAccessed": 1772609393856, + "keyFiles": [ + "init.jsp", + "init_jqGrid.jsp", + "init_no_login.jsp", + "init_toastGrid.jsp", + "viewImage.jsp" + ] + }, + "backend": { + "path": "backend", + "purpose": null, + "fileCount": 6, + "lastAccessed": 1772609393857, + "keyFiles": [ + "Dockerfile", + "Dockerfile.mac", + "build.gradle", + "gradlew", + "gradlew.bat" + ] + }, + "backend-node": { + "path": "backend-node", + "purpose": null, + "fileCount": 14, + "lastAccessed": 1772609393872, + "keyFiles": [ + "API_연동_가이드.md", + "API_키_정리.md", + "Dockerfile.win", + "PHASE1_USAGE_GUIDE.md", + "README.md" + ] + }, + "db": { + "path": "db", + "purpose": null, + "fileCount": 2, + "lastAccessed": 1772609393873, + "keyFiles": [ + "00-create-roles.sh", + "migrate_company13_export.sh" + ] + }, + "deploy": { + "path": "deploy", + "purpose": null, + "fileCount": 0, + "lastAccessed": 1772609393873, + "keyFiles": [] + }, + "docker": { + "path": "docker", + "purpose": null, + "fileCount": 0, + "lastAccessed": 1772609393873, + "keyFiles": [] + }, + "docs": { + "path": "docs", + "purpose": "Documentation", + "fileCount": 23, + "lastAccessed": 1772609393873, + "keyFiles": [ + "AI_화면생성_시스템_설계서.md", + "DB_ARCHITECTURE_ANALYSIS.md", + "DB_STRUCTURE_DIAGRAM.html", + "DB_WORKFLOW_ANALYSIS.md", + "KUBERNETES_DEPLOYMENT_GUIDE.md" + ] + }, + "frontend": { + "path": "frontend", + "purpose": null, + "fileCount": 14, + "lastAccessed": 1772609393873, + "keyFiles": [ + "MODAL_REPEATER_TABLE_DEBUG.md", + "README.md", + "components.json", + "eslint.config.mjs", + "middleware.ts" + ] + }, + "hooks": { + "path": "hooks", + "purpose": null, + "fileCount": 1, + "lastAccessed": 1772609393879, + "keyFiles": [ + "useScreenStandards.ts" + ] + }, + "k8s": { + "path": "k8s", + "purpose": null, + "fileCount": 7, + "lastAccessed": 1772609393882, + "keyFiles": [ + "local-path-provisioner.yaml", + "namespace.yaml", + "vexplor-backend-deployment.yaml", + "vexplor-config.yaml", + "vexplor-frontend-deployment.yaml" + ] + }, + "lib": { + "path": "lib", + "purpose": "Library code", + "fileCount": 0, + "lastAccessed": 1772609393883, + "keyFiles": [] + }, + "mcp-agent-orchestrator": { + "path": "mcp-agent-orchestrator", + "purpose": null, + "fileCount": 4, + "lastAccessed": 1772609393883, + "keyFiles": [ + "README.md", + "package-lock.json", + "package.json", + "tsconfig.json" + ] + }, + "popdocs": { + "path": "popdocs", + "purpose": null, + "fileCount": 12, + "lastAccessed": 1772609393884, + "keyFiles": [ + "ARCHITECTURE.md", + "CHANGELOG.md", + "FILES.md", + "INDEX.md", + "PLAN.md" + ] + }, + "scripts": { + "path": "scripts", + "purpose": "Build/utility scripts", + "fileCount": 2, + "lastAccessed": 1772609393884, + "keyFiles": [ + "add-modal-ids.py", + "remove-logs.js" + ] + }, + "src": { + "path": "src", + "purpose": "Source code", + "fileCount": 0, + "lastAccessed": 1772609393884, + "keyFiles": [] + }, + "tomcat-conf": { + "path": "tomcat-conf", + "purpose": null, + "fileCount": 1, + "lastAccessed": 1772609393884, + "keyFiles": [ + "context.xml" + ] + }, + "backend/build": { + "path": "backend/build", + "purpose": "Build output", + "fileCount": 0, + "lastAccessed": 1772609393884, + "keyFiles": [] + }, + "backend/src": { + "path": "backend/src", + "purpose": "Source code", + "fileCount": 0, + "lastAccessed": 1772609393884, + "keyFiles": [] + }, + "backend-node/data": { + "path": "backend-node/data", + "purpose": "Data files", + "fileCount": 0, + "lastAccessed": 1772609393884, + "keyFiles": [] + }, + "db/migrations": { + "path": "db/migrations", + "purpose": "Database migrations", + "fileCount": 16, + "lastAccessed": 1772609393884, + "keyFiles": [ + "046_MIGRATION_FIX.md", + "046_QUICK_FIX.md", + "README_1003.md" + ] + }, + "db/scripts": { + "path": "db/scripts", + "purpose": "Build/utility scripts", + "fileCount": 1, + "lastAccessed": 1772609393884, + "keyFiles": [ + "README_cleanup.md" + ] + }, + "frontend/app": { + "path": "frontend/app", + "purpose": "Application code", + "fileCount": 5, + "lastAccessed": 1772609393885, + "keyFiles": [ + "favicon.ico", + "globals.css", + "layout.tsx" + ] + }, + "frontend/components": { + "path": "frontend/components", + "purpose": "UI components", + "fileCount": 1, + "lastAccessed": 1772609393885, + "keyFiles": [ + "GlobalFileViewer.tsx" + ] + }, + "mcp-agent-orchestrator/src": { + "path": "mcp-agent-orchestrator/src", + "purpose": "Source code", + "fileCount": 1, + "lastAccessed": 1772609393885, + "keyFiles": [ + "index.ts" + ] + }, + "src/controllers": { + "path": "src/controllers", + "purpose": "Controllers", + "fileCount": 1, + "lastAccessed": 1772609393885, + "keyFiles": [ + "dataflowDiagramController.ts" + ] + }, + "src/routes": { + "path": "src/routes", + "purpose": "Route handlers", + "fileCount": 1, + "lastAccessed": 1772609393885, + "keyFiles": [ + "dataflowDiagramRoutes.ts" + ] + }, + "src/services": { + "path": "src/services", + "purpose": "Business logic services", + "fileCount": 1, + "lastAccessed": 1772609393885, + "keyFiles": [ + "dataflowDiagramService.ts" + ] + }, + "src/utils": { + "path": "src/utils", + "purpose": "Utility functions", + "fileCount": 2, + "lastAccessed": 1772609393885, + "keyFiles": [ + "databaseValidator.ts", + "queryBuilder.ts" + ] + } + }, + "hotPaths": [], + "userDirectives": [] +} \ No newline at end of file diff --git a/.omc/sessions/591d357c-df9d-4bbc-8dfa-1b98a9184e23.json b/.omc/sessions/591d357c-df9d-4bbc-8dfa-1b98a9184e23.json new file mode 100644 index 00000000..ec93e466 --- /dev/null +++ b/.omc/sessions/591d357c-df9d-4bbc-8dfa-1b98a9184e23.json @@ -0,0 +1,8 @@ +{ + "session_id": "591d357c-df9d-4bbc-8dfa-1b98a9184e23", + "ended_at": "2026-03-04T08:10:16.810Z", + "reason": "other", + "agents_spawned": 0, + "agents_completed": 0, + "modes_used": [] +} \ No newline at end of file diff --git a/.omc/state/hud-state.json b/.omc/state/hud-state.json new file mode 100644 index 00000000..5fbc9b8f --- /dev/null +++ b/.omc/state/hud-state.json @@ -0,0 +1,6 @@ +{ + "timestamp": "2026-03-04T07:29:57.315Z", + "backgroundTasks": [], + "sessionStartTimestamp": "2026-03-04T07:29:53.176Z", + "sessionId": "591d357c-df9d-4bbc-8dfa-1b98a9184e23" +} \ No newline at end of file diff --git a/.omc/state/hud-stdin-cache.json b/.omc/state/hud-stdin-cache.json new file mode 100644 index 00000000..d5a8e668 --- /dev/null +++ b/.omc/state/hud-stdin-cache.json @@ -0,0 +1 @@ +{"session_id":"591d357c-df9d-4bbc-8dfa-1b98a9184e23","transcript_path":"/Users/johngreen/.claude/projects/-Users-johngreen-Dev-vexplor/591d357c-df9d-4bbc-8dfa-1b98a9184e23.jsonl","cwd":"/Users/johngreen/Dev/vexplor","model":{"id":"claude-opus-4-6","display_name":"Opus 4.6"},"workspace":{"current_dir":"/Users/johngreen/Dev/vexplor","project_dir":"/Users/johngreen/Dev/vexplor","added_dirs":[]},"version":"2.1.66","output_style":{"name":"default"},"cost":{"total_cost_usd":0.516748,"total_duration_ms":65256,"total_api_duration_ms":28107,"total_lines_added":0,"total_lines_removed":0},"context_window":{"total_input_tokens":604,"total_output_tokens":838,"context_window_size":200000,"current_usage":{"input_tokens":1,"output_tokens":277,"cache_creation_input_tokens":1836,"cache_read_input_tokens":55498},"used_percentage":29,"remaining_percentage":71},"exceeds_200k_tokens":false} \ No newline at end of file diff --git a/.omc/state/idle-notif-cooldown.json b/.omc/state/idle-notif-cooldown.json new file mode 100644 index 00000000..84ff7ebe --- /dev/null +++ b/.omc/state/idle-notif-cooldown.json @@ -0,0 +1,3 @@ +{ + "lastSentAt": "2026-03-04T07:30:30.883Z" +} \ No newline at end of file diff --git a/docs/AI_화면생성_시스템_설계서.md b/docs/AI_화면생성_시스템_설계서.md new file mode 100644 index 00000000..b7873615 --- /dev/null +++ b/docs/AI_화면생성_시스템_설계서.md @@ -0,0 +1,451 @@ +# AI 기반 화면 자동 생성 시스템 설계서 + +## 1. 개요 + +### 1.1 목표 + +사용자가 자연어로 "자재입고페이지 만들어줘"라고 요청하면, AI가 자동으로 완성된 화면과 워크플로우를 생성 + +### 1.2 핵심 가치 + +- **제로 코딩**: 대화만으로 화면 생성 +- **워크플로우 포함**: 저장 시 재고 업데이트 등 자동 설정 +- **기존 시스템 활용**: 새 인프라 최소화, 기존 API 재사용 + +### 1.3 예상 시나리오 + +``` +사용자: "자재입고페이지 만들어줘" + +AI: "입고관리 화면 41개를 분석했습니다. + + ✅ 자동 적용 (90%+ 사용) + - 레이아웃: 분할화면 (좌: 목록, 우: 상세) + - 필수 필드: 입고번호, 입고일자, 품목코드, 수량 + + 💡 추천 기능 (60% 사용) + - 저장 시 재고 자동 증가 + [추가하기] + + ➕ 선택 필드 + [ ] 창고 (68%) [ ] 공급업체 (61%) + + [화면 생성하기]" + +사용자: "재고 연동 추가하고, 창고 필드도 넣어줘" + +AI: "화면을 생성했습니다. + - 화면명: 자재 입고관리 + - 레이아웃: 분할화면 + - 필드: 입고번호, 입고일자, 품목, 수량, 창고 + - 워크플로우: 저장 시 inventory_stock +qty + + [미리보기] [메뉴에 추가]" +``` + +--- + +## 2. 시스템 아키텍처 + +``` + ┌───────────────────────────────────────────────────────────────┬───────────────────────────────┐ +│ 신규 개발 (AI 담당) │ 기존 드래그앤드랍 시스템 │ +│ ┌─────────────┐ ┌──────────────────────────────┐ │ ┌─────────────────────┐ │ +│ │ Chat UI │────▶│ AI 서비스 │ │ │ D&D UI Builder │ │ +│ └─────────────┘ │ • LLM 호출 (Claude/GPT) │ │ └─────────┬──────────┘ │ +│ │ • 패턴 분석 + RAG 검색 │ │ │ │ +│ │ • JSON 생성 │ │ ▼ │ +│ └──────────────┬──────────────┘ │ ┌─────────────────────┐ │ +└─────────────────────────────────────┼─────────────────────---──┴─┼─────────────────────┬─────┘ + │ 기존 API 호출 │ 기존 API 호출 │ + ▼ ┼─────────────────────┘ + ▼ +┌-------------------------------------------------------------------------------┐ +│ 기존 시스템 (vexplor) │ +│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ +│ │ Screen API │ │ Flow API │ │ Dataflow API│ │ +│ └─────────────┘ └─────────────┘ └─────────────┘ │ +│ │ │ +│ ┌──────┴──────┐ │ +│ │ PostgreSQL │ │ +│ └─────────────┘ │ +└-------------------------------------------------------------------------------┘ +``` + +### 설계 원칙 + +| 원칙 | 설명 | +| --------------------- | --------------------------------- | +| 기존 코드 변경 최소화 | 기존 백엔드/프론트 수정 없음 | +| 기존 API 재사용 | AI가 기존 API를 "사용자처럼" 호출 | +| RAG 기반 지식 주입 | 필요한 패턴만 동적으로 LLM에 주입 | +| **Assistive AI** | AI는 결정하지 않고, 사용자의 결정을 돕는다 | + +--- + +## 3. AI가 화면을 "알아서" 만드는 방법 + +### 3.1 지식 소스 + +| 데이터 | 테이블 | 활용 | +| --------------- | ---------------------------------- | ------------------- | +| 기존 화면 | screen_definitions, screen_layouts | 패턴 학습 | +| 테이블 라벨 | table_labels | 테이블 검색 | +| 컬럼 라벨 | column_labels | 필드→컴포넌트 매핑 | +| 워크플로우 패턴 | workflow_patterns (신규) | 비즈니스 로직 | + +### 3.2 통계 기반 패턴 분석 + +> **핵심 아이디어**: 사용자들이 이미 만든 화면들을 분석해서 "입고 화면은 보통 이렇게 생겼더라"를 알아내는 것 + +#### 예시: "입고페이지 만들어줘" 요청 시 + +**Step 1. 테이블 찾기** + +```sql +-- "입고"라는 단어로 table_labels 검색 +SELECT table_name, table_label FROM table_labels +WHERE table_label LIKE '%입고%'; + +-- 결과: inbound_mng (입고관리) +``` + +**Step 2. 이 테이블을 쓰는 기존 화면 찾기** + +```sql +-- inbound_mng 테이블을 사용하는 화면들 조회 +SELECT * FROM screen_definitions +WHERE table_name = 'inbound_mng'; + +-- 결과: 41개 화면 발견! +``` + +**Step 3. 41개 화면의 "공통점" 분석** + +레이아웃 통계: + +| 레이아웃 | 개수 | 비율 | +| -------------------------------- | ----- | -------- | +| split-panel (좌: 목록, 우: 상세) | 32개 | **78%** | +| table-list (목록만) | 6개 | 15% | +| form (폼만) | 3개 | 7% | + +필드 사용 통계: + +| 필드 | 사용 화면 수 | 비율 | +| ---------------------- | ------------ | -------- | +| inbound_no (입고번호) | 41개 | **100%** | +| inbound_date (입고일자)| 41개 | **100%** | +| item_code (품목코드) | 40개 | **98%** | +| qty (수량) | 39개 | **95%** | +| warehouse_code (창고) | 28개 | 68% | +| supplier_code (공급업체)| 25개 | 61% | + +**Step 4. 확신도(Confidence)에 따라 다르게 처리** + +AI는 통계 결과의 확신도에 따라 행동을 다르게 합니다: + +| 확신도 | 기준 | AI 행동 | 예시 | +| ------ | ---- | ------- | ---- | +| **높음** | 90%+ | 자동 적용 | 필수 필드(입고번호, 일자) 자동 추가 | +| **중간** | 60~90% | 추천하며 확인 | "분할화면으로 만들까요? (78% 사용)" | +| **낮음** | 60% 미만 | 옵션 나열 | "창고 필드 추가할까요? (68%)" | + +``` +AI 판단 예시: +- 레이아웃: split-panel (78%) → "분할화면으로 생성합니다" +- 필수 필드: 입고번호, 입고일자 (100%) → 자동 추가 +- 워크플로우: 입고→재고 (60%) → "💡 재고 자동 연동 추가할까요?" +- 선택 필드: 창고 (68%) → "추가 필드: [ ] 창고 [ ] 공급업체" +``` + +**핵심**: 확실한 것은 빠르게 처리하고, 애매한 것은 사용자에게 물어본다. + +#### 비유: "맛집 추천 AI"와 같은 원리 + +| 맛집 추천 AI | 화면 생성 AI | +| ------------ | ------------ | +| "강남에서 점심 뭐 먹지?" | "입고페이지 만들어줘" | +| 강남 식당 1000개 리뷰 분석 | 기존 입고 화면 41개 분석 | +| "70%가 파스타집, 평균 1.5만원" | "78%가 분할화면, 100%가 입고번호 사용" | +| "파스타집 추천드릴까요?" | "분할화면으로 만들까요?" | + +### 3.3 RAG 기반 동적 지식 주입 (핵심) + +> **문제**: 모든 도메인 지식을 프롬프트에 넣으면 Context Window 초과 + +> **해결**: 필요한 지식만 검색해서 동적 주입 + +``` +사용자: "입고페이지 만들어줘" + ↓ +1. 키워드 추출: "입고" + ↓ +2. workflow_patterns 검색 → "입고→재고 증가" 패턴 발견 + ↓ +3. LLM 프롬프트에 해당 패턴만 주입 + ↓ +4. 재고 증가 로직 포함된 화면 생성 +``` + +#### 장점 + +| 장점 | 설명 | +| ------------- | ---------------------------------- | +| 토큰 절약 | 관련 패턴 1-2개만 주입 | +| 확장성 | 패턴 1000개여도 프롬프트 길이 동일 | +| 회사별 커스텀 | company_code로 회사별 패턴 적용 | + +### 3.4 멀티테넌트 & Fallback 전략 + +회사마다 테이블명이 다르거나, 신규 회사라 기존 화면이 없을 수 있습니다. + +**데이터 검색 우선순위:** + +``` +1순위: 해당 회사의 기존 화면 (가장 정확) + ↓ 없거나 부족하면 +2순위: 전체 회사의 익명화된 통계 (company_code 제외, 패턴만) + ↓ 그래도 부족하면 +3순위: vexplor 표준 템플릿 (기본 레이아웃 + 필수 필드) +``` + +**여러 테이블이 검색될 때:** + +``` +사용자: "입고페이지 만들어줘" + +AI: "입고 관련 테이블이 3개 있습니다: + 1. 자재입고관리 (material_inbound) + 2. 제품입고관리 (product_inbound) + 3. 반품입고관리 (return_inbound) + + 어떤 테이블로 만들까요?" +``` + +### 3.5 기존 시스템 분석 결과 + +**발견된 학습 가능 데이터:** + +- `transferData` 액션: 14개 (발주→입고, 수주→출고 등) +- 제어관리 프레임워크: `dataflowControlService.ts` 존재 +- 입고→재고 규칙: 아직 정의되지 않음 → AI가 생성하면 됨 + +--- + +## 4. 개발 범위 + +### 4.1 AI 담당 (신규) + +| 작업 | 파일 | 우선순위 | +| ------------------------------------ | ----------------------------- | ------------ | +| AI 채팅 API | `aiRoutes.ts` | P0 | +| 화면 패턴 분석 | `screenAnalyzer.ts` | P0 | +| LLM 호출 | `llmService.ts` | P0 | +| **워크플로우 패턴 검색 (RAG)** | `workflowPatternService.ts` | **P0** | +| 채팅 UI | `AIChatPanel.tsx` | P0 | +| **workflow_patterns 테이블** | DB | **P0** | + +```typescript +// 패턴 검색 핵심 로직 +export async function searchWorkflowPatterns(userIntent: string, companyCode: string) { + const keywords = extractKeywords(userIntent); + + return await query(` + SELECT * FROM workflow_patterns + WHERE intent_keywords && $1::text[] + AND (company_code = $2 OR company_code = '*') + ORDER BY priority DESC + LIMIT 3 + `, [keywords, companyCode]); +} +``` + +### 4.2 vexplor 담당 (기존 보완) + +| 작업 | 현재 상태 | 필요 작업 | +| -------------- | --------- | ------------------- | +| 화면 생성 API | ✅ 존재 | 문서화 | +| 워크플로우 API | ✅ 존재 | 문서화 | +| 제어관리 API | ✅ 존재 | AI 활용 가능 | +| table_labels | 부분 존재 | 주요 테이블 한글 라벨 | +| column_labels | 부분 존재 | web_type 보완 | + +#### 4.2.1 table_labels가 필요한 이유 + +AI가 "입고"라는 단어로 테이블을 찾으려면 한글 라벨이 있어야 합니다. + +**현재 상태:** + +| table_name | table_label | AI 검색 | +| ---------- | ----------- | ------- | +| inbound_mng | **입고관리** | ✅ "입고" 검색 가능 | +| outbound_mng | **출고관리** | ✅ "출고" 검색 가능 | +| production_record | production_record | ❌ "생산" 검색 불가 | +| purchase_order_master | purchase_order_master | ❌ "발주" 검색 불가 | + +**필요 작업**: 주요 업무 테이블에 한글 라벨 추가 + +```sql +UPDATE table_labels SET table_label = '생산실적' WHERE table_name = 'production_record'; +UPDATE table_labels SET table_label = '발주관리' WHERE table_name = 'purchase_order_master'; +``` + +#### 4.2.2 column_labels의 web_type이 필요한 이유 + +AI가 컬럼을 보고 **어떤 컴포넌트를 생성할지** 결정해야 합니다. + +**현재 상태** (inbound_mng): + +| column_name | column_label | web_type | +| ----------- | ------------ | -------- | +| inbound_date | 입고일 | **null** | +| inbound_qty | 입고수량 | **null** | +| item_code | 품목코드 | **null** | + +**web_type이 null이면?** → AI가 모든 필드를 text-input으로 만들어버림 + +**web_type이 있으면:** + +| column_name | web_type | AI가 생성할 컴포넌트 | +| ----------- | -------- | ------------------- | +| inbound_date | **date** | 📅 날짜 선택기 | +| inbound_qty | **number** | 🔢 숫자 입력 | +| item_code | **entity** | 🔍 품목 검색 팝업 | +| memo | **textarea** | 📝 여러 줄 텍스트 | + +**필요 작업**: 주요 테이블 컬럼에 web_type 추가 + +```sql +UPDATE column_labels SET web_type = 'date' WHERE column_name LIKE '%_date'; +UPDATE column_labels SET web_type = 'number' WHERE column_name LIKE '%_qty'; +UPDATE column_labels SET web_type = 'entity' WHERE column_name LIKE '%_code' AND column_name != 'company_code'; +UPDATE column_labels SET web_type = 'textarea' WHERE column_name = 'memo'; +``` + +--- + +## 5. 데이터베이스 스키마 (AI 전용) + +```sql +-- 핵심: 워크플로우 패턴 (RAG 지식 베이스) +CREATE TABLE workflow_patterns ( + pattern_id SERIAL PRIMARY KEY, + category VARCHAR(50) NOT NULL, -- 'inventory', 'sales' + pattern_name VARCHAR(200) NOT NULL, -- '입고→재고 증가' + intent_keywords TEXT[] NOT NULL, -- ['입고', '자재입고', 'inbound'] + description TEXT, + source_table_hint VARCHAR(100), -- 'inbound_mng' + target_table_hint VARCHAR(100), -- 'inventory_stock' + logic_template JSONB NOT NULL, -- 제어관리 생성 템플릿 + company_code VARCHAR(20) DEFAULT '*', + priority INTEGER DEFAULT 100, + is_active BOOLEAN DEFAULT true +); + +CREATE INDEX idx_workflow_patterns_keywords ON workflow_patterns USING GIN(intent_keywords); + +-- 초기 데이터 +INSERT INTO workflow_patterns (category, pattern_name, intent_keywords, description, source_table_hint, target_table_hint, logic_template) VALUES +('inventory', '입고→재고 증가', + ARRAY['입고', '구매입고', '자재입고', 'inbound'], + '입고 저장 시 재고 수량 증가', + 'inbound_mng', 'inventory_stock', + '{"actionType": "upsert", "operation": "increment", "fieldMappings": [{"source": "item_code", "target": "item_code", "type": "key"}, {"source": "inbound_qty", "target": "qty", "type": "increment"}]}'::jsonb +), +('inventory', '출고→재고 감소', + ARRAY['출고', '판매출고', 'outbound'], + '출고 저장 시 재고 수량 감소', + 'outbound_mng', 'inventory_stock', + '{"actionType": "update", "operation": "decrement", "fieldMappings": [{"source": "item_code", "target": "item_code", "type": "key"}, {"source": "outbound_qty", "target": "qty", "type": "decrement"}]}'::jsonb +); + +-- 동의어 매핑 (P1) +CREATE TABLE keyword_mapping ( + id SERIAL PRIMARY KEY, + keyword VARCHAR(100) NOT NULL, + table_name VARCHAR(100) NOT NULL, + company_code VARCHAR(20) DEFAULT '*' +); + +-- AI 대화 이력 (P2) +CREATE TABLE ai_conversations ( + id SERIAL PRIMARY KEY, + session_id VARCHAR(100) NOT NULL, + company_code VARCHAR(20) NOT NULL, + user_id VARCHAR(50) NOT NULL, + created_at TIMESTAMPTZ DEFAULT NOW() +); + +CREATE TABLE ai_messages ( + id SERIAL PRIMARY KEY, + conversation_id INTEGER REFERENCES ai_conversations(id), + role VARCHAR(20) NOT NULL, + content TEXT NOT NULL, + metadata JSONB, + created_at TIMESTAMPTZ DEFAULT NOW() +); +``` + +--- + +## 6. 개발 로드맵 + +### Phase 1: MVP + +**AI:** + +- 채팅 UI + LLM 연동 +- 화면 패턴 분석 +- workflow_patterns 테이블 + RAG 검색 + +**vexplor:** + +- API 스펙 문서화 (screen, flow) +- 주요 테이블 한글 라벨 20개 + +### Phase 2: 워크플로우 + +**AI:** + +- 자연어 → 워크플로우 변환 +- dataflow_diagrams 자동 생성 + +**vexplor:** + +- 워크플로우 API 문서화 + +### Phase 3: 고도화 + +- 대화형 수정 ("왼쪽 패널 넓혀줘") +- 멀티턴 컨텍스트 +- 사용자 피드백 학습 + +--- + +## 7. vexplor 체크리스트 + +### 즉시 (P0) + +- [ ] POST /api/screen/create 스펙 +- [ ] POST /api/flow/definitions 스펙 +- [ ] 화면 레이아웃 JSON 예시 + +### 1주 내 (P1) + +- [ ] 주요 테이블 20개 한글 라벨 + - inbound_mng, outbound_mng, inventory_stock + - item_info, customer_mng, supplier_mng + - sales_order_mng, purchase_order_mng +- [ ] column_labels web_type 보완 + +--- + +## 8. 성공 지표 + +| 지표 | 목표 | +| -------------------- | --------- | +| 화면 생성 성공률 | 90%+ | +| 평균 생성 시간 | 10초 이내 | +| 수정 없이 사용 | 70%+ | +| 워크플로우 자동 연결 | 80%+ | diff --git a/frontend/app/api/fleet-sso/token/route.ts b/frontend/app/api/fleet-sso/token/route.ts new file mode 100644 index 00000000..0dbfd656 --- /dev/null +++ b/frontend/app/api/fleet-sso/token/route.ts @@ -0,0 +1,66 @@ +import { NextRequest, NextResponse } from "next/server"; +import crypto from "crypto"; +import { cookies } from "next/headers"; + +const FLEET_API_URL = process.env.FLEET_API_URL || "https://fleet-api.vexplor.com"; +const SSO_SHARED_SECRET = process.env.SSO_SHARED_SECRET || "change_this_sso_secret"; + +export async function POST(request: NextRequest) { + try { + // V1 로그인 세션에서 사용자 정보 추출 + const cookieStore = await cookies(); + const sessionToken = cookieStore.get("session_token")?.value + || cookieStore.get("token")?.value; + + if (!sessionToken) { + return NextResponse.json({ error: "로그인이 필요합니다." }, { status: 401 }); + } + + // 세션에서 사용자 정보 파싱 (JWT 디코딩) + let userId = "unknown"; + let userName = "unknown"; + let companyId = ""; + try { + const payload = JSON.parse(atob(sessionToken.split(".")[1])); + userId = payload.userId || payload.user_id || payload.sub || payload.id || "unknown"; + userName = payload.userName || payload.user_name || payload.name || "unknown"; + companyId = payload.companyId || payload.company_id || payload.companyCode || ""; + } catch { + return NextResponse.json({ error: "세션이 유효하지 않습니다." }, { status: 401 }); + } + + // Fleet API로 SSO 토큰 요청 (HMAC 서명) + const timestamp = Math.floor(Date.now() / 1000); + const signPayload = `${userId}|${userName}|${companyId}|${timestamp}`; + const signature = crypto + .createHmac("sha256", SSO_SHARED_SECRET) + .update(signPayload) + .digest("hex"); + + const response = await fetch(`${FLEET_API_URL}/api/auth/sso`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + user_id: userId, + user_name: userName, + company_id: companyId, + timestamp, + signature, + }), + }); + + const data = await response.json(); + + if (!response.ok || !data.success) { + return NextResponse.json( + { error: data.message || "SSO 토큰 발급 실패" }, + { status: response.status }, + ); + } + + return NextResponse.json({ token: data.data.token }); + } catch (error) { + console.error("[fleet-sso] 토큰 발급 에러:", error); + return NextResponse.json({ error: "서버 오류" }, { status: 500 }); + } +} diff --git a/frontend/app/api/system/raw-token/route.ts b/frontend/app/api/system/raw-token/route.ts new file mode 100644 index 00000000..225d50d4 --- /dev/null +++ b/frontend/app/api/system/raw-token/route.ts @@ -0,0 +1,18 @@ +import { NextResponse } from "next/server"; +import { cookies } from "next/headers"; + +export async function GET() { + try { + const cookieStore = await cookies(); + const token = + cookieStore.get("authToken")?.value || cookieStore.get("session_token")?.value || cookieStore.get("token")?.value; + + if (!token) { + return NextResponse.json({ error: "로그인이 필요합니다." }, { status: 401 }); + } + + return NextResponse.json({ token }); + } catch { + return NextResponse.json({ error: "서버 오류" }, { status: 500 }); + } +} diff --git a/frontend/components/v2/config-panels/V2WebViewConfigPanel.tsx b/frontend/components/v2/config-panels/V2WebViewConfigPanel.tsx new file mode 100644 index 00000000..a193b139 --- /dev/null +++ b/frontend/components/v2/config-panels/V2WebViewConfigPanel.tsx @@ -0,0 +1,236 @@ +"use client"; + +import React, { useState } from "react"; +import { Input } from "@/components/ui/input"; +import { Switch } from "@/components/ui/switch"; +import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@/components/ui/collapsible"; +import { Globe, Shield, Settings, ChevronDown, Info, Copy, Check } from "lucide-react"; +import { cn } from "@/lib/utils"; +import type { V2WebViewConfig } from "@/lib/registry/components/v2-web-view/types"; + +interface V2WebViewConfigPanelProps { + config: V2WebViewConfig; + onChange: (config: Partial) => void; +} + +const SSO_GUIDE_SNIPPET = `// URL에서 sso_token 파라미터를 읽어 JWT를 디코딩하세요 +const token = url.searchParams.get("sso_token"); +const payload = JSON.parse(atob(token.split(".")[1])); +// payload.userId, payload.userName, payload.companyCode`; + +export const V2WebViewConfigPanel: React.FC = ({ config, onChange }) => { + const [advancedOpen, setAdvancedOpen] = useState(false); + const [guideOpen, setGuideOpen] = useState(false); + const [copied, setCopied] = useState(false); + + const handleCopySnippet = () => { + navigator.clipboard.writeText(SSO_GUIDE_SNIPPET).then(() => { + setCopied(true); + setTimeout(() => setCopied(false), 2000); + }); + }; + + const updateConfig = (field: keyof V2WebViewConfig, value: any) => { + const newConfig = { ...config, [field]: value }; + onChange({ [field]: value }); + + if (typeof window !== "undefined") { + window.dispatchEvent( + new CustomEvent("componentConfigChanged", { + detail: { config: newConfig }, + }), + ); + } + }; + + return ( +

+ {/* ─── 1단계: URL 입력 ─── */} +
+
+ +

웹페이지 URL

+
+ updateConfig("url", e.target.value)} + placeholder="https://example.com" + className="h-8 text-sm" + /> +

임베드할 외부 웹페이지 주소를 입력하세요

+
+ + {/* ─── 2단계: SSO 연동 ─── */} +
+
+
+ +
+

SSO 연동

+

현재 로그인 토큰을 URL에 자동 전달해요

+
+
+ updateConfig("useSSO", checked)} /> +
+ + {config.useSSO && ( + + + + + +
+
+

전달 방식

+

URL 쿼리 파라미터로 JWT가 전달됩니다.

+ ?sso_token=eyJhbGciOi... +
+ +
+

JWT Payload 구조

+
+
+ userId + 사용자 ID +
+
+ userName + 사용자 이름 +
+
+ companyCode + 회사 코드 +
+
+ role + 권한 +
+
+
+ +
+
+

수신측 예시 코드

+ +
+
+                    {`const token = url.searchParams
+  .get("sso_token");
+const payload = JSON.parse(
+  atob(token.split(".")[1])
+);
+// payload.userId
+// payload.companyCode`}
+                  
+
+
+
+
+ )} +
+ + {/* ─── 3단계: 표시 옵션 ─── */} +
+
+
+

테두리 표시

+

웹 뷰 주변에 테두리를 표시해요

+
+ updateConfig("showBorder", checked)} + /> +
+ +
+
+

전체 화면 허용

+

임베드된 페이지에서 전체 화면 전환이 가능해요

+
+ updateConfig("allowFullscreen", checked)} + /> +
+
+ + {/* ─── 4단계: 고급 설정 (기본 접혀있음) ─── */} + + + + + +
+
+
+

샌드박스 모드

+

보안을 위해 iframe 실행 환경을 제한해요

+
+ updateConfig("sandbox", checked)} + /> +
+ +
+ 모서리 둥글기 + updateConfig("borderRadius", e.target.value)} + placeholder="8px" + className="h-7 w-[100px] text-xs" + /> +
+ +
+ 로딩 텍스트 + updateConfig("loadingText", e.target.value)} + placeholder="로딩 중..." + className="h-7 w-[140px] text-xs" + /> +
+
+
+
+
+ ); +}; + +V2WebViewConfigPanel.displayName = "V2WebViewConfigPanel"; + +export default V2WebViewConfigPanel; diff --git a/frontend/lib/registry/components/index.ts b/frontend/lib/registry/components/index.ts index 46e92af1..091a83a2 100644 --- a/frontend/lib/registry/components/index.ts +++ b/frontend/lib/registry/components/index.ts @@ -119,6 +119,7 @@ import "./v2-approval-step/ApprovalStepRenderer"; // 결재 단계 시각화 import "./v2-status-count/StatusCountRenderer"; // 상태별 카운트 카드 import "./v2-process-work-standard/ProcessWorkStandardRenderer"; // 공정 작업기준 import "./v2-item-routing/ItemRoutingRenderer"; // 품목별 라우팅 +import "./v2-web-view/V2WebViewRenderer"; // 외부 웹페이지 임베딩 (SSO 지원) /** * 컴포넌트 초기화 함수 diff --git a/frontend/lib/registry/components/v2-web-view/V2WebViewComponent.tsx b/frontend/lib/registry/components/v2-web-view/V2WebViewComponent.tsx new file mode 100644 index 00000000..c7118beb --- /dev/null +++ b/frontend/lib/registry/components/v2-web-view/V2WebViewComponent.tsx @@ -0,0 +1,195 @@ +"use client"; + +import React, { useState, useEffect, useRef } from "react"; +import { ComponentRendererProps } from "../../types"; +import { V2WebViewConfig } from "./types"; +import { filterDOMProps } from "@/lib/utils/domPropsFilter"; + +export interface V2WebViewComponentProps extends ComponentRendererProps {} + +export const V2WebViewComponent: React.FC = ({ + component, + isDesignMode = false, + isSelected = false, + onClick, + ...props +}) => { + const config = (component.componentConfig || {}) as V2WebViewConfig; + const [iframeSrc, setIframeSrc] = useState(null); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(null); + const iframeRef = useRef(null); + + const baseUrl = config.url ?? ""; + + useEffect(() => { + if (!baseUrl) { + setIframeSrc(null); + return; + } + + if (!config.useSSO) { + setIframeSrc(baseUrl); + return; + } + + let cancelled = false; + setLoading(true); + setError(null); + + const paramName = "sso_token"; + + fetch("/api/system/raw-token") + .then((r) => r.json()) + .then((data) => { + if (cancelled) return; + if (data.token) { + const separator = baseUrl.includes("?") ? "&" : "?"; + setIframeSrc(`${baseUrl}${separator}${encodeURIComponent(paramName)}=${encodeURIComponent(data.token)}`); + } else { + setError(data.error ?? "토큰을 가져올 수 없습니다"); + } + }) + .catch(() => { + if (!cancelled) setError("토큰 조회 실패"); + }) + .finally(() => { + if (!cancelled) setLoading(false); + }); + + return () => { + cancelled = true; + }; + }, [baseUrl, config.useSSO]); + + const containerStyle: React.CSSProperties = { + position: "absolute", + left: `${component.style?.positionX || 0}px`, + top: `${component.style?.positionY || 0}px`, + width: `${component.style?.width || 400}px`, + height: `${component.style?.height || 300}px`, + zIndex: component.style?.positionZ || 1, + cursor: isDesignMode ? "pointer" : "default", + border: isSelected ? "2px solid #3b82f6" : config.showBorder ? "1px solid #e0e0e0" : "none", + borderRadius: config.borderRadius || "8px", + overflow: "hidden", + background: "#fafafa", + }; + + const handleClick = (e: React.MouseEvent) => { + if (isDesignMode) { + e.stopPropagation(); + onClick?.(e); + } + }; + + const domProps = filterDOMProps(props); + + // 디자인 모드: URL 미리보기 표시 + if (isDesignMode) { + return ( +
+
+ + + + + 웹 뷰 + {baseUrl ? ( + + {baseUrl} + + ) : ( + URL을 설정하세요 + )} + {config.useSSO && SSO: ?sso_token=JWT} +
+
+ ); + } + + // 런타임 모드 + return ( +
+ {loading && ( +
+ {config.loadingText || "로딩 중..."} +
+ )} + {error && ( +
+ {error} +
+ )} + {!loading && !error && iframeSrc && ( +

{xhUNy}DU{_da(CgSmQ#wuZ0oR*DIQCqia(SyE1tPZ_@Hbqx;D0CIH z*<;A@(w#pZM>?~(D9+m0O2i(j5onzJ^M@sd^s(00F344kMxqu3N_ss~0q{R3i-zDybpVfzfKgaD!=en-Fc5Pc7`18N z%&51qIEgKQ+vO4{ z(w}#6T_4V)qom-w?@&De&JKi5?5yERHgM;!HAF|%ZQqU)kP+(UNIdR%=%2&QDEccn z3O@L3P$9XmoY9jrd9BC6dg0qe#7pbyy-z7sRbp=L?%4$eD(BC?&&|mRm%f>sg3~Fi z--_EIYypcB04gXFT?}Vr)B!_GUEQp$nf9$(#GVofd^Iy~5vYZSQf#_2^NNeFpFf`g zxh85DgFK5r8u*m`{rccCk!i9f zKwp2be6)JO#cp%9YJ%w^{WH>X%t$w=F0aggQNK6@A?0#YUArbTJ&*_ShLf$JgG7N==Xq-*=1-rqr+rY5) zTARwcvJRO#BA?xCO5VtkS_oeUNOtE2Y_JA22vo6o#koeyZq&{!9IO+4!+ApU_qy!J z`8qOpM)tG$eil&~4P&xwl@+h%9b+`M&5;jX>l#0ohUQT|j9J6e(2^>OgTbR&cqK^0 z#49#yba^FMnomy5s7rN}qCn=!4UPC-I|$`9FMR4W$V(Wy#A763_{MC<{Pl028eTH) z|8*QTXs7sfmXNCAB)!YP<0uWN6q>`s!?L`8s9cB~sKcy3U#Fs6&^9sQp9J21nf)-t z*q&{5D10cKc`b`IX9nYyGQf=(A^K77hw^3Je98S&$a`JB1T1yi*>kP>YI$i2p%!J# zcxzIoF{0uacG4*o^&YMjM1801+CUPAFoZn)O)H)f}9Rlq_tT)_A>i0Y_tBAoO? zbUWkzw~y_wetjqR-(_UcW@OF$3k z(F`)Gs0JuZMt1-CoYK-;$1iA6GjV=Ls*15zNxevQ!edTCTUQtA6-N8_doD=qIk0n1 z5v{P=?(Q$_>#cCT_2v3@SXO~XU`4fs@`913p+WK82O!*gyx|iYAA^HQpZ_9F1_sfFt5?BJ4fB zN{9$06QuBnwy*oR=!3ikpaqOaI44Cy=hnWr?oebe?4+=N8;=H|9q*-GyDFYi<2pVW zz&>~0d~dpu;k!-VzBX9ypey^1fA-UB*=qOMo^W=zs?~{ji(t{L!=M~9Fer5)ww)ni z^YeR3ZMqLopDXR1#`T#HJnGk3VgJB=`u=+?vtG`7%5M2!v74W}*- z6dDWow)HYrdAy=c$jx+Tmi{&v{;zNRUL5a`YxrU(tH;n8JU?X45L8V8jSYUrB-qpL z#DZ-1+qdx)Jl%|Gl`ce3>ic!5$+Rz)`fhrG1ry-gV_w^v zoXk}iQo?8`-zb70$}c~T?vhXDmp5h|UYiO_+S%@EMWeIi0-fb_CHr4AhQEEXUs6is z)K0+ZBoTA?##Di4fz&K;?j35^P~hJ{Izbae!NbSFp#Zoeo4|9&(Yo5)LTNE`@3Y~5 z0I*JhHH<*e@@uEF0|I=2K*7yI(?ssJJ8!mw+Z6CMGGZ%!9Dv%j(&ie2gZcH(!Tg{f zdhWYH+ddsuw;?({K{V=4W(tAv)PRt$Dnj&rFVKl?KeT_>job(@!u(7fB#iW4WP(5} zibiPfFf6!RJl&2;7_7lXFl=6O-WNF%|e6j zFSc-IAtn?7M;T!7h}TTsyZ_5CxPd6Ne8J4b(c8`#{=SCJ`ucISPeYix9U zOj?+fS0Rwa3t`nYJ0*OqD>pUFi*?DIN>!MTW_EPt@ihm{knp9%EWgF~qiS5y5w80+ z_gjFunl^-It|!P?gxwLi_Ho|#ZU<&>`=@4ujCagfRwB_Zz3zem+5+!^QZ3iFTB#<8 z%ztxgv)n4}Z8k`IR&~^1nVQ49$;AQiR&XLn+Uj(HDx<}o{p<5YTFipf?KlIul+*tj zEP-DU#IC)t3y~|n%>D7H`=8knIKsuHL?uxy!(+q~t`0Q_%uc#Kc+D@*ENri(so9-k z0dYC30NN_p3bP}%${Z>QYR1NiG%TMA!MRcv)_HS#yDreMc9#AplqqYmz2YMpcWV(>Y_$nJ+R_?rOr&GW)L|ZjCiX;Zx3NnjW&tj_R=P}87 zfDi2O?dYJS$sxS{YA;ZM#hkNEMm@hOz`4rOL4%06CG!w<5`NbEU*J`N<*%i<3sFx& z&H3E;IC#;gTx(=RXiCMsmh`#FNR3U1wJ%NxEr3tLzIvrmKI*&vJk=j6>qwqaR12Z8 zot>SnwRK09)H1VdStVGO!R}2tZQ4sCv6J675L%sBhsmEo7*nqTa%$~mzkETkK^<$| zv9$<%dj=w0v;253{qIcV<`2!G)9CH-uqY+Zh#rPw`cvh*tsylAIVdX_@L2J|A< zC~Ga-D_MK-K7yCLkDhr2LUXTd8P$#Y?UYuM#|NjxE7QdY{_8vDLVGdp1XKC^#eXix zinw1zs$C+$>zClGE&Ak?uvpjTWHjvD!lQKII5G;Mtl|f1EMbR&B!PA5K0f@a!w66j z%VfyJ@o}4`hzwa4k~KbbcI`))Uq0Mqt%>3az#t$XmpJZ^9kt};x}Cj>9o?!`KoDvW z4aqbr`i%hfKp{+U(r|lJdRnz^t=gdU9?;JjbT6WUp?=!-Qn~2le7{w=wO(ib%?Wbe znS35Pnu{!llI=_K1-IfQc}3g$QSRob2F5g~axxhYycCwV6&Xl(*q)z97{>?pfsFoQTa^ZGQQG-anshf8Rf5S|FVSLM$IbT zn-Ad7un)njqFuBXnovj@6hfv-t?w%%lM1)(mC3hb*BUy(#5ohuVksg_Mx=mm(M-pq zUwkW12iwyeod?m{j_+257?5xIQ?*QgMylpzW$DHXC(slNH(GCxyjyFM-nq7no#hH(P5kD3N5W;WtochFAXVS?9aj9kVnN&)jCC3^H%bmoRCpCzX}+ z@V`Evz}cM?ao1&A=(z?yE1(2$TfPC*1BK+Df4&0`!fDV637*u3nl4cU>gAvA8-f1} zB-}_yn%YqbXEhjL=Iy0WVe|g_=b=Oqr|X90_JqZD>B8x0TOcdc_ssN{P#D+Dh=hV2 zjD$me_0Hwwc&g4p2+Cmz1(O$@bO~R zI(zxym)=x?0afE|(FS#1oqEDM<+8so*aFYryIVdQx03(<9l%_7#wR9dPEK+tHs0jn z;epl4c(=Y2VutZ5qHnMpi-Mb*LMf;xWWsJ|Xh6EPcz#$5*O~geVM7a_%!c%SQ_9sc1e}5F@b%WcpUr_ct;E zIZiEA&AJ1Vn3%XWA)MR+F4I(q#^V|Na0-Mu2o*CIn;3pbZibfWpON){o{3Qv;TOSI zuqe1lQBt~+u;sRZq_2InlFHM|*M)1C0Q>lyK5R~p4#(>dG`W%JS*3ieKP(_XquJ&A zZ4d`)nVJ@oNBzL%!wsq4Lplo0f${+f21e)P1Bz2U40Yf42VVd3pL+6t-u|!O{ap|x z9(*w}fL0_!L!gn9n;XF(3~H-xz$R#}X(Vs%#v^GrA;V)7<1^5RXNV^&iD^_rKr_cD0*l0wDjo|9I%50mHvI7-P4>^6I{c!TMRt&r2# zKV`^FC@7y8ARHjw%7Q%L+~?K%`eu3H2p<_$olH>@GjnwB7_D2lzx_^Fw4A?CwqjVlTD6JL0eE?ELufxuK#v z4-uZACvsFwPj_8umq@cp@|1u7{=63??b;d|ue7*?%m>dO72BEl|KmY;PyU`4^xIfu zUSQ)wza4CGFU?6#PDLO+^*~MN#FHCfXV=zWZ{BnavMSn>YcV&^L6rFV%-|L8l}pi4 zQQ$cL8inua@6S1O`~v5(L)^!nK*)E?`_Re%wJ+Z7=+~j&CzvvgJYR?XE$)$2N3Qkj zfHz!T83aAjmv>^mHR`b9;d&!{eXk5hG?ZD}MC$-MbEx^T_IzAdS5?d2eopj@KjOOJ zLGs%y+*Xy|`Vl7NGI0s4xip~8-wnB#7F-^H&O^*W&2;mB4Mj)T??c0l8#V@c$ffYy z6dAaCgdrad$o%>yTI0cwUE5IHxXz(nw9NoIp_b?5fj?a_1CK#^aq+S9$A|}xfx5|h zb8Q*?+zD|)^XS$%@_BHmCm_DXQcJ0{Q_oB{B4GB~4xRsBBO`MB*OctyWTn&7(8v{^ ztI&k~7<24N)Yl(?yfH7~fE5Tf)a@x2a4TA`%!n>*z9B)H-rbfc-rjElN5$G2V)6cg zZQ4u`NFNc}A}md%M4!Tc)4u}Y$FeEJKHXQ{B z3M)Q*Oavj=44jeuUrps22){9jUA%8%zxe-3R3)sur2!pqBk4fX4}^vkdn;)XZqAcn zjdPz9V9ojZZQl!8-|y+`>+f*!Xiw4K|M~q42tZ)+D3N^i*rBGyt}g)(34g7M&)e-I zeiV&Pr`)%;iLtTR$z7cX{cCrhJAXAiBAd5Ag0;N*(`!~!ADc3l7*k%U(Q(+Ye|nH> zza@xsgrd)tCyY5Ovgn7R42#EK@#Yrk7Db+>JanXXW>2;F;>Ol4kNroeu7>YxS+|fi zy5%|1zq{zlz9+)}6&8ISQ1}%S`L}%Yxg&+fzPO~Huj;qP*E3Y38h^DmA7-8OA)I}B zMj`{?bTC$LW@JZm1nmytpPrghcX3%P9TOJ(*a;VYRwABUzm37nxg!_-hg8@P|Kw&mxjpB=Qz#RwW4R&s>+p~`uRqC_qe1ak7TL`74028pll*K$3(p8cq za)?RZDqwR~V%4s5=T0hQm@=C`*tVYl=$EyRx@3%K_%AKv?}xIa|J~!d;4I>49W$@| z{ylgT^T5&g%x%z)1Od&3KDWh2xTme5Y6fEH590Qh=yf4O6xPf)zhZ}m!=mDC3^YMm!&eXHBZW;6 zr`d_Q&%9ijjb}L+j7LH9Qn?XOq1rk)^nLhnb7UFlLd;k1Js%VCObd`XG6_LgLcr+` zFmBS)*3LktZ}Ddtk_i7_Uspnsw{{liXR*)gb-?jG3gkJZEY)Nk*nB2lQ|A%j0*QEs zDqTvQ$D3=^uk{H*&=3Si)nX_sO%R}vF&>E^umm4|DDM{L;+7vll&z(wmz|k84#oq6 z5Z|!WE+)=vsH=D0NxD^9mIJ2OzeF!*#OP&;c4&j%2xtVWG+nWre`& zsTbFws4J1s0l*5~KA90GDk>^Bu=yXSJ|-5LhO~09wpNQk0<3}pURF4;q&KHjwG9l; zLdkfG?00&83s`%hX{Qe^6#TU*|NEI7X#TSb*!wT1%qzoEf^UErz&Y?kbuD6SG7L-Y zTPdml?mti?d-jQj0x(IlOeU-9$26r!t7O5gAvpWm+uIunql5%MssnguUwQ8A4gmMx zZ@2R&qXYl>_-%>YZ4CP!z!)xp??wF*cl`pln4?)esGU=Xt39A0v-Q1uxAJrgf!&={ zTsS5I9Y%r0yPnC42%*uv`Ay;!?JmnD$(y(Qwus3Z5+*4Sz`}(|4Xzx}w#x4T@a3k{Q2jq11o@F;&d;2klFKf8#{$w6%mQIyyd_#G#KzTC3q(+wE{ncUZPc9iZ1+YW z_@1-vGAomHoyWm5uepUg^OA5Q#Q)RKXG0g@opUy%UY@lray`J!xoc}; z!x*yU+E2W6!RjKz$EAz^V}*XMlKXvH#ruQ7Y9r^dCtN2(rrN}Xry(l-h?N$HASx8q z)7hEIu0TU%1$gxF;{#B;vockHtO#Vl?djvt0PQ3*Goj&H{o5}^fGqM^!zxgWz`19t zp8p?X&`075pfC^+m+I)l$P=TG;oq)ARFvlhzusx8%F-i#QHfxlsnagCamz zT_Ym^DN~U9cZb&Bc{fWL#IE^*86_wvn9b+&g^DuZ+B15du4w`q`stl+Uxa}4{5b8I z|M9^cOU}T7P;pIOKt6&!Ha3ZBmr>aLANw3P`5PwzqwHRFZr3wR96 zvNOgjkV25hT#XG`+I=P)$+BiY0mM@cvhXOk(6MYR))<;_OLr6)SHru5RhsK4hP=Z* zE3pijt0LLMuKV9}Vb*vQ5-lS}k}|tp@zj~7f!HMKT}GzC=}Qf_+V||@1@G@KjyHhM z6c{LnB%JSPr7w+=ff{!vquYki*T;P@;Np5naIiJf@hKFDkExA~7XY@ub>WIlA{e;g za8nSG!Z5*|4&PABt{wUbR-JyCsy<((K|p0gBr%e{YVPjyZu$*PQu5Lp>X!%AdlS2ktuS!u^3gjC4L9uc9eh8;4W z$jk~MTju||b>8#7=bZm}KE3Bvsh;P)fA@D>-|M=*br}ZvN5r>K( zkx`18nOVXTd_IqeFZ^I4oYg?N5C9i2p|DWj+uNHMjlr;BTx!+MyRhvQQWRYZU^#=^ z!wlure4uwqJ|FYKd;x-p-n6A z?Z}50#Pi-oWbEF`5ZH8~7a$0ygWpWa=$VNVZ{C!wSz*YhGJOW^A|9vA?j|xBCM?!+ z56%Syl=A|P)%Ni4aP18`OZ+b&=2y{>2(3rNLXVf4hllvZe`(N)D6jn*e^BH^UEg;O z@GX+{s-vXZ4HC0Ma&amy-q!;fT3eIR1}KWQC#of>>go!xKpUrYfH#Wp3T`$*EKJMG zkY!?Gf(tL7%k}0aEngA|0xu9UDzwU5jyJXBtvdP7E3on_sq6lTxl6TPrCR*HsUIQoVFz2D#VW7{>}@Ht1mK*C{p-$p`$ z=+Ja`W|lqn@IU-!X8g5VgE=B}LFO550lRfW2|W9H^4SEQ=r>5+7vEhG}9E zlL`to3;@0Kmq(Z9OI=C@iA87YB==cx)&ASrQ9Fst_2bq%s*H(a`^$AEQwt*eM@_h0 zB`B^28SZj^zGD>!#iI{1i>=*Xzg`Lo4wh5qZVgd%nlVEhkT)L8H*;~x1<*saR%Hfl zR=>n@DBzX}lBk$iazzCP?ixx8)Gu(fcnS-O-qYaBKF@Nw6wHjT6O5j zDqk7C3^$9zRz0vDXliOQTXPi!Y*U6&<@mI|FE5@vKhH(7L_C4tq*}gu{5Uu%JzW-M z1yXu}PwuR>&_8eC%CAsgC&D7%0XB5yS3?baYUieCA#cs*^xs1iZ|m2u&-9oVB=QJa zV846!?@!!Xb0pLUK)2YHoELzj(9(qo%H&{MAHoyCPsr^>b3@Fh@I+2wgu(fW2$oIBGf~Kv`pz^@M04Q>o4PNQ4Zts*Vn`?B>;?S3dts zr*YN&&L5ujw4^Ncrk2+EF6&vkFLJe}^2m<2QL8}SAW6AxTVIp(f!|X!UrLock~NSE z;FSU^!5s2V$A#CgoBOx!SQ-y0`~;Olrghf=^s47khWYo8as5kkTXeJQV8cr9Rdlwh zJLa{Nl$5G|#{(yQ!Yjb*B@W_vDiCoLZRVzr zm^xnz#k+BHdx9%8UR~^<3k=t)<)@Yfu{;v& zz?Adpd_vL&A2WYH@&6zHBH!D8q?jW9YO4Oq)Oq-2&P=_^&eyGxSWbq}fsh|gP1VE77R%`d52kE-%$<$p%cO9fVtv8NgSmyj3#5}Y2 zx4xj1LP6F0dPF|r-`)t7)UQI8qH_nxjzpV<)6;|+DH)L(QE?Gx3ufw1fP4TAjKy83 zEt4UNl;AAM_H?4nsS%&)^Mx)3TZt2)9!SJ&Zo@XZPdgRe715x;bj8Z0QhUm+aK^3W zMc1_5t>6FB_y70$kR|@8Z7Hm-kIt_oY*aJv-kn(Nvs!98I%7j8UFye3Mu4ifd}-S& z2QyfOmxW4p6UR{A_6Fk;nIY}IfB)Wfyqs}}>^V&4UMZ*#9QzmGkIYW|gPpgm7iMh$ zWdfplx(_}0BVKAd#;?LsPHhg^u*@K8cwCCw+S=B+AWkbNoLr{u?7yB$61?K-($bBH zY%w(`;6io_j~n$`-XsqE5Hc@c%Qsi@fy_a*jUU(v!x#EdK0@xlpZ0&hDq44dIDM%W zSgLd3nSR92kNW1Atj{?uk8JN1u9jECfWPx8SOD;=oGMpb(f|c~Sr4tg+L_8tfEczA zC>>PdMCM!RMR7B}d`YUVt~M(zoN7`7T_be*bB)-954hz@#oaalnF-YnQG++7yg7?d zT8qZKhd3wypoRTm2u-hMVc5fMDu_^rfqMSc2CV3-n=+#PATIyA) z>n&2CrcF?Zo7C`{qH(adFPjkaSe{q>*3GzlLx&tTz`k08j`tu%4zIkscy<$vB9$>_ zDZIX~Y+fru!2}Z31IP%%r0e@0WwuX<5d{yrH202(Om12#G3OthnG*?VX(9c+%fYb3 zL-2&^m4l7#95M*Jb*dJ>=l<^<{-3W?#a7n#tUKf~I)Cmjpg#2_!= zVY%Vtu$7lKMl(&K?PJ?&wcl60vw0dCz8d*5qeqSvfX)d%<`W@Y}Y*+Cb$iM-eBZLfH7H^-sK+wD=n zi-}b#1U`yd#~9O@`nX?a+W+&Ge|>2wLX@Q;H~Vd5-!@_mw4Ucr7Q&nR(XKW#fIbkV zs9|y;NlA%H>q2ZCm;lzHn#kot`J)~Y?K1`XDhK>OAx<|oI%pxtJtZi1%`Z(9bGO4x z(a`V|&U2V!4?^z1+YOAWY`emD2=bT2VPF-YoG8MQW#3;a%uB(Uq!MSR^ftj4mnU=ZmW}S+z`N0F#ZI(k`6(aztDW z6$odARuV#cmIWDXsqBKO6!aFDI^l9R9}AL$B-x{7Y%lE-RV7}|(E>aJM0ykv5n<(G zL`fZcmgh`B`|{Fu=sNS};S3FA$XSfL)MnRONU~kB|K+&q2%E$n#QU^Prz`!I+aKN- zsJJ9NI#*k(wD>c^OHP_Z=g(^#8;6JAy7*^7nmj9$Z2kIm&&M`)VYus1$(5amGRR-X zuntkm73lEU=8iqlcy3_l85edEZ42@y%rD}SC&UzikJK|R)_Q#cCv7`?)&s#>!@GNT zQ89JMwqyPOd;KUv%AO2t!f)v$Q|mcP>d)0t160ZUl8KI(fb$5BY#dxkVkrr?lvdMf zs$GY;xtkyvGO>s7lIVn_{TKkvz6Ab=HA2J4SV6!!9?BWTevgo6&4hNs%>ZZLF+L_K{mjnd3$WS&_c>GIYqqBM?p1%%I zh=Wh$k~bE}+Ex!EY!a!+%40}-Dtu;PixFSw7BL){BHt>lBqC3i2e8=Ef%;1Xi-z|0 z*p`;&3d8Z+PXLplBG%CzwyK07n}RhcdR$EdFWb+$6aJ+ty z?%Tuiog-NpiHG8qKip^A`NL1|@3}okgedW@4qfM!%Fp+JaIw^3upwbf`>3?UoPSgD z&kREP;nm~PI)}^kv`UN9V%TNPN05&rj?Luqn9hvow&c5o5UOjB`I3{@z_U~{=;r%b zP$jyA71IE5BF#$m3fym^_}sNNa0b<>we>l#@q=E(yuj?|IIDmlw+8+MS_6#a1X{aS zQCxlUm{<9vrgz1b3J3Gf2F)QKsS>G%rZ1^Jik~(jeXzW^MslE6X;D!In~-$P8!z1ai{JegHTN(khW$k~H1*U9^~SU8=PHVA=v?Q4hZFri@du~!#BD->`V z(aB$49940fmkm4ChBeaL#FrN)Hs2J(dn<2QPkN@~!K1#bD1I0Nu71qWC}Fi2Sr?k=6Y4&k)s&bRFV|Qs z;4bm^&swCmf_Caq6Jw7w&nZr%yS#56iWq97!DS!*rs?7b-KE` zuCjhufJDnuz7XTzKuE57@i94<~;qLw~8|&PW*~n>i@ zXG>#QqXW@1%c)>)&{$o{Zbp-^Tjl+P$dL9QT99#s5(eY6Kmr zC$=jKGg_n+j0f=~WoOR>%y=z~c{Kzo9%HYuGnpH}Z|lrl--nG_a&bqH93VEbeL7HB zMUYn7+(tbh+Kb4r#3%?vfUZo*cVHDbwCqE$b^u(L5Iaw^h(W+NiRJ!f>5hdyp{cqv zJa`sVave-IIN|S3l~z|@*Ok*$r7e2p@Tcqo&-DI~xvp1??4b%3cjos|P;lSOQh&0o zAZmGje7UjgvrPLa*QvaC%Lu18gL1~4FW$1y{UgzE`wIQ~SP?Lw92kg;2o6i#ZMO^UNWK5~ul<;-q##|BWQ`}D!A}>C#uI7gJ6=9OhAEB(0rF2&`w}1^ z;C(+lfkRIW=&qc9p_eV#8g=%zzWja%uIxN;u zbQ)(4&pLW^-?U0J$mlt8(F7uAzQQRyPe3R$VbQ!!fFufjnW?YTKZ4vuv_(TB};`&sl>1kKfjFc9kx zC#1H}n}}^Y?gP%9&d_Sw_}CmND>K*oj#;x7V8&o0Hr{j%cw??>-s?aBMO zA3sm^!7_1Roa|73_Gb8)q%>ky$Az0I0vL$mY7+bh_H9IwY3QTGyo11d5uCEDyQ0iy z&M@zA@%9SXb@x;j?w!tp)d2$^xVTM14}M^D2~`htq^QyBZ`lLGPtA9mQJ@K#mq8HZ z%4ix4XK@;;zUdS`;n{m?X47J^pF}hcYDbbuyh#fiki$L8$BtJh4)nkAij?+RdgPcj z5(Upm`4|8xv2%0lF$ikIkq9S_1b#|LI8Q`|9=nNu>8QGT@4DW( z{P|nk1Qz|(^sd8MWNc`R-N5M1X0=eVC;HVZLDc5G z^g;}NLlAkOYjK$o_jpaXA=ND{&S!Zodm+AmTH&dTZTGdJ)8&`TKivAOO z&KuuVteg9s^;p;$#<<&u4*gl#x(s$N$yDJxEGRBL`)TfsNS;&;41uX*`PucPQJ zx#Z*TU)%mFf39}=VAjAV&b>7Bp~u+Rk`ljiczjRwGkf3q#n8~Ocm_4@Utc;NM6*#O zP&%Qr(zSs-a~&WM-PiyA#{R264P|qe^Ko7LE2>%4$m0jYIGn?)R<7rRto6F+2a>dYtClQ$Y3< z(cKcKoM<)>+LH+C!I$=F$3Gwte!hTDLurMv{{H@X-O|xYm__vwu${%wCXdA-eKO{* zfGL1j6H*7FH6dsX;1ee1G zvelO7;S6zauGh8yv6JcPMcW{%hwM8Ijfq0Rx|zlRt3i&mMu#1A9EcN*XeyXCW>JwX z|Mt}XIOzN#)lD0k3iPdXr+43M{mtti3lD$IG%3gr35>a8d1>dk$MQW!(2}KzohHPC z4#4Wi8hu<9p^fM>SEi<_>guW5R=UKp5fBX!o?+911vGi{S(%xpAVk%Z@{Oysz=aVW z&5!Pe4>~y+oE5k^!H=#!HU#p$$^dYLLKV628rEA|+wH4!c?wjeYhclaHv5v=Ns^8#r?vTk`!v8!CD_p(){E9YOcrY>N!!dO{JG|e+w~K3^EJK8_vez_BzYwbd@NH6 zPZ!$tTO}pLn#D#C^R>UcR%UM$AK@ZbQc^NW^t1pSe={>IW4a2_78GVDXS+HZz`=(4h?A9CDRUNT+f1 zUYOBhlvMSGd*fY)#Vu%UyA}Hb@YJiHvIy@vSm6DPoV$bG9tg`)L)$!~c z8@~}~MW`wo+w-x?{!3C^#8N`I=Ug0Y4lzl=)%Eq9(&$L)SQ_pqr{zbtLUa_yRMmB9 zY0J+Zn}-bb!xqovafBNATnOC}kDRhSOiaEmMr`W@B3H&sFA;hUspXW1yK zUZCRi@yjz)HrLbM*QrJRF@Y1NmAJW;g2MPAeAf(>y)fU518!gNa}`gm#A3a~z#7Kc ztCod}B=&22aI9LNCTFeC=MHH`ITcLM%dtwcgyzlMPf*nYq|^B0hjn|pSWP{~%4k@7 z=a*t&4@$XpYhs*#L81DO65~fp5GHgVbRvUvST^4v|}O zld>`_b9bw9H)IQXoQYenz&;$;D>C9T1DhGI7=4M>X{LPJS+%OPr*Ud_8Ux`*P6<&j zPF&mR1wE}uXM%JyHUrk%aOOlIX zaUFfE-+1y2W8L?!T1MADQWX{u8}*QX|K1iBon0BzJW~4Obd?A#`6(wf_*6wlN9#gn zzTAK-;ssXK$L-?i^N$CB`^A0Wn@gnG=*|>MjINR>X)QHO`q>@qpMsDbtPLWyGAJjC zZcp3ZIGK@CbqSJIG|aZkC-U-!z+RgQ8+F%i(t?3g7$7GVBy|8XM#IieAIxi0P(0|} zP#{LGcT>+lLrdM3aPXD8ehs6uUa2do_kdhKiY*HrhwTn1xur$59S5YpcqR)>Xjo_t zE4PWvs0V$xr?!_T$SQaHDhi#W%@)e6W%2oGy7V6OEuQYT^^WDpdN6s&#RP1=Y%STP zV z6SA|NV&jN$zh=kJYNttmKX=ve{;@TL!}g;dotfLD?m?WjXYJ#`*@?L>5g0uZTJr%s z$I#v>d3c0jwL+{9901G8?f}mMYiELV#izE!*NL5O8z^T_9duTPe~>`90O2=<*DjZS zfsTX2%PjYwo00DaK;2Zb;qAIiLGgna2$ZT_vGG0TIx{+0aC&Ai*SlsY_hik$`5Io? zfZAMdspi=WxF&WlR3zGdW`?&<9pOsWif=Z0nPpQ>Z=PtOswNxsF?3neMq)LEvmL9R z;+*tc7CKY<0kNpI6gT@H4f}sytRuryunmRCF-z%MKuU-46LC!0sl(*x1K_YD_6uL zfjh}6gKt38`ne7my3TcN_lf}_v(I-o9Cw9DkR)ACqL#(KLS7FaNr$WpP3{5@n})(q zJ6Y7HYfScpA8b7OIUzG5cqpfz{vfR-n!nBj@0N~qeQm!hYG-A$cB}I=l(0CN%T`^Y zD!#XC`kgJk^tCMaWl9Qby^^Q0^?Uz(N*NlD%!fDL9oZ>TTc3FC!&SP{@^x!#s7r!M z(ymGVR_35Xb^5;jOqAQCOt*GsylwiW$oPdKiP1eFPljHD-lnmb^Or-2pIB~PX&iju z;z)!iK)+V8aeUTuq%CHIcxkg>jceo|Jm;Gb3b`dC$a!nqxvk6+|TzNJa2rJQwYRO_b#SNx+i zQ?|r?8;zO4Pz2xLdTQ3+FX4mjMDKZ+3Fc?vu7m90VA$aj-px{%n0>o_a>S`ndeoKt zW?V`afAH#-iz(uxi!oX1&{)h(#z~}zyG?&9rq=(Ipb|zFU{eY$CiMj=j~{EL=;dn>OJ1S;$TY4p&!wgz8a#3u z=xrFp+KX_N3ZreVv$C9h!JspKHC%i$*)eOh>286#!}hRXpW2%}5WU&@a>~lZN(ITV zOx1@e4h`r^)W1u-naG(|pQmY;`ON&F!Xv{ z%##t*&AovP(Q0-YL4eQx?r}L=i{X6IKfh&E}UK0=J@3bL8-%#aey7wN$2|A zcTd5U%BmiHjNsy2nwJbncLe1f>B3@Wq)jW=_W5{Q0Oq@7a$H}Z2l$FGD|z=Wid_lS zB;3vkAt>}@=73b;!4ZL8<~-nK;@@bWN_84yV*D9@DgAsqTO{wTjVKI+He!QuZ9JSO z4f(p2Bsi@$>ZTq;{PydbzjC$NZ3Z@RynEBpX%=qm;(CDjOU+ zdsaa)sVR1*IDJQozVj2}sZX)9R64W^y#nWsdp*;e4s}GYxk`&g&?Mf?$!fo?-COCC zAW@rEy`*sE=qt4<`uWCMa^%~d2LTB^p~GQg9z1MUM60!)Y}uqvrIwKJN|w`@hum^2 zE0Hsli=0FLFa@RsSa-H`K`2~woS6XP_P!6*SJAcTOTqpk3P=5+}V(Ut%-GS^%at`5LK)EHJ^0P?`q zjEGjk|%#ce}-Cg7FoRxr}X&^vYgQiX~`c4Y@2#(f{QV<0n?zyf~4#bkxH82P2jS=E1oyl~?S2 z3LeZP;Sf+6!b4u1kvLpW)Y?U7FI{?skZH;?IKCZ6Ls=YOjqPa}< z!W#6fLGlNYx&^O@7M$(ym||4Z*GqdnF2a?l7k`wBl86#tAD<39a7#)`9pu=eEav%^ z%Z7-n4H4hS{?*auqZS%xW;PLtKfFtil66DecQ@JnlA7gmW7ay)$COi&wIhRGYMAT& z)Zt11$=^BGqB!ffogeXr*8q}?%LX{yPgGNYOXMg-oEFFWa?}&KV1O_4T7)GRh zd-bI$>De<3)lpXMzI|_AyCQ#YIMh$(nvuBA(<;40WNG*VUq}q#w zIkjHDeu7K8DV`Yrae&gyiyaM%b1*cI19}8J6j~}(f@=WUT&8L50r4M2-mvZXfcKfR z4K!%*X4BKt?er>>Hgl@I$&s?4Z8F_=G`@}gP1cO+OUF!0jTxD2<SlSWxF%}5YwEr}E`F@SE4?MDFDW)tYQGS34JG^6n>8Pz zl2?zMrs%wPq{OGNoUPmBVMWZtO?-ojTjSk+WWJ*NlISr!k4SFs`Xh6P!6sj0sop&Y zvpb$|zPt}U`;qaNA|LHm<7!|!>t|}&OxL)J9M7y3RkS|$+i(^u3dLQUt0waHdi?OV0vj}w>drmxOmZs zk0$JxhZc@*BiwId^Zh(}gEYX@9#4HD>O{g&fKbcDt=;rehl~(;Y6GtOdN9!LoAUgRR z4w%>vXK73|s3>BO7y|gZAqX1`{KN^~9sJ32ZxBzAb=9Wp`7LZIp^r3P7#%S2yq zTl=19AX?^@?Lxzk!1%>r(x!c0-y(&?ApUr!07MR~b67Xkg4U9(~b94QMlc@x4tUr zDFJ*3l^~eu@zi*9`$_v&w|d`k`;DT^WWizFS3{OFsXbE9fzmPI`TPxq?G8h;1KlFE z9w)Bk4+kFbR2Q5P84?*`skylDt$X6m%}b9}j!92&_L(U()3qr(-49mf3bxRp32l{M z>}*-IW5eDPP|sWz9R3l;L#VyZ5MkVg*wNuQ2ypq1fAv8%QFxIW3YG+TXx0>d6ZdWP1Rci7ToP<-!Z^kX&tGiNM9;xlrT zr;LDaS)_`QQMObHbQkV5u#G%5B1_S_HREm5T-`3~NxZnVbHFsrH^BEr{cHAwSII*yg7k{1QM##WkFE7nI zfKba3reI-heH<(+l{07V3tD;VA{p;qCwbTib6@+;qE#z$j%lv!)+lYuTo$Vbhc~V! zMg^dXFv}7GOe?Q>?R(I>W}2oi6&KD@!#8w^9-{`^QA!MI4$$tFkE@5hfXnFbv4Otg zE+r~wm9ot5TV%$Vr}KGAad{lf97Vp!8ddGT5aPNse{ioziu{9MgQsUUZ|&>5OlPF6 zUaqQqSM@|jU2UpCOKpZqYBxuZ>v-z}j?J8z@vf0_TjU7*&^V+@T`BWiy0yH~IwNo! ziq_v)zpC|c#;W5?Of+WB_UFY-t>sFtsL8-tpN@a4pncP8t!z`fhun{&Ip6tGX6HRr|W;Vc-M zp#QKImOuA*Hg^#fLHVc9p@I+t;U&cA5ZOTh;woT;!-DDO<*}v#c|WB0QMUx=$L(8@ z!aGYa$Y2fhUs;ZV@339J|I+$+__e=>_nw7ydCBoIMSDkKcH78rNEvJ*1Q zI|$kTzyPSIb444DJ%cHq-Fml-NZY7mcpLPjZm7|qQ@|+jdHuls*W3CpxjTx@Qcu6r z(#e&%&q+NXo}G6l|L!sR(JQsrs@I6v&pmLJp0m#xdaz^Q2D+i|&I^M(4Bu-sw=EWh zFwV*uDQ9HhazcAk+d7R5lE|HaoPKJm*MY-lcVc9eMdc{9v+R z0<(J5>7e^1jM8UzZ7&vBGC9&sUM=yX<9lSP2!v^X7hT$)EJzlk(pma1d`Lb<_G+B{dAXOiYzv0p~E7ngBc~n0i zMVGu7XJ|zA`S^aJn2hUur%(Ql^g!kJ0R?H?Q7SwBr1%r}&3ChZJx!n}K7sdHMM{*O z?VA~Wc-~^u_SHF;$Me@4FMM?7Z&U>5EQ~=crNI9f{fJ0ny?0zA{&xTL-&vGpiC@RK z!qi;VOo9vQgo0Q-^G^bm=3;ELpO2HeE9`Vm=iN!Xm#C_(9NkEn#Gmv`dFr`CB3G)~ zp*S3tM$5%GT{6`@rG{ch#OeP?u@pnS}|Db!9PJgD1V zpH9o4eoUzMfj<$VYKR3R1UZ~Li#!STHvJn|LJ`gjAlPP96ItAHvFD)TK+&}|1gRFr zJtKw7tALyiz4~HVpOT$QY$#cg?OJYzydS#*g5=l(%X{)Y^|x|zO6*~b7S>7*Fue<6 zjD=B~+|O%ixDxbY9x`#aM6$X+IA%>}v-``LI$u8T9qpa_Td+a9duI6~p(w3X9a&`r z^yK6g*Dpp!S;NlQ^vO)Np|U-Rvu-L|wS!7(3pim}F^=g-Bqj%L@X~b0AJR)aFYL$~ zKvl*u?-!@z6?uq4LvebljMwVaa-FBv-Siu%2KXP*1sFC;@I50HYzxEC!@rtokaj=? z!EiM#Taaw|c6Xx%p|8WuAa#6(sTkeob4}0GD6IO1V$6nv(T;ENSo=G-j zA?ILP;_rNlwl6h=Ip5$X?Cv^J+fPL(Y>#Lf3rEF6PQ=f)IWVYR=y>EE6y)zxZ->6s z&!GL00Y_i}Gt0wI$8C?(dmKDC+%1wiSUIE$T-&bCMl(+}s5mH*J;mQ&NzLYY;+aId z8TLSuOWy_c);APFuif=WrKFH#)|9WpiFnoSh}mS4Q;Y@%a+J&)8U(DhkkS$BXhuSJ zQD&MfiH-?;a^UvrnqtHmWR7%{943zf^&d?95neKH-n~634yW3Bu}!3}T{8{qJ2m zoyf+fp?NVES6LwGg-)*tgInrBa?W_`m_%Jw!Kg@Ta{C<~xt*7MD2#Qcr;NT@zykZi z8Ui3sQf1|mC@a${-_AEkKcWWwa+?#q+RV9ZlnDo271(%#A7rU}-1THB*&*k{(xbin z(IS-Tpy-ljnwjxCua4yJ7QT(Ng-+u-iWh|r)l8}G;H<41e6FQeAHVM9ZZ-z)b81S@ zH@{nV&-r(3;`-cq%Ok9!WbON|A4k3P3Fzl9FO9tf*17Vs3aFyp{BiU3<0wrBw=Z>W zw@06Cj=6cuYlr)wK{Y~2XkcLA`YrM{Chfsa%l0DC#1zNSka=_t+;N~2E@Y_q;=*0! zz(8HbVmLzB9u5IB1JO02M@MfC)1DA<&$SdqRmPWe4zEP5rxQz^RU5yD4o!#ZS9TjE z-U+d=Y}O$vdIS$MiImi?dgSOAb2~gl8XV5iuc6;dN3YHoc1}M^5g0jdwb6FUzUsR+ zvHbZU&|&z+obW#UVNli0)#Bv9p`6_8@$0rh)WHd{F;XNORbA!h$TL+OkDog;#{vmH zFU)E{7gT(PYD;N};{B|^DDRyoFHp3LF-4Cp)A|-(e$?7sq~+`53)Wa(UGxxM^#*e0OF(jO08O#c^+!nPl-otE29FT@iuL3D0#RSqDPz+F06UZmmpg@syI3Hc_5)w zh>wHkkcv|Bd6x7`M@dO@<02>rdPPz>Hdm_c;88k6rvh{pcuMch-tpFfWmD&`6CaN` zbsF16>Tf_)1H*(xC3>&S)_6oU8i{CBUF!qA2k8fbved)Y5ETJCXHs}qxY-)F`uz5s z>Y(k7VIG(NpU8$My&zK${d-VprQKN3_kv~{)?2?>sbcE|G|am;m)oSecmBf-j(gXi z50eJ|Ma;vS;J?xrexP+C)(u-nRY(s}m5YO`3w^Y6dR#8|-ThmFyUIgm0Caven?5J{+ z9OiTr6d>SQ-=A63;1R%9QK@si9`d)~@WBBfSRD^01D(j5Y3+ zU^xFe32L5-?e6OY&sq1`lqe3VF0-!_{FHEwd&+l`V7k&s zqy#R8$;IxFGb+*FiDw%;bs(A12};iw8g7s`N|QoG{PHFWPJExee%2Fo2%FA)GX~Sq&X2o>PD}C zQnqH|&ZfT)b#qt=vGvN!x)D|JzKzVX;nX5l?#9(mbMHwRz;Z&x%F4Y(f*R^(tAZu~CiCZxIEm3X~)cZ?VLiFwtY~n1MkJ9&sNj*Mqm#vk)Ie zS%#N~RW^|={!!*)=jUfy^DRJy_sVY@bgr>+pma)*IQr~u?f$HpYz&nori4wlU9fk! z?j1;SXxhJqsHuC~87uR63ztq6w#9tNoBuvP_X-}`fB_{+=Jke#IFAAk_T)V4?sH?% z3_tR6W~uqOX~6{D_F^Kkt0@JU-?LEN%cZ1i76z5VW0j_7QKm}VF^_{h#KyXNHV9b> zi_`9y6ytHK`a0wG*IS5j7Bw;TUU})%Cub2fHt4?)2gv2v|=!3U=&FT}|`COQGcJpqQ z4xsm=(p-%JqTx{z^zLXnRz`?0G$VM_0v@dL)F(LaK8(+NWiR&L$R~4Fk41SCOPwqx zFO3o3H7*^BeDzk4e$>oAOa02?74rczCDyXC?F+4G&81St${P>Q&zisf{JHD6?YT8~ zCBwd1R)wW~Kl;SEL*+O22X3tI1eZShX9Wxqu^E&f=a}QEHh3PvJV4lMlG{&KIcruG z>XtZWpt|c}5}P`+MT(EVxtw`Pw!}`&O6r4?Iy|EjmD#NhI!BGot>-R>&{env&fKu- zvwJT;J8I7-$vR3m!8Nl+|617Gl!#ewkOJjXk)7%Md{V&Fm1?a0e0aP4Zoe)q3@%Z8 zpg?Kg7Zt)}z?56mR(AfxwW%O^Uyd+Y-%*1UsgfP&o%@<;d=V2|-Ff>*&2LCdgzgc_ zYVJ5$R^gzNTLR3nzaUu7;Q3><^ZUtTnK|a^iT63w)XqP@Zhh@i*CPP_9HiZxyYH3T z<;ix3E!r@DI9k02j<+CN*^%Qzow@!Y9~1H>aCG8z)dI5mg3zP!DzFHru%n2n3O-g|3hKxR=xWd+hvtfj})HDkH<{L$7k@&kfC8F>v=#A z!OYJWGf~~=m+MWj%-P$%P-%PLHh5-ou;F+dFeg;Dn=d~z6gj#iywUdB+p*N3(Dcp= z$8s-xap^k}Oj8*a=b!Fh-ar1)<>{<`%^2&t-8H1O;q;4cOj}Ly@HPfF$v+PCSDFev z*VR0c#-5`7dCP#WB5%_8yUpN_RMTp?F$FvS9uc8_?^blK>DT9bXlRu#EZ*;^4c|1` zJP;k$q~)NnaqeuZi`ZmHxc!prEjNCC5&mBHnXNM<9*GH?^0k4ZjcaIoPF&l`XkxS= zKeEujWi|eNP$)^&jMwwj4ZE+I++K=`9INqtuv1x6GW3$3YPz)!6@oH)#HfnXi5yQ^ zYNq(#m^zNwNzl?xJ{2lZ&qxbXR}bBHq+apoV*y@k+RZm@$;`iQ+<*U@qxato+_vd@ z=hLB-EPzpSz8$kKAfQcx2_0d`56g~cEiEM{z0q?3Fe#(ulw&RZrLXLEAvzFCR8U5I zfhXxxhs+7Xt5Gn(VO(zpnR!dj7&jI!DWW7+b#R!Hj{u68dUWR+Z^8@(@?&To+}xD zTPq1-c!EjH!BH1yrjJgJwpWaey1jEt12y_2B62@JtJ;}UX*Y848^d4$M-3ra+duPl zDZWjPgG9y2KpKj=bYtiADE)|1OO4KC>1R1K=1L`nrUtj(2ML&rSW~iwxmXfw9snF{j^urjt*7a4TS)elnw!T4CNr{)`BMeM_ z{CEL;3riwkprEd%)|grQwy8;w*aI67LzuI6ERHx4oGmDvF}*FG`&{a&NGR~_&l-7Q z?&X++I>Z6oq!rQdO8J9e+V_}pt3qiw(*cbg>`G==24;1yp}J*~1tTL-s5WljM*hb% zji#=uh(8$_=0jHXm`JT_O0rld1qs!U$;`1>Q7V; zSGn(KGtAik_8i;8`Q|25X>gF zZQV-j90_x5g{vCj1ECq-HbcyoGTouY0%eA9CL}aU5)1GBDjmds7DyQRjNPeo?jeNq zgofv1&iARqZf)DH@1x%Has7t4EsJ{FS&QEjh2~Pxk?_PVNw!~T3~b-N5}-^1Ya$@V zC&J&#!^mAf?0uNrJo}W-q`9^I`MV8wUf)(6YPb-G0eA^tG{KW`zI>`l4!BXFn zC#ag&3Hth;#oVce_AmxIkX1Z!!I^Lju~;&&M|EgHq^p4{I(O`1fL2H3Pg#=Ix*qNJ!zl;K93n`al? z-#n-htQk{PI?ucGc}kTb?Hr~NP)=f2M%takrW|wc`ey8|(mR*>)ihnsfCZ#2JpFd- z2Q%y*EjS$J-uc`1ydBt=HS{`HUzbep_hOuu{m%>a#}`60e^$kZuVtxIQN0AeMLe;q ziztXK=BHEOyinDWVe}Ht-VSiRLo8(v3*WnbU|^t@SQ|xONcckDys2^tp3Ybn2=#eK zgHYkmvubJ@oV$H3oQ2uhqpXEvO*7%*XdkPHUYd+uGApLefd}3-7hPZtEaxip@7?mK zSA~vU9pR0Vg|d6#h=CzLLkF^@f5V;RWHf|58?G@YVcPJk)yRyfli`RA|KM!;B7Yga z)O?;=aqAU1UR*a%hx$ty<@g&yVc7o68GuE-*e8T>yF>2ysx~6q4Xp#h)K!G zm-OWK3q5?IAvh8mM*gXHhI`WD_mGl3s0>+e;zZ^F4*u&ar}@vccJ(EeJs-8}Lm>yP z{~+c98hoL!B7C5wMZ$iO(-npb?DOb7BNo4#K&kk|@jJ$or=LG(aq+$ZvloDKNz4gJ zFOOuqi#@mqzh`LU*V(o$bhHSR_}h2i4y2$cE8P>gMZt*4o3Pffjg;(QEcEQy8u`{e z<65@P?Du4q-zF{v#9TioX&LIT^s3i{pMh}_dudYm-p($5{7~8~^DIlb-#V_&Q%+qS znrgE{fS|+niamem)i+ke{=E8-V$4h4lk6|9p_8*y;SWH?|NKb8m{T%;z+QjGJR8Me z9*$tj>R#<|lZ#8eLjD5<+|{Jsvs;JH>K!X^P?tpc+HJf+scZ{7$~>*47u4#9c2!=n zU@m?SsDbJ1owa*qAvc=3=)dribh;H>xO4mc z=L25I%@2ew9q#nG`}^DP7H)$3WKR8kU`fIHhp8*>iOX7(>w*C=ZGo#FVU~@~T=u6o zXOk9=dBu!(onHS_pqW`kR_tKGgA zoQkNE)RK}4-4|W|UOYE<4-*hG4u83x=>a0;*T_gAg^Aw{FE`Li8u4d%zW6al^;uAZ zXdP5I;k#IA<+qtL3)t4*S|?tra{6L%j2$c%`d!gDmW5GsVyc*Y-P*lwsY#1U`aae6 zVvuR(B=^q?TD{`fuyVw8u5Q^xm{-#lj$OoTkYHss5?msb({KPZx3`~^SG69C zxo}bax3z?O3qcnm4GX8f>&o%rRq4C*Yx^9iisIM>0~`_{8Zp0&Dk+h|7}$*vllHx~ z9I=6(e%*TSePySK|L7)dn$XL$yV+J{4CET)>i5~~)ux(yCs3OKb)iD$ZAyV7Vf%|TrCGlW4ct@WM*~P^# zmB^K#^np@;k_KC+FnGEsgsHZAfCU}Zsm;|-eT9Tgf)$@St#Cdg1a7H)ywA?xC2ZnF zsi|qS<%_zCgg*DQ#fY**$KjV5`fr*|FHBbvVPWIOze7z$ES(2s{%B!4`FKlAi|eZ~U9$HCdL-T6y%7O*{2M`w%DH&BSfG^LRV6NtD%$W7FM}* z9*%cUM(1{woghi?j@$@24@Wg2dOsR%i5m$hX3VQjo5tn$o`@($0!8HEhL;NE%9b_0otk4NSP zH3|=4zXrHtFtCS7!55ItMX>tgIKESbc}M5~%vy>BiuVNGH_lDvlnuOey*cN?Z)VXdH6SR4~uBn9NWoT!_ z>`qi%GF{gEqn_X*K(viJAMV%+KUfei33t2gE5%j-mZmeCIXj;xT%#xJBbH7DOoq?o zNk`1L_JhC~;k11D_>IF*4?f=Yx#Ct%Mn>e@@7?=0+FCWwiq;kI+b3umnmRKuby( zizR{APWXREp4`xg-4iNt3IqXQ*JcasKKglEh>-2Uz@hq00cZupg4+ZBWe?+@@k$X3 zU5Yk%o<)nWVo8x>9r?$GP#jPYVeOSSZUVzLn9?bX{)dPt!z0S+^^%7N#y;HPk<{<( z6Bq*%IM{ccard>I-q&}|{QaI&wC*98C@ZfbhmTrG07XsTUSBu&mGKt@no zsURR*b_Ep;0tzCs!NG>82$7Y5jL3$B6-M&EKPU?QUhnn(-(3BD`!hxIS$oGIwb(PWu6sthnDY2gR8Y% zCJe~!bW01wM9oCm{J72TD?#Umih5bsdiYG^s{Ox>75X9i>DlAT{{sQO2p$qm0Cve> z=`$SL%(5r@-B9`nr-Zyr;%O+``-|AWUM#7sc4jygdyYEc>Ks&ALQ4RO$@`CZP7Kd9 z5`nXajFl!t*V@4oWn81x_GawLQC_=#34~a8-dwlC zffOzDql(fJmkWD#ZbSA*ClaO@rK7v}j9(tuqMKR|QY6(Am2TkYo& zuJxu^D4(f7iQ`=}IkQ2zwIb2uyBs+$JjAvy7`&Q(g>1`Hlv;Un>37nkc`~GW`e|>O@o6IHZU4m!ISf)`Fx$14b>t0M&c>}3a{vZCn+l%cz zVxmLzp4Rv?kd$OIsZ^zfG}6o!M|)u+zpsY@R;`D@F9xaR$zak6=75kFoaN7#Znk*P z>rQLF7Fgtzr{ndbT-voq$OZpq*B4^c@**>R?7wBUd@bj`pg%b&%j@W|7qh%hbcb}) z$kV$a25=Dit1BgpZpeAQm-p9>mcIqrnpn%q3|8(zI?2Oh8okrTK_UA$Wq3?p(0Ws& z!-Gb(`jNbg8IU6qq5S*rx`FZfqx*jR<{KZ-8hg_mA9p=FVe9=3dt21%Un{waLql09 zeR8aw5GzBOj|!(fU}h@Q&TVn$Jsn)zeNWn04@jmrcDV6+r8a%HfGP(*>OZeJS^KAD zD2#M7h1d|FD^cbS4gK%Vp!^-8?{8~rRQhhh>fT@;m|po9qVyQP0c}lIznrWr2DeCO zr9?UB&9w8vt==OPs*P5QSoC);7X&;=vOMn9_eZqk&+<|`Zc6^Vt_4c~& zhd(5clT+P0DkfSMs@)^Rf%Sgj=Qq`JieAJ~4X^%XC~BNruUpvLc1^ePTBB*{qyI4! zPs2WY2fp@p-|u6$p*-`YPY2P}ow(b3*+~?p5&PWN*B5mAlO`V2X(Rb1LW&n`Lnrs) zeHBBwmKZm2;`RI7-~ae1)RIV^P=n@;FebNb0r(`ut~CQ5UmJzI1}%WC-gtNM5*=o* z+s$-FW}UXrur))jc)zinqsN7)u3`lSYq7#|Lb(%MKNWF5?ur;O!=OuOz=dh8+Ga?9 zagE}z`|4L zLIfN}gwX}L2e1%&>gulahuT|0-w=8YxGsbni*#O!|iFr zObv~VP6JBXMnf*wZl|~HJfs*CCgqQEtOqE*z)^4M3>%=g?bYnZ8OGePeW-&|i+Jpg zTC9t`k2GiGKXGhLJnxTfdol4p>wG$-AfqyS+6qUueg8F@6kv_f#bG3|sich8XItW! z0l_Mw_omgsrF;UChiIHNc1=(yYrhHcDw&N2lO@Bny=X{K#UjRy%3^k7q~u zD>H9Ksc2^P@@nYeczw@v%vmkoIj^UgQ1O6b&w0$XBlOWQM?yWb`H4Biu79{(Ms&FW zf8vZomoEUNc*|@PF6)iipFLY=G4(PLG@%4y(Ig6GFBmKgtd4=%Odw_gk(wh^4`6dQ z-GDeCDyE4ksMR^1Jnl5Ht2^!KiJ0CKEB6$A@&9?<_%!JOZ#&eY5FJSnbkv=M$P-an zjhyAq9XtNrX0i+O3OG=j$RE&YK+h8fgUqz&3H_knE}v4p?1#M?SFS9;a4y@8T7aY& zBUAS}L35&c+mHFwq9~oB(uKybj<+Oi95MtLTE3) z#BCMfnuCn1MRCfbro8`ltfL8C6@sy|-@(CY(dFOr2T-zyBtKf`pw#~X*Etc&`mu5; zC~k%r3dWI~Z*Y9x`qb39yWo!HbvXa?toE|pHpqclt4aDj zaZXX7k^qv6V73n1+4U%73L!dybmjrHxi~Op&*1Dz`1q>J+}MOv$INT6v)z{yljjLF zZD?h2kEG_Ze9$+38{MNA&VhgSNc+6>vASL+6ZX2L<;H~p`p&-btp*Pc5~jj+!_T4< z&sM3XT1>rXLW(+JvOh-$dqPb6BLsKRI+NY+8iz`2FQx(^-HdiXvN6Qvna!TWU?}cb z+$)i(qJpTd`$R+4yqA~V>d&~dkaP=rA|ey73f`o0yWQ}ti5f8C77)EveT~ldC(rNo z+_AG48e5PhhU<*H&0%FG9mH3GMAq>=`M9S_BSzd3iZeT-KFr z?_o6HIhKQD-lD~*Dt5xn3E)zBoG6Tw+WY3ihkN-`9VNs>A(io#-A&LN{LjlP_luED zS^WEtdxG%W(Y67x4j7)VJqE87q^yc1>+^=xxXYI=TUxeS#<~Fgp<9Brm_p8kRNYgD z*2jUdb#(@iNTcSd?b>x0U69BEe;6MsAS7YwL;lXu&fI#}pBA79s+0el{Cw_6Y8Sd! zU#j;xV~os#eOrfx*z|v?*B< zicPMruJj=oJs@B3bS!@}Bct1XYvs_w>QIi%G>~wYUfe_o@$o$^MTF8fu|eQ*nXYpi=fvgEJ@^Jpuo}=})gvMUgFd-iFpBGL1qqx}2+l8T4*I#?9O&x=t3?ZT2 z_vX@qg@pV)F$@s5^$5yXpc7OvHk~^uqH@uy;oebXQ$a>TrJrVOHv)mCE=eA%2JjT6 zvqX6V27D*w4CI?2Yz9g_q@`81@g=ejg(F2!sCXnb!v+V6YHmMy9nEKuP_%g6m&r&0 zg6aRCvTDA<4WD5!pIk1;3>NDLLT(TeU2dqMf*AobcNepXvQm^bRwEGwwdE01vK{(8 z|J1)A^aKdSx`B%`T~I&-QV>ApskxDb6Ky>hW88tB>;dD9fuHw$z0K=KU!xZ`4~ura zd-r13g`dS78{TzEIyS_{jt(npM>4v!oEnB7ABc*+qi{e#&M!t~S+S#_(k^qU)u#=< z`s2Y7zHR?{h*Vv)pm8jZUVgCV$8{$+47qn+O3o^vjpV7(NQ{J{$jW_PJv|keM4hpr zY+#yBu7b`*IMs91DXW{3RI)^1rFvlNqra~3wHzMadvFjC`ZT0??ep*CA%&STHEPde zPIaepllI@-@jFEFzPwiJ`j375lS6Lph(r58=(x5S%{a~KBpq2d<`kPMva_7M*X3bB zfuyyuiB z3SCxj`(`|$XRCo}kOgmqCu&!x9E)+TGMGqF3N4v5jMqGW;X)_$KbZF>`PBn)OWQGm zVyzPoB0uf%zT35vY88(sr}Q*=POgH$DN8I1!^NCx^$k1T`x;tdB&kB%b=L?*(vc&{ zb@!zHi=PB&%+kgm}_MXg|kQb%a~QB4p0*FCdgSKELdje~M#vT!nJD z`*4CtRS8Ba_BLe5z_wN)4VMm8KxO!3d~k)v(#cTk2!veLP%%m9Z#=!r2@%en`qTab z3n)E`gqm8~+2)1^CYifX9Db&&zrPynLE7p1v?hn=Ic#8t6%n#0gC4Hqi@xm>UkXXP zP)X0BQ4meS=^mK$H|pN9AhR8SHnC*#=Q+;AD|n_&5UbAh&rXrCEUv7K+^M9l+ivT* zsXm+Jc2_4(_0-!`aUU#nG32EO?oFa*oq2ij_SG_b#xXdi{hC;;a_=4Is8Dy<?;mDV zSEoprT;Seg{-Pd;9Q>U`X3M=EjJnQx@3Ymy|2yF|KXu~_GNzjuWsIpRh80#^|M;Zd z#N=d6UEO};m70}b^9j1?>vv%4R4Ej=LmwYWw#?_X1*BF3h{Xwo=gr+ZJsqc905`n6 z^l&yTQwTl4Rpg->4%&!r0wJ%5w7XTTJFDz;(^Dy`>g4|I*&p6Zm}Se7JgoR1O86>s z+Jo!!+^F~5bRuOpZ#6Vm?PiBtM*zLFXF{7e{bWtCgmIdz@5-1MC@V98ZYtoC(>x}h z4CRyf9FAMP1DU|>DWBH+1n-y3T zg~{G@_O0d3L6A1H#i^@*a>nGM+wwcfeWhygl0NGJ>B=D18gW~gMBS`+w>@azb|KL{ zMm7*Ysn4*p4YHb^AQ=~UngzAPShI~Ge2Vevk^JgX-E{T95NlCuEhz?qdrOuq zv3~Z~B88p@>E}jj4T-JTm*8l1_@P9_>3Y`jC+OvLV5vU9|)XN|SA9Nl%MAq3XoPF`MwO?pJyaPl{N@<*y{WPpAwIvCSA^CbOQm#I-jovMweiMvoREiL z=1+Rw1f*$4NLE%@_#5sdQWr7MP!O%&Rw0d&z)FCVlIT_lUsvs zus-X#Hd&ijYtK%|_+gX=CYl>B&iE%kvNjpPgV^wh1&ln_Ml-H8R zNg=ETh~BDgnNvop(_I#O)4NO-^X-VVNv|BsceW+O2%}#yJ$fINuo&D%as`=7Er`)b z_*G&q!m;1&$@+Nrwbzr(Y#kiLwbC3~pTT%VV04;4%Z6aB=pEU%sM5fKl^cJrpO}$er(!}TetFc$F}>d zpHVVyXwWd;N<2UJPMNqeTX>cxXU6h$GLMTZbZ$FebU%z8aZQ{#b(#4)w^IwC?>@ze z#<&)JEjLA+ZF~y#Uj2A9+;&g0fzxOpsL#R)<)GR>zG`M3^ z_aUFkSQRCcC%pnAQ$#6v=%`_rr`diL^6~qf=1%KO5^Y8c`Wnu#R}Z z>Z{D6VRAbNBzPy>eAlVUANjNw!eM|0ERS*abT(yYK(K z`^r4qs>slEsw$k6;3I=Db;JR&t1R55pu#{{qqRN$r5hq5)_8esyjKmyiqSN!IS{9Dk z&{ASFd+TYm@S>uk{gJW?*2cm=$!+mjucERr-Lj;*GD;3hj=A4+af7*h1N*DOvUqWy zVYKr3TI8xgg0aOVAb10WHTMxy0wmxn0x=+Z{K(t}9QzfY0EdHsQsm8p#=E4?G(<$m zJDxH~$=w0g{^&A6`5X9j*wXgvGS#K1a|?KvB<>@q_%;~M>Ud?IWP!W&_NOhEb!h^A z8W?;XJ7v#nET}||#i{1NK*bbi@i|UMxOI8R{jLum_L!J7x-kCWTdfas1dHz3Cg&-N zc4(miM-BJMMn?H^PX~KCj~i8U@s8|V9w55z698{HlOpbO-dSg#A+2euA$9s9z(xrA zOV(j5GnzX`s&bKFtbh`fjI8YW7p~sRMmix0FW@wQG=LSnL4v9+s^y7wJ}}QyM41=_ zkJvH5oYwDOXl21)&D>-JIUGEq>3i@0;d6+GEy45dghqrj3rE<0Ox~Mt4xT-ko-!~Z z7+$c?ed!#M*DLd@Px0$Itwa3Qkd#Yz8G0`PxEs_S$7AypwEVySVUv~_jo5-+r;XG) zW5LQ%At%*$i}ArZe?I$ENuDn$$IaZt*#8 zCCn%P6OJWhnKPy!pYd9YGs1LZOq$Pt_Z8 zrDu3_wDZ|w$#P8VeuL2^G0D~Erzc6yN@K1qkzadxRWBK82%fM3O>asIs0meVL1T> z+^tniI|OMZVOJ}CXr!xk(pQ&%h62cp6jOXi9f3@$FX0qcUR6t%|76CIgsYPjO8J%Lsyj|O?9jr#MFJmRckQR>FNYg-c%ZALt$N>30B#n%mQ0(B1%a%=-C;t*=M~PTPCj5mAS2A!E)sr;PPw<2nKZ7 zon4Kp!VqljiMJm31B9ST-2I7oj5x6;ns3L8vyk#?5BKbU*O&5DK^=KqvkKxy+o3nT7s7)V+_wwenEVS1G^x3(0%|i;M$!$O-A!TD33L_&R zyC2}%-|WnYNsRMU#K_V=gW6@{IC;^|^fVx!t(a6*#d%kv8U}7OAWMzUUd`Ir2F@!B zlabHOTo&fiH39kC?K>ag$f(CHOBoJbd|2A=`C|CwuBZqQit^1Wa~9s>vf@)uQ?Xf6tpH~P(mjW0 zBR3!A$BR4BU6}}BZA$$6aIS=mqvRcr6PYnTfejKq>)|UZU8*-Xh&;N+d%99R^8 zrTkdH^G*Qc3aFe)+tYLRN56}q2rOIXe?gcpkvRJ&-?W>$^<}vFsuXR|(%nE+&DrIr zVOePzCRwmfjy_HoOuBF;siTK~&N`!0W;Zyv-0s@|+!lR9vrt?=UM!~Z{Ax#2jRJMw z3CmbU1kZFjJ=(E2B0*z8MOr0siyEIKC-gTXEQdn2P2Gd~gz8tPGFZeIHcqizf9Y_S zOqx4~C1H`T44AIWj82y&z7^1W$&!^{JDf`DQ3PBpu}V#okdYs6aMQ1Ka2Ol$pKHx$ zyUDc`Y-30U)vA-dxZiTOYbj}n19OMp)D4dcmjj(Bo_dFP98YUACiMxDr~m@(L_E%J zf`MgbF?Vgy0>2yT*3a>TZ=58anyQC}Dt9QZ5)NzX0>Ni6SE&bD$?x5$JQsfR6+W6p zInn39`3L2`88CTx^jNiGPcOf^wCr1foegsG@;8Y)fY3^SLnjftJB!o*>J zqqR8bDP~Fpmmp<%2|tKG<$(2(wyka=>XFqL2*kL@DTude}hpRb<4Y39p|7`ixV&(uap*Wc{M8m`d^$l@V!bFOS-_;rDWIN2!ZJ=Bl# zp5EphF~)eY5C@et>H8z372p%f2)f8({BMg&@Ha1JyNo`r!{zzx8O`)V(7U1R`WhK& zr_M^#^RLxiF%~Hp=xu|Ro7?11%n<8{aPy0sC36R-Zcdt?E4zblUw+RHQ3+#`9#fAA zzNMCpnf4VxxdirCW>?l^b%dD^gpn@Qepl3HpWBpfJcs`rfMcH*5JRD8cs8GqeRD$A zoIP%k6bdtK0~thD&{E45PXb85C?-l&h*ra>65(u(j+#m*J$TcB>he&->jH~U%L;HB z3#Ly&LNS^!@kF2t1c`Y&KJj~g4*cjgKAi!tOodN2+KYBjUmw$zZi3V!M|jJN%wiu0q*xnpwIp`E zn!vErBXU;AGbu2mon+25JPs^e_vzz5{>%RJz{J#BDLwn6<)!dtw2fD0eTesE4F!;u zQRPC!-I&$)()2>TbwX_834Vke@~ZNYX%Yz1H{z-#L^qZKokS6L1Q(uQmk7SWTf|cy zEuEUckAwl~KsYK%z_S+|b=}+IKA;fjnR5wPKCiYtvx6i_Z%HxPXFEbwEo^OV(R(J1 zsq~-&hC4aK{~X;-{ta;JbFVG}Vsjtctq7_OvMMOalmT*FUHD5}EkuLCmG z0c!uL2jLnhfA9>ppdrJ71Mm^?;uP4M+e@5f52{ zT_b$BgwexwdUy9LtUrkG9;(MtknwdxoJft0K|SLZ{AB=>nSd6Cln70#K@gwA+~>sP zFL6YFSW^AwE;7?Uug^q7eExjXAK?JRcK(dC4*RnB- zZ|tF^#^On0m)V`$Ec@LMb>oXg>r#aTPIbVuRpA3QY)&A8MF2?5cmi(#w4rtrP-t*x z!ew>c>k9KnsfsO}y$~zf{a$cD1yCrV7%OlG+YPA@fC&NPI5l1+kipPDD!%chNU@}y zs(o(RpLewAnFLg&HVBNLf>{Q9sg7}`M>tVcGqB z?s~Kp5E?)=8;oW+&aowiT|RnXmb1&5&S~y__ed1@rsD5a<{|g>#BjJiJan?S_Jitp z%N5IhGAyCh#PFJg?-or?Ot6?_t}Q2-F_Da?Y=zvoan?C&oB_%Mqetsu-Kyf%ec#aO zs`O0MihX%`&8Fg_Ll71roIyDI7?$uQ0H%^NH=S4ta!Zwn*lJGIYDOEkB=?AoK90Yj;`U0$}G999n)ujoOXIvpL%^9E($`dA7=)+i7o&3dn?5 z3;vg-5Ky1<5+r}}4SZtv4ZS%Z_e2Ja7a~a{Gfrjr%O_GO$`czX2F8p-pR0&fK2Uh25Si}fDWg2_w|YE3IiAva7dqonTKy)zYYWsIm3{@S~usD z`3fCpr|3HP-0Qjc_C`xUHu5^GRBml*2ZlOUUR~NlTr~p2f-Xb)5dhhf(p}01y4k&4 z)hSvBWuoDU|9p2K7e+c`wB7b z%G+AO#n(shT)$o1X^Vb8w5XK90WCAJNVC$yZa#agasO)r{ZLq_^OfsbLD&=g?e*G4 zrsD}~W&nHYBivA|t&v#syivGN@SgAHL$~dclAT&I<*(pva({9HQ zUkhu@NFzL;G?{yuK&yo9eshP}4!Vt8RX@)H(`O+wpNnw}&P8sI*}z`om7EWnYGIgv z)`3!11S8=LFlzQ%TY|Z3AEukzr#Q_b5VzaF4z|VfleXLfi8n8~dlLm-j;?=EK;4ka9BiSkGU@w7Y0Y=ZC ze|)EwqNg8PxbDk`LfZbx?6oVrX)g4YM8!D-7Tc863Z^P}>oF&355YL%>23hIvnS|r zrZd5&t=`Ep46}xD3kGELS9s20N>ULCy}5Yj{J1D}+Md^!YFl&H&p3YyyYBgWwW8gz zYL&6v$~ZOh+kfVryTYzNKb}#bX!zmj$#vvK|;Y zmfh4Xs!bB9z%kTlc6q=orqcQRdE(i)R2dgw25S3IiD7{9*a?}r51TK#GO}$po=wbrec3BjnGRl;JRHDv zJPXK7Bxqg7TfLEtyXy{4NgLlK1@X0Pl&0rCu&1am7Q;+Ndqf(V&E$s1U0D;|NqYL4 zs$}CZ*Op6@?5$`kxKG)V*>rB-c94?92}M@<6p$dGEP|bZ#(Ah~F!B=w=UXiYqdqa* zg?ymF_MBdp`{0#KD-&vu`DV2p3p%t=@t|&bs z02JIPuuD%$&UWM~H2?ex5jyf%>9FlmWA=7-`!qF6daCDrrycY^zjd7y57MaLW4sAW zL2lw#E!$4W`p61c`^2wi-;5VWm@^fN3`%sGfZuv+WB;+$d}7HI3c)^1vB_LD0_Gya zK;U`QigSrv3XyF9BdFXR_iLziAadEA^|mzsEFNLrL0tRI;)ajkuux0q@QqBrY;C}( zYfF|ayIXt8Z%m#q_gm}w(y(n&Y4!tLsQ}Dly3^z_=5f-_PJ~M^st!JzE2Jg!9&by1 zt+&vn5qT$TPjc+?ZEK9MB$^G!;ac0KLfU&Ql8?KTECy$!Hdum;2*`H&t|K!Yc zfnG?5O8^RA2g3xF-v!4H7M$TTrzW*|&YaOTmf!L4umO%>UutTc2LBm>gB5~dp+}`j z5KMTFzP@#Hc1Bl!>CYADeeF-6Gal+37>=H z0C++!oiRE2i7NA#F902dtUqTsk^C!>;0CqH)AZ~uQ4N90j=#XVd5ymE#IZ3MTJVl9 z(HDne!)Eige{M_o@~bP*pA(zt@H3j%E74NLC79SU(3!010kRro*2B|JypC^jXICYB z_w`3`&dQ>C>>|8JP&;`dj%!RrkyCFZr=KH~n5^)dyBS_9v_E@*J7DWTI&nD_L_J97 zZjp(DkyTH?IoiFw*HT#c8@FADyMa7aLRMzIgZXEP@Y?JVP!bR?;7xt~=6U&5zUYIq zhcY)A*l6Z_uMrjD-2(t60C54gho=ZuN&fU1bV+cK4q$B5@*G;F76X#$dz948d5P^u zKD6*rJCn^v-#&E}cc+E=jL$#M@cm^q3exh7e3i`R(QpD0++$*1h+M(YTHdcj@e26r zHjmA7eidI~;~tb!cv;?mEnZVw8$r1!qo&)J`0y)jA@%Y!Kn_dc*Qa;k>jcKXItYOd zZJn8@IWzw!zEnF{M2pD=Mkfl+TJ3~sU@YqD!f@!1Ok=LrmzVtSe}1cQ=CJ-&-&Jv; z7Spxl*w)`#)=pmPHn0;%SkUINhEMSCkCv2EY0G6OPxjJv1K>z~Su$$uG9)ocu+#D$ z+vJ_jc4x0#^^JTr!V+lAw%w;F^19TfOCFd__Wo27jo_2BoYyLMj$I|Pdcbk69rDUt z6Dp*=R$t$??!g+s*t71>nJCc$tAh;8^)YKc2Yw{pK1L^#ZBhZoPX{ZT&etf_AVfe? z*UgIfI@*r7{G6<~$t=`c5ul_XxpU&3hdnF9-l^-OM2utOfZfv+u zIh9*7?>y0q%ZG$N{atNMFxKF*^78UF`y9_LnY)R6+Im%AeozedkU}A1K{8v;q8d>! zOOn@7us@;I#A)6_9x=tjKfckjTHJ>yFL-`+DTfu#Q-s#GMJ0&nICiy?B;lqB5)p+z zL&7WO{s#G~*?_drQaSf0|ONbs#v_N1$msl}!ruzDwREry1 zQ=Ur0eqTiNw1TKdC^nr3dR$}(5Ei|E>PL~n`^UyJd){}D%_rpxG6{a%VLiM(L2`pZ z+-GR$4CFsUfgO1)jyUElF)YNk>&+chCu(&!ScJ_xD}qY#mj}~e-4MPE2`}(UI2cCc zaBEJ4SPG-$D-3S~z<=~BVt3Lc7!#ZL1mT)H?na%h^p)hMBdC=U;glvL@o}M{p+Ook z2B=qqq}h_1PtQeAkN6zG2&g{LEkE94{5Vo8H%svIPo7-(^j)6eyS(%bZ$~bY9K1o4 z?5R&9foj*+Z&O+S>37Zi%Rzvs)zY>c`Iz7>Y&0^PWY4piE#sf7q~`ub-1n;4J2&rr zFTKOFM)6m%JEDS}7la=C)?4(l*~ zj*2=e#NH8vFPEtJ?_pc|`KCx6;#Vi&Cmab`EkG?_QC;_LBJ(IJSOUY%8zNCP*n#}~ zVJ-yFL&3WvH!vg&CH*fi`IobNRH2mYj#qI+5l|Mgy8+qx;P-}v=kav%ej%T+e6+TJ zpUqt~)OSvR<8+$&0#fvZ`3H73x6dbE+?_4#lw2!tv5NHN!%^5L_s1t!%%^?t_@`>W z*&omro%N=(@67z$!RJ$%9iP{Vd&C!-cOvEeWIx9@@-YM>21=TU>3rhlPba4&fx7$f z&wPVNmzYK5@){rU4pCuME~du0uNwd+5p^yoXKGWKn@{9(5SYy;d09S4PnQALm5@?P zQlYoaTTbFnpMUqV7YpY8C$AN^W=k*UeLd{SEHN_weQn)2c3DncH@EYm8STHvI`Ye^ z?olX&+gr1;x4V09dObg;GR}GVFZ#SN4I~VJ<&eWyEA6gL3iy68=oPyZS54KSYjIUT zoPW(rqj+WRpM7Tjw~)A)93ZdDWN;CxIQPDbKsS~sielnt?b^qW91IKna&pdswZ3Tw z+L%C`|IAqvEbr&zF!yafZQcLNNtpN3UV0(3pC0`i$epqIxv-O;i=6oiyKW~Wh;B7Z zsl-er7?WejZCJmKSJzaY7c&pqe7PitXauRq>eAsIQstEC_+3PdxX0PqnTRy!gOM7q z*;NQyqDZ%^yIX*SdgvkHPlaS3*DUY%`7%4M6P~xy=%0_siiz2n@!;w885^OXRSB=97W>tL1X zc%FJ|3CxK>t%%b83st`Ryo%L5y}kPl4QWJjEnsY(!dKzRS-y(Tf5Fgib3eA_Pw~&T zZtna4|6J4oxTq|10zl0_b#q)3g|Y=~vgOrpbCA_Iz3cD!kIeG(W%Un)Yev?H>e0VE z4Y^^_XO~ee9cf1ooGDa4_UxPav~$b0SpwF}@*dCtQMJ^UNj~;=1SDMNa}n;IP1@1o zv-(;ezgn*Km)npSrI8@jc?7j2y8Qn~3pj5_{_iJY-jBENe+D382MH@X&#yTMocwap z6hUy8mWOWr$a|u|*vt^M+OL0_S4qZ~YyA02Tn9u!O3;0xrXU1!8}t%{aomZjD+;C9 z&2;WET4ZNwLcS8CkI6|5vm~6?lDTyad|&*egWx|4=dD!ikIxas++U0!-+$IP&3ivO z{tH_deby)5r3#F0iQAuZf2c)vwxElz1j%IZ^J`=z-T@`sr2i)z7W{l!9j*i3fLC(w zcOu`YO)?buY2^dT7MdyB-~IgxwW$A%e(fV>*C)6efyx+z_Zw#XE>1`pc=t#KV|X-y z6#ty{U>{f4vh53ClW#^jofHl91o)@_qXnG%t@ys!gn4hzISKRLPZXd1bopD|pW~&E zKQae{cm-SFxr%;Q(z6v8$f@2s+`6sUZ*#?So_{KZf*PV{hxJ3@M6*+h-HvLXBgFvC z#)}ub%`L6r(>^qNcv3CF)hapn@3F98xCA`g{Jt}a5x4g2(_hsZE+zHcetiOY=LHJq z@7d;-w1*r7ySWCee7DQ;xrd@qYwssx)k5M|f5TveFIYI5IR1LC;PqSer>{@An9(j@ z7R>lq2872(9DsQ_JMBMam*XJ#ec@d1!uS7v-eyhUyv_Z;Z~D9+msg+l&-30c+&ue5 z=e_;^j3&O|`WC;fz+MR!WxwuJvt@E!nbLq%PNznM;r6VQ zV1wGd+L!iiuaLIpI7=Gn*Ukjx0(z(@l+})*&I<_S!)7-^TS{Hms%EidXIG-!?VWG; z2BFQ$sv~q2`ZM~6gzewDjtwZ`3dNNn7T3GI2Ws#}xp_g&=)IM&fy(RJzoYv*SRov-?LHtMybq4JV zN1Akv*3~N{6nw=MO!=nXO-)tPlC~^<8=Z6dwbt5Sn(}NdxT8sos^V4V`;EguzpfCw z5MX!sq4?FdtIrFx%}-MEe!k_lRVq7PJk7OcALsq5{MhM95Zj+9|itKM&1T(a#v z($P=yAB&>KRfsEJ)}$aKLoRB<<>4=Tb#Uu)m2sDR$C75`vfzgroKq^_I92aOX@=IC zF1M~beVnN{^2RGycHi$&l(E@gRT)u(9*g0}N5mMpbB~IH#O%2eT$uWzJ4jAAaqa5W zm6`cN)5t@H@mmM_kB;Iqqv+1fgXS*>V*#irl((ce6iVwKO=T2qO5I>?YE$qn13Oa< zd{dAjJnoe)1sCyYlo$vK?lmC-XMa54+c`N~g<{YcFmXV07%@l^GT-`}eOis$TUuT{ zHFc7nitR<0g<%1!xoPaVCh*viR5NpoWQT$OF z%|7wshgMo2*=@OS+~R2(_+mxl` zeeq&VBQ3nz-yd1Q&B2>=DzC56bK-ux4@B!eR2Tjw=kYosKY|Vup+s93C-ZAemB~sc&S++TnT(Da z`gTT_Fnr$+eC<7XZkn}7MYei2Oddx=f1ot zBIw<752el)<}R%-m9x9Aoo*ODG;wiKMqV}qoT|V7Xl0C&%&JtQush7?7&KdpA;a`C}I0)=Wu-yF*WD(dpu8p3{ptok9#9dwYgsMQH|Q z3(75JMJ7t!blznMRb`Bgj&}6t2$vf2I+c)dw(nL%Sw=hBPJ`cymV|c<_D+t8ROXA- zb!IJ%N;@`P>^@$%7Nt55+7#{0XlPIkLA`lqt|5?{voo!9Bzli}AgDlP&Wnbop^+SR zZ#wl(YNq6sE6Gb3J%%>35{5d@as0C;1ZT@7m{y_g%KFKzJ_@zB4ZPU<8mk8!% zCP5X{-r-_q&Lzd5EUvR?Qlz5T&xEx?jdRJ=vBO6;%5Q~qPrk>(G@Gh)g@?Qr$HiRq zBi_OI(x(>GwORdWG}avQjpTJC z{eaxq>FEW;Bd{5uPjlX?jb9@Qfu4RdfMaW6PtM0yAfsHIIjjhqonEa7wa5=DXoPyU zXzB1qEepnP`P0d6>?(VAH6`a>;jAzX%kdTQDKab!T#3OtP8$_Sk*B=Lp(8!!rQY^= zQW$lpaLZ|IWW<)2zd&-Kn2yyykC12`SVW$e7?Jmw4f%3^M+sZur7Ky}i!G?j$%A{4 zeFBoYb{X>*ZzENS`~c-h*MLYV%#(vr@*ctzlUXGeDtj+*xB7g{S&trSK< zY|1|-W z=fR^o#J-{%CM1sg!dv>-A7hJr`+kw+F_Rc#u&eFks$?^fX6CB77w`J4-bTyPQyCQZ z$*3`ujR-?GRrGb%=;#wuht@1tW==}!v-Ijcnwm(7)yIj^9#p9?$l_7E@@^t~N7U5S z$0_AsFbtD0zX=bgQr-Gkv3W%{VWPn1z51!B@VWnkp58{cb(5n)^1VYc)aWRfinpmh z8QCq(kanxSzGC{^bqdN6JWgu%k58BZlM5|s+!^I(N*dXi)lou^;VkY%iaDay#KKly zJX}JB`9PweCEA_WzmS!Y>M4m-ria31!;X9r)kvpmvydM9r`=EUY^-%}pAHdC)ia~n zk7sF^x5+U!y6Yhe`Fy!bY-+CHISGqj9-8L597}o1dT;77V-{AKQl}Ns&%l)uCH$0&uX3`@$tE6M3!F+bQOv+J;NKzZw{yXeNyN znng7SB9(t7^MXaH*4S2Rj|ebn_iO6whaz7;TLA};E`hfC+^#!;Mkf0DSs&gnW?hS$ z-g8$wDjII|l)krF(bi2mu{WdC9CrJ}SN3IkY=a6Fpoof!H|y1v0NajoU+H7V#~l5C zU#2+$R1;*JZku~+@`%1ZD#0rO$NC#D0Rz&iRXD{$&bEyF1>RL|RZ80{G|5vQ1ZtBM ziF!*qS66S_iOR}KB>tw|*=xscXJ$&`UKWtoIb*lOwpm0j-Yzeuub)@{h#mqoPwH+* zx_|Wkd7Te?&$(MLw{3@*Io~I&}Q9ikYZ3bPL&DkM?PH z`5r8+Vfa30Fj)?DOHL)UfxSt!dx>V?Gq(NH+}#N4J+reFb;c(t;z6VSNatt9ykgGX zK`*)4h@(XurBi^dogC&aTZg0Kem3Y3VP2PEw&%&^w>|u~1sxJwY$YS(oJ}*O0b&op zLkG3DT#8jLIHm_VjuDDefVzMGo>Y-HYgO-7x0cl2_ZA^@;)2cKzn+k6FAOw9WefX1 z-zi|dJ%n+ko6+MKiM)PRlkqD|Tl%tCS+97p5Mxe!1G?O#^vDLdLo0TVGpDNS*&7w|Oo) z`)xMpJn_p*hl6J)aj?o;2Q7@lARgc=V^=qv@WWFx#}0MWE_&XmiZaK>6OF}@JE@(y z?C`rONgLFcjR@k22nk(?4tNueLzF!-Ww5SeBam4`RyjQThE zJ{h%1dD{IxI`0Jc=I=!XImL>4i3h4j3sjxWq>*BXqFyvR)Tg=jlv<84#*7F+*m}{_ z=P|_qPS4}8n=q)r#GU6|UZKBCTtDezu#&$wOi11ufvKFH6Hj)cAE8|?!-Rksl{dqt zC*7o{(pD+B3?7`AT=<5ewu8RP?a)2S7I@BG@EZG#mud1R!UEf+ns8Vpnwiuzc6fWV z)5?xkZxJ0(*!udeR<$d#hVI&-d+EX-srUB;rb%cQGLOYj6d(PxXRgcBmYj|MHSdcD zaq}+?kBkN=8-!UC5gJjBk}5*q>LV>Xw>TNy$Kn26S z&}7NJJ%-NAA-5pKlXmtt-EYf~*AW|@CrCC2{lNMOt_wc?t$QX?fe#K=! z#%)Ddrtr4L?Onp|E4#ZyR<9mt^*>@pBm56y3XK%If640_%^MIxIJf+!gNr)Z zZ41QS93ks^{4BR{q&~-%5$K#I!Ft9vVYMtss$rqs%k7WV4IwKoc+7on(dM%;g8w00`W4yIj&J@#cXIfKlNl8B((snPEQEcC%1!|$ftLpo zLw#0npnU6ZyrbssjwZNL+T%N)T)j%%J<$}mf!JxZvj0V8+Z>45r2x@8#M4lv$jnqj zcVm>Zsk19`!Tu8?XkDbLWh$Vbv;7fp%YOVYOpYsU#L!-yMiVY=JVqfoZ#FI8U^ z=ln;1+g2HqQ`RIV!%{;f!fIq(lkPJ0UE*0|}eJ*eqvncA4La?2<~k^c$l1KU{9Yh|H|^Kp zQ{JQd?fiEOzr&5#l|OhqpG;eTmInL15W`rsEdK~v`Z(IGDW@oQMnRrTK&s~^(Bj02>8^}a zQIX4?j3nTQ?AR@F-v<_Bf8>w&4HO9eC8)I8i2wP(OUpICJRmwGy$fvb?vIgm51_wr z%aW)7JL76qOre~+mpSmFsnXD_roC(hyG+MJ0@lI5#|fI3XkTXEc2%3VQQfl}<#J_v z&eY{55|dDXvGZ9^^x$R|knC~o&pppcg#~H8Pig(_-PU7|SDC*HlJpo_>pB|2d~+g1 z)Xj{D7Zge5E*6J^P#jDc0TX%w`un0n3#FB*@ z#SWBut4`4g&#v{0*H-g79Pq)Cet{rm?(9o|{=;@VV55;9~%w&vaJTMviBdGNr{ne|3 zb;{h+#Qy~m(K=2FDuScc+}HYqFZg=}+fwAB4xKa|dQ!GLxO<{U5!7u35q8(nMG$+zk%UOt!0x3#-BLYW2~(l&Ia3iO1?%KdW_v|ho1 zpAt8PYY&I1pUv$Ont{*xJ(m!(fo8!y&KbD4F3C_WW^=IE9TX(e)NYt5je!9~Q#Z!v zQOe)m55^Kb?N`Q^HSK~KTqUt6ncMAfKUMJY>&HDUlpbcwKsG=OKr zkmn-$4d3mmlBi-Yw;*?!pk`hSUq$WbEAAT$(OB#9PC;K^?0!uhJxqprGdRF~_^#>2 zE*9Dp0w#M#61ua?H-<}4r#MdDOyPvhM(EY=p&AxU#XK-(_u3UNWc-8WkBYu7fSyw# z`RERHpSSi8w?I^Z@R=y`39}{=y<+G6N|NWr1bUah>Q6N>_oP!C3xn?L$j6Y34%w(LfYuxh*5ct}oS*1)mZnsk7RHd(tN!C2IcR1X(VT z$w4>v2Z|U7yW-Xp$L-1e*=#PsHbf{n*Nsy>Lg2tJ|83jO8}k*RUL9G>CgO3#<>@Gd zCVW14I75*bw5jcnlTt{xIY8YQzMWc2GmSJ(zZ)l*T6>QcPWb5>+x@P63w+mu(Uoy6 zzip|y+fCC%QL%xrys*ypjH2POk%Ieq7u_an7;-yUjtRPVbCP6SuQ>iO*V(w_%+{s2 zte{ZPR3yV5^X#vaFwb4bn66%)=E{D;FRA&Bx83FEB`aS#yi3W;+qN$}Hgv3M+#l@Q zOSIm!3Eu|_Tey6<-OZUEjvICTFE#?D(4>_74Q4SyC|=)2;6h_7+$4fp>r4=FBMbPQ z%eAtP-I`s8`uZom&FC8*6~XDs2Z>)@JwsNrS5;O`ean{a(Elnw zbK*#CiIfjg4M&n`^a638$46?V$kbZWo7(2kMJsZMCl=1wt&a+<;j3|k)QkKp_PGy_ z_P{gR$OI?uuXJ&z@QZOb&$XT{OJ{T6F2Q(4gu&%TF(TOEl2tW2sZ>3kl#084k_7qH zy}>W7vVC)KnpN4e=mPhX)h18G@ubMjzcpOzP6RXPE$prghNH7%^?Qd6{Y3JG-ei2z zq`q?Za@E+x*dyTt7$@OikRS5-RI`t1IJQE(2J9`HGMMu%|z8Z@D5zPzqW^buffB{N47jjL>Yam$<)t_@rK%8;u^GaJkH1 zh^TKUo$NlruTH!-Jht3w{IQ}?-x=s+)GaDV*{zb7)z;&DCpoWAo>6!^IWNN3FggxI zmdf^_dD&&{GqbS7{&zE)mTr5mIy)VKQ*O`1R)U!WUkfhv4gGc46C0T`eP>|1)-I~c z3tO*FArzyM`PFy2YnutN>nqYq8#30iLnX;#AL$oV$aAM$vsm5x-ki3xscwpJ9rL4E z)!c18cpNb`xa|C4Lq_TK2tCx6Pto#XgN@CI>esvk6_P$$5D%BM;26aa87Q0&f0wEA zz#VX=At!4R;e|sw93GsjYNK|V(JTUO*nS@S&Jnkb%qt3S`-_CoTH3k4a>Yf0;nktu za_3Yqs$Yx!#OR&gM}Vs9YiiDQMmU{&9~3|L+C*>vjMy*1!tkrZu?EG9s$Z=+s(v-$ z7}>e$L(#+Iw@nRD#-uWk*VWKV&p>4u^1xPQLFxWoxv4L{Dgaw*+fygB*H!mn{ZN%#v?3b{O_hO@xIT5s z9;%I*1Jx0>)zz|LE1L zM-tyM=QVDNt(tYUmdV^4+4>&qXIMJe6Tl;l>Jzd8u8c_r&awF~mPrA|=O3V5Lr^)S zfYW2oe61O~*UWZ93PeR-y3&>!`u+J`@a^;@QM54T5Hi0r@;5s&t=#~C|k>=RmC z`$De8>nCqX5;hM`_3S`a3|*;^1E^r%kK+yPkCpDaX{xEa0WBmd7Tg|tYihs8W*;k7 zyOyy--5Q+z&P92K2qwpv=;E)awumH%P$I6Fv7MKi#;)jd-sv>Czjaa_c{_pXW+$Xm ztQh+wbJpQ(mrSefoax;bOn=z^8c`HdgeRYH>bA{2BliAr`#;*3)ne*_!y`-E7lUzJ zuKMue2JRE9GGk6Vl`KId06L|f#*3eW%uYTlbfA+kq9}~#f9YUk-``{mP|FD4toCyq z?sht}vQ)=?>I&yMl^(k)mLVAZQglTH z0i>m8YLuTwgSr1p@Xq|3>F-lgdC|{#OL!L%+ALUb<)m7*Za(&|-_@4L5!V;+js_v> z*#Yq_qwQJeUBhCX3@E31$24XxqYmND1iQP0t{u@v78};_K!R?5C#U2%Hz_rL!{U{d zLfjY1f!)NxN7I$+M%8)2jXY;IlW{$2JxSk|L0?dxWl62Ll(Pj}L8OS)0|gIQK1i`p z?I-zfn~A(jX$7Ns1d)nPW`_+FIZ{Krd#@N>&F0+$v`}47Gu7bmq@AvchoOAZsXYU)!CYiFg zqozvuI%m6-m9AO|r@gzw74>{O{vl7gGOr**Zn%Hr4?n!-u;s~TB^W=GZV!nE`QCxP z*9k&-JIu|CrNj=LKj@I?UTlc?Re`IBKvWTy-YrTUjhJnYQ3xVO?hIp-kLg6uX59i= zoc7M0Yz(#`?|y+&k@Z-CkKu{&(~0}j(k@lA9jq@7Q}BU4&G_GnCKX{z4h0pVrm`og z4UyPx1WIOoscpzn?N2@OT5)7A`XIT?XWs-({ z4~Fxf#b5$tq}e8Hgq04>FP@@;r#_KyYN_A+T2@aA5Zi^{ZOyQqfJo z94rw+FlKDDu^#0~qztM(PZfiZtmw#_rE#NUHT_DA&2fV6ThJ1uZ~}y0H)lzDw5E-J zVCBWe4m9Rb99-Fnq{N2Oi;`fJq_I(=OZ~c#UH3>%JgK}mG%pd}Ie)lZdW%HWT-(9t zn+BX#z+_T!l7~ybLI&AYT_*lo%b2EGyU8a3YaI#H_+R>f2nq}JB3-R@@@Kk+Izx=> zVrpX#U%d*bG;7$czKbnYAj)K#Cv9BoYFKbb^ISNZ+Osb~LkQcSkJA9zBSbd+2xFqN z(U?P-7?frBq~)*S8h3}=Hdqa zLiV1``^PZa_>|5(i)Or5x|yPQ)>w!%XG$OWREVEnm6-O-ANdXyd^WTeuNsSt;wYX3 zpVQ*`ogvb_4?4b?cdD5?{0alU`$P}ibrccm-Ai9&DWlgX>~l(69OQ4`5Eeh86(oB$ z1J$^aVB`1$`VTM#LTRd#$ni}=9z5Q0-Uj$;MusrWg`?VaLn41~ON$O@SB~9UF*sE2 zP^WunT~}Da+cvIDjf+kB=Y`Q|Th=O#wI!wN;zmQbvrP?h1Kzs>pt11Fp=(7hxr4rz z1!yMnc@NxA++vuuGtjzN8ClRkSPA_~8ciCSv+-pyTqYSKwUQIDYOF3EDe=`sw>EO@ zL~lh~&^@!}28!UOKjiLBVR8i2gdQEa_2pkMGY6`l+em$EJ{JD;K*WFN(nHgg8PwbD z?S3n+T*Si6Hnpr&q>SGpiuf$bK76oJk!Sv!JJv-zp{q-)iFKg@k_0)r(m0XhoT|BH8FjA( za1Xvq%?Wn?80`$LcvV-xejME()9uSeV7xC8^x z-9q`g-KmKIKDeXQ%4I+bqgVq{pa?vAYxn9JpOkr1IA-2`X;lr* z0FNn)%ah@V?O+V-Lye#$Wb?ms6C*v{xyIphX?062 zWLpNu#_U1-5Cy{>h1%ihl<^p7A3up@PdZ}XBqmnM4NV6daH^C#MRjK^)=Ri=>#wtb zMgo1=h3$%uRG1ZhN)=^>!4z4V9Jd_A7eU+NFH)f6>+gL+G+A1pe{u6)LSZ#Ol5-+V zJ*dmR?3PbDbRcx1qJ2VxSBlFx9Q=+R36%r+ycVYt4O$77+O4NbqgOYa3+?a;qcFI( zziUM7PsE?z5796dckb5c?gb#s#k7J9~q z(tbDGcH~lsv`y307wCK8;P;<4bh6MoML(tBr1BUJ(@QJgjF9WV9qI3fHfmJxkSmJ^ zVHLz*H2u{%j1eD6QbS`XxC8pcu03=qGOS0j@~xNY4XX~&%pI8~sh@%7Vw!H@ zS1R*3fIBkz^^~b23e$hb;jH5W$!DAX71s^yw@yyIWswBYm7w<0Hwu{JxQuspJ;7<; z8ddqG?Ic7v#%w2TQH{tm>~(~Z${h926BL<>Hs}B6D|6K|4torbS*l2PO_kr3b{o3> zZII$&CAvxarhq(`fW*Y&7nqgBq=zcF{ON)$yFTam*HgCGT9=m`{oilD7ql=&^=F>c z2asdfBDZ}B@4Dk3IjgkF^B(hi?&D6>tH1u~I3CbPtJ=U|n^cRVv4YKb{m7elhK-@Z zcaf8n-tVyK8WpcZaWj&;;cPghRC;FmEx?UHOBovNv|?^M1<MV8o_?rmq$QPlXoq0U_BJ zXA$B+pN8pZEw~N!u01y~vW)KZ_Khn~%MMOOk4h%Fs{w-!K(N9@bhj~e@MpZGdL0)V zTrYI$A&^>GpYMEPuwbZNj=PL<$0q8MGp-uO4Il74ef}JWFM~07JfvE7{jB5Vi+eYr zn-rk4xDB|3=d1Zm>Y}E$O;PL7MNO^YhS+B7GQu%Pq-|9uBoVyo96f>T2`8pRt{55w zV~)G@fKj_Ol;?K$=!W9FaGjKuLaKZKy_LiOOt*CpQD%CftDl!O6%!ev?<@O@`lGR* zpQvlRSQZsKM`gl&n>cnvUoB|IX2Vm*CnASCkj1Q{7_Z%%qk$9zo|Br#7&}4QCxy&W-s)jz?`YePv2q zoD88|sB+6!Lbs_afY}Iz{^3Uq#hs z*|TXeo?9?oVV6H~#}xTrn!~|mUR%n7n z4P)cJxB0)<`YbI%^6>VFn^U`&M8#Eo-%{fw&KYP`-dn}z`$)`dTM0-jHq1%O(h8}T zJJL2rMuWLp(%pBXM{XHM`suIdmu{@FeuFVnQO)?u0_sc|pt>Y)?Rr2cf_wpTpso0& ziku2WGp!+xwOFHf$pH1>r(uf7o2Ug%YPwx}y;>pd7FT1TsejMh5Z%|}qE4R!?~=p0 z@o6LK!E%xw6%lt*#T+(?WS-FRUG{zCrS1~xi=13nZs_LGJX4GEt-f+Hf`2qz*t7-XqNmoDNJiNismM%c4&TmQdRRVR z(&Z_a_12yD4dQr(k^U)%EM#E>&fTEn$_NnCvRu7U?3M5HrSw1C?Bwmu1m4$vy=eIs zGPce03rsFP3(cB(XWR)MR;55jYgi;BlHYCYd!lV5J>02p^Y8aIb5roKkrU}Y3f+Ir zt&1`B9*D~dmhw@pOahsoMq^71V%hT1O55i$s4xDf5=a{w*bQMLs+ zW56lZXtnMaUX^9T!u)Bi*30^D2?!&_=)Cg%4sjUvCZpuQExyi@M!HZc|^a6S=!>yl&d5 zBaFHoH)8n5g383oqfcT0T{^vO=HEwUaH71j722*10?P)g>;75S5=nIfvF}oFGf*Wi zO`lk!a$tMGB&)#xt^WA_(mfF_J6?a$3*oh$U)d8^5d@%H(+Mr5yKnN74pyXl)6rdV z@}QOE7WEvTSUYe^Z7rrNkEz|dk^i&P3+e!s=TK&=!KRhpn>|!{b#)ovhbK5(5&BPf zUW;BVD!im2Y(4-bxBkaP*3rx*o;TJbUg34$7ub8=Kj8z5m&yE!xg2x&Q!t+Y$;UtW zAIv}P7e6oj?b!eS@c)}D6D!^L>5}uW!lJ=&r2pCgoo_#^d5A57b(y+y@rrI+G9PBz zj>5wNcp;kkY1?zwwh6!a9$PoHQ!a1vWw%IHMI+*x&{%}hU#wop1JH0bnh;0SW zhjixEWpS~kX;E&!of{3Uf0U7-`Q>2bho|$o(B-_xEfz>=sJB(!`daN93NF_6owch~ z2A5v=(`oeS135O8mduY2^X`K}PK?{!{OfW1zZZYx!k-TQf4j~K-G8qiH~1vX@adKK z4~7Ql%>Vru5M`o*U^qR}h2V8iS4UHNqCr2y^o!{f$JqIsUwDoTz{<*w24&>#OQNzj z+h-C07ottEv7rOji*NPiLzh3@z$Fc3L>957C9eo=1>qdI#h_pzF+*H1ONNar}7cEFE$n`drmRW zuYy5_9@Et?2ORSj?#95+$Z~-*5^c6{D7l#D=sk~(9T_mzyBs-K`fEPZUHsD}OL%t7FX=CSZgu;=Uk*}!`q$47PZq-5dgISu{FcY`RFs)v$#P;?=~oPb}c@Ouvoc zn0v5^aj}MG-d;C1xA`~n@kKAkBrHU`=JhI5d1~*#=m8L$1Z-eOa9*n zvH>MK9aZ}ki=Pc3)WX?cc<%v35PBjU&JnN1`y$)NYVGdm`^wwr*f0K-%P|Xqbl_)H zKKLC=r!wu)nfikB9%Y!dfnotD6D8vFYj5tC4}3F!Cokv4e^lp^9l#uHYT4ofdkODP z^VdpG=({gR=?D0_7MAnk_p?N9-~8`<@#D51YZqN+TwZZ#gM|+KckzP1eCYb;+lT2I z$YqwMhQB$tR`KS|<$&m+-|Mr9_>4T#3!7{M=poRE?tw4+6faBl!1?p;?E2P_tv(0-OjTZ- z1ufzI>hq`f2u*FCHq0cXOOfq4UvvxFzFT;EUtA2{Q}fqIPXZO-Tz_%EmLR?4F#mn= zV;4Qe#C=q*kPg<1VPi1o1eMA)2>xREd|sl3=YC&{v8DzSYEBEhs&*w9%wznnwN2 zB5!;GjA%suZN2X=Jgm9^O`1m{rEhT#KKvq2@L2NsdZVd{Lyh0Q;XM7>7dK_#^I)~C6fK(LZ-I!^3$P@Y2 zXT1uSU*}VZfu(3)SBXgO*%JzA74mR)0A){r<^p24iY)Uj*k5*Y*Xr`6t<3gS8A_>X z$A4@8Y>mvbec`hQ1Ck@IKlM5eI+(&pgv?|qv?|4jFGLfw3SBGebTG97Qlp}`u}3a1 zJ?OV(DXgM?*mNZ2+V9V?*3%rid07j$_3qiv_rw%h&CqxbhRkyYWLx`~Gcl@BkxGJ2 z+aNzQXb?<1c#gh0xKxVIva;|)p${u<-|xu_hc2`q{@Ed%^XZunyamM{RBqsnd9nko z@Qfj1=7A5(i0Tag5zm2N_9UywH!fSa$H_|vPksCbM@wQqzx&kpz08(NkM%S(Ab3>r ze_gU)&!4J==RgJ^dcHSSsy6qcvk^~&-xwrB41!4r-*L*IBWQKwuFOjwJ+X#rMvSLU zJ5~zGFYL+#Z>HwYqk*j+0`?6mhn8w4y2=5-{-d<|XIVT2?-Ipo%G;=lYwR7T29gVM zYULX>7QgM2pWe3HKVoHoKb?@itZ70Q3NrkXun;n1$n9!0#AAN-e{dxAeAz3rADT0Z zF3)aJG#aaHFmY7)bj6k|35b~<^Z4|g`&rcVeUG=oT;LY^G~u?@B~Eo|k#~r6S22Iu zj{thgb{C5s$!UokIE5QMwL%lbNQ=h69Kk$M!xZ+UM*S0;f5*03|NFEEJ)sE1)rB0r zZNMe5-K5Hx`JXw(`6lb7xAT-z(uM_cMkxt%KFkXc^N2r=2G z?YHCeleF!K;(Wr^3oEhvIb>h+#B%OcXi<{S$FPMfWOutoxIKCJx%tFzHUBZlHJklr zbHd@#YaZ^m?Q0o{NwIO|5i(LrG&vbX&l2$kiLlE83+pui>Va!-{7T;5c1?^Au~Kr> zYisS@&?-AjyLEghBvJ+m`-1OOA@4%yV?VCC@SxG`QHuqXZcmV{+{BzP2*#Q!RDF!j zK5K+-Q?penCNYC=HOQVdE|0u#d|Nla&+vM@|67zD+u;~*G&8V$8o?u&NkJ1{&mw>N z)mbW=56ix2dX&PAB7Sr?B=L*Mt#=edUd9QQ2DR@zn&L)Ht13S_s#1DhomW{yGeBp) zuvxN1_H#0K52zNDKwR1Vy0nB0M!0F>^f`;%VULaY((Uex<4S6ty`(tz39w-bRd3_* z*;KoHx7LgrEPEsAVf}}=CY6DWS?{lVol^R4VZjz&`J6-O14b?(){$Mvw_46~yA^xs=I-T#EPo6dh`WjHI)XL3{I>@T7(P#9z3mJ~PCm z&RzZWo!8f>H1zI~YO&RaAgznZvrR6$_TU-iI~S+hg#V`%sFiYFQNe-Uqi(?Z z^*Pr2i|`Jc#uBvHU7HuAAliQIR{sQoB>N)x!#xoeK5Y#V;+S=F+kx`rgjV)-6mEt2 zQrJ65E$nfzbI%Sarnuoa)0A#cUQ=D)7)+Merz!)F6wloHDJV}|L(ihCLEnM@mjh5R zJ`S1hXSc{Qow#3?JITf!f})MieiAk#EiTJ`veisc*awi*4#N-}ygCG(CS6PctB;ICl-WLt#SY zd~jOlUAhbdZ7;G`j(Tm#|EVQmuta=8zU^|$?+WanKEBz@Ezr5^%Vu;z1@O3i2!6|M{DS#P*rAYa6|l2Vkl>IPy?7Kb)I8-S@QLzVuJl&;!AQ!!~uZX(KCX?&i+2&QW{66I$Zfx8I^U zP$RDH+hH6@mzSQ@S}#42+=w{^gbF;5p6|kbSo*8lT3ot{6H+aA;ijDC#O`msjh3po zhQ|(~ETwPlD6VpSgIf%=m zQbJ=Bw`!8*!OL$KfsQHhpDXBoTB8y*k?_;-On}n2KSy!j;`|43?CiI?Tp`mICYu*54ENn zR#w+GZW5dj+(q8Ip0jf{axR%hLwr{#xMsfk4uEtpgfzGFDNN~caK3Jhnt5Ab2uD1$ zq>qkN`MPg|iwz|h13aqsPskG)fGem|pEc7RH+pY~qa)awdC}v_)uYuSo198QBr3Jt z`zk^hlJXilC+w$}SiKhYd>~d9Xt-mp#Ngd!sHMOr3t#WQ3)h_uHry&+ixSAQ@{IcV zx*ouhp{!HCCWvS|a@vJB3I$x&kTMDG{s`^|j;!60noc$6Fkh*5sZ(Zc>nzUY)Fj`> zRr%XPqCBpW)m#2P!q2{Ib^!ox)0>CkmrSIQY1n6gyop9N^Xp{+2DY|)iCIFLbyq3L zqUTa|oG@)mP7@syt*lFioC#T>QYyohtYwpbaB77#%1S253~5MPR9;%ViT?at(NO*l ztvKyI*mEvG(MzQT2X?EgdOq~XkAJ+1ZKe0ikGO1;qF5_)-rG>a<1DAk1HSpTE~Hjg z(lV!Wr&HBNiQ~~1j!%3JV;}Y|T(YB3IP#Gl%*@3Ts^Iu;N2+J`nwSW}tj|5>H?rtv z4Me^6DA$RV@Dz+|I<*>eer%JeBogSkFGEY8y0LAxYnU=Mv~3Q2mRpT2Cl#YTp| zkb!^7Mpl#y(~As7x(78I$zmliJ6DFWASm-RRdP}E0*xwg+!-j{<|9? z3i@Z>P430B4A{ZE1SS{obhOa{p?*456F=qMxNtc61H)Oi(x<`{>c6BQwE#i^2m{1{ z++CKAMVpC{3&dS4UA6Fg7XrP_np1aYNEFEHX0pAe8SK`w>?`9Yf!-0zzpZ;xBeF?r zSI^zqrghwXGzCth$^OvFeP6XLd3#~6H5|da-`1#%-kLO0x zLZTNyw89i6oYkPusET2*-02F-5>eghQdBZP6LL%tDlf0y;lE|$4}z~xC|gu&4$WN5 z=N3+;+3O*mkav@)9iyTZm^JmU*QoLa&Yvm@vkw9ldtKKo;XSG7pQ=X6z}VS*EXvDy z3HZBMSqz2TVt&2(q_1!r;5@BNtMeS#yYGj9E+$m|eM&cPClwf_-4hM!Jy# zPexC6re(PAmlDs~?Q41F&K5<_`wd+`Xy`nwz0man(bMwmv=9Hjj>k{qCJcr)ElJ*- zt4NxJEdMo@_=8ve^S#)&sUqB|TkEKQRaI4qI70m8qZls5%5HnD7bKUz%|XFgQ^BpH zpr?HwpK;lTpx^E8q>4n@hQ}uEF)j_y{qS@{=QEtu-D4H&7p2gDEnHci%l6vISX_mw zsYDvc$(9|hm3#4$#aU~cd?%VznpsOK9Jn4F@o)Kdt(eyyn(VlfQ~O4^$|*%fMEVT= zZnv*7XCbRDR9HZCd97g7=jeE#b*3(3!^2pL-H0=siYG*7h}Xqhkt#p1LOg8_~s|0BWW~OyF{7(pF`^8 zcj8h5gm7`darN=5!DHc0eH90z<=4a`5u%hsBdXjnUt)=ZQH7CKE=%Ykko{fcJ^c1q zZGSbTA*z-gXHy^T&?A}Qz8%@3M3~3&JqYF7c6jYER2!^wMA}#07Z$Q1oOAW8U7d#X z`O0A|skxi?%iN3e+xBHUm+DSsGnH@P2YS?nv!CZ5l)x}mKo)Glfr9d$xrAuxH{4+% zN{D3T0m(Tl%+%(*%On-ru8ZoqXlYijU)X2`t_MrAIoP94F8s>9D-V9?Z*BSU`L-wO zF>$qbMAz&1iK=ADZP=MBqLYw_9UJR@QA(ENW63rY!T)x7E#Wg0lxTYbJEKaB>rYJC zMZ*#nLaz90mtZz1;b@s*Nj+>4WbN_5NESQ@jA|0HS=wNmQB}bP z`Ca2#3+vCKq9TYuM4gI(o+*`!&{S&1_$bx{Wzn zmz*cZ%KIWhyw;x!EK|*r6Q;@Ts7S>~UsG*f80(^!&jC9-Ht&O@t;yR&S zWx)?)w+~5c2O0WMIGGq3Fs{D%gP>p~tCd?khaf$GBaR>OD0Zp|V}w^#rARQq%^(3A zt{KuCCr>aX%^LS4YZsRiLkqa&YzvU8$4ot5c%+*o)|apO&Q}%(3bCDV2YP}5ZP@_X z?gaa)x!oG?u~bb-pliDj9)9%X1Mp07G=+KWHy-Zu82QlWF^X(CkRIIXH@>tVYi5U+ zwcJT72Q%5?{=xT^frRC;YuypRIcC4Tz;2*iVTePzO&A-x@rNq;__sr<3de z7Tb<&oXgjO7q0sf;H)dfGj~~1SxMbeAi{(0_rp*>R5tHuDo8+(-;xHGPUk|#Tl}Jx z2so+$*sKg-!JWTNxn8^?V~~A1(dEO;s#~iJ5DM4ssJ{4g;zDz5Vs&B@$(Lh3GUd4x72b z#+EdGoARqiTjl_i&!ir!B`%F+=R(oU+(%_)P|=zr3a;E4U9Kr(rjF}Rb|0z7{>D|I ze2-%Cl;QZJS|_t2PuI~%%kHpASJAS%oyz{m3k<}ptW@6~4K>^vBjA3fQeh@O{J`YD z;nZeH2o-csWoqbn?ZOiXE6ib}`)}}FCZHB$qz71vEcwTYVrBB~a)2<= zw;#nKD+W=nAmTJgruLXPtb`AF0Q6F$>_xAqh*9N^ThOj;rn=t3ESr1fDc57AsTfL9 zx%gO5D@b({2Tp~8)Y;)#EO#S7z&!Md$w4&oG|xF1!UdXRc_)g;n8e!8k?KU6u2w7gd1jQ8p86A{5Z;UnSXnpnTR6;1xDHroq) z<7*t0dKB<;i=v|&a}7nV6>UXnywc?2{>{C87aqpMNeWaLm5%&)B(&*9N?|g`wM$gD z1h&j_g3C36=G^27`0HXW+dA7VW!;~U;gf;Mz#0|Vox!@CaJJxoUJlA+`VK8Up;Hfp z7*rZ%V`GRtySX%H(3zmMo^TXue{%hkq1s;MV1?Ay9H)qHdb7wQ5@Pt=nmK;_FCW4t4+~&wS_es#-Stab< z*e%d?Q^{#zC^i`E=KOH0q9(F@{Exp3b%rjsY@s>VrA6&6oa@m?eojUT!QV(J77Qz3 z)AKEIgmWij%U;!1`65edM1Bak0A2}TUG@E};7)2PP{ z*wrt!+Q90)R1&!|1XsBguq?x$xejx&2zbX7G&4YPRse&g{0V2SPRIuEV!cv=Mi#Y}ceRgp2f>~UPNd}!hj+ry0Zb6J@MDV30{a397*lgqxMtx#?6sc!cK=|zc^B=J<5=( zPn`Ui;5zm0%+jA0z<&{0U4Gi623V`lrhm=jpcEnVBp}i!GTd!UOPcw*#<~gjE@AkA=;J>}9 z(B5NuM%Ou8M%ZP;#2=v6!thH)e*CFxud;6FcV}(s<{5^))k@YlpXCw?3qYZ3b(`$M zF-=zUoIlr@gm9}DE5KA^blHg?2t?=38s0BqTigGHiF_rlcRpSw+Cl@7-?>!^zh_K5co-|idgu!n0C4x($&(! z!e1Gj3EdLfYToX4XB8I+0d0jx z?8qajJn0RX1GnHAL~;vsO%l@)EMdDyP`_1GY4*i$-@m_*kLcZU)u29Kp0<4l*AL=e zI$IKzOL1tiGbZ6)sZwq)`|T8nvq68Mf8pLP0C#(o4s`+9I0+&(&&R zj#D#EG%q4g+GOx=rxGoRlC0wJFemjM*i6{h3i6S*(1fo{$;}gCY1Yh}poq)sMD#KT zk1NH67)1|9KkR!Di&Ei^y~aamWWITQA$`?q>Pp%DzH!=6SY$$dPIbnj3yl?~&f z!!&D@m}U{+ZTqcZ8_MLS0#S1R9Geyj<=+r_F|r}=H0076AmQ4+632j3eU7^%5(A;q z;bMv7Ir1`%KO;Zo-{twIn26O=`Ou$Dg-TMNm5q?rS5hk*^?K%(txUf_#So(`W1*Dz zzF)lW`{^4AMnoG4-Z2(rm7jI4{+Xb8@&fWGsH5+UqO;T>6njx@ZE|IU^sidm`a!z) z+_$;9>Y~vxO9$s1nd-)>V~`UNE8S+-Cxe1FvF~ZrcVZ0})|%}1T(!!_;APY5CjsSm zn`9evvWjgmKW%K-{$h2b=sB{A3l7zo*(V2 zupJiCGXcwYrcnPAFZ0xFKK2Y?n3d(B+hg2g7n4OpBw&vh6&4e>|TAWHP zWqnR3oY{BJ?bWT25DL{D((1>O1XK+pQr^5`Q#^9w;F|`w#WhWJNxH;Mce~Tb3$Od- zC`UEF zw;|Rw%r6&tpTTda=Kk65od-OnV%&>*n{}EI943?{?Le_tZPIXY&5~cSCSKjw*QLBX znslAIM%2a2N=8*wqRk#0@srW-G0|Y=0-2h4R%I`{nU(Q?T6QuP#&B_dr_(|nRL0tc zRbSk{Cm{nJ+=$)*a49ap#ciAZPlxFvzSz{!iN!@LHXG`je$ex?*XT;A?Z-%ANE2PY zF(;Rf(jV@Ux7Agooen!q84Pj52j?vI|u#<2v6cA1`nBR-tJtADO<#v!zM17r~sI z==We_%Wl{9gG(ON&{nPDdq90mp*X(3={h_i(LK@SV8AY%5&q`dK)!j;=@tQD5(c4{9%> zP&^)09dPenJK$)a(_1T2K@&pDB)x0OjFpz?wHA%D$Li}}Hdr6U0#G#;HTAd&6%xB% zvwbzSRWcViU9B+p#5r^T$QIYHB23CR1HrV#>BDm#Nh)VHhJWH2qzMSVO*bE^R>o9! zl~u&I6IbpZ!Ipyirekh`SQ!KvWfj$C|0h3GYE5IbHddMH;FhI!wv%M50@rlAOYp=I z)cWeGI)RugFw8ZF*%+`P8v2d)PGZPju3Whie>ThdAnR}8$ne3zm<^HIW^94%oYGX+ z(st)Vhpu6IOdoB%?F03Uw-DwBok;aR>(1smYt$vS%qruf1GSD=@^@y@&V2D|SjS#yyg^r%LSsS{T)ci5R==?0Y)nSg8E>HAUL#w4ok z--DK{hmfxSL(|}H?MZi8DLLCiGafUN$a%IXp7E{|^wz4?Xwr~H-@a#Tt14|&)#aQ| zMBa}iSw&2olQQ?_Av^>Yt$XJ+t<*nH+*CSTQ`=bjl!5FH6Nk}v4r@Kq(d_LrGqidP z^T7Za2>c|RSE6i+dEIa)FeN=j?|GnN=~~PLp=l~}Cc)Oh&Y~nVB9sJvub#rxpO>1iuhP5cY;bx5H zsA54E+k-5GY`KJ!VB$hRrh641pRt3@*KjL^PqlgzgIM?B9_5}Nn4CQwcUnHbK8nYt zr?P@1P7jrXeTI5)y6%yg=^R?IUNIF}5ag4hzk4w_I7nD)Np+-REmTdsHq>$gf5X?0 zM@fw7dMV+4iPM*)kXd6m!(yemPLJHWb&IecDL+jTIc3U~^p-HWGtX>#Mr23FUGn`b z8KVhe+8JU;p{$P`tTtGc30?6rBNf@%x5#fBr7sQsEzQj|HZr1>ztujpJ2u;&bQ1y$ z44y_PX(rK-$z*3N|5k$q% zd}p^DjpkpuVc^1k=yKMXy{8TIs#jmS{mn^a<%oMSu&*f{=_(T*W4H0t_dH8tPovjw z=ezVSS-=&R?)o|7?tL-h;N?rE<_I6B3wq%CqO2fx@)(Rm+Z%->+)+GQkgG6c&tUXBQ1y2W4YK=fD%PVq_V<7AGwh}~r z`+l%h1uAK4`XPO0!x2t*#g-*CF~im!hE&lwEoGWF14Ks82gv=1LH5WHdq6RyK@2Im6Edb{h&Q@l=;{0$HRW@!j6 zPHbPZ;Dmf9z1b#4xUI~Wm$qI-1IB?*4HHL z8})!7A5d}SIpU<4kMx9G#>>~C0cltQFMrXt-TL= z`8+{3X?(0E%DBWZ7=s3yJJXhR1Eju&G_TiT3J`nRi z9DO`a%c$j1MPsIuvXN@kp2nJFIvE@Y?>Xz2b0J}e+%>2yi39LUGP6Fs34x2MrphA*>Q>4zeqSfUx_I_jDKyG zvMBGNaHk2RZWAP?&E(^TgUr<0^4CwcnZ zM}gBh3cpok^US$%6DFL8zV_7$u#0*uX^X05vWn?)DN8+jOI-oB^!`>X} zX!JnIbBJ$e<d_7I31yRs_ zaW0_MGEUZy+mEI*Z8qV`ja{EWB-jfh5)8rRtXkKMy$J7Z>3eL@e~!U230Lj>ADs-| zc7iguz1cp`zvex~w3l7EoFovOoeOBdo zy>1i%fGc`qq9V~ek+McPs*Dpm;2d8VjMTwNNJ7f?^O`;`W)pT|&6Iha8+!*0Mnd_m zBoKtrXm`b$rlibwSx!t-ssh?;vJr8Xt{t1Ffg<1*VXlMp3rcZvOEp{Rli*2sKay*{ z&X0VLnyf^#VCIfo$3|MY(Cl-eZY@B9;@9FQ;1`+(kMcQ$jkK!dFqi~6f##Q+GJ5E( zoYS0{BAB)~7z^$XY9ct5}P*^1U# z4VWa-9!5v&N7YmI?tQA;W9k4D5!q7DiF}ZB>bW|- z7%q^+3`r$gEk!X;6Oc$XJNGBZ4uJaXRAG89N4o>TBqpylho$8~uw9U!-(Iix2QqQO zv7$AA&F#}H2xScwSRQnli;hm6et+wqqq4`R+jzLTc!yDYe~0(4`>uQJdme(Nq+1JW z89gD#s{Mr=cUt1Rx#6Tji_iV&6rhOJM}>P(B^J%rS>}mi&RZMNgz@2~ZaKE|(6Mn>8)c>$f+Ecs)fkKO1A8Aeh8uBuK62 zoig~!NO3s&&GU&1cb>PmuUhSEgzU$!%D(h)$Y7!mzBkabI-nzvknsElPrkm7w2X12 z(`iU$n!chVkdNTZ5+%rmdQgtg8wKdZ4Nv4@K> zP)7XExv&q80*sU;J^P`^!PyM=kCd*Yp_Z=mPaAxHM<6bkhAHS*f*vgMxM}UynbVBv zN?jV_8~Z^&*7eV=P;VL4<&@D$$DLblgOgjnshcs9H{>QkxY7RDLj4;B1sMr;s1!-N z(zSD|P>Ef=POw7(OWvtVlqxgV%5$*GV~;w}`4i8KJAz5i4Wc3wy>1_PSD@HV6%NX7eEGjF#*oAZ^wQ6?uubX z@ui@vU-23gauOs+WQ7g2lJfn4kUBaMqCOeTkSWBWHPsBno|iD^;hYA$bf9*-&lSqPN=eeh~pfTs1r(n z4blCH$Njc=r=}=L)mg0M88EYdl#wPSTp_<(Lc0HFE!(LbAuUp}ZaQuzn#>h*1@RTM zO>f;gO*$}&{uqvlO_ba#hn~2)MuP3rP?P-usUoiqy>_=f@t|QQO<(`{DaD(I52rfm z?Yeeo>ytibxeLi@wa1mx{2~*5Zr$?fuBtVysWLN~35*=Gb6~28v>KGRgiCvLZKOHA zx=sofYv!|768t1VwQboH2je!<1I(LbNZ!kXC23Ej%Q?UqLG~`i&!Hbjj`QgNiW7CN z?kHmdeFqdTaIWSISl|jDuJD1%-Bk~64O}X+YD{&39wxc8^xH6>)x-H@=H2yt)5NUp z+$rCva#_Z3r9h-UY|#Pmlf1>$BCD&LIiovM9o%gw;o<~)4nYr1BpN`^gbPMx3-YwD zTvfHD$vgD$aX+{b>Ju6MW81eRiFh_Uc6d*Z>vEH_x`MPLM-HGo)MNl@#6USg-qPr_ z2&Pc<7JQ;!twn(;B)p*qtdfZmX@P=bod zz_jjKMTm;B0w+g*o#KCa28E#cX451@*zLCI$!vAx26JRBV!u z65t!w=2-+c>pT+wKW<_B&9wib^FO&k9Nw$GjS>`B!NQOLR@*#j$2)yr~6;t=L$izu^)Fc0ZF zU=>1YxaU{(2@J%K07ecak}~rMx$c^5aTvO8m;sAboSA%`QysoE(E4g*6EYx(9z~%H zITp)WgMwj%Hq9#*ipY@^UpKMfv(`r=r^`n(Rz5_UPcj<9buhBE{j*ieIO2{jcih3C z>8XioZz$dWXTBbAg7dO^ABAmyO2bovR&fjtVaez9k&OpcRWT23LU0!9PU7@kbKk4iXy?&_ZF5ixA>61=n&?*4(AdqUglEaD)hn0Rm}_6m1lC3DH$Q{CacXRAfOF}O z`f-aq@mumj+m{c^N1V(@$_A2>0c}Ls3ywRp4fbA;Nv^*5Y^1ZeCp|l(Hkma_GU_FN zFEstOnXyjJ92JhpE#s>VHVknY%n}}QqFIu(nwG;D*LI@Q8F0c9Y_-N@@A24_KYR?# zxlPSuuTN;DTR4Gbm|;!xblLt5d)>6!$=8twjJm6`20F{ED|h#FW=a=#eJ~k4_25X} zxDg|EeLCO~o>UpT{pNz@9i~#-4E;>pT6%j2j>k0~iRPD8eVn$_^};~wG$u@A<5EVw zh0pRliIpkZ8hx}6i8g4SYCboX^ZMR0V&3EsrI(nvtq}>QA!22yWwCnwFRvg72Kk|_ zh=vK>M?$^#gk`KUZtO6%{x^Ih`c0t&CiHu;u{N(Z#u&H1xRHg}_KHq$e!>?B*0G-s zSbhNK=T7bAHlr0%#P4&>OgD`}fS0D;9{?Oix(t>8JanKhD;%Gg=RCoGXY34r{8!e1d>D*Xb97>72#s^IUlD0qSc1TW$RRuTrd!bPUOq!mw^01 zZQ~pT7GBIE6MDpExpGI0*fEsQ*LRaGGwe$h1NXe}`tYOUA^y6oXS%Ij9EA`G>U7zf z^k)~U?&l5|N)T#IDAFsU4nhDQShTjdjs!%#28cVU?`wQV!mZcKiA8UX)c4U!R!y4r zmLJp}0hin{r!6~W`fliky!VPuB(9T@F~~a{1#(Ne&>(Qps2rPVBnbwB*#0Z}<&il} zhZRhRgT-ukFI`npR3EGE}9ERxmq*E9!W7LlmC?;e{;xd6#dXk8AW_bN^}Asmx#M$ z$Pc?Eqa%)UO~w8wT|hsFm94I!PYaHX<$X^RMze?Tt!Xbe=;kW*<2G)#oIS5Fk>cy^ zF`TEbkn9v=5;MFhMY6g#!mnBIT>giy&>WH6XuDQ z3Qg6lRSe0+~XiJY#w<@FStu4>6R906XxmR#)jxi z84>kQLlegACc3V6L`5j8WN#zrjJ}aTK;mgl6r8WRK0^9e5>!&{i@M{_=KSQH`nr6F zTW^2gai!wA!h&r_Q^s|tAor!6eA-`lmQF=xz4K5JCKf7C()Zn3wgey3DEc^lXlZfEQY7T8u&UF2u_b9(Yf|E_B^c-0WKcujXZmur(&C-s&^QL{He7(MpNei{`dFG8Wfd4y(kLS_;N|rYF{mpS=q?6ZMXJ zS1}Re#2MASjjO2GSQCuVN{8u>GFI;4^XEP$pMnetQVXc6W%|Vi1&Vt>IYwbeK}}Wj zmm$;rHFSE8uEKRJ_*nzMD64!{8C7&YbGlG_X!@OiZux3H_Ad4zcH;5NkbUWZWUQc($oGln5K^cR)PFjTlGDnlU`-G*lI=BN(5Vqud#X=B|Aa(8BeK;NWtcHmZSM*N^ zF;dC~6_wFT&vhMcfT+vny1u!ik$ylBTyq(|uAN2DSZ%z13Ej`!TsG5^hD0~g{=GV2 zF~&rCMpw%ahxus^Cuds1a|>ZP0tw3?OduVg+M|xGWL6QIryFaOT@%|;f;z90aF79` z$jyPY=ocu1tdbEE7iXH&R2=EW!~qJ(fkwj#-i6Jq1Y-Az29F{4NqW{usc2103p?;2 zmxM!*4Ok8dkdPL{~$tMSyC~s7LF0V(ej_i07?aX51Mmux#wLfBlhUHLS?_<$d5^oL^`K z%AppG>h#i`ePJ)j0BwI6CVObqjvT2UB z@8UQAk@2kHh+3e_UZV&Z5Tt8(Df^6t-0W4tUH+`342Fa>N=n+jsx*(yJ{H~$sPQ)w zoX^FllT<-rdYB=MwQBM#bVr$WPGP|?S8(WumF&%%%#ANN?j`J(_ZJ?e>`Q(O28E(d zt%;^apG@yy-w~ui)7Nd2&Ce^@MXXglkR^iAFwc}IFeJrl%=VIP5*JmWHS- z$(R!pdo4ipB1bdn>j+X^yBt}B?|>vu7HhOpyj}?7de7?51*5OJf(gjgOa<6t!WD0N z)L*zj;I?#L;Ss$1hJg(6rc~}v5DBMNzj=ry9iXc4Gg-hkWjm!Hp=ppi1U7p~tVSH^ z@DGkSYk~~ic6H_GLl2!p=y4n@}s!_&C*TCxI=k3k1`LvGs*l5G^b4!P7He?J5XI(S~7 za(1&%AWS^4ku}rfhR14XuQ#_&J%S1I;K<5ybQ6I2fEXJ@a~n*{n(2!Z9-~g?)WcO` zH90donm~;Vm;^*afV(ir@k#r-r~^oW>Skb`On1K30`j!h-&7$@Tp!tZtIzVB~+{`j58 z{ki+lal6iSz2C3#9IyBD%i`6Mc{%8(r^LR-r}nMX+?{O)DjR2)rgl!Z*hk$$aZX8g zskR~rxaIf(o(jUk1uM&A9?rVcEyL=op25^EB@5%;h&xl{2FU<2m`nyHA3l9o{ z2VuxooN=`_XgShhRshR$(8CoC!4>t@iHarf-5*}~vY#0>H!uNf-V0F~!g7ZN*@{3> zFu4s358BuLKwVB>ot{k2cg5hjO zOQydrgC;7~vaS6!{kid{nKfLpisB-}7ly5)K7$pmb7lUi3jD%@aQ;BCo2l<@?P)7M zm{mPyVyYsd(xXEbnl z@gxeax2~Ho6y1ieTb%3F)}xfxc&{(R^*CT-6gaW$z;Dz&ae9s5n+S!CJopRwFe3w| zJaa+ey82`VN2v-iItyYt}!Ddp5~m7TorozKS0(azFqx&o-7<0s@zW1a^CnN`Yw_yr#Xhb9KNc zm7(Gh7TPN~)u&px)iL~Q3*&HN(hI-_|Pq4y!Gy^wO`{Ra#&-bXI!e7Bd?|!un z{c7X@w<*O5vOcionXxN!xpocq$5D!2yN~aLDeme8t>BT2Ow?-E+1Ap;t~!o@x0FdG z)Xc+$SKnXe_Br#|AQ{Bp$UxG0rKV=~tMyC6QWU}N$QoPH$rb*4Y^EuX!IOqxfAT1i zf`^oP<9(q$97de)dzSqz$Lx>54b`*e2Mz@AINK1-RHofPkaqR$m&ec@9KPhcI^^t5 z`{2hTLw_xZg*yU5o{l({x!h?h1!a0Ln@c0 zS@igkIN182fP!HH%OA1*Y^2$$w#(oo?4K`;gNX+q9eLMaiY$3V+Y0Rt^Q@%r_Pn^y zAWUlQgs?F}`}FpFizft`Plz5~J!(UIKN!YZlYCvELHSwIPyrH4gtV_&Rk(2%A`O69 ziNJhM{HP1*8(*?@-?M8~GYDy+eAhT@s_Lq-_TWAT#L)WcyYF3_)deb_g2gP~@Ml1j zoXAQIZm#kSKq{Sn%aBd*D`7C}g}t~;s3Z>8=qEY^m9E}E7EIs%e}Uj1XTAxxdnzN? z`*%^Ir#mt@lDWhTiky=(NW)+?&r7XA+~_aET{-;J4E}etwyrKGnKBC&HZj+%N53 zm>Zy3DJLuqlH4x^jd+35*AyoXZ|JkfRtG9P^P`ED>oy%InsVB?S7NGXoGq zAh}e?Uh@8jn7BXe+B*&rYsdoyGEJ~LGP7?WEjTAksJ~Knz(5&Jv|ru3v6=yidX6?} zWMl+9tHgUAI_~Z&01klE-f7VJ*Bv-=7E!W~ZxXjtdE@fr`?nyg)mLo{6Fmn^9>N@e zZZ~6{@&ZVK!24YX!P?zmk;N=gq2sWR5zPkzrVRm|wz06LhMeCB6yV_fmHx@ua?^4c zr7)ft5IP?zn%`hV?LJ8YwgVYXS6IK;T)Iu52&4xdWqvOh1f% ziKMDs$Bq7z*E2VgYm4v$rx#Q;V^|Xdjx7#tqqQm!`TjD8&G5GS#(R7I7fKUBY7pEW zr8f2{)y!2S$l}Eit>O5=6Pp)}Yc{BLyK9*0=DtEYLb*JfTBcoLkQ zo8+U-w1}-R+9gfxI@p#5BDq|4ZTYUui-=(eU%-A4FMLg&>C&Z3PfnKYGduHAY4>hv z1BslnZ(1{pJ@|^!(z5vhTxnUETXCMZ-dw?k#rgBON1h44e(dkfJgeVV)IQ|w={n0I zUR8I1lD%NNoPplc(>vlquBDs*A*|aw!qpb)%a4yqNMss*^B0~xBb3=8C^$*w=lAt$ z=zFuilQNF_Y7&$2WJiwhc`Z*dsl7Mj$<{WC!NB>N@(UhSO|H46dL>q&6YWVggX4Y& zPiXo0Z25RU!+|=ERJ->C%b{30g~gE^_(&%d^xWbToC#g&ISv)mOrH~kWdVpB9P_FR zIMEwj^B^1$4|nKtk7umQ>9i0B>#b_?-39szO?Pr@(VXL8*<5l^q#~2P{YaqH{hAL> z#|pcnjeX<`YPP&`K9|3L#cj%G*Y`uKKWf#;+}vER`ho5X$;5+_yi}S{okqmPRkp95 z5SZ-AHxwQQAgY3Z$)PfRY;A4*ykV@lu~8MA39mb?Oc@HlvK`tZeL1wg!2g+1UArj} zn_CLaMl__|zPGu~lOHyPm_|_M78ZmkeTPl}IlDmeRkhmu`Lm{p$p;=Zrc~A0fjNleFF3%KVRCz{oLlG0>Jh zSmOZ!t15JKwx>CZ@K&JzhGn1@UPwkp#%t4)wKrD5&~VPjc>4~`i*MiVx)OSxYu=;A11EDh|fafkHiTNn1mjV%lz%wGtja((&t6t~KtfgYq zq}#JxEw*n88-0u*spn>?^G5!pDrx&V4-dYvrFs6Bw`K2j6G;(Oo1epeg`4nVhq8Vabua4Fw7?VQZTQR8W+drT*bs4(nr)gmD`qK+>vi%NyZzQ@i zYx1CMspg(CL#s(kr$h0OO&}1M#?GE~>H6|s@;J-e^ZOn>zO(Ijw@olTJ^jidy>k`( z^;!A(%D!7mNqlf1ylDOyws(2j(YEuoG-0$x+(cqF(ph<|A*2_S6mN3v*8;AVJmHoR zcAM=0;fOE?48*BvSQueD_k!S0?a%{r4ZCMOsZIGDM+`QXGsUeJMHilO8svPf3(=-v zisMt>ytl;4KASdz-6#<_I*HYW5kQMeOOXi)d2-)760TGGr@*1^pR0}sv|rmUy1hZ{BufZQ^S@?jI4Tn3O_Ui{bBR4TCt z0wxmh_AiId_uVLM($mCgTF=LNdgZ$mS-^^TK0pTF!5tLNwO3Q^@XYLZ+8i{A5vb8& zT>BKu<@7jsMo4Z!$Dp1vTPLK!VmK_IVFWz|+E1i_gg$>>G3zeX zgeo|GK`0CAU9!4~5EFDKwPRJjF`)05yu9HVFVHDg`#`Hd4NaJqmX@#)=V100SII9O z-Y4QAydx-Z=NL!^92fpR2(e?hf)p#{O4u#EpYh6}%R)=7*Yw|d=bSfwpeDZ2uR_f^ z(~;r_75Sb7;J9uv>96o7`ZqL1jc`K9ZEEUF4cU?#EVCC)9(zMHJ!=JIVg&#iC7|?? zEK3ME<8N}S#{KrfSgT-W%(c;8P$>;~^h2?%p{AA+A0IDD8)7*2fi9@K=*O4lNOM*; zws7ve3+I+u+1WK#=S6RyMIR!w`csoEIOaQxn}tOlZdnvE zFlnk&);BFhGT=fe^BVGaWrgXlOyB&hdrek-vgWm>zSi_+Q4DJV`{=u&Mk@W9yVrgu zFowvT?5u6u%UiOcN}BGGrAGy;I*63t6V*1JM*b5IneKKzNcK2 z{**4KE^$0Q)Kxi!o76&;`dB#ip>P9FSZ*Oi4GLycbS@fgf9NE>A%MzfID6ZBBDGet zPFqs-N2;&z(>6AjlrWPlsje%bau|n6ZH70^&2lQFlp!`E_P(<-BvB_U3@TB&dnGf0Iz36Ov0SQ!A^hv36Ge1r z?#f}e!E#4!X=(EplBR)DH_6G#D}(3)X|^&&=BEWNkm2=oZPm|luEB@ zj@RMc3GVktuAKWA5fhdDdPQ0Y)ghJ8gUYQKcU5P2#^Q2`xem#0KXvLU#?39QCD+_= zct-Mlqk#l1s%R6Tsf5?7U6&nEhTN+A3bzk=Fm(pU&ex- zu%DmNz&itB)5jz=i7PHCA3E5kZ!(6boNh`ZoKCT^IfKbl$Wmw!F;8o_?ai_ZK>(m> z-I|}D+Dif8s&AQWOUT)OWWu)g;qEZPUS-Fsg$hhgPMkqaa`FwogLKTc_QiL7bai9M z9w#@MlamW;=<4Dy_jpawVNGd1n={+Eh%21@y4SsyDTcjf>?;7cAQ5u9sW?ZgJc|LV zIdzOq%)onNMVMvx$IY14GJE~FeHY!Y3Vt69ZWyclL=RHqG*FXdr`JqqYs_{4qZVsm zk*De4;4o$z6_B&uK$){X_`PE;pp6f%zrUiQ@g9E`a0RnY0cCqAo{qtl?moiG}u z*? zUh*R60V-Wl=_aI}%gPdW$Pee{=53SZs!7)7T>4O4e2Jm*+CD~lN?4Sg`ARHA_buh( zVpgjX=V8N%ukLHUZG2Muu{S3pj=KBIp~>)gMh*37RT-~XA@^2IhC>4`6pg5Yv0&<4 z#GJH~V+fF%aUTOMp%%!7Dc>-Fq|0H0$8A=g&{vqOyD^2;c5ukQ9GX$%n6F!`1*QZI z;s{pXz9xt}mS@~tbm608?7sE;_wT!`jcZRWcdMvNe>xr+<$3Jl@$d4Q*s_fB3F~QXH>z;oU{9po42~2lecK<>sL0IqXq+Xi^Wtg zhg#kDbZ|&4DlR_J^h^H*w+uWry;7Sod)h~At{PF&{^9X9Luh7udHE=JT z9p~eVu)fAohrG(Rs)gLAd^7evl9v~7RoM{sULVw}^0*h?!tXGY1#G0%w~v9(Wl~WO zW?LX#9cD)Vgy9K%8~1o3cQ@e=efnLLerc5aS5}WarL=Yak1*NRx;Y}c6f&82zP`G8 z!Z-d7L`r9s?av~kX&7k{^|@;nSIlQgqWR1omyVIr+`NxFcrdP|h2Myi^O}ljFlFAg z1M&GO!vUb$C<->Tsa!m&0T{qwlf5JAGJ)mle{wfgZRi4CHHs8 zjrgA3J>*%~PkEXb-x#~TE2UHRkxRLP&YOF~q7nON8uI8y1v9yFw=pM<_+u29G@}oh zqt&8=-`Sj3aqO0Oe_(E)wEIeCJVwxYf;WZ;ik^%-{c;T8^?Gle9)Vu1XwX#_O_4G? zJ8MC-jJ|3Z5fz31UIbo?Y0$3pJUd0NZ|<8{iaZ0*pUY}$Y2nTKo0yYw1J5wC9!;nZ z5|%!1~%$Gp{QKg5jG5WlzGUvBeKbCnb{9FqG9Z?aIA&9e55%X3{kls&d7h1# zUN+^(_=$zU&&VYN)6NZ=V=SYU^{Q;JkSoX}Gv)4(@6*D+3c3977~Qj;liP!9aq^Nh z9oK)kPkPnA$^c+t9GlagNko%fcOjd>85@b0M2AN^8<|XfkJr9@G*Z#Os2=l{#n@12 z;=*-0WH0kN3^lET*ehS^a;L`{%%&~9`-zPF+&KaetG)QV!B~TWtSmXd0~azc9*QMZ zgsvK4QLAbJ$1jvX%&u=qa9(dQ-by=shAB%ngcgOCoD1TX!Rs-eKI};(-$zGxHYX>i z8-^yO8F`LJGDVl$_9}z*snlk)8XND7RGZts+AT>S$KwwawI8mKhFRn4$1VtI>^*qg zuJgfm!Fi*f1wLRbni{YzP*+wCj(0|(HTj03jXb{AtpBJx;jV9_s+tTK7`E*b#g)_j zn=T&!PazOkKi!=Zza9o_Eg$A7Ob@$T^1k~uS3ZiT+y03Hu)@9wKkpjvPkaX=#&)lz z&*g6VViv7B=9ZJQtA%z)(A=2(d^|u1h`dW{)JKwrG$wWV)Pg}}x{{L8SW&)Vsgnf z$!jSodJs9HyAqti@hanUaVTGCIYHIEFCX$)n3gVfIqU(JG=iO8%kI$LsDUnQUuiNIW zuZn9iGK!WueSKWt!p6o%g7FttQ1`&Y;n&dD@BZ!umWlZFmAUTMZ#4lrfeCXiuwx6F z#vQBIGQe~Z;0kZRKyD$cb4u!Dvdzmag*L1QXoO{`d3s81wG&_{(Jd8~(HYmgQZEut zoAkn%_ZZ8quJmXhJ(x~m|7+BQ!sh3Xuj{jx;yFNK>ASkR2DQMTk(377jTj&oE1R2} z2Z*&jW%h$EKmggm0KJN@{?xp8YHxhHTgY@zqWD_kS~FY06d=%$Z8XEV2g)4_-ung2 zIt!2V1{^FdDuOl%_89=Zy!Hb*LfgNV$OHG;^aY7t*tX)u0Qaj2dV(>fo2E@>w-Ld) zYb!U_70_Q6+7RM7*`tqdl$Mr)dCC`Qi?X0;XEJq%gVJGYL`_08D_>v9&Z!e1j`bhKIDNh4u=aP(8)qQprNkb z{gYw|)WEt>N#a0Kmj#rUB-OcPVc!uH@x;K~mfEw(6IQ>=_}WMG|BfC;*5zR$7M^G( zjEOod3XVRn*}|mkqN3ZwmF~TDCwx`FaghJ`qClEsJ&aP^)p1`&=GgR$qD3C11aVEy z_BhPi%mj2^RaI^i*Ugk#>duJ@Eq64Aog!#q^=i7R!z-^N#8?B+f9`V!L=c63}JsD|G8)xN|H@=&7uSpr4@su1IMV+ zloQDG&uT-N63aV%Srh zy%)s2zMRR~{kFi9soZb%wvUf2baB@M$?^frfWEC9 znpV5WhzMAfZ08iZLBEg%wa50g=bb;kHrRf661Wa_#V)fZ_@Jc7f}u3%7qvmim3`}$ z7XShZVX$UWySi>~E+wfT1KUOA;4c`~<#LQxB(14X{PsSHWQD8mG(dJ@8)+Xz zBWRNpBEiSUSFtuxFa?@&@#F?pBKCBkRCvRP{b1QNnDaGG?mJjQH-ZYH71aaLd{Pg5 z^i41O3TQp4xbJ?yxDYZz*$1IC3dw(~~4PP*9q@BK{4Mq4$8-%S&dG$_LK`~A0`3Mh9^h$LyUs$wV0H-4-D$Ff@TK`w3S@8W zDhbO)^O9z7Cx19DIH0DPiiy=@3|BsUzWJ$g+ggIe`}JqZ8rvvk$+N>PEy6WR?nwzV z^1{8FEK*YsHobU+{ltY^`~V3sHOo_Dr_vM=&1gltjF-J&V@pi2`bcnk5cm(^I#>H&;H3hz>g3`GrsD>J<+pvFiAP-u0AqRbV5cbJRy z2%*Qd`i&?mLPUd0OI=~b2{R0;FooY@3O^`9twewb?-aJTF*NmfzZ+z}tgIc-7y($6z7>FK5kNdn1UJ@b2)+RHqPq>q zGsDuLk06YoYEmJS&eT)aWWn9#JMi>(tbUk!_|FC#1sE_${=sx*+zWzyjL+se+v&jB zYb-y3eNkmN-MKdD3q|`#8fa>F(OkysK&4=dyB?XJm^XQg*|xrj5|fpu3Vl}9Y7zeW zf&FoHYwN0aHqa}qZJb*2K7~w2<^HHM{U1&UNKd@LEG^INP))WFZm6Op;p4a>Vh=E zuAAO2+jJV;U0nc3XI`}08f{pS#f-VaN}&?p(g>pSeIC{%>03$re6th}6&q+(!0+p2 zfRGm@rVYXM;|m@J$Wn%5NR9y6*8wUV@Sm_EX`GdlGnxUyvJ#BM@P<*k3NWpm19C|O z=w(lMTK#kKp_Rg)9abOPWIX&epH;`b4H3aw!A#%>R$*YWFqFlq7oSam3?h`93Ae)q z(x{=+(vI+<=8!%e>9TCryWBO5G^?H8h4Q&sa*U1fJ-L2aLTaz@361t(Myf9RXZ0(z zsY4zP;jRge8_aP#othVKm6-|J`b>c=O&j<7111z0N>tavLL%s~d!36+s=xsEaWxo*B* zgVeCFFswhmYSpIqs(#YuEDk9-`A}}w;o~Zzq!WmizXC))`VZJET&6J~2~t3!9wI<^ zJ+nfqz^_o6%mEvP-(t>=dXk&opHI5Zxb_d$vb(T*|G*7w^+`E)8aD|9aZ z1Q+j%e-wgWOy}l4la4vQ+6IYeGE#bjalKy8T83YdZt}?49>6 zetW?=RXOS{2YcJT$`0YVHdpk?{Zn9`$k4gOLkPNi@ePT&FMqV!$b6iQ&;7H3sJ4)9 z3qObUWyMBMX4~A$5=)~%Ek;LcJ5*s8i-l~=+D{=w0(mLtZ414O%hxY+wmZ8ci%sCU zC(#v-w6z{6(JpZqUdQe$suFT(?1j-gPPGNQ1t)t_Bo88mhzq=F2B)1l4Q7pQpodD# z72d&3)CAa|qGEl@P)|>9OxwaDV{u8?21W%4Z7yHqwd>CFQVxcwqaQ$6t)+<-m`ZjKz+=t|pV{|@MM!uVTNH>JY0h(L*b1)b^ zct$)j5Q{VbO$5|hCP+vv>DTv65DMIb$XO|E!b!v)I3}bF5e=xW1a#_32QHaKVFTJzHOdx zJEoSBYGe%I*agzYS0FW(VK)*2nSJOdk8hTNpr*fA3I=G$f$}1@vY+bNvW+>&x?S+eGQfQ^U$(P`A!VAQUD^bb1imxdB0m!# zOixdljmf`N+$`2X;K*5C|Hi+(^*jc1O9RI_+C(+@ZDEOLi8o`_DoD@*?KQEg5psNZ zCiRKY;^O_Sv9ZHDzn4C4)d(=TF5qU~y3J1xtx$5oBZG`g z2xHl91ZbjlRom9kfi^+lmy}@$kw0<@!QR+n2G|`l5H35P96nQOQg;9VYz-*2a4U1d zAl?W#?%CYZqHbbh38ET#yq+gf-(`rpjNiJ8K?%Z4!3OS};ADwe(_Ii?ywxnPwC=W; zn_(O%qcRcEfvWy>1D$af>mUI)LjiA>hj3<38jFQh3HVhB;W{+a*)3N$(7?y{4ukGbQ;3;TT05n8}~#mHSVkjrudu zCVv7V8S52U4SGaONr_9r45*H7oDf}3K5&#G3(Ntu3(OhF6X(F4JeaG5#}t*_I?~J8 z;Vb5$N96D|7PcwN!Q|^bIu^Tczj(0rW?)(8MNElY>;X5*+aBw3?AoB9u3bl$5FUT(PTkdF3-Su}d3y z+%k}bL*)j=(%Vp+wt27#VJI&1F-o4aCZ5UTBgCbHC>m2V$mcXQG#E??j+OpOvqG!% zo5WKi3QcB9lI8(UOxcMya_(PsZ5Vo|n&(=+GE&a+#GU1dN#AQCXwMED70}whe?Ke7 zrc?Pi6h>GtQWs9!R~f*jL^vD}_qu^>5}LclUcTN32uf141>z|JIG$61sYGCMvtj5s zfsr%92CwxcnPwl2^b*_kdw=fQNU^Wk^E=-lcQIKBq8A!n&14dni?(dGY~Q%B-PQ16@<<-kryN$M`no?XUqEUN#)nW4-KZjup!h z*(LkQc=d+hHKDcd;iV5e`TNiPvY-62P;_0jH{Vd7!zJ2A;$)V7`8;6+TM6u4j>F(P zRbXBr$LB4^dieNMA2>mq%cc0))X!NNpgC=rZSx|(J5{z2Jlzfu?{(O;*rQ9eARItF zlLWyx85XCCsMoS8FV%2C!%P2$R%jNd!Pnn`q#!78wtJwDaD)vd1zR~9M(Ju~Rl=y0 zVzIM@X=ze`#X@9`SXD+4-^-zgh{edggi}Lb{HXwZV|=&pRelA*_dB*1jNmytsMrXE z7tlM*Rm@k+0Qlb)Hw?Gspk*oYS3M<%ci~HWo6cM zh{QUT9?D4H!%?6=#zVy3^j%KuKss5#9jTzlns_w=U7T-d*TuA*720IRgA4fna%qH( zgF^}FZz>j>bIcTN9gSh4)F|aWk>!HG5DMus0}7Xc9D6J;jzP!w;6UNz*FE8LOkdDo7dw-M`CX z6Z6dXa1{r<0BFavnUpHH7#jpn2eKTxeTwn7jivVMUp&F)H>~5)BUGl#fT<`zb?}m* z)N#}ZrYi+h|9EOk9@3!h^#LI=U*58q)NKtkyGdS3?q%Dg?`8g;7i1IJ<8j(qOltJD zxoGYniT5F6*ytr?yw14AgpF$SBV-xMkZ7`DRkF}W<#!0aJDZ^Mo1%B(y;jdc6_nvc zC7UpUMdd)Lab>XDdH$vBe(WkB@!G)utCuBJ&O0jXmqVQ9!R zX$8uA28QnS3Qj(_36t$KEG#UF#m{md+VjC@=i%%U$o*?kz)6h&_}Csj0$RsWRi2n0 zIAtXdm>FdRL=}yx)ng-WUJ@@vwy4~G+uS|2rKL7;x3r^e>WkbpD=IXWdatUQ8>S-| z1?!v7;#W#9F}(^8P5t)kZshm#wjXK_!^eHtb=ms)0X0uzY-yCk zoH#!JYqDW+F)aFZXcm;BS(ZL33EW?fLQXHaKlV-u@4EFvG=}2$Wz>dpMiP$+#G9gj ze|^LG&wJ=pyK@h_p|-e0#9j_<=$4jI`*nnYN0JF+s2P+M#CC4fG0Guq%vBrd+l+PnE(==d)Vj?bixFi+1)oYCy5 zmW#2D*?FepBJFWIp;SO*VfXJ83YYYysl2KxCgkMS*Aq3p z!54&GU^Ipml*!qN$T46YjTGS07%eK)K_c`x+3zC`f2-@J5=w+u><_`Qn00-5x^tM=4)&}nxwMn9-n@D-lyNtHdp zc={?%eJ9r=ZwL^4{TTW4_v`o-Q*?$BN*aQsHlJnN?2hcUW_y!!|05h^)mK7pvn-PW zo@DUuY||ikOo#~d(*zHeYf@TC|L61T+7VE4+)6nDimp3;79rDB>Qgt(Kl1dHtJ7W3 zcgcm)BMY!`tql*9t|@f=U5x73jh$cp<>Jyvj_>vs71x(OrfA_wa(@#{<_=np{Pl6? zKlG}*Xl}O&LX(w~pYN75<2uzLK`$G8TZA@xRSee+xxH2`KetLzeL@Kr7No$7BH2Yo z7DON^B<DXs?VHUY}J@YVb#p}E0wq-{w7tFj)bRK4!;Z8T2) zUgwv!WY`T;obM-2V*kCM-+z9o{c~YC$$1h1VtQjzw+vK>A~=(k5MUenV+H_2RbaAF zG)x2#f@pOH5nH-zH!#H!l;_3rsvpw z+g!J;B~wrDWt!`>LAF+_DMF^T(^Sr_R^#=~)a5hd<08B5|GqU&KmNQm9X7x$$jb); z=}f#rPcI3GG7c#gp(SdYqt)RCo+lFsf4H1XFC-2K9Nm#48tP;=58TS@uh0rtV4lHA z7g(FG-D0du+e6*>%0g=&B1gPS->lf8p|){3f$sUDO;QXHiS#6qEtT?lB0IIDlYPV}4*N5BJA$0 z#{L(mk%cpn8xvgzmmak@RpB{Gg%5P{x2I!Efo6?V;dAUrbgnNbH`u&(NS>B;M z-8|$+?%p41@=PrLFD&g`+C%)Gs;e70&TUs{LliJ4if2E!aMq;3^fpP*!h^A)5V~TN z5HiQx^8)-N4Hk{AA|$azX*+bry%_B{;%wa2S`-8F1e>BnzA|Z3l;^nlgf+k`gzoGR ze>XbJR>B5O_OSQnVwyt6I&vE3AFqe0C;#k{?So6T3aS>LgPY+xU}U$#K)s_2C!|y& zj6M~Q*|QH^iX>iGcpV2QC@D=fAXk{%N1n?yPTp?YDu}Yz%Lj3wtv>1c{_8J8tyf+d z8MO&gnw|~$#P@dQ9+h{i6;uW@Z}S_ny+veUUyYoq`llKA_mZy2{*m-=#NExqfzHO2 zh#gh4o(@oo!Y+5cs376fs^R2N>(*C=_uJCFD&S}3P9gP)rlEGKH1)aZr-Gc;10S?Y z-n}-^bk!s?eCwQ$+;1vG1Xf0dT~d_HD+^`BA2cJZjL6hxm+f?I8RY}HVhC`I&|fbr zslP6U2LK6gQVu_YInCW$gI){taYCCv0zwGjx($c$rw*Uy23c;OLB@1ThHaC7dTg~_ zg;vy`;ZJ)gB>)M-Mi)>v54P2D9Obs%B#-$W=-~f;`M||L)55?}B6h@M%oV#(KeJ)r zh{HreUs{Uheq!jP7uA z!>o8T4FWL&Y1Ve(e*U@};ol%SPMzxa@8$mUXTaY7z3Y&0vk;1)o?;W=d{w2-vL^5U zp+T3yP^+%1t1Gqt9)y3*+g<7)3`~LPaj9HK^<4)yo*$nNft<~QI0ty@X_gCj?-I~K zqZzJDhs9#uf}}mc$)U-hDK2QuQF>pjtw-*m`g7JVGWE5w4W# zfP$lXi&S9yy)kqjoXKwgoEtjqnR3UDjOR+RrT3!}H-891+K_=t@>WF}TJgo*$0Mkx zS2Y-(A?uY2=bU!HT~yf*xYNn_HYj4DRug$-^Y7LE{?qCEp9O5P()~6hivyh$2dHIg zp{dG%rD_L7Dkw}5>zNR-YAGTT7yRbpaR5V<1x%hWDU0aCP;t|M;Y}NeQB=Y!4ErUV z`aWOSr~%Aa~J--T3On^mMc3rCBXn^-SrevbxFJjS`!g@;_ha%CyHuK~dEHMCNzqgEFUsT`xYMm5Y*U};g$P15Y459a30RSy&V=qE_?-?Ha zH_r1NfQR+hD_G;tlCs2l1jQKMOv!a}2o+Qu1~qbyoZkAy z+U;u7gxmJnLzgFq+gu+*X^b@H)159PmZ_9^&tcwtqCn8R>+7PfqO(C#NIK}B<^G>b zKJNbKCDW9lxe>K4WJU?VxziUG2?QI_ej9Ug6i}jIJT6}T4Sn=RubMq~z z1xI22cN`MB6ad$gvT(Yw;~hoV(fn+6<4(Zs)kV{>U`j>E4GoPRX#~7M*1=aaH#}_5 zOpZu>r1y8$YRBsz^#^tQWu1T$4V zV?4?1E>0ev{JR9&^;d1L0}_t)uP1!7Wa&0jKmfn;R{3&h2berk-~;GS#xDhGs8Gu8 zB4U}8B$V5BF?aP`R<<&Jv|$D+7pMwaRwX($jU zF9Nmk*$?nyx7Ka56T2J`K_47WkED_8L^7zv&D^wT!>(qh$3F^P_ z+ZWT(e5_O9sa3Rd9=^XXUV#120^O+(fE6grwGHk)ef~lLw%TwOGWD#Sq%5)^1xJjC zYXI^&PO}?k^NgSnLI{pT=z`uIMt)&5RI&r%M1@;PKR>=(9C3cVch{F>uKLDCmgz7| zZeCApo-N5>+8Kdf>@j_59GdztKuWQNaH35Z@P%WqLCu2yC~<~2+3I1%xSP6(GPC^c zshd8D$iAyR#jYrTCFOYP@ms#o`)SJv-*f8l;QS<)3S z2B6$uk3&a+DV$2w3+?l>PIgBS2yPO>$1^HDKxRKnzIdE+$0p}W!X)zrS){Zd2G2`VwlNop0H50JAVJaJR_)&U;;a_ z<)M}Z+KhcS(gLNuTneHqLs(vT2yg#Fo8Ex67JTxgMtbp`y-MxyRsx#5L0eTYFF`~E zj_w*Lwpc=NQIQB4+4rj5Qz>F zoZ-C4Ua%%)ig~ZI9Iex!I}K&C*{6v}q$!EAGr&wk{5D@}t~alz*w19OqGMzvLkj({ zTe^YJvz2M{pk{#(HCXB+Lg~4N^-ubrT=-`D&*D>nmBJK+=Q%J&Qx5UX0{P4#?*-U9 z@C~5t&jZcsDRape;0-5aXWDe7$*)hV_zn;TiNlp4Fj4aiLTU5FD3ZQ{Vnw2!0>P%b zqnbI8K4c;{F%>D6o>HI7u0Yr{vmpDtqO!?#_c2;Xie2|XxU5*WJa=5X5)Wmc%rP~h?j1;;s#D+l9Yj|0 ztlFKu_BkUvz3^Jbc&x~V=VyIkZN5M~$U$JD;eA$S)!OlNagnukJ`M8E%pdv3i`Q@j z5JW1!$2%7}dm?(7m9k$=l9`mNf;-~_kD>MvS67DlAm3*B5e@B_2t^F@KO58Oug@a| zp9g0Aoq?eb8zpd#(J)>f#McX-&busqHU|0CuNz>+re}Y44oumwVG#&Bh3HK*0Vh#e zvl|>eVwM2Y=8Et;kio#A;ucCL%|KSf?R9>#DvSSIO*V%nsok%t3XRUS?r%TAS>VB& z4>8c{PV{bs=K$p4wFmpvwe|6oF~PIQhxzj5#|T@FslQjyT<*oY-vg12`ehe|X+-XL z9fJM9M+<%NXAwhh1UNs81+M^_yu8=7Y8C3O91%;#yCA%RsFDKiE(sW6)CIzC@5XXL z#JcI+&JRwV+kk35yk1L{lcoTy>}>#RaK4kjw4rF}Z02Aq_1QQ8n@XLIW{6MZEoYlB z#He#h>heB;OvmGscN-qa(s$q|pKu9dczX5w+8N}+zMRBtCxjb|!tHnZBGSHd04JoV zpues*cGalAzaQX!O>>zAJBylEl1SK>UR8IXfkFy$R5vk00+b1T7?DY$*km ziDX$`NeOR)bDJO)*PVxG?vL@izOcYLxw97_FD*NxlwOGBh%odso)7Y>hM^7!YW__> z0nZ1XRZO~S_YUP#^)Ky9z;E-CTbyU5k^+2p%A@-C+CV4oge-!U(i_68V612Psj^Iv7UX8q2O(v{Ha&EfOUA2mn*Q zd)JlQM!NX`8g_ml9pNjsi<-zw$TWKufd(H};b&jeEA36^)T&mIV>8?uut^CK)tP|b z`#kTvajZQ)>?$BH{{sWnZcF@uAJnS77t91&bO!8cVa_Q`Dv9i1hFG2k3c*(u3d6&c zrm-InJcqKngi&&O;Ts|y$gwx|14P0@o2s}su?ZU7{GzTex#tcoe^h82oR`kHUG*%1Q@SV z?r2PDxeGlo;V9nD3+yFG#$S9oV$JSmZZ7=i+0T?@jBQs>N)pNTXi!i$g zyCRl~Ri5$1$V8x3d#myZ1Jy48r$%vdCiec{hX7HKtLtH)P09sWt@1RzyoCP2U0>e* ztCxrb+a8kbA@ccb3^J3TYt#o*au~y~$Jnt77*+53na^0&!eTC15gZoo^is8+pGEK*BD8@@3bdzmP`fXdiuXu{Y5&I%7nG9~B zJ_B%4j%&Uemajt{?bY4eep_v$jgZ)D2<@>ah(p7dM56yo|5jhH(eBls=y;nBs_zt9 z56d3@5e0Y6exOK2GUvaU2hNPFHwQMlNAiRy3lWR(Am(OfKkA)kBUg=}@2OZBnBfK6 zaxB0pJ|UVqI$5x(Z@@NYgceNp5Pd2}YR7GS#M!7PH?p`S{r(G9TQ)}ZnkvRi64_gp zDk4!xVOj(zMsey>O4{rgkd`7L^8iKmVN3Jh&%x+!atBH1bBy19nHD2kSG>Dxt>UklL1fCg0x;6GSvo$;s-2$6N1CaNm1DF+>fuTlC19Og>`_cY|5Jqv}x z%6^2>VVftQ^lbjbrg>`M8bT@SXjwcZS7)huD1!De%Yx&7$3M4s9?%IsY(r)m zg5W02!lr@Nrsr^5_^Y(b1V9R|JBburA>)w=qmk?cwPe_lDA^pFsz z5FA4Z@!%9yl#f0}NX7(#5(B8@zAQ zKhR1ux|}lCa?d;sSW5vqODN%$L`G6>sAe&m|1j_fP}HJ%3=^g3gdQz*7JS5S{vdm} z{-J$!{XY{H=ij@SHusghT8N`k`CFIJr3sc*I|}!l?-gBhg!Oz^YA`f4O@Na{vxMlX6vBTh%G8@#*2y8PVAW68@;Grk_EP0u?Bv z-TI%M>=x689kQvLnwz05_k_p!uR$N9`kxzP1|SSXr3Q*bz-NOfYnesP0l1`a1;82x z_8}SeSRuf+p=EkM@>b_7M9~B>OxS^tV; z|J?5)!SAqe@}>UE*eYQ501AyB*!qB)OfJCnL1z91%teYhh?ol+Be4^!r3mXZ^p!$Z zXgi&WW;Wd0C;^?R!I21*E-Pd$0K_^v=^5fFpjBqkecAN0U-Tsik8w1?%n4HnWSv_e zg0f`bDJ2#P8i8YLS9qzJP;_%ez^VHatFtUfC_^+ z@lkPKrU4a56qXlKyiUg#7T&H~a-SzwuJq#glO zZ|iNxUx05Aq4$$yoX?ymj11tzvpaJW>bv|cR-6yp9N?z@Lj6A-0T|wyXfz+vrx80u zJePUOV18#}92zM(*C)Ame_@vYdY6mWp!9C+16X1e;FPco)ne1A%%byV>ewoPR|0!% zz_8~4+;v921cT9`ux~7Bp!2LQyxY_^B}lvZ`xkvcT;2o+ea}PI5O|lkz5?wEIQz7e zdJb}32lUJfmlI`S-t)a#F@TV!3mk!mz{mmg8SMUwv4Hw;_S~t@;V?L8CN{C8fn?AS z$WItY3Kirr(mjJ_3m;G7PV`Jo@7y$KN@$<9ZCl9BF4N#loPuf@1;8^12b&J(%Y?~1 z;8FfR*ZK3mMi3}rpFl!XK<=$51ohO*q1S-T1|*o*=07Eg2KR<59Z6?Ev@q!MC}zCj zI}1^ZTe#hy0pado1o*@7)pfn1!^&UZ%QS*H{HGn`U z1LTBYvVXn_BMApBczyt))B$>#3YYkLZ!2Kb=qntL>*Eg{lqfm&90!=kcW46in{>!I zKx)Z89rSZbtP$Rv)R>D`{$}LA?rUu9BsyIME^O)0zT?ka{Tb?Z_H^-nJ}iY~LO^9@ z{f+t8cY8cT!T>#B$vPIus13(zJplxG;EFE^x@Ld^JmR*$l%AH>VIaJ(0wknwKHtG1 zJN-9Mr2!F;$?nXwliSw%o`qss@k=vB2*AJf#_JdJOn^w~rD_D&@-+$0OUk4!O3g>~ zNrGhX9nsVV2n=H z;@5)$Ak+8;r)r+gyB|N4j0ZttZqhWAE~Nm_A&?e8!K)8)zcY>xN%GV<4^h@^AFo~n zNPjXwBj5pu46Xlk`Ehu&R3e(xZc--wH!Uk!|Z9*}$_KB0`7 zpZoO=a12EPSV@K5Dj~rF;Lv8#GcuZ;ENO7$V+`bp@IcIGWb|1F-!FO~ka~;X0BviY z=YYFW$+g`7#dfF{+QXvD$8G}V-+i$)(CJ}A7CJ0K^$^d)dM7-^c&RGRe7!GgZ0n>b zTeR3g|9|fL;e!((R`p%cOX%=FAVR@wLF~Gvr*@eFN(=DAljOr73P3kCEe`UK1eXWb zNo@c!@l1epN`m<_-+osMvJ$g_ii+!Jov&OXg}=XY8b>vJT`Ixa4_6dDbt1cLT9D#>ZVJysjBL5IeE~HV!}( z4DYWS`1?_AzR}qpL0*o~KFW`8b8K2%<^l7^f zWNoS2!ji2NBsuO7E2U#^X<>8OZ+m0oytK*hLP#-!0KZ&DQ}f-xJ7~(E@eAq! z{RzcTtxS-nRYG|&3C$nI+^;)2`3UVo?M|6Rd)=u_?dxsAIlx{-eA6a+8n~P11K*M7 zGQV5*wL+Y4&q(v?SAs8oIXD1jnOgv91joo60SV!J{ISamNdD%1P1r4G;WUuT!{CK_ z^*0XZdyaeFhZ1m<_ZjLx>6*6PIXYlv1DX`0mjetfnu4MQeLp)+C_q`E5{GNGxGlHa zn#DE!P;4Au_GPXtvOPTGk823HTL8KUMA6&mq}%^_pnu+kp%+xc8FIGr+Rk-8g$Qdz z44-n6#UoRkUhH!KxCauFfi32eh!o!Ms%m95fR&z(uHWEJyK@d?g&)s`ZVQZ&>%zm(j?X}_c%2y#lXNQupj=oZok@Bm|i zBGqEYGMY%KUPO;|p;hyXtf6AfP!KqfpCBq@*tRCvgY=OT^YZwc zr}FZ#cKI!p{qv4+M1`Q>_gN9RPX@wRAA?mK0y&=yEjHyr<{LmE=Xz3#`~qNM1fK#zhs6qim1jZNCp+I(Gy&&@3Y+X7P$Aif50X`o* zpjgqYD_C(Vx~=Ez$>mGF&3eZO$ry zRWA>OaikfwxF`En?O9N6NjgT6+q?k%fn+R?ZR7lBuwQ|43$^g}?|b_736H=DhL_c< zngO(~a$PA^iQoj|R3|=X#OQ!Qd=gOqC$v1fcIxE2Eo{UAoufxF*@@Kfu1VHQW{s@# z?kgSRI~JC{Jg5F7B)Y#4k9CXZ-5*;>;_)EruqPvaPybqvr-(}P{zz#jhQS6@L9 z2f(P9`TBclLX?JC0H^>oGN8zB517UpTg~aYmZmEJ@QohA3Ila&XI9Y7%@2Us#DPO3 z$tkGw{-Km?$#6EL)d!GVYX$O8D)na^J?inHE#m_lgk8GMutzQchq33I3Z#(K0D#3+ zFJ8O=85rm=LD%OcR-~cYrk!i)ng|$3{CNHV2eDpQvaOiXo~G{ep<%lg)!j$wsh4ng za5OdXZ*^R}N81RyuNVuaCR&SCKDc^^Dr+!bwYQ(9Ib$Imf@hymusfCLXEEk_LZP(C zD7@E9EeG-xCTTV>6qS6JzL0)TtmDpLA}b*KXnfrw;U(<{Ea$5N;til`jnYa4L{t*^ zl=>mxpSSe;wRZf3h4B0$1_4>-HQkGx2YwXoz_dbM@SYfG{DeVOZUdQ<6u3b#egWU2IV9l(<5U*H(y;g8>Mv^PGqKBh%)@VE`^P3>7Max zneWerFSN-%)6`7340>xKPGd+{E?%<6A2_?e+KEmp$HFJA}KaPpfT9{MU0r9mKOAvfuiM~ zaBRp554fT8_&D}ZtEyz8N)Y$lg3?E#EUhm_m$iEC(W-xGFB1{sHpxWT1Fi%xYRigd zGfz)pj>!g|tVTT%5S|E^@K0=N<>$qM36h@9Oa&;25@KGLl!Z-f)CTn#-+jQ_r){)?Xu+u~!?NsHE$>+Al zuZhKS6xjzdVcr^d;L#LoCTX>}Y;3AEu2pD_)wm=6{TkH*P|$Kk0?S7#2sv=Rc4ygh zeG~t?m)*Jl1WCi|W_U0f5zYPoq_(vo!BBX4eji%}WNfw#HE<|@XOZPF z^=pa!{hJ=$Cpnc|D=Z0e7fp?GiUw>m_u{>+q>itzt9LU| zNC59bbyHFxY~F|?A8EW)Y`ceYK87f16t@UJ&cAUJ=VIzH@z+$!393>h+!-1o1B4OD zZsUOzeaLY&JUpixgm3W7T_?GKlTFKbWmx4$(2;t@kS+Ai)n<9jn)CClvTfrJrHT!P zcTA=?AQt)mTtQq=68`W95J!XbACOeFdI0MaK!%8yL&dDm;z4G@;k020aw*r}@*0mb zK;_(i8)ziMA4scQ2kGy(#;<&`Sy9afY5CbNXc{aZnFJIom~~*$d$B_5ii42SwEZ2u zhGIH7C;!Kofi=uEC}#?{Iq^y}Zl;HZ$OTqM#i$UwD)X zx;~TLcQf8h8ZHZw14DIhB7gsdR|{ZbN`i)H1HczH?v z!ER0@WxvOcN4r;9gJbP6`KUDyv>dMD!vlVBWpxYQs?PQsd_fXc{`E8KvltMjeEZ_t zg$<6x#Uf2*r`ky~b{B{Y8)k0)X!&V&WM}^xE~s5>OpBhq&D`qV=*e^Y%G|)};U@1JwviokL5-0wAmq6b-7EsWfvj_DywS zIN`hegR=6F;=<7p>d#OQ4{?cros>!xWlR2rz)!mUbM~9=9BVCoB%6Lfi1p^e-@E+% zNk8{VHYb_aI}eWE1Qxk&Cq&|JEA0qs1v$AyK$lkoUHG&A&0@&i}6+o4Oq;3kc4 zf6*GK75@d6kL7~L8IjKDv=&GU4qWKdmsn47bJh*$0OU$1%VlxCgq^d1PiL0d|KxQg>v>?^+x+0j95K|B^+LJ6@rCtKq?xghkxUF#ZKU37> z@PwOP$O|0&0B}%#u=e0Y?5G2~-MtFNJHsS<*9#bPUHAu+9{a%htn;q%^ohNPl~v?F*1KKsLdKJjrTXNKxWz)kn6azoP_-XtQtNP3z0Zt*4+P zNvBJ7QcGQHIrX0&4Nef{uUScW))Nw3ayqW*L8N5>TA5_E3hk3Y6wl9h{yzAtBA$%bAbcSj4J@go~OVbinNxwX7}CbRfh7O8mCPqNhb5x&vV@(tEQ42RMj0<)vqjb zDMJ)%2;vkV%F(J0Td#ciPelLq`^gx7-3t)h00lOL42@XS+d}P(M(gJDqllgGgE=8{H#BCwtz419Lezrjw8sQ)2!YJ;fOK^{n97)(sl?d8$Vj*dXg z^O3|qLt2L-mU~A%+=f9GgP<%5#?aa5g#GJH{<<5FHz(u>!!BenMGiR7M+R_=+irR@ z@{i9S1D1CWXu{@%hU(tC(WHPS{riA|w9&kv1meZ2x{N&6+b-DvHD%H(pQEGY(IV}U z(@(v+tCvuJ*!}2)idKOwyx2~A1jy5601l*m2K*$M;(y~!yVb8J0}#8HFC)MSsp8P# z2OL1be})w6b(yIhI1qf4u$uVAw1IBsD#f#BpuOPkyp45oUA=Y5>rRin95|wauV^$4 zm=MZ?5;fh~XBq6PYoSjh{zG-gF?{;#@68~(SW#q2F|YUh0C%|=AdQ1LmQEXVz2}J4 zzakK(CvP62YyP_0O%twdVpWbiC{m7Pdu)3E!ZKJ4^|zWxGqzUA0+%^eQ#WpPHDoCeZ@7h$x*eG?17T7Ld$pQ3$db@E>=oUz;+ z{SUh$E0abmkKTe!I)bxUv3LOz2u**tRsd+i#MR$tGT0&5;FchhM#!^GZE~O7vr1((-_mICrn@ND5|pTQKfcOjdz{0;+Yn%MgZ%GYcxZgWcknp}Vja&U9$>WCLbmCU z^G)Uga7@u~KimWW_z9ctpFM~Jc-E<<7Xvi)_!&0K0rV}QF{wOlVmsr(&N2T9ADkE= zRQYR3ja}%vepZ4s?VGaM#~xL9QChFjWD4V8;j64fN0J|c#i{8(?C740(-$~s4 z9|Z$u;89+mZ-Xx6`lKNJugD&fUT%CivpG6TffY&ua~qD$Ytvhh#TMaLu<8z|;ECF%N-ZvJ@DS8HcPAC!8ZnTU?%nP{ihM>+D<39R+` zQRf1o?hX4<^Bbd9=!`qUTB-3?p?p)*R>PL>-bC-|MkFQo#v_pkE+ht?Y^3p2rl>HGn=*!)Y!RobVz6 zTvC^;4*`L00l3mc03pNH!F_<={JtLE(hKZS6Cdp^pb+Yte^jRdC7X~&a}YIDk`_kz zYkK7#r=Ll>`RMa*LeICr9@PpXf3`uCzGQ4~cSaf_hr8(+R=h@RIFqyuLW z0C(@kRJyQF;ZbQne@cY-@Rh!D<58z7uzV zv*CUa`CcD;n@PhD#r)!gEhgXQCT#~x^URE^%{0Kz2_G%p&!SW7nOeJZ!KPIu zbzvvr%`~D*4O^L!dbF+{22RK-UrdxX+IT-HUv=x(!+d`Cq$`vQk_^b&8?+E5q4tKe zpd%0_%l%%#k!(Bwf?#kB2olS1w0t5r3YF|G5VsYgpg z_XRJ=eVpXC=vB>9FM2k*yG(W8QM%k(6N9jgW)e77f11=Hdl=t_B zQmm!StJkwr+8k=cay$5QhPQb6u!{xVX`d%G+lZgjh)BAv>R0U{hw?oS4Tsy)>~n5t zY^1G!j2!xQP5iElw+PUzr_YmCt?k7)na`XD0qjN%tnbb-r?s#wBbE(V1C2 zKqbmv;VZ5QqTu7vNBz!2e9r$GsEH~i;J5=Rp`y9Xvw>Ep1honICjsy;U9vLwZ;Zg< z@CoSv=INVZX~I1f`q<=+DPA!Marl|90%P^=lVTBc`})BGa7NOy^ddYP=zyD)XSL-(yC{ue>(x$9Lm zZSp-vR#J^2IKH)rH*|7%H}1=+OuUHDYaT#vE<0^k*>A^HVbB%!Z7I&%*-J%L#rISq z?y2Q_g+KNE_}njwkm|y9UOe1S2m?Mv!M1(TYY*|9a4m7)tn8DWx}I8|5$9B1K7&}! zHYZMkO_KZ5hZXiJbSm)Hb&XKr!9+B~Z|*i-jkrdERIXQhqoO%WVX&ZP0a+*a|PVt6=5cV9>E;A2Ys8>q|nS6XLh`@0=Ybh>+cKZvEa%~m5}UbS*`L?pLj z??ko{JjM5A`I4CEQSVgVuzXj2C;jxvuWM?G@FpQXe#qq@ z>mXo}yn3`P{2f3o&EGtMOWYWH{4O4_5xXp?fd8*6M4o8>Q%=eXE;x?2(+%0%$m)|(Xw|%Lj^J3qyDOMOrft|Z zlxb`}jW*%7Qi0!-6bs(Iia8VD!{a9|D~SCnt@^UZpw>BVmVzo$N~TX0HT9kDT5)Qr zqwE>s{*mU^4gp~v4vFn25!bTjwG}n4ygGH--k=5M1y8ia*mTL~<;f|{cTYIAiW2<7y2g6+AMx773lnE;+q^dy zp3@LuTox@C9Tt7HR>I;1^X^zrBPNxEH!r>}KN`$8`6%_&T#JIaW)IgK+b<@qB@Bm8 zPF+67Hb=N=Yunw^o9{BGn_aVIOk`ik+$i+-IVL}neFO%eY|H^GmMrHoD?%~jJi5;W zytZPC50WSjVHCTKqQU5wzX$c?Wy* zN39|P1DxO1MO1K07N;joh%EI@x^`E~`{q{20!Ld?2Ts3wq+Rz(-t3a5Hd8KqoQ#gh zpD<~*`}Ja-vIuX);z z_OlMEOVHUnkL$R($#^hjAiZ|9jcyjb?c`BjK4|SE7=*H3X}_y^FrC5hUH>7PAAJnW zW*^W1lQmNpuXv$VLScsuR=efF`juHaqy#xHQsVH4PVly3_{~h^>HxLZl|cZ}x#mx7 zi;%6A`SZA^p8Q^Qa%3pe!9rj6&7337;|Z+;Yj1CFoYK8{U)9Sr%qpTtEcO(!L6mzUFr7~^DeU0typ?$ccQn-1<9LjY*OZ- zX|UE`8=BU5U37h8z~)S=BQU#iRR19Y^M=8hT2sa@(lo%>7c6xH>Y^_*Nju8P60UBK z?p@8PuAct*+MQZ%3sBUi(j{+6k7%|>R|m}?aY;$% zjb5AT&4o5}_w~eaFc}7nFU3~uEMKFz7s(&CBu&vgz0kWB;zNO0Ul$|eKdKQvyzI8R zc-i14qYZk!(MPy8M_^6%#(0@~%W+=3a6|mTH1Qmt4NSY&l@)pYY_h(F&(-yJ%#$at`o;~L#^D~AWOPyc5aiA&Ze2^yh)8Puva12=vTP$7mwhhl@{fP^*@ zuH`wdhhMt%XYE6S*?6u_yT7C0&GBxxR<66YaBu&++npS}FuSc~Jp-&%Z%GcVofE~M z#S9j{N5b3ba|COP#Z0)@Hdi_xL|7cB6Qw^EX>~4s65&}bi@S~0QLz?O%F%oV=llGP zFX)P^xk5O;qNh7 z<|Apoa6YUiJHp(OjGaT^@p0`~z$11z-aFk8Q!abicjpQQ$b|QrCKvmQFdrvgi3T+l z_Y!3f7LI=`&U3~JRUaNww5ZT!=Ox5t{D;J(x?8^S#9B>d5rn* z&)!gkR%8a*rPpzw45BZ4~?U{KVkJNjTf|b)<#!@N00Gk3CZo3 z;||?CS-)HUY|g1}bw8XGo*X?I7oJ?Rjg0MbNcyt|)rWtt^oZ>^;NlF<1`89|o0Tq| zj!@g_M+s$fGyI9f(B3fRCHwyJ!A_Rwz(_?*KMH1E`(|@1lPMkX!1GG~NQsZuqD!=5 zOU8vob*<0$|4bF{!|( zBIAJ=Ex~Yk6VyXRCU!hSc9u8XSUmhxH35xv5OPF zS^_A~);Idi>`{1+Eat)CIf9$EMZ@;nv1EvQbX>%Ex%S7Ww#a#SQsYNUdf9k*zPs;- z9gFeBMsM1oot>QarAXKKgm?_-&h<#$!?9x`fzK|^C%S9T7A}LlW}p8W8ynvXN!v}{ znh5aK4-|(}1_FnRmort%5Tgf+siotC8F{^}d=c;5d-kXBl6M7TFu~`6*XxDW@w``A z`lCl@T#lOE!7XOzPYydvUq7p$pqFym>s0=U)@GySW>Wl7K(aW|YNMzS&$V%6 z7d+r@$n&2I&NS$qh4`FiTqO-8Tpl>F94oT4xhp$2*O%{+?GqIEMm~P&0nJ z)#;jJ8uuM(_ZXx%-|+5{xa^d3^q-g0Z8bm=TXdV=_QboSMGnHbiKz$?igSo0Qdf)NTrMxJ@MM!vo zi=HicCz4;zS>WAjZ(q;aP|cQ6B2Qe2M+|F3&Ov?2&cUclxNaU#>H-s?|6+ets?D7^ zz2#TVE#2C5gqIdaM#ZW>#BW(+1xEy{Fb$FAmF!FoCPPt1iH=um4lf=b*t@?`Gp}^36R|Or5nAH22~kp)y^MmlxsLT%jD z>t|k9F01xtYnEwaFY{oGOpK-`DUNVBdwPD>QL$5D$Jd&B<2V)#vXU28bgGY&;y<*! zYCe;U%(ZFKWvVf~vXqq-5D=K}ig|6fG$5KF^T`dp8kZX98drg~ePCa+u;n zE2N{R1IwQH9qbyFE+i0#?$GqM5|Q{$u(&)@ zzg#VdCwa9)u(M@+ynZLm|3}b)$;?vzn7uOGvBH^u|NNG`mP$=~7tNoYrGN)7D{{_L(13WC|P@;k-fJ4Ma-rQV~R)L8dxVFdXb zD$}_o%;3`{%vev>ddw-SGJ)O4r(V4uPVP$U^1Jl-{)Gq$8nM>N(ySutu#0%fc)jYv zL3OJM*)7pJHM=i&@6fkn~7^1Z`bXdzwYsRd`6q#BH_7kt1UE(1Jm>E8^eBCYO zMJ7b12T0hrJD=CJiI11u56<-{Dylp8%yjX+ZX-r2%cW7jFnCh*T)& z8tqZHzoQ3@qE#`T_tv1@%fjqCVXb4#+jvrVtSXZJHt=#SghTf2iZ>OOhiRJqWzHcps$=ucAe{QfML?|8D;^q51O z?p;cH9`CDHWEq~6_KzpNk1od(AH2m=m=j+YB3rr6gIQ@MkUn(Bkmp%H$xBM1Y5Ae= zKPTMX^w6EclI_j zB&UrfIj1bj>?pH{Y*wH#m|~wdGDl6ECN{44DmEBlATaYOK7Ls_2vIU4a$Q+yUs?$1 zyj*$s1y#!G-LVQz%ic84GigKTA2xpJ!Z6Uop0Y9@t#OuLC1<*P$y=xK3?Pj;aV|2aW5D+P&E|-Cr`R;!fhuzfS&qZX2?QJ@ zya%lqq57K(%rSOom2NZ=<2H?7Ug5kuATJ%6WxXGy0UpfLbANIQJ*nRt#F`ASp~B=CXdQeWl$PC(Y$Bh13jUr|3V?ZAuyUDi12|O;x~^02#Vx z-HVa zsOfc)0A<=ocG%~5=YpXzpezTKh@qYuD`mdBbIKu;d1P4kxiZYpzY@*f7%M&~MM_xl z35@WqTL!vT`3z@!Wt2ogen8^-QYe=Qj$uX^1T^3lD`3}a$zK0(4lasNU~}|JiJ|qI zAV3ZVjAv>Q3le7*En)?p+nY1n0asns=JcD*B=Mgs%L3$2sh&2QaNYtonddMP># z-KyGrbmsi-mc6?&7q&?+RDqtCc`~L+&n{F;U|#^epKsj+Zqs4Mb6@NpLFuG!Kr3$q zgXVXX@Bz#5w)-x&>-Kp#o?w-0<-z??vBwmN$Ac#F9iwmPD!`A_4&YXuulQ|hw$v@yo zb+{W>$HKze=xnHHL$(6!!-6Nb!fq2}R;NM_XmM@R+gu~D-`)WR5K zIC5*!L($b2k>~fzbS%%B539Igg1Y*PUXb|I6H-08M?LJp`p2@h4>P@$UJXu^zaM92J1oFb+o*^ zM$7)F^R?zkrl{3YmWPC>gT*uhht+ANSAjzs&qced4`VmBHrq;>oAkWgSDkB`n6;eW z)a*<|UaX&sd`k*zAJnMkKz%Edq%eM)(F>ATPdmD#mXJKvCD>ovuRBUYy(azb`R#e9` zT1WDifl)S&6L1QwTkGz zQI~~TOTz#iQ(Z4^^xzL@)05zHeHPMHFv$Hv%jskDbmR2edcLd4m8Pk*b9V&CVws(l z16jYwr>Rh-pq+2{eh)w`mc_~c&3#JmpX5HjrpE7&R-UWu>Hx>_=wZxYMQR7!^`pY2 z!EL%(0A^jDxwbHWxjhRHYh!W!5UeFo_Wh+NOq5DL$1Cfj?U{%KxOl+rQS*P3M(^G4 z%PI{Tln7+9A^83Gc%|_^d63sTmha(~>Pr$}wR+wc;j%brIWf-3;KhbTbd0mQu(tVm zlSU}s``Yp)H>JC3?G^p&sk>|KF_-6}-uuQZAKUU^zxrbac#Zu^6nk_w+9{2K1e4j9m@7FL< zsEpW-+bi!14kdwq`uS>i#@?;AtF4N~#KN3O;#I+SO97K73la|4w5+t5x_zwv;b0HD z=()fI8M=1c9hSD54e?h)B4_kN%F_bJD*1`CO2YWo9F_zvJRT=JheZT)he;KfHtAj^ zU%ne9(F&`)MM4h89-U!WHWaQKeoPbgYVzhn6K0)*n={{e)RTnbjRJiG*f`2wt<(6) za&Y!`W|EGj+{y;!&Vbh1_pY`Un3(_MCk^MViK=)z7X`(aR+}?{WNL{&G3ze-&ccY* z%~#hHUMg4|aw=I(+V)8d*<%myqmF0RR~MER;D!zkgKm5n<>3w~arsH!%PGslRgtDl zN?Yp+Y)z7VTK+|Ly?q;1+l3t5mOUv~Dz}gkM$MV5WXsF?+S(uP`4h+Pe;w=II^I5B z(MtK|Ze8KZebeIr*!v(hBeSA7D;;cvGLsXkufl&8mRYps8H~Dld;1s}n{wi7)A6eoD}==U|NgPQTx&_y1165DT`nIu8Ftk%Xt3kw!FCK0^fWS*;1%u;aBmgL+a z)*Ka$4&{cy@=I|PX;Ve$Q?FGAA3deyMWuc1vY%?^Yn|Srp`qm+9+5BB2u>|3OC!w5 z$6ZKe7M7K0ahB$a(bqFwoP|5zZHYvIjIn_(npOK%KmzP3ZGby37Cg-HGJq(Vyj8!QxhB_NIg(V%`{SWP>%?C=8=q6f9 zimes``{FlPEnD&V?I(B;?if3Ea+3#<%#-Mf<*D$#Q9V=BO4AriGV9XR$o?`T_$Hcw zV&4Jw9&X<$qd~?$!K1nIerz?7PPeW43|?@6)MaHpjG?(na$4Rh;^~eZc0`mZlG&L- zRV`X2|Lf%2ZNVF%>Qz?ffC-vj!9dbNUawVYh0jslT@dSkmbsk`fI35(qiemDZy#3K zgGP)sRs%Z$pdQ)1EWV0bRU+HM$frP8vN%`;a`(d_m%Wf+IV~;!?PRz>++F1k{Ux1c%j!H(uAD) zoLo-g5v;k74^pnhTm5Z@uRpfdNo{Q`jn`_^!Utrxt}Gf*3fCosh?vef`P(in@Y+Wz z{jC*Dt$OpV8FURl$D1rXnERUc`QtekpY=G;#t+RXiGV=)*h^_GU!LRQI!k!`kT}$5 zfgLC?w2#N4q&M>eSW#J38wCoKUnn`Kt?{`otUmI}9+$l&D}luAT9#D`(G`K;Gv83k zxBVP>)Wjfe5_Xv{7zy(hea353x{r9*oLPi-^-6(t-|c{?+rF3Ic<3tV?YC+?>DXvg zqz~7V73IGf^)s`M4gMl{sVsoHmHbWAppVKnmfBY_2(M;=F>k3eO{y`T(g@2B+PU#ha+r66&y+HZdxq4A?EHXV^lP^Jz?9AiSa;{c2} zzhF!Ps>5*}_Nn!AG&D3{b20=oUd8|YNy4_{$aV0Y zU{eIY?b}MMxOec`1-7USvA*%D)TFBL6r|Ht8>!o_5`nB6o7Y%aSRB@9(E_YU34gBE zdsxOt+S0q%3wrbIdR{~@ENhP*wHmE|WG3A4!MX%z*ZY+1dM_9nn`-N_HOH8nP3O_N zJ(4!pQW5A@ZRS*ZotU3EfjCF^CySq&NC8<_*v7nSp~L3l`e4K3cvtibN!}BN7PTEZl-IT$Ut(JIoIdI~=xTbT z?;6w`E@Y~dA$B;l;@7JQ{ShTfn*!fkJ>6-?>{YFG@ygVL`bLL;jJ2->*)1Z7-rAtM6tvp*icE4JJ>=oE zF=2Rg{iow>7p(sK6!m~hTvTgY zvD8<4OH~G|iFU7RcAsr6FCgp;N#UP9eVXb(#g7dTYo_Gqd%0BCHqOp=Or!iJKLsjf zV!TaqXfAkJ6BXY46C(U$61^xXBRw9o&NSEbH~3fVU3l~En1~Y}pVw7(YKNPm|L4dp zJ|ZUwF8Xs>;agYR)S2T^n|c*TbK$(?%KGkzV$3kFa};Hh0P3vY-j=`>56vRyF|6nLm`U6f9<8T+@r?Dil^FZ$4a*-j&tJ;C7j+?xh4uD@ z8)Duxs3-=)w5&#nimbYJ+1OW>w$X2z@P^KNm%*nyyRLq3xe31$L@wxhxHwP}&mvF~ zIXs|3>0Mt>g?HtO^uEd>*&`U}V@vTD&QztAr~9QKy;Vvaiv{8&_#}0`OQ+LVpkDk> zisQDnc#DAB(g`w%l0zOPu-7;DmKbD4J7SGq8|zt$^5cr|#p(`p-lGn^SQ+Ey49BCQ zq5^C;Z2f~&veYgj z;yHCnVmj*S15Z;fAM2ny7h0z|CaY3G^Jsg-nH$t{*6!%F4^pYhRaU$AeGU=p3>ua1 zq5i@9#P>>??gfh_!=@N4)qY`VQmm-Z-d(gcX32n1`_Br*j|x0lftRc|m_cV=drpAq z&vXCxYqE6sj36EnWquezVJ~%>#M`k$%Xps6C#@eC`PRzFctrKts5!2GvhTG$C~xT| zmU<%lHi=Mxy}GbEN~ps)@GkyYz0+@2ufiF5F-yK~Z0(ZK zYNHk2(iv2Z!C)$<1@rtW@DYqqY$xy(2sk;wZ*{vJ_#u?9Rh z3^(M*+oR`=UsugJ32n6R_vg9^>Nvcn3jFg}tybj~{&v#;AQOLIr%s1ivuJLVetjsf ze~$~VQSx1NP)dk^1WzN8pPsc!ZI}d&CGx|%cOsm=bE7pD?}NR}d-4XlZ@gONRd0M9 zwmy8ieEQp++D{iU?^&_nH%uXfN$dDSGuU9HZ1?HejjX~>P41pnVEic%v4xTeX=?A6 zk-m$_{Zv#gUB>v_vv zHU*pn0$BqBrB_BM1b@u-_ZMD>-_A8X;f&D7xg9mAoN-;(nMn<~8#E#B7DRri!Sd$G zC!W-O>z_sqHTv-02{+b=bK9E4-tL+b7qW;JobBG`awrU z?RcC$iVVi)FeS%`jsCzRWmO%pTPeL2iBfYetq%OL}=>nZ_tsvA}^vYVLbmUI!~U&`&5+8JXy<389ZQo z4x>5tE>bH>r$!K4efTn(bbj>WtJ_f&!Y1yk4343`XMMlpMP9nqIK9q;%}dQ))m5PO zn;SulOws1e038@fpd}NM*T=uEA!xQS zK9S0gN?n1PoA*&lezfls?|AIu7iESUqWH23-y86m{46Zr2E*S|1^8cd2|#JP{FFCe z`pz$^eV`!G{vr32Z+qxfkE;x{R$msqLwyt086S3`qcZilk^L=e z=L8E5O}kfT5L;~>tRnX{d7@g@n)}e&7KRQH%CWRj&w&TO zKA4YX-AUWMuMv#_8%tqHaeMEe*S6cdy~&em8EvqcBatW)GSXMt+V77%Pl4|G+%4E0 zKT2q8Ej^5gX`MUxrwkPZWoU>v;?%qe8%NI<;>BBsPo8|)XmFHWoFj$NY6Y~pz5BBZ z|NGTym2GSdKg{PD33*$HKjm7(r$$~~%zFgN(Z~8Wobje&58h0H%`)?KXX!-&bmW>u z*OB1b`Cv}(C))SF;}5J_>Y7`iSrw(f-MXxEn!sE6nz!6{77p*y52$Gxv0g4+0HdPx;n{UN{}9^N=r!S|y~8Mvg&2X5|7#eV{F~sNhLg>lLivD&8a?!K3RdGreX9 zqsN;y1h{rbuZALvZLuTRiPoXlQI?v4tc4t$or9eMlk}|)NXfYs8`@9o@G*1+R&Qjm zr^`q1=9-C#8SnTZ#;Yje%=wDhxutql{>cLdmF`FK@cP2{F+~yK&5@vle_`23vRq=e z54z7P#_1VtJUGNp0Tx1Ow>+y3P@w5`V28gp#oo4hNO4Sv84fsAeCL94krhc(*xN-W zj@`$e=B`+u%7Y&Z?9XoHR2Z|HyktTtH`g2))bKO58w4bPNFaRJ%-lI(Ylw8@m%kZ> zmp1hi)4m+1d8vW2NpI~f>J6(mV6TDr*^DGQdkScYludjmt(~*p6h(k4b64wV+g+NH z)jd+g`I=H@O@Q#uk``!28V{-ihZT!lf9%nUY~_PPH-WW^PDg372EruD2HiPFz_QqN zi33>|0HR;$p!&yM=XMEEK|Dde6FajtXkISOyf}Vv#vYT5QQOcBv?Y zvF|FRB9h9U7)!D@wlS6vN|q%17P4gv*~iWdSxd$~mce8l494z%d*5HZ&-1+R|LZt9 z<};3?nz=vs=eo}8JkRU8Np#~^8DN2wJNi$eo;ty=6$K3-*~dL+wP@PI1gY+Y;7jm% zw$DGN@+-^6HADO{AIxka^%{FrG@7@Z!!<=EDw}$bByQrU4ova?(HbXNo8T z%9Lk=oweO*^FE)`!|@rH+-KJIXvi1z)2w~!d{c4J1&ofsEnA&yhX#l5MPr0 zk(?Z?5eQNOi*gW>%*7qkuJcGA@ncVJq*wW1eEe$>D4Cwye#|MF=zyhI<=nqgOuSBD zQ4`gAWOq-ZNI;2C-v;EDncRcrYr!qQzGC$yEn(kgpj5|#yP&eNw~F)<`@MjN_+LK} zZ&UsSi=~OF{E_3Um#GP(Y|EffrH6fVxTOA+c_~5TH?8p-L>#_OHIDoC=mkqo^$c8+ z>bKZzt$J)r$7xLSba`!x{a`GiMup}KEZx?~pnXwb{#j085>u)NLGixha_1i2IaGtL zB~0}+rZ6urwLsLkYNMWAiL>dpIl|^seL1FBMO%gEl)Dx(FqC69N6tNSJKzXPb`oJt zq^raU`DONl+ILc98QiNUI2unJ&ty(>E|0H-S_Vy+BU!W_kFEf-+(SF8>|8b$7rfd{Xj4-O5!O7_rnWy7BJ!jPywI5hEH8xUj!7p32KYHBj;Q1%;FkS@PJmH_m*`yK~~)G>4B zzv6}88{n*(tjNQ0NAwRR$)iG~}QnqH`Lp_tv9UMBg!6+;FRgIa| zhpbvIvXwo(`e=j}U}l;wUOY>WSjCA!Wf0mbgPNG}9+5)SKJSXW>YgQjGS*W_ODIJS z&pmm_8_0_`7K|dTLP?;3s0aH)gB@cL?!y~prj6Xm!>F>W9=iC;M;u4>Im&O)IcgX# zeYo8CZf6Y6%&}+(cUuq|*QsZ1!g*0{M%HceIM{nt+iE7kfp^66Fq_`K)OZ3}TcBU+ z_fS?HFlOGcEP4@u%CHSdfB=On;os%pN8+60!NUqH z|J}b3(={pE6yxFh<)zWivY?lp@r}qOlPignXP7FoPc-fTwyvCur%IjzIrKRuX4Xx^j$b8uLbX9Woz2YW*cNuNCOaCx~DS|SM@|iq?^M=kx#~G_as)bhpjK)0gnXvvQ$z z8Q1$`r1>J(7I){pduN$ONw^Y^=`&2Fl@obvxWh zmEDljG!Qu39D!;DU||xehp^R%)Z$IbEZXmA48|cr?tW%tms*w?I5)@tIrnpRPC*(N zOE(1Wkj$X z0rHFBlxE*)&#BBAYi}`dkPymI2-N@fwG#%wGw@|&YW^#_xRAtMh}xFbX4f*DsUc*} z7h24|SIuI7P2%*cFLqt$Pn^`V0F0S^TAmZ0JiX>NhL8iAPXgJlvsD?UOcAGH zi6&_9MoxV0WNTwSbBX=}_T+Kwdkx;(S-qchuA<2D2dlz^J|LqZsG43<66=D%9ML0f zDt;Qg%Bre?&itUwRI}4%)@`X-#kGN_><<8O`akcdA5706;v+xH54>PClCsk54jWKC z>?6M<2YxysuXu{3letX|s?82h!^M(mh-OqwHh$;Bnvb3ndHnh+!y-0PR=gPbWpBAkb+au)d3X54DK z0sH=ag%t(_eb0HMk~!eEm#XlRfJM=|Hb2ib4icu^6C_N1P|?6<5VdmVv5-k1oCJIf z5Ny7FC!o`roH?yL*lWn2dao*O`%-Sz`;%k5xjyU%K{L4XsKG44TfY{GR>WFOzk2qX zLTEIQbFg_vHyAKfR8+-_iyX~D$(-vF@4A^G9BfKkL_ZQyH}iKmOyv8Q0sDVss>5GZ z*1Lba$oL~dvnMKVytB!FBue1EaYP*U>Y3%Q<~MKF54?-;jIf3BnuJ(}Sk#mp4R_5u3_=c$T{*&YZHX3sU1?7uBFAL_*=R!3c1d?d!-yAGM_;4qP-g_G!d#Shckw=m=C%AKxZg7c^; z*#52_ z4hiCktT$20ClouANis{RAsdxhN|5UaLbcnpWASCc6qO31Fhd& z0y~x!@P0D;V@g{o8D7^87-b6U;J@+U|3e#x{%D?H*o!TB^iJ=7&qL{TQ?CDY7c1Q# z8niQ(vOFowHXFV#W$dqdV8D0J#|C{Gk8qz(@!3~L zEw2g?!1ew_F?8|djEru8eXpO!SL1w~f4&{@Bi zDm*tpw@X!3@OBlLD;{P{7(sBnl4A_2Ms8L+>|Rvbp2Y)6wHxvp-sJ>*6f2Z*g_1+KA5X@?nL)!EtAoRsDjf>$$p(}DIof36HJiJ;{2c>M_W*yrS4reL-SJ+3 zKiqk}_MN4ggm!F!WrLU&D)b8-opH;B^z4Dc(a{k@P^5TLB9VYB% z?fvbS*jd~t{1J?2@hOt%Gbf~2$&~&gXDo`{sq*Mhhx^zvl%w1k>TSslb)38a80V)!4 z(G?oXXgxHS`}+Kab5D2WZj|q-x>sABGHG>s1Q&?omR4)4>Xj0eJ=6tJ_P}n}+3-Q zDoU9#=WTo^fHgtqOBri1wDd-Eunb2yp^Fmww^r2-;+4>lCx|`j{VCzvR)A;Dt9}oG z&nMzR57UK@e|>%lMZV$&m~>XiMsvoDZRb@K?*a?W}z2?%{JUPn~@?| zI(Dw8^^7g|?rP%rMOvlXq7fD2um}Q|zy3#3`0sFLwEOVi3Pk10P143io!>d^udl^) zvOi8^`^}g8+NB4cwBb)^{a}V_zX~kx)|Xjb$qpb zyT#Zaqr>enwX5qn%VWC(MK-iIo_2eyX0;)^!TO2G$h?V5<(aL?sx1H|D?0KPV-nn% zb0H0)I!$^;1suK7&J_uzxw`c%&IgHb6>SairfovlRStuhSLM=tL1XpxbV-!J_Un%R z2nyfBMj@r0{BEbgxkm)MXWft{j`EQX;J)-(&nWB}?pIpW6FV6aw>MCZbsX-LTAokY zzXS>}!lL(+P4U9tt17DWe!f|UKk=dYI*JzRrxU|QP4`xo~BPea!NqKR5{H2 z0P^thdy}#c<#UG1(9HpSVnfTg*=vsGuHN$}j=!X)IC*gsS9>852w5uZY8BEvVLV0* z6X`sIX3gdocmaC}EMFVl$r$FdbQlQnuJ29Q?c+x!7$1#PdS0`On?kTK$eTTLkIf%; z8y{hLIH>6lwM4g$JSfvaP3Y(0d>^v ziR2r$vazDVbn?NdKn6s7v+}cL@X(!A@+wi z(qy~eK-t)inpi`&SKLnx0?ud2!kyU~OeG1)naZG_*iHzChfTLfI}%6T%RkDyX)5*})i4{U&?BaVxGSqx9VVnrnt8~W?^j90fj2VcObhTRr< z6FRl^^_`x)S_aN^%i)bA6(^&+IV@Kgf`LC3rm>~S#+}fp%rO3_mWM z;xU6bEQxc+r&ki;MzsZNiHW&Rx12ga&tGR>f>c+9d`$aF(82IQ8?XeqJn0Vo9U~L# zgbH-AzsZZgrlWsf3tiyM{t{^OK5R5-dsg@Zk58P+DPC@7%v2(uYqB|n-hywi4ykmc zh+L7g`4KaoN$-R6mv~Bl`bh9g3eQ+>s`IaAsj!edCy4Hsw17g6-` zFTB>_pTs_oB>2yVx}c<8MI=R*7(v~Y95A1tfi*j{J)^y1FhOv(h@=CG9hfCguq*V8 z4Ad82emhtT*Bz7%h1w1mMZRgf1G?O1tP3?A4uA*v>;Z6OUIoTs3q18PIlNc#AiK!{ z)(y16*CN*lT`~ogFV6dHjO~lv5RsaYAS&cM3=a1mzj0>k7*N*_>Q^(~ZuMz-`N`Q= z#;Ne2xc&SvOSIRKh5{+un`-W$II$q(_71I2;_`=f_=3zp09BZT=bp|^s=hLPP4>q5 z`Q7)>2ntl&{MKLBQno19HT+EAIw;bcXq8%BbWIS>_A@sjCtsP0;71_R8QIyt?_aC! ze@9yxbu|0dytFr`u%mqLO8jcBayNeEcR~KTwJksU+n37PV4q*?+)6TS`JGpBN42ee>W0rg-+q7R@(OzVh`cnF;r1;=36ieyQZDQBimK9h z&;%UTd^|t(*)>?vL@4ew%{uM4i0!ldX@&N=+mz8CjMPfGWUHW|N-*Gp-A zs-92lEsHLYUA!9%lERjOyBWnF+GAI=1DUB3&&;~R7z)V=|p z4#*Md8I{&u1e*&8;#G#=j&-N;nk+!$0h7Xw=xfFu!4~S3ww?STQ084EpG#?}kz1c- zhy;X6W3e|vsjCuR9-jQ;^b$(RA!&GJ3lS3kdlg$Vl>f_x7;#=Y>WGP=?o%@!L)Se6 z{-jT7q9r}m_bp%Ws0$?s?^IF?_Vq;#)C;ZA{dwM|!~?J|)C@U{BW1h|uB_hdmbRIv zb?Rmm$mw|KNB(4dvCt*F=X?tTFFIT3v6C|VT7J}3{s(P2G13Yx17b3g-)y$nB{jas zzuFn@{h8UAF6@tnY}>UOHbJ$hXhh_tuPejE%F7-)8i%$(lwX;KOQDLaUfEUCekrPr zCztlUKRu&3;#$D|rqXLk?BG@V>gYEbx|@J z*)N>MA8Ba;lSnZ9yoDei*Uo&eOS@5=S?c@E{JN@afJBBa)kQ9UvL5VoBOQzy4auVp zLm$CF*9a5q$xzS^amQRV&#quPc$?v*^3f)HtIf6sr{q!Bm#U1`idAV*SaZjQlPAKz zpn(sk)m)UcZ!mW?e{APL<&vi)W$(|QKU=rkvGl6ncWGR@xOAH8$LT;e67q`pP6fIh z)E=p}Sm*Z{G_7W+Tia%5`8b|Jj#Q;fTMmaAOA{=qY428E46noS#qoL1IXmJ~%GWmk zr1yYB`SR~Sm6zBn?-RcY9V0ETk_t(E!k!7zvb>PjR=s^Or0Rp!-dAtl?ct+Nd@EsAeH zl0`ThpVWE=s?PdAwYrbTKOUiK2{dj}#mNr5g@*+WdDz?KrYTy-eu+*xCtu|jODK2w z@!{@rj>KYKm(gZS34mUl9MhEHifAxtz|r2@MExEwy)DX2;jQdYR*n6%3xnUT26`C3-C(VVG`p&3i=IQ@BXY ztO^g(Era-ku6a^4IgC1{u*o2o-0?g6PWd@a)SbQf8&LoIRW!V#sIRm*;H6UM?W9B< ztby%Qr!MVQ=9R8&MX=!~X;+fVJ{9Hc|AIM$TsY-#jq!tq zaev`6s)JhMgk$5ax$;Yo`zDpy5xr)uNV2Sdc7hD^M?YB>dveUDg<_L z3Y?%}@#}uv$jyb3uXun_eSL3uY;Wro+0M!lt)HH10>*1WIr~KNxPmJuuKJY!%PV2v z-?EY@cVbUj+vAW?0^WVwY=WE5UP%UK*;B#k-U+GmrtYkm&ln^a&O;pAN-O!{W3pMd z^XI-ce*C8t(JBZ;Q}!i%_1NZBZ3fd=&Zq4UKOy=Rq)N>C=#5d%wa|A79VJMNqO0w2 z)Aa+o^LTwD(4CO=OK;@cbb=6U>vPMe2d6ciuZ0%{a)0R+-dxEL85?x$`ra?rx;fB{ zG8PAI1mE9F0vdAH_WJJ+qSB?F{6KHH#71`WiItMpddRYhL$nuur_w=HEFqqMK-I49nGcIhVkoVopGtNm^1JEeW3g|#g-GvEMR(?iYltA>klm_HIz)%C= zwU?(?_Tfrc7RTi-jK^%14lJzE) zqyXJ7ab=jt`?)b-rL6W8J8w$w3%XA^R#bF_@mYpkNYcEvCNh&)8jare0N{)}Ru*_; zK0UY!?5mnGg6>y2&i;NRMalm_T@mWv-Utb;;8IqDwz^$Mv8*%sJdcNXx@t-kU{vT> zo!Y$|=|S0USH*Ct6u4_zk*kaAVSs(>S?j)=bX)h6KI&`IBb%73{O-vj==-hA?&}%l zn;ZS!&9$SHv-7ij37uRD9`g6KBQo>T12$T&jgZHaMqUtHK8ao3wN|91HC#E!grI?|6H-$10qc*`HbD zl$3b%AWGvw%xx%cKtoq6IR#Y}H6BkL8|^ViAJ_wFRJk2{n?CR;kcy{d-jU^{9!`ZS zByCEk6~V6B0H!)79AW3CG%Sa_Lm9oJ`;}B1&1yj3F}rgj=KcA)a=3LoQ3gs{cKrYi zoG%yxRml?t{0pK2c#^)8nvsVlN5}Q31k389-<{@Z@}|3n9i|K1M!g$%I@Wj2v@;1$ z_IppKbhLq!LP(tJi8g4+zgS?kG2M->bAd-6cdws~CntXkKBKt)CVbhKl1Lbcd|et1 zxLF-<#Q@*SR86ohmt+wtk(tJ~&wj5&YvsR$+TTDLyc&t7nKfTO5YcA1SIyL_a|YXo z?YplXCzI~N{PvtOMH9nY?JbvEC!f!OF-f0~)XQM5kDaPC@_s^(;Jlsj{-@MW`d3Gf zoX1CoP=(WDmVSlG*D{}8^6cVk{f8s!qCFJPjdu@a0g!e?ESE-+1`?Ky3(Uz9w~AJ(-Ah z5vX{fN~ucKCUPV8_IPNPl%M}Ol=S_l^I;SWXpFV3i3XUv=D@Wu(Nj+c`j&$;WtR*e zc28TY4}Cy8rmo`fiH6IDn)jl=E$TUkkm8D}8XB@%DL=No z!?n7rQ}{IR>f1B2go@b>o6VmDMdu-sOytV<)BBU*wT-@B#ug+bmNczE^x7On5h>g{ zrLmEAc8ZPfUTlZ>Mod6!H?2(Yawa|uLjUMSK&FynTs95*ki;>Tm!F+Hjp%)t?(;I!A$|UBF0p zf7@oYf1Wc@6)(Py{M(GCHMD{zdT=n}sF&~a`!BA%61D0DnlxTYXUgLgUkgooEK zFpx5N@J{jIf#$3U2W+nNgk9KHcmU_>?84|x+HsUq+0h{pD#TcgoA8?b@6X2ar2PrB{I%+ zjS%4Jn_ozLN?f9dMO3hUYYA)cJr@{wOV2cV5*R?zxgkQ7hM7o>pd52DaM>3`j)~LciZB zqrUf!jVmK9HSXtJdmKAxJnX*l**JP`==d9FzlJvU>Z+=?@UZt9894^U?^{)0MV=q| zfoq+qI`i0qUOX_ce&;O@)Z*oQVI??aDMoMrk{Ry@h888cR+hQQ+z%^IytKgyi zhMWwZ)a4$vr3s(?@4BzkSG`C$(oa}7ynAQqDgM#C=9jv_m6bc*t9yL2G9y}$K(PXw zmd_a|;zYFwy5mM{zH?h*>BcWq=Vh)<8I!C;L&-0wtvSis9a^Q-cfucngp&Al;xcn8 zkFx2V+zDdgU`cS5gWY8|SJ>X;tMKeKut$>DN%GIZKm4<=zh~f~8r|^{+zY@CD4N7N z=|6J0+-7cu-3fg2P9)K5^micRd11YB1lRlS)U)i|r^?sK?pzQBVBW-Y`l(gr~!n z2C()3aK&vONXGheOB2yZ=qbOKVCoK=8_rvOus9A^{oCIZq5k&C1^Per1h|M$zr{l} z=-fGNi|~@`sss(lrEBXnJ&2D9HV(2$rL4RdzQH29?hs~GcY=P=^V6OA)Mu-RV5*`^ zcc=Wy0136ey-{4m3aU8PY0MayFJfF2tYTJH9;pDbUR$pgN_<|G8`xOKgNT;1!Kzi` zcW08Ifku+u!ruEll(g(Zv}ZiJe?+}?-%KYvwak>hGHp#x+Syu?@@`BhtW{W)F2nxl z7pqSnL;Bs*Ele*fu*8L#668zQB|Im^XyM%yZXMg6#n{#Sx}6K%2a}9`_{o=&U*va- zb}Bsa@#nj=)D6><|0EtB(as26s`Kcc52v2pJ#KV@0dbs zRQ_}Cp~;_)&W9s9S9#u^t}QW4)+;Pb2BYgIH-Fads!y3Q1RlM>+{Jt=s&-_qk%icD zedYS^HH`~>BJ+<04lJ_d=V!WqrJ{IR`$8Jrgt^i-%$y(b?OZ`>supZN-bx5PT=$?O}uh<7FiA zu7Fa8H{DvQ*x}79JrmcqE7mh6*DB2ElPY-SS0Zfd+vVLZF7NmR`|6W0YWIqT)u_B$ z+Y>%(fW{LLu9aEz#u_|9BF>H)dx3r5#k!Ml_Kiv_V}fvk7h5I+uh-lP!3h^*9A+Vs zXH@fQm{_&)YS^i3w(<`b#KULt@`LZ!m7fzLkS|A|p9I~PD;~(-7nb=AgqVB?A z;mto4&f&#Wwo=npZ!*;GhSoW9kyp)QpplSd87VYpL$MS zo;%;%w0eXvVdRc*6$uw(&z7>!wtaXfx@qxSVYFCMa z8{b}yf3MHdg{ZqPx+%)xy>|Ua*uC=b14Y}#(}!D5XG~AmRbDGZYZaY4{5tIvaTj%R z>n{F{)h^x)^Q#pCOF!T7lLK^3_6>qDT!}6mPV54IIudz!vRWuO{r%ncH-FT5l>V8c zcDNq93_@#1{?jKXX008BY~H=J^6t>8=B~6FZAM}XZ#GDIk zK%6rXSj4V*$#J1wYQZ|&U=+;=VJ0`#4bKy6iP#@L98y7DGLj~688%51w3rskc|^23 ze1FBtnQN}epb2~x^>aP&j)4ciO3JHgVc+VcM8h}?pCA*i1mEFZuX+C`Aph+mhW{U8 z{?vQW^PDEy6z?K{n9S;qQk$g;p$T_#JTQHnZ|r(^UU2HHEfUV>#130r%Z`C3mxWm} z3EN>1Zq8JX`l38H%9YSlD$zurd1&oM29XXk-B2v;I^scCmtW1L1r1pf3_L*@cGn>% ze`5Q_!wd`IVL;Idwy_^+?)Ki*81%|7WnY?`Zo?#7?FCAJ@(@MVvyuK%{`Oj-9Y!wv z^tW_3us!8BQ<0$lsIROH9e?!r(Q@S&@|9UptCIJgcJ02@*kyh+rkuRYSx{{)R=2+s zp7{890odEzda>Cb!DJ7HGpfM>JWlNA880T1AT}Tqh){t72=tD=)WMbiSn5D&l>`X3 z_fJ@%3ZXNfND{-VI-?soVTFZObUq_cD-l6`+zq%5J`aC8Bht3YLjgq9sPv&-*8+?_X7H!i)*jTN93IJ)nUX2aWQS@zHs|v!N;Bt{=SR<-@7ULe|kNQ z9=vZm-mZJ?f=&c)OlM3>CyH!4R+Rw8xPvA~%?cqH6(y~+n6!vE{)G({$J^m&&#hyb z*}Em%&0#SOzyESXt-wK#i`#Gv$ml?W$%$zF>@E;oNSmL2XYm1qR)+ zLJ=dw6)>a3nkedo{(GHgZHJ2^YpQ9UTD{I4tbZ}KGuBc?ojW6c#a%@i&S6T|^V2At z`j{uQkzJQj{N!hw&%gA3JZ5?*e~!2(LtD%tvvG1eaIj?lh{Ns+0i>JTVS>7Tz%3*c zn)5mHJ=il?2fZeXm_oD8D#k;Y@7&R1)|@MBKhe{$#B$NQ)TM948B+=*n z%XVUz&9K4lndn;~5+XHMUze5%GI)R?ldYOF?s#z8VCcOLc_s>fiY9pyDMqi#^SfW@ zqyKqpRG5Hu^KVbii#sd0-lB@A7WLu5N;_fRSWb3$SJ7f;l8UzH53tVyN98u4lCn@( z;+Hi3rs)Li)BLMv7r|_-g0D5_!}})^o51eH<&S-dcdH@r)~=J4_}@kWu6KcJ1~axL zW7A*A6Q>~}6KB!C;U!J@W>2iK>KtMmA=S#AIzRFC<)qPS7d}L|bNcj5BT`AiDvOg* zzCQ#S5`J&FL@i|^E~T#7&|%@Jt+VHI%Dbtki`zSa19b#$Vfj6NFpVfww~$~=tb8+! z^J>b|R)p0bQQDi(*jVuezmt>n3O!_D-AwG%+VuneL1 zo{FSh-Z|LTwHomjN+1*-?9PK-S-s%yR0NwIvJiYSqzTjEaPr*1w6E;AIV)+I_5rG7 z_tx2|<_Z zuR4(3q&oKi4nsFszUd43_Aoo7We8v9gFAl?TZy*U*F$P8=3|`m|%%vgF)CKKv$E)e@+6jUw==JUQmKRUl24f8jD^X z$RM%LEudRU)HYD$H8Rbll{<|z;dNTArh$xqn*QRe=(UQ?5w{=wWDJpeiA=c5vH1f?mY%RS-EiXhT;Ny#*^9n#b@e#$sW zp#*(;o^1{U4Gy2$M<=eH=skR7tCwn>&Q1k-+2Y5w!>{;gVHGS!fpU3MF}=RHJ3btqBL58B&^Djlq42F~l0$L{^skWYcexJSiCh1aODosh^{Txu zOO!scD3X9toj)H5zVObgb5NUW3PC&4KLTtS3T1K?LYrJ}pky=&BB1}Nq33>J>SS3TY@k~<)zymgi5TfQ?332rtUCUSjuyo zYr={;vbEtU6gJnm4%U=+L2KIBX7>SpY&BI26~iqp#Z?5V-|XC=Lhlu>S%ndwyO`I| zK;PO6`>Ww~jqTlaM?Lue_evT)_^;YH><|G(Ya8ouG9JG&^>$$x{?16KJ5NEF0u(=) zHqqdazQFYaEPbFAv!)n25u4JR6qM1)~4}BY96G?nw_#7orE}rh+YiGtyA;&gP58B!fL4mZM zk^g3BJD!C|Fv9?~BJ%v8HMs;VU3R!KC9=qM#tBq$94z>8-zLyWT9%hvQf*tKlb#0P z(znufOV6dG9LC&e$HD2`Z&-anCd68`)-u@ZnfG47MdAe@%BtV%4`fNQin9%YkoijEOORnzbj8%uMa^sbosuVz10wFm@X<7vKvHN%n$FW(D*|G?*ycJl88{Ml`*2U(@w zHo&m&!&c|Mdji1g62Y66ArnCdn__2WXz&O|qH$-ds7KY(fYe>k@HtgR%%WdsLFiHpNuKm)nE+{OQ7_F-4h#&v*siTUAp7Z#>3>5JqN{G zgneZTI4cIKYh34B76!;GIIEKUxqm&;o2w??k!p1Zm%ck;01*=(&%cB`sLpoC!yjz+ z9|%+IDfimLLQIJT6uT=v+wy~N1j}o7JbuKj=_mRBEfoKGGqw9){QY}+Q&3l8SHUic zI#HfiwB}59$}S0-7GQ>ZhJ(O7wRs6_frf#&iw*!Dd`c~%>5ijp%PU1KFXU2D)0}_R zaN1!$5w`N)m2-cQbCn91(0Dq4-tlIF~@wugSh#M%fsVr4*-P4v4qb1=E)6Ty*7OJV;Q zNI@*O0x{pneIF)YYAJ5W>)Jk1r#p@jECJ+I8bd(HWbqC)ZK$ZUNaOqIw_*E&F`Z6N z9s2K(+YErzzQe+m@bPoi>a#URTj!97iSI1rUdS^$o3z>@S51P{DT;!+t-G8%6T$;! z76d2w5s=b%7frkp3J*HTKwrATU}Xe6fE%jUP&+uotN?mKB=jVKeYk94%Hd!xL4IdS z_)S_|Q>4_0heZEKMVy9eFs=7w&F&(hPSsV^kcmm&`Ad+}ez(cf9qcHI;8kAoe6jfa zNuK|oZp{fea9?S3#Z0WEVFRe)`_%XNP) zZO_ihm(3kd2D3PlM%hQ)e!a?tUSD7bpbB4BZU3>f=8d%CI<=uq#ooQFjgcy%S}|`q+8+ze=z8Ouc6|;e3V$um3cvlu zLeXL-J}-+RJ$(3hxkyW))kVrqF_-&S&X+RhB^FNh39E3$rt-QCm@Jv2QBDbuulDSt zS6t1Zyh~uDp!HhgtfFxx;fcHK1S5St$7hbOd^W$45&O)Aj_cHHh;e_n63fwGIQ`w< zt*O7crhmUiz}5fBw_jqh(F5=nl&m1$ez@k=RpirsgBMd`&i|wLrV$Rgu_#+VwK)|s zPZN0od>>w&2%)o;NgL9k7o-D@B)p-%LHAT7>kD?(%g)+nvX*kJW!TUapnXM{;7V() z?nCnma)X?H?ejJSBg3l)*^2<^6v20DBXQX32d|fg*rX!PJRnK(`lpf|l|U%_z#rL5 zkPL%K8hgobZB0@9#P-v1Av@e(ziBi7F|xDowz4fS?7q@j2kBW6*So4BLotNc`~gQ zx_PoyT|k2gJgH{Mo?aT*7jup8)Qlv*yZNxxnD;gRy(Z5It%GFW{Zt(sI4UUk+nFVw zUz#{_L-pzN6DSNB&=`p60I986+7vUOBD7h+Gw3Frdcg>%oJwDlgFQ7px0bmd74koS zJ|+#0ZC?Sw5JU*iLHAIoJ7KVT=Lo2`j9eBO^YrT`^KNGS!TEo?c;Q`qR^iCs?qkG> ziPW;P_;t4a4hXFny4X#Z4>VS=kKF=w*Lr7CvlBw3M@9{k_BguGs6$?=&C+%IUPC&* zb^@FG%-*iK`aG?CghtQEkUM%f-T|Ce5-@q^0B`}Tm5nGVYzP!=1fX17Q7wYWa0RvA z6m}e)749>))8S#De3Ue)Nj4Xi!9&>?FP@|f%sS{%ws;f>!Xni0p8ZFM*PaD0p&6C) za|^&~t5qFJeGGRnLH+_Z<*e^L!r<0Ma(ed(81+TvbP%VzQH42|)T3QKOd?3!r>>C| zocZd=g+5Wag=4qrj=K}ByoEf%mfGh^+qXh}woj$(ErvhPj*BCI{0L801EBk$yY3(b zwXtf*uo}QZXa*C_TrP7RbSRHF4@>mU{6uQmAjRrP!b+Xh#F{t}Dob`Zx|1U-$!wMT z(Yc!2BVdx;|M-bG8~I-a?kY}4JL;Yu_WF-usbOv56ZEbfG#CqJwogxUw9n6BJ zIaq#wU#4G9NCb>}yqe;U2(9O`J$;+XpdFY;>MBl>^VwukTy3KSA)Yr3pI#2{D%lV2 z^IXuyX{lOR;>hZMGX38!m~K_{P|*GD2IyY_PSI(Bn0L1?zqUGc+>#H@J}}%ev@Q_7 z56&V<^&h2LqwTEd;{GD2kG-L+vzXZ2h9bKYWCr7n*zsm==;4s`SS}wj0T5>`vFCl1 zlE}+HN(xCo;DvC4LV053so{W55vZaJ>=iw?#&HnsQyM+wsqeX5(rJ4zK&(hkhc7*2 zUmjRB0S(-3#jbuLSCDyBfw(1a;8m3chpI^~ zrPevT^Tpj@5}yC4_Zrl+$%wVC60`LOpFax_)?;Ogm%>`?4k_W4aY|xlZb{IRat)Z1 zF=3|m$mK-mwa`N%&De`N$N3DQYj+FITQK0slCnEOxfOY^+7E09ri*g4*>5=xh3W+d zpAfe(x3g_5z?|G=qXVZ%*-Hv9nFEybUi%n~*hQhCIrHp!0Rfic{S2G^>96_vKi5X= z|5bi~!&+L}hd|lyuOLT;q({@HeV?$-G7g z9P2AeR9Fvn5i~4{6*-rX*$8*K7gGm1*vWPeJU67wydG_wex_v@pHhu`Acw_x}S z6wng=URDLNK4*Ilq`UayVTew=E@6blc47entH3WM43rbN50=Zvvh=PTqvO2^0^Y@x z%?@QC6j=I=PZ8*e3VEd=&7RN?{ooD%o)3xy3 zIm+9a^n6tQ2yUulpKWqA1>RYP9MU!6b>!noJGA$PK?e)^I(v2T%e2yHT@#N;=43<^ zlFPH-NJ-qP#Xuc$lCLHSo~$CO%|xgka3@&X+ob_jT$!@k*KGz3X#$1!U>iG-M39tm zkd#DkA9iXE#-4hU_G@IZPN~F# zq$H%3$Qi#j>Y0ikO0PX`Q9gNzj3D}I=D zR&PX7?VKi2_TktIUVoXXEM_wfp&@6SD;*R2P`{LLNQRa5{8q=tpTzBW*TfY#mK(e8!McUP>t`R;d&e<;}eG+xp+kD6Y#@&rp zn?+^SIh-OY1j!=rVj7(iY;E%{#@z+;f|UV73iu7hZ6l|y?_*M}%>$Q!9jX@RTTF<6 zCuc^V1p7ym6Pef^x1K?81QU$G^!1}rj}8ux+0+Qbe<2+xJyI~Wf;aLk@(8}*J#y@L z{SiNzH=nM&FTTXj*B))2(!Bw1=*I8tdv=d*C3;2M-g#Us%6R1s1N_*HBbUGln}m=P zUu1|Hx_kSvEl1uOPu)9$DarPW zhJI`B*7h=1ju8=ug&4#emcr&aN4?26Szyj<%T64M5Bsi(-+P}Y5ibh!^W%p6vNUG6 zm~K&6m+O)%)!yEo7{U51?|bX2DXT2%q1%XC$>VD#x$$#V_ItfULj_V#3s%dL(xxqSjaTy%_Jne->OTqM>%=M?Bb z0-t9)%;lWqzk2n7lXWU;zOLka;MJP7g#?e;K`D!_Uu?{>p&TZuT6_CJ5^1PB8~3pz zXPfR9)>Rm39gOQIZ9(ygy#p)hYm`2#cR~vUV~7~XTfZ0Z_iO$5t!(b!Z;rg2k0(EA zQlrssduPTW>-cqeo`Zv9sE+V)$Y7W;^p^8e;)T-EG8bA0(gW`s$>@iVTMgu%HLiEH z7~}%8)BKi6UBL{RY4D>BGDIR?+%6Hg+$Yf1@e*$FI8O`J@)v&f&v&9nJr)BjK5y>v zF}_im+8aOpjEx;dKd66($M+|0uP>~OhC}YfO>``YoCG~w1~p`m$6dw{m1EP>gzT)_ zs>GUGy3qoBQii1x>sA40?ozLZKDV>hQ8rFbB*{j-ovqQe)-U=N7{%|b8KAnw&oA`r zffg)eZl3j#p>g3e!5`N?b|bGwwEn2L17kRTqt2KO{YhCloI@rx)TZ2p1#kMTO(tt& z!!<*Wv+FHV|7^)_FP8a>v3 zGS^(~fddLx_{<@vC{`|S^QW5I^BkR56n%bIh zVUGlK?DSe6bVI$fPjL9B1n-gy@U{2s7bJbfP@};KKo7R7{3I+ORD$W_- zGw7{v-_zAqls2@^&-CeB6Y-jm*I=1rG$&Uw;<2qbo9RQ%On=Tm5+a^i(A4mua`mzf z8OO<$(%aKtoR>FMv7Z6=QtOzhSdNB}SBt>c-q)Fz#il54MH>q;@tSMi%q`7rX4GSk z9H)6rr0q<0ZMoFSiC3Q=90^hC9^d&m`?!&Vna3hede!MF(U^)9?sF@Z5(TZ%6}Dc?_@i~;Qx5BPu@NE0Ud*hO zjdPEBHM!*I&;=}&Q`+S%zgqNbQ8f}mH%S31H6mw)mTS-lh5C^{tnPjlIen7ucL5YSFBUYIIRHv(sK3${L&^ zpCs*Dq-L7nTVHx|;Hc_FWg2*zZP;<1EEE2CzmZx>E%{mv{JivZ<#JVR3xN>JXmiiN zpG?26ho1RC7HjwKiTcm+$$aNpS?q!Ty-N7Rk=+?T$$$M@_lt1}8`}ysz9JVdk5RkH zi7Q?!w{@#M6oDl>`4Ctbh?yByyP!WF{Cp;rGcfN?yJreEqR*GxAfuhGzQR2Ve%*CX=WG_U zewtHx-|ICy7?Dxd=$50|@hORyG+#P>F)^`zJMaa8rvJb*Mma^!PW*D-C;v{HvHFxUh_s?*I4viX?6qeUtm2IYb6=0<#)4$; zhed$+Lzmo(F?ZhSPdm!qkXyFSDl0fPUY5R2yn{U*A$lwXNlpEqYX3RYyJT|W?~Cuf z$tI5mfho3Jr`3<_Uj;7fOIL4fjFJ3Pz)F^Q@ash6b)GBJ{=)L#II>YGKKEB?+=-R8 zGpY3LI$LoCHnV);*e9<(maYt_>1077&ts2 zS5!7G5U1g=#=%7F@5pJS<(;EO-rgU1&Z;CN3kzjotswHBjI{337w3$@R9V@iuKI6A znp$EWqx|a*P2(Vj4}+Hw4lg`c$`SpevyF#tNZ7B(!FzfOs_OKFx2BkT(~IjRmsb6* zrL*=ue`yDxj7H9Z_br1;#KCj4KG?S!L;snwdN9Pl-68>F)*O|iXVN<}^L<>#XQIZa zxkviI29~PDTTWRX_eI|ASze7+6rP;82jb7pSw#XEoEmdn)ywJNe$MPpd$ppR$^t8H zCqh!u`ID(X&9al{WVmJh%dNP7{CukxDVT_Ptoqjg+<6B8!rmU@tb?v=b;f$sgc5}1 zkMKN_E*`Lu5MHk{tNS zLG_}|0cI2?`KDuW$a#ae#}Ea+efDM%=Q6W?Y$+%hC-RNBt@-WCOH`C?`q?rkn2j%9 zc}Khc*PY=SIkIt^$7dK6H=iY2S&G4VN!p#xxAo;WF0{RsoIDo2=MFiJJUs@^tyLpL zL3G(`g~n#e5BauQ3UHYV*6s>Lrieph9Z;1)ROt55=$7`qn7eWUB|qQrIe+aidiI^w zEQ@8(#L6a{ywlo%tS!5SQ>s31Yr9Pj%KCn(HBO7!i}}CX?t$|l&@Be1g{Y2f)lxz{ zZYBWkSs`JkmFq7dQJk1-bPe}wND6~!+BtWi2gC2b|h8#oXc#{AR7}=y%?M- zySoX@^~C*g5IXmjN18|$n@nbh!KhII(~FE`Y-0q{zzs@x=l?t+#<2WS;hQE{+?zLP zej56=%dvOM3V_WMp0{?IdyrGL?z1=w*C5m~rZ=>rOCh|Ry0f8-4)7H^Gc&ihWrR*;hV0unmh2P}qeE-iqB!?47~~&V@qLRrW!{h2li#p)ec& z$&KoXTYdH?-tmq+Bwqw^}Y6OKwfvDr1&Cq(w!Re!{apEou8o+L`6m70ZmVz9wbZ13>SCTuqKfK8^ zlb(yv#&_4Hfz=Hh_$Q2L2~u;Npw->&lm{Lg-=DJoNHZQ-zCc4Z?B0lv=Jc`1fbHG2 zv6e%`7B9kN&U9WxR?Ks3&&Iy2))csi*s=XXi^`TUt&dCD{=D~&$9cNv%}JtsUQRmP z{R1yh=H3UzZFJ3R`FJ^0fl+%S)DH|2S$ChN*3$-Oaq}ye0j09Op;<$0wjx=&Iuu*j z$l;gE?y_q72Ml03BHWgwXd|pxZL;PaIp<8S851H}wx!CecFs8JG;m&vNz27UQ|u!< z@iq*mwtfBf`_kchtl8=_giUutJ-1tSk9H0L_J3RQ4b$pjQCs1isYo~Kn@GA5=q~RY z?RE7P>?r-7i+dzY6cG3qa^h&txpdu=2h9csUO*do=5T$?QhMD%+eqR0XSNNQx?ENB zw@op6CZePHjIcvC+6&EI_JnY+TcQWsCgK|nfCE7jJK zf-W|(S22!e{D!51{EYbZrQOTh7qxPYa0sIkfJ^{9!OV74&X+Lz`KJqr9;|<2mTu)w zO(iHW(^g5>WTmWxyyhP37-y{SIi7tpEgadzDoNL&GHp=1>}#Im#8g(cSZ0T8$;Btc zIsf>jWg2xR&Ci^3@AlKpW(im0TLEZ+w@dn())i|+Q8;y*XUwTMM#6}HvZs@jDH3lq zlWNV;vPt>)Swr05#BH!mPe*^7B{o#wX zOP|ZeX#~X}V~hl5g-}?KV;&u}LKS~F_gQ;x)Yz1a=KF`!-fPP_o`|F32Q3GAFC9{T zckM>L%fi!#+oLi6{X``m55j#K^P4sH-OcD8Vpm>O)jH#neMINe=J@hp9AN2zSa^p9 z+r=f48~ndi{NR)=xd?an`rrx&nrI#!985y6o}RkD@XL^$>9pM1&Q^$Zz#KKBXM|;V z5IzEK24Cjz@B)-s2~L1@{@^lIaH%mWTw<{Cq+kAuUSSWgp79!=S;LlMr`fTq{QTEC*zvTub6~1196T<zC22otBgJo{>Bl6Br46$~H;+4$OXLS@{ZgWMWJ|*8{3Uv%uEy)|^GQKe)R~ND zJ1+2ZNt&F>)9dL!I&LEQxFFR}6Lh;~SGRe9x<0%AJ+!bsKI*Jo4o|@9rp&{InuxNOP4+Yj zq~Tr53-Ab!KfyxD8Ibg~B}r|^hAd;Li2>2Yr3Ff>>?0lXi_5XYXENcrj$b%siYaog z9hVO^_>m~! zV*HOp)W_kORPsSCO9wxiyBp`%5p36Vo&i4~4KlwFjd$mdoPKezJUHHWC+j0m`xlOE z;I&-7)vPd9tyyo+;2;32y4RNGPx4EwXtHal*K)T(*bGd!#B&elEAEzb;rHUBF&Br3 z&JUl|DW5X7jf8RQd2?KxVndf=N?MgtQmiWL?>DS3DZZ1Kmz+^yQ7mXW7iggR?9gL0 z&!78TV*h*hgXdjINJ!2lDn7D=joMs-EnZIi_x66rX$OGXK?bA;_|F*?UAvLz{IN%~ zMfiHnjHgj^P9SZO$7QunS1j$QC&_PQb!OXtOoiv`gZWl`0UFhfaBo05qVa{1Fe0)n z^QV^$;jLT=s-*Y(fpD>*ijx+}BHkdUPA*Z^cI(WUH5Nh&Z@$5FZIX*SV?x6n7iJ~d zPP5H~ZNTH-BpSR056xKhO2|pXn8j$^CP)Jtp`3BGzgZgXfH2}-#Yi~FNp3!w{{C_8O#~(>{5W&*t5k*=xzQK5tyRAqIv~bAj)T}4 z;_q6BvYp!tKRZ|=L}k1t3U-!kcXV6LumYOXX_rJAug+M9dTf2x3>dFh?0E5}m)13{ zP#CiHc!~Vy4!-w(2>`SA673v?m|W8#DfiwysuY0b5~0r%vDgV5RzI96;W&3zxt)px zc`Ai6c8UdAkn=0#6uQ|#E2Yo1t5IV9w3os)p?Dpau88JipA0&kE8DNQM~V*C!>a>V z$cjBhjsm^?9amwliRVATpK)^9_mGGs%w$wAjY@R+GT%!1s;-bzf38k_pjJA-Xq4pa zZsQtCMETna>Ix>UE~R$QJhTVM$Mv<9!GU@8X%X;1WaK5LfA>^KtC(7MSNX)ujyk#H zo3!!arGFGj0>Ep(6umS#{7m2Fg!#z!m}{LKiSkc9BhM>UQzOfpO6m-MK0ZdXi!k)o zMd5#@?RHqTj?O-`35N?+5I>s>AczRC@6kcjtYgPk)@Gvv%q=V|4l@3c_BnlmRXF?!BzqaG!oc!109xz)7sh8L+S(3|&l9AXc_d97RkS8kyJNCVi%JS- z%Oyen6Xjr}7&KL#EFPG;Wd68SN$S7saNjS`phNP=)1%r&B348x+R;kL$&l z*m$GDI5T`L5XiZ{jIC(JKCsIUo0_L#)at9rT@AbA4K7Vnu40W|%uI6Gia#tYT7;+tJiNCc8PS8HaQ1>^`c*kM^tAtY(w%4B}#%bl&m8`u6MzGGi zv(5iUCyVpP8m(t`1b#WY zms~w_C7zk5sQ7lmM-daaJ-~KdynoOmmuj;iDOXc%xOSr0N0GB}c8?l4di#3r48g`n3I*WQ?^$SiBopsD9m>(llN=JY%i`VMj z)wU!4Gc5>oYU1I^|f#Toe9Wb%m7+I9h$;8t6W)lOY_jKU<8Y zTJDl8xn&<$wyr;tE3qP578lieLg`IzyuL+uRgeCQXjrP`%mA1u~ z(G?sT4tl^JCEob}a#~y!#dRd0>FyW%vS7E1f3EnB=U@IK`)U+8uBFH4K9vw_1SqIC zBMU%pCa0#Gsn~j6dMIn(2${05u-lP4f(oT)5@3pxyC@;iJGAUW;8gQe0i zv&9VpjdAlY^aE~h`Yd%4nXMc`!Q56~J-#Szh_Oocv6sgt89Y{cwPk928>$}k4_`Jg zfO0}bZ}Dt?$Qqx^(7Z~sL_-xn6AlAQwb)Z4C_8~`uN*<3lcWg5j(YKqi#}%KL!AHgcqX+cbKXI((M(YfC82an6789|{?CCp3A-;O9 zuC51&8GnVacVZoBhO)?S%*%6w9e#O?vGP~KvvOiO+(rw)7u>JhJIT;MQ(fJ*q(x8# zEG{9^bWm>=_&c~`3 z4^V@G0J@JX?EWCX$(k-I>V5!;;;I7Zxu~Nj7cOo=qbRpFcSs+m4NJV!5QuEZNtn8K zSyo2O*7C?FgUB`J1H}BjMgBcn>jHqx#f{i$-&9vD_?nlD%hOHIDevlHOfVMpe0oKf zgKye8u{_1f60`gMLhg~%e-ia4^T+7ejrA2+ZdYb*ix#h#e&CJ9g4|jQZwbtSbAVpo z2j(92c6N3;S}7Z5=Cvmkp66tGaA@-hMh(;idO@60uUiZnZ46K4>&4FRUdP{<<8y^p zD>p@@9+!*j8lUR_p6$Pz)~j{-laT%y@kYw88z&;bsEw4mh(ZyjUIR!_@b)*qAhBnA zvG3m{c|_i5ocY}B0;b&fTJenG`g$}^0XW)`SVRGe0-`P5;^H{j`2e*pkPY`ri8J-n z_O79{`-;iy5HKK?e!{G$S+5Dm#vHW(%L1`jBy;4fMgKo>I#;|`K5N!?Tzj5#;9wdY z1g=?OksMbxv<2D)xX-hPT|47GiA(fNG}qu+jrDOGC|OLY=06hht?{tV_H#kh6%zd~mbX zs%LQ3qs^(Yz_D7-0BJi$bbj9srwq3TA@#RDQ7bVW#4h}#p2D_ZEAp|>j1s?vA* zTw#V7c=)!<17~8{CH2YF)~Cl>G+k6(aNio~qY%1S^Ht8Z ze|VN@X=S;&8n-8vzsC+T*cEQ~4Ph{=L<40|>sj$MH8JlHe6Vai8JEB&Ak3#Oh(aX= zfOp-$Zwj*-QjOnJp&H2(z*)R!oxfJ#HpXW&WH}V4lULU(F3YFhX}%EK;z@u#+Bg!h z*0B3xaA@#Gn>O!BE#8v{Moctk`MKr2ZqJ*cX2oV*BRU0rh0N?8cE0az;{XuD?1rrZ za$FthP#n*wqMIgRb4c}><@%h_v%)yw%d{K(p!R$wbA<3EO{uws?~YxQXY6}d`{$98 z8WMa+?}_){g_M(tmZlj6#LR6537;Pv&1oh1RA^gd8;~LHPQg2A@Bh`%_T*4vr)Fej zRWBnWQ}=)hZE0&Z^tpI}ER2P|Zxs**so=m-iRwz94Xr=~qCS?pIoOT=&nN%$nD1FV zNb?t`?lauxkB{{&fnhVLS`JRvI3uAw2Un9KL;)=U0#)u?OtjRq{Yjcn%WXANKviJZ~VVQ+Fd47+*>&=k#Tn|EG$bO#oQb9%Jy*`$ppBG&swNL1cs8N6}YS7YB-<@J~!d&%YsMOguO96W?3%lo`mz9{cuWV5@JC34j_RWKHp zWQ=icMsdpAeS2>AbNHHj(53_kioPB;W1w<(G;E=RI@ot9t;s?2`wuCLj0KF621}@; z7O3?q$)pOrDX@f_0+4yUIu8JwE=^(+Wg1dN+*Tf8#H9poUV2^{o^AxwM$#oJg7w&U z;jbX}P9Qhzb*6n+^~3+snw8)o4!#mliG}MCYTeMF%8{FD+}CkyPY4)#s0oCy+V#`E zskf`EYr{mUxmAEIS|H|4T6&*qL#f&CSWm%2BM-hZj6mP^sk+ymksXq?U%GFX5145Q zfzj@0{6+xKSWv{HCm3uq2lN$+%KufltXWM8s0XGHIl8@7ouqrw~z=*>%Z--yCY-dXx6* z_la2PZCgIr>AYJgi;Z;rMzw7>*rMI~$AI1(tegJ6S-HHPayjGpXsf`tK61eNH9@~I zApouWk%4I}3stAIHEbs1SM^6b094Yg&vN!j_(A{a${&%AMKYe(w|$*NetDns<)CB%EdY8qBSDDhFLEla3O9|0Up@$;rktl^I;7<7!_la>lWG{T(TmL?5 z7VJq2iu851BqcQ2f8rirDy+goBX!$Gpsg)01p>{S_x8xx;BOLM;!J;L zHf_K+sMvO=sT~02q)Cjk9DvI5fj1Q9t_)L1)RK0!u7HB_?6;>>KQchGkV8v&`3jWc z&FMm{d$5eFZ3#?o`By zTfixM{&`Rz5X;ihUTS!y`Fn$awA>88QALOz)<&wZ))5AY7e3Vxpjw*rT<6+)v`~NXNnuKElnmfQi?mdbMteKmx7l9 ze<_T3_WcN4w1q`TqDFHd83BfX6%-;i}2U(P#%ACkYJbq6IhHHtO!U9 zqyeyueRrW1l;=GOReSqz0qK^^oRyORipEP&(d!NDQcXf^K=_X#fh zo}S?>mGEevqo?C|r*T@^S|%puUupl77k$$_$vJ6e9GCBTh8}U;E^(}v66z9y8wG#X&w zBOskALG>mq%8HFr6~Az1mtVNt($;3k5q4n2`p?Ie6fb}p;}bnQjv`F%S_rv9xv$xb zj63<_={f%&|BmeThXQXb*Nn<|T4>;o|CJ1Q!(u~NI6sf9W%s@IxJdKb(p|zcQ8g)& zoGs7x79V9KXeaLhZ%1gfVll(H%_myn$7}Dr8@opEqn9gdobjO29LJdUGCb}pVs!Cn zNI>_ALV8txXBJ)Qzfqs`UX6^M8m%*^a8DMnkHD^iN=_$(!j`h@C{~w&x&%OJ;3(SV zw_(g&qSh=5KTAW-&s4+rWbya-{tkO|lLX$gm;|jY(q0Cf8pQfiA9xOvc#vDCG}V`I ze||k}FlgBz(fcr{SFugNx}N?#Fmn5^ROpIL5YBKILSHzBVq?$ zs%0m#iUX!r^Xsl}`; zy&xfSjSAs-H(u2&QBV#?zAG@e?3kMz&}}{9LtW(OxuKNa zTBhOA&E^7{pakilQ8+a$4zYOg_G9Vp5Li5@#D1ZYE+C4aPETjg*!R>*U-E*kObekK z=68v$?lVohI|n3srCRza?5E1%uUEs*B`-p@5~;qsN;KzjpK|Q{R-SHAS1w z4()C+1NP=jlvQ`%kq;sNlfr*zPv%qU=#*)Z=K@D>Ps#lH;7UBQ(rZI&1n2OuTH+`O z12+<(-GggflQ{B84UT@L3Mak3jtjYugZ@@+ZqQ+u^MLjolilJyB(GhEo5InHBhI%6 z1_t=A3iW(_=^4pk3fNcsn>m^{m8Awa4+ck+*;LF$^q7ynTd(qQyj*_RCQUe@Os$vC zh3<#|OZ?jNgR#JBsYP>T7fR{$DJd9`dvdl0wqdBwb=@J#QhB_VH}B<3j+al??Usd` z7?|9ABA?6_mYIP6Rfnfy+~+~DH%UoZvu<(evZd#)jSc>R$32Ao&l&~FPd;x@J zp3N%F8hm&unoX%y+_@Y5CQmJvS!Q=R79LBT6_H@Rt&}V(BRjab@UH67MeP{piQh3ht`8=o6B5LM)!DGZlGX!ofxQ1hJ{dHe>TS`3aJX_&4Olq}_q`?ivx zpkQoHR_t9m)$0H!zcb1Zrkw)aS!AUBtlm-SHRZbz96~|}Vz=1>7G7nT=(!Q3H+vE2 ztggEOQ%G9_kk=@)UI4;z4k{Qi4Kru!)+KJ<-{{fI|xwZSEJ$)ak2R|j}HH-;XZxGE6iU55un z9*wIfUw9oo4hWr9b!sR%`+I|4kc^#NPWj3n)-Rf}J0S++%oh1Xp7t zFfVUs1IrVe<18MVUfcl6dEm}^C5f#ptqeV$7_*aK&9L#q2g0jl0};!Ka?BSH3V3cFGd-z%g$-zpC9rMBnjJn9J*X$JUb{nI%k( zl!F4g-?0!1`#+631q)p~PFf6(K0YmH+(iMt1(*~>#jO-lpljho@8z6_g9~S93p@da z+5An`A_gMx>(izR_u}xBXW>9wJ!Ef+X_mzn?(nq?mhjyz%7Ky=e`7VCk}ig!o*Z75iLv#%7JDCtRpjXHP7Dk0q*|8n<~K z&jezss%FFWca7H8m}7e`TbJ??q%B~kh6+Zuv;{uQOrGC?k<))Z^?u()x}!!$BsvtE z@}4w2adZL)MvKVfeODr`0mV-;PzK!wM*iEr=o#?!MKzTZ*a8tPOwF62=mb zsS4tB&zWkxCy1ET#Z*^2MRA2?=8;5H#`*N)46BE+FeA_oBF@&f6)@$;q;enBzG&oK zs&M=ReXZEL77rsiWwo3XJUS3)Y{=t)A1n$e+Mo>T@v5t;y&>R2x&uEsr0?dz?D}{ zm3~7$5)zoNmfdHB-a-Yx$3q#%(jb}-Gu=|*p$a?Snj<*!b zk}6hk75;(B2?*o@5}qctKCVMaNoOS+odK(WHX!AZv4Q;n}YrJ^_Be zk+$(Gamv=(5_pD-w^t5jM;2)su$2QGB`@ecJ8N2EvFapnB;w=i7t7j{xW4|Q@w897 zD@|Gsd~xw#=X!-to5MgUr9E*^pZ_j@-%S?b`=6KX{1?76c=yE)nHU@APZ8O`)@bI; zURZeQSq?X`G|IVs@xt`k(cV30uJL=p|2Uy~!zAV@+vor*0E!lyG?dT_8>sH6wjnX_ zQ1??W4$=X>1l&qqm0N%6KoduH813+OQ$wJ-mE;3r>?YY{W9Ash=J{p$tbRk+McLUZ z%xla=GLKCFzJO$Pzi!+c!w)>11+07W%$nc3cf4l=xCes_=1DdHLDX?7$`Vx@&)4ax zd2#BMN{C#PE88Vg+QYL&uLlc;;|^!Qy0 zVG@C%))xnn0Gfh!1vb8A#5YN!>A}V4e1$ADpbi_Xy_ggF5CR;h85R$kwYEz@?g2XW zP6DQ{fUK+)=#CL=Yb%m5$^{iW{(;Vz<1062Wqgmmm=C|B%g)W5UU&*V0m&XHAKMOm-Sc-}1*X7*kXZlwRuPep9ga)LBmx6E zwNC#&peJpsQ;-?hceJ|0XEX<-kIJun#&Ih8ExfDeaf&bmaC7?Rq`)9HF#N$CN8Ywn zSyL7{|NM~m(4V5TECLE-7wd^==lRC8B$@VfMH_0s9nC3a@zD4(HDYQ>HWf+$@rhZ+ zK)GFbAQ;^UN}#E5P6_{~fJg^rO=M%Po3|5LhWalhqGz_LlAtg{D3e#A%0EUVZlr$5 zE2&ae+#%d3Qm_!X1UTB(V6=mfZklNDD$||__l^hXFzA8?x>Y-ba44q*%*tQ9fgW$TWpt)P6@4=}mxs6xXBfQrs=b{kB} z3qS-pR!f$}*pMv+w2JMlGr6N)8{*tYOq-h*1q`s?HMI0hb2)_$-9MY@u)KW)V5ZJT zCPE6zGBwrI2Baa08RyHznJ@`nJfvvNLSGR`%h$FNt-Fi z`clDIPK{A$pTLM=p+Ma|~>3q;lMF|h0U5h*exiCGf1S!*ZC^-P*6_(C8 z_hI{sbiRW+|BdzwnxMPX|EO{lX;T|dBw+J|TpMms*C1a~!>RarCz9zy)jf~9C)@X! zSHBe)^r4x{l>qqX-;u!4w0w3SKlI1g9||lMufE)+{m9tK1d}5Cy%$q4W|Q{(Lgqm* z6rkzlwP=oGCW7lR-k+|xj+Cm>2`?b%PKB=kX1g#9_2BjKJJBqX^By+mS3710MIsfG9wLm@A~RWkO`y9HV~PrkT*#=hiw z+|o(pd@96t__h3vtIJu`TCJ5G-24Do4cH_13p z`>wuG{f1pGlnq8x`Ht{h4b(`Svy1=ec@@ zdq7-x1rT&VIfIprm7h;oA5_giA_~I3Gnf4G1FdxK71Mpb_pkSv-+rhA(DvAh#AaSC zD7_iJt@CHAQqB5THOp{7Lp|d@{KEujMj9;EwDf3w0JssFpVZ>k zTDL99IJ4^k`V8ybOSt1dp`fXyF|`?N_$~>~y9wuv^BW7x^7K#r+npJ*Mq6u#_7L0Z zPxrrzKF&L`*>Sh6_P$zlX2=21UC3>`V1uVGF2#+9L~VFI1*rBMI_JQmNhbtZ=`|&0*xjKRKM*#IACvE z?8Als-WJW$!qbPR`t5ia*r5@WkNuR7r2tz6U|BrVHBDg;*=&C&q0eii*7_au{e5e{ zn7t!GJ!=z?pN)89cN&BMJBL%&vce6kEOd5;gnc9wmq$n~Y2WE&?~VArzMs`?3Os)o`9pip3j-$$(Y?_Z)z{2v2vvIjIKHc9e^o+hPjh^OX^Fvx!#o zdd|nOtv*%#;MDx4kqxSL?%`2pT8AIXy2`S*7xPk0zx`UoRh|;*)qG%g`LSQykHI2C zG(0p}=0qE<3+DYJMZ1!LhUf=vr$GbWf+hyqx5PmGjIAH1%Gs}1XYk4FiC!sV#cAtL z7vVmSH9EStFBP6Sr6fF7X*SpZLrdZs43$0nl^=k7b|Gb|$ZO{HKj`t?WfE-St!HG> zb)HghACk76%krAVMLw%+fu;g{l^#j^1&BpG;Ttl4EFhtk1F1V-JrAaP)&lMuf=Q#^ zT(Xq51yLxnBG=qk8eAbF$umQ?yM^my>7D_}ONFa;!fC-?Vrs->f>L!Hy%qQPl42I0 z!usoTn==Ohp?o{AozfF}O9*DWLD)u*$OhYSxQs5TcxJxAm^E_t_DL4dZlh=uYGsMV zfPa3sMeDO;=xVrbUTmS;1q9fy;L+Cz%gC7WlRxqIKRK2Y=axU%4=(SR<;oZxlL?i? zttQ{hH9B<#(qc1lDj%@Lv0K(a8N3hsKy_rh|9NNe;!y(%qdl!i6TmOE?=0x#8hMfg zMA+-(&?B%tfj)s*oG|}#R}>K2gjNrNm|6LKtnnYw*H}Ib2k&FDDDbvz%#PPSlD`g}?lg1zPxP0G-#N z*wEO%;y907-c+91q2PGtVtQbsKI*3iZ2GytALl@$c3{0bXQWzO+8b1Bn$5MY>tYPbnh>@OuY_>Hb_W2pz?mneMXycQYfI+g{>ZTm6-<3 z&#jeHBatf#+;^lMoL`)yb=Ytkit6mh{R4&`=qAhP#V|f)Td!{8@^PLf;>v^DDC(dc zl1&hAC|x_i&I+hakn3!{PCLs~%4cI1o4amVhJngUs^RR=!t*Durn5pi21u>nu@H4c z6YI0`J;(b58BT?c3pCBOX6#l1RLOhF0St9Z7W4b41lc1`dnEmC9S@BaRm1d3_-|rz zN7zjCGUSa}?fFaUl$29bFlM!fHf)IZJOlr;6ds}xqUDm@rM{Ol&548Bt;gqc>v)EP zOh&h>^SviLOs^P#njvWY^(Hg0&F7^|)2YYh!M)An5|*2!E4YoKBXkP+lk&i=DP?K#*^e8B$5tKfHo6^;PG<)JBa{8z= z7}_B=40= z2CUQ}a)b8I+h%B?%FpM=;>3c-l;uE_8$avZmr;C) zYl@F%T1*&0x~;~p98clP=!h6Fc8G|f0uz(n7|{U)gj#Y0;|uRdNXEeqxY&yEaKy+Shf2yOQVvQX0VS^zH48F*=d@ zFTZnyo>}hkL-6HC{=OCR^9>yFrp>ESA2%AZhy}R)at&c8%xD&b9H?{K<)Wk*9L@xZtF(2 zSz_+mOs!$auEdsVv-u?k_Kb(N81f@BYu>GA!M*3(q4N+xv6O?Ncmg*Q2kSTQTrm(~ zQn9diERIR+EAN98dVX}4-|11Az0(-D^tq9C55(MH4A9rFmf1iqUK1X@O1|GO!wL7l zSiyP>`Z^pDpoP+{HUJP4&Id(}X~A@zPT1KVp7VQ_Ill&9NUhI;jew#TYsAez&?_5E~WDEtjmahlP)l34Bne)Q#xB* zVy07Ck|k=i0%;n zq`3;(mmh{B9^>L5v3t5t@4x%}zkii7ez$otxjcgOX>-Y9?4Bj zeVRJIxtgGrTj}yehJM%kLEK2>M48jl&pq;b0p{uWnjRdpfMML$?g7w;x1w#668g%` z`ldFRDC9{wJ(t!-?j(Z`=S%Cnn;(NYJiiOcWsh`xf9V7DLMpExc}rvjsx$rChv2DjbFFFj2+BT&ar+G{`C12n++8{+eoOc~DtE&3QJ zOf{y}5~R!i0h=(zUc7wx8gM%I7iv8HMtxaE%7S|nB4q(s&J0lQ)R-KAp!9aWp^e-? z!$5!I%iD*kkYm7Z!eD(bbCITy?sw-;YQ&~8no8r1!2OXAGI$pQ3g&>JHR$9`AtAHn zh1lx^g#UkN#}hcmu)yBZ!Euap9M|^&7ap&b$EykYTBA8jG`kyHEs-Kj!ga-+_N@|i z<<>)zWZ=j^02y_z$OwT@m$`#-_nbYisU{{?gevSqwm0OC%59f}U@A7S@P!=_$!I7BManZUP%fT3|FO{Dr%zxU|0gWb5uLgU`mJAoB$VEm#)d^+ z?FPM@6RGt%<({kM;4U9@9Rc5<(a1@kL6k6MHpxEGOm!@J7t_TcQHRx#L@TF4`rvOO zV=$m5T@Y4x1!ajh6W&?Zb%i$A2)3b;UMsN6FmqYtMF%aZ)RAK@gF!@C>Iwk~CXDgy zZjIBoK7BUMR34i}3dy~@&J|3?d7XeO(_#r+*3)gUi(OfP1HB_`2ps>lN`g&xN%)UX zPA1uFbrsik(<31q#rorZ1eFPEQzSzp7?LN^X;0Q1#|vGNAyO9#x4 z@24CXIY3f?XLh^#l5$oIKeZ#y+5@5;oBV18yEnMl8T*OUzTuR6Gf|svX5wt}PEYa^ zAs1tEUl5Lsv{F`)OKOCdf>FnP!XbvZ= z0`RmVz*9)5{~JN{4k~69>Mg-6n@3ECO5jps+rBjtg^4JTKaOK8J;+tmr=p>W_0 zpz9(u!u6ywqA~OkGutj`TP5AggVk)?ltUC~rsQ^<6A~iV`RA+^!V`l;P$K96O&$F% zBUa|Si4v^`nK844tOo_!+-D=%A0d7;hy8aS+N=HyGXMU!%b>lZla87i#b@~BSC7|* z;0<~#eT5h&WKFZ)kQMPJE-u6Hl4nDmBk&3KKi@FBwGAp`Z|0^4rBYk^Zd8>~yK1*u z)}VDOuDaG;6NY6Je)hWjy4qvzPl212b#u$mghb=+ukGEnbx)K)o{99>U)f{4U6_5q z3;IGB1QltI>U?@=&HJd%$F3XueT@CcKQkQrSskO4-hk`WYG^X%SRY}}Pm(aMr8g`a zFHZV8I5;$v7QvlI3=QT&4AJ=>v=V&!yu;Y#RYB1r&u`_IutW*tn=Xs~waBh3{$rd0 z?;v){rp#p-%H%V4F5W#S|Dj=?r_*3Y7^Tem<0*qHCR~&p zw#=!o*V=SnB(*FQ6RqfKfBH5Yj<6au7 z?T928oAg+e4(i7+*r#(^9 zQ`VYhsQEGR79*LnlOTNb=uZ~UtIX45;M>MksFEiiJbkf|+S5sZdfEKEMOV0A2$@qF zc6T1?uHKBugqv!;H}TMYcgUFeA>f0C=y#hOM(Ob-Ieg+mQ|Uin2onYXC%sYmXxF!@ zGk?Au2r;57uT{5xU8#@;{{^~4diM+6mfbzZp2X9!fwa^6Uyl4dk)v>lj2%i3+~}t| zOqCIAJqw&nuc}4J_+UZqXd)w+Qev_5VrSSQP`S!;u4#p~BtER8flOxX%xwMs5)c^? zlH4j5f(h0HTB9_hkKiGgx!W68TN0%8Zr-0Tb$-6V%FyEJ>GnD_jBs$!E{;=B7Sg|8 z=sEv2$9b#kID|#sifNCAd>L87zaJw4j6T92k4F?$U*BNH!e}rbKCLUYQds_U?p}kg zRH)|6RZt_$2XQBSl8c-VFqmVD-A}~dFCtBrd3?ApZ}kiU7s-Q5k2_y_i9nbEI|87< z(^vbZerdQi7M>^ykTSyr1*|nA`tYuC4*3WkRwKlz8JPgkTATzmnZ<&yK22g5 z2g?PAjWe*@u%pu-I+_hVTM>;bi}a5M^4V#h)UJ*CmP~1o<94^M(aE*DHD%7dml0h* zy)qGB=(gCMAk#paxtqXgSn#TY%c_w5y~|C@&|{nu**LT~{}Hn|&&w6oW#IgDgsdN_ zMpakC9q;MuB;k%7i~tIN1~?Vjpzs4Xe><17yZp&_*oWQBjTbt!_~eez-U)?;t~NF360{Vh(Z$Z(~&iRowbNa)oXD-oV4(^Q+oC@Kia zWfVWiieq~b>r`X#Id?R9>W0X5_9U;gJ!L!Km|jFG{P{t`3w@!?1?`-06+|B_8HOcZ zH5PA9#DMI^UFfcda-K_#+5!w)b#p60_9ruWKrUAb;iIE*xfuxibTEFu`zw@uAvaD- zWFCh8>4=-2_oTQnMMXwfnQ~qE&4}UIFKPK*b-roPW;#kA07S_(TFDE&oV3wJi;>?A zt=U-{CX>RXuRRDC<3-TMs4^KKE=Xqh)r}AvM!**D{xvmJ*tqgxSU4xTb>BCjYna}9 z*Sl=P7y0ELOAx_RhFT5d9^YM+VNbUM_BR(%&p%xWWNkeAVX~C{gbAY5aT&uDv^xJ4 zuUwZE6qh39IR4WQ2;#@$?z#Q16R!U2J^@ZKQ_y*0{^h8sgM(cs=mfg8nmt@(Ms9Tx z#Z-B89C8u5QtWg06lOx9I*lv$vMRIU`Tg*PI-WQW{*UeUOQnnS&Q!l!9fso~`Hs4# z_xR2kDsugY0j9K8rabKleWM!GS4DXQQfgON+DVB??#ABzri??(zF#%~$+6g8-&j8AoUmeh%Xy!}ft&Bz{5QCOi+JIr zu1_8aSBiONKKYQ(srAp8`p?}NIm~D^{qY#VM;?3F)Wf-3-iBoQMH$000IN-9c9TQ9lwRP~XgG!1aFe>F{vPx76u41HItMgggyi=v)> z&wnp^yJgMREGC+u}wDn>YU^+t&GOhi`$=e>9Mhd8iA7+$QEGD=#8m?#;rcq z)}J8)8z+ntszzAwTMM+qI%yB@|EYozda0{GQU}`n((EpIw*FcRJ2Pt_?_*A_A?Sl_ z9ghm>Ec7W9_5jpOdoEAU1r-a=Ar~d+GHgxC-CdQh%}?F^E=izonSfMm)3ag8DN)ZY zK1iizfcUIZT<_2yJIF`|pS1oa2fb;z>~970Q9cbDD~k{BS9NFb0(41Y z=>C8f+eJ~}=z#o$$wGxn>ek1x{G_Y&^u1$25tq7{ccv{9q%5D9ueVT)cX#w5D@4?T z1`gzc{DP4^mPR%GLIe={B$2KYb{CX-bjip=6hZcT1t57mPqQ>e(1u?mEJ!7UMuJpNcjo{@0W##6Uv%WXhBvbgl(yUw0~Py725;-9!y^>OA+MC60H^TE zyR+lJxl9@g*V~O2x+B{ZLTHIO7SKopC86~%X{hf-(#TydHPOt1@u-iJU;-LnQ7{Lc zdYUVB7@q+(HNS?WJ`K?mM%|9E>@h^!iEiudW0nBnRNF_k)T9s5L^SUA83$H(sk`kg z8NJKd_P00MLuv!AJP}rct6^N^frHrQ)V>)@sVS>MNP}853K{=-X1MZ(BF}!e)|{to zmfEsg>w^j9E+n5ut+hpf9G~c8O@~>N4*gh&AKyP@{Zo5#4;}atmY_KMt6|o?G@!H; z=IPL08iP8YsRv&|q_zp7>ezyG)S(Z{<{%iS+bj7p;P_}&?6WiwNmj-l=%!t_%=DJI za;^xNa$WFS(+v@UH=tXVoMLvc^gF2%HQwM0Vn5HH*tw`Yev*?k`!wy7Dvcq^*FXq4 z74o^2)mRd)4@1oeDC`XL+1v%XzitbSo1i_pHawUK3X_!PW@5o@(-08!go12S+LKPY zSR&4;Y1&x?&NvYz~Gf zcG>*)KhDPAOLB$zpBJe;q5#LRcEC5f1$ay#=pYT08CVhxrti58=WBI407by|*n4et*kWs=s!#05a1f(9U3IK|M1cI`*+eM^Ncd5LL5A9X;f~>CZ0dXG#Ky7>uP6=oEWk zNes1D)Tp>K-w_4LDKWS1tFr50Ck6Nc2EK_XgcK(WrjmM<@e>B`z_E{2RSm&NNG#6n z_|I>Y1By1O{wR(6a*c1=f8 zduQ=am$oOlbM%3^fAT?n(|fr-Og6J4HJ^&>1%4@rtu0brlPfiZ+NDR`*f~oERt=y? zi$`v}*kJ_*4?@&cHS5;Y0lXj+M(Al0B#{6~ap2LX!# zq!gWv*Cb_cc0bq5AjTkCw^$E9x$)qu@67~8`6_jHT9QXvVK20O!>TV-P;Dm0tthRV zP962Q{?a*`7x+7tLVxFyfOTqZXHMX*%IPyxO|;*?od01j{`-AO;h!-WB2;q9rfY(R z8GQ_IgWh+5#|`MK(Sx=)ptArHc5YIGtk!lJR7KEmJABgh+qUKu8OcNChNNuHXMXm3 zWRPWJh}EtxNWHe#6g|_?&3Y0rlS_f8pT{R39;76{Bbbk5RX;He%ViNjgf*Xjei#Kw zzK%eA*c6ds$C&DEfk2_8|{f75oDH6!oZ#ay?KxeGU68MqXHls2VmmtLA5p7Q$7 z4$g_G*~J`=&We|oAon5)l{dLnfLLayRUlY3sb>LS%GjGzL1~Oc4}@3kzK2pmdM4b9 zseASR-z;qp;psooSTZ!OLkKkUUQ|euI*}ahZjM>DpeBKM%B;gVkM!A0coW?~JOc&X z^J1c+l)ScpyJ`zY+~l}Azahlr96v+iKDHKm7C(SoRJpmoat1NH`=pltjhAx;PB-mI z#_;YKe5Gyr3^TA#QVz+UyI!E~CGQRUv3^dk zC3{x`nc3amo(Ty49gzfCXMFLAqMw+qLBa~UK-*Kb>*;;{QW$O~tyZ7yS>85E%rJq6 zN`RR9+ndAwpa-4)t@ERxlos>=on{8{GjmhP$ta78hXk|qIC3_v9|yxz)Zg8gnif)K za!y7UKwazE;j@TR7_JDIM_?}OLWAc4RR}>hIgQf$sm9(?QQf{8$&%U@>$A!r5*=j(TjZ|tsc_HhjJ*ct8IA{5r0ScP@dd+ z7Q>kdCvj446{&JFSX&#qr&{&Ih2!rU(+h(m3SU zF#y>z_crwP{h3YC@k+8w;{--F6L}}oJ@qaqZqn##O|%T>T~!!25Z_*Mhr1p0R|~-+ z(0RY3OEA3Q$-1IvV%)E=Yfg5aw+1*-B>tXAeDjJU<=q7m2+5EEM<0qN3d9`VEM@<(u|K{)Qu`NVf>45IcCIa&9dQ00Wzcs1 zA?d*3pYzJ_=JSs1zXVp@G#OuU~i_{SDiYD zl4sxHzT4ArvhTeov`i0Wu9iW+D4_Y^fYxM64R8LsqLzFASHtOZ8Q>J_k1J zIfFCCklRLVPMXD&!4+Ti36O$P^=q&wv@!fvTR(Ep7wwA^=0q z4h6@7VyTn%M(zVMO#jfC>|6fx&b7Rj>Qd@3up(K<`{nsZIhcl$CZ}A46lFP!+V?*} zMuq6VB69~HsLcjq@;&XXMte;>XFm?ZeA<}$~?%P&n#PPybU^X zc_!}0O@8)2^i6cIdV(b6syn{*;&SSWP|i{peqSE)fON{?E6X*@&)#~RJ4ZRUDe8UH z9y*)+eV#*xJ&4{m(=qdEIPW=;HQte{E+rvcG#MMTVVkns8B_6)jH}O6>wY zzboE?5rTjah+m$R~il^IN3BsF)uQL$>pgpRfoU{{~B!k>C%5qKqe-HbI`~Mop zf`$Yo+BTGIu(NdynrF<+)eas$@Ty)j_?P;zBJ~$$7o^o9r;WO@pwhT~;^NmV_EvOe z!JX92C1p|M@ ztiz0JUzm0~>m!zZHz$X|Cdmk97Zg-{Gn#o_?5!_#`)ciPTKg3@0IAXoxQRK;w5+Fl z?;W_|?5`!Cm^#D@#ELIY58i5tVUFZ)JWDA5osb`%+-!Of6fMRlr|X}Wyh%*uVm7B6 z3M(B>?t?3ayQ{5|#^45{#ok_}1Z+DsRiCNI(_;Pn2cw?4MDV0R$$EL9q^BzZWkP)N-!XY3>eL z-hCTaO&7oWz1foZO&AokTN17X;*ZTqrxU7b$_(C4c?}$yj!=TLCrFA&v5DF?5&uQgH3Vr4uh9%;7r$UxxtP+LhC@rS@!KscXL} zX96^y_s}~}T`1@iyS(Q;Uaf9ZS4oH_Na6^ZG=(ww25t|h)RbsIrybNmi?6J?(ac|c z&cN@E^7Iuy$QknS4FlO3KorWPnWysr`+_*&O36cPBTQM^4BT>UsogjryBy8@CONT? zD7W+oD0$}RC=aG#L{90>h?ZR16-CdWjI#)i?hwdsd|WS!giDRj(cX+W-^;su<;Voj{>OU1?t_}| zI3bBbyeh|al-*pw5+BsI;Z*D4Pivk9-3V1P>8V)R*fswER6C3 z*DZE2x&lbW38;3v_j5QJ*Akj4pj^a=aD(FF8YI1XCw!;Gs{L~1HiK((f`XKAV*S*zcx!^-7^n<6F436nen8Ev?oB%OnTPZm{NTStS~CD z=OWA+IgfC(-7p7fRlIeBA1mvIAX@~~KohQO25wo%E?}(_4XQ;;Q9*G>I}R>XnK0fq ziVf5W&z?mV4im z)NGjhEgjIDYY(0oFjnr@~&G4Yz~WWrVtv0j|< z82NBscB$R})$L-T{3D3M1NgY=PWRhStp}11PtWPM-PBcHN!1~L>9tMq`FqCMk?a57 zy}`47At^A>Vx=#n2}p9?c{pPzps^dI zvETP`qQSTIm(fzjNYkCrb_rniAK}dIjQaK%GlUd^H9gWMAx`2u6Sm5-&nF9L3$c#U zAaYjqu&uR~1d5cel#H^E{<-as>Yi5V{Wt)7_PA)84`l^rdc5!LDfK)o!AvE@))e2{ zTw|N<`78#tMZTEBLcW2BFi+~&9LV{ae0eP&X4fz|C8HTrnks(zu{8c4e6b+G{|p*& zPw%U{VNeJ=2y+XrKOD**mfMXYISv$XDM#?ftAklPM3U|aZ?27Mp1EZu)dUrHQh2>= zUzvOPkT;?-DE4T_GuIgUh{76TXP~#SRnzod#eMp^|JR@724m|uyzRmw;}`?X67W)t z?&{zOHa!q;g)ALrujpRS)KySb6LVX?dz4d37g~x~Ev5GU2iyHQ`I(hSUf}Ld1P)1T zl{;ir#WLh;{dtVuOq5SQNF}I&;c?e608#sSXo2UfUDaThL=`k4Kya8Tb*Ey1u)O*c zdYHD*ZA%ibUEAw8gjaxqFu}k{GhB{7ZkZtOtoEBcEMwu1)XVo ziJ0nl*I1&>@B36HEi(XRMqRzpwbg$8iwI++L6PCZ8_ZEZwgIC7JU_TA&kfAUMfn1( zme!%7zN90AWp;Iso);#!oXtq+lagH?U;IzGqYWs z+wbecS&`b0jX+T)uhQs&K=oJkswPR3#)ejX8IE()U9J$1>XEzcXnjXfw6Ltc3hTs# zghT)&-LAY@n-OL{1nOe%ZeLI>mSk3fk*UYM{#BHW2+{j^ ziw5@_mZ{%{Zu?MWKdnu+8%tlQt9|_Cou{tuOtMDe#G<#g^=VC&4r^wM-%8vzDyV87 zs0O_Ql6^%b_af8M#_{h-vqJ|1(n?+O<@{RomQaLefAa{gj=uN@B>v$)h6p_o+n}27 zI4wS@Q_@uZ5O}thO*0!U#|=Z>#*N&`8vH? z7&CY1k|@y?#2oYI6FvFQgfxvUa+izS?mTR{oG5#RQ}joWJOVSnX6Gqg*V<}x=cNVV z-H)?yS%zMzyg&aesP!1TrI!|Vhmx~KDH@h7OtaIiXORr&LKNOgdp8-|tluyfpJ4tP zJJ+n9m7UGU^CrFf&Fi0ks)dtv;J|?%`K!4*kAFgXvg@iL5?6b~?UX03&}cN?z!@!z zz}kSd6?X^cVXXXaG}ew3ni0HTmLp!?xwVcs=30r-yTFn9TCzNfjmXEQ+0h-! zpR;o_d2Aey>FoNngp!d;(R#$nrMK|4Fu#$|aQu=nA|@drU5r^s#~8IfXH>%b!C2f! z&KR8$@SD4c>);y3_mic(bp2mGX3rjFuP?s8MqfG>1O4t_quZtzb5b=9><_kla^9@e zGX_Iga*JtA$+GV?QdLoj^q3ak~ z$S5BkEZ`j4bobxZ+PO38GJ7z*&6RC_&>$x#HBhD1K1n*YEk{krRJtR0?1d@0r$nf_ zfV#VG>tN@=kunxJ_T~=v_@eizU)IN2lrii9$Kl}fJPm+`6=!Ieo~4{alG)2=V$Wf8 z_*i5L<)5y3SK}Q9vjkGb*PcDG16FfxL3eATK;^>MMKiy;v!|IgrEcY1=cDc?QAglDJcIu&YB>dp_nZO8pf zxSAj1@(U5|1Dz+}iX`<=t5_^S=-`+?z}s0hJ3p~<@tnZuUok1b`fq?7RJ^A?VG63o z_1*lS20;aFhOU!Z@;T55Z@-QwgCbbqCYDoB+%})P(HY-=;Z_0OcI(b;G%~Mse@<-iF+F+!GpYDy^fE zM3xo{31xr6-X)Z5v3`Qdb>HS4Ev3;?T{D-4!${8~7HdD(Jz8RN-+28)Iv`2uG6-0& zyvz~3dXQmYI@qx-Gs`KZu#jzm_nWAUz6uz|VhO=7y+03KP z!GD)1uVbwjmN}X_TD!4Yg+h!~;pwlC%G*8!VWrkPcc_L#yCp7&dDrcvUbd;#Hc>JT zH4#?6Qb^soF~52I%eAGUL<;`!fu{n=vO3FCvH4b$41;HP^@O&LPKZE$zFtX={=up$ zhV@+Z?(QUEI0rV}ePlQWJ-dP@Xx^IrZ6p42*qxEsb5?^Vzt*tsC_da>ncr6 z4znIuWXj`2(WoBN_WHW$v{K%cN;fKpO zr|(`mlQ^B0e2R>WiHT1W@?VXfmGZtTM4;O&5gdrFx(37VQf1d)?9A2%>e<^r7`paX z2J_+B`G2rV_V5CgbztkE|GbdA*B@Ao>m+0FOM{CI=a58R=cMUTwzaoU(;h8UPhC_I z*I04Ud?Bnv!Qk)0pYJa=krySyGxFkfE{-U8>JzKbEn$VIsg}!@a_SQj;Ux2F)A(Li zTkiqeph%A#64mYA~T-jXTWC{*7*&d4G*qPCs}F5r9D zCJ0*l-h}F>O)Fog2H7kFfvGl?>?%I)`_S2<7DV?oWa)oECql_R45iVP4e7Nuy<@SZ z`h5R>yh}@CmsCLN+8=T@vl8LgordyTOv;;#r6;#@K)4?2e(69Lz*HyMNAD2!5JTL3;3C5ay$0 z7VVoqd=PwZJsC}VYJ#E6h8Ya$`67bnz65g=X0Gr*Fe`P6sWxxRWS9Qyr(G^`pE$I! z9iZ|_UTbX1`ojjyqJh(?7@RIr{{?AwdVFeDfkF=3Y-@+HfyFM5^)H#F+gf<@`Oq z*~SGHE^BMe6bmKDgGU(2YV&gb5J8+Zyo5BHjziNneC063KJMc*R0KO{h+F}V|#p}!YZr1-7+5UQ*bk2wxiV$e9W{xsfb=QfmZ=y~}&8?0ajzk(EVp7hK-mH{nIQ8Fob>t|2Qi8~2QC=Q@g0^XHo=)ck zUU`@oF`s#;2b#)E$nRi3RTyexkZ@=}cwDp9tCjCJWXdyeyv96YLD_ZG!+*(=Q`;SZ zHb>EpLM#I}z;Q6UG5;(`>-nX7=|KcuRH?VSk&!yva`c?F(opxIeLt&esAzj>MKGLC zWVI@Cz^0%qmq!~|;_T-@z6oJ0NyP&J(j15>F;cCEsK6z+Qbgw^7|x4 zMz&F-iDTc>`2X65Bys@`d5p8iTiM5NTJ;e?rc3l1i{_asTWXGMNtmRH`}`hX-L zEvO@xs->WyAX2ZbY#UcbE$H5lHV8+&hY1kjt(su;H_f@VqK2oU+oq)JuSN*1#<`fW zdy1nYe@ph&H){i%0KcPaK(4d8dsS9eBNb1{fO(fuM{aVod4k)dVEUcAQu?Goz8-9o z;spizwi?!+w`Ie&%+Yl!-#a-&AapG0wYp6FN9OJbN zJ#gS4?K?IQ9o~Ay|62y9c0&Q{Ns-lzm&7p?t>q{qAUn6c?Cn9LBaIE^cHcg3%5XI^ z=&4%E&nOXOz5gcj{?&JCLdNKzdK-=8r2@P!$|{sqat&XK#w*2{R;(6C9dG4@%6aCq zmB>Wr_8_kzJv9^GrFCPKw%V0H6Q=}i-7ms_m5V>HiVMpt{y?r6t1a;iq5!^A>N_Wo z>>pqJo+|d&7VL?Fj)WZhF1Hmr1xu+K-p0u7ZnVv0a1zXh*XxI;!^F)E3=HC60jtfa z&lGbWl?=N4+9tbl0D?57Pst~xuB%wPPw|QIaI3hnWq?D$uRRXd(<7MFztxdjV<$$A zNjMA#-jK&rf6~+M;pXzGyKy6{#Fn4u)P*RTT#=!vNg4IEw1^O-mEZPH;MYHjEqTlE zmR=?!aaIp1ub7sIY<%^WNt+$?g+fT%bU+w}A5n-u#?j3cA&05mmfy`Z81fcmJ*Ccl zLg0!(_n_Ah27$%jS{p!Cb#`@*hyTIHrJ#WNHZuhc)}y;Ki#aKJQ*}>4t=5$-UWaYi zTcW)q4?N7rw|qG`{Vt{@Vh_Z_c+N*E9Jn7IIrAXfn!E$rypM#lK zyIaA59m-AwZFH=V9&iTzm~CyH(!Jv? z!*SW9`i_>|ay4p`&dqi7n3Bi)D&-B^-)1GwnupvD(j~XQ3rj4Ysbn_q#3aaq&}@Tu z7ET|I!wkY=CkbNy3o48#)XfadIlTKChOJpM6qBUA^bpkY9W(b-z7Cv$d755RTz;+{ zev4{?wvDn3HTR<-!6R{A-xW7?k9n2NoU~MNjAM=jGPuzQOOGM_OD2pY{NBA=0!b;@ zd0>rnk> zXCx^75zKuELzbaLfyg^{GO?ehQQ`H!pPlAx|1bh{Hb!iekZ{2=^u)_QR2=)MYZN@1 zOqn1L-Br+WUt%HtE-btGu?fGLPfLhRR($cdmXqzNe?=94pNsn^mN)$H>)%3XU8y@( z>RT5%BGBdK2F|sFn~Xnsc@NAyd$RIAgrK<23TYOF)-j8e}F5HC??w&n!v11Z2P1B&oX&V$~&6p-(fYVlGf_#pyqGDH! zF!I%{y4L_>{2UM{@+(WoXEBzSb}lY=WeEhZT^%WX{`p_^3Jd$a^2@On^?W|NGy6B_ zbFyA}xi0jImgf|_)Yn1ZFDvI@+eJl1-}nucD9Uh<>lQ}WGjaN9cklX0N_K8Oap1iG zxtd?V@b`f`XJ0AxAm5wp_o+NfjhFPODa6f6eJupf=lFFUGvv2v29O>vRT@9ZM(oI+ zP+Q4r8^};(YK)4Yp$PaL1p@(?8zEn@7U0;2_g{Cdw}W)cQCdJ(+bAolx5Q&KAqE%) zc{VM4`ua9XBC1{&!)t|=_C9^u_ujSSzyU7E_M?Kx)(r*m`1L0}OPl_@?1|_6!;`D> z8L>uni!s{8A-{35HFB65N5LDLnr9oB2dXJ_ztH_z37C`7W2q%qXm4cX7U34EqjL*C{sgD0awvJJXaSbzD76~R zc#i-UU>2Mt>$NpKW3x4yNKcA=APai_bHMH)tTaU7Etg1H%!NH|9DcXWvEr4xg^rsz z!tZeyQ?Ca8!oS-HM{fTIR9pY&aZwnqwPn3J9QcfSd-~?)%6PQaYy)p97+sly7(oMv zmINGrBGx1(CMM5CLIc8qm$$zayz=}h2gXy)Q1BRj+1zSwYq1Nc23_<@oqiIEbv#+@&OeQT!(@(Qxv@9q#nlGEeaQ_FD6D^Ft>Y;$h}RLk$Kr9R)8VGl%`in>gl90$Xq7ykO%BaDWO#^~MfH5WBUfdfRJhaP*--I}QWhzCL72XD?oC^n9u47k3!0NkdjyCPFw=<*fRc+hu z&CD6`(g?4FmEi1~2h3}1&ld6O5`3}Xh2L03jj;|oX|{?Ey0qxgrwhgTrKKs)B3$`c z+Lw4jXyYYqXv%#rw`4C*r2S^=VKdhTMP8YJzfRnU?yvvf(UJY<}5*r}hVm=J}t=MsB5dU+yj zCDLs|yZgyG;HO#yFUOxcuW1^kw7<~sweEYU~K+Nj5;iwVY2$`Uc;Z~LteAK2?Q$Q40EnzbZp zXJP|3-0>^vIQnNSXV>a0v)Q@1s4(O4j5Xlfq8(K z|I+uqbJIA2qzXT9_Ux;0)+rZL>UW=)#FLh-+gvm5NuSa)ctzGAeW$f!IeM^xo6^Y8 z0!i%J7tSm>2*-Rmy$v;53h5=-0Ha=`c-~WQ)Vcq>Lq^wL^>kEtvGOE!?5hvnbF0aCHdFg#f0t6SoW1%JR=zGrHB!&Aa{ zfF1u46ktbnQrokbF+K8Ilv;aR>z=oKBh#zFzE6T5uDqU-?PLK^7H%W`TaJ7l6S?5t zZzG)HsbR}W)WX89k@IQSpd>-6v1qyMXpFZTt&nXy*oLd0M@_lP2z+Vk3V&r574-CB z)!Kp%xz0%=J}Tf_n`L3y!{IzABS5Z**Z-;3LZ_=si(hv=09HlL8RM3t(M4iE4KSix zXrxSv)%R9cw$tMijF1p-*CJr{-X;sMK_i6xRX*?Otpi&DX75p1XWq1QNmHFV5YB|c z@*y9C&Ep>25p8z&ubv69x3jy0#?~sqPK@EP!H_rKzkjz!%vY4M9KY1#C{r)5h?>n$sQ{y==v;`rW6qp4 zN*UcOpAGe+F4Ik%5%aUB@r!+EExv~ig?gU)*=OFgk>Rs9;Kmju7$;f-Ty$H*e^ma) zZj$)_2@3x>ACFX;jnSc@M=qOJ-|qC!DNV-X{qxcNIku_(N-z@DxO~B_&={v`U|M7@ zDJco*DkLawW^rGBYh?oMy}22EF!q+e->YY#t*++(Zh*rOQ2rvvJOv3*q_QbLeKr5ZyD<0NX>ODh{ql$^D0(_|{#Mi!*#kj=2`{sU zd@e2bOa)&tPD`N^IV_9b9`o?{;wlsD-{Kkyd%xjVqZ7aZMyL~}p$vpv^f85b<`}Yg zbp{1f^X*v~0FMHmdX$!^2 z;F}xl(sBB|@$tsG=GSe8;e}%_T_Qh)runxn_M1C<`%J2|d?dRxn`Aa1O)a4dR=Sb^Dp8(?hQ4dwP}? z7mG~bJ=Ldw@vgPppDs5o41#c;>5N$_wyCgqng>1{+wLn%KAn$tzB@A)ugb0I*bH$I zjd^%oUL-t2K}| zO%|i0yY_6#9K^_&9oCD;6cSMTCrTYbbZ>S{3Pocp)cd{kXYYHJ z!*6wNRc0l~x@Wt&X9Mtd0ZSGnBeiCbANoddZxf=@vqBni_jgPOJqE=b>=8OG3xxbW zf--}ACDeD^+3Io+!OEa>lp zKv&bp>@WAXhZypY9+>|gy{ip8C-gsm{+u93xNn;NB%=WOcrL&piddcN%}Cu@;WaLM zSgER}h8znM&(F-ftrmL;f|vTYT_?_d>MbnFGt!b>djil_gmeI-3@lf=v!wE$CI~uF zGc<8{{bQR6P_0=YY?fO0Yqlh4`!%*r;Pqt*{>od%qQB~io|Ue<%+Wd~ad_Vrz{;Px zHtXEkLL!cCCOZM3tf+?rmk~V{$_||Mm>#h{0FIaojeHv0PKOYCdXeAX_ZPAs6R!W= z)t-%%iqpRq62e%0)SQ*n zg=*-irRw)2hq^5vsD6*ySM6x3Xpzag{hSR`Gyr&ch}Y;_W2`akLn$%vCWCdvcx6l& zh(sTn420SyRa@>FPe3uiBZgM)c*}D9`4P$7mZ7UagaRB$c=OxxMybtb5g&r3d?%t% zPhUT%5vH-!;DfB5UFC>C^oJj&(bfbnv&qf7y9sPo*-W@GklkiS#=?4%1C+O+5cpz_ z5hHwR^H+V|#S|{c=97*lWMo|1Sc~ethHMJPc3CqQ>fH<&^0kci7@ds~_|npKJaBbc zcuM!927{oYb|yCUyNr6Wh$7gj(%l=xw^MLxVD$m=`?mRa6Is%K{{Q~36)F+TZFd6# z9t#KxYV|KO654@vD8%?Fx5+G*78e(nIt@-3;~Ziz6~Durs%0?M(UupY+yl-XtD7eg zj>{FKq|}T#lvZMT67-soJri*}dyP*@?m+BB*j}(PLI934CIQg=J_ElmmwFW{&fl(RH{EpSaAlv|I*{0oHEr z4Y}UsL#ymUzt)6L=f^z!Xac&_-!{vEGCL8vZ=Z$lvZL7b^64N1hJ-UPOXCMjei;>Q z5kVX~%NA-kHd%-o?;zrQ`opaT+`OwEY}d7j^Vu4&+7n3G*_qs_%kA=7IcxI4ZBsET z<`RqT??=4>?=5tk5B_|DAcut^wwjVd(|8Oc*y-Qdw*2||<3|>1%tERhn+j78R8e?U zH5)ZlKyz8&akh2<`4@BVBq1I;AEPJgOOfwT)lTTCe48|GC5jG0_u0Ql{2@=}-Q9$^ZM858R*y zUuxf_YiQ_QpHc!Y#>~u&aoZPacjZo>IyGI^zjFhvUr6fAQWNv1dpy5&^YhrDZ%?L* zpr9T>pyGsdCZm7vJ|QO9CqXM zpescqXT=W)LxORawfR_B66q!S0M&QpFmpfEH>Y;U(`{GGUsKy1S&5Obpkr*(jpApu zW!_i@aZ=Yd#yQ3$cuu?=3r}Wr77nD70rercnxLCQj{q$OsO(KhGeU`dNZEV=1dt(G z{Fw{~K7a;KEzgGcJ9PqL0+xsa#a8AtoacY^ zsEAaNOJDr&g?cDdLadN^CLARq4K<3#NL3xe857ib|gA5U3 zNC&*lsnhxSHeMq4A)%jCyr@rkFE%7t6GLaCUz={v?C6pjSZs2z2PK%WZS;e~Pz)0K+5VCYFaai;k_XmalR_g7h| z376_5lFsvX@FX7LzZOBvm_HqZn&}~*h74IE93VK@09vGpldhs(n5X_i6j=ScqWQ|H z-o|KyOXRuu&%A{CoXngVp`CtCetDs_z2y%I^&sa=37pZZTz#5>Qc`+(`xfnJ*b>`` z0|O=H`T*Tc5s%26W#t)o1{mB=PB?gBUP zy&(ocVDym%jpQgy)k1|{#1`EZS9YA(4Ze`p&zssY5Y-E(LdyYTM((MWI*U{;|1>tyxoStpE)IXe9HqW+j6y?otm;2B!Qz@TKe5(j`q5L^WcFPmzRGN<3^hQ zMMn5x36k~~;EaoYe-6V!TkUkeZ$lPJ!PaJzEdn);%dWhB6=G{Q(HMgt4LXN&n>ehI zoNyi+7jgN)67T`a%eAy*wvzx#84rCnm942l4#pBxp}N5c@4FWWIG7sZ7RmsG>Ag>n zQ_vRl0+Afe7~ivdEs(UM^fk^cL#L0jlm5z|kQqP|%SWvZokZ1i5Ft>6V20k&#vx(z zrhRO2dO4N;?9638Y0nSsED&+dyv#|Brr`gqjKhK%lFe}DM~`Zt<{E6H)&eJJ;yBNq z!)ERi6TGs)^(>IZa4GNCiheYVjTk^>yb56g&KjpKkXkN8rdi!zxU+1U@>4R;8 zuwkVrVjvxjsZi%n>pB@#5@l6b;L&U;{-1(Om;u0cl5J`c%FsuYj#bI>@F<2)b&~+^ z(i8IqFll3G*$ANESCegtT(!f2f4qj01th})@nQ;ziKN^JTW;56CeH4gSk`y?$Nci%_)1>n;y)8y2H8omADcYxM3i`$0u=F_|knD zLj-NB2|MehwHqK&aFKr$kKgJH5iQTW9X>W)Pm#-Hr1ptrPH{>XytU*ut3|G5&n^RB zsP6vvQjBYaYi6{ax&Phj1#ijl$Z^T=O-W*p?={HxUG5&=r3=FjHLw8D5lSXK!5Gt= ztpT<{w=rbj_l1kN(lWSKkR)tR+aBkW7y3V(y$L+l>-sgW-EKFhC?P{dh>%dqR0)a9 zLuREiC1lF@D3z39D^e06vxkyLnJYzVVJeYVcO_xJujZ=XK9b2?{x zhVOk}_qx`#*1B~FI5I5}*=hx=vQeP?=2WA^3HxJXb>f4)u{y>&V*`1;y#v~$IWG*e zzOnfE39esZu2(M7q4W-Ig*V^L7Pz#2HnfP@MLVY#6t#_zDkgunsCMYcRtyQFQ-9@1P{bo%1EY?X1~Qxjz~|G3VENqUD7QkjHf+GYnb>>Fz+ZDt=dZ5YF;h?ioWi}i-!Ov z7?2UlAE-<$zo#&jzP}shw=yDihEmrnqm!a>@=(5k^KiMv?)9owqnC%+V~|zuvo2@< z`W0`*xJl&*M*v8M90hkU4ZHeCXIt$Ec^{F8HKJ=3$UJSJx>u#g!UBa(rHSF@8!be- zIYJB^S+OtQ-Y(!?rQ#K#Rg+770u{8Y{-d-B-w(9fB4OqiY)hW}%fdf?qsG!%#%`A5^NZTuDDeFA@4Wnm8L9(sCq;|Q%Sz7>)RND=TTFp5z9j@fW}NXf{g^cAht7eEkHwkZ zE3Wo&>|0CaV^LnHN9_5Xyw(kBQPd_^@vJiEXXgmg-79}GwqmE5UZw%{L3g9nHgt!V z58(|Rgwo(v&_)$bk&XVPU}L7-0i;tY7YxTUivFZ!t^V+4H4<7*S|fj#FESp`WIs#Jsa!CaB}0&-u7( zis(~>IlQS`u^YQ2QV^Tj(zr_CvWnM0icrscG(mZ+zKS(S%d|9-VllA>qvHWb;UCQk?&0qYyMmI^@3$o*QymjD**P`mu-L%Y<`{e+{j#Y zN2sw-mCO>UzuOocog90nq_b4OX~(5d3e^rN;H#*EFze7IFKMR!^g7=4E4rcF(9oY+ zA~`bstxEvDdrWRfGwo8#mM*~!5~n^Fhe6qgCI5|+-5QE0+t3R0_Q3HI{*P9XQ&`t- zk1$Ah?Cp zTzyVGR>)sy)z!l#54#hfb7q2^EtB2AG4e<*>jrPC)}FPkNX9_2!6l|RBkw3~ftqGr`UXbourMm=VhVrWf{ zh%j0!i@VTHVRoCI8bU>A#Nh3UKCRu1HF&(hMp7(8;;+7QS(4NbzbrgI$j&I%^8$Cu zgXDm;4zth0Y=PVpqE_U|<$ndZMaowc%E-p3S%1ouSzX%6I@EXfVxij0LwV9HJ>ygD zOuj$eFf?X={BHc;BC@;aEhC2+Cl9^9oT!*s!lg?~5Rs9To__fLUh5ALl5RC0KR&Fh z({^-xAX%{6bLh*PNgvV=d9rcAY|4$(tRL=^Nr%zXF;dqF)ky z`uwOOgFq$Fc-Vm*h7bbOMO>tTh8;Y1ue9ek`n>7-`{=KW7BuMsk$@u^!Q7vjeGH?CrJaw8cR5Hb&&k%RK_ zPMQP9@|)Ouq`3JQZd$e7A!oN`-tQP03Ti1qSncfWl04G>_}Ht(N4S2@sH*)Vw=P!5 z{oJN)r$x4R4>697(#tqw51P0t(^@~{WMM=7^C4FFkYM9Q7pK(wyk@y>?!_mw z6OnU~0tM4IP=&ebISupWZdt`b{xBLd#a3fwa~{a6h!L)|6@L;c;NCm5#@rxOYep*d zl6Tx>=q{LP-8@E~n-;WgRNH3OZqQ76DAPPOR6+14QZv5dT2iEeo<>1a_y;r%^Yo$J zmlw<(My!QCo;dU!oG@H;&TJ6oFcqQ8b+wTuQ_>5KLm-wXbXo5cH7Mswwi`N5#Oh@{ zG|>1^9l%H<@!>g|kncB+%}kAxQgG-g{49(CB1 z#YLk0Zoi0#X!4UR*{5asVGbrgf8gc9|2Ki@w*{NW*Em_RfOzm$H5&^>tt;~edpOWA{s|JJ>gK;IH zfO72)EkNU#E!0qUZ|`x;CK~k$25y;_m)U-+O3OK4poQWu?e=X0PW~Mnwh(^xkY=h2 zdif&ff(M?D#Z~XAXnW&m_~z7;(*^=;DsLl-YNef6BR`LPO-ijQESM!5UF>ii8~uKa zSt`Vd_L8VRtM_;1%7Z}B`E%j< zz%_C;H6N0qdzNwMmZ9o7KRbVWD&NbbJmVZ8!S*Z|eEzJ1QGSY<8FY8~>A#VQS6=R& z1idVVX)3&$7vorGvrQmY*(klb$aBw^p({>6>v3mstf$f$bQLYnP1 zlAQQD0;tc?n%a8tLCD56f1*SZ^U8HTAq>h|Vxn4!J9k3606f#n&Zvr#3q@c}b#?qv z2kbs22p8#mj|?B6RyQOQt7}tE(pasahxTT&;mjqWEPU_m&EpS=KB%U#fv@826GuZG z-Fr-v?;D-b!jMC$eUbwc>;Cd4iY){QJ>28c32}9MU0CD+aj$BGgxcyPBG8viqWY*O#fU2`L|>NmJ6m>6Y(58d9~;*KB1}Eef7jaib0p zhXAy2?rdo(*D3puB9F|eIzJ(VZT1vYDzMdV@D3`Qm=UVf97Xm)4s*ac-<_hL6^(Bsi+{Yg!d zTnAkDs2@JGpRMa}Yegupm|0jPtgC8$YovESEQ;$a?6jVQTs7S|{^z{j43$jS}+^^SrUOrZQE*yK~KFy=%GCWE6RtEQph17aj#lQ(uJDT#1U zT9}x$g!`>vvxF#rl1iG%gkH5hd*BG|^4qURrzJe50~(Zh!bF%;#SNkUx)l*e?C>%F z<4HE=!4!45qK#mW{RzMmy|Q zU+y0jwQc6d?DDZ3vxqG#nGTc;ZB`bn%>6*eub-|u(ixnzRZu5N^=N=Fi;SZmN86g^ zUsA+beC-W&0537WNyto9zW=Nr6cNR;k6A=a?5>0y`oErr=BX&S6*Y0l@Xen4FeK}a6cF*r3uuVl-0 z_Q26$aq`o2tL+1Vp~e9m;I;)K{-`GkbKmpWEgQ;@xk$1p6so<2SpfSr0wQO1j1M%8 zlmp-tm0$~$2;dN=%am}C03i`%3;wls-|mNbl&R6qhAk9mC;Ah~8WL=wn5Y=)5Ihb+ z(S=I81^#jAg@trn-7x^?RZucNj2X#GFp)@23X|k!sTM9uI9p+a#TanUdo<(m9YNg` zcr5|kxJ8Ow>=lV`9x{6I&hL_xshXyI<7E>r#U2kpWzjJmNS(QkdEda*P>===r6WM( zVSYD{61f7@Hh*w2lmDbI8 zE2s0>66L;mJ?F_TH-DI(81Zdu*&PwI;?wC#X3frRb1#2onb( zkehs_VrlH*{ixMcKPSzIAXAT>tq7i5Vc#`$(V^Ornh^6;k#=@iO?LYR{#}vr6{KGJ zY}>I?p(U^BPm)85+qz$g@&CDtd<=Sr}CA#I?@dZDg@;f`iyys)XlZM#ke|`?#LVwS0Jn zDe|Q8U^cg5Cb+OTsY8TB&?-$YZNgr$;)T2JRSgZ%ysgIADo2|JvQwP~$y$){p58ig zk?`lBXDS)N#E>wuetFdc8sZ8yv7)awdU#LX@T5L8y=O#NIvNafRMs9Zc z>W7A>X0nHe70-|*$z9ikig9MH|M)vWWdM94=+;KlB>D zTfqoZXY5pRccdr5o=T0sk;IJVc{t$x1B&+3vm5y!82qYWw3$JWN5k^iQAhwkydCE^ zG+a(`Qz1j)f8m5gr5;~FGa-dM*(GP_5d*U*#i8o3ZeMAA(BM_hH(%^v?dr|Pn}Ksm z7YM#&Fi=_cY^Ns7$2t)Bn0EFdiJ(a)HO8P8SOugy**}DhTF~$6+v)qWxM;9 z1PSISSa5iG-rnxJKwjv%Ufh!br(3?1t=Rn74P)-xe>xcIETPxgZr5vrNDt+Rs&7;6 zxexy9EcD&tzrs~QZf3?CO_{cgObqC(4C@AM>yM8QZP}L}gO~`k``F8uwQl`!$x9$_ zbkEGY0(aPAE2OQqOTXZ;BBQRSKL7gVw4Y6GMSq)bpntJv%{~#L7colHNu^+$RLh^A zeXOpbUSz!n{z%4{GjQZ(C)f4)NV^>*++z;kOrE(;POiIoFK_%rvR|UcC^zZHMC)6V zW2Mi_DSg=xi0|lH+J?;POE0f~XBYchA`{kp-7JHfoA2zHo4aUhr~_Sf>hsZ4d855s z>T}YR1KQA`&agfxp*Up&Il=LX^HUz4V$h4Y+#K9nW0}5V&sD2HzLa@sUma943gz4E z_hAHklOecda6Gam%Yt0{o=FzAGBq>mOCjTi%%_L<8I5nd8n~Wz&5xPV^73QX`sIp0 zey)#$D_zQCAR>pD!?G2}ygYhj`GEst-{Z<$hwpV!(ozqlI^I51ps{xKPfa3%53Jw! zdk1ZsnWFVfA&Wcr-cS_O)|R^lSeDB+_|}IDU5(ly&xqWnlDQ!>;3nuZF_RZR*I&N# z9vRegzVpwg&LlcPO8Se2adTb$?Nw@7b?f9)E*5N};o2B_a-o3y^Ur{aD7Db47G*cL z9H)WLi8pSn($X1Jx3WqmW-i~qJB^J4!~e}4TT`RyF?7@T!{+>NvLOGxuWv4QH5*~h zBvj>t9+`#50@^U`7C%09X5)&#ikeRO`311KKds~4xQ1)a^FZg4w!x$FqHKYYnT+*8 znf>Eat*hWh^wN|0=X1!#?T2Yt-6y<)vq6^9m zg8z6C(#wOYn7nIil?}9K?<+EwKNA8c(8hJ~Y*K6r6E0bx@sk2ly-O;igyaa>9dlTi z=(E$APzdAyMvMSD>oSEJPGp_)h0I?o&uwsL*%Pz|vQ|1hPq-tsJ!CY7-Gn(33rGi5 zq{pKpJO^Y6d@bbI`*w&ubyeJ>N8MYD=LUHN!lZgCT+mZmn{}MDGJysHic-Rh$I+_0 z@ZFmH*6R`;;wLn}+~5+04j;ckY=M*PeY4qET}CF)X)skyQ88IhFAOM%+x27HSrHTA zrq*~>o=4Ktg=yV=#&fG<x&exEutr|vc%<$<=)-8gRJbt}6OK!ApOqjaD+6ym-6YtwAaE=y)7KKo zYq>jB-Ovz!!%!3yBLIC#!_Av<$&a_r1($D%tVrImdUN+nW2pn3qR*529)7Q@P2MU! z__!D%9R9n~D$qLgy=d4H8zkf(kerw$yVn1By3@s#0iJW5Yf0=+K>U03D@Inw6u3^yB%bveD7q4TF5L~6x9JjFj-gZMLC^mmMYa&?jaVE4a_K2FhajSaZo1o>cux$x6d z#o$QehxPS&uDyxe#ry{Jt75wYXS)N(FuV*scKrAbo)t=e5Y_65Qh{6NIHp8UgQ4(G zHU$n6x@W_z0lMRYZ$qIU>C?kJN!+}X5eT`k_iOJ5$bGX1qvQ!`@g6Zq_aKD?IPgzs z+4;Dx)RAmJm7IAZWZKRm|ENMQc{D==cq^^T$XynsE!4Z+-8Ir4Q#q40hR(oT$-$xb zZ?93(qe`ZlM+u$fT|Ef{Sx`#5-vmj^j6z@w-o$Om7Vp$^bs`?-H!m$^XVw z#{WR_yj6AIPO- zduD0HF*oZ{>d={`hAuo+v9{l-RZY~H*LM2J>0*)y;G?Ch8}&fkIVmwwZPTU@OY;OB zef@_0n{9@sW=h|^)6mt;x^d%%rrrVhj*c^gDJ?pByTXU1w9^JE(la&BC5$aClk%rK zq-%_)-xy=e+A%7hM#Hk%icB;hqI`FV$fnzmg1+hd5K8af4r+4^tO+6{3YU68JR1v-|+?Czs*mToV3S*`blqRh!VP9WzQf+)8_p(QL!kh2h+^W~Q&2cI=MxZ(w-I{& zf$W*R{6?yACwARo8K0VyxaVAY5+_iFl%aSMXL(gbS@n{_|inR z)%L`@(6q`Vt>lbTZ&u;u_yh%2?%lfw9coD5I{AD9D#Vy!LZ)$;OM`3QDM`W+kUttL z*hf_StA!_DoqWN0`wl}LF?U+-<~lmiNuKxgg2l3yze=dL5;fv^uv5_sU*@0&BU%bV zL5TNJf_wYeRc&k{F|64Lktvm$HW0x^@SG=haX|>aCR$ekg!LFPx$014urm}}wt$9U zeHUgC5RT6+p>5|fD0?8RZ>7VpgItwIF$GfCXqUlw%toj{K4UD->%24Q=v!i1v9^c& zthu&f%RWAFK1EDac=*GUfF2;7<_QnuEvVpbV}zg%Qw_(*Ir@gnbI{`?VAO)jq^_b8 z2=ThnQ;v#z%&U5?S*6vH_Ze^(R5%wcJqN`h)revQV*47Z`>m7D(H-N8a_!A2Mu}f~ zmR$(kEkJeLbh9Ywml(4RZo)jMBT=d$TME9u5O$Bi`F&T$HvF*gy15$ zjX~AZD3uVp-)#kGICk{X!ItO6NTvw6C!}?cNuy(E4e5P-n_Y0oJ-g4vU7xy))ypFE zSY7w%TRE0owGy?GtJ<0NQ~ca=`gdkB*x;Erj9&DcoLWv0S=X-pH8whG-jGSIe|*xL zAhQsY2^teztC@tD!vQR;j;_rK54RfIcfLpAyLU&>IQ5>e*-lAG!>CHPODt5!Gh~Qr zrO&O4SBXr`vhT8(`fklFc_%#FV5YHo=7H4gkP3?2Ra?g0D|M})m(H9WR+&37K0CeH z)uT|{vYGzR{V_B&UNj0v4rw-TD{kZTPLY(%LmA`H<+HLLKF|lHo#`#1XH}%retu0k zY;Ji*$eTch)A&@z#Y0&j!MO~bhOQ1zN>EKYJYr^3)95i?8amF${oKclFp0jS4Osw2V4q=Vzu{je7!d6vf6pV%aN& z)XKD+BUpPod-Bo{cLJSL+f(T}G%(b@^qYc=IoDVMU$xfIy01ek)c5&1bz(HH_$^N`-GS5>=};l1 z={S={orn@l>$`*b>gAX1uCrSMgz6t#-1Ho4Xok&+$7P1q-`)rUGYsh6f0jM3m4|*; z_Tp=!F5Rg*s`NiM3dM%n+L_QxQyhBepyNu)b&tZCDN34k#{`ROsfkZHcs%Lez2KkE zo{hUBV0ht!+RNNr_n9%{If~Roi5nifZwt-syM*$6)tGetcc1#_F3Az32~q3Dd<~$` z3x>{O>v+}{{~<49bIX8Q8ghJZr<{y;VW_G2*(uaM$m^<;HYrkO({F-MntQyPEdY@j zC_q5XCD~?919ayPYs4$V<18N4b{4(dm+dn>>?8&Ddfmj$#vX>^yh$1HPLVh~PD@xj z+>cpO$}w~?yj{X?en{F?R#h6S=uovRS=6m_4U;L?Icp*vead zQZguggm~1$wEC|7c4$Kg&6{k;NS4t;A87LGw>9FqP!UQs;igN)&=J3h6o#6bgis?_ z1t949yd1>olPxVQq|QnVp2K(@ltagutEhda5?S}DcCt>IwnYyMzR={yk5w%!EU-BX zqXem}^yUXP)aji$ecF8J%Z^(E;;m0Q+uOTsW;<;h#v3Dpn+LfsFZJ6e?j8_Wlu^V{ zZz0N3NbED*V0}t-F9qLSUZ#$w<#>|^v>$47Ee~NR1E0Orfy|ofbFbAZBPhtuPa;4b z$uIDng04A2mW=f_WWhK~o_>^-_29k)XbbGUiBpt+KX{RRb~TMMQ4 z>&n#q^E*;I?L?gH>UXtpA`+XjDNhG|24NsDwSS7qUdb3}$q-f}9Vin@+J<=f?2|6o zU(ghjG)6c^GNNU`lOrQTd)V!YZztT$a1-LFiXWW)1_9?<|F7Q2s!8*7pOZmam?DS< zHoM~wd>x&5E9^4l*{q-5_9!T_^5ag&b)A3tTpN8G6KF-~J07-lJ2Bj;pdP1s9F=PJ zeIxO6gg$iSw>$E+9mcQ$22>2t<;i6J-rfTV+1Ur?jSS~5D&{!#tM6i{e(~bP{!JTj zt1Iw^i;GK`WX_SRSFaKtzfGGr6VDIe1S14C7>EZ%>2hwoDKc9p!4~u7%chRJlg7qXf2nvhXdmM=K!r>= z*ThnGUnANPk!B}E;*c2$qZX8%iI%U-U_%AbI62qi|FkbbGRxkC{!o_;d2{?Q88l zo%VGlRqMqd)i3%ms%lN|rgwyaKCpP+L%+s?=K#TY!chTrNF)_>9AHISaB$@}*WrsD zV=j0X>)cqwcVQNB{&}aR_2*ozwA@+k3yqAXn#~^{4Z6?yOiof~j|!V@Jf39N_8ymy zfyxS$8VV+6c7&a-@3kH<`KRnI(`U%$W48L)R?^@2okc02A!@@W1t7De)Ku*=XJSFU zM8(C)f$C4n&o{ERw(c@8cr!RoV8kuqn2 zyh?ih`~=JgaQf~R6f`EyP)X#RK`x#Z;Q~WP4r9JZzFC(l_0_7)v3&kq9ht4q`oOSWS9eFT-L>%s#=IPt`}rd??7hf2 z$-S{Uek9B#LZ}Fe4np%hFa86HYZn_d+*e)wVboU~9u1vcrq&Bxn#rr*r8K-ai7>Mw z&cXu-OZN8mW@cop%=e%qB_veF9lxL9JjjNNd6Fm;S@=KbCBNEX3bkt2>iVT{si>|OqlUlT zZ|%dryGo`=x6`}sAFF7dCG0UaG?Jt+GdZz;_*aGLqJB>w~Eq#n{s%!mfDLvN{~mUKW`5I{pa`M+`(~~El`a# z_mGemR#rZYh+wmB$kf`h_grO>|CZV+J6vC_8FaKgd{x4g{|VTs0(Tz#VEY~j)?7p? z$~3di67)asu3ZwH9`+Y5jQQKR%S2AMb9anv*!U-nNianlIXcy$Qd0`^N|w&Ly=&v? z{8K2dBmMr!7P(Di*wRaCh9B|{y3RIRW>f3rd&j{r&yDgM*RX+X8b^QqFaBby@U$h%GHEgMj>SNNA|l?6k|V<7?mPxqXy)(?-8# zg9KvQ2y83Q=5hjyM?P1@$S8jnw~pyKHy>ABPvgZQB$xd)dUXiHI;+9_Y@xIej5=VI z^kv&#{umzu^G;>TV6$}RcU!TP)!O7r=;ZR_f3mHQ2*hNoS#-DE=EI*f;d$$3XqkVa z^q(K5i`~@kXL<)DO+0kI2^5Of@#FrkJ+Yyh#>Q!lIk+?BL(-i)oeE49;<^ECJffmn zKybom-`CVrtSGKymLYe_5kZ)ZhCAfW9j?d<1i)S}+{bi%|CYl-b$a}|=|@^^e_U64 zdHM1mGquKRmoJ;~ynLC4#(jNYaaFw*A7P^N@!)UG27rq8xh@RhT5r-j!H|*siqj_) ze2-inOk8-cyAuh_z(T)`_m{^3J>^%(i2r*;?&0yE$)$_c`s24dPW|<aiNcB|o@=FTdV+(J}>*=!J&~;u|S2t zq5u5#A}ioGr_T${z5i2-_&FgUVCh1O*rj<;fMp$@biu)8%O;4g0&<58_lXN-;rkVP zdV0__torkhTh}-)*XhZ|4EeHsXTrEwQ(b*K)lo}bJ$lf+tJ$F=L`UJkxc7~J-V@D> ziQm4d(QaY;0^v*T_5}d;A)M{M>6dpxLwU??%o22%OW@*1p41d@|xcUy9erpTAqr z!mkZPO3C7}xrtcAhp&tl9^PFjA_dG-s)B+xN?sfO^9EjI1^#ZSSezwm z;hXR6B{KUIf})n}phLn5v#Nv??iuA(IAHtGGur3C`DxDrY;}C9RFI)4Pe~~$2CEr% zsj8_3J!-9NiLwV+i9dY9tiGFNp=1)TD^~Ek=7domqUf2K8GN?-9OpEkoeaA+IUIAx z(V3vH52iqFV{fqRk0r~z4}remH_kr{d*_E6oA`o5Lddzf5@*hy<>lwsO6AK+<)gAT zk^cA@fl0ikZSU_MdH7}2t$~5_qI>sZvmXO;{_sw)0C$=F)!$rT{Lh)%y+D@0=3;E$ zRsP>($zO9O(OKNr~BQrrLTlv4rd!t49H|MUYHoW?X_u2$;{k4KXzOH zPdA<6(4&s4CM*f`Cn!jT;3FiA85cC;z?mUaZWQ~j`1f0Vaqr-7nuV4XxJH$QMH5nZ zef|4*f}>w<3KE|cqbCeyRaI0f_HU}NXOT}#OhkAyK|~TEF}2A$$r%m-AF8XhPMk={ z$Pk%uH_A#4>B|NM+_lL3VB7gSz{XhB+?=*B-U4gXPcTr#8Bt%4YN7Ul<0|96|(3+c8P8X$AS*lC`ed9@6=_h84?l_j()H;|5mv_y)Hsy zn=G+r7Ji9Q7q8ZGp&~JQNnrePmqNQ`ALdK0?Op_50+i^07jDXP)51%__+g2yh)!A! zU;BLhy4wa12M^;KUY2!M6T^hZoI>O~5g-OTSXfxY!Xoj4VTq$5R*Sl1h%jP?QP{jq-Aiow)Ugnf=zbUGrCf-`2+Cc6NToyk(1)mR77` zj#Cf3CYa}Ye;;hdJ<+({?}GBO(O0dH0egcZBh&WVgR#j~dKW54eShyMQOGcMJh*kM zh1hm;f(4B1KDm$wJ^z&`Z&Com5wH%>cO5-(hO=#h*nxuF4_Y)OluXX(+ zECsv|qM+a3XQTbk7jpgoQqaXan+^Yei#+SvZ>p7;6^wH54`4H63lVi2Lsd;Jtq^FZ z7T|J(J#Pdi`#V4Ih0@BxM*Xy`7C;{whZa%?p_;dyc9}rP|bduFR{GE#l?)NSS*Y#EV|}klHdE4l69rW z+}CfS@v1I5R+v`N`PwLkc=s(|&E#g8-Z|1E{;TKeW>Q+OWP>JfC)OcxbWM#9>X1lt zM`+zYpD{Dz!wK^44!_3v^QjC11_{HsBOxRNk?mT6(%-{*d1nvFJUMZp=+=@$iYaXW zyeAx8Uw(O4L09fqzUo;$O8abvw1;~GAClSd+LeIrEg9)y%wdy8>*o)Ja<%#OSsaw& z*pa<5>%0MuSD=W$mecYwvmzP{qRx!txOs3vVSOHsBg`)`ggRRm7E7^$-zZEpOxzil zMN~tZ|0p9PgG1ti$X0XT4~r^6(PA*(vg;JNwk9~SRH;lNu^2(1YuBwQz3~=xEdDk{ zJJpffm67;RyHlHPu3*OX6d3vt^dk&E^6YK~j$`6ARZooZ4pSWEXZJgMGFU8h5+fr7 zqy)S$^qlCx`E(6voxnD0{^EAM`|r2pHL`wjRoZ1r)_TRI-1`Ipu2+tSYp}QfyyR>5 zte;RxfxZ={8`v=4`y1kul6Wy1OMLR=5S~U-TH5^7cidjSpgC=N+8qlh8D|5gBvqG} ztNL?ObhX?Zr`A@i-G#$g;#XdHsZs=gEp9-qlP-6 zqp0|_zP=up8tndMUdX4DTGLyb47d6*V$m$j3vnvaODg^Qd1(T!FWNBw{C!uD49DdF zjs<`_~%FC&+>J-h5y|D@t?nbu^*pQ0V7Gq7|;^^&CRK0_xB}} z$;WGJYa#2ey~D3x)6^6V?sj2fdfQ;g=7z1s}4enJr7H~>=6?PIUyq< zqJ_>84Iy#oZd;KvbZmR^mJ;LQ^zgkv-v)^T&b7e4+4#6PknNUrDY|+&PGtNMgK-yT zheTdF5W@ZLlmDVDEZ@buktU!7|7Kqu|Kvo)Ahpq%q>lZKyA?wzPSHNso_Zk?+Qx<| zLo1meYE@_6U%whqRrbXE=kl^MS%`|^pi+o%b^;1w@mX7wiM|@=rA2eT9x5uqH~Jnq z1yN?|R3wfNVoe4I6L=-m*fWc0EU-5KiI;g#-&!Q+dy(b8czv|s{&+lg*U6rEB5YR^ z0tX`2bhMS0bYfy+*_BpX#MJ&bc9Blvi&DMck zBRTq1Jke*P>|K?c2dXdie_hL}$h-Zxhk6u#ZKM$3LhU=H^=Y<*? zHymD)KU$XFdi1Qh=^>U^rXsTy#KO zoYojZ4;zJp?$e>E;YAuc952bRP%n}huP{McP;I0Sopdq+$8(h{Pg z4o!_e z9?PHhgQK~skaq6yc+-@It`%)g#Y^wyV}(vV^UDvJVYlfG7iTS}wB31#HPQmgwJJVmE>p~Pj0xJ>z zFDxT$YJ4g2vS^bp*xOU!XGi;!kdmSVg()@HWh5AS{P6q1!5dG_Bk!MYon_fz(&AHz z(LWoQ2n?H1O$EubAiAo1dD9&Fp1QJq&D#TuW!9{dN9m~j^vUIQ8mpM?LE;1E%}(}B zB8gnz@Ipx}`uhjn+vb1d?uGE(TR=Yq#Kc2Fzql}J`S=jMMj`^MG5Ptoo@_DoLzM6I zl7bsIZ&EC4c?kv@d7D^G8sNZyxj~T5BcPHG9Rn8PWpT)IR0WZ$b)$s_^u;gz--p;TcbV+3bLPyQ+4?q`@)u%Sf4>~auP zX_tXmMc>#v{O(%K%cxYv?m0A)-5d6f=m;U5P~{1p-mxhL)WWX4i@RQ$mXyU)E3pbj z)1v8>e&DJCr6v|e7Hvrbj+?t1nAIJTL$sJ=%_$Xq1elxoFDcW^<=*}tb}H!k}Fz3x&BFZD9a?*WO4osB4ell5~k z5r3F$|E1^S03nN=NH4iYi4OVb5^N~T3DMDqn~^&^+R!W&mztW|<~oh_7H8w$HW(5V zBvh4iS>c@6UW=NlD!b2tE;D0PEuHZ*jdsQIW5uLtE#y=2um#dHzIO3`ycI9F`xDbz zQp5S+qpxcls$(FNOG+}Ve{L5;umYH$vr2r7{Rdxr6>Du>uZo^QjHNF9%sYZ1CI~1; zNB+sQLFtDB5mGJ^h3s04Q-i~INY8${=7|s0BC^2f#Q45xlR3tDE%>_pSWR_c-@byGENouKmKUDTkHgnEUub;_ zODigL5XVLw5|GD`Pdqs+Y*wxgz8l(S{5JCFuwEv!vv+`XE8C)K^@8b_maLp3hTW3{ z#&Ps5M?s~H=g1b=2g7SJ-KCn346ZBx17cA`LJ5sq#L>8dy7vJJBWJEc7%#IkV z@@(9`fUU%={e*4>Pdis&qt9M48vCC4uKr4N)e>xR9%fe6?HdsK+Hr)|wG&0mU>-%-B3BaG z;PX*)a6`+y? zUCqT*pb zYA4u9k%MJd#M%C1+;pkq^X3%i~wy34O@4#a;tcf z4nm!ZTYf52be|Hu?2Q{2FeFplQy5Tvgk=$PN5l2Y&C(`+3|*7}Is)_N+8wpraWHSZ zn?l{oN5`b(U?GM8=8dba;<5no=(HTiK5dV-EyiFu`o_l6NHX!^=|}5u58?f8jd|{q z(+len5s1X922+rqFNF<{gT}Hk+c7Dr9tX#xJhz;U>wM64g?6XQYhJjJuCA^Q)+tIu zdB1FYgliH^-;WYCo??2A^D?sV1O-zO6t64hD4Ap*%O`j9lw9-;t?0WZ*quucw$Rf zR%{S~Odl=O_wN?e)V-j7MfaX3T1A2ueIPE=+udCWX~mUn`7coKg@nYK>^8p5btduA zX~GklVP3Vp?5^6Ql$2f2J@M?{FZw z(c?4q1CXS+Ir~7%T-(%?3M7rwJPG=O2M-?j3OH*jJvg9s>0ks=tWaywMVQY{Pn4F8 z@o{jNnx9*jUUz}CsK$EHuZUWNvUab-!H0GVL9UXcmEPIoO>W>`?r-v4!<8*!a=nf5 z>S1zke?M#OxbKne*=+&FeYHCKdcE0mjgZ9VjR(A9GeI?Z+084E5D^FvP9g!ECEzH* zksa&UXH-Qri`CU+ERlhMft8#7;q1nzv`&c0{M>qH%fn-V2$y+Jl)in7OAA?74NEh2 zN{2`NjOx8f=|SiIQAB2O^kplK2ch(4Y0 zngbI#Iy?8x49P;|F*g& zQ3LVuseS9p^zRic{+c;te|h(6Y$~@7h>x4kOgc_}s_;zeiX<6<1( z751Cw+*EVlvw}R0Dsz#l9ZTfj+dabmXBBti%-*Q*Axu;-0oP*a7<*9izg-n1)ND^q zgwxE|(u>P~f**{Pz+LcxY#$$32kN9JMCZS1$+Ih6{?5zG8`0B-Q13@0u{}6AI3>7U zByTQkyt^pSh{(l<>HzyOtMlaq*N8HWm|W4@A(kJ+D~WLxy%jUinO{3zzBduVTe`p`CmX{pFBG1fFbDddwXP= zm~<`ApRaCt*gg`Ao8)whSXSsN4Rh}N`+ofU_eu)tyNbNG(U@>DajbQauc`XM)hbAQ z7ALvhewL#SKW}D=x%SJa@rJZXFs)Lj!1ZR+%)p34v&VREln)z>4*JoGOJ@b<&zLcA z?mM!BWsbzCp`%F~`_UHIv)cGa^!e-_Q=)ZNZJnQ<*mC+!H2=+IMNXk0a!UhjCvM^0 zxQdbl<1uo%EYF?8SW?lUgrmG`q-2nmX!D<*ErYFnHIPpnSgro1nK(FV8fq&aA7=|3 zxzmu#fEykQ3UoiRX%qK5 zJC;}Tm+UIxqF^TCIei&=j+1M0auOkYnoyizd}&d54Up_`eajII{>2OfTc;n>WHCw{OQFgQw(nJdd!jOsd;f9@~ltkL@L^Xy{%aUD~KNHh7aW zn+~5sX=~9owFMSbN$J;i5^c;~)vqwUQ zGEsg5U^?%C@(0wI0YBz~AFx!Lhe)eFDi>9W8rP#7Y~n0>UA;ZV^HC zM8P7YAwmimYblJP2E4!2Y&QQ`=Ks;e_A9bDVMW|V0Owqq=NN;bV{Pr^htT{4?ud(r z>*|k$F3-IxB-hy3=-N-A(ixUEpCJ3r^xTu0|5y&(hfvspsCqZI4v zqq05?G_n#ZOUxjVodBSm92Umx=;Xwe{aFpJPR(V1xDeVOfHva2GwiyX20|J;c%6UQ zOS@a^Bq|q?VKgQZzru+i@B5AKN=tFm-pEozyEks5pv4XnY84UY;|?w_{zj4+){%JC znQ22PG`hO_a!1OEuL=Cso$g!2`)pygBh1GD)?lJgjDeIJbHoW8q+{eFOZ+Gmm1mGk z0n%}6{-Zf*9@IJ6x`t?ymn~Zsw%`5^VBDrPoxpE0=-Y;#^I7#*dTe5=Bwpa3UtG+G z7u^qS!h%PGe>r;~o7NJ6YS<0&qYnn%<#U{!IkQC$qEjB}q|UDn7kzZ%HOn>|B%miH zpf1rKLK1JglK9cEZv3oRAp{e@?pY#56h%AJ3cG-SQ}!e4pxa19iqqjT8w`;MEblUW z8eJwY<9q6G2On`pgUbd?2Kio!C^bDks^of3Mt|k-t&7I*G+u?(o^Xnb>l3pS6qJl}pZ4(UY3{_@v?8Ap zy39p<1i!UKccaqgr>GcL@bi}?rP-+R)Fh#6AaL`OCw7O+&A`@8&w9|LR=}SUcRZn} z!U+@ou5cwUn=`%PD}AL13E8d(&Jj}IF43Cze5ek7ASpZaTuXwj%bxhrTcg%pX~Pin z*TxD{7Bp6b#saJ5`#`_C*k{B)HT{E&?%aukttT-z*We}tzq;L!5(rhE_1~<9+jo|} zfB!defxNg#psCbynzl&p67#Csr<$(kzwrcQ0&S!V6cFu}?NMi2=Abq&C(f8Xt|MoZI^22}Pnu(ycqeud-rz9T-o#OAWU;E)hG%=Ly zD*qd+4HL76M>%hycl7(;l_QyLm#cV2#Axnb59gF0N#!|^WQrU3`udLl@HmPOsI*@D z)`qBB{3k%T&%YcST-6;c*)aKc!?(95%Wz|pV5SmDn#It@i6$-DBI`9$>eSQADCe7mP2-LF?J7D&)A zu3quatps>oua%u|HdA}AZjO*X2cH=sKEtbh8M+w#?#&g`je$AEJ2+!7sAHdaEAKeb z5o%SJLdRsvX~B~)Un%51yxi~OVA6!}cxYmh0T|NR?mZV!| z=lh*nTU($3BhXRm<;#cRK4UVy#v1P{Hh=IDUj*^X^w*_u2zQmvcZBuSd<;Zio}6Md zb@=|ttWVK6Tepu|5G_63N{eIEK3cK(&o5$fQL4$VZf^23dBkK9$Lt}frN9dn?|4h# zkQctK2gM>diiH4bF-RubT?D%u8j|bC`tg`g@N8UVG1w$*A4KmZDwW`t+JHftL-Q;oEaQs9~&ovZj3Ir zE(5;M@|Buji*295&dkq45L;7FU+56!nb( z?zfQ(yf|slIb%iu4PAQOx*2-^B09tQiAxKsEzWtC73DwKpWQ+m z7OMs5531jiuaF!!lN_tju&L%&fE6pTv%>fxPPt+`Jg6>wwu(yh^?Wn!+|tB^Bf82w zT4i}#@PB%L-0ulvo7S;oNlyK)GIjMb^#m2*Hjt&?6>c8@sVs4v`w(m6g%}7|PF<_H z1ED?I^2O)1bP5RF4l%<8CKnZ@^nU$(yZeH?tg>=I={r7Rp+Opkgi~`U5DAgJoLuKW z-Q9`}^K{No5hG|eW^m7zO}P^?FDDDh1wWA!W5KVRWhH%4uKc;;Ps&HRU+9e2ix%KI~;^*V;bP?Gh3ta4XM6LuNi z_`ta-XY3NK0n$FJ%%rDu!6&Y5a4rkmObirZLgbnpCEkgjT0q;HWn5@he(4b{h*J~r z5u*m^WKo|bqh5{RvnhMiU(gu_({?#qKj>ie9isF*q+qri~t6vhH3$uQ7f}{hw}v1y@w#5K!(Se6aqV zspDtf{@a+9C1@E#QAm+DSDE`GkIA{jro>S#sqE(p*`M!?&dDuxUr#F47nKtPeXd=L zo3?EK0X$$hTBB{)M=J`tqNv3-4Y5hw4xjpZyW0ztMGt-dlzdLkhE{~pY0fgvt$+H- z^#5t!T)Q@Kil}}J#tcFlx&;^pSpn@S!4C)RDayU434d~)WG_NIQPR28Xxm+4ypJNm@!JCBB;yc3@J>jol{7PqzgLb}ofwt?s1d1D3uI;e+Q;&vaU#`^l++ILI`Q+r^O(8XI%latkzn5s2f~(H zb62Y>`}os_3SN2KO!mfN*u%*<@FB<>^@H;-H`N0l?k;N&7VK5S@tG_kQ84*pUvDO( z#AbzYE`QnaR_!+bjx=pg`M&FY-5D9-9v&VW0;Xq4W?#l<0vp@>pjXCU7$E!stnHM( zE+mCN9|QDt{o0exi>FwDU|y)3(zaZ-zsKrndO7N$wzunf>d<91d@n zTnGqe{&gsM$kL8WY2N9C+XOV_{?W$iG{yjpICJE9^Jnt7qH}Gz);X764hQ=k4vgoz zOAJPd?ZNq8l$6ms6T^aSCoMSk_OW3S)g{0zwt)h4>TNJM1f2&C8`ZYD-R|eJV?jbk zLlI+|3Yzs(vQ>MWtzWdV=%X#DjR?A~l5~^J!a%AiQ|h7Lcn5UzU8%zXp%>T#20u%`e#f^HF4}dH*$Fa;c;mxgeUp0iz&K-~aO=?gu7YxtTRV=nQQ&R3}iz{2|@j zwv05^t$7)1$TlNw6Sb>k-%PfGmG3F%rYC|_lnBp@&-c(H?IzbYOV2ugBajQH$fD?g zw~*eyR+vxCKF|hx5QW?aTaU@0Nk-j(`B|to;zq^VX;8-Ez&&q?>~gDu??UV^j+19MEt=M&ndC-JaFZ5;`ZcZCq3J;k?mM& zV`p3!hn9tOdQcMS$NOw0@;j3c3Tbj$g7c4p%oYa=K!FITe4%6~c?fbP1~D_Oo!$U@ zAdr3o;6=hbLH59ZWeT7eQyDZjRM__RGe)3EpY%Q_HFaX}ZbxTk7x=c&lryi||B#ZbgTjfS%VM3sDfNknXH zKHzDxddNGUK!D%Gr3Ow9i0h#g83EhQ8*Kl|#Iu9jGd@MIH;RgG-ye186F^GSJP}Ja zpBngsMN!e#oz>b0y4vc3AMB_yyuBU>VN4?LqRJt2jL=+mJ(-$*d*g*gxV>{{z7MgE z0b>5-rKj;pg+vIzB~KiY!6cXS_Hwh4deitG-X}v z*0UN{+qznV;iife1?T=pfU=6Cet!IZXwoaI*g z@8BsA%|0T0E`Z(2R!VX-DOs08gcVJS({9)JI~=XW^xNKQQRjSY?4*s%bNt>4{c=`B z@#7KWdkm10j{7Xw|7$)#!6+OPLGttQcYyVY>+pB(lLA;NPyiu~?2pXel=`S>9EXqd zh)=QL=l>Ui45V+04F^H?P!HagePpnJLuc^W~7qN2AE=`w8& z)7`V)YVy}5_yw8Ij3_qFw!+a<|Jd#~368M*LN7z21Xz*^CfG^x{^&qsxfS~VT4QTr z9g`wZ6mQZ%eg)gcP;OzNY@Et#t3kxLp;yfd)^Pu*5JsO_7an} z9D_cX?Ht|igJtghJXKyBbRia;9E29aDZ6|Pu>>tGTO!Py?iJU^+{-PHs)>0AmFjBK z0EkWMPK^9c3PG6vC&~)bXE<#&2-t=LRPT_W7n4ksOb;WR^uxK(19sxJL}Zf8n9@(Y|pL;7!i16 zECNtMM&p97%NDN(n1D`NJSgy_b2Mv4A+ZUOfA_;24#x8AxIu4B4a za5MV>tc>M2JCDqsa-r^4MUQLWuWV!P(r{FkOu9uyMa4Qgy;H7wR8{DeQ0q4jU8o4Id z9;u3IEuej@yEMhkr=5flU)soz|#KdNSd?ie^Fsyp!%7hT$YmZu9 z<>0^D@_u2~G(%_}AtX{b&e-n4N2%+<5$Yx#E;Cr4mO9Y<#U(qko4;;67ZAb|%=<28 z$6QE(N%(7TAGNDvjn3J`YeIA(8D8A4X+BxZ&cmHiFj`gQi<_r4yZYPLE5UcFI8jed zh4d&*9aPy1cnT(U#3Er1NQuAW&mCpB=en3|A@Z zW*dOB;2i$`{b}YBKu|A>Yh)q!ZsgtpavvRa=oC4d2iQqQKvv?du@;Jf-4U4?ZD{x zbOpTHIk|CLERbCvZoB|I05~>}?(U9`j)rQV{vc9-P}A>cQ@jHws6SCvOLY>~96Y%2 z{PSJK$?R)m#CdIa(SWY{^kbHu#p5$1pRoaFN$!=q#o$C)cnTiJV>14=+fJzC?OKCI zq5>;FPS1R7X-#vsU?IB8A%1pWZ=4e$;*t*q<9Y+8MdV*_xyU<5qM=@#>R;1tueD8L zCpHW0swBt+aQjcC1m85~xb*sL`Mx{f)4O>T`Ja`4`V=$OU{^G%it8)n+@+1&5w^I_ z1i7`cva;A`=eIrMRjnmP918z4QwAB=$@4vc5I`@Zx6zO6)Lve{TIufj>ipj^412I8 z12cuK4*KmFkWnmx^ZA$&tyg`fs-Y`#zl^9Ro3g;np(mN*GyZcBR+9b_(4Bb++>)NZ zetCEtEpupkBwgjc@71fD!X{-K0w&HwlrT_UxO~7xuE?(*YlnV-$+AH&LA1|R?YM&O za@$bYm9Ewn;JxF^<%nCxO?ErX{MRg9WUYn)!m9OH?G#MsIod;lW>QR-KY0dH2Jm!w zNBUwC(E=}aeDCDk*QyMByZFmXjfr{^coDHE?$e{DBN8tAvb_WJ(hro)%yz?h0A>G1 z+>-oUzgd`A16}r-%bSGr_jz6q5ssg?_0={geu(S1wMrEVSuM2wckkVUErDugCJBX( z^7)=~A~WzSG9}@jZ~J7GSC?ARn-@H0l1%LlWB+1-re%QPu^j^md`D{Q4a`cC5GJGYpw|T8ot8?KOP6m#40x z!u^=eDn6h8g4OtMaX{u#0JkoV0!<~QbI82L>VZ;m5!1z(c=SNrYhP0SWF8R9LTSA< zsl01NtbXsavuR&Z*(uV>CRc*xU9T zXCL}5!5bokm>-<^4|jF6kM8RNw*%_zr2L;TiVTZ2u#?e=3H7-M>fy1a#*H5napD`} z;Mbm?LWZr%narRs47W_&hN>Od2wuaiB3%#X9+`{=le3d~M(~4pM8`2aDn>@@-}d*f zFMor2Vn4Cs9D5s*>Y%S&wkPmApn#Ot+=|+3JJaVGZ3$AH!0VlD1X#~|gOB*$f{-iL z&CjP|J4)XH2i*-d9wqjNn|Okwy*PzaQI*-kKu}HiDM{ENM5?5dA+~G_k5Isnz+*ef_QoNh0Zf3p{e^=b z=03A{^M?;o(sdzM+P>a0pLhQnFk8%teY6oc{tdY3p2*N!!WZ8Vjwh3E88}RGG=b^A zEF8O|_2f#ksNyIs?K-P~?ldH&r0I*^I>%6gNU+JVsoOeF))o-`(f4xHUBJ-2aMh|+ z`PHaHE4hve@#kG;W^0lR3bUjUG6UTMHSG{4LgRAZ*4*dGpBQ=AJ}>3l1Yl*@uLtyU zSFaw*586!V8pt|*eKxvACTO>>k6t^|iR(Vxqe|VTJsPxbDPF4NY=#r$u*^co;;Eaf z^CV0dFDE1`*x9HKofI;>^zsq5^G{V#|oTUQdi-*bD74j`Xbe|>TZMt z6yj-6CL=>Ye@~4~)kQ(1iYr?uXI>XW_}rt8M@<@Ljj>N3G$EG(>cSvY*tcr8;q6%r zl^Q?$01Pesicp_w?<^HbOguwvA~r{4)+wOXBTf*445kuTc8`}=+Rfz)Ssac8R9H+7 z=jzo9zsr2@z_-UC61bxiltWLY%TxRIqKg;FvZ)<$-ZA+?fO5LoS<9di127HN0aMbkTPmb_oi>L*6fYh3j zS&i7B&C~8^I72#V17;Tb;Tv10NdAfZF0appEc;UwWIgM_iqUXd0G*M1#QL!O%V6>ZbtkNZ!X9`bq}|&!G_FKNt&D&fh$I8JO@HZ# z2cuPpIUuwON64g6T;$4cYtw}8?~*xq9UTU1251&935JWzovgBVmk23rGjDP#vnere z|8ASH69U=Sfnq@{JZ|3Bo7TH3RsoyFd97`YZ(4}EW^0$1ao|eVdZ&s8fo)!aZxU}Zl zj}jY#X8gb_@0Z!tkHD3Qq}1-|&FJqqNUAzuN-Gf%!h4M`lLN=y~jORrGV2MkxJ008eUTBIVdQd7+f zAi@2Eh4XM-_gr2`rFq>Nm)qoQMlT7SD-Lm0^mZgZ$FoV^4D@hJS4C2EeEcfZp_QGh zi9rE|55GL#ViW*4tzElffY#dC4Ph!(UQ%ehqw@RNczMPaP0D^gT2BxIuA^sncScW3 z4#=%yB!VyrZ{)E};cEATC-zztA=tM9Ac16mCe zcgQq}j8+%9&aVwvI>|PJ?5iav@n$NU#>K|Qru6rXZ0pQ(Myk(=(dZ?J z?E!O0E|Q{-`tRl8g1xnh#LUJef9?Hi?Ync7Hb&edwugj=H{h8{B9#v?UIZoG%^!Mf zMiw7oi-c7)^mRAQc#wzFuol|dLX`hEYAxw>7I~2(W0R41CRf$m0FAW z4{K{{8wcggoQx`j+EA$VAr!e zX4B9)kE@gl3<5+gcA0+C2`xRGx)o(L4>12{DXZueaAt4*)o_gUNBZZc@!3bby}vA& zVpVapY6BW~>&VQ9hD0G0?lATXCDro#J4U}7$^0)bp_`*d(&O>t@t71r2|WJ~_io{9 zwRfpVGkgu#5*9{RUq?p3k2Px{zu(h^B^RC}lDY*<=jhYfXA_DKL8Ar0TQ07tJ6m2Z z7@Ja4{m;^jSYVq@{`4{^chou16=9rMC>*=01OxIR+N78Wr9G`&7UZVEBLysOco))P zWxg3l0ZgPSUN^BmDrsCB7F*_fs7=~3te^k~5(E%G2v#*RxvfCl78G!h_Aw>@o|0@B zA9(?wVNm>{Wsa(d)O8Gx?#ZgJ_eB-eF}E=wU+I4kuSf!vV*umwO2l&>yuG zD5IuPv0iw64Gt!l$ARm4lsX{xn+cf3#Joe*;!`_|`5_TJAUt@N78>F%-u1@(I|hVi z+b%a&i3IXA(ecY1K`rQ%Apc_)CbPvvDDv4q?!!GMJ&yy@t?ffn(^iT~0N{NO``Y^J z^YOXi#{yOQzul{`WxskgP?CdALs|?QMM*lnlvzlErBi_2x!5eJEDFTwCTl743FkI| zAnRzTkB-MA^R3oW*M)%1=$9{7n&H{d%?(O%XGPaFJTQRPjOVhFSa7pPyA9r}By+vI zyhwtaE#RQ(^$tfVx}}uv@A9<)eRaz~z;*!7yeB?Nax)55Dt`&(i-Rw9cXtf(l$<+r za_pNN;vtrTsvj46{&Gq}Y&ph{>B$h6N246`_dkqP8p#4r)UB-U9c}tfLo-oCLtiy- z;mc^HD@Z56WZT6WtzX}ipk&bm>iFTq2byfDq=XNL#;#cR`JP=*=~`rNLfu^>-+zNV zT~MT*6R8=GUqDjv`+Hwb6xiZA;j*`P2p-F6MjpS03fx2~ zP4Dj&gx+?prJleg_WE$2GyDo1bE3*Bkn`!Qk0H=vy1sKqzV_5qK9tIq2ou268IVWp8f<+-9eK@AW5 zR~?}RAMZ!%!aaZog;(!;#EaZq^^F^o0Y9(6qJ&@$W_6-#!1S_Y>KiTz(HnLjYUJ+k z)OE18!`az<%ZM?Xw=I}dfK?d`P=w0S_VxVBuxlVrCqeY#g3+F zN0d7kh8I9c1%k=Ei z{2#1)4%s{4wCWt6=-ao~K=U$&i#ctFRkkPCLAWY&sZ)sFuscL^nBEzSjT~6J9#%sF zs4Hl#+tWK@3jm|KIbNS=Aq-LmI8J%9{e5iP=O-ICEDPw2*&erRAtZOLZ~DVj9qR=l zIkwbXA=C2WDfEiPH2w-C*7sBNTktiO!<(|KLi^$k7%Ma5?Ek3~-Rf&RW;)bN_{E1-8X!L$WR21I51 zz|3SDo{$kENAl{moMoX%Z*i<#gOY}=a;BJNPZ!ywJr(c|x@@2w5P0ltl@*1skPJ#*FoEfGTX1CW;^2-wcuQ=^6jo+km<@@NE>5%ykbfOl4uEsC*4GM6hS5_l zix{lkT-lB?qK^<&w9GW1t4rFfv^b=t<@{4uN9>7}oSi~OhALYP4Y*nzx^1wk95#WI zHBA&c3}hS!C}to=Vl@$*4|4|T9>0El#mCVp7@C4khoTJWERpq%W$}*PDMi@a(XzsP zv>l2hu%e)XVIx8Y_vCXM;E)nlf&eSqF`e`rq}+q{U~P~a5APb7BG8}8m`0$tA)ybJ z*GjUt$OSYlJ#lg*o;b%}PglVVeUToY)pn)pao-yt_KZYC&Q2W0xsH=qSF@6jqtnh- zM^KMkM{-^Rqg(72jpb#5Kxam; z@KoB|a;P9=3CdK+*GOldh_i^Ly~0e@-#Xz}x;gE_^!DB7WbuJV>b2>^Jg~3v6+YOD zq$UaQ;o^B_JAo$uht2z$m`Ipr<&V1z3i#Uss0>{>n#2lByzjoF$ zNdzf}z}>jJl;n+$jV4KO#;$8V)|0T-xmXw5KjnAuIJR8rzYWDU|B;yhP%?U|MM>|4 z2YTMX!RNxsv(dz9?7fk2>0u$0?yJowqi07&S8)dAEic~gD;s!H(q#k4dEoBFWw!lm zVLNxbpL%%LAQCzPb)kyR$fvw9iD*Pn+CvmW!fa^X0fB{Yy%jZ?I|)R2D_@0~Dg31W z+3{yIa{cFi2s2!t6a(9IOBWo)1(D(hw=@M*7}!+X+T$z2F3yNnNc;+x8tITF_28Yi zqk3-}zsDErmGsjnJ;CS7v^hf4)R9*6sOw$0968*YYSY~sQow)*LO@bs{dAn*JL0V# z`j?mMmpOGO5p}UtFU7mvlD!faa43*Q!+lHAbYCf}`*>n*O6)s-T+SdUXXrd{1SH(c zlT(CD?3#enufW~in$TmnH|fr55dL8xSEpQX} zU@6jt6*__VH{4xJnAyfWlX&$eiv78F|Ni<%O^)&Y$38djerkc*LEqW&0v?|mOmtY` z`JkptBr(aYDF4n*U2hiArox$VR3V*w= z2YbI6%NH(9I*#}jPq)>qb;wZU1mX5&T~8|eVHm5mM8R;l*iGnv;6shpOD*Sn(A!xP zP*S9A5DXPY@W%xZO^Iy>@Nn<|_nufS$xmTlzfOU~tPX)7RHmZ5gO2T~tB9v9fRwp& z?_p;PgIok5bl6=Y6B5=Sg#_xYBhr!zuXC7hCVRGkEl+BCCAmBU;xT@VIB!o>Dm%Z1 z0Zx^!_TK2mUz(qfFsgYtlL^_3jBJiSahl?SUqI;A^-i1{-Pg5iK_BkbkPNV(F{uLP zgv}T|TyG;`5{r(n9eGz;gkj|?3Q9$lJOpcFlPk5@j*l(Dx0u9%zN_zXS2s2er{bK# zqxbFww3cC(Ddch)K~(7b!c+r}f+k&IqW?BdFV*|jty@e;rd*tz=#L%aM$LS)XODJg}5OQV8Sw`AR{(2I};mdsn2Q>wnSO$S^ zZcyh7lWzG>5@F*$1<$=$#~Z4N!4`M=n;dAd7GGn_N@j~|Iuk?Y($&4|gI zXC`pFj*|9J7oJE-pUk2@B@x*%6nsl5<+y0r(V%@Kdhf2{mTg|z$Wd8{fMhsqez$%* zBENm(NBA^gXR?XvE;dD%5*Nj^wMy%Ilc8jnh)bpiMEs zYz$^WhOyEd`+mrjpeeC*tk(!AKwADd()Kr-#293#Wc+%b*N#$cF7E%9i0+;A(s=O$ z9P$c<6HH06?xU{JW}hCaQ@Ro%buBrfCEevon~nW!5bCaEeIs);ILdeLCgFJ?AuvKh z3gQtbacGnFaIl?xDMk{4-n4`fnY3)&o-0YQG#;^GMGq(w!y$bDT@bOY%1MkY=3 ziYzl&=hYn}?_2yy7Q;o$mRTJz<@UHD%tAyM*=3NaqHXgPWk@My!L0j6iq7C1v^qGlC$TfXjYyc@0ogYMf3)w;Jc2S>>UC? zX2q(ex4u%LrdfEs?5k+|t_M~&*yqtCLNFhhlwdE&7n7$IIb(UFw| z$jH3TnKFZb1S*vfKE!|2>Mf+w*58wxNQJ&_`DU>Z7BV^}2um_<_@3H-8yRuyKRRGG zIII*D%ZsMe*a}29AJooD(^JxcG-i9uMEO9>3>ti}6F~?>K!3F{IDdnW%x9dan>X)| zMlFd0f6RzeuvQ=)@dOYKNUy4_EfAK4CQX#NA7(v3x;9o{cS0k!K>c{p{Cz{SF@haV z>2&JP9Ge{aZ8S~HMbmzqERJ(j2MRHZXE=Kq_i+!dAq-FNFtN#=nNf^QpQqIL`T2Vk zvWuLh;|vcURAX3d2T+YZbp?U~c7gmGhy|fn$W&*KPD4RXc75DA8#gYyilYzr7%>BExvlx=orK9FT>u>w;3Yjh z2cFXT@Dl2S!U-KZ`p?!*1hiH}(27C0ARgV)(x+Ydo=y?OL_n~?^#>CVWH8K64TdB5 z)}l^8ANm&2+&JTdVLTQrm=B(n=tU4VAKDoF##qVJ^HT2RQ`cfsjMgbCiU&Zvj`m|q zd}2upu?=sJxX->EfqjZ7Ca8k2dBb601MQ?AvYRI(x&YfwVB9j`h7iUJdH$yHu6?GU%2Ma*Y`} z8YRemq;fK|_8_60)o7lctPL-A%CFDL6ZJ6qhVK+x{l}zS;Bckr2sj*VtnWvs*k6H` zh6&EK5IDCTJ;MMv=afO2-v0v58LnedF7S%EHS&%fan<+RjGwy|Gta>SNZw-_V&UoB zQ#B`Db#H7D9IPGIz-SL5n(O#A=I#aw0tcj`fFX&b1pD^ko=w)YoOd8iNDKg}v;fWg zgarh=_C&pT7W9h~EL3uz;Ef8#?*0*&703-?gwCcY@>mcvF`1?VEhY>0o%vOm2Nvt z+*aD$OD1s}!(uiVf6$dEl(|di^NoE~qx|)Rk>qYvbC|}Jcl_%;>=T7nd9n`AIy|tb zY)bSphz4MmH^lbhi|-2O9&I6Z))Xr9S1(^uC^uTNRkh980T{BYjde8s?hs*@#O+d2 zAEcYoTDfN|`UOxN$pL=YXP5#{eq)lq@=u%7-u4ajna{`4rytSKtvno40Ktr=UT+i} z(3EozyEHbdAf#8|^ra*^j7-IZ!{;OnM`KT}F-&BFoDYN7C(Y(N_l(UZGDaK47Tq#W zM>=u()1OMp%0Agf8^VNC_7>}s*HgZ)N}d!h#nJJHWjEhAt4SvQq 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 z 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