{
  "issueId": "3823",
  "environment": "dev",
  "generatedAt": "2026-07-29T17:08:08+09:00",
  "sourceResult": "qa-results redacted from tracked output",
  "timings": {
    "issueId": "3823",
    "environment": "dev",
    "generatedAt": "2026-07-29T07:53:23.506Z",
    "exitStatus": 0,
    "timings": [
      {
        "name": "qa:run",
        "startedAt": "2026-07-29T07:49:30.350Z",
        "detail": {
          "issueId": "3823",
          "environment": "dev",
          "exitStatus": 0
        },
        "finishedAt": "2026-07-29T07:53:23.506Z",
        "durationMs": 233156,
        "status": "ok"
      },
      {
        "name": "prepare-results",
        "startedAt": "2026-07-29T07:49:30.351Z",
        "detail": {},
        "finishedAt": "2026-07-29T07:49:30.358Z",
        "durationMs": 7,
        "status": "ok"
      },
      {
        "name": "auth-refresh",
        "startedAt": "2026-07-29T07:49:30.358Z",
        "detail": {},
        "finishedAt": "2026-07-29T07:49:38.192Z",
        "durationMs": 7834,
        "status": "ok"
      },
      {
        "name": "auth-refresh:admin/dev/ADMIN",
        "startedAt": "2026-07-29T07:49:30.359Z",
        "detail": {
          "application": "admin",
          "role": "ADMIN",
          "businessRole": "ADMIN"
        },
        "finishedAt": "2026-07-29T07:49:38.192Z",
        "durationMs": 7833,
        "status": "ok"
      },
      {
        "name": "playwright",
        "startedAt": "2026-07-29T07:49:38.192Z",
        "detail": {
          "command": "npx playwright test qa/issues/3823/dev --trace retain-on-failure",
          "exitStatus": 0
        },
        "finishedAt": "2026-07-29T07:53:23.506Z",
        "durationMs": 225314,
        "status": "ok"
      }
    ]
  },
  "summary": {
    "status": "PASS",
    "passed": 19,
    "failed": 0,
    "skipped": 0,
    "blocked": 0,
    "flaky": 0,
    "durationMs": 224843
  },
  "rows": [
    {
      "title": "3823/dev/fail2ban-policy.spec.ts / [3823][dev] Fail2ban 정책 설정·차단·화이트리스트 검증 / [ADMIN] role / 저장 후 설정값 정상 표시",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 6875,
      "evidence": [
        "artifacts/screenshots/01-부서-설정-관리-ADMIN-saved-policy.png",
        "artifacts/logs/01-부서-설정-관리-ADMIN-saved-policy.md"
      ],
      "screenshots": [
        "artifacts/screenshots/01-부서-설정-관리-ADMIN-saved-policy.png"
      ],
      "traces": [],
      "logs": [
        "artifacts/logs/01-부서-설정-관리-ADMIN-saved-policy.md"
      ],
      "files": [],
      "role": "ADMIN",
      "page": "[ADMIN] role",
      "checklistItem": "저장 후 설정값 정상 표시",
      "action": "ADMIN 계정으로 [ADMIN] role 항목을 확인",
      "expected": "ADMIN 계정에서 [ADMIN] role 확인 결과가 체크리스트와 일치해야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "3823/dev/fail2ban-policy.spec.ts / [3823][dev] Fail2ban 정책 설정·차단·화이트리스트 검증 / [ADMIN] role / 정책 수정 가능",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 1241,
      "evidence": [
        "artifacts/logs/02-부서-설정-관리-ADMIN-policy-edit.md"
      ],
      "screenshots": [],
      "traces": [],
      "logs": [
        "artifacts/logs/02-부서-설정-관리-ADMIN-policy-edit.md"
      ],
      "files": [],
      "role": "ADMIN",
      "page": "[ADMIN] role",
      "checklistItem": "정책 수정 가능",
      "action": "ADMIN 계정으로 [ADMIN] role 항목을 확인",
      "expected": "ADMIN 계정에서 [ADMIN] role 확인 결과가 체크리스트와 일치해야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "3823/dev/fail2ban-policy.spec.ts / [3823][dev] Fail2ban 정책 설정·차단·화이트리스트 검증 / [ADMIN] role / 로그인 실패 정책 ON/OFF 동작",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 6648,
      "evidence": [
        "artifacts/logs/03-부서-설정-관리-ADMIN-login-policy-off.md"
      ],
      "screenshots": [],
      "traces": [],
      "logs": [
        "artifacts/logs/03-부서-설정-관리-ADMIN-login-policy-off.md"
      ],
      "files": [],
      "role": "ADMIN",
      "page": "[ADMIN] role",
      "checklistItem": "로그인 실패 정책 ON/OFF 동작",
      "action": "ADMIN 계정으로 [ADMIN] role 항목을 확인",
      "expected": "ADMIN 계정에서 [ADMIN] role 확인 결과가 체크리스트와 일치해야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "3823/dev/fail2ban-policy.spec.ts / [3823][dev] Fail2ban 정책 설정·차단·화이트리스트 검증 / [ADMIN] role / Account Spraying 정책 ON/OFF 동작",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 3973,
      "evidence": [
        "artifacts/logs/04-부서-설정-관리-ADMIN-spray-policy-off.md"
      ],
      "screenshots": [],
      "traces": [],
      "logs": [
        "artifacts/logs/04-부서-설정-관리-ADMIN-spray-policy-off.md"
      ],
      "files": [],
      "role": "ADMIN",
      "page": "[ADMIN] role",
      "checklistItem": "Account Spraying 정책 ON/OFF 동작",
      "action": "ADMIN 계정으로 [ADMIN] role 항목을 확인",
      "expected": "ADMIN 계정에서 [ADMIN] role 확인 결과가 체크리스트와 일치해야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "3823/dev/fail2ban-policy.spec.ts / [3823][dev] Fail2ban 정책 설정·차단·화이트리스트 검증 / [ADMIN] role / 로그인 실패 횟수 초과 시 차단",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 11003,
      "evidence": [
        "artifacts/logs/05-차단-IP-관리-ADMIN-login-threshold-ban.md"
      ],
      "screenshots": [],
      "traces": [],
      "logs": [
        "artifacts/logs/05-차단-IP-관리-ADMIN-login-threshold-ban.md"
      ],
      "files": [],
      "role": "ADMIN",
      "page": "[ADMIN] role",
      "checklistItem": "로그인 실패 횟수 초과 시 차단",
      "action": "ADMIN 계정으로 [ADMIN] role 항목을 확인",
      "expected": "ADMIN 계정에서 [ADMIN] role 확인 결과가 체크리스트와 일치해야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "3823/dev/fail2ban-policy.spec.ts / [3823][dev] Fail2ban 정책 설정·차단·화이트리스트 검증 / [ADMIN] role / BAN 중 올바른 비밀번호 입력 시에도 403",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 187,
      "evidence": [
        "artifacts/logs/06-비스킷링크-비스킷페이-로그인-ADMIN-correct-password-during-ban.md"
      ],
      "screenshots": [],
      "traces": [],
      "logs": [
        "artifacts/logs/06-비스킷링크-비스킷페이-로그인-ADMIN-correct-password-during-ban.md"
      ],
      "files": [],
      "role": "ADMIN",
      "page": "[ADMIN] role",
      "checklistItem": "BAN 중 올바른 비밀번호 입력 시에도 403",
      "action": "ADMIN 계정으로 [ADMIN] role 항목을 확인",
      "expected": "ADMIN 계정에서 [ADMIN] role 확인 결과가 체크리스트와 일치해야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "3823/dev/fail2ban-policy.spec.ts / [3823][dev] Fail2ban 정책 설정·차단·화이트리스트 검증 / [ADMIN] role / 기간형 BAN 만료 후 정상 로그인",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 58923,
      "evidence": [
        "artifacts/logs/07-비스킷페이-로그인-ADMIN-temporary-ban-expired.md"
      ],
      "screenshots": [],
      "traces": [],
      "logs": [
        "artifacts/logs/07-비스킷페이-로그인-ADMIN-temporary-ban-expired.md"
      ],
      "files": [],
      "role": "ADMIN",
      "page": "[ADMIN] role",
      "checklistItem": "기간형 BAN 만료 후 정상 로그인",
      "action": "ADMIN 계정으로 [ADMIN] role 항목을 확인",
      "expected": "ADMIN 계정에서 [ADMIN] role 확인 결과가 체크리스트와 일치해야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "3823/dev/fail2ban-policy.spec.ts / [3823][dev] Fail2ban 정책 설정·차단·화이트리스트 검증 / [ADMIN] role / 동일 계정 반복 실패 중복 집계 제외",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 7295,
      "evidence": [
        "artifacts/logs/08-차단-IP-관리-ADMIN-same-account-deduplicated.md"
      ],
      "screenshots": [],
      "traces": [],
      "logs": [
        "artifacts/logs/08-차단-IP-관리-ADMIN-same-account-deduplicated.md"
      ],
      "files": [],
      "role": "ADMIN",
      "page": "[ADMIN] role",
      "checklistItem": "동일 계정 반복 실패 중복 집계 제외",
      "action": "ADMIN 계정으로 새로고침과 재조회 전후 거래 ID 출현 횟수를 비교",
      "expected": "ADMIN 계정에서 [ADMIN] role 확인 결과가 체크리스트와 일치해야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "3823/dev/fail2ban-policy.spec.ts / [3823][dev] Fail2ban 정책 설정·차단·화이트리스트 검증 / [ADMIN] role / 서로 다른 계정 수 초과 시 차단",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 8950,
      "evidence": [
        "artifacts/logs/09-차단-IP-관리-ADMIN-distinct-account-ban.md"
      ],
      "screenshots": [],
      "traces": [],
      "logs": [
        "artifacts/logs/09-차단-IP-관리-ADMIN-distinct-account-ban.md"
      ],
      "files": [],
      "role": "ADMIN",
      "page": "[ADMIN] role",
      "checklistItem": "서로 다른 계정 수 초과 시 차단",
      "action": "ADMIN 계정으로 [ADMIN] role 항목을 확인",
      "expected": "ADMIN 계정에서 [ADMIN] role 확인 결과가 체크리스트와 일치해야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "3823/dev/fail2ban-policy.spec.ts / [3823][dev] Fail2ban 정책 설정·차단·화이트리스트 검증 / [ADMIN] role / tenantId가 달라도 동일 IP 기준 합산",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 3805,
      "evidence": [
        "artifacts/logs/10-차단-IP-관리-ADMIN-cross-tenant-aggregate.md"
      ],
      "screenshots": [],
      "traces": [],
      "logs": [
        "artifacts/logs/10-차단-IP-관리-ADMIN-cross-tenant-aggregate.md"
      ],
      "files": [],
      "role": "ADMIN",
      "page": "[ADMIN] role",
      "checklistItem": "tenantId가 달라도 동일 IP 기준 합산",
      "action": "ADMIN 계정으로 [ADMIN] role 항목을 확인",
      "expected": "ADMIN 계정에서 [ADMIN] role 확인 결과가 체크리스트와 일치해야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "3823/dev/fail2ban-policy.spec.ts / [3823][dev] Fail2ban 정책 설정·차단·화이트리스트 검증 / [ADMIN] role / 최초 BAN 시간 적용",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 3890,
      "evidence": [
        "artifacts/logs/11-차단-IP-관리-ADMIN-first-ban-duration.md"
      ],
      "screenshots": [],
      "traces": [],
      "logs": [
        "artifacts/logs/11-차단-IP-관리-ADMIN-first-ban-duration.md"
      ],
      "files": [],
      "role": "ADMIN",
      "page": "[ADMIN] role",
      "checklistItem": "최초 BAN 시간 적용",
      "action": "ADMIN 계정으로 [ADMIN] role 항목을 확인",
      "expected": "ADMIN 계정에서 [ADMIN] role 확인 결과가 체크리스트와 일치해야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "3823/dev/fail2ban-policy.spec.ts / [3823][dev] Fail2ban 정책 설정·차단·화이트리스트 검증 / [ADMIN] role / 반복 BAN 시간 증가",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 3,
      "evidence": [
        "artifacts/logs/12-차단-IP-관리-ADMIN-ban-duration-multiplier.md"
      ],
      "screenshots": [],
      "traces": [],
      "logs": [
        "artifacts/logs/12-차단-IP-관리-ADMIN-ban-duration-multiplier.md"
      ],
      "files": [],
      "role": "ADMIN",
      "page": "[ADMIN] role",
      "checklistItem": "반복 BAN 시간 증가",
      "action": "ADMIN 계정으로 [ADMIN] role 항목을 확인",
      "expected": "ADMIN 계정에서 [ADMIN] role 확인 결과가 체크리스트와 일치해야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "3823/dev/fail2ban-policy.spec.ts / [3823][dev] Fail2ban 정책 설정·차단·화이트리스트 검증 / [ADMIN] role / 설정 회차 이후 영구 BAN",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 33042,
      "evidence": [
        "artifacts/logs/13-차단-IP-관리-ADMIN-permanent-stage.md"
      ],
      "screenshots": [],
      "traces": [],
      "logs": [
        "artifacts/logs/13-차단-IP-관리-ADMIN-permanent-stage.md"
      ],
      "files": [],
      "role": "ADMIN",
      "page": "[ADMIN] role",
      "checklistItem": "설정 회차 이후 영구 BAN",
      "action": "ADMIN 계정으로 [ADMIN] role 항목을 확인",
      "expected": "ADMIN 계정에서 [ADMIN] role 확인 결과가 체크리스트와 일치해야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "3823/dev/fail2ban-policy.spec.ts / [3823][dev] Fail2ban 정책 설정·차단·화이트리스트 검증 / [ADMIN] role / 영구 BAN 동작",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 57,
      "evidence": [
        "artifacts/logs/14-비스킷페이-로그인-ADMIN-permanent-ban.md"
      ],
      "screenshots": [],
      "traces": [],
      "logs": [
        "artifacts/logs/14-비스킷페이-로그인-ADMIN-permanent-ban.md"
      ],
      "files": [],
      "role": "ADMIN",
      "page": "[ADMIN] role",
      "checklistItem": "영구 BAN 동작",
      "action": "ADMIN 계정으로 [ADMIN] role 항목을 확인",
      "expected": "ADMIN 계정에서 [ADMIN] role 확인 결과가 체크리스트와 일치해야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "3823/dev/fail2ban-policy.spec.ts / [3823][dev] Fail2ban 정책 설정·차단·화이트리스트 검증 / [ADMIN] role / 예외 없음 scope에서 두 정책 적용",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 16980,
      "evidence": [
        "artifacts/logs/15-차단-IP-관리-ADMIN-whitelist-none.md"
      ],
      "screenshots": [],
      "traces": [],
      "logs": [
        "artifacts/logs/15-차단-IP-관리-ADMIN-whitelist-none.md"
      ],
      "files": [],
      "role": "ADMIN",
      "page": "[ADMIN] role",
      "checklistItem": "예외 없음 scope에서 두 정책 적용",
      "action": "ADMIN 계정으로 [ADMIN] role 항목을 확인",
      "expected": "ADMIN 계정에서 [ADMIN] role 확인 결과가 체크리스트와 일치해야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "3823/dev/fail2ban-policy.spec.ts / [3823][dev] Fail2ban 정책 설정·차단·화이트리스트 검증 / [ADMIN] role / 로그인 실패 정책 whitelist 동작",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 12371,
      "evidence": [
        "artifacts/logs/16-차단-IP-관리-ADMIN-whitelist-login-only.md"
      ],
      "screenshots": [],
      "traces": [],
      "logs": [
        "artifacts/logs/16-차단-IP-관리-ADMIN-whitelist-login-only.md"
      ],
      "files": [],
      "role": "ADMIN",
      "page": "[ADMIN] role",
      "checklistItem": "로그인 실패 정책 whitelist 동작",
      "action": "ADMIN 계정으로 [ADMIN] role 항목을 확인",
      "expected": "ADMIN 계정에서 [ADMIN] role 확인 결과가 체크리스트와 일치해야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "3823/dev/fail2ban-policy.spec.ts / [3823][dev] Fail2ban 정책 설정·차단·화이트리스트 검증 / [ADMIN] role / Account Spraying whitelist 동작",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 15651,
      "evidence": [
        "artifacts/logs/17-차단-IP-관리-ADMIN-whitelist-spray-only.md"
      ],
      "screenshots": [],
      "traces": [],
      "logs": [
        "artifacts/logs/17-차단-IP-관리-ADMIN-whitelist-spray-only.md"
      ],
      "files": [],
      "role": "ADMIN",
      "page": "[ADMIN] role",
      "checklistItem": "Account Spraying whitelist 동작",
      "action": "ADMIN 계정으로 [ADMIN] role 항목을 확인",
      "expected": "ADMIN 계정에서 [ADMIN] role 확인 결과가 체크리스트와 일치해야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "3823/dev/fail2ban-policy.spec.ts / [3823][dev] Fail2ban 정책 설정·차단·화이트리스트 검증 / [ADMIN] role / 전체 Fail2ban whitelist 동작",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 5249,
      "evidence": [
        "artifacts/logs/18-차단-IP-관리-ADMIN-whitelist-all.md"
      ],
      "screenshots": [],
      "traces": [],
      "logs": [
        "artifacts/logs/18-차단-IP-관리-ADMIN-whitelist-all.md"
      ],
      "files": [],
      "role": "ADMIN",
      "page": "[ADMIN] role",
      "checklistItem": "전체 Fail2ban whitelist 동작",
      "action": "ADMIN 계정으로 [ADMIN] role 항목을 확인",
      "expected": "ADMIN 계정에서 [ADMIN] role 확인 결과가 체크리스트와 일치해야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "3823/dev/fail2ban-policy.spec.ts / [3823][dev] Fail2ban 정책 설정·차단·화이트리스트 검증 / [ADMIN] role / 차단 해제 후 정상 로그인",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 21105,
      "evidence": [
        "artifacts/screenshots/02-차단-IP-관리-ADMIN-unban-completed.png",
        "artifacts/logs/19-차단-IP-관리-ADMIN-unban-completed.md"
      ],
      "screenshots": [
        "artifacts/screenshots/02-차단-IP-관리-ADMIN-unban-completed.png"
      ],
      "traces": [],
      "logs": [
        "artifacts/logs/19-차단-IP-관리-ADMIN-unban-completed.md"
      ],
      "files": [],
      "role": "ADMIN",
      "page": "[ADMIN] role",
      "checklistItem": "차단 해제 후 정상 로그인",
      "action": "ADMIN 계정으로 [ADMIN] role 항목을 확인",
      "expected": "ADMIN 계정에서 [ADMIN] role 확인 결과가 체크리스트와 일치해야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    }
  ]
}
