{
  "issueId": "3315",
  "environment": "dev",
  "source": "local checklist",
  "sourceText": "주홍석님의 QA 요청입니다\\n조지민 프로님 안녕하세요, 비스킷 링크 개발계 QA 요청드립니다\\n[1] QA 요청 배경\\n- https://itsm.bix.bz/issues/3315\\n- 영수증 조회 V2 API와 PG별 영수증 URL 통합, 결제 완료 응답 거래 ID 전달 개발계 검증 요청\\n[2] 사전 데이터\\n- 개발계에서 영수증 확인이 가능한 결제 완료 거래 준비\\n- 스토어 화면과 운영자/공통 거래 화면에서 확인할 수 있는 여러 PG 거래 준비\\n- 결제 성공 응답에서 거래 ID를 확인할 수 있는 수기결제 또는 링크결제 테스트 데이터 준비\\n[3] 사전 작업\\n- 가맹점 계정으로 스토어 거래내역과 결제 화면 접근 가능 여부 확인\\n- 운영자 계정으로 거래 목록, 거래 상세, 영수증 확인 화면 접근 가능 여부 확인\\n[4] 권한별 테스트\\n- admin\\n- ve\\n[5] 검증 대상\\n- 스토어 거래내역 영수증 확인 화면\\n- 운영자 거래 목록 및 거래 상세 영수증 확인 화면\\n- 수기결제 완료 화면\\n- 링크샵 결제 완료 화면\\n[6] 체크리스트\\n- 스토어 거래내역에서 영수증 버튼 클릭 시 새 창으로 PG 영수증이 정상 표시되는지 확인\\n- 운영자 거래 목록 또는 거래 상세에서 영수증 버튼 클릭 시 새 창으로 PG 영수증이 정상 표시되는지 확인\\n- 여러 PG 거래에서 영수증 버튼을 눌렀을 때 각 PG에 맞는 영수증 화면이 열리는지 확인\\n- 영수증을 열 수 없는 거래에서는 화면에 실패 메시지가 표시되고 빈 새 창이나 깨진 화면으로 이동하지 않는지 확인\\n- 수기결제 성공 후 화면 또는 응답 처리 흐름에서 거래 ID를 사용한 후속 동작이 정상 진행되는지 확인\\n- 링크샵 결제 성공 후 주문 완료 안내와 후속 화면 이동이 기존처럼 정상 동작하는지 확인\\n- 결제 실패 시 거래 ID가 없는 상태에서도 실패 메시지와 실패 처리 화면이 정상 표시되는지 확인\\n\\n결제는 스토어에서 수기결제를 통해 진행\\n카드번호는 env에 넣고 commit대상에서 제외\\n결제금액은 1004원으로 고정\\n확인 이후에는 무조건 PG 취소를 진행해야함\\n카드 정보는 .env.local의 QA_3315_* 변수에서만 읽고 report에는 마스킹한다.",
  "scope": "dev ADMIN/VE 계정으로 store 수기결제 1004원 결제 후 영수증 조회, 운영자 영수증 조회, 거래 ID 후속 흐름, 실패 처리, PG 취소를 확인. 링크결제는 요청자 추가 지시에 따라 이번 QA 범위에서 제외한다.",
  "scenario": "receipt-v2-payment-id",
  "checklist": [
    "스토어 거래내역에서 영수증 버튼 클릭 시 새 창으로 PG 영수증이 정상 표시되는지 확인",
    "운영자 거래 목록 또는 거래 상세에서 영수증 버튼 클릭 시 새 창으로 PG 영수증이 정상 표시되는지 확인",
    "여러 PG 거래에서 영수증 버튼을 눌렀을 때 각 PG에 맞는 영수증 화면이 열리는지 확인",
    "영수증을 열 수 없는 거래에서는 화면에 실패 메시지가 표시되고 빈 새 창이나 깨진 화면으로 이동하지 않는지 확인",
    "수기결제 성공 후 화면 또는 응답 처리 흐름에서 거래 ID를 사용한 후속 동작이 정상 진행되는지 확인",
    "결제 실패 시 거래 ID가 없는 상태에서도 실패 메시지와 실패 처리 화면이 정상 표시되는지 확인"
  ],
  "roles": [
    "VE"
  ],
  "routeCandidates": "../../../../qa-results/issues/3315/dev/route-candidates.json",
  "setupSteps": [
    {
      "name": "수기결제 카드 정보 로컬 설정",
      "kind": "manual-precondition",
      "role": "VE",
      "application": "store",
      "description": "QA_3315_CARD_NUMBER, QA_3315_CARD_EXPIRY, QA_3315_CARD_PASSWORD, QA_3315_CARD_BIRTH, QA_3315_PAYMENT_AMOUNT를 .env.local에만 설정한다. 카드 정보는 report와 git 산출물에 남기지 않는다.",
      "required": true,
      "mutation": "none"
    },
    {
      "name": "검증 후 PG 취소",
      "kind": "state-verify",
      "role": "ADMIN",
      "application": "admin",
      "description": "스토어 수기결제 성공 거래는 영수증 확인 후 운영자 거래내역에서 PG 취소까지 완료한다. 중간 실패 시에도 afterAll 보정 단계에서 취소를 재시도한다.",
      "required": true,
      "mutation": "temporary",
      "guardEnv": "QA_3315_ALLOW_PAYMENT_MUTATION",
      "restore": {
        "required": true,
        "description": "생성된 1004원 수기결제 거래를 PG 취소 상태로 되돌린다."
      }
    }
  ],
  "pages": [
    {
      "name": "운영자 거래내역",
      "application": "admin",
      "roles": [],
      "path": "/trade-history-v2",
      "tenantParam": "tenantId",
      "searchButtonSelector": "button:has-text('검색'), button:has-text('조회'), [data-testid='search-button']"
    }
  ]
}
