{
  "issueId": "3680",
  "environment": "dev",
  "generatedAt": "2026-06-25T11:12:00+09:00",
  "sourceResult": "qa-results redacted from tracked output",
  "timings": {
    "issueId": "3680",
    "environment": "dev",
    "generatedAt": "2026-06-25T02:10:43.296Z",
    "exitStatus": 0,
    "timings": [
      {
        "name": "qa:run",
        "startedAt": "2026-06-25T02:09:20.663Z",
        "detail": {
          "issueId": "3680",
          "environment": "dev",
          "exitStatus": 0
        },
        "finishedAt": "2026-06-25T02:10:43.296Z",
        "durationMs": 82633,
        "status": "ok"
      },
      {
        "name": "prepare-results",
        "startedAt": "2026-06-25T02:09:20.664Z",
        "detail": {},
        "finishedAt": "2026-06-25T02:09:20.669Z",
        "durationMs": 5,
        "status": "ok"
      },
      {
        "name": "auth-refresh",
        "startedAt": "2026-06-25T02:09:20.669Z",
        "detail": {},
        "finishedAt": "2026-06-25T02:09:25.700Z",
        "durationMs": 5031,
        "status": "ok"
      },
      {
        "name": "auth-refresh:admin/dev/ADMIN",
        "startedAt": "2026-06-25T02:09:20.670Z",
        "detail": {
          "application": "admin",
          "role": "ADMIN",
          "businessRole": "ADMIN"
        },
        "finishedAt": "2026-06-25T02:09:23.754Z",
        "durationMs": 3084,
        "status": "ok"
      },
      {
        "name": "auth-refresh:admin/dev/TA",
        "startedAt": "2026-06-25T02:09:20.675Z",
        "detail": {
          "application": "admin",
          "role": "TA",
          "businessRole": "TA"
        },
        "finishedAt": "2026-06-25T02:09:23.725Z",
        "durationMs": 3050,
        "status": "ok"
      },
      {
        "name": "auth-refresh:admin/dev/CO",
        "startedAt": "2026-06-25T02:09:23.725Z",
        "detail": {
          "application": "admin",
          "role": "CO",
          "businessRole": "CO",
          "error": "BLOCKED: admin/dev/CO 계정이 대상 환경에서 거부되었습니다. 계정 또는 환경 매핑 확인이 필요합니다."
        },
        "finishedAt": "2026-06-25T02:09:25.699Z",
        "durationMs": 1974,
        "status": "failed"
      },
      {
        "name": "playwright",
        "startedAt": "2026-06-25T02:09:25.700Z",
        "detail": {
          "command": "npx playwright test qa/issues/3680/dev --trace retain-on-failure",
          "exitStatus": 0
        },
        "finishedAt": "2026-06-25T02:10:43.296Z",
        "durationMs": 77596,
        "status": "ok"
      }
    ]
  },
  "summary": {
    "status": "BLOCKED",
    "passed": 2,
    "failed": 0,
    "skipped": 0,
    "blocked": 2,
    "flaky": 0,
    "durationMs": 77066
  },
  "rows": [
    {
      "title": "Auth refresh before Playwright / admin/dev/CO",
      "status": "BLOCKED",
      "statusText": "확인 불가",
      "durationMs": 0,
      "evidence": [],
      "screenshots": [],
      "traces": [],
      "logs": [],
      "files": [],
      "role": "CO",
      "page": "로그인",
      "checklistItem": "QA 시작 전 계정 로그인",
      "action": "admin dev CO 계정으로 로그인 시도",
      "expected": "QA 대상 계정이 로그인되어야 합니다.",
      "actual": "로그인 단계에서 막혀 해당 계정의 QA를 진행하지 못했습니다.",
      "error": "QA 실행 전 재로그인 실패: BLOCKED: admin/dev/CO 계정이 대상 환경에서 거부되었습니다. 계정 또는 환경 매핑 확인이 필요합니다.",
      "failureCategory": "blocked",
      "failureCategoryText": "확인 조건 부족",
      "reproduction": {
        "required": false,
        "reason": "확인 조건이 부족해 본 시나리오를 끝까지 실행하지 못했습니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "3680/dev/merchant-preset-payment-limit-auth.spec.ts / [3680][dev] 가맹점관리 프리셋 수기 결제 제한 금액/링크결제본인인증 적용 QA / [ADMIN] role / 가맹점 관리 / 프리셋 금액 입력, 링크결제본인인증 항목, 가맹점 생성 적용 확인",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 62989,
      "evidence": [
        "artifacts/logs/01-가맹점-관리-ADMIN-preset-payment-limit-auth.md",
        "artifacts/screenshots/01-가맹점-관리-ADMIN-preset-payment-limit-auth.png"
      ],
      "screenshots": [
        "artifacts/screenshots/01-가맹점-관리-ADMIN-preset-payment-limit-auth.png"
      ],
      "traces": [],
      "logs": [
        "artifacts/logs/01-가맹점-관리-ADMIN-preset-payment-limit-auth.md"
      ],
      "files": [],
      "role": "ADMIN",
      "page": "가맹점 관리",
      "checklistItem": "프리셋 설정 금액 입력/저장과 수기결제본인인증·링크결제본인인증 생성 화면 반영 확인",
      "action": "ADMIN 계정으로 가맹점 관리 화면에서 프리셋 설정을 열어 한도 금액에 1,000을 입력/저장하고, 가맹점 생성 화면에서 프리셋 적용 후 수기결제본인인증·링크결제본인인증 선택값 반영을 확인",
      "expected": "프리셋 설정 한도 금액은 쉼표 포함 입력과 천단위 표시/저장 후 유지가 가능해야 하며, 수기결제본인인증·링크결제본인인증 선택값이 가맹점 생성 화면에 반영되어야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "3680/dev/merchant-preset-payment-limit-auth.spec.ts / [3680][dev] 가맹점관리 프리셋 수기 결제 제한 금액/링크결제본인인증 적용 QA / [TA] role / 가맹점 관리 / 프리셋 금액 입력, 링크결제본인인증 항목, 가맹점 생성 적용 확인",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 13497,
      "evidence": [
        "artifacts/logs/02-가맹점-관리-TA-preset-payment-limit-auth.md",
        "artifacts/screenshots/02-가맹점-관리-TA-preset-payment-limit-auth.png"
      ],
      "screenshots": [
        "artifacts/screenshots/02-가맹점-관리-TA-preset-payment-limit-auth.png"
      ],
      "traces": [],
      "logs": [
        "artifacts/logs/02-가맹점-관리-TA-preset-payment-limit-auth.md"
      ],
      "files": [],
      "role": "TA",
      "page": "가맹점 관리",
      "checklistItem": "프리셋 설정 금액 입력/저장과 수기결제본인인증·링크결제본인인증 생성 화면 반영 확인",
      "action": "TA 계정으로 가맹점 관리 화면에서 프리셋 설정을 열어 한도 금액에 1,000을 입력/저장하고, 가맹점 생성 화면에서 프리셋 적용 후 수기결제본인인증·링크결제본인인증 선택값 반영을 확인",
      "expected": "프리셋 설정 한도 금액은 쉼표 포함 입력과 천단위 표시/저장 후 유지가 가능해야 하며, 수기결제본인인증·링크결제본인인증 선택값이 가맹점 생성 화면에 반영되어야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "3680/dev/merchant-preset-payment-limit-auth.spec.ts / [3680][dev] 가맹점관리 프리셋 수기 결제 제한 금액/링크결제본인인증 적용 QA / [CO] role / 가맹점 관리 / 프리셋 금액 입력, 링크결제본인인증 항목, 가맹점 생성 적용 확인",
      "status": "BLOCKED",
      "statusText": "확인 불가",
      "durationMs": 0,
      "evidence": [],
      "screenshots": [],
      "traces": [],
      "logs": [],
      "files": [],
      "role": "CO",
      "page": "가맹점 관리",
      "checklistItem": "프리셋 설정 금액 입력/저장과 수기결제본인인증·링크결제본인인증 생성 화면 반영 확인",
      "action": "CO 계정으로 가맹점 관리 화면에서 프리셋 설정을 열어 한도 금액에 1,000을 입력/저장하고, 가맹점 생성 화면에서 프리셋 적용 후 수기결제본인인증·링크결제본인인증 선택값 반영을 확인",
      "expected": "프리셋 설정 한도 금액은 쉼표 포함 입력과 천단위 표시/저장 후 유지가 가능해야 하며, 수기결제본인인증·링크결제본인인증 선택값이 가맹점 생성 화면에 반영되어야 합니다.",
      "actual": "확인을 끝내지 못했습니다: skip: QA 실행 전 CO role 재로그인에 실패해 본 QA에서는 해당 role을 BLOCKED로 분리합니다.",
      "error": "skip: QA 실행 전 CO role 재로그인에 실패해 본 QA에서는 해당 role을 BLOCKED로 분리합니다.",
      "failureCategory": "blocked",
      "failureCategoryText": "확인 조건 부족",
      "reproduction": {
        "required": false,
        "reason": "확인 조건이 부족해 본 시나리오를 끝까지 실행하지 못했습니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    }
  ]
}
