feat: BY PASS API 등록 프로세스 설계 및 개발 (#63) #108

병합
HYOJIN feature/ISSUE-63-bypass-api-registration 에서 develop 로 19 commits 를 머지했습니다 2026-03-27 14:32:14 +09:00
소유자

변경 사항

백엔드

  • 공통 베이스 클래스 추가 (BaseBypassService, BaseBypassController)
  • BYPASS API 설정 CRUD API 구현 (/api/bypass-config)
  • Java 코드 자동 생성기 구현 (Controller + Service, RAW JsonNode 패스스루)
  • 같은 도메인 다중 엔드포인트 지원
  • Swagger GroupedOpenApi 그룹 분리 (Batch Management / Bypass Config / Bypass API)
  • 코드 생성 시 @Tag 접두사, @Parameter example, @Operation description 사용자 설정 반영
  • SPA 새로고침 라우팅 수정 (WebViewController)

프론트엔드

  • Bypass API 관리 페이지 추가 (목록 + 2단계 등록 모달)
  • 카드/테이블 뷰 전환, 실시간 검색, 도메인 드롭다운 필터
  • 파라미터 example 입력 지원

DB

  • bypass_api_config 테이블 (endpoint_name 복합 unique)
  • bypass_api_param 테이블 (example 컬럼 포함)
  • bypass_api_field 테이블 제거 (RAW 모드 전환)

관련 이슈

테스트

  • Maven 컴파일 성공
  • TypeScript 타입 체크 통과
  • compliance 도메인 4개 API 등록 → 코드 생성 → 정상 동작 확인
  • risk 도메인 API 등록 → 코드 생성 → 정상 동작 확인
  • SPA 새로고침 정상 확인
## 변경 사항 ### 백엔드 - 공통 베이스 클래스 추가 (BaseBypassService, BaseBypassController) - BYPASS API 설정 CRUD API 구현 (/api/bypass-config) - Java 코드 자동 생성기 구현 (Controller + Service, RAW JsonNode 패스스루) - 같은 도메인 다중 엔드포인트 지원 - Swagger GroupedOpenApi 그룹 분리 (Batch Management / Bypass Config / Bypass API) - 코드 생성 시 @Tag 접두사, @Parameter example, @Operation description 사용자 설정 반영 - SPA 새로고침 라우팅 수정 (WebViewController) ### 프론트엔드 - Bypass API 관리 페이지 추가 (목록 + 2단계 등록 모달) - 카드/테이블 뷰 전환, 실시간 검색, 도메인 드롭다운 필터 - 파라미터 example 입력 지원 ### DB - bypass_api_config 테이블 (endpoint_name 복합 unique) - bypass_api_param 테이블 (example 컬럼 포함) - bypass_api_field 테이블 제거 (RAW 모드 전환) ## 관련 이슈 - closes #63 ## 테스트 - [x] Maven 컴파일 성공 - [x] TypeScript 타입 체크 통과 - [x] compliance 도메인 4개 API 등록 → 코드 생성 → 정상 동작 확인 - [x] risk 도메인 API 등록 → 코드 생성 → 정상 동작 확인 - [x] SPA 새로고침 정상 확인
HYOJIN added 19 commits 2026-03-27 14:23:50 +09:00
- 공통 베이스 클래스 추가 (BaseBypassService, BaseBypassController)
- 기존 Risk 모듈 베이스 클래스 상속으로 리팩토링
- BYPASS API 설정 CRUD API 구현 (/api/bypass-config)
- Java 코드 생성기 구현 (Controller, Service, DTO 자동 생성)
- JSON 샘플 파싱 기능 구현
- 프론트엔드 BYPASS API 관리 페이지 추가 (멀티스텝 등록 모달)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
parseJson API 호출 시 이미 JSON 문자열인 body를
JSON.stringify로 다시 감싸는 문제 수정

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
String.formatted() %s 플레이스홀더 방식에서
명명된 플레이스홀더 {{}} + String.replace() 방식으로 변경

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
생성되는 Controller에 GetMapping/PostMapping import가
포함되지 않는 문제 수정

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
BaseBypassService 생성자의 apiPath와 displayName 순서가
뒤바뀌어 외부 API 경로 대신 표시명이 URL로 사용되는 문제 수정

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
/RiskAndCompliance/CompliancesByImos 등록 시
/api/compliance → /api/compliance/CompliancesByImos 로 생성되도록 변경

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
프론트엔드:
- DTO 필드 입력 폼에 필드 번호(#N) 및 총 카운트 표시
- List View(테이블 뷰) 추가 및 카드/테이블 뷰 전환
- 실시간 검색 기능 추가 (도메인명, 표시명)

Swagger:
- GroupedOpenApi로 그룹 분리 (Batch Management, Bypass Config, Bypass API)
- 코드 생성 시 @Tag에 WebClient 종류 접두사 추가
- 코드 생성 시 @Parameter에 example 기본값 설정

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- BypassApiConfig에 endpointName 필드 추가 (externalPath에서 자동 추출)
- domainName unique 제약 → domainName + endpointName 복합 unique로 변경
- 코드 생성 시 같은 도메인의 모든 설정을 합쳐 Controller 1개 생성
- Service/DTO는 엔드포인트별로 별도 생성
- CodeGenerationResult에 servicePaths/dtoPaths 목록 반환
- 프론트엔드 타입/UI 업데이트

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Controller는 항상 재생성 (모든 엔드포인트 합산 파일)
- Service/DTO는 이미 존재하면 스킵, force=true면 재생성

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
백엔드:
- generateDtoCode에서 List/Map 타입 import 자동 추가
- JsonSchemaParser에 targetField 파라미터 추가 (특정 필드 내부만 파싱)
- 배열 내 객체 감지 시 List<{FieldName}Item> 타입으로 추론

프론트엔드:
- JSON 샘플 파싱 시 "전체 JSON / 특정 필드 내부" 선택 옵션 추가
- targetField 기본값 "data" (페이징 래퍼 대응)

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>
- 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>
RAW 모드 코드 생성에서 사용하는 JsonNode 반환 메서드가
BaseBypassService에 누락되어 빌드 오류 발생하는 문제 수정

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
기존 수동 작성된 RiskController, RiskBypassService 삭제.
화면에서 RAW 모드로 재등록하여 코드 생성 예정.

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>
코드 생성 시 @Operation description에 하드코딩 문구 대신
사용자가 API 등록 시 입력한 설명(description)을 사용

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
claude-bot 이 변경사항을 승인하였습니다. 2026-03-27 14:24:17 +09:00
claude-bot left a comment
멤버

MR 승인 (via /mr skill)

MR 승인 (via /mr skill)
HYOJIN merged commit bab659ff12 into develop 2026-03-27 14:32:14 +09:00
HYOJIN 삭제된 브랜치 feature/ISSUE-63-bypass-api-registration 2026-03-27 14:32:14 +09:00
"로그인하여 이 대화에 참여"
No reviewers
레이블 없음
마일스톤 없음
담당자 없음
참여자 2명
알림
마감일
기한이 올바르지 않거나 범위를 벗어났습니다. 'yyyy-mm-dd'형식을 사용해주십시오.

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

의존성

No dependencies set.

Reference: gc/snp-batch-validation#108
No description provided.