Go to file
DDD1542 08dde416b1 docs: Add detailed backend, database, and frontend architecture analysis documents
- Created a comprehensive analysis document for the backend architecture, detailing the directory structure, API routes, authentication workflows, and more.
- Added a database architecture analysis report outlining the database structure, multi-tenancy architecture, and key system tables.
- Introduced a frontend architecture analysis document that covers the directory structure, component systems, and Next.js App Router structure.

These documents aim to enhance the understanding of the WACE ERP system's architecture and facilitate better workflow documentation.
2026-02-06 16:00:43 +09:00
.cursor fix: macOS Agent CLI 호환성 수정 (모델명, Base64 인코딩, 경로) 2026-02-06 13:33:35 +09:00
.playwright-mcp 그리드? 일단 추가랑 복사기능 되게 했음 2026-01-08 17:05:27 +09:00
.settings 최초커밋 2025-08-21 09:41:46 +09:00
WebContent 최초커밋 2025-08-21 09:41:46 +09:00
backend 화면관리 중간 커밋 2025-09-01 11:48:12 +09:00
backend-node refactor: 테이블 관리 서비스에서 기본 정렬 로직 개선 및 안전한 테이블명 검증 추가 2026-02-06 15:57:49 +09:00
db feat: 중첩 구조 지원을 위한 컴포넌트 선택 및 기본값 적용 기능 추가 2026-02-02 17:11:00 +09:00
docker feat: Docker 및 컴포넌트 최적화 2026-02-04 18:01:20 +09:00
docs docs: Add detailed backend, database, and frontend architecture analysis documents 2026-02-06 16:00:43 +09:00
frontend Merge branch 'feature/v2-unified-renewal' of http://39.117.244.52:3000/kjs/ERP-node into gbpark-node 2026-02-06 15:59:27 +09:00
hooks 웹타입 컴포넌트 분리작업 2025-09-09 14:29:04 +09:00
lib/registry 웹타입 컴포넌트 분리작업 2025-09-09 14:29:04 +09:00
mcp-agent-orchestrator docs: Add detailed backend, database, and frontend architecture analysis documents 2026-02-06 16:00:43 +09:00
scripts feat: Docker 및 스크립트 개선 2026-02-04 13:57:04 +09:00
src chore: Prisma 관련 파일 완전 제거 🧹 2025-10-01 14:54:44 +09:00
tomcat-conf 최초커밋 2025-08-21 09:41:46 +09:00
.classpath 최초커밋 2025-08-21 09:41:46 +09:00
.cursorrules docs: 비즈니스 로직 요청 양식 검증 및 화면 분석 요약 추가 2026-01-30 14:13:44 +09:00
.env.development 최초커밋 2025-08-21 09:41:46 +09:00
.gitignore chore: Prisma 관련 파일 완전 제거 🧹 2025-10-01 14:54:44 +09:00
.project 최초커밋 2025-08-21 09:41:46 +09:00
Dockerfile feat: 원본 최신 소스 반영 + NCP Kubernetes 배포 설정 추가 2025-11-10 14:20:10 +09:00
Jenkinsfile feat: 원본 최신 소스 반영 + NCP Kubernetes 배포 설정 추가 2025-11-10 14:20:10 +09:00
PLAN.MD feat: V2 컴포넌트 설정 스키마 정비 및 화면 복제 기능 개선 2026-01-29 14:45:04 +09:00
README.md 프로젝트 이름을 PLM 솔루션에서 WACE 솔루션으로 수정 2025-09-02 09:37:51 +09:00
SETTING_GUIDE.txt 최초커밋 2025-08-21 09:41:46 +09:00
control.html Fix codeCache import issues - add named export 2025-09-18 19:13:12 +09:00
cookies.txt 저장버튼 제어기능 (insert) 2025-09-18 10:05:50 +09:00
docker-compose.backend.win.yml rest api 액션노드 기능변경 2025-10-13 12:00:41 +09:00
docker-compose.frontend.win.yml feat: Docker 및 스크립트 개선 2026-02-04 13:57:04 +09:00
docker-compose.win.yml Resolve merge conflicts: Use main branch versions for conflicting files 2025-09-22 18:16:24 +09:00
env.development.example 최초커밋 2025-08-21 09:41:46 +09:00
env.production.example 최초커밋 2025-08-21 09:41:46 +09:00
fix-selects.sh 웹타입 컴포넌트 분리작업 2025-09-09 14:29:04 +09:00
my_layout.json V2 이벤트 시스템 통합 및 데이터 전달 인터페이스 구현: UnifiedRepeater 컴포넌트에 데이터 제공 및 수신 인터페이스를 추가하여 다른 컴포넌트와의 데이터 연동을 개선하였습니다. 또한, AggregationWidgetComponent와 RepeatContainerComponent에서 V2 표준 이벤트를 구독하여 데이터 변경 이벤트를 효율적으로 처리하도록 수정하였습니다. 이를 통해 컴포넌트 간의 데이터 흐름과 사용자 경험을 향상시켰습니다. 2026-01-29 23:20:23 +09:00
package-lock.json ui개선 2025-10-17 16:21:08 +09:00
package.json ui개선 2025-10-17 16:21:08 +09:00
replace-selects.js 웹타입 컴포넌트 분리작업 2025-09-09 14:29:04 +09:00
run-windows.bat Resolve merge conflicts: Use main branch versions for conflicting files 2025-09-22 18:16:24 +09:00
start-all-separated.bat Resolve merge conflicts: Use main branch versions for conflicting files 2025-09-22 18:16:24 +09:00
start-windows-simple.bat 윈도우용 실행파일 커밋 2025-09-22 17:46:23 +09:00
test-backend-build.bat 윈도우용 실행파일 커밋 2025-09-22 17:46:23 +09:00
test-dataflow-features.js 저장버튼 제어기능 (insert) 2025-09-18 10:05:50 +09:00
test-upload.txt 문서뷰어기능구현 2025-09-29 13:29:03 +09:00
test_contract_list.html 최초커밋 2025-08-21 09:41:46 +09:00
values_logistream.yaml feat: 원본 최신 소스 반영 + NCP Kubernetes 배포 설정 추가 2025-11-10 14:20:10 +09:00
working_layout.json V2 이벤트 시스템 통합 및 데이터 전달 인터페이스 구현: UnifiedRepeater 컴포넌트에 데이터 제공 및 수신 인터페이스를 추가하여 다른 컴포넌트와의 데이터 연동을 개선하였습니다. 또한, AggregationWidgetComponent와 RepeatContainerComponent에서 V2 표준 이벤트를 구독하여 데이터 변경 이벤트를 효율적으로 처리하도록 수정하였습니다. 이를 통해 컴포넌트 간의 데이터 흐름과 사용자 경험을 향상시켰습니다. 2026-01-29 23:20:23 +09:00
레포트드자이너.html 리포트관리 설계 2025-10-01 11:10:54 +09:00

README.md

WACE 솔루션 (PLM)

프로젝트 개요

본 프로젝트는 제품 수명 주기 관리(PLM - Product Lifecycle Management) 솔루션입니다. 기존 JSP 기반 프론트엔드를 Next.js 14로 완전 전환하여 현대적이고 사용자 친화적인 웹 애플리케이션을 제공합니다.

🚀 주요 특징

  • 모던 프론트엔드: Next.js 14 + TypeScript + shadcn/ui
  • 반응형 디자인: 데스크톱, 태블릿, 모바일 모든 기기 지원
  • 안정적인 백엔드: 검증된 Java Spring + MyBatis 기반 API
  • Docker 기반 배포: 개발/운영 환경 일관성 보장
  • 타입 안전성: TypeScript로 런타임 에러 방지

🛠️ 기술 스택

Frontend (Next.js 14)

  • 프레임워크: Next.js 14 (App Router)
  • 언어: TypeScript
  • UI 라이브러리: shadcn/ui + Radix UI
  • 스타일링: Tailwind CSS
  • 폼 처리: React Hook Form + Zod
  • 상태 관리: React Context + Hooks
  • 아이콘: Lucide React

Backend (기존 유지)

  • 언어: Java 7
  • 프레임워크: Spring Framework 3.2.4
  • ORM: MyBatis 3.2.3
  • 데이터베이스: PostgreSQL
  • WAS: Apache Tomcat 7.0

개발 도구

  • 컨테이너화: Docker + Docker Compose
  • 코드 품질: ESLint + TypeScript
  • 패키지 관리: npm

📁 프로젝트 구조

new_ph/
├── frontend/                 # Next.js 프론트엔드
│   ├── app/                 # Next.js App Router
│   │   ├── (auth)/         # 인증 관련 페이지
│   │   │   └── login/      # 로그인 페이지
│   │   ├── dashboard/      # 대시보드
│   │   └── layout.tsx      # 루트 레이아웃
│   ├── components/         # 재사용 컴포넌트
│   │   ├── ui/            # shadcn/ui 기본 컴포넌트
│   │   └── layout/        # 레이아웃 컴포넌트
│   ├── lib/               # 유틸리티 함수
│   └── types/             # TypeScript 타입 정의
├── src/                     # Java 백엔드 소스
│   └── com/pms/            # 패키지 구조
├── WebContent/             # 레거시 JSP (사용 중단)
├── db/                     # 데이터베이스 스크립트
└── docker-compose.win.yml  # Windows 환경 설정

🚀 빠른 시작

1. 필수 요구사항

  • Docker Desktop (Windows/Mac) 또는 Docker + Docker Compose (Linux)
  • Git (소스 코드 관리)

2. Windows 환경에서 실행

자동 실행 (권장)

# 프로젝트 시작
./run-windows.bat

# 서비스 상태 확인
./status-windows.bat

# 서비스 중지
./stop-windows.bat

수동 실행

# Docker 컨테이너 실행
docker-compose -f docker-compose.win.yml up --build -d

# 로그 확인
docker-compose -f docker-compose.win.yml logs -f

3. 서비스 접속

서비스 URL 설명
프론트엔드 http://localhost:9771 Next.js 기반 사용자 인터페이스
백엔드 API http://localhost:9090 Spring 기반 REST API

주의: 기존 JSP 화면(localhost:9090)은 더 이상 사용하지 않습니다. 모든 사용자는 **Next.js 프론트엔드(localhost:9771)**를 사용해주세요.

🎨 UI/UX 디자인 시스템

shadcn/ui 컴포넌트 라이브러리

  • 일관된 디자인: 전체 애플리케이션에서 통일된 UI 컴포넌트
  • 접근성: WCAG 가이드라인 준수
  • 커스터마이징: Tailwind CSS로 쉬운 스타일 변경
  • 다크모드: 자동 테마 전환 지원

공통 스타일 가이드

// 색상 팔레트
const colors = {
  primary: "hsl(222.2 47.4% 11.2%)", // 네이비 블루
  secondary: "hsl(210 40% 96%)", // 연한 그레이
  accent: "hsl(210 40% 98%)", // 거의 화이트
  destructive: "hsl(0 62.8% 30.6%)", // 레드
  muted: "hsl(210 40% 96%)", // 음소거된 그레이
};

// 타이포그래피
const typography = {
  fontFamily: "Inter, system-ui, sans-serif",
  fontSize: {
    xs: "0.75rem", // 12px
    sm: "0.875rem", // 14px
    base: "1rem", // 16px
    lg: "1.125rem", // 18px
    xl: "1.25rem", // 20px
  },
};

🔧 개발 가이드

컴포넌트 개발 원칙

1. 재사용 가능한 컴포넌트

// components/ui/button.tsx
interface ButtonProps {
  variant?: "default" | "destructive" | "outline" | "secondary" | "ghost";
  size?: "default" | "sm" | "lg" | "icon";
  children: React.ReactNode;
}

export function Button({
  variant = "default",
  size = "default",
  children,
  ...props
}: ButtonProps) {
  return (
    <button className={cn(buttonVariants({ variant, size }))} {...props}>
      {children}
    </button>
  );
}

2. 폼 컴포넌트

// React Hook Form + Zod 사용
import { useForm } from "react-hook-form";
import { zodResolver } from "@hookform/resolvers/zod";
import * as z from "zod";

const loginSchema = z.object({
  userId: z.string().min(1, "사용자 ID를 입력해주세요"),
  password: z.string().min(1, "비밀번호를 입력해주세요"),
});

export function LoginForm() {
  const form = useForm<z.infer<typeof loginSchema>>({
    resolver: zodResolver(loginSchema),
  });

  // 폼 처리 로직
}

3. API 연동

// lib/api.ts
class ApiClient {
  private baseURL = process.env.NEXT_PUBLIC_API_URL || "http://localhost:9090";

  async login(credentials: LoginCredentials): Promise<LoginResponse> {
    const response = await fetch(`${this.baseURL}/api/auth/login`, {
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify(credentials),
      credentials: "include", // 세션 쿠키 포함
    });

    if (!response.ok) throw new Error("로그인 실패");
    return response.json();
  }
}

스타일링 가이드

1. Tailwind CSS 클래스

// 일반적인 레이아웃
<div className="flex items-center justify-center min-h-screen bg-slate-50">
  <div className="w-full max-w-md space-y-6">
    {/* 컨텐츠 */}
  </div>
</div>

// 카드 컴포넌트
<div className="bg-white rounded-lg shadow-lg border border-slate-200 p-6">
  {/* 카드 내용 */}
</div>

// 반응형 그리드
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
  {/* 그리드 아이템 */}
</div>

2. CSS 변수 활용

/* globals.css */
:root {
  --background: 0 0% 100%;
  --foreground: 222.2 84% 4.9%;
  --primary: 222.2 47.4% 11.2%;
  --primary-foreground: 210 40% 98%;
  --secondary: 210 40% 96%;
  --secondary-foreground: 222.2 84% 4.9%;
}

🔐 인증 시스템

세션 기반 인증 (기존 백엔드 호환)

// 로그인 프로세스
1. 사용자가 로그인  제출
2. Next.js에서 백엔드 API 호출
3. 백엔드에서 세션 생성 (기존 로직 사용)
4. 프론트엔드에서 인증 상태 관리
5. 보호된 라우트 접근 제어

라우트 보호

// middleware.ts
export function middleware(request: NextRequest) {
  const { pathname } = request.nextUrl;

  // 공개 페이지
  const publicPaths = ["/login", "/"];
  if (publicPaths.includes(pathname)) return NextResponse.next();

  // 인증 확인
  const sessionCookie = request.cookies.get("JSESSIONID");
  if (!sessionCookie) {
    return NextResponse.redirect(new URL("/login", request.url));
  }

  return NextResponse.next();
}

📊 주요 기능

1. 대시보드

  • 프로젝트 현황: 진행 중인 프로젝트 상태 모니터링
  • 작업 요약: 개인별 할당된 작업 목록
  • 알림 센터: 중요한 업데이트 및 알림
  • 차트 및 그래프: 프로젝트 진척도 시각화

2. 프로젝트 관리

  • 프로젝트 생성/수정: 새 프로젝트 등록 및 정보 관리
  • 팀 구성: 프로젝트 멤버 할당 및 역할 관리
  • 마일스톤: 주요 일정 및 목표 설정
  • 진행 상황 추적: 실시간 프로젝트 진척도 모니터링

3. 제품 관리

  • 제품 카탈로그: 제품 정보 및 사양 관리
  • BOM 관리: Bill of Materials 구성 및 버전 관리
  • 설계 변경: ECO/ECR 프로세스 관리
  • 문서 관리: 기술 문서 및 도면 버전 제어

4. 사용자 관리

  • 사용자 계정: 계정 생성/수정/비활성화
  • 권한 관리: 역할 기반 접근 제어 (RBAC)
  • 부서 관리: 조직 구조 및 부서별 권한 설정
  • 감사 로그: 사용자 활동 추적 및 보안 모니터링

🚢 배포 가이드

개발 환경

# 프론트엔드 개발 서버
cd frontend && npm run dev

# 백엔드 (Docker)
docker-compose -f docker-compose.win.yml up -d plm-app

운영 환경

# 전체 서비스 배포
docker-compose -f docker-compose.prod.yml up -d

# 무중단 배포 (blue-green)
./deploy-production.sh

환경 변수 설정

# .env.local (Next.js)
NEXT_PUBLIC_API_URL=http://localhost:9090
NEXT_PUBLIC_APP_ENV=development

# docker-compose.win.yml (백엔드)
DB_URL=jdbc:postgresql://db:5432/plm
DB_USERNAME=postgres
DB_PASSWORD=secure_password

🔧 문제 해결

자주 발생하는 문제

1. 로그인 화면이 업데이트되지 않는 경우

# 브라우저 캐시 클리어 후 다음 확인:
# - Next.js 서버 재시작
npm run dev

# - 올바른 URL 접속 확인
# 올바름: http://localhost:9771/login
# 잘못됨: http://localhost:9090/login.jsp

2. Docker 컨테이너 실행 오류

# 포트 충돌 확인
netstat -ano | findstr :9771
netstat -ano | findstr :9090

# Docker 시스템 정리
docker system prune -a
docker-compose -f docker-compose.win.yml down --volumes

3. API 연결 오류

# 백엔드 컨테이너 로그 확인
docker-compose -f docker-compose.win.yml logs plm-app

# 네트워크 연결 확인
curl http://localhost:9090/api/health

개발자 도구

브라우저 개발자 도구

  • Console: JavaScript 오류 확인
  • Network: API 요청/응답 모니터링
  • Application: 세션 쿠키 확인

로그 확인

# Next.js 개발 서버 로그
npm run dev

# 백엔드 애플리케이션 로그
docker-compose -f docker-compose.win.yml logs -f plm-app

# 데이터베이스 로그
docker-compose -f docker-compose.win.yml logs -f db

📈 성능 최적화

Next.js 최적화

  • 이미지 최적화: Next.js Image 컴포넌트 사용
  • 코드 분할: 동적 임포트로 번들 크기 최소화
  • 서버 사이드 렌더링: 초기 로딩 속도 개선
  • 정적 생성: 변경되지 않는 페이지 사전 생성

백엔드 최적화

  • 데이터베이스 인덱스: 자주 조회되는 필드 인덱싱
  • 쿼리 최적화: N+1 문제 해결
  • 캐싱: Redis를 통한 세션 및 데이터 캐싱
  • 리소스 최적화: JVM 메모리 튜닝

🤝 기여 가이드

코드 컨벤션

  • TypeScript: 엄격한 타입 정의 사용
  • ESLint: 코드 품질 유지.
  • Prettier: 일관된 코드 포맷팅
  • 커밋 메시지: Conventional Commits 규칙 준수

브랜치 전략

main      # 운영 환경 배포 브랜치
develop   # 개발 환경 통합 브랜치
feature/* # 기능 개발 브랜치
hotfix/*  # 긴급 수정 브랜치

Pull Request 프로세스

  1. 기능 브랜치에서 개발
  2. 테스트 코드 작성
  3. PR 생성 및 코드 리뷰
  4. 승인 후 develop 브랜치에 병합

📞 지원 및 문의

  • 개발팀 문의: 내부 Slack 채널 #plm-support
  • 버그 리포트: GitHub Issues
  • 기능 요청: Product Owner와 협의
  • 긴급 상황: 개발팀 직접 연락

📝 변경 이력

v2.0.0 (2025년 1월)

  • JSP → Next.js 14 완전 전환
  • shadcn/ui 디자인 시스템 도입
  • TypeScript 타입 안전성 강화
  • 반응형 디자인 적용
  • WACE 브랜딩 적용

v1.x (레거시)

  • JSP + jQuery 기반 (사용 중단)
  • 데스크톱 전용 UI
  • 제한적인 확장성

🎉 현재 버전 2.0.0에서는 완전히 새로운 사용자 경험을 제공합니다!