zioinfo-esn/CLAUDE.md
DESKTOP-TKLFCPR\ython 707416f78c feat(uiws): UIWS 업무모듈(업무일지·일정·쪽지·통계)+2FA 이식
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 21:10:47 +09:00

3.9 KiB

GUARDiA ESN — ESL 통합 관리 플랫폼

레거시 ESL(전자 가격표) 8개 Spring Boot 1.5 프로젝트를 단일 현대화 플랫폼으로 통합한 프로젝트


프로젝트 개요

C:\GUARDiA\workspace\esn\ 의 레거시 ESN 시스템(ESN_WEB_ZIOINFO·ESN_WEB_LGInnotek·ESN_DAEMON_EMART·ESN_DAEMON_LGIT·esn·ESL_AUTO_UPDATE·restapi_lgit·UCS_LGU)을
Spring Boot 3.5 + Java 17 + React 19 + PostgreSQL 단일 플랫폼으로 재구현.

멀티테넌트 (TENANT_A / TENANT_B / EMART / ZIOINFO), Ollama 온프레미스 AI 알람 분석·POS 자동 분류.


기술 스택

레이어 기술
Backend Spring Boot 3.5 · Java 17 · MyBatis 3.0.3
Database PostgreSQL (guardia_esn_db / guardia_esn_user)
Frontend React 19 · Vite · TypeScript · Tailwind CSS
AI Ollama 온프레미스 (llama3, llava)
인증 Spring Security · JWT (jjwt 0.12.6)
배포 단일 JAR (Vite 번들 → static/)

실행 명령어

# 프론트엔드 빌드 (필수 — 백엔드 static/ 번들)
cd frontend && npm install && npm run build

# 백엔드 빌드 + 실행
cd backend && mvn clean package -DskipTests
java -jar target/zioinfo-esn-1.0.0.jar \
  --spring.datasource.url=jdbc:postgresql://localhost:5432/guardia_esn_db \
  --spring.datasource.username=guardia_esn_user \
  --spring.datasource.password=guardia_esn_pass2026 \
  --server.port=8016

환경변수

변수 기본값 설명
DB_URL jdbc:postgresql://localhost:5432/esn_db 운영에서는 guardia_esn_db
DB_USER esn_user 운영에서는 guardia_esn_user
DB_PASS esn_pass2026 운영에서는 guardia_esn_pass2026
OLLAMA_URL http://localhost:11434 Ollama 서버
JWT_SECRET ZioInfoEsnJwtSecret... JWT 서명 키

디렉터리 구조

workspace/guardia-esn/
├── .claude/
│   ├── agents/                   (에이전트 4종)
│   └── skills/guardia-esn-orchestrator/SKILL.md
├── CLAUDE.md                     ← 이 파일
├── Jenkinsfile
├── backend/
│   ├── pom.xml
│   └── src/main/
│       ├── java/com/zioinfo/esn/ (67개 Java 파일)
│       └── resources/
│           ├── application.yml
│           ├── db/schema.sql     (13개 테이블)
│           └── mapper/*.xml      (15개 MyBatis XML)
└── frontend/
    └── src/
        ├── App.tsx
        ├── api/client.ts
        ├── components/           (Layout, Sidebar, Header...)
        └── pages/                (15개 관리자 화면)

도메인 (13개)

도메인 테이블 설명
Tenant esn_tenants 멀티테넌트 (LGINNOTEK·LGIT·EMART·ZIOINFO)
StoreGroup esn_store_groups 매장 그룹
Store esn_stores 매장 (tenantCode 격리)
Template esn_templates ESL 표시 템플릿
PosCvt esn_pos_cvt POS→ESL 가격 변환
Alarm esn_alarms 장치 알람
HCore esn_hcores 게이트웨이/허브
WorkHistory esn_work_history 작업 이력
Firmware esn_firmware 펌웨어 버전
User esn_users 사용자 (RBAC)
Product esn_products 상품/가격
TagBinding esn_tag_bindings ESL↔상품 바인딩
UpdateQueue esn_update_queue 업데이트 큐

보안 제약 (불변)

  1. @MapperScan(annotationClass = Mapper.class) — basePackages 절대 금지
  2. Hikari maximum-pool-size=3 — 공유 PG 서버 보호
  3. 외부 AI API 절대 금지 — Ollama localhost:11434만 허용
  4. API 응답에서 passwordHash, ssh_* 필드 완전 제외
  5. SecurityConfig에 static 리소스 permitAll 필수 (SPA 403 방지)

하네스 트리거

guardia-esn-orchestrator 스킬을 사용하라:

  • ESN 기능 추가·수정
  • 배포 작업
  • 레거시 소스 분석·통합
  • 알람·POS·HCore 관련 작업