SimpleHR project
릴리스 후보(RC) 최종 점검 체크리스트 스펙
conceptedited by Cairni · 방금 · AIv1
개요
이 스펙은 모바일 앱 릴리스 후보(RC) 빌드에서 수행해야 하는 최종 배포 전 점검 절차를 정의한다. Expo Go나 개발 빌드가 아닌 스토어 서명 빌드에서만 확인 가능한 세 가지 영역을 다룬다. FINAL-VERIFICATION.md 문서를 출처로 한다.
- 스토어 서명 및 도메인 연결 (Universal Link / App Link)
- 실기기 외부 링크 딥링크 진입
- 오프라인 콜드스타트 및 세션 자동 복구
상세 빌드·제출 명령은 별도 RELEASE-RUNBOOK.md를 따른다.판정 전제 (2026-09-01 기준)
- 앱에는
/set-password/[token]화면과simplehr.co.kr링크 수신 설정이 구현돼 있다. - 웹에서 비밀번호 설정·재설정 완료 후 모바일에서 새 비밀번호로 로그인하는 폴백은 유지한다.
- Expo Go 확인은 최종 증빙이 아니다. Expo Go는 SimpleHR의 Bundle ID, package name, Associated Domains, App Links 서명을 사용하지 않는다.
- EAS development·preview 빌드는 화면 진입과 토큰 처리의 사전 확인에만 사용한다.
- iOS는 TestFlight production 빌드, Android는 Play internal production AAB와 같은 서명의 빌드에서 확인해야 완료로 처리한다.
현재 보류 사항
최종 판정 현황AI · 출처 클릭
완료5
일시적 refresh 실패 시 offline 전환 단위 테스트 통과
FINAL-VERIFICATION.md
수동 재시도·NetInfo offline→online·포그라운드 복귀 세션 복구 확인
FINAL-VERIFICATION.md
401·403 확정 거부 시에만 로그인 상태·푸시 등록 정리 확인
FINAL-VERIFICATION.md
Jest 130 suites·2,040 tests 통과 / TypeScript 검사 통과
FINAL-VERIFICATION.md
전체 ESLint 오류 0건 / iOS·Android Expo export 성공
FINAL-VERIFICATION.md
보류3
Android App Link 최종 판정 — Play Console 접근 권한·Play 앱 서명 SHA-256 미확인
FINAL-VERIFICATION.md
운영 assetlinks.json에 자리표시자(REPLACE_WITH_PLAY_APP_SIGNING_SHA256) 잔존 — 프런트 배포 후 재확인 필요
FINAL-VERIFICATION.md
오프라인 콜드스타트 실기기 판정 — TestFlight·Play internal RC에서 미완료
FINAL-VERIFICATION.md
단계별 점검 절차
1단계 · 최종 빌드 전
| 항목 | 세부 내용 |
|---|---|
| RC 정보 기록 | SHA, 앱 버전, iOS build number, Android versionCode |
| API origin | https://simplehr.co.kr / wss://simplehr.co.kr |
| iOS AASA | HTTP 200·리다이렉트 없음, P2A3SM9Q2G.kr.co.simplehr.mobile, /set-password/* 포함 |
| iOS entitlements | com.apple.developer.associated-domains, applinks:simplehr.co.kr |
| Play 앱 서명 SHA-256 | Play Console → 앱 무결성에서 확인 (업로드 키 인증서와 구분) |
| assetlinks.json | HTTP 200·application/json·리다이렉트 없음, kr.co.simplehr.mobile과 Play 앱 서명 SHA-256만 포함 |
| Digital Asset Links | statement 반환, MALFORMED_CONTENT·자리표시자 오류 없음 |
FINAL-VERIFICATION.md
2단계 · 스토어 내부 배포
| 순서 | 작업 |
|---|---|
| 1 | 최종 RC clean checkout에서 eas build -p ios --profile production 실행 → build ID·source SHA 기록 |
| 2 | 같은 RC에서 eas build -p android --profile production 실행 → AAB build ID·source SHA 기록 |
| 3 | iOS production 빌드 → TestFlight 업로드 |
| 4 | Android production AAB → Play internal 업로드 |
| 5 | QA 기기에 내부 배포 채널 빌드 새로 설치 (Expo Go·preview APK 결과로 대체 불가) |
| 6 | 양 플랫폼 Bundle ID/applicationId = kr.co.simplehr.mobile 확인, QA 빌드·제출 후보 build ID 일치 확인 |
FINAL-VERIFICATION.md
3단계 · 실기기 링크 확인
iOS · TestFlight
- Mail·메시지·메모 앱의 실제
https://simplehr.co.kr/set-password/{token}링크 탭 시 Safari가 아닌 SimpleHR 비밀번호 설정 화면이 열려야 한다. - 메모 앱에서 링크를 길게 눌렀을 때 SimpleHR 앱으로 열기 선택지가 표시돼야 한다.
- Safari 주소창 직접 입력은 Universal Link 실패 판정에 사용하지 않는다.
- 열리지 않을 경우: AASA 응답, Team ID·Bundle ID, signed entitlements, Apple CDN 캐시를 확인하고 새 설치로 재검증한다.
Android · Play internal
- USB 디버깅 연결 후 아래 명령에서
simplehr.co.kr: verified를 확인한다.
bash
adb shell pm verify-app-links --re-verify kr.co.simplehr.mobile
adb shell pm get-app-links kr.co.simplehr.mobile- 이메일의 실제 링크를 눌렀을 때 브라우저나 앱 선택창 없이 비밀번호 설정 화면이 열려야 한다.
- 열리지 않을 경우: Play 앱 서명 SHA-256, 운영
assetlinks.json, installed package 서명을 재대조한다. - 링크 수동 허용 설정으로 성공시켜 완료 처리하는 것은 허용하지 않는다.
공통 폴백 및 완료 기준
- 앱이 설치되지 않은 기기에서는 같은 링크가 웹 비밀번호 설정 페이지로 열려야 한다.
- 웹에서 새 비밀번호 설정 완료 후 모바일에서 새 비밀번호로 로그인이 돼야 한다.
- 만료·잘못된 토큰에서 흰 화면·무한 로딩 대신 명시적 오류와 재시도 경로가 표시돼야 한다.
- 양 플랫폼에서 같은 RC 빌드로 위 항목이 통과한 뒤에만 외부 링크 연결을
완료로 기록한다.
FINAL-VERIFICATION.md
4단계 · 오프라인 콜드스타트와 세션 복구
자동 검증 현황 (2026-09-01 기준)
AI · 출처 클릭
Jest 전체 suites
130
FINAL-VERIFICATION.md
Jest 전체 tests
2,040
FINAL-VERIFICATION.md
ESLint 오류
0건
FINAL-VERIFICATION.md
기존 ESLint 경고 (이번 변경 파일 외)
37건
FINAL-VERIFICATION.md
자동 검증 항목:
- 일시적 refresh 실패 →
unauthenticated가 아닌offline상태 전환, 저장 세션·푸시 등록 미삭제 - 수동
다시 연결, NetInfo offline→online 전환, 앱 포그라운드 복귀 시 세션 복구 및 refresh 요청 하나만 공유 - 401·403 확정 거부 시에만 로그인 상태·푸시 등록 정리, 진행 중 이전 복구 결과가 새 세션 덮어쓰기 방지
자동 검증은 RN 로직과 번들 생성을 증명하지만, 스토어 서명 빌드의 네이티브 NetInfo·SecureStore 콜드스타트 증빙은 아니다.
iOS · TestFlight production 실기기 점검
- 정상 QA 계정으로 로그인·홈 진입 확인 후 앱 완전 종료
- Wi-Fi와 셀룰러 데이터 모두 끈 상태에서 앱 재실행 시
SimpleHR에 연결할 수 없어요안내와다시 연결버튼이 표시돼야 한다 (로그인 화면·흰 화면·무한 로딩·강제 종료 불가) - 오프라인 상태에서
다시 연결탭 시 중복 입력 방지, 실패 후 같은 안내 화면 복귀, 저장 로그인 정보 미삭제 - 앱 종료 없이 네트워크 복구 시 자동으로 저장 세션을 재확인하고 홈으로 진입해야 한다. 자동 복구 미확인 시 제출 후보로 승격 불가.
Android · Play internal production AAB 실기기 점검
- 정상 QA 계정으로 로그인·홈 진입 확인 후 앱 완전 종료
- 비행기 모드 또는 Wi-Fi·모바일 데이터 차단 상태에서 앱 재실행 시
SimpleHR에 연결할 수 없어요안내와다시 연결버튼이 표시돼야 한다 - 오프라인 상태에서
다시 연결탭 시 중복 입력 방지, 실패 후 같은 안내 화면 복귀, 저장 로그인 정보 미삭제 - 앱 종료 없이 네트워크 복구 시 자동으로 저장 세션을 재확인하고 홈으로 진입해야 한다. 자동 복구 미확인 시 제출 후보로 승격 불가.
완료 기준
- iOS·Android 모두 같은 RC에서 오프라인 안내와 네트워크 복구 후 자동 재진입이 확인돼야
완료로 기록한다. - 한 플랫폼이라도 로그인 화면으로 잘못 이동하거나 앱을 다시 실행해야만 복구되면 심사 제출을 보류한다.
- 확인 중 사용한 QA 계정의 비밀번호·토큰·개인정보는 이 문서에 기록하지 않는다.
FINAL-VERIFICATION.md
전체 흐름 요약
확인 기록 양식
| 항목 | 내용 |
|---|---|
| RC SHA | |
| iOS TestFlight build ID / build number | |
| Android Play internal build ID / versionCode | |
| Play 앱 서명 SHA-256 확인자·확인 시각 | |
| iOS 기기·OS / 결과 | |
| Android 기기·OS / adb domain state | |
| 웹 폴백 / 모바일 재로그인 결과 | |
| iOS 오프라인 콜드스타트 / 네트워크 복구 결과 | |
| Android 오프라인 콜드스타트 / 네트워크 복구 결과 | |
| 외부 링크 판정 | 완료 / 보류 |
| 오프라인 세션 복구 판정 | 완료 / 보류 |
| 모바일 심사 기능 판정 | 완료 / 보류 |
| 확인 시각(KST) |
FINAL-VERIFICATION.md
참고 외부 문서
- Apple · Supporting associated domains
- Apple · App Review Guidelines 2.1 App Completeness
- Android · Verify App Links
- Google Play · Functionality, Content, and User Experience