{
  "issueId": "3315",
  "environment": "dev",
  "generatedAt": "2026-05-22T11:44:32+09:00",
  "sourceResult": "qa-results redacted from tracked output",
  "timings": {
    "issueId": "3315",
    "environment": "dev",
    "generatedAt": "2026-05-22T02:44:12.762Z",
    "exitStatus": 0,
    "timings": [
      {
        "name": "qa:run",
        "startedAt": "2026-05-22T02:42:59.668Z",
        "detail": {
          "issueId": "3315",
          "environment": "dev",
          "exitStatus": 0
        },
        "finishedAt": "2026-05-22T02:44:12.762Z",
        "durationMs": 73094,
        "status": "ok"
      },
      {
        "name": "prepare-results",
        "startedAt": "2026-05-22T02:42:59.669Z",
        "detail": {},
        "finishedAt": "2026-05-22T02:42:59.675Z",
        "durationMs": 6,
        "status": "ok"
      },
      {
        "name": "auth-refresh",
        "startedAt": "2026-05-22T02:42:59.675Z",
        "detail": {},
        "finishedAt": "2026-05-22T02:43:02.667Z",
        "durationMs": 2992,
        "status": "ok"
      },
      {
        "name": "auth-refresh:admin/dev/ADMIN",
        "startedAt": "2026-05-22T02:42:59.676Z",
        "detail": {
          "application": "admin",
          "role": "ADMIN"
        },
        "finishedAt": "2026-05-22T02:43:02.667Z",
        "durationMs": 2991,
        "status": "ok"
      },
      {
        "name": "playwright",
        "startedAt": "2026-05-22T02:43:02.667Z",
        "detail": {
          "command": "npx playwright test qa/issues/3315/dev",
          "exitStatus": 0
        },
        "finishedAt": "2026-05-22T02:44:12.762Z",
        "durationMs": 70095,
        "status": "ok"
      }
    ]
  },
  "summary": {
    "status": "BLOCKED",
    "passed": 6,
    "failed": 0,
    "skipped": 0,
    "blocked": 1,
    "flaky": 0,
    "durationMs": 69643
  },
  "rows": [
    {
      "title": "3315/dev/receipt-v2-payment-id.spec.ts / [3315][dev] [QA] 영수증 조회 V2 API와 PG별 영수증 URL 통합 검증 / [VE] role / 스토어 수기결제 / 수기결제 성공 후 화면 또는 응답 처리 흐름에서 거래 ID를 사용한 후속 동작이 정상 진행되는지 확인",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 17765,
      "evidence": [
        "artifacts/screenshots/01-스토어-수기결제-VE-payment-success.png",
        "artifacts/logs/01-스토어-수기결제-VE-payment-success.md"
      ],
      "screenshots": [
        "artifacts/screenshots/01-스토어-수기결제-VE-payment-success.png"
      ],
      "traces": [],
      "logs": [
        "artifacts/logs/01-스토어-수기결제-VE-payment-success.md"
      ],
      "files": [],
      "role": "VE",
      "page": "스토어 수기결제",
      "checklistItem": "수기결제 성공 후 화면 또는 응답 처리 흐름에서 거래 ID를 사용한 후속 동작이 정상 진행되는지 확인",
      "action": "VE 계정으로 스토어 수기결제를 완료하고 응답의 거래 ID와 완료 화면을 확인",
      "expected": "수기결제 성공 후 결제 완료 화면과 후속 동작에 사용할 거래 ID가 확인되어야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "3315/dev/receipt-v2-payment-id.spec.ts / [3315][dev] [QA] 영수증 조회 V2 API와 PG별 영수증 URL 통합 검증 / [VE] role / 스토어 수기결제 / 결제 실패 시 거래 ID가 없는 상태에서도 실패 메시지와 실패 처리 화면이 정상 표시되는지 확인",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 2561,
      "evidence": [
        "artifacts/screenshots/02-스토어-수기결제-VE-payment-failure.png",
        "artifacts/logs/02-스토어-수기결제-VE-payment-failure.md"
      ],
      "screenshots": [
        "artifacts/screenshots/02-스토어-수기결제-VE-payment-failure.png"
      ],
      "traces": [],
      "logs": [
        "artifacts/logs/02-스토어-수기결제-VE-payment-failure.md"
      ],
      "files": [],
      "role": "VE",
      "page": "스토어 수기결제",
      "checklistItem": "결제 실패 시 거래 ID가 없는 상태에서도 실패 메시지와 실패 처리 화면이 정상 표시되는지 확인",
      "action": "VE 계정으로 결제 실패 응답에서 거래 ID 없이도 실패 메시지가 표시되는지 확인",
      "expected": "결제 실패 시 거래 ID가 없어도 실패 메시지와 실패 처리 화면이 정상 표시되어야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "3315/dev/receipt-v2-payment-id.spec.ts / [3315][dev] [QA] 영수증 조회 V2 API와 PG별 영수증 URL 통합 검증 / [VE] role / 스토어 거래내역 / 스토어 거래내역에서 영수증 버튼 클릭 시 새 창으로 PG 영수증이 정상 표시되는지 확인",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 3040,
      "evidence": [
        "artifacts/screenshots/03-스토어-거래내역-VE-receipt-popup.png",
        "artifacts/logs/03-스토어-거래내역-VE-receipt-popup.md"
      ],
      "screenshots": [
        "artifacts/screenshots/03-스토어-거래내역-VE-receipt-popup.png"
      ],
      "traces": [],
      "logs": [
        "artifacts/logs/03-스토어-거래내역-VE-receipt-popup.md"
      ],
      "files": [],
      "role": "VE",
      "page": "스토어 거래내역",
      "checklistItem": "스토어 거래내역에서 영수증 버튼 클릭 시 새 창으로 PG 영수증이 정상 표시되는지 확인",
      "action": "VE 계정으로 스토어 거래내역에서 영수증 버튼을 누르고 새 창 표시 여부를 확인",
      "expected": "스토어 거래내역 영수증 버튼 클릭 시 PG 영수증이 빈 화면이 아닌 새 창으로 열려야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "3315/dev/receipt-v2-payment-id.spec.ts / [3315][dev] [QA] 영수증 조회 V2 API와 PG별 영수증 URL 통합 검증 / [ADMIN] role / 운영자 거래내역 / 운영자 거래 목록 또는 거래 상세에서 영수증 버튼 클릭 시 새 창으로 PG 영수증이 정상 표시되는지 확인",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 9256,
      "evidence": [
        "artifacts/screenshots/04-운영자-거래내역-ADMIN-receipt-popup.png",
        "artifacts/logs/04-운영자-거래내역-ADMIN-receipt-popup.md"
      ],
      "screenshots": [
        "artifacts/screenshots/04-운영자-거래내역-ADMIN-receipt-popup.png"
      ],
      "traces": [],
      "logs": [
        "artifacts/logs/04-운영자-거래내역-ADMIN-receipt-popup.md"
      ],
      "files": [],
      "role": "ADMIN",
      "page": "운영자 거래내역",
      "checklistItem": "운영자 거래 목록 또는 거래 상세에서 영수증 버튼 클릭 시 새 창으로 PG 영수증이 정상 표시되는지 확인",
      "action": "ADMIN 계정으로 운영자 거래내역에서 승인번호 또는 영수증 버튼을 누르고 새 창 표시 여부를 확인",
      "expected": "운영자 거래 목록 또는 상세의 영수증 동작이 PG 영수증 새 창으로 연결되어야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "3315/dev/receipt-v2-payment-id.spec.ts / [3315][dev] [QA] 영수증 조회 V2 API와 PG별 영수증 URL 통합 검증 / [ADMIN] role / 운영자 거래내역 / 여러 PG 거래에서 영수증 버튼을 눌렀을 때 각 PG에 맞는 영수증 화면이 열리는지 확인",
      "status": "BLOCKED",
      "statusText": "확인 불가",
      "durationMs": 8587,
      "evidence": [
        "artifacts/logs/05-운영자-거래내역-ADMIN-multi-pg-blocked.md",
        "artifacts/screenshots/05-운영자-거래내역-ADMIN-multi-pg-blocked.png"
      ],
      "screenshots": [
        "artifacts/screenshots/05-운영자-거래내역-ADMIN-multi-pg-blocked.png"
      ],
      "traces": [],
      "logs": [
        "artifacts/logs/05-운영자-거래내역-ADMIN-multi-pg-blocked.md"
      ],
      "files": [],
      "role": "ADMIN",
      "page": "운영자 거래내역",
      "checklistItem": "여러 PG 거래에서 영수증 버튼을 눌렀을 때 각 PG에 맞는 영수증 화면이 열리는지 확인",
      "action": "ADMIN 계정으로 서로 다른 PG 거래의 영수증을 열어 PG별 URL 연결 여부를 확인",
      "expected": "여러 PG 거래에서 각 PG에 맞는 영수증 화면이 열려야 합니다.",
      "actual": "확인을 끝내지 못했습니다: skip: BLOCKED: 현재 조회 범위에서 생성 거래와 다른 PG의 영수증 확인 가능 거래를 찾지 못했습니다.",
      "error": "skip: BLOCKED: 현재 조회 범위에서 생성 거래와 다른 PG의 영수증 확인 가능 거래를 찾지 못했습니다.",
      "failureCategory": "blocked",
      "failureCategoryText": "확인 조건 부족",
      "reproduction": {
        "required": false,
        "reason": "확인 조건이 부족해 본 시나리오를 끝까지 실행하지 못했습니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "3315/dev/receipt-v2-payment-id.spec.ts / [3315][dev] [QA] 영수증 조회 V2 API와 PG별 영수증 URL 통합 검증 / [ADMIN] role / 운영자 거래내역 / 영수증을 열 수 없는 거래에서는 화면에 실패 메시지가 표시되고 빈 새 창이나 깨진 화면으로 이동하지 않는지 확인",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 12329,
      "evidence": [
        "artifacts/screenshots/06-운영자-거래내역-ADMIN-receipt-failure.png",
        "artifacts/logs/06-운영자-거래내역-ADMIN-receipt-failure.md"
      ],
      "screenshots": [
        "artifacts/screenshots/06-운영자-거래내역-ADMIN-receipt-failure.png"
      ],
      "traces": [],
      "logs": [
        "artifacts/logs/06-운영자-거래내역-ADMIN-receipt-failure.md"
      ],
      "files": [],
      "role": "ADMIN",
      "page": "운영자 거래내역",
      "checklistItem": "영수증을 열 수 없는 거래에서는 화면에 실패 메시지가 표시되고 빈 새 창이나 깨진 화면으로 이동하지 않는지 확인",
      "action": "ADMIN 계정으로 영수증 조회 실패 응답에서 화면 메시지와 새 창 차단 여부를 확인",
      "expected": "영수증을 열 수 없는 거래 또는 실패 응답에서는 화면 실패 메시지가 표시되고 빈 새 창으로 이동하지 않아야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "3315/dev/receipt-v2-payment-id.spec.ts / [3315][dev] [QA] 영수증 조회 V2 API와 PG별 영수증 URL 통합 검증 / [ADMIN] role / 운영자 거래내역 / 검증 거래 PG 취소 완료",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 15571,
      "evidence": [
        "artifacts/screenshots/07-운영자-거래내역-ADMIN-pg-cancel.png",
        "artifacts/logs/07-운영자-거래내역-ADMIN-pg-cancel.md"
      ],
      "screenshots": [
        "artifacts/screenshots/07-운영자-거래내역-ADMIN-pg-cancel.png"
      ],
      "traces": [],
      "logs": [
        "artifacts/logs/07-운영자-거래내역-ADMIN-pg-cancel.md"
      ],
      "files": [],
      "role": "ADMIN",
      "page": "운영자 거래내역",
      "checklistItem": "검증 거래 PG 취소 완료",
      "action": "ADMIN 계정으로 검증에 사용한 수기결제 거래를 PG 취소하고 원거래 상태를 확인",
      "expected": "QA 확인 후 생성된 수기결제 거래는 PG 취소 상태로 되돌아가야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    }
  ]
}
