{
  "issueId": "3657",
  "environment": "dev",
  "source": "Redmine #3657 + user-provided QA checklist 2026-07-03",
  "scenario": "settlement-excel-department-codes",
  "sourceText": "김경주님의 QA 요청입니다. 조지민 프로님 안녕하세요, 비스킷 링크 개발계 QA 요청드립니다. [1] QA 요청 배경 - https://itsm.bix.bz/issues/3657 - 정산관리 > 정산내역 엑셀 다운로드 파일에서 정산대상 식별을 쉽게 할 수 있도록 법인, 법인하위, 상위, 상호명 앞에 각각 고유코드 컬럼을 추가했습니다. [2] 사전 데이터 - 개발계에서 정산내역이 조회되는 법인/영업점/가맹점 정산 데이터 준비 - 고유코드를 확인할 수 있는 법인, 법인하위, 상위 상호, 상호 데이터가 포함된 정산 건 준비. [3] 사전 작업 - admin 계정으로 로그인 가능 여부 확인 - 어드민 > 정산관리 > 정산내역 메뉴 접근 가능 여부 확인 - 정산내역 조회 조건을 선택한 뒤 엑셀 다운로드가 가능한 상태인지 확인. [4] 권한별 테스트 - admin. [5] 검증 대상 - 어드민 정산관리 > 정산내역 화면 - 정산내역 엑셀 다운로드 파일 - 법인/법인하위/상위/상호명 및 각 고유코드 표시. [6] 체크리스트 - 어드민 정산관리 > 정산내역 화면에서 조회 조건을 선택하고 엑셀 다운로드를 실행했을 때 파일이 정상 생성되는지 확인 - 다운로드된 엑셀에서 '법인 고유코드' 컬럼이 '법인명' 바로 앞에 표시되는지 확인 - 다운로드된 엑셀에서 '법인하위 고유코드' 컬럼이 '법인하위 상호명' 바로 앞에 표시되는지 확인 - 다운로드된 엑셀에서 '상위 고유코드' 컬럼이 '상위 상호명' 바로 앞에 표시되는지 확인 - 다운로드된 엑셀에서 '상호 고유코드' 컬럼이 '상호명' 바로 앞에 표시되는지 확인 - 정산일, 구분, 선정산 여부, 은행명, 예금주명, 계좌번호, 매출금, 정산금, 상태, 비고 등 기존 컬럼 값이 밀리거나 누락되지 않았는지 확인 - 같은 조회 조건에서 화면 목록과 엑셀 다운로드 대상 정산 건이 일치하는지 확인",
  "scope": "dev 환경 ADMIN 계정으로 정산관리 > 정산내역 화면에서 조회 조건을 적용하고 엑셀을 생성/다운로드한 뒤, 법인/법인하위/상위/상호 고유코드 컬럼 위치와 기존 컬럼 정렬, 화면 조회 대상과 엑셀 데이터 일치 여부를 검증한다.",
  "roles": [
    "ADMIN"
  ],
  "subjectAccounts": [
    {
      "role": "ADMIN",
      "label": "bigs_jjm",
      "envRole": "ADMIN"
    }
  ],
  "checklist": [
    "어드민 정산관리 > 정산내역 화면에서 조회 조건을 선택하고 엑셀 다운로드를 실행했을 때 파일이 정상 생성되는지 확인",
    "다운로드된 엑셀에서 '법인 고유코드' 컬럼이 '법인명' 바로 앞에 표시되는지 확인",
    "다운로드된 엑셀에서 '법인하위 고유코드' 컬럼이 '법인하위 상호명' 바로 앞에 표시되는지 확인",
    "다운로드된 엑셀에서 '상위 고유코드' 컬럼이 '상위 상호명' 바로 앞에 표시되는지 확인",
    "다운로드된 엑셀에서 '상호 고유코드' 컬럼이 '상호명' 바로 앞에 표시되는지 확인",
    "정산일, 구분, 선정산 여부, 은행명, 예금주명, 계좌번호, 매출금, 정산금, 상태, 비고 등 기존 컬럼 값이 밀리거나 누락되지 않았는지 확인",
    "같은 조회 조건에서 화면 목록과 엑셀 다운로드 대상 정산 건이 일치하는지 확인"
  ],
  "setupSteps": [
    {
      "name": "ADMIN 개발계 로그인 및 정산내역 접근",
      "kind": "state-verify",
      "role": "ADMIN",
      "application": "admin",
      "description": "ADMIN 계정으로 개발계 전산에 로그인하고 정산관리 > 정산내역 화면에 접근 가능해야 한다.",
      "required": true,
      "mutation": "none",
      "navigation": {
        "name": "정산내역",
        "path": "/settlement-history/settlement-details"
      }
    },
    {
      "name": "고유코드 확인 가능한 정산 데이터 준비",
      "kind": "manual-precondition",
      "role": "ADMIN",
      "application": "admin",
      "description": "정산내역 조회 결과와 엑셀에 법인, 법인하위, 상위 상호, 상호명이 포함된 데이터가 있어야 하며 각 항목의 고유코드를 화면/엑셀에서 식별할 수 있어야 한다.",
      "required": true,
      "mutation": "none"
    }
  ],
  "pages": [
    {
      "name": "정산내역",
      "application": "admin",
      "path": "/settlement-history/settlement-details",
      "tenantParam": "tenantId",
      "roles": [
        "ADMIN"
      ],
      "searchButtonSelector": "button:has-text('검색'), button:has-text('조회'), [data-testid='search-button']",
      "recordsSelector": "table tbody tr, [role='row']",
      "excelDocumentPath": "/document",
      "excelDocumentFileNameIncludes": "정산내역",
      "excelDocumentDownloadSelector": "a:has-text(\"다운로드\"), button:has-text(\"다운로드\"), [role='button']:has-text(\"다운로드\")",
      "excelResponseUrlPattern": "\\.xlsx(\\?|$)|cloudflarestorage.*excel",
      "excelDocumentReadyTimeoutMs": 90000,
      "excelExpectedColumnHeaders": [
        "법인 고유코드",
        "법인명",
        "법인하위 고유코드",
        "법인하위 상호명",
        "상위 고유코드",
        "상위 상호명",
        "상호 고유코드",
        "상호명"
      ],
      "dataRequestUrlPattern": "settlement"
    }
  ]
}
