## 작업 유형 developer-experience ## 왜 필요한가요? - 프런트엔드에서 같은 API 계약을 `src/shared/types/api.ts`와 `src/shared/lib/validations.ts`에 중복 선언하고 있습니다. - `EMERALD` 누락처럼 backend OpenAPI 계약과 프런트 타입이 이미 드리프트한 상태라 후속 하네스 작업 전에 기준을 하나로 정리해야 합니다. ## 작업 범위 - route: `/ranking`, `/users/[username]`가 소비하는 서버 응답 타입 정리 - component: 직접 소비자는 필요한 최소 변경만 반영 - hook/store: 해당 없음 - test/harness: 해당 없음 - `src/shared/types/api.ts`를 단일 계약 경로로 정리 - `src/shared/lib/validations.ts`에서 API 응답용 Zod/type 중복 제거 ## 완료 조건 - [ ] `tier`, `user response`, `ranking response` 정의가 여러 곳에 중복 선언되지 않는다. - [ ] `EMERALD` 누락 같은 enum drift가 제거된다. - [ ] backend OpenAPI 계약과 프런트 타입이 모순되지 않는다. ## 검증 방법 - `npx tsc --noEmit` - 필요 시 backend `docs/openapi/openapi.json`과 수동 대조 ## 리스크 및 의존성 - 리스크: 생성 자동화까지 확장하면 이번 범위를 넘으므로 수동 단일화에 한정합니다. - 백엔드 의존성: `alexization/git-ranker#73`에서 생성된 OpenAPI 산출물을 기준 계약으로 사용합니다. - 후속 작업: `GRC-02`, `GRC-04`
작업 유형
developer-experience
왜 필요한가요?
src/shared/types/api.ts와src/shared/lib/validations.ts에 중복 선언하고 있습니다.EMERALD누락처럼 backend OpenAPI 계약과 프런트 타입이 이미 드리프트한 상태라 후속 하네스 작업 전에 기준을 하나로 정리해야 합니다.작업 범위
/ranking,/users/[username]가 소비하는 서버 응답 타입 정리src/shared/types/api.ts를 단일 계약 경로로 정리src/shared/lib/validations.ts에서 API 응답용 Zod/type 중복 제거완료 조건
tier,user response,ranking response정의가 여러 곳에 중복 선언되지 않는다.EMERALD누락 같은 enum drift가 제거된다.검증 방법
npx tsc --noEmitdocs/openapi/openapi.json과 수동 대조리스크 및 의존성
alexization/git-ranker#73에서 생성된 OpenAPI 산출물을 기준 계약으로 사용합니다.GRC-02,GRC-04