배경
Application/Infra/Sources/Service/FunctionAPIClient.swift는 현재 NXClientConfiguration의 공통 header로 Accept만 설정한다.
opficdev/DevLog_Firebase#65의 prod api Gateway가 심사 앱 요청만 apiSuccessor로 전달하려면, 모든 Functions 요청에서 App Store 버전과 build를 함께 식별할 수 있어야 한다.
작업 범위
CFBundleShortVersionString을 X-DevLog-App-Version으로 전달
CFBundleVersion을 X-DevLog-App-Build로 전달
- 두 값을
NXClientConfiguration.headers에 추가해 모든 FunctionAPIClient.send 경로에 공통 적용
- 인증 필요 여부와 관계없이 같은 릴리스 식별값 사용
- 비어 있거나 해석할 수 없는 값은 빈 header로 보내지 않음
- 릴리스 식별값 생성 동작에 대한 Infra 단위 테스트 추가
제약
(appVersion, appBuild)는 API 라우팅에만 사용하고 인증이나 권한 판단에 사용하지 않음
- 기존 Firebase ID token 인증 흐름과
FunctionAPIServerErrorDecoder 동작 유지
FUNCTION_API_BASE_URL과 FunctionAPIEndpoint path 변경 없음
APP_ENVIRONMENT나 git SHA를 요청 header에 추가하지 않음
완료 조건
제외 범위
- Firebase Gateway와
apiStable/apiSuccessor 구현
- App Store 배포 workflow 변경
- 오전 6시 공개 예약과 API 승격 처리
연관 이슈
opficdev/DevLog_Firebase#65
배경
Application/Infra/Sources/Service/FunctionAPIClient.swift는 현재NXClientConfiguration의 공통 header로Accept만 설정한다.opficdev/DevLog_Firebase#65의 prodapiGateway가 심사 앱 요청만apiSuccessor로 전달하려면, 모든 Functions 요청에서 App Store 버전과 build를 함께 식별할 수 있어야 한다.작업 범위
CFBundleShortVersionString을X-DevLog-App-Version으로 전달CFBundleVersion을X-DevLog-App-Build로 전달NXClientConfiguration.headers에 추가해 모든FunctionAPIClient.send경로에 공통 적용제약
(appVersion, appBuild)는 API 라우팅에만 사용하고 인증이나 권한 판단에 사용하지 않음FunctionAPIServerErrorDecoder동작 유지FUNCTION_API_BASE_URL과FunctionAPIEndpointpath 변경 없음APP_ENVIRONMENT나 git SHA를 요청 header에 추가하지 않음완료 조건
X-DevLog-App-Version과X-DevLog-App-Build가 포함됨.제외 범위
apiStable/apiSuccessor구현연관 이슈
opficdev/DevLog_Firebase#65