{
  "issueId": "4313",
  "environment": "dev",
  "source": "user-provided checklist (Redmine #4313)",
  "sourceText": "요청자: 송인준\n[1] QA 요청 배경\n* https://itsm.bix.bz/issues/4313\n[2] 사전 데이터\n* 비스킷링크 ADMIN, TA 계정 / 비스킷페이 가맹점 계정 / 터미널(curl)\n[3] 사전 작업\n* 비스킷페이 VE, 비스킷링크 ADMIN, TA 로그인\n[4] 권한별 테스트\n* 비스킷링크: ADMIN, TA (거래내역 > 영수증) / 비스킷페이: 가맹점 계정 (거래내역 > 영수증)\n[5] 검증 대상\n* 비스킷링크·비스킷페이 거래내역 > KPD 거래의 영수증 버튼\n[6] 체크리스트\n* TEST4313-0011 1,004원 전액 취소 통보 → 취소 행 영수증 https://mcht.paydatakr.com/trx/receipt/T261015431102, 승인 행 영수증 원승인 TID T261015431101 (ADMIN, TA, 비스킷페이)\n* TEST4313-0012 500원 부분 취소 → 취소 행 영수증 원승인 TID T261015431201\n* TEST4313-0012 504원 잔액 취소 → 취소 행 영수증 원승인 TID T261015431201\n* 배포 전 취소된 KPD 거래 영수증은 원승인 TID (보정 안 함, 정상)\n* KPD가 아닌 PG 거래 영수증은 기존과 같게 열림\n* 거래내역 TID 컬럼은 승인·취소 행 모두 원승인 TID (수정 범위 아님, 정상)",
  "scope": "개발계 비스킷링크·비스킷페이 거래내역 KPD 취소 거래 영수증 주소 QA",
  "checklist": [
    "KPD 취소 통보 직접 전송 (2026-10-15 17:33~17:34, 모두 HTTP 200 OK): TEST4313-0011 1,004원 전액 취소(T261015431102), TEST4313-0012 500원 부분 취소(T261015431202) → 504원 잔액 취소(T261015431203). 예비 TEST4313-0013은 미사용",
    "TEST4313-0011 전액 취소 행 영수증 = https://mcht.paydatakr.com/trx/receipt/T261015431102 (비스킷링크 ADMIN·TA, 비스킷페이 VE 화면 클릭)",
    "TEST4313-0011 승인 건 영수증 = https://mcht.paydatakr.com/trx/receipt/T261015431101 (승인 건은 DB에 직접 넣은 테스트 데이터라 거래내역 목록(별도 조회 저장소)에 없어, 화면 버튼과 같은 영수증 API로 확인)",
    "승인 행 화면 클릭은 배포 전 실제 KPD 승인·취소 쌍(2026-09-21 15:50, T260921392573)으로 확인: 승인 행·취소 행 모두 원승인 TID (배포 전 취소 건은 보정 안 함, 정상)",
    "TEST4313-0012 부분 취소 500원·잔액 취소 504원 행 영수증 = https://mcht.paydatakr.com/trx/receipt/T261015431201 (원승인 TID 유지)",
    "KPD 아닌 PG(코페이) 승인·취소 행 영수증은 영수증 API가 준 기존 주소로 열림 (KPD 주소 아님)",
    "거래내역 TID 컬럼은 승인·취소 행 모두 원승인 TID (수정 범위 아님, 정상)"
  ],
  "roles": [
    "ADMIN",
    "TA",
    "VE"
  ],
  "routeCandidates": "../../../../qa-results/issues/4313/dev/route-candidates.json",
  "setupSteps": [],
  "pages": [
    {
      "name": "거래내역",
      "application": "admin",
      "path": "/trade-history-v2",
      "tenantParam": "tenantId",
      "roles": [
        "ADMIN",
        "TA"
      ],
      "storeRoles": [
        "VE"
      ],
      "storePath": "/transactions",
      "targets": [
        {
          "key": "0011-cancel",
          "name": "TEST4313-0011 전액 취소 행",
          "date": "2026-10-15",
          "id": "11f1-c873-1c59fe2b-9c28-000000000001",
          "storeTime": "17:33",
          "storeAmount": "-1,004원",
          "expectedUrl": "https://mcht.paydatakr.com/trx/receipt/T261015431102"
        },
        {
          "key": "0012-partial",
          "name": "TEST4313-0012 부분 취소 500원 행",
          "date": "2026-10-15",
          "id": "11f1-c873-2aad9875-9c28-000000000001",
          "storeTime": "17:33",
          "storeAmount": "-500원",
          "expectedUrl": "https://mcht.paydatakr.com/trx/receipt/T261015431201"
        },
        {
          "key": "0012-rest",
          "name": "TEST4313-0012 잔액 취소 504원 행",
          "date": "2026-10-15",
          "id": "11f1-c873-327182be-9c28-000000000001",
          "storeTime": "17:34",
          "storeAmount": "-504원",
          "expectedUrl": "https://mcht.paydatakr.com/trx/receipt/T261015431201"
        },
        {
          "key": "pre-approval",
          "name": "배포 전 KPD 승인 행 (09-21 15:50)",
          "date": "2026-09-21",
          "id": "11f1-b588-be3ec3e6-9b8e-000000000001",
          "storeTime": "15:50",
          "storeAmount": "1,004원",
          "expectedUrl": "https://mcht.paydatakr.com/trx/receipt/T260921392573"
        },
        {
          "key": "pre-cancel",
          "name": "배포 전 KPD 취소 행 (09-21 15:51)",
          "date": "2026-09-21",
          "id": "11f1-b588-e02ea965-a149-000000000001",
          "storeTime": "15:51",
          "storeAmount": "-1,004원",
          "expectedUrl": "https://mcht.paydatakr.com/trx/receipt/T260921392573"
        },
        {
          "key": "nonkpd-approval",
          "name": "코페이 승인 행 (10-09 19:54, 6,000원)",
          "date": "2026-10-09",
          "id": "11f1-c3cf-cd9bc380-90b9-000000000001",
          "storeTime": "19:54",
          "storeAmount": "6,000원",
          "expectedUrl": "non-kpd"
        },
        {
          "key": "nonkpd-cancel",
          "name": "코페이 취소 행 (10-09 20:13, -6,000원)",
          "date": "2026-10-09",
          "id": "11f1-c3d2-75ffe8b6-b01b-000000000001",
          "storeTime": "20:13",
          "storeAmount": "-6,000원",
          "expectedUrl": "non-kpd"
        }
      ],
      "apiChecks": [
        {
          "name": "TEST4313-0011 승인 건",
          "id": "11f1-c400-43130011-a001-000000000001",
          "expectedUrl": "https://mcht.paydatakr.com/trx/receipt/T261015431101"
        },
        {
          "name": "TEST4313-0012 승인 건",
          "id": "11f1-c400-43130012-a001-000000000001",
          "expectedUrl": "https://mcht.paydatakr.com/trx/receipt/T261015431201"
        }
      ],
      "filters": []
    }
  ],
  "scenario": "kpd-cancel-receipt"
}
