| 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) |