{
  "issueId": "3766",
  "environment": "dev",
  "scenario": "store-service-info-fallback",
  "source": "Redmine #3766 + user-provided QA checklist 2026-07-07",
  "sourceText": "김경주님의 QA 요청입니다. 조지민 프로님 안녕하세요, 비스킷 링크 개발계 QA 요청드립니다. [1] QA 요청 배경 https://itsm.bix.bz/issues/3766. [2] 사전 데이터 BO 계정: ID transfer_bo_gj / 인증정보는 로컬 환경변수로만 사용. [3] 사전 작업 PC Chrome에서 비스킷페이 개발계 접속 가능 여부 확인. 서비스 정보 조회 실패 상황을 재현할 수 있는 환경 준비: Chrome 개발자도구 요청 차단 기능 또는 동일하게 특정 요청 실패/복구를 재현할 수 있는 다른 테스트 환경 사용. 요청 차단 또는 실패 재현 설정을 사용한 경우, 테스트 종료 후 해당 설정이 해제되었는지 확인. [4] 권한별 테스트 bo. [5] 검증 대상 비스킷페이 로그인 화면, 비스킷페이 계정 복구 화면. [6] 체크리스트는 checklist 배열 참조.",
  "scope": "dev 환경 비스킷페이(store) 로그인/계정 복구 공개 화면에서 서비스 정보 조회 API(/api/v1/store/data/tenants/login-before) 실패를 Playwright 요청 차단으로 재현하고, 정상 상태/차단 상태/차단 해제 후 다시 시도 복구 동작을 BO 계정 기준으로 검증한다.",
  "roles": [
    "BO"
  ],
  "subjectAccounts": [
    {
      "role": "BO",
      "label": "transfer_bo_gj",
      "envRole": "TRANSFER_BO_GJ"
    }
  ],
  "checklist": [
    "정상 상태에서 BO 계정으로 로그인 화면 진입 시 기존처럼 아이디/비밀번호 입력 및 로그인이 가능한지 확인",
    "서비스 정보 조회 요청을 차단한 상태에서 로그인 화면 하단에 서비스 정보 안내와 다시 시도 액션이 표시되는지 확인",
    "서비스 정보 조회 요청을 차단한 상태에서 로그인 버튼 클릭 시 다음 화면으로 진행되지 않고 오류 안내가 표시되는지 확인",
    "차단을 해제한 뒤 다시 시도 클릭 시 화면이 새로고침되고 정상 로그인 가능 상태로 복구되는지 확인",
    "정상 상태에서 계정 복구 화면 진입 시 기존처럼 아이디 입력부터 복구 플로우가 가능한지 확인",
    "서비스 정보 조회 요청을 차단한 상태에서 계정 복구 화면 진입 시 아이디 입력 단계로 진행되지 않고 안내 화면이 표시되는지 확인",
    "계정 복구 안내 화면에서 다시 시도 클릭 후 차단 해제 상태라면 정상 복구 화면으로 진입되는지 확인",
    "계정 복구 안내 화면에서 로그인 화면 클릭 시 로그인 화면으로 이동되는지 확인"
  ],
  "setupSteps": [
    {
      "name": "BO 테스트 계정 로그인 정보 준비",
      "kind": "manual-precondition",
      "role": "BO",
      "application": "store",
      "description": "transfer_bo_gj 계정의 비밀번호와 PIN은 BIX_STORE_DEV_TRANSFER_BO_GJ_USERNAME/PASSWORD/2FA 환경변수로만 주입하고 git 산출물에 남기지 않는다.",
      "required": true,
      "mutation": "none"
    },
    {
      "name": "서비스 정보 조회 실패 재현",
      "kind": "state-verify",
      "role": "BO",
      "application": "store",
      "description": "Playwright page.route로 /api/v1/store/data/tenants/login-before 요청만 abort 처리해 Chrome 개발자도구 요청 차단과 동일한 실패 상태를 재현한다. 차단은 테스트 context 내부에서만 적용되고 context 종료로 해제된다.",
      "required": true,
      "mutation": "none"
    }
  ],
  "pages": [
    {
      "name": "비스킷페이 로그인 화면",
      "application": "store",
      "authRequired": false,
      "roles": [
        "BO"
      ],
      "path": "/sign-in",
      "tenantParam": "tenantId",
      "searchButtonSelector": "button:has-text('로그인'), button:has-text('다시 시도')",
      "recordsSelector": "main, body",
      "dataRequestUrlPattern": "store/data/tenants/login-before"
    },
    {
      "name": "비스킷페이 계정 복구 화면",
      "application": "store",
      "authRequired": false,
      "roles": [
        "BO"
      ],
      "path": "/restore",
      "tenantParam": "tenantId",
      "searchButtonSelector": "button:has-text('다시 시도'), button:has-text('로그인 화면'), button:has-text('다음')",
      "recordsSelector": "main, body",
      "dataRequestUrlPattern": "store/data/tenants/login-before"
    }
  ]
}
