### 🤷🏻 왜 이 작업을 해야 하나요? (Why) - 앱인토스 미니앱 QA를 prod 서버(`api.gotggam.com`)에서 진행합니다. - 앱인토스 설정(#76)과 약관 조회 API(#73)는 `develop`에만 반영되어 있고, `main`의 마지막 prod 배포는 v1.0.2(9/7)입니다. - 현재 prod 서버에 미니앱 Origin(`gotggam.apps.tossmini.com`, `gotggam.private-apps.tossmini.com`)으로 preflight 요청을 보내면 `403`이 반환되어 미니앱에서 API를 호출할 수 없습니다. - 릴리스 후 #73의 수동 SQL을 실행하지 않으면 prod에 약관 데이터가 없어 약관 조회가 실패합니다. ### 👨🏻💻 무엇을 변경할 예정인가요? (What) **릴리스 전 점검** - [x] mTLS 인증서 파일 확인 (`/etc/gotggam/toss-cert`) - 컨테이너 `spring` 사용자(UID 101)로 읽을 수 있는 권한입니다. - 인증서와 개인 키의 공개키가 일치하고, 유효기간은 2027-10-29까지입니다. - [x] prod `consent_document` 행 0건 확인 (`is_active` NOT NULL 컬럼 자동 추가 가능) - [x] GitHub `prod` environment Secrets 경로 값 확인 (`CERT_PATH`/`KEY_PATH`는 컨테이너 경로여야 합니다) - `TOSS_MTLS_HOST_DIR` = `/etc/gotggam/toss-cert` - `TOSS_MTLS_CERT_PATH` = `/secrets/toss/gotggam-cert_public.crt` - `TOSS_MTLS_KEY_PATH` = `/secrets/toss/gotggam-cert_private.key` **릴리스** - [x] `develop` → `main` 머지 후 prod 배포 - [x] 앱 정상 기동 확인 (`tossApiRestClient` 빈 생성) **릴리스 후 작업 (#73)** - [x] `ALTER TABLE consent_document ALTER COLUMN content SET NOT NULL;` - [x] `CREATE UNIQUE INDEX uk_consent_document_active_type ON consent_document (type) WHERE is_active;` - [x] 약관 2건 적재 (`PRIVACY_POLICY`, `TERMS_OF_SERVICE` `v1.0.0`, dev와 동일한 본문) **검증** - [x] 미니앱 Origin 2개로 preflight 요청 시 `200` 및 `Access-Control-Allow-Origin` 응답 확인 - [x] 약관 조회 API 응답 확인 - [ ] 앱인토스 콘솔 QR 테스트 환경에서 API 호출 확인 **참고** - 프론트 `@apps-in-toss/web-framework` 3.6.0은 [공식 문서](https://developers-apps-in-toss.toss.im/documentation/integration/server-api) 기준으로 `*.apps.tossmini.com` Origin을 사용하므로 현재 prod 설정과 일치합니다. - QA 데이터가 운영 DB에 함께 쌓이므로, QA 후 정리 방법을 정해야 합니다.
Activity