AI 기반 불법조업 탐지·차단 플랫폼 (React 19 + MapLibre + deck.gl + Zustand + Tailwind CSS)
Go to file
htlee 197da13826 refactor(prediction): 사이클 스테이지 에러 경계 도입 (Phase 0-1)
docs/prediction-analysis.md P1 권고 반영. 5분 사이클의 각 스테이지를
한 try/except 로 뭉친 기존 구조를 스테이지 단위로 분리해 실패 지점을
명시적으로 특정하고 부분 실패 시에도 후속 스테이지가 계속 돌아가도록 개선.

- prediction/pipeline/stage_runner.py 신설
  - run_stage(name, fn, *args, required=False, **kwargs) 유틸
  - required=True 면 예외 re-raise (상위 사이클 try/except 가 잡도록)
  - required=False 면 logger.exception 으로 stacktrace 보존 + None 반환
  - 지속시간 로깅 포함

- prediction/scheduler.py run_analysis_cycle() 수정
  - 출력 단계 6모듈을 각각 run_stage() 로 분리:
    violation_classifier / event_generator / kpi_writer /
    stats_aggregate_hourly / stats_aggregate_daily / alert_dispatcher
  - upsert_results / cleanup_old 도 run_stage 로 래핑 (upsert 는 required=True)
  - 내부 try/except 의 logger.warning → logger.exception 으로 업그레이드
    (fetch_dark_history, gear collision event promotion, group polygon,
     gear correlation, pair detection, chat cache)
  - 스테이지 실패 시 journalctl -u kcg-ai-prediction 에서 stacktrace 로
    원인 바로 특정 가능 (기존은 "failed: X" 한 줄만 남아 디버깅 불가)

검증:
- python3 -c "import ast; ast.parse(...)" scheduler.py / stage_runner.py 통과
- run_stage smoke test (정상/실패 흡수/required 재raise 3가지) 통과

범위 밖 (후속):
- Phase 0-2 ILLEGAL_FISHING_PATTERN 전용 페이지 (다음 MR)
- Phase 0-3 Transshipment 전용 페이지 (다음 MR)
2026-04-17 11:28:30 +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 docs: prediction-analysis 신규 + 루트/SFR 문서 drift 해소 2026-04-17 11:20:53 +09:00
database/migration feat: 메뉴 DB SSOT 구조화 — auth_perm_tree 기반 메뉴·권한·i18n 통합 2026-04-09 15:54:04 +09:00
deploy refactor: 프로젝트 뼈대 정리 — iran 잔재 제거 + 백엔드 계층 분리 + 카탈로그 등록 2026-04-16 16:18:18 +09:00
docs docs: 릴리즈 노트 업데이트 2026-04-17 11:21:56 +09:00
frontend feat(detection): GEAR_IDENTITY_COLLISION 탐지 패턴 추가 2026-04-17 06:53:12 +09:00
prediction refactor(prediction): 사이클 스테이지 에러 경계 도입 (Phase 0-1) 2026-04-17 11:28:30 +09:00
.gitignore feat(detection): DAR-03 어구 탐지 워크플로우 + 모선 검토 UI + 24h 리플레이 통합 2026-04-15 13:26:15 +09:00
AGENTS.md docs: prediction-analysis 신규 + 루트/SFR 문서 drift 해소 2026-04-17 11:20:53 +09:00
ATTRIBUTIONS.md chore: 팀 워크플로우 기반 초기 프로젝트 구성 2026-04-06 14:11:29 +09:00
CLAUDE.md docs: 절대 지침 섹션 추가 (develop 동기화 + design-system 준수) 2026-04-17 07:23:58 +09:00
Makefile feat: S2 prediction 분석 엔진 모노레포 이식 2026-04-07 12:56:51 +09:00
README.md docs: prediction-analysis 신규 + 루트/SFR 문서 drift 해소 2026-04-17 11:20:53 +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 테마)

문서

문서 설명
docs/architecture.md 아키텍처 현황 (기술스택, 구조, 렌더링 최적화, 테마)
docs/sfr-user-guide.md SFR 사용자 가이드 (메뉴별 기능 설명, 구현/미구현 현황)
docs/sfr-traceability.md SFR 요구사항 추적 매트릭스 (개발자용, 소스 경로 포함)
docs/page-workflow.md 31개 페이지 역할 + 4개 업무 파이프라인
docs/data-sharing-analysis.md 데이터 공유 분석 + mock 통합 결과
docs/next-refactoring.md 다음 단계 TODO (API 연동, 실시간, 코드 스플리팅)
docs/prediction-analysis.md Prediction 모듈 구조/방향 심층 분석 (2026-04-17, opus 4.7 독립 리뷰)

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, /gear-collision(V030) 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 완료