{
  "issueId": "3485",
  "environment": "dev",
  "scenario": "company-profit-aggregate",
  "source": "Redmine #3485 QA checklist",
  "sourceText": "김경주님의 QA 요청입니다\n조지민 프로님 안녕하세요, 비스킷 링크 개발계 QA 요청드립니다\n[1] QA 요청 배경\n- https://itsm.bix.bz/issues/3485\n[2] 사전 데이터\n- 2026년 4월: 마감하지 않은 상태 데이터 준비\n- 2026년 5월: 마감완료 상태 데이터 준비\n- 2026년 6월: 마감완료 상태 데이터 준비\n- 조회 기간 내 결제내역이 있는 업체 준비\n- 조회 기간 내 완료 이체내역이 있는 업체 준비\n- 플랫폼 수수료율 입력 후 마감 저장을 확인할 수 있는 업체 준비\n- 거래내역 Mongo 싱크가 맞지 않는 데이터가 많아 2026년 5월 데이터만 보정해두었습니다. 매출금 대조는 2026년 5월 거래내역 기준으로 확인 부탁드립니다.\n[3] 사전 작업\n- admin 계정으로 로그인\n- 실험실 > 업체별 수익집계 메뉴 접근 가능 여부 확인\n- 거래내역, 이체내역 등 대조 화면 접근 가능 여부 확인\n[4] 권한별 테스트\n- admin\n[5] 검증 대상\n- 실험실 > 업체별 수익집계 화면\n- 테넌트관리 > 도메인설정\n- 영업법인/영업대행사 계정과목\n[6] 체크리스트\n- 테넌트관리 > 도메인설정에서 업체 수정 시 이체 수수료 기준 단가를 수정할 수 있는지 확인\n- 테넌트관리 > 도메인설정에서 업체 생성 시 이체 수수료 기준 단가를 입력/수정할 수 있는지 확인\n- 영업법인/영업대행사 계정과목의 정책 타입에서 플랫폼 수수료 리스트가 표시되는지 확인\n- 영업법인/영업대행사 계정과목에서 플랫폼 수수료 정책 타입 선택 후 저장되는지 확인\n- 영업법인/영업대행사 계정과목 추가 시 플랫폼 수수료 정책 타입으로 추가할 수 있는지 확인\n- 2026년 4월 조회 시 마감 전 상태로 표시되고 원장 기준 데이터가 보이는지 확인\n- 2026년 5월 조회 시 마감완료 상태로 표시되고 저장된 마감 데이터가 보이는지 확인\n- 2026년 6월 조회 시 마감완료 상태로 표시되고 저장된 마감 데이터가 보이는지 확인\n- 마감 전, 마감완료, 재마감 원장 확인 상태 문구가 화면에 정상 표시되는지 확인\n- 마감완료 상태에서는 플랫폼 수수료율 입력 항목이 수정되지 않도록 동결되어 있는지 확인\n- 재마감 버튼 클릭 후 원장 확인 상태로 전환되면 거래, 이체 원장으로 화면이 전환되고 플랫폼 수수료율 입력 항목을 수정할 수 있는지 확인\n- 업체별 수익집계 화면에서 기간 선택 시 업체별 데이터가 조회되는지 확인\n- 화면 상단 요약 금액/건수가 하단 표의 업체별 합계와 일치하는지 확인\n- 매출금은 2026년 5월 기준으로 같은 기간/업체의 거래내역 금액 합계와 대조해 확인\n- 이체수수료는 같은 기간/업체의 이체내역에서 이체 수수료 합계와 대조해 확인\n- 완료 이체건수는 같은 기간/업체의 이체내역에서 완료 상태 건수와 대조해 확인\n- 이체수수료 기준금액은 완료 이체건수 * 업체별 이체수수료 기준 단가로 계산되는지 확인\n- 이체수수료 추가청구액은 이체수수료 기준금액 - 실제 이체수수료로 계산되는지 확인\n- 플랫폼 수수료는 매출금과 입력한 플랫폼 수수료율 기준으로 계산되는지 확인\n- 플랫폼 수수료율 입력 항목에 음수값이 입력되지 않는지 확인\n- 플랫폼 수수료 계산 결과가 음수인 경우 화면에 0으로 표시되는지 확인\n- 마감 저장 시 입력한 이체수수료 단가, 플랫폼 수수료율 기준으로 마감 데이터가 저장되는지 확인\n- 마감완료 상태에서 다시 화면 진입 시 저장된 마감 데이터가 동일하게 표시되는지 확인\n- 재마감 클릭 시 최신 원장 데이터 기준으로 다시 조회되는지 확인\n- 업체명 검색 시 목록과 합계가 검색된 업체 기준으로 표시되는지 확인",
  "scope": "dev 환경 ADMIN 계정으로 업체별 수익집계의 2026-04 마감 전 원장, 2026-05/06 마감완료 스냅샷, 도메인설정 이체수수료 기준 단가 입력, 영업대행사/법인 계정과목의 플랫폼 수수료 정책 타입 노출 및 저장 가능 여부를 화면 증거와 API 대조로 검증한다.",
  "checklist": [
    "테넌트관리 > 도메인설정에서 업체 수정 시 이체 수수료 기준 단가를 수정할 수 있는지 확인",
    "테넌트관리 > 도메인설정에서 업체 생성 시 이체 수수료 기준 단가를 입력/수정할 수 있는지 확인",
    "영업법인/영업대행사 계정과목의 정책 타입에서 플랫폼 수수료 리스트가 표시되는지 확인",
    "영업법인/영업대행사 계정과목에서 플랫폼 수수료 정책 타입 선택 후 저장되는지 확인",
    "영업법인/영업대행사 계정과목 추가 시 플랫폼 수수료 정책 타입으로 추가할 수 있는지 확인",
    "2026년 4월 조회 시 마감 전 상태로 표시되고 원장 기준 데이터가 보이는지 확인",
    "2026년 5월 조회 시 마감완료 상태로 표시되고 저장된 마감 데이터가 보이는지 확인",
    "2026년 6월 조회 시 마감완료 상태로 표시되고 저장된 마감 데이터가 보이는지 확인",
    "마감 전, 마감완료, 재마감 원장 확인 상태 문구가 화면에 정상 표시되는지 확인",
    "마감완료 상태에서는 플랫폼 수수료율 입력 항목이 수정되지 않도록 동결되어 있는지 확인",
    "재마감 버튼 클릭 후 원장 확인 상태로 전환되면 거래, 이체 원장으로 화면이 전환되고 플랫폼 수수료율 입력 항목을 수정할 수 있는지 확인",
    "업체별 수익집계 화면에서 기간 선택 시 업체별 데이터가 조회되는지 확인",
    "화면 상단 요약 금액/건수가 하단 표의 업체별 합계와 일치하는지 확인",
    "매출금은 2026년 5월 기준으로 같은 기간/업체의 거래내역 금액 합계와 대조해 확인",
    "이체수수료는 같은 기간/업체의 이체내역에서 이체 수수료 합계와 대조해 확인",
    "완료 이체건수는 같은 기간/업체의 이체내역에서 완료 상태 건수와 대조해 확인",
    "이체수수료 기준금액은 완료 이체건수 * 업체별 이체수수료 기준 단가로 계산되는지 확인",
    "이체수수료 추가청구액은 이체수수료 기준금액 - 실제 이체수수료로 계산되는지 확인",
    "플랫폼 수수료는 매출금과 입력한 플랫폼 수수료율 기준으로 계산되는지 확인",
    "플랫폼 수수료율 입력 항목에 음수값이 입력되지 않는지 확인",
    "플랫폼 수수료 계산 결과가 음수인 경우 화면에 0으로 표시되는지 확인",
    "마감 저장 시 입력한 이체수수료 단가, 플랫폼 수수료율 기준으로 마감 데이터가 저장되는지 확인",
    "마감완료 상태에서 다시 화면 진입 시 저장된 마감 데이터가 동일하게 표시되는지 확인",
    "재마감 클릭 시 최신 원장 데이터 기준으로 다시 조회되는지 확인",
    "업체명 검색 시 목록과 합계가 검색된 업체 기준으로 표시되는지 확인"
  ],
  "roles": [],
  "setupSteps": [
    {
      "name": "2026년 4월/5월/6월 수익집계 사전 데이터 확인",
      "kind": "manual-precondition",
      "role": "ADMIN",
      "application": "admin",
      "description": "2026년 4월은 미마감 원장 데이터, 2026년 5월과 6월은 마감완료 스냅샷 데이터가 준비되어 있어야 한다. 2026년 5월은 거래내역/이체내역 대조 기준 데이터로 사용한다.",
      "required": true,
      "mutation": "none",
      "navigation": {
        "name": "업체별 수익집계",
        "path": "/lab/tenant-profit-statistics"
      }
    }
  ],
  "pages": [
    {
      "name": "업체별 수익집계",
      "application": "admin",
      "path": "/lab/tenant-profit-statistics",
      "tenantParam": "tenantId",
      "monthSelector": "input[type='month']",
      "searchButtonSelector": "button:has-text('검색'), button:has-text('조회')",
      "dataRequestUrlPattern": "tenant-profit-statistics",
      "filters": [
        {
          "name": "업체명",
          "selector": "input[placeholder*='업체명']",
          "type": "textbox",
          "value": "빅스페이먼츠",
          "queryParam": "tenantName",
          "queryParamCandidates": [
            "tenantName"
          ]
        }
      ]
    },
    {
      "name": "도메인설정",
      "application": "admin",
      "path": "/admin/tenant",
      "tenantParam": "tenantId",
      "searchButtonSelector": "button:has-text('검색'), button:has-text('조회')"
    },
    {
      "name": "영업대행사 계정과목",
      "application": "admin",
      "path": "/sales-agency/account-subject-sales-agency",
      "tenantParam": "tenantId",
      "searchButtonSelector": "button:has-text('검색'), button:has-text('조회')"
    },
    {
      "name": "법인계정과목",
      "application": "admin",
      "path": "/sales-agency/account-subject-agency",
      "tenantParam": "tenantId",
      "searchButtonSelector": "button:has-text('검색'), button:has-text('조회')"
    },
    {
      "name": "거래내역",
      "application": "admin",
      "path": "/admin/transactions",
      "tenantParam": "tenantId",
      "dataRequestUrlPattern": "/api/v2/transactions"
    },
    {
      "name": "이체내역",
      "application": "admin",
      "path": "/account/transfer-details",
      "tenantParam": "tenantId",
      "dataRequestUrlPattern": "/api/v1/transfer/transaction"
    }
  ]
}
