{
  "issueId": "3683",
  "environment": "dev",
  "source": "Redmine #3683 + user-provided QA checklist 2026-06-26",
  "scenario": "department-status-scope",
  "sourceText": "김경주님의 QA 요청입니다. 조지민 프로님 안녕하세요, 비스킷 링크 개발계 QA 요청드립니다. [1] QA 요청 배경 - https://itsm.bix.bz/issues/3683 - 부서 상태 변경 시 권한이 없는 사용자가 일부 부서를 활성화/비활성화할 수 있던 문제가 수정되었습니다. 추가로 TA 계정에 연결 법인이 지정되어 있어도 법인, 영업점, 가맹 목록에서 전체 부서가 조회되는 문제가 확인되어, 연결된 법인 범위 안의 부서만 조회되도록 수정되었습니다. 이번 수정으로 부서 상태 변경 시 부서 타입별 권한과 접근 가능 범위를 검증하며, 여러 부서를 한 번에 처리할 때 일부만 성공/실패하는 경우 처리 결과 팝업에서 성공/실패 건수와 부서별 처리 결과를 확인할 수 있도록 변경되었습니다. [2] 사전 데이터 - 개발계에서 상태 변경 검증이 가능한 법인, 가맹점 데이터 준비 - 선택한 부서 중 정상 처리 가능한 부서와 실패가 발생하는 부서가 함께 포함된 테스트 데이터 준비 - 하위 부서 포함 상태 변경을 확인할 수 있는 법인 데이터 준비 - 상태가 정상/중지 등으로 변경 가능한 부서 데이터 준비 - TA 계정에 연결된 법인인 안법인, 황보빈법인 하위 부서 데이터 준비 - TA 계정에 연결되지 않은 법인 및 해당 하위 부서 데이터 준비 - CO 본인 법인 하위 가맹점 데이터 준비 - 기존에 연결 또는 생성된 적 있던 영업라인 기준으로 상위/하위 부서를 판단하기 때문에, 테스트 데이터에 따라 '상태 변경할 부서를 찾을 수 없습니다.' 실패 사유가 나올 수 있음 - TA 계정: 연결 법인 안법인, 황보빈법인 / 프리셋 상태: 법인 활성화/비활성화 권한이 빠진 상태라 법인은 활성화/비활성화 불가 / ID: ta_test_gj / PW: <redacted> / 2FA: <redacted> - 법인 계정: 프리셋 상태: 영업 활성화/비활성화 권한이 빠진 상태라 영업 활성화/비활성화 불가 / 동일 권한/동일 레벨 부서 상태 변경 제한: 법인 계정은 스스로의 법인 상태 변경 불가 / 법인 부서명: 박재민_법인 / ID: 한결데법인 / PW: <redacted> / 2FA: <redacted>. [3] 사전 작업 - 각 QA 계정으로 로그인 가능 여부 확인 - 업체관리 > 총판관리 > 부서별 운영상태관리 화면 접근 가능 여부 확인 - 상태 변경 버튼과 하위 부서 포함 적용 흐름 사용 가능 여부 확인 - 테스트 전 선택된 부서가 없는 상태에서 시작 - 상태 변경 전 각 부서의 현재 상태 확인 - TA 계정 로그인 후 법인, 영업점, 가맹 목록 조회 시 연결 법인 기준으로 데이터가 제한되는지 확인. [4] 권한별 테스트 - ta - co. [5] 검증 대상 - 업체관리 > 총판관리 > 부서별 운영상태관리. [6] 체크리스트 - 부서별 운영상태관리 화면에서 법인, 가맹점을 선택한 뒤 상태 변경을 진행할 수 있는지 확인 - 선택한 부서의 상태 변경이 모두 성공한 경우 하단에 성공 안내가 표시되는지 확인 - 선택한 부서 중 일부만 성공한 경우 부서 상태 변경 결과 팝업이 표시되는지 확인 - 결과 팝업에서 성공/실패 여부가 구분되어 표시되는지 확인 - 실패한 부서는 실패 사유가 표시되는지 확인 - 실패 사유에 내부 식별자처럼 보이는 값이 그대로 노출되지 않는지 확인 - '상태 변경할 부서를 찾을 수 없습니다.' 실패 사유가 발생해도 결과 팝업에서 정상적으로 표시되는지 확인 - 결과 팝업 닫기 버튼 클릭 시 정상적으로 닫히는지 확인 - 일부 성공 후 목록을 다시 조회했을 때 성공 처리된 부서만 상태가 변경되어 보이는지 확인 - 실패한 부서는 목록 재조회 후 기존 상태가 유지되는지 확인 - 전체 실패한 경우 성공 안내 없이 실패 결과 또는 권한 없음 안내를 확인할 수 있는지 확인 - 일반 상태 변경과 하위 부서 포함 상태 변경 모두 동일한 방식으로 결과가 표시되는지 확인 - TA 계정에서 법인 목록 조회 시 연결 법인인 안법인, 황보빈법인만 표시되는지 확인 - TA 계정에서 영업점 목록 조회 시 안법인, 황보빈법인 하위 영업점만 표시되는지 확인 - TA 계정에서 가맹 목록 조회 시 안법인, 황보빈법인 하위 가맹점만 표시되는지 확인 - TA 계정에서 연결되지 않은 법인 및 해당 하위 부서가 목록에 표시되지 않는지 확인 - 법인 활성화/비활성화 권한이 없는 상태에서 법인 상태 변경 시 실패 처리되는지 확인 - 법인과 하위 가맹점을 함께 선택했을 때 권한 없는 법인은 실패 처리되는지 확인 - 권한이 있는 부서만 성공 처리되고 권한 없는 부서는 실패 처리되는지 확인 - 일부 성공/일부 실패 시 결과 팝업의 성공/실패 건수가 실제 처리 결과와 일치하는지 확인 - 영업 활성화/비활성화 권한이 없는 상태에서 영업점 상태 변경 시 실패 처리되는지 확인 - 동일 권한/동일 레벨 제한으로 본인 법인 상태 변경이 불가능한지 확인 - 가맹점 상태 변경 가능 권한이 있다면 본인 법인 하위 가맹점만 성공 처리되는지 확인 - 일부 성공/일부 실패 시 성공한 부서만 상태가 변경되고 실패한 부서는 기존 상태가 유지되는지 확인",
  "scope": "dev 환경에서 TA 계정(ta_test_gj)과 CO 계정(한결데법인)으로 업체관리 > 총판관리 > 부서별 운영상태관리 화면에 접근해 TA 연결 법인 범위 제한, CO 본인 법인 범위 제한, 부서 타입별 상태 변경 권한, 일괄 처리 성공/실패 결과 팝업과 목록 재조회 후 상태 유지/변경을 검증한다.",
  "roles": [
    "TA",
    "CO"
  ],
  "subjectAccounts": [
    {
      "role": "TA",
      "label": "ta_test_gj",
      "envRole": "TA_DEPT_STATUS",
      "selectedCorporation": "안법인",
      "forbiddenCorporation": "박재민_법인"
    },
    {
      "role": "CO",
      "label": "한결데법인",
      "envRole": "CO_DEPT_STATUS",
      "selectedCorporation": "박재민_법인",
      "forbiddenCorporation": "안법인"
    }
  ],
  "checklist": [
    "부서별 운영상태관리 화면에서 법인, 가맹점을 선택한 뒤 상태 변경을 진행할 수 있는지 확인",
    "선택한 부서의 상태 변경이 모두 성공한 경우 하단에 성공 안내가 표시되는지 확인",
    "선택한 부서 중 일부만 성공한 경우 부서 상태 변경 결과 팝업이 표시되는지 확인",
    "결과 팝업에서 성공/실패 여부가 구분되어 표시되는지 확인",
    "실패한 부서는 실패 사유가 표시되는지 확인",
    "실패 사유에 내부 식별자처럼 보이는 값이 그대로 노출되지 않는지 확인",
    "'상태 변경할 부서를 찾을 수 없습니다.' 실패 사유가 발생해도 결과 팝업에서 정상적으로 표시되는지 확인",
    "결과 팝업 닫기 버튼 클릭 시 정상적으로 닫히는지 확인",
    "일부 성공 후 목록을 다시 조회했을 때 성공 처리된 부서만 상태가 변경되어 보이는지 확인",
    "실패한 부서는 목록 재조회 후 기존 상태가 유지되는지 확인",
    "전체 실패한 경우 성공 안내 없이 실패 결과 또는 권한 없음 안내를 확인할 수 있는지 확인",
    "일반 상태 변경과 하위 부서 포함 상태 변경 모두 동일한 방식으로 결과가 표시되는지 확인",
    "TA 계정에서 법인 목록 조회 시 연결 법인인 안법인, 황보빈법인만 표시되는지 확인",
    "TA 계정에서 영업점 목록 조회 시 안법인, 황보빈법인 하위 영업점만 표시되는지 확인",
    "TA 계정에서 가맹 목록 조회 시 안법인, 황보빈법인 하위 가맹점만 표시되는지 확인",
    "TA 계정에서 연결되지 않은 법인 및 해당 하위 부서가 목록에 표시되지 않는지 확인",
    "법인 활성화/비활성화 권한이 없는 상태에서 법인 상태 변경 시 실패 처리되는지 확인",
    "법인과 하위 가맹점을 함께 선택했을 때 권한 없는 법인은 실패 처리되는지 확인",
    "권한이 있는 부서만 성공 처리되고 권한 없는 부서는 실패 처리되는지 확인",
    "일부 성공/일부 실패 시 결과 팝업의 성공/실패 건수가 실제 처리 결과와 일치하는지 확인",
    "영업 활성화/비활성화 권한이 없는 상태에서 영업점 상태 변경 시 실패 처리되는지 확인",
    "동일 권한/동일 레벨 제한으로 본인 법인 상태 변경이 불가능한지 확인",
    "가맹점 상태 변경 가능 권한이 있다면 본인 법인 하위 가맹점만 성공 처리되는지 확인",
    "일부 성공/일부 실패 시 성공한 부서만 상태가 변경되고 실패한 부서는 기존 상태가 유지되는지 확인"
  ],
  "setupSteps": [
    {
      "name": "TA 계정 로그인 및 부서별 운영상태관리 접근 확인",
      "kind": "manual-precondition",
      "role": "TA",
      "application": "admin",
      "description": "ta_test_gj 계정은 연결 법인이 안법인, 황보빈법인으로 제한되어 있고 법인 활성화/비활성화 권한이 없는 상태여야 한다. 비밀번호와 2FA는 로컬 환경변수 BIX_ADMIN_DEV_TA_DEPT_STATUS_PASSWORD, BIX_ADMIN_DEV_TA_DEPT_STATUS_2FA로만 주입한다.",
      "required": true,
      "mutation": "none",
      "navigation": {
        "name": "부서별 운영상태관리",
        "path": "/saleline-status-control"
      }
    },
    {
      "name": "CO 계정 로그인 및 부서별 운영상태관리 접근 확인",
      "kind": "manual-precondition",
      "role": "CO",
      "application": "admin",
      "description": "한결데법인 계정은 본인 법인 박재민_법인 기준으로 하위 부서만 조회되어야 하며 영업 활성화/비활성화 권한이 없고 동일 권한/동일 레벨 제한으로 본인 법인 상태 변경이 불가능한 상태여야 한다. 비밀번호와 2FA는 로컬 환경변수 BIX_ADMIN_DEV_CO_DEPT_STATUS_PASSWORD, BIX_ADMIN_DEV_CO_DEPT_STATUS_2FA로만 주입한다.",
      "required": true,
      "mutation": "none",
      "navigation": {
        "name": "부서별 운영상태관리",
        "path": "/saleline-status-control"
      }
    },
    {
      "name": "부서 상태 변경 및 복구 검증",
      "kind": "data-update",
      "role": "TA",
      "application": "admin",
      "description": "일괄 상태 변경 성공/실패, 일부 성공/일부 실패, 하위 부서 포함 처리 결과를 검증한다. 개발계 부서 운영상태가 변경될 수 있으므로 QA_3683_ALLOW_DEPARTMENT_STATUS_MUTATION=1인 경우에만 실제 상태 변경을 수행하고, 성공 처리된 부서는 실행 중 기록한 이전 상태로 복구한다.",
      "required": true,
      "mutation": "temporary",
      "guardEnv": "QA_3683_ALLOW_DEPARTMENT_STATUS_MUTATION",
      "navigation": {
        "name": "부서별 운영상태관리",
        "path": "/saleline-status-control"
      },
      "restore": {
        "required": true,
        "description": "상태 변경 API 응답에서 성공 처리된 부서의 변경 전 상태를 저장하고, 검증 종료 후 동일 화면/API를 통해 이전 상태로 되돌린다."
      }
    }
  ],
  "pages": [
    {
      "name": "부서별 운영상태관리",
      "application": "admin",
      "path": "/saleline-status-control",
      "tenantParam": "tenantId",
      "roles": [
        "TA",
        "CO"
      ],
      "recordsSelector": "body",
      "dataRequestUrlPattern": "saleline|department|status|corporation|vendor|business"
    }
  ]
}
