{
  "issueId": "4019",
  "environment": "dev",
  "generatedAt": "2026-08-24T16:52:00+09:00",
  "sourceResult": "qa-results redacted from tracked output",
  "timings": {
    "issueId": "4019",
    "environment": "dev",
    "generatedAt": "2026-08-24T07:42:10.811Z",
    "exitStatus": 1,
    "timings": [
      {
        "name": "qa:run",
        "startedAt": "2026-08-24T07:41:14.058Z",
        "detail": {
          "issueId": "4019",
          "environment": "dev",
          "exitStatus": 1
        },
        "finishedAt": "2026-08-24T07:42:10.811Z",
        "durationMs": 56753,
        "status": "failed"
      },
      {
        "name": "prepare-results",
        "startedAt": "2026-08-24T07:41:14.058Z",
        "detail": {},
        "finishedAt": "2026-08-24T07:41:14.077Z",
        "durationMs": 19,
        "status": "ok"
      },
      {
        "name": "auth-refresh",
        "startedAt": "2026-08-24T07:41:14.077Z",
        "detail": {},
        "finishedAt": "2026-08-24T07:41:30.013Z",
        "durationMs": 15936,
        "status": "ok"
      },
      {
        "name": "auth-refresh:store/dev/CO",
        "startedAt": "2026-08-24T07:41:14.078Z",
        "detail": {
          "application": "store",
          "role": "CO",
          "businessRole": "CO"
        },
        "finishedAt": "2026-08-24T07:41:22.203Z",
        "durationMs": 8125,
        "status": "ok"
      },
      {
        "name": "auth-refresh:store/dev/BO",
        "startedAt": "2026-08-24T07:41:14.082Z",
        "detail": {
          "application": "store",
          "role": "BO",
          "businessRole": "BO"
        },
        "finishedAt": "2026-08-24T07:41:22.202Z",
        "durationMs": 8120,
        "status": "ok"
      },
      {
        "name": "auth-refresh:store/dev/ISSUE_4019_VE",
        "startedAt": "2026-08-24T07:41:22.202Z",
        "detail": {
          "application": "store",
          "role": "ISSUE_4019_VE",
          "businessRole": "VE"
        },
        "finishedAt": "2026-08-24T07:41:30.013Z",
        "durationMs": 7811,
        "status": "ok"
      },
      {
        "name": "playwright",
        "startedAt": "2026-08-24T07:41:30.013Z",
        "detail": {
          "command": "npx playwright test qa/issues/4019/dev --trace retain-on-failure",
          "exitStatus": 1
        },
        "finishedAt": "2026-08-24T07:42:10.811Z",
        "durationMs": 40798,
        "status": "failed"
      }
    ]
  },
  "summary": {
    "status": "FAIL",
    "passed": 2,
    "failed": 4,
    "skipped": 0,
    "blocked": 0,
    "flaky": 0,
    "durationMs": 39982
  },
  "rows": [
    {
      "title": "4019/dev/manual-payment-error-source.spec.ts / [4019][dev] [QA] 수기결제 실패 메시지 PG 구분 검증 / [CO] role / 스토어 수기결제 / 수기 결제 시 주민번호 또는 카드 비밀번호, 카드 유효기간을 잘못 입력한 뒤 결제를 시도하고 표시되는 에러 메시지에 (PG)가 표시되는지 확인",
      "status": "FAIL",
      "statusText": "실패",
      "durationMs": 3794,
      "evidence": [
        "artifacts/logs/01-스토어-수기결제-CO-pg-error-prefix.md",
        "artifacts/screenshots/01-스토어-수기결제-CO-pg-error-prefix.png",
        "artifacts/traces/01-스토어-수기결제-CO-pg-error-prefix-trace.zip",
        "artifacts/logs/02-error-context.md"
      ],
      "screenshots": [
        "artifacts/screenshots/01-스토어-수기결제-CO-pg-error-prefix.png"
      ],
      "traces": [
        "artifacts/traces/01-스토어-수기결제-CO-pg-error-prefix-trace.zip"
      ],
      "logs": [
        "artifacts/logs/01-스토어-수기결제-CO-pg-error-prefix.md",
        "artifacts/logs/02-error-context.md"
      ],
      "files": [],
      "role": "CO",
      "page": "스토어 수기결제",
      "checklistItem": "수기 결제 시 주민번호 또는 카드 비밀번호, 카드 유효기간을 잘못 입력한 뒤 결제를 시도하고 표시되는 에러 메시지에 (PG)가 표시되는지 확인",
      "action": "CO 계정으로 스토어 수기결제 항목을 확인",
      "expected": "CO 계정에서 스토어 수기결제 확인 결과가 체크리스트와 일치해야 합니다.",
      "actual": "기대한 동작과 달랐습니다: Error: CO 계정에 VE 수기결제 권한 접근 제한 안내가 표시되면 안 됩니다.  expect(received).toBe(expected) // Object.is equality",
      "error": "Error: CO 계정에 VE 수기결제 권한 접근 제한 안내가 표시되면 안 됩니다.  expect(received).toBe(expected) // Object.is equality",
      "failureCategory": "assertion",
      "failureCategoryText": "기대 결과와 다름",
      "reproduction": {
        "required": true,
        "reason": "화면에서 확인한 값이 체크리스트의 기대 결과와 달랐습니다.",
        "debugCommand": "npm run qa:debug -- --issue \"4019\" --env \"dev\" --role \"CO\" --case \"수기 결제 시 주민번호 또는 카드 비밀번호, 카드 유효기간을 잘못 입력한 뒤 결제를 시도하고 표시되는 에러 메시지에 (PG)가 표시되는지 확인\"",
        "notifyMessage": "[QA 확인 요청] CO / 스토어 수기결제 / 수기 결제 시 주민번호 또는 카드 비밀번호, 카드 유효기간을 잘못 입력한 뒤 결제를 시도하고 표시되는 에러 메시지에 (PG)가 표시되는지 확인: 기대 결과와 다름 상태입니다. npm run qa:debug -- --issue \"4019\" --env \"dev\" --role \"CO\" --case \"수기 결제 시 주민번호 또는 카드 비밀번호, 카드 유효기간을 잘못 입력한 뒤 결제를 시도하고 표시되는 에러 메시지에 (PG)가 표시되는지 확인\" 로 동일 계정과 항목을 다시 열어 확인하세요.",
        "manualSteps": [
          "작업자가 위 명령을 실행하면 대상 계정의 로그인 세션을 새로 만든 뒤 브라우저가 열립니다.",
          "브라우저에서 자동화가 멈춘 화면, 현재 URL, 화면 문구, 다운로드 알림 또는 문서보관함 상태를 확인합니다.",
          "확인한 화면과 필요한 조치 내용을 Redmine/GitHub QA 이슈에 남깁니다."
        ]
      }
    },
    {
      "title": "4019/dev/manual-payment-error-source.spec.ts / [4019][dev] [QA] 수기결제 실패 메시지 PG 구분 검증 / [CO] role / 스토어 수기결제 / 수기 결제 1회 한도 이상 금액으로 결제 시도 후 에러 메시지에 (PG)가 표시되지 않는지 확인",
      "status": "FAIL",
      "statusText": "실패",
      "durationMs": 6734,
      "evidence": [
        "artifacts/logs/03-스토어-수기결제-CO-limit-error-without-pg-prefix.md",
        "artifacts/screenshots/02-스토어-수기결제-CO-limit-error-without-pg-prefix.png",
        "artifacts/traces/02-스토어-수기결제-CO-limit-error-without-pg-prefix-trace.zip",
        "artifacts/logs/04-error-context.md"
      ],
      "screenshots": [
        "artifacts/screenshots/02-스토어-수기결제-CO-limit-error-without-pg-prefix.png"
      ],
      "traces": [
        "artifacts/traces/02-스토어-수기결제-CO-limit-error-without-pg-prefix-trace.zip"
      ],
      "logs": [
        "artifacts/logs/03-스토어-수기결제-CO-limit-error-without-pg-prefix.md",
        "artifacts/logs/04-error-context.md"
      ],
      "files": [],
      "role": "CO",
      "page": "스토어 수기결제",
      "checklistItem": "수기 결제 1회 한도 이상 금액으로 결제 시도 후 에러 메시지에 (PG)가 표시되지 않는지 확인",
      "action": "CO 계정으로 스토어 수기결제 항목을 확인",
      "expected": "CO 계정에서 스토어 수기결제 확인 결과가 체크리스트와 일치해야 합니다.",
      "actual": "기대한 동작과 달랐습니다: Error: CO 계정에 VE 수기결제 권한 접근 제한 안내가 표시되면 안 됩니다.  expect(received).toBe(expected) // Object.is equality",
      "error": "Error: CO 계정에 VE 수기결제 권한 접근 제한 안내가 표시되면 안 됩니다.  expect(received).toBe(expected) // Object.is equality",
      "failureCategory": "assertion",
      "failureCategoryText": "기대 결과와 다름",
      "reproduction": {
        "required": true,
        "reason": "화면에서 확인한 값이 체크리스트의 기대 결과와 달랐습니다.",
        "debugCommand": "npm run qa:debug -- --issue \"4019\" --env \"dev\" --role \"CO\" --case \"수기 결제 1회 한도 이상 금액으로 결제 시도 후 에러 메시지에 (PG)가 표시되지 않는지 확인\"",
        "notifyMessage": "[QA 확인 요청] CO / 스토어 수기결제 / 수기 결제 1회 한도 이상 금액으로 결제 시도 후 에러 메시지에 (PG)가 표시되지 않는지 확인: 기대 결과와 다름 상태입니다. npm run qa:debug -- --issue \"4019\" --env \"dev\" --role \"CO\" --case \"수기 결제 1회 한도 이상 금액으로 결제 시도 후 에러 메시지에 (PG)가 표시되지 않는지 확인\" 로 동일 계정과 항목을 다시 열어 확인하세요.",
        "manualSteps": [
          "작업자가 위 명령을 실행하면 대상 계정의 로그인 세션을 새로 만든 뒤 브라우저가 열립니다.",
          "브라우저에서 자동화가 멈춘 화면, 현재 URL, 화면 문구, 다운로드 알림 또는 문서보관함 상태를 확인합니다.",
          "확인한 화면과 필요한 조치 내용을 Redmine/GitHub QA 이슈에 남깁니다."
        ]
      }
    },
    {
      "title": "4019/dev/manual-payment-error-source.spec.ts / [4019][dev] [QA] 수기결제 실패 메시지 PG 구분 검증 / [BO] role / 스토어 수기결제 / 수기 결제 시 주민번호 또는 카드 비밀번호, 카드 유효기간을 잘못 입력한 뒤 결제를 시도하고 표시되는 에러 메시지에 (PG)가 표시되는지 확인",
      "status": "FAIL",
      "statusText": "실패",
      "durationMs": 3606,
      "evidence": [
        "artifacts/logs/05-스토어-수기결제-BO-pg-error-prefix.md",
        "artifacts/screenshots/03-스토어-수기결제-BO-pg-error-prefix.png",
        "artifacts/traces/03-스토어-수기결제-BO-pg-error-prefix-trace.zip",
        "artifacts/logs/06-error-context.md"
      ],
      "screenshots": [
        "artifacts/screenshots/03-스토어-수기결제-BO-pg-error-prefix.png"
      ],
      "traces": [
        "artifacts/traces/03-스토어-수기결제-BO-pg-error-prefix-trace.zip"
      ],
      "logs": [
        "artifacts/logs/05-스토어-수기결제-BO-pg-error-prefix.md",
        "artifacts/logs/06-error-context.md"
      ],
      "files": [],
      "role": "BO",
      "page": "스토어 수기결제",
      "checklistItem": "수기 결제 시 주민번호 또는 카드 비밀번호, 카드 유효기간을 잘못 입력한 뒤 결제를 시도하고 표시되는 에러 메시지에 (PG)가 표시되는지 확인",
      "action": "BO 계정으로 스토어 수기결제 항목을 확인",
      "expected": "BO 계정에서 스토어 수기결제 확인 결과가 체크리스트와 일치해야 합니다.",
      "actual": "기대한 동작과 달랐습니다: Error: BO 계정에 VE 수기결제 권한 접근 제한 안내가 표시되면 안 됩니다.  expect(received).toBe(expected) // Object.is equality",
      "error": "Error: BO 계정에 VE 수기결제 권한 접근 제한 안내가 표시되면 안 됩니다.  expect(received).toBe(expected) // Object.is equality",
      "failureCategory": "assertion",
      "failureCategoryText": "기대 결과와 다름",
      "reproduction": {
        "required": true,
        "reason": "화면에서 확인한 값이 체크리스트의 기대 결과와 달랐습니다.",
        "debugCommand": "npm run qa:debug -- --issue \"4019\" --env \"dev\" --role \"BO\" --case \"수기 결제 시 주민번호 또는 카드 비밀번호, 카드 유효기간을 잘못 입력한 뒤 결제를 시도하고 표시되는 에러 메시지에 (PG)가 표시되는지 확인\"",
        "notifyMessage": "[QA 확인 요청] BO / 스토어 수기결제 / 수기 결제 시 주민번호 또는 카드 비밀번호, 카드 유효기간을 잘못 입력한 뒤 결제를 시도하고 표시되는 에러 메시지에 (PG)가 표시되는지 확인: 기대 결과와 다름 상태입니다. npm run qa:debug -- --issue \"4019\" --env \"dev\" --role \"BO\" --case \"수기 결제 시 주민번호 또는 카드 비밀번호, 카드 유효기간을 잘못 입력한 뒤 결제를 시도하고 표시되는 에러 메시지에 (PG)가 표시되는지 확인\" 로 동일 계정과 항목을 다시 열어 확인하세요.",
        "manualSteps": [
          "작업자가 위 명령을 실행하면 대상 계정의 로그인 세션을 새로 만든 뒤 브라우저가 열립니다.",
          "브라우저에서 자동화가 멈춘 화면, 현재 URL, 화면 문구, 다운로드 알림 또는 문서보관함 상태를 확인합니다.",
          "확인한 화면과 필요한 조치 내용을 Redmine/GitHub QA 이슈에 남깁니다."
        ]
      }
    },
    {
      "title": "4019/dev/manual-payment-error-source.spec.ts / [4019][dev] [QA] 수기결제 실패 메시지 PG 구분 검증 / [BO] role / 스토어 수기결제 / 수기 결제 1회 한도 이상 금액으로 결제 시도 후 에러 메시지에 (PG)가 표시되지 않는지 확인",
      "status": "FAIL",
      "statusText": "실패",
      "durationMs": 7659,
      "evidence": [
        "artifacts/logs/07-스토어-수기결제-BO-limit-error-without-pg-prefix.md",
        "artifacts/screenshots/04-스토어-수기결제-BO-limit-error-without-pg-prefix.png",
        "artifacts/traces/04-스토어-수기결제-BO-limit-error-without-pg-prefix-trace.zip",
        "artifacts/logs/08-error-context.md"
      ],
      "screenshots": [
        "artifacts/screenshots/04-스토어-수기결제-BO-limit-error-without-pg-prefix.png"
      ],
      "traces": [
        "artifacts/traces/04-스토어-수기결제-BO-limit-error-without-pg-prefix-trace.zip"
      ],
      "logs": [
        "artifacts/logs/07-스토어-수기결제-BO-limit-error-without-pg-prefix.md",
        "artifacts/logs/08-error-context.md"
      ],
      "files": [],
      "role": "BO",
      "page": "스토어 수기결제",
      "checklistItem": "수기 결제 1회 한도 이상 금액으로 결제 시도 후 에러 메시지에 (PG)가 표시되지 않는지 확인",
      "action": "BO 계정으로 스토어 수기결제 항목을 확인",
      "expected": "BO 계정에서 스토어 수기결제 확인 결과가 체크리스트와 일치해야 합니다.",
      "actual": "기대한 동작과 달랐습니다: Error: BO 계정에 VE 수기결제 권한 접근 제한 안내가 표시되면 안 됩니다.  expect(received).toBe(expected) // Object.is equality",
      "error": "Error: BO 계정에 VE 수기결제 권한 접근 제한 안내가 표시되면 안 됩니다.  expect(received).toBe(expected) // Object.is equality",
      "failureCategory": "assertion",
      "failureCategoryText": "기대 결과와 다름",
      "reproduction": {
        "required": true,
        "reason": "화면에서 확인한 값이 체크리스트의 기대 결과와 달랐습니다.",
        "debugCommand": "npm run qa:debug -- --issue \"4019\" --env \"dev\" --role \"BO\" --case \"수기 결제 1회 한도 이상 금액으로 결제 시도 후 에러 메시지에 (PG)가 표시되지 않는지 확인\"",
        "notifyMessage": "[QA 확인 요청] BO / 스토어 수기결제 / 수기 결제 1회 한도 이상 금액으로 결제 시도 후 에러 메시지에 (PG)가 표시되지 않는지 확인: 기대 결과와 다름 상태입니다. npm run qa:debug -- --issue \"4019\" --env \"dev\" --role \"BO\" --case \"수기 결제 1회 한도 이상 금액으로 결제 시도 후 에러 메시지에 (PG)가 표시되지 않는지 확인\" 로 동일 계정과 항목을 다시 열어 확인하세요.",
        "manualSteps": [
          "작업자가 위 명령을 실행하면 대상 계정의 로그인 세션을 새로 만든 뒤 브라우저가 열립니다.",
          "브라우저에서 자동화가 멈춘 화면, 현재 URL, 화면 문구, 다운로드 알림 또는 문서보관함 상태를 확인합니다.",
          "확인한 화면과 필요한 조치 내용을 Redmine/GitHub QA 이슈에 남깁니다."
        ]
      }
    },
    {
      "title": "4019/dev/manual-payment-error-source.spec.ts / [4019][dev] [QA] 수기결제 실패 메시지 PG 구분 검증 / [VE] role / 스토어 수기결제 / 수기 결제 시 주민번호 또는 카드 비밀번호, 카드 유효기간을 잘못 입력한 뒤 결제를 시도하고 표시되는 에러 메시지에 (PG)가 표시되는지 확인",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 8135,
      "evidence": [
        "artifacts/logs/09-스토어-수기결제-VE-pg-error-prefix.md",
        "artifacts/screenshots/05-스토어-수기결제-VE-pg-error-prefix.png"
      ],
      "screenshots": [
        "artifacts/screenshots/05-스토어-수기결제-VE-pg-error-prefix.png"
      ],
      "traces": [],
      "logs": [
        "artifacts/logs/09-스토어-수기결제-VE-pg-error-prefix.md"
      ],
      "files": [],
      "role": "VE",
      "page": "스토어 수기결제",
      "checklistItem": "수기 결제 시 주민번호 또는 카드 비밀번호, 카드 유효기간을 잘못 입력한 뒤 결제를 시도하고 표시되는 에러 메시지에 (PG)가 표시되는지 확인",
      "action": "VE 계정으로 스토어 수기결제 항목을 확인",
      "expected": "VE 계정에서 스토어 수기결제 확인 결과가 체크리스트와 일치해야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4019/dev/manual-payment-error-source.spec.ts / [4019][dev] [QA] 수기결제 실패 메시지 PG 구분 검증 / [VE] role / 스토어 수기결제 / 수기 결제 1회 한도 이상 금액으로 결제 시도 후 에러 메시지에 (PG)가 표시되지 않는지 확인",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 7602,
      "evidence": [
        "artifacts/logs/10-스토어-수기결제-VE-limit-error-without-pg-prefix.md",
        "artifacts/screenshots/06-스토어-수기결제-VE-limit-error-without-pg-prefix.png"
      ],
      "screenshots": [
        "artifacts/screenshots/06-스토어-수기결제-VE-limit-error-without-pg-prefix.png"
      ],
      "traces": [],
      "logs": [
        "artifacts/logs/10-스토어-수기결제-VE-limit-error-without-pg-prefix.md"
      ],
      "files": [],
      "role": "VE",
      "page": "스토어 수기결제",
      "checklistItem": "수기 결제 1회 한도 이상 금액으로 결제 시도 후 에러 메시지에 (PG)가 표시되지 않는지 확인",
      "action": "VE 계정으로 스토어 수기결제 항목을 확인",
      "expected": "VE 계정에서 스토어 수기결제 확인 결과가 체크리스트와 일치해야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    }
  ]
}
