[FE-02] 앱 api/recruitment.ts 신규 (모집 타입 + 엔드포인트 함수)
작업 내용 (설계 의도)
변경 사항
모집 도메인의 요청/응답 타입과 엔드포인트 함수를 신규 파일 mobile/api/recruitment.ts에 정의한다. BE 20260707-모집-시설상품-소모임예약연동-tdd.md “REST API 계약” 표의 recruitment 7개 엔드포인트를 미러링한다. getBeClient() 경유(컴포넌트 직접 fetch 금지 — api 계층).
정의 대상:
- 타입:
RecruitmentResponse(id/title/description/capacity/confirmedCount/feeAmount/activityAt/applicationDeadline/communityId?/recruiterUserId/status: ‘OPEN’|‘CLOSED’|‘CANCELLED’),ApplicationResponse(id/recruitmentId/applicantUserId/status: ‘PENDING’|‘CONFIRMED’|‘CANCELLED’|‘REFUNDED’/paymentId?),CreateRecruitmentRequest,ApplyResult(applicationId/paymentId?/checkoutUrl?). - 함수:
listRecruitments(communityId?),getRecruitment(id),createRecruitment(body),listApplications(id),applyRecruitment(id),cancelRecruitment(id),cancelApplication(applicationId).
의존
- 없음 (자체 타입 보유, wave 1)
다이어그램
클래스 의존
flowchart LR RecApi["api/recruitment.ts"] --> Client["api/be-client.ts getBeClient"] Hook["lib/useRecruitment.ts (FE-08)"] --> RecApi
테스트 케이스
listRecruitments()가GET /recruitments를,listRecruitments(3)이GET /recruitments?communityId=3을 호출한다(axios-mock-adapter)applyRecruitment(id)가POST /recruitments/{id}/applications응답의 checkoutUrl·applicationId를 반환한다cancelApplication(id)가POST /applications/{id}/cancel를 호출한다- 404 응답 시 에러가 상위로 전파된다(swallow 금지)
RecruitmentResponse.status가 리터럴 유니온으로 좁혀진다