{
  "issueId": "4369",
  "environment": "dev",
  "generatedAt": "2026-10-26T19:30:24+09:00",
  "sourceResult": "qa-results redacted from tracked output",
  "timings": null,
  "summary": {
    "status": "PASS",
    "passed": 26,
    "failed": 0,
    "skipped": 0,
    "blocked": 0,
    "flaky": 0,
    "durationMs": 6810461
  },
  "rows": [
    {
      "title": "4369/dev/session-timeout.spec.ts / [#4369][dev] 세션 유효시간 / 00 개발계 배포 및 RM 설정 타입 사전 확인",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 11530,
      "evidence": [
        "artifacts/screenshots/01-deployment-preflight.png"
      ],
      "screenshots": [
        "artifacts/screenshots/01-deployment-preflight.png"
      ],
      "traces": [],
      "logs": [],
      "files": [],
      "role": "ADMIN",
      "page": "부서 설정 관리",
      "checklistItem": "01 ADMIN 관리자 정책 15분·1시간·미설정 각각 새 로그인 유효시간을 확인한다.",
      "action": "00 개발계 배포 및 RM 설정 타입 사전 확인",
      "expected": "01 ADMIN 관리자 정책 15분·1시간·미설정 각각 새 로그인 유효시간을 확인한다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4369/dev/session-timeout.spec.ts / [#4369][dev] 세션 유효시간 / 01b ADMIN 정책 빈값의 개발계 기본 세션 시간을 표시한다",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 9136,
      "evidence": [
        "artifacts/screenshots/02-admin-policy-empty-fallback.png"
      ],
      "screenshots": [
        "artifacts/screenshots/02-admin-policy-empty-fallback.png"
      ],
      "traces": [],
      "logs": [],
      "files": [],
      "role": "ADMIN",
      "page": "전산 로그인",
      "checklistItem": "01 ADMIN 관리자 정책 15분·1시간·미설정 각각 새 로그인 유효시간을 확인한다.",
      "action": "01b ADMIN 정책 빈값의 개발계 기본 세션 시간을 표시한다",
      "expected": "01 ADMIN 관리자 정책 15분·1시간·미설정 각각 새 로그인 유효시간을 확인한다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4369/dev/session-timeout.spec.ts / [#4369][dev] 세션 유효시간 / 02 TA 새 로그인과 상단 세션 상태를 확인한다",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 12762,
      "evidence": [
        "artifacts/screenshots/03-admin-TA-baseline.png"
      ],
      "screenshots": [
        "artifacts/screenshots/03-admin-TA-baseline.png"
      ],
      "traces": [],
      "logs": [],
      "files": [],
      "role": "TA",
      "page": "전산 로그인",
      "checklistItem": "14 전산·스토어 일반 로그인, 2차 인증, 강제 로그인·비밀번호 변경 등 현행 절차 후 정상 진입과 거래내역·새로고침을 확인한다.",
      "action": "02 TA 새 로그인과 상단 세션 상태를 확인한다",
      "expected": "14 전산·스토어 일반 로그인, 2차 인증, 강제 로그인·비밀번호 변경 등 현행 절차 후 정상 진입과 거래내역·새로고침을 확인한다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4369/dev/session-timeout.spec.ts / [#4369][dev] 세션 유효시간 / 02 CO 새 로그인과 상단 세션 상태를 확인한다",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 10200,
      "evidence": [
        "artifacts/screenshots/04-admin-CO-baseline.png"
      ],
      "screenshots": [
        "artifacts/screenshots/04-admin-CO-baseline.png"
      ],
      "traces": [],
      "logs": [],
      "files": [],
      "role": "CO",
      "page": "전산 로그인",
      "checklistItem": "14 전산·스토어 일반 로그인, 2차 인증, 강제 로그인·비밀번호 변경 등 현행 절차 후 정상 진입과 거래내역·새로고침을 확인한다.",
      "action": "02 CO 새 로그인과 상단 세션 상태를 확인한다",
      "expected": "14 전산·스토어 일반 로그인, 2차 인증, 강제 로그인·비밀번호 변경 등 현행 절차 후 정상 진입과 거래내역·새로고침을 확인한다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4369/dev/session-timeout.spec.ts / [#4369][dev] 세션 유효시간 / 02 BO 새 로그인과 상단 세션 상태를 확인한다",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 11021,
      "evidence": [
        "artifacts/screenshots/05-admin-BO-baseline.png"
      ],
      "screenshots": [
        "artifacts/screenshots/05-admin-BO-baseline.png"
      ],
      "traces": [],
      "logs": [],
      "files": [],
      "role": "BO",
      "page": "전산 로그인",
      "checklistItem": "14 전산·스토어 일반 로그인, 2차 인증, 강제 로그인·비밀번호 변경 등 현행 절차 후 정상 진입과 거래내역·새로고침을 확인한다.",
      "action": "02 BO 새 로그인과 상단 세션 상태를 확인한다",
      "expected": "14 전산·스토어 일반 로그인, 2차 인증, 강제 로그인·비밀번호 변경 등 현행 절차 후 정상 진입과 거래내역·새로고침을 확인한다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4369/dev/session-timeout.spec.ts / [#4369][dev] 세션 유효시간 / 03 비스킷페이 CO 새 로그인과 거래내역·새로고침을 확인한다",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 11049,
      "evidence": [
        "artifacts/screenshots/06-store-CO-baseline.png"
      ],
      "screenshots": [
        "artifacts/screenshots/06-store-CO-baseline.png"
      ],
      "traces": [],
      "logs": [],
      "files": [],
      "role": "CO",
      "page": "비스킷페이 거래내역",
      "checklistItem": "14 전산·스토어 일반 로그인, 2차 인증, 강제 로그인·비밀번호 변경 등 현행 절차 후 정상 진입과 거래내역·새로고침을 확인한다.",
      "action": "03 비스킷페이 CO 새 로그인과 거래내역·새로고침을 확인한다",
      "expected": "14 전산·스토어 일반 로그인, 2차 인증, 강제 로그인·비밀번호 변경 등 현행 절차 후 정상 진입과 거래내역·새로고침을 확인한다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4369/dev/session-timeout.spec.ts / [#4369][dev] 세션 유효시간 / 03 비스킷페이 BO 새 로그인과 거래내역·새로고침을 확인한다",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 15313,
      "evidence": [
        "artifacts/screenshots/07-store-BO-baseline.png"
      ],
      "screenshots": [
        "artifacts/screenshots/07-store-BO-baseline.png"
      ],
      "traces": [],
      "logs": [],
      "files": [],
      "role": "BO",
      "page": "비스킷페이 거래내역",
      "checklistItem": "14 전산·스토어 일반 로그인, 2차 인증, 강제 로그인·비밀번호 변경 등 현행 절차 후 정상 진입과 거래내역·새로고침을 확인한다.",
      "action": "03 비스킷페이 BO 새 로그인과 거래내역·새로고침을 확인한다",
      "expected": "14 전산·스토어 일반 로그인, 2차 인증, 강제 로그인·비밀번호 변경 등 현행 절차 후 정상 진입과 거래내역·새로고침을 확인한다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4369/dev/session-timeout.spec.ts / [#4369][dev] 세션 유효시간 / 03 비스킷페이 VE 새 로그인과 거래내역·새로고침을 확인한다",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 11681,
      "evidence": [
        "artifacts/screenshots/08-store-VE-baseline.png"
      ],
      "screenshots": [
        "artifacts/screenshots/08-store-VE-baseline.png"
      ],
      "traces": [],
      "logs": [],
      "files": [],
      "role": "VE",
      "page": "비스킷페이 거래내역",
      "checklistItem": "14 전산·스토어 일반 로그인, 2차 인증, 강제 로그인·비밀번호 변경 등 현행 절차 후 정상 진입과 거래내역·새로고침을 확인한다.",
      "action": "03 비스킷페이 VE 새 로그인과 거래내역·새로고침을 확인한다",
      "expected": "14 전산·스토어 일반 로그인, 2차 인증, 강제 로그인·비밀번호 변경 등 현행 절차 후 정상 진입과 거래내역·새로고침을 확인한다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4369/dev/session-timeout.spec.ts / [#4369][dev] 세션 유효시간 / 04 ADMIN이 테넌트 15분을 생성하고 TA 재로그인으로 확인한 뒤 삭제한다",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 117106,
      "evidence": [
        "artifacts/screenshots/09-ta-tenant-before-create.png",
        "artifacts/screenshots/10-ta-tenant-created.png",
        "artifacts/screenshots/11-ta-after-tenant-15.png",
        "artifacts/screenshots/12-ta-manual-extend.png",
        "artifacts/screenshots/13-ta-tenant-restored.png"
      ],
      "screenshots": [
        "artifacts/screenshots/09-ta-tenant-before-create.png",
        "artifacts/screenshots/10-ta-tenant-created.png",
        "artifacts/screenshots/11-ta-after-tenant-15.png",
        "artifacts/screenshots/12-ta-manual-extend.png",
        "artifacts/screenshots/13-ta-tenant-restored.png"
      ],
      "traces": [],
      "logs": [],
      "files": [],
      "role": "ADMIN/TA",
      "page": "부서 설정 관리",
      "checklistItem": "02 ADMIN이 테넌트 빅스페이먼츠에 15분 RM을 생성하고 TA 재로그인에서 약 15분 표시를 확인한다.",
      "action": "04 ADMIN이 테넌트 15분을 생성하고 TA 재로그인으로 확인한 뒤 삭제한다",
      "expected": "02 ADMIN이 테넌트 빅스페이먼츠에 15분 RM을 생성하고 TA 재로그인에서 약 15분 표시를 확인한다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4369/dev/session-timeout.spec.ts / [#4369][dev] 세션 유효시간 / 06 안법인 RM 계층을 조회하고 상위 정책을 기록한다",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 24445,
      "evidence": [
        "artifacts/screenshots/14-an-corporation-hierarchy.png"
      ],
      "screenshots": [
        "artifacts/screenshots/14-an-corporation-hierarchy.png"
      ],
      "traces": [],
      "logs": [],
      "files": [],
      "role": "ADMIN/CO",
      "page": "부서 설정 관리",
      "checklistItem": "06 QA 신규 개별 설정 삭제 후 계층조회로 확인한 상위 정책을 따르고 기존 행은 원래 값으로 복원한다.",
      "action": "06 안법인 RM 계층을 조회하고 상위 정책을 기록한다",
      "expected": "06 QA 신규 개별 설정 삭제 후 계층조회로 확인한 상위 정책을 따르고 기존 행은 원래 값으로 복원한다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4369/dev/session-timeout.spec.ts / [#4369][dev] 세션 유효시간 / 07 VE 부서 15분·1시간 생성과 재로그인 후 신규 행을 삭제한다",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 977508,
      "evidence": [
        "artifacts/screenshots/15-VE-created-15.png",
        "artifacts/screenshots/16-VE-new-login-15.png",
        "artifacts/screenshots/17-VE-refresh-at-nine-minutes.png",
        "artifacts/screenshots/18-VE-after-original-expiry.png",
        "artifacts/screenshots/19-VE-new-login-60.png",
        "artifacts/screenshots/20-VE-restored.png"
      ],
      "screenshots": [
        "artifacts/screenshots/15-VE-created-15.png",
        "artifacts/screenshots/16-VE-new-login-15.png",
        "artifacts/screenshots/17-VE-refresh-at-nine-minutes.png",
        "artifacts/screenshots/18-VE-after-original-expiry.png",
        "artifacts/screenshots/19-VE-new-login-60.png",
        "artifacts/screenshots/20-VE-restored.png"
      ],
      "traces": [],
      "logs": [],
      "files": [],
      "role": "ADMIN/VE",
      "page": "부서 설정 관리 / 비스킷페이 거래내역",
      "checklistItem": "05 ADMIN이 박재민_가맹_한결데 RM을 15분·1시간으로 생성·수정하고 VE 스토어 거래내역·새로고침을 확인한다.",
      "action": "07 VE 부서 15분·1시간 생성과 재로그인 후 신규 행을 삭제한다",
      "expected": "05 ADMIN이 박재민_가맹_한결데 RM을 15분·1시간으로 생성·수정하고 VE 스토어 거래내역·새로고침을 확인한다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4369/dev/session-timeout.spec.ts / [#4369][dev] 세션 유효시간 / 08 안법인 기존 15분 행을 1시간으로 수정하고 CO 새 로그인 확인 후 원복한다",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 37676,
      "evidence": [
        "artifacts/screenshots/21-co-before-60.png",
        "artifacts/screenshots/22-co-setting-60.png",
        "artifacts/screenshots/23-co-existing-session-unchanged.png",
        "artifacts/screenshots/24-co-existing-session-extended-60.png",
        "artifacts/screenshots/25-co-new-login-60.png",
        "artifacts/screenshots/26-co-restored-15.png"
      ],
      "screenshots": [
        "artifacts/screenshots/21-co-before-60.png",
        "artifacts/screenshots/22-co-setting-60.png",
        "artifacts/screenshots/23-co-existing-session-unchanged.png",
        "artifacts/screenshots/24-co-existing-session-extended-60.png",
        "artifacts/screenshots/25-co-new-login-60.png",
        "artifacts/screenshots/26-co-restored-15.png"
      ],
      "traces": [],
      "logs": [],
      "files": [],
      "role": "ADMIN/CO",
      "page": "부서 설정 관리 / 전산 로그인",
      "checklistItem": "12 RM 15분을 1시간으로 바꾼 직후 기존 세션은 즉시 늘지 않고 다음 로그인·연장부터 반영된다.",
      "action": "08 안법인 기존 15분 행을 1시간으로 수정하고 CO 새 로그인 확인 후 원복한다",
      "expected": "12 RM 15분을 1시간으로 바꾼 직후 기존 세션은 즉시 늘지 않고 다음 로그인·연장부터 반영된다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4369/dev/session-timeout.spec.ts / [#4369][dev] 세션 유효시간 / 13 안법인 RM 사용여부를 끄면 CO는 개발계 기본 시간을 쓰고 원복한다",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 25161,
      "evidence": [
        "artifacts/screenshots/27-co-rm-disabled.png",
        "artifacts/screenshots/28-co-fallback-with-rm-disabled.png",
        "artifacts/screenshots/29-co-rm-enabled-restored.png"
      ],
      "screenshots": [
        "artifacts/screenshots/27-co-rm-disabled.png",
        "artifacts/screenshots/28-co-fallback-with-rm-disabled.png",
        "artifacts/screenshots/29-co-rm-enabled-restored.png"
      ],
      "traces": [],
      "logs": [],
      "files": [],
      "role": "ADMIN/CO",
      "page": "부서 설정 관리",
      "checklistItem": "13 RM 비활성·상위 미설정의 기존 개발계 시간, 상위 유효 설정의 상속, ADMIN의 RM 독립을 확인한다.",
      "action": "13 안법인 RM 사용여부를 끄면 CO는 개발계 기본 시간을 쓰고 원복한다",
      "expected": "13 RM 비활성·상위 미설정의 기존 개발계 시간, 상위 유효 설정의 상속, ADMIN의 RM 독립을 확인한다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4369/dev/session-timeout.spec.ts / [#4369][dev] 세션 유효시간 / 10 CO 15분 세션은 전산 탭을 닫고 실제 만료 후 재접속하면 로그인을 요구한다",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 925894,
      "evidence": [
        "artifacts/screenshots/30-co-expiry-before.png",
        "artifacts/screenshots/31-co-expiry-after.png"
      ],
      "screenshots": [
        "artifacts/screenshots/30-co-expiry-before.png",
        "artifacts/screenshots/31-co-expiry-after.png"
      ],
      "traces": [],
      "logs": [],
      "files": [],
      "role": "CO",
      "page": "전산 로그인",
      "checklistItem": "10 전산 ADMIN/TA/CO/BO 15분 세션의 탭을 닫고 실제 15분 이상 대기한 뒤 재접속 로그인을 확인한다.",
      "action": "10 CO 15분 세션은 전산 탭을 닫고 실제 만료 후 재접속하면 로그인을 요구한다",
      "expected": "10 전산 ADMIN/TA/CO/BO 15분 세션의 탭을 닫고 실제 15분 이상 대기한 뒤 재접속 로그인을 확인한다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4369/dev/session-timeout.spec.ts / [#4369][dev] 세션 유효시간 / 11 CO 스토어 15분 세션은 탭을 닫고 실제 만료 후 재접속하면 로그인을 요구한다",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 924241,
      "evidence": [
        "artifacts/screenshots/32-store-co-expiry-before.png",
        "artifacts/screenshots/33-store-co-expiry-after.png"
      ],
      "screenshots": [
        "artifacts/screenshots/32-store-co-expiry-before.png",
        "artifacts/screenshots/33-store-co-expiry-after.png"
      ],
      "traces": [],
      "logs": [],
      "files": [],
      "role": "CO",
      "page": "비스킷페이 거래내역",
      "checklistItem": "11 스토어 웹앱 CO/BO/VE 15분 및 1시간 세션에서 실제 15분 이상 탭 종료 후 재접속 결과를 확인한다.",
      "action": "11 CO 스토어 15분 세션은 탭을 닫고 실제 만료 후 재접속하면 로그인을 요구한다",
      "expected": "11 스토어 웹앱 CO/BO/VE 15분 및 1시간 세션에서 실제 15분 이상 탭 종료 후 재접속 결과를 확인한다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4369/dev/session-timeout.spec.ts / [#4369][dev] 세션 유효시간 / 09 CO·BO 스토어 9분 새로고침 후 최초 15분 경과 이용과 TA·BO 탭 종료 만료를 확인한다",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 1021402,
      "evidence": [
        "artifacts/screenshots/34-co-long-flow-before.png",
        "artifacts/screenshots/35-bo-long-flow-before.png",
        "artifacts/screenshots/36-ta-expiry-before.png",
        "artifacts/screenshots/37-bo-expiry-before.png",
        "artifacts/screenshots/38-co-refresh-at-nine-minutes.png",
        "artifacts/screenshots/39-bo-refresh-at-nine-minutes.png",
        "artifacts/screenshots/40-co-after-original-expiry.png",
        "artifacts/screenshots/41-bo-after-original-expiry.png",
        "artifacts/screenshots/42-ta-expiry-after.png",
        "artifacts/screenshots/43-bo-expiry-after.png",
        "artifacts/screenshots/44-long-flow-tenant-restored.png"
      ],
      "screenshots": [
        "artifacts/screenshots/34-co-long-flow-before.png",
        "artifacts/screenshots/35-bo-long-flow-before.png",
        "artifacts/screenshots/36-ta-expiry-before.png",
        "artifacts/screenshots/37-bo-expiry-before.png",
        "artifacts/screenshots/38-co-refresh-at-nine-minutes.png",
        "artifacts/screenshots/39-bo-refresh-at-nine-minutes.png",
        "artifacts/screenshots/40-co-after-original-expiry.png",
        "artifacts/screenshots/41-bo-after-original-expiry.png",
        "artifacts/screenshots/42-ta-expiry-after.png",
        "artifacts/screenshots/43-bo-expiry-after.png",
        "artifacts/screenshots/44-long-flow-tenant-restored.png"
      ],
      "traces": [],
      "logs": [],
      "files": [],
      "role": "CO/BO/TA",
      "page": "전산 로그인 / 비스킷페이 거래내역",
      "checklistItem": "09 스토어 CO/BO/VE 15분 세션에서 8~10분 후 거래내역 새로고침을 하고 최초 로그인 15분 이후에도 정상 이용한다.",
      "action": "09 CO·BO 스토어 9분 새로고침 후 최초 15분 경과 이용과 TA·BO 탭 종료 만료를 확인한다",
      "expected": "09 스토어 CO/BO/VE 15분 세션에서 8~10분 후 거래내역 새로고침을 하고 최초 로그인 15분 이후에도 정상 이용한다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4369/dev/session-timeout.spec.ts / [#4369][dev] 세션 유효시간 / 01c ADMIN 정책 15분의 새 로그인과 1분 후 연장을 확인한다",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 76187,
      "evidence": [
        "artifacts/screenshots/45-admin-policy-15-login.png",
        "artifacts/screenshots/46-admin-policy-15-extended.png"
      ],
      "screenshots": [
        "artifacts/screenshots/45-admin-policy-15-login.png",
        "artifacts/screenshots/46-admin-policy-15-extended.png"
      ],
      "traces": [],
      "logs": [],
      "files": [],
      "role": "ADMIN",
      "page": "전산 로그인",
      "checklistItem": "01 ADMIN 관리자 정책 15분·1시간·미설정 각각 새 로그인 유효시간을 확인한다.",
      "action": "01c ADMIN 정책 15분의 새 로그인과 1분 후 연장을 확인한다",
      "expected": "01 ADMIN 관리자 정책 15분·1시간·미설정 각각 새 로그인 유효시간을 확인한다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4369/dev/session-timeout.spec.ts / [#4369][dev] 세션 유효시간 / 08 BO 전산 15분 세션은 1분 후 수동 연장된다",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 97911,
      "evidence": [
        "artifacts/screenshots/47-bo-manual-extend.png",
        "artifacts/screenshots/48-bo-extend-restored.png"
      ],
      "screenshots": [
        "artifacts/screenshots/47-bo-manual-extend.png",
        "artifacts/screenshots/48-bo-extend-restored.png"
      ],
      "traces": [],
      "logs": [],
      "files": [],
      "role": "ADMIN/BO",
      "page": "전산 로그인",
      "checklistItem": "08 전산 ADMIN/TA/CO/BO의 15분 세션에서 1분 이상 후 연장 버튼 및 전경 자동 갱신 결과를 확인한다.",
      "action": "08 BO 전산 15분 세션은 1분 후 수동 연장된다",
      "expected": "08 전산 ADMIN/TA/CO/BO의 15분 세션에서 1분 이상 후 연장 버튼 및 전경 자동 갱신 결과를 확인한다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4369/dev/session-timeout.spec.ts / [#4369][dev] 세션 유효시간 / 08 ADMIN·TA·CO·BO 전경 15분 세션의 자동 갱신을 실제 경과 후 확인한다",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 1064251,
      "evidence": [
        "artifacts/screenshots/49-admin-foreground-before.png",
        "artifacts/screenshots/50-ta-foreground-before.png",
        "artifacts/screenshots/51-co-foreground-before.png",
        "artifacts/screenshots/52-bo-foreground-before.png",
        "artifacts/screenshots/53-bo-store-15-before-close.png",
        "artifacts/screenshots/54-ve-store-15-before-close.png",
        "artifacts/screenshots/55-admin-foreground-after.png",
        "artifacts/screenshots/56-ta-foreground-after.png",
        "artifacts/screenshots/57-co-foreground-after.png",
        "artifacts/screenshots/58-bo-foreground-after.png",
        "artifacts/screenshots/59-bo-store-15-after-close.png",
        "artifacts/screenshots/60-ve-store-15-after-close.png",
        "artifacts/screenshots/61-foreground-parent-restored.png"
      ],
      "screenshots": [
        "artifacts/screenshots/49-admin-foreground-before.png",
        "artifacts/screenshots/50-ta-foreground-before.png",
        "artifacts/screenshots/51-co-foreground-before.png",
        "artifacts/screenshots/52-bo-foreground-before.png",
        "artifacts/screenshots/53-bo-store-15-before-close.png",
        "artifacts/screenshots/54-ve-store-15-before-close.png",
        "artifacts/screenshots/55-admin-foreground-after.png",
        "artifacts/screenshots/56-ta-foreground-after.png",
        "artifacts/screenshots/57-co-foreground-after.png",
        "artifacts/screenshots/58-bo-foreground-after.png",
        "artifacts/screenshots/59-bo-store-15-after-close.png",
        "artifacts/screenshots/60-ve-store-15-after-close.png",
        "artifacts/screenshots/61-foreground-parent-restored.png"
      ],
      "traces": [],
      "logs": [],
      "files": [],
      "role": "ADMIN/TA/CO/BO",
      "page": "전산 로그인",
      "checklistItem": "08 전산 ADMIN/TA/CO/BO의 15분 세션에서 1분 이상 후 연장 버튼 및 전경 자동 갱신 결과를 확인한다.",
      "action": "08 ADMIN·TA·CO·BO 전경 15분 세션의 자동 갱신을 실제 경과 후 확인한다",
      "expected": "08 전산 ADMIN/TA/CO/BO의 15분 세션에서 1분 이상 후 연장 버튼 및 전경 자동 갱신 결과를 확인한다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4369/dev/session-timeout.spec.ts / [#4369][dev] 세션 유효시간 / 11 CO·BO·VE 스토어 60분 세션은 탭 종료 15분 후 정책대로 동작한다",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 1009843,
      "evidence": [
        "artifacts/screenshots/62-store-60-parent-force-on.png",
        "artifacts/screenshots/63-co-60-before-close.png",
        "artifacts/screenshots/64-bo-60-before-close.png",
        "artifacts/screenshots/65-ve-60-before-close.png",
        "artifacts/screenshots/66-admin-15-while-store-60-before-close.png",
        "artifacts/screenshots/67-co-60-after-interruption.png",
        "artifacts/screenshots/68-bo-60-after-interruption.png",
        "artifacts/screenshots/69-ve-60-after-interruption.png",
        "artifacts/screenshots/70-admin-15-while-store-60-after-close.png",
        "artifacts/screenshots/71-store-60-parent-restored.png"
      ],
      "screenshots": [
        "artifacts/screenshots/62-store-60-parent-force-on.png",
        "artifacts/screenshots/63-co-60-before-close.png",
        "artifacts/screenshots/64-bo-60-before-close.png",
        "artifacts/screenshots/65-ve-60-before-close.png",
        "artifacts/screenshots/66-admin-15-while-store-60-before-close.png",
        "artifacts/screenshots/67-co-60-after-interruption.png",
        "artifacts/screenshots/68-bo-60-after-interruption.png",
        "artifacts/screenshots/69-ve-60-after-interruption.png",
        "artifacts/screenshots/70-admin-15-while-store-60-after-close.png",
        "artifacts/screenshots/71-store-60-parent-restored.png"
      ],
      "traces": [],
      "logs": [],
      "files": [],
      "role": "CO/BO/VE",
      "page": "비스킷페이 거래내역",
      "checklistItem": "11 스토어 웹앱 CO/BO/VE 15분 및 1시간 세션에서 실제 15분 이상 탭 종료 후 재접속 결과를 확인한다.",
      "action": "11 CO·BO·VE 스토어 60분 세션은 탭 종료 15분 후 정책대로 동작한다",
      "expected": "11 스토어 웹앱 CO/BO/VE 15분 및 1시간 세션에서 실제 15분 이상 탭 종료 후 재접속 결과를 확인한다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4369/dev/session-timeout.spec.ts / [#4369][dev] 세션 유효시간 / 14 VE 비밀번호 변경 후 거래내역 진입과 원래 비밀번호 복원을 확인한다",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 37140,
      "evidence": [
        "artifacts/screenshots/72-ve-password-changed.png",
        "artifacts/screenshots/73-ve-temporary-password-transactions.png",
        "artifacts/screenshots/74-ve-original-password-restored.png"
      ],
      "screenshots": [
        "artifacts/screenshots/72-ve-password-changed.png",
        "artifacts/screenshots/73-ve-temporary-password-transactions.png",
        "artifacts/screenshots/74-ve-original-password-restored.png"
      ],
      "traces": [],
      "logs": [],
      "files": [],
      "role": "VE",
      "page": "비스킷페이 정보관리 / 거래내역",
      "checklistItem": "14 전산·스토어 일반 로그인, 2차 인증, 강제 로그인·비밀번호 변경 등 현행 절차 후 정상 진입과 거래내역·새로고침을 확인한다.",
      "action": "14 VE 비밀번호 변경 후 거래내역 진입과 원래 비밀번호 복원을 확인한다",
      "expected": "14 전산·스토어 일반 로그인, 2차 인증, 강제 로그인·비밀번호 변경 등 현행 절차 후 정상 진입과 거래내역·새로고침을 확인한다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4369/dev/session-timeout.spec.ts / [#4369][dev] 세션 유효시간 / 14 BO 스토어 동시 로그인 제한에서 강제 로그인 후 거래내역과 원복을 확인한다",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 31210,
      "evidence": [
        "artifacts/screenshots/75-bo-store-force-login-prompt.png",
        "artifacts/screenshots/76-bo-store-force-login-complete.png",
        "artifacts/screenshots/77-bo-store-concurrent-restored.png"
      ],
      "screenshots": [
        "artifacts/screenshots/75-bo-store-force-login-prompt.png",
        "artifacts/screenshots/76-bo-store-force-login-complete.png",
        "artifacts/screenshots/77-bo-store-concurrent-restored.png"
      ],
      "traces": [],
      "logs": [],
      "files": [],
      "role": "BO",
      "page": "비스킷페이 로그인 / 정보관리",
      "checklistItem": "14 전산·스토어 일반 로그인, 2차 인증, 강제 로그인·비밀번호 변경 등 현행 절차 후 정상 진입과 거래내역·새로고침을 확인한다.",
      "action": "14 BO 스토어 동시 로그인 제한에서 강제 로그인 후 거래내역과 원복을 확인한다",
      "expected": "14 전산·스토어 일반 로그인, 2차 인증, 강제 로그인·비밀번호 변경 등 현행 절차 후 정상 진입과 거래내역·새로고침을 확인한다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4369/dev/session-timeout.spec.ts / [#4369][dev] 세션 유효시간 / 05 중단된 QA 생성 행을 지정 ID로 확인하고 삭제한다",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 13910,
      "evidence": [
        "artifacts/screenshots/78-recover-before-delete.png",
        "artifacts/screenshots/79-recover-after-delete.png"
      ],
      "screenshots": [
        "artifacts/screenshots/78-recover-before-delete.png",
        "artifacts/screenshots/79-recover-after-delete.png"
      ],
      "traces": [],
      "logs": [],
      "files": [],
      "role": "ADMIN",
      "page": "부서 설정 관리",
      "checklistItem": "15 성공·실패와 무관하게 관리자 정책, 기존 RM 값·사용여부·강제적용을 원복하고 QA 신규 행만 삭제한다.",
      "action": "05 중단된 QA 생성 행을 지정 ID로 확인하고 삭제한다",
      "expected": "15 성공·실패와 무관하게 관리자 정책, 기존 RM 값·사용여부·강제적용을 원복하고 QA 신규 행만 삭제한다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4369/dev/session-timeout.spec.ts / [#4369][dev] 세션 유효시간 / 07 BO 부서 15분·1시간 생성과 재로그인 후 신규 행을 삭제한다",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 37783,
      "evidence": [
        "artifacts/screenshots/80-BO-created-15.png",
        "artifacts/screenshots/81-BO-new-login-15.png",
        "artifacts/screenshots/82-BO-new-login-60.png",
        "artifacts/screenshots/83-BO-restored.png"
      ],
      "screenshots": [
        "artifacts/screenshots/80-BO-created-15.png",
        "artifacts/screenshots/81-BO-new-login-15.png",
        "artifacts/screenshots/82-BO-new-login-60.png",
        "artifacts/screenshots/83-BO-restored.png"
      ],
      "traces": [],
      "logs": [],
      "files": [],
      "role": "ADMIN/BO",
      "page": "부서 설정 관리",
      "checklistItem": "04 ADMIN이 박재민_영업 RM을 15분·1시간으로 생성·수정하고 BO 새 로그인 표시를 확인한다.",
      "action": "07 BO 부서 15분·1시간 생성과 재로그인 후 신규 행을 삭제한다",
      "expected": "04 ADMIN이 박재민_영업 RM을 15분·1시간으로 생성·수정하고 BO 새 로그인 표시를 확인한다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4369/dev/session-timeout.spec.ts / [#4369][dev] 세션 유효시간 / 07 테넌트 1시간 강제적용은 안법인 15분보다 우선하고 해제 시 개별값을 따른다",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 76031,
      "evidence": [
        "artifacts/screenshots/84-parent-force-on.png",
        "artifacts/screenshots/85-co-hierarchy-with-parent.png",
        "artifacts/screenshots/86-co-force-on.png",
        "artifacts/screenshots/87-bo-force-on.png",
        "artifacts/screenshots/88-co-force-off.png",
        "artifacts/screenshots/89-bo-force-off.png",
        "artifacts/screenshots/90-parent-force-restored.png"
      ],
      "screenshots": [
        "artifacts/screenshots/84-parent-force-on.png",
        "artifacts/screenshots/85-co-hierarchy-with-parent.png",
        "artifacts/screenshots/86-co-force-on.png",
        "artifacts/screenshots/87-bo-force-on.png",
        "artifacts/screenshots/88-co-force-off.png",
        "artifacts/screenshots/89-bo-force-off.png",
        "artifacts/screenshots/90-parent-force-restored.png"
      ],
      "traces": [],
      "logs": [],
      "files": [],
      "role": "ADMIN/CO/BO",
      "page": "부서 설정 관리",
      "checklistItem": "07 상위 1시간 강제적용과 개별 15분 비강제 상태에서 CO/BO가 1시간을 따르고 상위 강제 해제 후 개별 15분을 따른다.",
      "action": "07 테넌트 1시간 강제적용은 안법인 15분보다 우선하고 해제 시 개별값을 따른다",
      "expected": "07 상위 1시간 강제적용과 개별 15분 비강제 상태에서 CO/BO가 1시간을 따르고 상위 강제 해제 후 개별 15분을 따른다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4369/dev/session-timeout.spec.ts / [#4369][dev] 세션 유효시간 / 01 기존 RM 설정과 상속 계층을 변경 전에 조회한다",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 9900,
      "evidence": [
        "artifacts/screenshots/91-rm-baseline.png"
      ],
      "screenshots": [
        "artifacts/screenshots/91-rm-baseline.png"
      ],
      "traces": [],
      "logs": [],
      "files": [],
      "role": "ADMIN",
      "page": "부서 설정 관리",
      "checklistItem": "15 성공·실패와 무관하게 관리자 정책, 기존 RM 값·사용여부·강제적용을 원복하고 QA 신규 행만 삭제한다.",
      "action": "01 기존 RM 설정과 상속 계층을 변경 전에 조회한다",
      "expected": "15 성공·실패와 무관하게 관리자 정책, 기존 RM 값·사용여부·강제적용을 원복하고 QA 신규 행만 삭제한다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    }
  ]
}
