## 핵심 변경
- auth_perm_tree를 메뉴 SSOT로 확장 (V020~V024)
- url_path, label_key, component_key, nav_group, nav_sub_group, nav_sort 컬럼
- labels JSONB (다국어: {"ko":"...", "en":"..."})
- 보이지 않는 도메인 그룹 8개 삭제 (surveillance, detection, risk-assessment 등)
- 권한 트리 = 메뉴 트리 완전 동기화
- 그룹 레벨 권한 → 개별 자식 권한으로 확장 후 그룹 삭제
- 패널 노드 parent_cd를 실제 소속 페이지로 수정
(어구식별→어구탐지, 전역제외→후보제외, 역할관리→권한관리)
- vessel:vessel-detail 권한 노드 제거 (드릴다운 전용, 인증만 체크)
## 백엔드
- MenuConfigService: auth_perm_tree에서 menuConfig DTO 생성
- /api/auth/me 응답에 menuConfig 포함 (로그인 시 프리로드)
- @RequirePermission 12곳 수정 (삭제된 그룹명 → 구체적 자식 리소스)
- Caffeine 캐시 menuConfig 추가
## 프론트엔드
- NAV_ENTRIES 하드코딩 제거 → menuStore(Zustand) 동적 렌더링
- PATH_TO_RESOURCE 하드코딩 제거 → DB 기반 longest-match
- App.tsx 36개 정적 import/33개 Route → DynamicRoutes + componentRegistry
- PermissionsPanel: DB labels JSONB 기반 표시명 + 페이지/패널 아이콘 구분
- DB migration README.md 전면 재작성 (V001~V024, 49테이블, 149인덱스)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
71 lines
1.6 KiB
YAML
71 lines
1.6 KiB
YAML
spring:
|
|
application:
|
|
name: kcg-ai-backend
|
|
|
|
datasource:
|
|
url: jdbc:postgresql://211.208.115.83:5432/kcgaidb
|
|
username: kcg-app
|
|
password: Kcg2026ai
|
|
driver-class-name: org.postgresql.Driver
|
|
hikari:
|
|
maximum-pool-size: 10
|
|
minimum-idle: 2
|
|
connection-timeout: 30000
|
|
|
|
jpa:
|
|
hibernate:
|
|
ddl-auto: validate
|
|
properties:
|
|
hibernate:
|
|
default_schema: kcg
|
|
format_sql: true
|
|
dialect: org.hibernate.spatial.dialect.postgis.PostgisPG10Dialect
|
|
jdbc:
|
|
time_zone: Asia/Seoul
|
|
open-in-view: false
|
|
|
|
flyway:
|
|
enabled: true
|
|
schemas: kcg
|
|
default-schema: kcg
|
|
locations: classpath:db/migration
|
|
baseline-on-migrate: true
|
|
|
|
cache:
|
|
type: caffeine
|
|
cache-names: permissions,users,menuConfig
|
|
caffeine:
|
|
spec: maximumSize=1000,expireAfterWrite=10m
|
|
|
|
server:
|
|
port: 8080
|
|
forward-headers-strategy: framework
|
|
|
|
management:
|
|
endpoints:
|
|
web:
|
|
exposure:
|
|
include: health,info,flyway
|
|
endpoint:
|
|
health:
|
|
show-details: when-authorized
|
|
|
|
logging:
|
|
level:
|
|
root: INFO
|
|
gc.mda.kcg: DEBUG
|
|
org.flywaydb: INFO
|
|
|
|
# === 애플리케이션 커스텀 설정 ===
|
|
app:
|
|
prediction:
|
|
base-url: ${PREDICTION_BASE_URL:http://localhost:8001}
|
|
iran-backend:
|
|
# 운영 환경: https://kcg.gc-si.dev (Spring Boot + Prediction 통합)
|
|
base-url: ${IRAN_BACKEND_BASE_URL:https://kcg.gc-si.dev}
|
|
cors:
|
|
allowed-origins: ${CORS_ALLOWED_ORIGINS:http://localhost:5173,http://localhost:5174}
|
|
jwt:
|
|
secret: ${JWT_SECRET:change-me-in-production-this-must-be-at-least-256-bits-long-secret-key}
|
|
expiration-ms: ${JWT_EXPIRATION_MS:86400000}
|