Go to file
dohyeons afea879920 수정/삭제 기능 구현 2025-11-07 16:02:01 +09:00
.cursor/rules 회사별 테이블 데이터 격리 2025-11-06 18:35:05 +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 수정/삭제 기능 구현 2025-11-07 16:02:01 +09:00
db 격자 저장문제 수정 2025-11-06 17:01:13 +09:00
docker 실서버에 환경변수 추가 2025-10-30 15:18:01 +09:00
docs 격자 저장문제 수정 2025-11-06 17:01:13 +09:00
frontend 수정/삭제 기능 구현 2025-11-07 16:02:01 +09:00
hooks 웹타입 컴포넌트 분리작업 2025-09-09 14:29:04 +09:00
lib/registry 웹타입 컴포넌트 분리작업 2025-09-09 14:29:04 +09:00
scripts 버튼 문제 수정 및 여러가지 2025-11-05 16:36:32 +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 회사별 테이블 데이터 격리 2025-11-06 18:35:05 +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
CARD_COMPONENT_ENHANCEMENT_PLAN.md 저장버튼 제어기능 (insert) 2025-09-18 10:05:50 +09:00
DETAILED_FILE_MIGRATION_PLAN.md feat: Complete Phase 1 of Prisma to Raw Query migration 2025-09-30 15:29:20 +09:00
DOCKER.md docs: 모든 문서에서 Prisma 참조 제거 및 Raw Query로 업데이트 2025-10-01 15:03:08 +09:00
EXTERNAL_REST_API_IMPLEMENTATION_COMPLETE.md rest api 관리 구현 2025-10-21 10:59:15 +09:00
Entity_조인_기능_개발계획서.md 조인기능 최적화 2025-09-16 16:53:03 +09:00
PHASE1.5_AUTH_MIGRATION_PLAN.md docs: Add Phase 1.5 for Auth and Admin service migration 2025-09-30 15:40:18 +09:00
PHASE2.2_TABLE_MANAGEMENT_MIGRATION.md phase 2 변환계획 작성 2025-09-30 17:40:21 +09:00
PHASE2.3_DATAFLOW_SERVICE_MIGRATION.md phase2.4 전환 완료 2025-10-01 10:03:41 +09:00
PHASE2.4_DYNAMIC_FORM_MIGRATION.md style: PHASE2.4 문서 테이블 포맷 정리 2025-10-01 10:19:24 +09:00
PHASE2.5_EXTERNAL_DB_CONNECTION_MIGRATION.md feat: Phase 2.5 ExternalDbConnectionService Raw Query 전환 완료 2025-10-01 10:11:19 +09:00
PHASE2.6_DATAFLOW_CONTROL_MIGRATION.md feat: Phase 2.5 & 2.6 완료 - ExternalDbConnectionService + DataflowControlService Raw Query 전환 2025-10-01 10:14:16 +09:00
PHASE2.7_DDL_EXECUTION_MIGRATION.md phase 2.3 테이블 및 컬럼 동적생성기능 변경 2025-09-30 18:28:54 +09:00
PHASE2_SCREEN_MANAGEMENT_MIGRATION.md Phase 2 ScreenManagementService 전환 완료 2025-09-30 17:19:05 +09:00
PHASE3.7_LAYOUT_SERVICE_MIGRATION.md feat: Phase 3.6 CollectionService 전환 완료 및 Phase 3.7-3.9 계획서 작성 2025-10-01 11:20:21 +09:00
PHASE3.8_DB_TYPE_CATEGORY_SERVICE_MIGRATION.md feat: Phase 3.6 CollectionService 전환 완료 및 Phase 3.7-3.9 계획서 작성 2025-10-01 11:20:21 +09:00
PHASE3.9_TEMPLATE_STANDARD_SERVICE_MIGRATION.md feat: Phase 3.9 TemplateStandardService Raw Query 전환 완료 2025-10-01 11:40:48 +09:00
PHASE3.11_DDL_AUDIT_LOGGER_MIGRATION.md docs: Phase 4 남은 Prisma 호출 전환 계획서 작성 2025-10-01 14:33:08 +09:00
PHASE3.12_EXTERNAL_CALL_CONFIG_SERVICE_MIGRATION.md docs: Phase 4 남은 Prisma 호출 전환 계획서 작성 2025-10-01 14:33:08 +09:00
PHASE3.13_ENTITY_JOIN_SERVICE_MIGRATION.md docs: Phase 4 남은 Prisma 호출 전환 계획서 작성 2025-10-01 14:33:08 +09:00
PHASE3.14_AUTH_SERVICE_MIGRATION.md docs: Phase 4 남은 Prisma 호출 전환 계획서 작성 2025-10-01 14:33:08 +09:00
PHASE3.15_BATCH_SERVICES_MIGRATION.md docs: Phase 4 남은 Prisma 호출 전환 계획서 작성 2025-10-01 14:33:08 +09:00
PHASE3.16_DATA_MANAGEMENT_SERVICES_MIGRATION.md docs: Phase 4 남은 Prisma 호출 전환 계획서 작성 2025-10-01 14:33:08 +09:00
PHASE3.17_REFERENCE_CACHE_SERVICE_MIGRATION.md docs: Phase 4 남은 Prisma 호출 전환 계획서 작성 2025-10-01 14:33:08 +09:00
PHASE3.18_DDL_EXECUTION_SERVICE_MIGRATION.md docs: Phase 4 남은 Prisma 호출 전환 계획서 작성 2025-10-01 14:33:08 +09:00
PHASE4.1_ADMIN_CONTROLLER_MIGRATION.md docs: Phase 4 남은 Prisma 호출 전환 계획서 작성 2025-10-01 14:33:08 +09:00
PHASE4_CONTROLLER_LAYER_MIGRATION.md docs: Phase 4 남은 Prisma 호출 전환 계획서 작성 2025-10-01 14:33:08 +09:00
PHASE4_REMAINING_PRISMA_CALLS.md feat: webTypeStandardController & fileController Prisma 전환 완료 2025-10-01 14:36:36 +09:00
PHASE_EXTERNAL_CONNECTION_REST_API_ENHANCEMENT.md rest api 관리 계획 md파일 생성 2025-10-20 17:24:41 +09:00
PHASE_EXTERNAL_CONNECTION_REST_API_ENHANCEMENT_DONE.md rest api 관리 구현 2025-10-21 10:59:15 +09:00
PHASE_FLOW_MANAGEMENT_SYSTEM.md 플로우 구현 2025-10-20 10:55:33 +09:00
PHASE_FLOW_STEP_BUTTON_VISIBILITY_CONTROL.md 플로우 단계별 버튼 표시 설정 2025-10-23 18:23:01 +09:00
PHASE_RESPONSIVE_LAYOUT.md 반응형 레이아웃 기능 구현 2025-10-16 18:16:57 +09:00
PRISMA_TO_RAW_QUERY_MIGRATION_PLAN.md docs: Phase 4 남은 Prisma 호출 전환 계획서 작성 2025-10-01 14:33:08 +09:00
README-WINDOWS.md 최초커밋 2025-08-21 09:41:46 +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
UI_REDESIGN_PLAN.md 제어관리 외부커넥션 설정기능 2025-09-26 01:28:51 +09:00
UI_개선사항_문서.md 메일관리 콘솔로그 주석처리 세이브 2025-10-02 18:22:58 +09:00
WORK_HISTORY_SETUP.md 작업 이력 통계 위젯 추가 2025-10-20 14:07:08 +09:00
YARD_MANAGEMENT_3D_DATA_BINDING_REDESIGN.md 데이터 바인딩 시스템 재설계 md 파일 생성 2025-10-20 09:45:54 +09:00
YARD_MANAGEMENT_3D_PLAN.md 일단 야드관리 3d 드래그앤 드랍까지 2025-10-17 15:26:21 +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 Resolve merge conflicts: Use main branch versions for conflicting files 2025-09-22 18:16:24 +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
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
test_contract_registration.md 최초커밋 2025-08-21 09:41:46 +09:00
test_contract_registration_final.md 최초커밋 2025-08-21 09:41:46 +09:00
노드_플로우_데이터소스_설정_가이드.md 제어관리 개선판 2025-10-24 14:11:12 +09:00
데이터소스_일관성_개선_완료.md 제어관리 개선판 2025-10-24 14:11:12 +09:00
동적_테이블_접근_시스템_개선_완료.md 쿼리 에러 수정 2025-11-06 18:10:21 +09:00
레포트드자이너.html 리포트관리 설계 2025-10-01 11:10:54 +09:00
메일관리_기능_리스트.md 메일관리 시스템 구현 완료 2025-10-01 17:01:31 +09:00
메일관리_시스템_구현_계획서.md 메일 관리 작업 저장용 커밋 2025-10-01 16:15:53 +09:00
메일시스템_검증_보고서.md 메일관리 시스템 구현 완료 2025-10-01 17:01:31 +09:00
버튼_제어관리_기능_통합_계획서.md 저장버튼 제어기능 (insert) 2025-09-18 10:05:50 +09:00
버튼_제어관리_기능_통합_잠재적_문제점_분석.md 저장버튼 제어기능 (insert) 2025-09-18 10:05:50 +09:00
버튼_제어관리_성능_최적화_전략.md 저장버튼 제어기능 (insert) 2025-09-18 10:05:50 +09:00
스크롤_문제_해결_가이드.md 제어관리 개선판 2025-10-24 14:11:12 +09:00
외부_데이터베이스_제어관리_시스템_계획서.md feature connection 2025-09-22 17:28:31 +09:00
외부호출_데이터_매핑_시스템_설계서.md 데이터 매핑 설정 중간커밋 2025-09-26 17:52:11 +09:00
제어관리_데이터소스_확장_가이드.md 제어관리 개선판 2025-10-24 14:11:12 +09:00
제어관리_시스템_개선_계획서.md 에러 수정 2025-09-29 10:23:21 +09:00
제어관리_외부커넥션_통합_개선_계획서.md 제어관리 외부 커넥션 설정기능 2025-09-24 18:23:57 +09:00
제어관리_외부커넥션_통합_기능_가이드.md 제어관리 외부 커넥션 설정기능 2025-09-24 18:23:57 +09:00
제어관리_외부호출_REST_API_구현_계획서.md 외부호출 기능(rest API) 2025-09-26 17:11:18 +09:00
제어관리_트랜잭션_및_조건부실행_개선방안.md 타입 관리 개선 및 화면 비율조정 중간커밋 2025-09-19 18:43:55 +09:00
카테고리_관리_컴포넌트_구현_계획서.md 카테고리 기능 구현 2025-11-05 15:23:57 +09:00
카테고리_시스템_구현_계획서.md 카테고리 2025-11-05 15:24:05 +09:00
카테고리_시스템_재구현_계획서.md 카테고리 기능 구현 2025-11-05 15:23:57 +09:00
카테고리_시스템_재구현_완료_보고서.md 카테고리 기능 구현 2025-11-05 15:23:57 +09:00
카테고리_시스템_최종_완료_보고서.md 카테고리 기능 구현 2025-11-05 15:23:57 +09:00
카테고리_컴포넌트_DB_호환성_분석.md 카테고리 기능 구현 2025-11-05 15:23:57 +09:00
카테고리_컴포넌트_구현_완료.md 카테고리 기능 구현 2025-11-05 15:23:57 +09:00
카테고리_타입_구현_완료.md 카테고리 기능 구현 2025-11-05 15:23:57 +09:00
코드_채번_규칙_컴포넌트_구현_계획서.md feat(screen-designer): 그리드 컬럼 시스템 개선 및 컴포넌트 너비 렌더링 수정 2025-11-04 16:17:19 +09:00
테이블_그룹핑_기능_구현_계획서.md feat: TableListComponent에 그룹핑 기능 구현 2025-11-03 14:08:26 +09:00
테이블_동적_생성_기능_개발_계획서.md 테이블 및 컬럼 생성기능 추가 2025-09-22 17:00:59 +09:00
테이블_변경_이력_로그_시스템_구현_계획서.md 테이블 변경 이력 로그 시스템 구현 2025-10-21 15:08:41 +09:00
테이블_복제_기능_구현_계획서.md feat: 테이블 복제 기능 구현 (최고 관리자 전용) 2025-10-31 17:58:49 +09:00
테이블_타입_관리_개선_계획서.md 테이블 추가기능 수정사항 2025-09-23 10:40:21 +09:00
테이블_타입_관리_개선_사용_가이드.md 테이블 추가기능 수정사항 2025-09-23 10:40:21 +09:00
플로우_위젯_컬럼_표시_설정_구현_완료.md 플로우 각 단계별 컬럼 설정기능 2025-10-27 09:49:13 +09:00
화면관리_검증_시스템_사용_가이드.md 타입 관리 개선 및 화면 비율조정 중간커밋 2025-09-19 18:43:55 +09:00
화면관리_및_테이블관리_개선사항_목록.md feat: 수정 모달 자동 닫기 및 테이블 새로고침 기능 구현 2025-11-03 09:58:04 +09:00
화면관리_타입_문제_분석_및_해결방안.md 메뉴생성시 화면할당기능 구현 2025-09-19 15:22:25 +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에서는 완전히 새로운 사용자 경험을 제공합니다!