name verify-api-contracts description REST API 응답 DTO 일관성 및 에러 코드 표준 검증. API 엔드포인트 추가/수정, DTO 변경, 에러 처리 수정 후 사용. API 계약 변경이 프론트엔드에 영향을 줄 수 있을 때 사용.
Purpose
REST API 응답 형식의 일관성, 에러 코드 표준, 프론트엔드 API 클라이언트와의 동기화를 검증합니다.
Checks
1. 에러 응답 형식 일관성
모든 에러 응답은 ErrorResponse 형식을 따라야 합니다:
{
"error" : {
"code" : "NOT_FOUND" ,
"message" : "Inquiry not found: {id}" ,
"status" : 404 ,
"requestId" : "uuid" ,
"timestamp" : "2026-03-08T..." ,
"details" : null
}
}
grep -rn "ResponseEntity.status\|ResponseEntity.badRequest\|ResponseEntity.notFound" backend/app-api/src/main/java/ --include="*.java" | grep -v "test"
2. 표준 에러 코드
코드 HTTP 용도 VALIDATION_ERROR 400 입력 검증 실패 NOT_FOUND 404 리소스 없음 UNAUTHORIZED 401 인증 실패 FORBIDDEN 403 권한 부족 CONFLICT 409 상태 충돌 RATE_LIMIT_EXCEEDED 429 요청 제한 초과 PAYLOAD_TOO_LARGE 413 파일 크기 초과 INTERNAL_ERROR 500 서버 내부 오류
3. 응답 DTO 명명 규칙
4. 프론트엔드 API 클라이언트 동기화
파일 : frontend/src/lib/api/client.ts
grep -rn "@GetMapping\|@PostMapping\|@PutMapping\|@PatchMapping\|@DeleteMapping" backend/app-api/src/main/java/ --include="*.java" | grep -v test
grep -n "fetch\|apiClient" frontend/src/lib/api/client.ts
5. 한국어 라벨 동기화
파일 : frontend/src/lib/i18n/labels.ts
백엔드 enum 값에 대응하는 한국어 라벨이 있는지 확인합니다:
Verdict: SUPPORTED, CONDITIONAL, REFUTED
InquiryStatus: 모든 상태값
AnswerStatus: DRAFT, REVIEWED, APPROVED, SENT
DocumentStatus: UPLOADED, INDEXING, INDEXED, FAILED
Channel: EMAIL, MESSENGER
Tone: FORMAL, BRIEF, TECHNICAL
KB Category: MANUAL, PROTOCOL, FAQ, SPEC_SHEET, TROUBLESHOOTING, OTHER
grep -n "label\|Label" frontend/src/lib/i18n/labels.ts
6. 날짜/시간 형식 일관성
7. 페이지네이션 일관성
목록 API의 페이지네이션 파라미터:
8. 답변 피드백 엔드포인트 확인
파일 : AnswerFeedbackController.java
피드백 API 엔드포인트가 올바르게 정의되어 있는지 확인합니다:
grep -n "@PostMapping\|@GetMapping\|feedback\|Feedback" backend/app-api/src/main/java/com/biorad/csrag/interfaces/rest/feedback/AnswerFeedbackController.java
grep -n "feedback" frontend/src/lib/api/client.ts
Related Files
File Purpose backend/app-api/src/main/java/.../common/exception/ErrorResponse.java에러 응답 record backend/app-api/src/main/java/.../common/exception/GlobalExceptionHandler.java글로벌 예외 처리 backend/app-api/src/main/java/.../interfaces/rest/REST Controller + DTO frontend/src/lib/api/client.ts프론트엔드 API 클라이언트 frontend/src/lib/i18n/labels.ts한국어 라벨 매핑 backend/app-api/src/main/java/com/biorad/csrag/interfaces/rest/feedback/AnswerFeedbackController.java답변 피드백 엔드포인트 (POST/GET feedback)