7.6 KiB
7.6 KiB
VEXPLOR (WACE 솔루션) 프로젝트 아키텍처
AI 에이전트 안내: Quick Reference 먼저 확인 후 필요한 섹션만 참조
Quick Reference
기술 스택 요약
| 영역 | 기술 |
|---|---|
| Frontend | Next.js 14, TypeScript, shadcn/ui, Tailwind CSS |
| Backend | Node.js + Express (주력), Java Spring (레거시) |
| Database | PostgreSQL (173개 테이블) |
| 핵심 기능 | 노코드 화면 빌더, 멀티테넌시, 워크플로우 |
디렉토리 맵
ERP-node/
├── frontend/ # Next.js
│ ├── app/ # 라우팅 (main, auth, pop)
│ ├── components/ # UI 컴포넌트 (281개+)
│ └── lib/ # API, 레지스트리 (463개)
├── backend-node/ # Node.js 백엔드
│ └── src/
│ ├── controllers/ # 68개
│ ├── services/ # 78개
│ └── routes/ # 47개
├── db/ # 마이그레이션
└── docs/ # 문서
핵심 테이블
| 분류 | 테이블 |
|---|---|
| 화면 | screen_definitions, screen_layouts_v2, screen_layouts_pop |
| 메뉴 | menu_info, authority_master |
| 사용자 | user_info, company_mng |
| 플로우 | flow_definition, flow_step |
1. 프로젝트 개요
1.1 제품 소개
- WACE 솔루션: PLM(Product Lifecycle Management) + 노코드 화면 빌더
- 멀티테넌시: company_code 기반 회사별 데이터 격리
- 마이그레이션: JSP에서 Next.js로 완전 전환
1.2 핵심 기능
- Screen Designer: 드래그앤드롭 화면 구성
- 워크플로우: 플로우 기반 업무 자동화
- 배치 시스템: 스케줄 기반 작업 자동화
- 외부 연동: DB, REST API 통합
- 리포트: 동적 보고서 생성
- 다국어: i18n 지원
2. Frontend 구조
2.1 라우트 그룹
app/
├── (main)/ # 메인 레이아웃
│ ├── admin/ # 관리자 기능
│ │ ├── screenMng/ # 화면 관리
│ │ ├── systemMng/ # 시스템 관리
│ │ ├── userMng/ # 사용자 관리
│ │ └── automaticMng/ # 자동화 관리
│ ├── screens/[screenId]/ # 동적 화면 뷰어
│ └── dashboard/[id]/ # 대시보드 뷰어
├── (auth)/ # 인증
│ └── login/
└── (pop)/ # POP 전용
└── pop/screens/[screenId]/
2.2 주요 컴포넌트
| 폴더 | 파일 수 | 역할 |
|---|---|---|
| screen/ | 70+ | 화면 디자이너, 위젯 |
| admin/ | 137 | 테이블, 메뉴, 코드 관리 |
| dataflow/ | 101 | 노드 기반 플로우 에디터 |
| dashboard/ | 32 | 대시보드 빌더 |
| v2/ | 20+ | V2 컴포넌트 시스템 |
| pop/ | 26 | POP 전용 컴포넌트 |
2.3 라이브러리 (lib/)
lib/
├── api/ # API 클라이언트 (50개+)
│ ├── screen.ts # 화면 API
│ ├── menu.ts # 메뉴 API
│ └── flow.ts # 플로우 API
├── registry/ # 컴포넌트 레지스트리 (463개)
│ ├── DynamicComponentRenderer.tsx
│ └── components/
├── v2-core/ # Zod 기반 타입 시스템
└── utils/ # 유틸리티 (30개+)
3. Backend 구조
3.1 디렉토리
backend-node/src/
├── controllers/ # 68개 컨트롤러
├── services/ # 78개 서비스
├── routes/ # 47개 라우트
├── middleware/ # 인증, 에러 처리
├── database/ # DB 연결
├── types/ # 26개 타입 정의
└── utils/ # 16개 유틸
3.2 주요 서비스
| 영역 | 서비스 |
|---|---|
| 화면 | screenManagementService, layoutService |
| 데이터 | dataService, tableManagementService |
| 플로우 | flowDefinitionService, flowExecutionService |
| 배치 | batchService, batchSchedulerService |
| 외부연동 | externalDbConnectionService, externalCallService |
3.3 API 엔드포인트
# 화면 관리
GET /api/screen-management/screens
GET /api/screen-management/screen/:id
POST /api/screen-management/screen
PUT /api/screen-management/screen/:id
GET /api/screen-management/layout-v2/:screenId
POST /api/screen-management/layout-v2/:screenId
GET /api/screen-management/layout-pop/:screenId
POST /api/screen-management/layout-pop/:screenId
# 데이터 CRUD
GET /api/data/:tableName
POST /api/data/:tableName
PUT /api/data/:tableName/:id
DELETE /api/data/:tableName/:id
# 인증
POST /api/auth/login
POST /api/auth/logout
GET /api/auth/me
4. Database 구조
4.1 테이블 분류 (173개)
| 분류 | 개수 | 주요 테이블 |
|---|---|---|
| 화면/레이아웃 | 15 | screen_definitions, screen_layouts_v2, screen_layouts_pop |
| 메뉴/권한 | 7 | menu_info, authority_master, rel_menu_auth |
| 사용자/회사 | 6 | user_info, company_mng, dept_info |
| 테이블/컬럼 | 8 | table_type_columns, column_labels |
| 다국어 | 4 | multi_lang_key_master, multi_lang_text |
| 플로우/배치 | 12 | flow_definition, flow_step, batch_configs |
| 외부연동 | 4 | external_db_connections, external_call_configs |
| 리포트 | 5 | report_master, report_layout, report_query |
| 대시보드 | 2 | dashboards, dashboard_elements |
| 컴포넌트 | 6 | component_standards, web_type_standards |
| 비즈니스 | 100+ | item_info, sales_order_mng, inventory_stock |
4.2 화면 관련 테이블 상세
-- 화면 정의
screen_definitions: screen_id, screen_name, table_name, company_code
-- 데스크톱 레이아웃 (V2, 현재 사용)
screen_layouts_v2: id, screen_id, components(JSONB), grid_settings
-- POP 레이아웃
screen_layouts_pop: id, screen_id, components(JSONB), grid_settings
-- 화면 그룹
screen_groups: group_id, group_name, company_code
screen_group_screens: id, group_id, screen_id
4.3 멀티테넌시
-- 모든 테이블에 company_code 필수
ALTER TABLE example_table ADD COLUMN company_code VARCHAR(20) NOT NULL;
-- 모든 쿼리에 company_code 필터링 필수
SELECT * FROM example_table WHERE company_code = $1;
-- 예외: company_mng (회사 마스터 테이블)
5. 핵심 기능 상세
5.1 노코드 Screen Designer
아키텍처:
screen_definitions (화면 정의)
↓
screen_layouts_v2 (레이아웃, JSONB)
↓
DynamicComponentRenderer (동적 렌더링)
↓
registry/components (컴포넌트 라이브러리)
컴포넌트 레지스트리:
- V2 컴포넌트: Input, Select, Table, Button 등
- 위젯: FlowWidget, CategoryWidget 등
- 레이아웃: SplitPanel, TabPanel 등
5.2 워크플로우 (Flow)
테이블 구조:
flow_definition (플로우 정의)
↓
flow_step (단계 정의)
↓
flow_step_connection (단계 연결)
↓
flow_data_status (데이터 상태 추적)
5.3 POP 시스템
별도 레이아웃 테이블:
screen_layouts_pop: POP 전용 레이아웃- 모바일/태블릿 반응형 지원
- 제조 현장 최적화 컴포넌트
6. 개발 환경
6.1 로컬 개발
# Docker 실행
docker-compose -f docker-compose.win.yml up -d
# 프론트엔드: http://localhost:9771
# 백엔드: http://localhost:8080
6.2 데이터베이스
Host: 39.117.244.52
Port: 11132
Database: plm
Username: postgres
7. 관련 문서
- POPUPDATE.md: POP 개발 기록
- docs/pop/components-spec.md: POP 컴포넌트 설계
- .cursorrules: 개발 가이드라인
최종 업데이트: 2026-01-29