# Release Notes 이 문서는 [Keep a Changelog](https://keepachangelog.com/ko/1.0.0/) 형식을 따릅니다. ## [Unreleased] ### 추가 - 계정 신청 시 프로젝트명, 예상 호출량, 서비스 IP 필드 추가 (#152) - Bypass API 사용자 계정 발급 신청 프로세스 (#126) - Spring Security Basic Auth 인증 (Bypass 데이터 API) - 계정 신청/승인/거절 백엔드 API 및 프론트엔드 - 계정 관리 (CRUD, 비밀번호 재설정, 상태/기간 수정) - 401 응답에 계정 상태 상세 메시지 포함 - Swagger UI Basic Auth 스킴 연동 - 신청 폼 정규식 검증 및 접근기간 프리셋 - Bypass API 카탈로그 Swagger 딥링크 연동 (#142) - 카탈로그 테스트 버튼 클릭 시 해당 API로 Swagger UI 딥링크 이동 - Swagger UI deep-linking 활성화 - Bypass API 계정 이메일 알림 및 거절 후속 조치 (#140) - 이메일 공통 모듈 (EmailService, Thymeleaf HTML 템플릿) - 승인 시 계정 발급 이메일 / 거절 시 사유 이메일 자동 발송 - 재심사 기능 (REJECTED → PENDING) ### 변경 - UI 텍스트 리레이블링: S&P Bypass → S&P Global API - 신청 폼 전화번호 필드 제거 및 레이아웃 개선 ## [2026-04-02] ### 추가 - Risk & Compliance 사용자 편의성 개선 (#134) - UI 고정 텍스트 다국어 지원 (EN/KO 언어 토글 연동) - -999/null 값 'No Data'/'데이터 없음' 표시 처리 - Screening Guide 탭 분리 (Ship Compliance / Company Compliance) - Change History ↔ Screening Guide 간 언어 설정 공유 (localStorage) - 섹션 헤더에 Screening Guide 연결 링크 추가 - 배포 환경에 따른 Swagger 페이지 노출 제한 (#135) - prod 환경에서 Bypass API 그룹만 노출 - 그룹별 개별 API 설명 추가 - prod 환경 서버 목록 GC 도메인만 표시 ## [2026-04-01] ### 추가 - Risk & Compliance Screening Guide UI 개편 및 다중언어 지원 (#124) - Screening Guide 아코디언 리스트 UI 개편 (카테고리별 접기/펼치기) - 언더라인 탭 및 언어 토글 디자인 통일 - 다중언어 데이터 캐싱 (화면 로드 시 KO/EN 동시 조회) - Compliance 카테고리 다중언어 테이블 신규 생성 (compliance_category, compliance_category_lang) - RAG 지표 색상 테마 CSS 변수화 (다크모드/라이트모드 대응) - S&P Bypass 피드백 반영 (#123) - Response JSON 원본 반환 (ApiResponse 래핑 제거) - 사용자용 API 카탈로그 페이지 추가 (/bypass-catalog) - 운영 환경 코드 생성 차단 (app.environment 기반) - Bypass API 코드 생성 (compliance, risk 도메인) - 공통 UI 피드백 반영 (#121) - 2단 탭 네비게이션 (섹션 탭 + 서브 탭) - 섹션 간 직접 이동 - 메인화면 카드 높이 동기화 (CSS Grid) ### 수정 - Change History 선박 제재 KO 데이터 조회 누락 수정 (categoryCode 기반 분류로 변경) - S&P Collector 다크모드 미적용 및 라벨 디자인 통일 (#122) - 실행이력상세/재수집이력상세 API 호출 로그 다크모드 적용 - 개별 호출 로그 필터/테이블 다크모드 적용 - 작업관리 스케줄 라벨 rounded-full 디자인 통일 ### 변경 - Navbar 메인 섹션 왼쪽 정렬, 서브 섹션 오른쪽 정렬로 변경 - 불필요한 DB 컬럼 참조 코드 제거 (collection_note, update_title) ## [2026-03-31] ### 추가 - 프론트엔드 UI 개편 (#115) - 메인 화면 3개 섹션 카드 (Collector/Bypass/Risk&Compliance) - 섹션별 Navbar 분리 - 플랫폼명 S&P Data Platform 변경 - Risk&Compliance 값 변경 이력 확인 페이지 개발 (#111) - 선박 위험지표/선박 제재/회사 제재 변경 이력 조회 - 선박/회사 기본정보 및 현재 Risk&Compliance 상태 조회 - Risk narrative(이전값/이후값) 표시 (LATERAL JOIN) - indicator column_name 매핑으로 다국어 필드명 지원 - 다국어 캐시 (KO/EN 동시 조회, 언어 토글 즉시 전환) - 독립 페이지 분리 (/risk-compliance-history) - 국가코드 ISO2 변환 → 국기 이모지 표시 - Compliance 탭 분리 (Sanctions/Port Calls/STS/Suspicious) - Risk&Compliance Screening Guide 페이지 생성 (#109) - favicon 변경 (#105) - BY PASS API 등록 프로세스 설계 및 개발 (#63) - 화면에서 API 정보 입력 → Java 코드 자동 생성 (Controller, Service) - 공통 베이스 클래스 (BaseBypassService, BaseBypassController) - JSON 응답 RAW 패스스루 (JsonNode) - 같은 도메인 다중 엔드포인트 지원 - Swagger GroupedOpenApi 그룹 분리 및 사용자 설정 반영 - SPA 새로고침 오류 수정 ### 변경 - API 응답 처리 방식에 따른 패키지 분리 (jobs/batch, jobs/web) (#66) ### 기타 - Swagger 서버 목록에서 불필요한 내부 IP 및 MDA 프록시 주소 제거 (#110) ## [2026-03-25] ### 추가 - 배치 로그 관리 정책 수립 및 정리 배치 작업 개발 (LogCleanupJob) (#100) - IMO Meta Table 관리 배치 작업 개발 (All IMO Import + Delete Flag Update) (#80) - Risk 상세 데이터 수집 배치 프로세스 추가 (RisksByImos API, 파티션 병렬 처리) (#65) - 배치 모니터링 React SPA 전환 및 10대 기능 강화 - AIS Target signalKindCode(MDA 범례코드) 치환 로직 추가 - 중국 허가선박 전용 API 및 DB Sync 동적 범위 개선 - Swagger 문서 보강, Kafka 조건부 설정, AIS 응답 DTO 개선 - AIS target Kafka producer pipeline 추가 - Ship Last Position Update Job 개선 (#5) - prod Kafka 클러스터 브로커 주소 설정 (#6) - 선박 마지막 위치 업데이트 프로세스 변경 (#7) - API 호출 로그 페이징 및 필터 추가 (#8) - 재수집 실패건 재시도 프로세스 추가 및 선박제원정보 수집 최적화 (#10) - 수집 실패건 로그 페이징 기능 상세화, 개별 호출 로그 페이징, 재수집 실패 건 수 표시 (#11) - 데이터 수집 누락 방지 프로세스 추가 (#13) - 선박 AIS 마지막 위치 업데이트 대상 변경 (#14) - 컬럼명 최종변경 (#16) - 마지막 수집 완료일시 모니터링 기능 추가 (#19) - core20 테이블 최신 위치 동기화 대상 추가 (#20) - tb_ship_main_info 테이블 in_sts 컬럼명을 sts_yn으로 변경 (#22) - 스키마명 변경: t_std_snp_data → std_snp_data, t_std_snp_svc → std_snp_svc (#24) - tb_ship_main_info, core20 테이블 mmsi 컬럼 업데이트 추가 (#28) - 자동 재수집 및 재수집 프로세스 전면 개선 (#30) - 배치 작업 목록 UX 개선: 상태 필터, 카드/테이블 뷰, 정렬, 실행 중 강조 (#33) - 재시도 초과 레코드 초기화 API/UI 추가 - IMO 기반 Risk 상세 조회 bypass API 추가 (#39) - 배치 작업 목록 한글 표시명 추가 (#40) - Job 한글 표시명 DB 관리 및 전체 화면 통합 (#45) - 배치 모니터링 UI 최적화: 대시보드 퀵 네비 제거, AIS 필터 프리셋, 스케줄 뷰 토글 및 폼 모달 전환 (#46) - 각 화면별 사용자 가이드 추가 (#41) - 스케줄 화면 검색/정렬/필터 기능 추가 및 UI 구조 개선 (#54) - 재수집 이력 화면 개선: 배치 실행일시 추가, 작업명 잘림 해소, CSV 내보내기 제거 (#55) - AIS API 응답 스트리밍 처리로 메모리 버퍼 제한 우회 (DataBufferLimitException 근본 해결) - 선박제원정보 수집 배치 작업 병렬화 (Partitioned Step) (#64) ### 수정 - 기간 설정 재수집 시 RECOLLECT 모드 분기 오류 수정 (#75) - 자동 재수집 JobParameter 오버플로우 수정 (VARCHAR 2500 제한 해결) - retryCount 세마틱 오류 수정 (0부터 시작, 재수집 실패 시 증가) - 실패 레코드 저장 타이밍 경합 해결 (동기 저장으로 변경) - ChnPrmShip 캐시 갱신 조건 완화 및 스케줄 이전 실행 시간 표시 (#3) - 재수집 관리 및 이력 추가 (#4) - 재수집 중복 실행 문제 해결 (#9) - Quartz orphan trigger 제거 (#12) - Quartz JDBC Store 미적용 수정 — RAMJobStore에서 JDBC Store로 전환 (#12) - 마지막 성공 일시 세팅 방법 수정 (#15) - 테스트용 IMO 목록 건수 제한 제거 (#32) - 타임라인 상세 화면 이동 오류 수정 및 실행 중 작업 상세 버튼 추가 (#34) - RECOLLECT 모드에서 Tasklet 자체 스킵으로 last_success_date 복원 로직 제거 (#50) - Quartz PostgreSQLDelegate BYTEA 컬럼 읽기 오류 수정 (#12) - CronPreview step=0 무한루프 방지 - AIS WebClient 버퍼 제한 50MB→100MB 확대 및 타임아웃 설정 추가 (DataBufferLimitException 해결) - ShipDetailUpdateDataReader beforeFetch에서 allImoNumbers 미할당으로 인한 NPE 수정 - 재수집 모드 afterFetch 중복 실행으로 인한 실패 레코드 중복 INSERT 수정 (#64) - 실패 건 수동 재수집 시 414 Request-URI Too Long 오류 수정 (#71) ### 변경 - AIS 수집 및 서비스 API 제거 (배치 분리에 따른 코드 정리, ~7,000 LOC 삭제) (#99) - API URL 환경별 중복 제거 (application.yml 공통 관리) - RiskRangeImportJob API URL 변경 및 저장 테이블 통합 (#86) - RiskDetailImportJob IMO 조회 대상을 tb_ship_default_info로 변경 (#81) - 파티션 스텝 프로세스 공통 모듈화 (StringListPartitioner, BasePartitionedJobConfig, LastExecutionUpdateTasklet) (#73) - 13개 Job Config의 인라인 LastExecutionUpdateTasklet을 공통 모듈로 교체 (#74) - 재수집 실패건 추적 기준 sourceStepExecutionId → sourceJobExecutionId로 변경 (#64) - 실패 레코드 Upsert 패턴 적용 (동일 키 중복 방지) - 재시도 상태 배지 표시 (대기/재시도 N/3/재시도 초과) - 미사용 Dead Code 정리 (~1,200 LOC 삭제) - 미사용 배치 작업 13개 제거 (~4,000 LOC 삭제) (#40) - API 인증정보 공통화(api-auth) 및 환경별 중복 설정 제거 (#59) - AIS Import Job 로그에 캐시 적재 흐름 명시 (`API → 캐시`) ### 기타 - 배포 워크플로우 Checkout 단계 복원 (container 환경 Node.js 미지원) (#93) - Gitea Actions 자동배포 워크플로우 추가 - 프론트엔드 title 변경 (#76) - Gitea 팀 프로젝트 워크플로우 구조 적용 - commit-msg 정규식 통일 (#1) - SLF4J 로깅 지침 추가 (#2) - CLAUDE_BOT_TOKEN 갱신 (#26) - 팀 글로벌 워크플로우 1.5.0 동기화 - 팀 워크플로우 v1.6.1 동기화 - 실행 확인 모달 시작/종료일시 항목 제거 - MDA 전용 설정파일(application-qa.yml) 제거 (#59)