{
  "issueId": "3341",
  "environment": "dev",
  "source": "local checklist",
  "sourceText": "김경주님의 QA 요청입니다\\n조지민 프로님 안녕하세요, 비스킷 링크 개발계 QA 요청드립니다\\n[1] QA 요청 배경\\n- https://itsm.bix.bz/issues/3341\\n- 링크결제 완료 건이 기존 수기결제로 구분되어, 거래내역, 수기결제내역, 거래로그에서 링크결제 타입을 확인할 수 있도록 추가했습니다.\\n- 기존에 이미 생성된 링크결제 거래는 별도 이관하지 않습니다.\\n[2] 사전 준비사항\\n- 개발계에서 로그인 가능한 어드민 계정 준비\\n- 검증용 링크결제 데이터와 수기결제 데이터가 준비되어 있는지 확인\\n- 조회 기간은 테스트 결제가 생성된 날짜를 포함하도록 설정\\n[3] 검증 대상\\n- 거래내역 화면\\n- 수기결제내역 화면\\n- 거래로그 화면\\n[4] 권한별 테스트\\n- admin\\n[5] 검증 기준\\n- 신규로 완료된 링크결제는 화면에서 링크결제로 구분되어야 함\\n- 링크결제 필터 선택 시 신규 링크결제 건만 조회되어야 함\\n- 스토어-수기결제 필터 선택 시 기존 수기결제 건은 계속 조회되어야 함\\n- 기존에 이미 생성된 링크결제 건은 기존 구분값으로 보임\\n[6] 체크리스트\\n- 거래내역 화면에서 신규 링크결제 완료 건이 링크결제로 표시되는지 확인\\n- 거래내역 화면에서 링크결제 필터 선택 시 신규 링크결제 건이 조회되는지 확인\\n- 거래내역 화면에서 스토어-수기결제 필터 선택 시 기존 수기결제 건이 정상 조회되는지 확인\\n- 수기결제내역 화면에서 신규 링크결제 건이 링크결제로 구분되어 조회되는지 확인\\n- 수기결제내역 화면에서 기존 스토어-수기결제 조회 동작이 기존과 동일한지 확인\\n- 거래로그 화면에서 신규 링크결제 건이 링크결제로 구분되어 조회되는지 확인\\n- 거래내역 화면에서 링크결제 완료 건 취소가 기존과 동일하게 가능한지 확인\\n- 거래내역 화면에서 조회 기간, 가맹점, 결제 구분 필터를 함께 적용해도 링크결제 검색 결과가 유지되는지 확인\\n\\n링크결제는 요청자가 전달한 휴대폰 번호로 발송 후 전달받은 결제 URL을 .env.local에만 저장해 진행한다.",
  "scope": "dev ADMIN 계정으로 거래내역, 수기결제내역, 거래로그에서 신규 링크결제와 기존 스토어-수기결제 구분 표시 및 필터 동작, 링크결제 취소 가능 여부를 확인",
  "scenario": "link-payment-type",
  "checklist": [
    "거래내역 화면에서 신규 링크결제 완료 건이 링크결제로 표시되는지 확인",
    "거래내역 화면에서 링크결제 필터 선택 시 신규 링크결제 건이 조회되는지 확인",
    "거래내역 화면에서 스토어-수기결제 필터 선택 시 기존 수기결제 건이 정상 조회되는지 확인",
    "수기결제내역 화면에서 신규 링크결제 건이 링크결제로 구분되어 조회되는지 확인",
    "수기결제내역 화면에서 기존 스토어-수기결제 조회 동작이 기존과 동일한지 확인",
    "거래로그 화면에서 신규 링크결제 건이 링크결제로 구분되어 조회되는지 확인",
    "거래내역 화면에서 링크결제 완료 건 취소가 기존과 동일하게 가능한지 확인",
    "거래내역 화면에서 조회 기간, 가맹점, 결제 구분 필터를 함께 적용해도 링크결제 검색 결과가 유지되는지 확인"
  ],
  "roles": [
    "ADMIN"
  ],
  "routeCandidates": "../../../../qa-results/issues/3341/dev/route-candidates.json",
  "setupSteps": [
    {
      "name": "링크결제 URL 및 결제 정보 로컬 설정",
      "kind": "manual-precondition",
      "role": "ADMIN",
      "application": "admin",
      "description": "요청자가 전달한 링크결제 URL, 결제 연락처, 카드 정보는 QA_3341_* 환경변수로 .env.local에만 설정한다. 기본 실행은 QA_3341_REUSE_APPROVAL_NO로 이미 생성된 결제 건을 재사용하며, 새 결제 생성은 QA_3341_CREATE_FROM_LINK=1을 별도 지정한 경우에만 허용한다. 결제 URL/휴대폰/카드 정보는 report와 git 산출물에 원문으로 남기지 않는다.",
      "required": true,
      "mutation": "none"
    },
    {
      "name": "검증 후 링크결제 PG 취소",
      "kind": "state-verify",
      "role": "ADMIN",
      "application": "admin",
      "description": "재사용한 링크결제 1,004원 거래는 표시/필터 확인 후 운영자 거래내역에서 PG 취소 상태까지 확인한다. 중간 실패 시에도 afterAll 보정 단계에서 취소를 재시도한다.",
      "required": true,
      "mutation": "temporary",
      "guardEnv": "QA_3341_ALLOW_PAYMENT_MUTATION",
      "restore": {
        "required": true,
        "description": "생성된 1,004원 링크결제 거래를 PG 취소 상태로 되돌린다."
      }
    }
  ],
  "pages": [
    {
      "name": "거래내역",
      "application": "admin",
      "path": "/trade-history-v2",
      "tenantParam": "tenantId",
      "searchButtonSelector": "button:has-text('검색'), button:has-text('조회'), [data-testid='search-button']"
    },
    {
      "name": "수기결제내역",
      "application": "admin",
      "path": "/log-management/manual-log",
      "tenantParam": "tenantId",
      "searchButtonSelector": "button:has-text('검색'), button:has-text('조회'), [data-testid='search-button']"
    },
    {
      "name": "거래로그",
      "application": "admin",
      "path": "/payment-history",
      "tenantParam": "tenantId",
      "searchButtonSelector": "button:has-text('검색'), button:has-text('조회'), [data-testid='search-button']"
    }
  ]
}
