AI 기반 불법조업 탐지·차단 플랫폼 (React 19 + MapLibre + deck.gl + Zustand + Tailwind CSS)
htlee
6fe7a7daf4
feat: 메뉴 DB SSOT 구조화 — auth_perm_tree 기반 메뉴·권한·i18n 통합
...
## 핵심 변경
- 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>
2026-04-09 15:54:04 +09:00
.claude
chore: .env.development → .example + pre-commit 모노레포 대응
2026-04-07 13:52:53 +09:00
.gitea /workflows
feat: System Flow 뷰어 추가 (system-flow.html) — 102 노드, 133 엣지
2026-04-07 17:10:22 +09:00
.githooks
chore: .env.development → .example + pre-commit 모노레포 대응
2026-04-07 13:52:53 +09:00
backend
feat: 메뉴 DB SSOT 구조화 — auth_perm_tree 기반 메뉴·권한·i18n 통합
2026-04-09 15:54:04 +09:00
database /migration
feat: 메뉴 DB SSOT 구조화 — auth_perm_tree 기반 메뉴·권한·i18n 통합
2026-04-09 15:54:04 +09:00
deploy
docs: 배포 문서 보강 + CI/CD 모노레포 수정 + CLAUDE.md 배포 섹션
2026-04-07 13:43:19 +09:00
docs
docs: 워크플로우 연결 릴리즈 노트 [Unreleased] 갱신
2026-04-09 12:17:17 +09:00
frontend
feat: 메뉴 DB SSOT 구조화 — auth_perm_tree 기반 메뉴·권한·i18n 통합
2026-04-09 15:54:04 +09:00
prediction
feat(backend): 워크플로우 연결 Step 1 — 백엔드 기반 확장
2026-04-09 10:43:53 +09:00
.gitignore
chore: .env.development.example → .env.example (서버 hook .env.* 차단 대응)
2026-04-07 13:54:22 +09:00
ATTRIBUTIONS.md
chore: 팀 워크플로우 기반 초기 프로젝트 구성
2026-04-06 14:11:29 +09:00
CLAUDE.md
docs: 디자인 시스템 SSOT 개발 지침 + 릴리즈 노트 갱신
2026-04-08 13:29:28 +09:00
Makefile
feat: S2 prediction 분석 엔진 모노레포 이식
2026-04-07 12:56:51 +09:00
README.md
chore: 팀 워크플로우 기반 초기 프로젝트 구성
2026-04-06 14:11:29 +09:00
AI 기반 불법조업 탐지·차단 플랫폼
해양경찰청 AIS 신호 기반 불법 조업 선박 탐지, 단속 의사결정 지원 플랫폼.
기술 스택
분류
기술
버전
프레임워크
React + TypeScript
19.2 / 5.9
번들러
Vite (Rolldown)
8.0
지도
MapLibre GL + deck.gl
5.22 / 9.2
차트
ECharts
6.0
상태관리
Zustand
5.0
스타일
Tailwind CSS + CVA
4.2 / 0.7
다국어
react-i18next
ko / en
린트
ESLint (Flat Config)
10
실행
npm install
npm run dev # 개발 서버
npm run build # 프로덕션 빌드 (~480ms)
npm run lint # ESLint 검사
프로젝트 구조
src/
├── lib/charts/ ECharts 공통 (BaseChart + 프리셋)
├── lib/map/ MapLibre + deck.gl (BaseMap + 레이어 + hooks)
├── lib/i18n/ 다국어 (10 네임스페이스, ko/en)
├── lib/theme/ 디자인 토큰 + CVA 변형
├── data/mock/ 공유 더미 데이터 (7 모듈)
├── stores/ Zustand 스토어 (8개)
├── services/ API 서비스 샘플
├── shared/ 공유 UI 컴포넌트
├── features/ 도메인별 페이지 (13그룹, 31페이지)
├── app/ 라우터, 인증, 레이아웃
└── styles/ CSS (Dark/Light 테마)
문서
SFR 요구사항 대응 현황
20개 SFR 전체 UI 구현 완료. 백엔드 연동 대기 중.
SFR
기능
화면
상태
SFR-01
로그인·권한 관리
/login, /access-control
UI 완료
SFR-02
환경설정·공지·공통
/system-config, /notices
UI 완료
SFR-03
통합 데이터 허브
/data-hub
UI 완료
SFR-04
AI 예측모델 관리
/ai-model
UI 완료
SFR-05
위험도 지도
/risk-map
UI 완료
SFR-06
단속 계획·경보
/enforcement-plan
UI 완료
SFR-07
단일함정 순찰경로
/patrol-route
UI 완료
SFR-08
다함정 경로최적화
/fleet-optimization
UI 완료
SFR-09
Dark Vessel 탐지
/dark-vessel
UI 완료
SFR-10
어구 탐지
/gear-detection
UI 완료
SFR-11
단속·탐지 이력
/enforcement-history
UI 완료
SFR-12
모니터링 대시보드
/dashboard, /monitoring
UI 완료
SFR-13
통계·성과 분석
/statistics
UI 완료
SFR-14
외부 서비스 연계
/external-service
UI 완료
SFR-15
모바일 서비스
/mobile-service
UI 완료
SFR-16
함정 Agent
/ship-agent
UI 완료
SFR-17
AI 알림 발송
/ai-alert
UI 완료
SFR-18/19
MLOps / LLMOps
/mlops
UI 완료
SFR-20
AI Q&A 지원
/ai-assistant
UI 완료