refactor: 프로젝트 뼈대 정리 — iran 잔재 제거 + 백엔드 계층 + 카탈로그 #68

병합
htlee refactor/cleanup-iran-backend-catalog 에서 develop 로 2 commits 를 머지했습니다 2026-04-16 16:20:05 +09:00
소유자

변경 사항

구조 정비 3단계 리팩토링 PR #A — iran 잔재 제거 + 백엔드 계층 분리 + 카탈로그 정합성.

iran 백엔드 프록시 잔재 제거 (17 파일)

  • IranBackendClient.java dead class 삭제, AppProperties.IranBackend 필드/inner class 제거, application.ymliran-backend: 블록 삭제
  • Frontend UI 라벨 iran 백엔드 (분석)AI 분석 엔진, 에러 메시지/javadoc/주석 정리
  • system-flow manifest external.iran_backend 노드는 status: deprecated 마킹 (노드 ID 안정성 원칙, 1~2 릴리즈 후 삭제)
  • CLAUDE.md 시스템 구성 다이어그램 최신화 (prediction 이 kcgaidb 에 직접 write 하는 현 아키텍처 반영)

백엔드 계층 분리 (4건)

  • AlertControllerAlertService 신규 계층, PredictionAlertRepository 직접 주입 제거
  • MasterDataControllerMasterDataService 신규 계층, 4개 repository 일원화
  • AdminStatsControllerAdminStatsService 신규 계층, JdbcTemplate native SQL 이관
  • RestClientConfig @Configuration 으로 predictionRestClient / signalBatchRestClient Bean 통합 → Proxy controller @PostConstruct ad-hoc 생성 제거

감사 로그 보강

  • EnforcementService.createRecord/updateRecord/createPlan@Auditable
  • VesselAnalysisGroupService.resolveParentPARENT_RESOLVE 액션

카탈로그 정합성

  • performanceStatus 카탈로그를 catalogRegistry 에 등록 (쇼케이스 자동 노출)
  • alertLevels 확장: isValidAlertLevel / isHighSeverity / getAlertLevelOrder / ALERT_LEVEL_MARKER_OPACITY / ALERT_LEVEL_MARKER_RADIUS / ALERT_LEVEL_TIER_SCORE
  • LiveMapView / DarkVesselDetection / GearIdentification / vesselAnomaly 직접 분기 헬퍼로 치환

관련 이슈

  • 3단계 리팩토링 계획 (~/.claude/plans/vast-tinkering-knuth.md) 중 PR #A. 후속 PR #B(i18n) / #C(디자인시스템) 예정

테스트

  • npx tsc --noEmit 0 errors
  • npx eslint . 0 warnings
  • ./mvnw compile 성공
  • pre-commit hook 통과
  • 운영 prediction 파이프라인 정상 동작 (5분 사이클 upsert, merge 후 확인)
  • /api/alerts, /api/master/*, /api/admin/stats/* 응답 스키마 변경 없음 확인
  • auth_audit_log 에 ENFORCEMENT_*, PARENT_RESOLVE 액션 기록 확인
## 변경 사항 **구조 정비 3단계 리팩토링 PR #A** — iran 잔재 제거 + 백엔드 계층 분리 + 카탈로그 정합성. ### iran 백엔드 프록시 잔재 제거 (17 파일) - `IranBackendClient.java` dead class 삭제, `AppProperties.IranBackend` 필드/inner class 제거, `application.yml` 의 `iran-backend:` 블록 삭제 - Frontend UI 라벨 `iran 백엔드 (분석)` → `AI 분석 엔진`, 에러 메시지/javadoc/주석 정리 - system-flow manifest `external.iran_backend` 노드는 `status: deprecated` 마킹 (노드 ID 안정성 원칙, 1~2 릴리즈 후 삭제) - `CLAUDE.md` 시스템 구성 다이어그램 최신화 (prediction 이 kcgaidb 에 직접 write 하는 현 아키텍처 반영) ### 백엔드 계층 분리 (4건) - `AlertController` → `AlertService` 신규 계층, `PredictionAlertRepository` 직접 주입 제거 - `MasterDataController` → `MasterDataService` 신규 계층, 4개 repository 일원화 - `AdminStatsController` → `AdminStatsService` 신규 계층, `JdbcTemplate` native SQL 이관 - `RestClientConfig @Configuration` 으로 `predictionRestClient` / `signalBatchRestClient` Bean 통합 → Proxy controller `@PostConstruct` ad-hoc 생성 제거 ### 감사 로그 보강 - `EnforcementService.createRecord/updateRecord/createPlan` 에 `@Auditable` - `VesselAnalysisGroupService.resolveParent` 에 `PARENT_RESOLVE` 액션 ### 카탈로그 정합성 - `performanceStatus` 카탈로그를 `catalogRegistry` 에 등록 (쇼케이스 자동 노출) - `alertLevels` 확장: `isValidAlertLevel` / `isHighSeverity` / `getAlertLevelOrder` / `ALERT_LEVEL_MARKER_OPACITY` / `ALERT_LEVEL_MARKER_RADIUS` / `ALERT_LEVEL_TIER_SCORE` - LiveMapView / DarkVesselDetection / GearIdentification / vesselAnomaly 직접 분기 헬퍼로 치환 ## 관련 이슈 - 3단계 리팩토링 계획 (`~/.claude/plans/vast-tinkering-knuth.md`) 중 PR #A. 후속 PR #B(i18n) / #C(디자인시스템) 예정 ## 테스트 - [x] `npx tsc --noEmit` 0 errors - [x] `npx eslint .` 0 warnings - [x] `./mvnw compile` 성공 - [x] pre-commit hook 통과 - [ ] 운영 prediction 파이프라인 정상 동작 (5분 사이클 upsert, merge 후 확인) - [ ] `/api/alerts`, `/api/master/*`, `/api/admin/stats/*` 응답 스키마 변경 없음 확인 - [ ] `auth_audit_log` 에 ENFORCEMENT_*, PARENT_RESOLVE 액션 기록 확인
htlee added 2 commits 2026-04-16 16:19:29 +09:00
iran 백엔드 프록시 잔재 제거:
- IranBackendClient dead class 삭제, AppProperties/application.yml iran-backend 블록 제거
- Frontend UI 라벨/주석/system-flow manifest deprecated 마킹
- CLAUDE.md 시스템 구성 다이어그램 최신화

백엔드 계층 분리:
- AlertController/MasterDataController/AdminStatsController 에서 repository/JdbcTemplate 직접 주입 제거
- AlertService/MasterDataService/AdminStatsService 신규 계층 도입 + @Transactional(readOnly=true)
- Proxy controller 의 @PostConstruct RestClient 생성 → RestClientConfig @Bean 으로 통합

감사 로그 보강:
- EnforcementService createRecord/updateRecord/createPlan 에 @Auditable 추가
- VesselAnalysisGroupService.resolveParent 에 PARENT_RESOLVE 액션 기록

카탈로그 정합성:
- performanceStatus 를 catalogRegistry 에 등록 (쇼케이스 자동 노출)
- alertLevels 확장: isValidAlertLevel / isHighSeverity / getAlertLevelOrder
- LiveMapView/DarkVesselDetection 시각 매핑(opacity/radius/tier score) 상수로 추출
- GearIdentification/vesselAnomaly 직접 분기를 타입 가드/헬퍼로 치환
claude-bot 이 변경사항을 승인하였습니다. 2026-04-16 16:20:00 +09:00
claude-bot left a comment
멤버

MR 승인 (via /mr skill) — PR #A 구조 정비

MR 승인 (via /mr skill) — PR #A 구조 정비
htlee merged commit 5a57959bd5 into develop 2026-04-16 16:20:05 +09:00
htlee 삭제된 브랜치 refactor/cleanup-iran-backend-catalog 2026-04-16 16:20:05 +09:00
"로그인하여 이 대화에 참여"
No reviewers
레이블 없음
마일스톤 없음
담당자 없음
참여자 2명
알림
마감일
기한이 올바르지 않거나 범위를 벗어났습니다. 'yyyy-mm-dd'형식을 사용해주십시오.

마감일이 설정되지 않았습니다.

의존성

No dependencies set.

Reference: gc/kcg-ai-monitoring#68
No description provided.