{
  "issueId": "3389",
  "environment": "dev",
  "source": "Redmine #3389 + user-provided re-QA checklist 2026-05-27",
  "sourceText": "김경주님의 QA 요청입니다\n조지민 프로님 안녕하세요, 비스킷 링크 개발계 QA 요청드립니다\n[1] QA 요청 배경\n- https://itsm.bix.bz/issues/3389\n- KiwoomPay 결제 영수증 확인 경로 변경 및 PG 결제 확인 요청입니다. 개발계 재확인 결과, KiwoomPay 거래내역 영수증 확인 5건이 통과하지 않아 재현 확인이 필요합니다.\n[2] 사전 데이터\n- KiwoomPay 결제 완료 거래 준비\n- 비스킷링크/비스킷페이 거래내역에서 KiwoomPay 거래 조회 가능해야 함\n- 가맹 기기등록 완료 필요\n- 테스트 계정 - ID: 키움페이법인 / 인증 정보는 .env.local 기준\n- 테스트 계정 - ID: 키움페이영업 / 인증 정보는 .env.local 기준\n- 테스트 계정 - ID: 키움페이테스트 / 인증 정보는 .env.local 기준\n[3] 사전 작업\n- 검증 환경과 로그인 계정이 준비되어 있는지 확인\n- 선택한 권한으로 메뉴 접근이 가능한지 확인\n[4] 권한별 테스트\n- co\n- bo\n- ve\n[5] 검증 대상\n- 비스킷링크: CO/BO 거래내역 KiwoomPay 영수증 확인\n- 비스킷페이: CO/BO/VE 거래내역 KiwoomPay 영수증 확인\n[6] 체크리스트\n- 비스킷링크 CO 거래내역 KiwoomPay 영수증 확인\n- 비스킷링크 BO 거래내역 KiwoomPay 영수증 확인\n- 비스킷페이 CO 거래내역 KiwoomPay 영수증 확인\n- 비스킷페이 BO 거래내역 KiwoomPay 영수증 확인\n- 비스킷페이 VE 거래내역 KiwoomPay 영수증 확인",
  "scope": "dev 환경에서 통과하지 않은 KiwoomPay 거래내역 영수증 5건을 재현 확인합니다. 비스킷링크는 CO/BO, 비스킷페이는 CO/BO/VE 권한으로 거래내역에서 KiwoomPay 거래 조회와 영수증 새 창/응답 경로를 확인합니다.",
  "scenario": "kiwoompay-receipt",
  "checklist": [
    "비스킷링크 CO 거래내역 KiwoomPay 영수증 확인",
    "비스킷링크 BO 거래내역 KiwoomPay 영수증 확인",
    "비스킷페이 CO 거래내역 KiwoomPay 영수증 확인",
    "비스킷페이 BO 거래내역 KiwoomPay 영수증 확인",
    "비스킷페이 VE 거래내역 KiwoomPay 영수증 확인"
  ],
  "roles": [
    "CO",
    "BO",
    "VE"
  ],
  "routeCandidates": "../../../../qa-results/issues/3389/dev/route-candidates.json",
  "setupSteps": [
    {
      "name": "KiwoomPay 결제 완료 거래 및 권한별 로그인 확인",
      "kind": "manual-precondition",
      "role": "ADMIN",
      "application": "admin",
      "targetRoles": [
        "CO",
        "BO",
        "VE"
      ],
      "description": "KiwoomPay 결제 완료 거래가 준비되어 있어야 하며, CO/BO/VE 계정 로그인과 거래내역 화면 접근이 가능해야 합니다. 가맹 기기등록은 사전에 완료되어 있어야 합니다. 계정 비밀번호와 PIN은 .env.local에만 보관하고 report와 git 산출물에 남기지 않습니다.",
      "required": true,
      "mutation": "none"
    }
  ],
  "pages": [
    {
      "name": "비스킷링크 거래내역",
      "application": "admin",
      "path": "/trade-history-v2",
      "tenantParam": "tenantId",
      "roles": [
        "CO",
        "BO"
      ],
      "searchButtonSelector": "button:has-text('검색'), button:has-text('조회'), [data-testid='search-button']",
      "filters": [
        {
          "name": "승인번호",
          "selector": "input[name='approvalNo'], input[placeholder*='승인'], input[placeholder*='검색']",
          "type": "textbox",
          "value": "runtime approvalNo",
          "queryParamCandidates": [
            "approvalNo",
            "keyword",
            "searchKeyword"
          ]
        }
      ]
    },
    {
      "name": "비스킷페이 거래내역",
      "application": "store",
      "path": "/transactions",
      "tenantParam": "tenantId",
      "roles": [
        "CO",
        "BO",
        "VE"
      ],
      "searchButtonSelector": "button:has-text('검색'), button:has-text('조회'), [data-testid='search-button']"
    },
    {
      "name": "비스킷페이 결제",
      "application": "store",
      "path": "/face-to-face-payment",
      "tenantParam": "tenantId",
      "roles": [
        "VE"
      ],
      "searchButtonSelector": "button:has-text('결제하기')"
    }
  ]
}
