{
  "issueId": "4369",
  "environment": "dev",
  "source": "사용자 확정 #4369 개발계 QA 15항목",
  "sourceText": "요청자·담당자 김경주. admin은 Admin Policy, TA/CO/BO/VE는 테넌트·부서 RM 세션 유효시간. 15분과 1시간 검증. QA 진행 결과를 사용자가 지정한 Google Chat 방에 공유하도록 후속 요청받음.",
  "scenario": "rm-department-policy",
  "scope": "ADMIN의 RM 설정과 ADMIN/TA/CO/BO 전산, CO/BO/VE 비스킷페이 web-react 로그인·만료·갱신을 실제 개발계에서 검증한다.",
  "roles": ["ADMIN", "TA", "CO", "BO", "VE"],
  "subjectAccounts": [
    { "role": "ADMIN", "label": "#4369 관리자", "envRole": "QA4369_ADMIN" },
    { "role": "TA", "label": "#4369 테넌트", "envRole": "QA4369_TA" },
    { "role": "CO", "label": "#4369 법인", "envRole": "QA4369_CO" },
    { "role": "BO", "label": "#4369 영업점", "envRole": "QA4369_BO" },
    { "role": "VE", "label": "#4369 가맹점", "envRole": "QA4369_VE" }
  ],
  "checklist": [
    "01 ADMIN 관리자 정책 15분·1시간·미설정 각각 새 로그인 유효시간을 확인한다.",
    "02 ADMIN이 테넌트 빅스페이먼츠에 15분 RM을 생성하고 TA 재로그인에서 약 15분 표시를 확인한다.",
    "03 ADMIN이 안법인 기존 RM을 1시간으로 수정하고 CO 새 로그인 약 1시간 및 TA 설정 불변을 확인한다.",
    "04 ADMIN이 박재민_영업 RM을 15분·1시간으로 생성·수정하고 BO 새 로그인 표시를 확인한다.",
    "05 ADMIN이 박재민_가맹_한결데 RM을 15분·1시간으로 생성·수정하고 VE 스토어 거래내역·새로고침을 확인한다.",
    "06 QA 신규 개별 설정 삭제 후 계층조회로 확인한 상위 정책을 따르고 기존 행은 원래 값으로 복원한다.",
    "07 상위 1시간 강제적용과 개별 15분 비강제 상태에서 CO/BO가 1시간을 따르고 상위 강제 해제 후 개별 15분을 따른다.",
    "08 전산 ADMIN/TA/CO/BO의 15분 세션에서 1분 이상 후 연장 버튼 및 전경 자동 갱신 결과를 확인한다.",
    "09 스토어 CO/BO/VE 15분 세션에서 8~10분 후 거래내역 새로고침을 하고 최초 로그인 15분 이후에도 정상 이용한다.",
    "10 전산 ADMIN/TA/CO/BO 15분 세션의 탭을 닫고 실제 15분 이상 대기한 뒤 재접속 로그인을 확인한다.",
    "11 스토어 웹앱 CO/BO/VE 15분 및 1시간 세션에서 실제 15분 이상 탭 종료 후 재접속 결과를 확인한다.",
    "12 RM 15분을 1시간으로 바꾼 직후 기존 세션은 즉시 늘지 않고 다음 로그인·연장부터 반영된다.",
    "13 RM 비활성·상위 미설정의 기존 개발계 시간, 상위 유효 설정의 상속, ADMIN의 RM 독립을 확인한다.",
    "14 전산·스토어 일반 로그인, 2차 인증, 강제 로그인·비밀번호 변경 등 현행 절차 후 정상 진입과 거래내역·새로고침을 확인한다.",
    "15 성공·실패와 무관하게 관리자 정책, 기존 RM 값·사용여부·강제적용을 원복하고 QA 신규 행만 삭제한다."
  ],
  "setupSteps": [
    {
      "name": "세션 유효시간 RM 임시 세팅과 원복",
      "kind": "data-update",
      "role": "ADMIN",
      "application": "admin",
      "targetRoles": ["TA", "CO", "BO", "VE"],
      "description": "기존값·사용여부·강제적용·계층을 읽은 뒤 QA 전용 변경만 수행한다.",
      "spec": "session-timeout.spec.ts",
      "required": true,
      "mutation": "temporary",
      "guardEnv": "QA_4369_ALLOW_RM_MUTATION",
      "navigation": { "name": "부서 설정 관리", "path": "/admin/department-setting" },
      "restore": { "required": true, "description": "기존 행은 값과 스위치를 복원하고 새 행만 삭제한 뒤 목록으로 재조회한다." }
    },
    {
      "name": "ADMIN 정책 사전 설정",
      "kind": "manual-precondition",
      "role": "ADMIN",
      "application": "admin",
      "description": "ADMIN_REFRESH_TOKEN_TIMEOUT_MINUTES는 전용 편집 UI가 없어 권한 있는 정식 설정 경로가 확인된 경우에만 15·60·미설정을 적용한다.",
      "required": true,
      "mutation": "none"
    },
    {
      "name": "VE 비밀번호 변경·원복",
      "kind": "data-update",
      "role": "VE",
      "application": "store",
      "targetRoles": ["VE"],
      "description": "가맹점 테스트 계정만 임시 비밀번호로 변경하고 거래내역 확인 후 원래 비밀번호를 복원한다.",
      "spec": "session-timeout.spec.ts",
      "required": false,
      "mutation": "temporary",
      "guardEnv": "QA_4369_ALLOW_PASSWORD_MUTATION",
      "navigation": { "name": "정보관리", "path": "/user" },
      "restore": { "required": true, "description": "원래 비밀번호로 변경한 후 새 로그인으로 거래내역 접근을 확인한다." }
    },
    {
      "name": "BO 동시 로그인 설정 임시 해제·원복",
      "kind": "data-update",
      "role": "BO",
      "application": "store",
      "targetRoles": ["BO"],
      "description": "강제 로그인 확인 중에만 동시 로그인 허용을 끄고 원래의 허용 상태로 복원한다.",
      "spec": "session-timeout.spec.ts",
      "required": false,
      "mutation": "temporary",
      "guardEnv": "QA_4369_ALLOW_RM_MUTATION",
      "navigation": { "name": "정보관리", "path": "/user" },
      "restore": { "required": true, "description": "기존 동시 로그인 허용 상태를 재조회해 복원한다." }
    }
  ],
  "pages": [
    { "name": "ADMIN 부서 설정 관리", "application": "admin", "path": "/admin/department-setting", "tenantParam": "tenantId", "roles": ["ADMIN"] },
    { "name": "전산 로그인 유효시간", "application": "admin", "path": "/", "tenantParam": "tenantId", "roles": ["ADMIN", "TA", "CO", "BO"] },
    { "name": "비스킷페이 거래내역", "application": "store", "path": "/transactions", "tenantParam": "tenantId", "roles": ["CO", "BO", "VE"] }
  ]
}
