- Spring Security Basic Auth 인증 도입 (Bypass 데이터 API만)
- 계정 신청/승인/거절 백엔드 API 및 프론트엔드 구현
- 계정 관리 (CRUD, 비밀번호 재설정, 상태/기간 수정)
- 401 응답에 계정 상태 상세 메시지 포함
- Swagger UI Basic Auth 스킴/환경별 그룹 노출 연동
- 신청 폼 정규식 검증 및 접근기간 프리셋 선택
- prod 환경에서 Bypass API 그룹만 노출 (@ConditionalOnProperty)
- 그룹별 개별 API 설명 추가 (addOpenApiCustomizer)
- prod 환경 서버 목록 GC 도메인만 표시
- dev 서버 environment를 prod로 설정 (현재 운영 환경)
- UI 고정 텍스트 다국어 메타 파일(screeningTexts.ts) 추가
- -999/null 값 'No Data'/'데이터 없음' 표시 처리
- Screening Guide 탭 분리 (Ship/Company Compliance)
- Change History ↔ Screening Guide 간 언어 설정 공유
- 섹션 헤더에 Screening Guide 연결 링크 추가
- Response JSON 원본 반환 (ApiResponse 래핑 제거, executeRaw 추가)
- 메뉴명 변경: Bypass API → API 관리
- 사용자용 API 카탈로그 페이지 (/bypass-catalog) 추가
- 운영 환경 코드 생성 차단 (app.environment=prod 시 비활성화)
- Bypass API 코드 생성 (compliance, risk 도메인)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 실행이력상세/재수집이력상세 API 호출 로그 다크모드 적용
- 개별 호출 로그 (ApiLogSection) 필터/테이블 다크모드 적용
- 작업관리 스케줄 라벨 rounded-full 및 디자인 통일
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 2단 탭 레이아웃 (섹션 탭 slate-900 + 서브 탭 언더라인)
- 섹션 탭에서 다른 섹션으로 직접 이동 가능
- 메인화면 카드 CSS Grid 전환 (높이 자동 동기화)
- h-screen 고정 + 탭/콘텐츠 영역 분리
- 중앙 정렬 (메인 섹션 + 서브 섹션)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 메인 화면(/) 3개 섹션 카드 (Collector/Bypass/Risk&Compliance)
- 섹션별 Navbar 분리 + [← 메인] 버튼
- 플랫폼명 S&P Data Platform으로 변경
- gc-card 스타일 적용 (다크 모드 대응)
- Dashboard 경로 / → /dashboard 이동
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- B안 2분할 레이아웃 적용 (좌: 핵심 식별정보, 우: 스펙/상세)
- 국가코드 → ISO2 변환 (tb_ship_country_cd JOIN) → 국기 이모지 표시
- 회사 모회사 셀프조인 (prnt_company_cd → 회사명, 없으면 UNKNOWN)
- Current Compliance 탭 분리 (Sanctions/Port Calls/STS/Suspicious)
- Compliance 예외 처리 (Parent Company null → No Parent, Overall 헤더 이동)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 선박 기본정보 (tb_ship_info_mst) / 회사 기본정보 (tb_company_dtl_info) 조회 API
- 현재 Risk 지표 상태 조회 (JdbcTemplate unpivot, 카테고리별 그리드 + 색상배지)
- 현재 Compliance 상태 조회 (선박: Sanctions/Port Calls/STS/Suspicious 탭 분리)
- 회사 Compliance 헤더에 Overall 상태 배지 표시
- Risk/Compliance 지표 예외 처리 (IUU, Risk Data Maintained, Parent Company 등)
- Risk prevNarrative LATERAL JOIN으로 이전값 설명 표시
- 다국어 캐시 + category 기반 탭 매칭 (언어 전환 시 데이터 유지)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 선박 위험지표/선박 제재/회사 제재 변경 이력 조회 API 및 UI
- tb_ship_risk_detail_hstry JOIN으로 Risk narrative(이전값/이후값) 표시
- indicator 테이블 column_name 매핑으로 다국어 필드명 지원
- Compliance overall 상태 토글 헤더에 배지 표시
- 다국어 캐시 (KO/EN 동시 조회, 언어 토글 즉시 전환)
- Screening Guide에서 분리된 독립 페이지 (/risk-compliance-history)
- indicator sort_order 기준 토글 내부 정렬
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- WebClient Bean 드롭다운 표시 텍스트를 description만 표시
- bypass_api_param에 example 컬럼 추가 (Swagger placeholder 사용자 설정)
- 목록 기본 뷰를 리스트뷰(테이블)로 변경
- 도메인명 드롭다운 필터 추가
- WebViewController에 /bypass-config 경로 추가 (SPA 새로고침 404 해결)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- DTO 생성 제거: 모든 BYPASS API가 JsonNode로 응답 패스스루
- bypass_api_field 테이블 관련 코드 삭제 (Entity, Repository, DTO, JsonSchemaParser)
- 코드 생성기: Service만 생성 (DTO 없음), JsonNode 반환
- 프론트엔드: 3단계 → 2단계 폼 축소 (기본 정보 + 파라미터)
- BypassStepFields, responseType 관련 코드 전면 제거
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Hibernate가 INSERT를 DELETE보다 먼저 실행하는 문제 해결.
clear() 후 entityManager.flush()로 DELETE를 먼저 실행
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>