Skip to content

[Task] Unify frontend API contract types #2

@alexization

Description

@alexization

작업 유형

developer-experience

왜 필요한가요?

  • 프런트엔드에서 같은 API 계약을 src/shared/types/api.tssrc/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

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions