{
  "issueId": "3924",
  "environment": "dev",
  "scenario": "branch-profit-excel-organization-line",
  "source": "Redmine #3924 + user-provided QA checklist 2026-07-31",
  "sourceText": "송인준님의 QA 요청입니다. 비스킷 링크 개발계 매출집계 > 영업점매출집계에서 집계일자 2026-07-01 ~ 2026-07-31, 가맹점명 A_주홍석*가맹4*루시페이먼츠 또는 박재민_가맹 조건으로 조회하고, 엑셀 다운로드 시 동일 가맹점이 2개 행으로 구분되어 표시되는지 ADMIN, TA, CO, BO 권한별로 확인합니다. Redmine: https://itsm.bix.bz/issues/3924",
  "scope": "개발계 기본 ADMIN/TA/CO/BO 계정으로 영업점 수익 집계 화면과 조회 API를 확인하고, 같은 검색 조건의 비동기 엑셀을 생성해 문서보관함 링크에서 실제 XLSX를 내려받아 동일 가맹점 ID가 영업라인별 독립 행으로 구분되는지 검증한다.",
  "roles": [
    "ADMIN",
    "TA",
    "CO",
    "BO"
  ],
  "subjectAccounts": [
    {
      "role": "ADMIN",
      "label": "기본 개발계 ADMIN",
      "envRole": "ADMIN"
    },
    {
      "role": "TA",
      "label": "기본 개발계 TA",
      "envRole": "TA"
    },
    {
      "role": "CO",
      "label": "기본 개발계 CO",
      "envRole": "CO"
    },
    {
      "role": "BO",
      "label": "기본 개발계 BO",
      "envRole": "BO"
    }
  ],
  "fixtures": {
    "from": "2026-07-01",
    "to": "2026-07-31",
    "merchantCandidates": [
      "A_주홍석_가맹4_루시페이먼츠",
      "A_주홍석",
      "박재민_가맹"
    ]
  },
  "checklist": [
    "엑셀 다운로드 시 동일 가맹점이 영업라인 기준 2개 이상의 독립 행으로 구분되어 보이는지 확인"
  ],
  "setupSteps": [
    {
      "name": "권한별 영업점 수익 집계 접근 확인",
      "kind": "state-verify",
      "role": "ADMIN/TA/CO/BO",
      "application": "admin",
      "description": "명시 계정이 없으므로 로컬 환경변수에 등록된 기본 ADMIN, TA, CO, BO 계정으로 영업점 수익 집계 화면 접근을 확인한다.",
      "required": true
    },
    {
      "name": "동일 가맹점 복수 영업라인 집계 데이터 확인",
      "kind": "state-verify",
      "role": "ADMIN/TA/CO/BO",
      "application": "admin",
      "description": "2026-07-01 ~ 2026-07-31 범위에서 요청된 가맹점명 후보 중 동일 가맹점 ID가 영업라인별로 2건 이상 조회되는 데이터를 선택한다.",
      "required": true
    }
  ],
  "pages": [
    {
      "name": "영업점 수익 집계",
      "application": "admin",
      "path": "/branch-profit-aggregate",
      "tenantParam": "tenantId",
      "roles": [
        "ADMIN",
        "TA",
        "CO",
        "BO"
      ],
      "recordsSelector": "body",
      "searchButtonSelector": "button:has-text('검색'), button:has-text('조회')",
      "excelDownloadButtonSelector": "button:has-text('엑셀')",
      "excelDocumentReadyTimeoutMs": 180000,
      "dataRequestUrlPattern": "/v1/profit/branch",
      "filters": [
        {
          "name": "집계일자",
          "selector": "input[type='date']",
          "type": "textbox",
          "value": "2026-07-01 ~ 2026-07-31",
          "queryParamCandidates": [
            "from",
            "to"
          ]
        },
        {
          "name": "가맹점명",
          "selector": "input[placeholder*='가맹점'], input[aria-label*='가맹점']",
          "type": "textbox",
          "value": "A_주홍석_가맹4_루시페이먼츠 또는 박재민_가맹",
          "queryParamCandidates": [
            "vendorName"
          ]
        }
      ]
    }
  ]
}
