{
  "issueId": "3448",
  "environment": "dev",
  "scenario": "settlement-bank-account-excel",
  "source": "Redmine #3448 re-QA + user-provided checklist 2026-05-29",
  "sourceText": "주홍석님의 재 QA 요청입니다. 조지민 프로님 안녕하세요, 비스킷 링크 개발계 QA 요청드립니다. [1] QA 요청 배경 https://itsm.bix.bz/issues/3448. 이전 QA 결과 https://bix-qa.pages.dev/qa/issues/3448/dev/#qa-result-6. TA/CO 권한 범위 및 TA 정산내역 엑셀 버튼 노출 관련 권한을 추가했습니다. BO 권한은 정산 이력이 없는 경우 데이터 행 검증이 불가하므로, 이력이 없으면 헤더 노출 여부 중심으로 확인 부탁드립니다. [2] 사전 데이터 이전 QA 실패/확인불가 건 중심 재확인. [3] 사전 작업 추가된 권한 반영 후 TA/CO/BO 계정으로 로그인, 정산내역 화면 접근 및 엑셀 다운로드 버튼 노출 여부 확인. [4] 권한별 테스트 ta, co, bo. [5] 검증 대상 TA 정산내역 화면 접근 및 권한 범위 조회, TA 정산내역 엑셀 다운로드 버튼 및 엑셀 컬럼, CO 정산내역 화면 접근 및 권한 범위 조회, BO 정산내역 엑셀 다운로드 파일 헤더. [6] 체크리스트: TA 목록/총 건수 요약 권한 범위 노출, TA 엑셀 다운로드 버튼 노출, TA 엑셀 은행명/은행코드 예금주명 계좌번호 컬럼, CO 목록/총 건수 요약 권한 범위 노출, BO 엑셀 헤더 은행명/은행코드 예금주명 계좌번호 컬럼, 데이터 행이 있는 경우 은행/예금주/계좌번호 값 저장값 일치 확인. 계좌번호 원문은 런타임 env에서만 사용하고 커밋 산출물에는 마스킹합니다.",
  "scope": "비스킷 링크 개발계 TA/CO/BO 권한으로 #3448 이전 실패/확인불가 항목을 재확인합니다. TA/CO는 정산내역 화면 권한 범위와 TA 엑셀 버튼/컬럼을 확인하고, BO는 정산 이력이 없으면 데이터 값 검증 대신 정산내역 엑셀 헤더 노출을 확인합니다.",
  "checklist": [
    "TA 계정에서 정산내역 화면의 목록/총 건수 요약이 권한 범위에 맞게 보이는지 확인",
    "TA 계정에서 정산내역 엑셀 다운로드 버튼이 보이는지 확인",
    "TA 계정으로 엑셀 다운로드 후 '은행명 / 은행코드', '예금주명', '계좌번호' 컬럼이 보이는지 확인",
    "CO 계정에서 정산내역 화면의 목록/총 건수 요약이 권한 범위에 맞게 보이는지 확인",
    "BO 계정에서 정산내역 엑셀 헤더에 '은행명 / 은행코드', '예금주명', '계좌번호' 컬럼이 보이는지 확인",
    "데이터 행이 있는 경우 은행/예금주/계좌번호 값이 부서에 저장된 값과 동일한지 확인"
  ],
  "roles": [
    "TA",
    "CO",
    "BO"
  ],
  "setupSteps": [
    {
      "name": "추가 권한 반영 및 정산 계좌 사전 데이터 확인",
      "kind": "manual-precondition",
      "role": "ADMIN",
      "application": "admin",
      "targetRoles": [
        "TA",
        "CO",
        "BO"
      ],
      "description": "개발계 TA/CO/BO 계정에 추가 권한이 반영되어 있어야 합니다. 계좌번호 원문을 포함한 사전 데이터는 QA_3448_SETTLEMENT_ACCOUNT_FIXTURES_JSON 런타임 env로만 주입하고, 리포트와 커밋 산출물에는 마스킹된 값만 남깁니다.",
      "required": true,
      "mutation": "none"
    }
  ],
  "pages": [
    {
      "name": "정산내역",
      "application": "admin",
      "path": "/settlement-history/settlement-details",
      "tenantParam": "tenantId",
      "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": 60000,
      "excelExpectedColumnHeaders": [
        "은행명 / 은행코드",
        "예금주명",
        "계좌번호"
      ],
      "dataRequestUrlPattern": "settlement",
      "roles": [
        "TA",
        "CO",
        "BO"
      ]
    }
  ]
}
