/SimpleHR project
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 originhttps://simplehr.co.kr / wss://simplehr.co.kr
iOS AASAHTTP 200·리다이렉트 없음, P2A3SM9Q2G.kr.co.simplehr.mobile, /set-password/* 포함
iOS entitlementscom.apple.developer.associated-domains, applinks:simplehr.co.kr
Play 앱 서명 SHA-256Play Console → 앱 무결성에서 확인 (업로드 키 인증서와 구분)
assetlinks.jsonHTTP 200·application/json·리다이렉트 없음, kr.co.simplehr.mobile과 Play 앱 서명 SHA-256만 포함
Digital Asset Linksstatement 반환, 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 기록
3iOS production 빌드 → TestFlight 업로드
4Android production AAB → Play internal 업로드
5QA 기기에 내부 배포 채널 빌드 새로 설치 (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
Made with CairniExplore public wikis →