{
  "issue": 4368,
  "issueId": "4368",
  "qaIssueId": "4386",
  "sourceIssueId": "4368",
  "requesterName": "주홍석",
  "task": "[BL] 법인·영업점 부서 정산방식 외부 추가",
  "environment": "dev",
  "status": "PASS",
  "overall": "PASS",
  "updatedAt": "2026-10-26T11:51:28.665125+09:00",
  "counts": {
    "total": 8,
    "passed": 8,
    "failed": 0,
    "blocked": 0,
    "notRun": 0,
    "excluded": 3
  },
  "totalChecklistItems": 8,
  "passed": 8,
  "failed": 0,
  "blocked": 0,
  "notRun": 0,
  "excludedOriginalChecklistItems": [
    4,
    5,
    11
  ],
  "summary": {
    "status": "PASS",
    "passed": 8,
    "failed": 0,
    "blocked": 0,
    "skipped": 0,
    "manualConfirmed": 0,
    "flaky": 0
  },
  "rows": [
    {
      "originalChecklistId": 1,
      "title": "[dev] 법인 신규·수정 외부정산 유지",
      "role": "ADMIN",
      "page": "총판관리 > 법인",
      "checklistItem": "법인 신규·수정 외부정산 유지",
      "action": "로그인한 개발계 인앱 브라우저에서 실제 저장·재진입·다운로드·조회 수행",
      "expected": "해당 화면의 외부정산 값·연결·금액·권한 범위가 요청 기준과 일치한다.",
      "actual": "전용 QA 법인 BP100689 외부·즉시 신규 저장/재진입, BP100687 수동→외부 수정 후 목록·재진입 유지 확인. 증거07,08.",
      "status": "PASS",
      "statusText": "통과",
      "screenshots": [
        "artifacts/screenshots/07-corporation-ui-created-detail.jpg",
        "artifacts/screenshots/08-corporation-ui-updated-reopened.jpg"
      ],
      "logs": [
        "artifacts/logs/07-corporation-ui-created-detail.txt",
        "artifacts/logs/08-corporation-ui-updated-reopened.txt"
      ],
      "files": [],
      "traces": [],
      "error": ""
    },
    {
      "originalChecklistId": 2,
      "title": "[dev] 영업점 신규·수정 외부정산 유지",
      "role": "ADMIN",
      "page": "영업점관리",
      "checklistItem": "영업점 신규·수정 외부정산 유지",
      "action": "로그인한 개발계 인앱 브라우저에서 실제 저장·재진입·다운로드·조회 수행",
      "expected": "해당 화면의 외부정산 값·연결·금액·권한 범위가 요청 기준과 일치한다.",
      "actual": "BP100690 외부정산 UI 신규 등록 후 분→즉시 수정/재진입 유지. 증거09,10.",
      "status": "PASS",
      "statusText": "통과",
      "screenshots": [
        "artifacts/screenshots/09-branch-ui-created-reopened.jpg",
        "artifacts/screenshots/10-branch-ui-updated-reopened.jpg"
      ],
      "logs": [
        "artifacts/logs/09-branch-ui-created-reopened.txt",
        "artifacts/logs/10-branch-ui-updated-reopened.txt"
      ],
      "files": [],
      "traces": [],
      "error": ""
    },
    {
      "originalChecklistId": 3,
      "title": "[dev] 법인·영업점 엑셀 외부정산 선택목록",
      "role": "ADMIN",
      "page": "법인·영업점 엑셀 다운로드",
      "checklistItem": "법인·영업점 엑셀 외부정산 선택목록",
      "action": "로그인한 개발계 인앱 브라우저에서 실제 저장·재진입·다운로드·조회 수행",
      "expected": "해당 화면의 외부정산 값·연결·금액·권한 범위가 요청 기준과 일치한다.",
      "actual": "법인 N, 영업점 S 선택목록 외부정산 포함. 다운로드 값은 법인/영업점 EXTERNAL, 가맹점 외부정산. 두 코드가 외부정산을 표현함을 UI 외부 값과 대조. 재업로드 수용 여부는 범위 제외.",
      "status": "PASS",
      "statusText": "통과",
      "screenshots": [],
      "logs": [],
      "files": [
        "artifacts/files/corporation-export-updated.xlsx",
        "artifacts/files/branch-export-updated.xlsx",
        "artifacts/files/vendor-export-original.xlsx",
        "artifacts/files/download-observations.json"
      ],
      "traces": [],
      "error": ""
    },
    {
      "originalChecklistId": 6,
      "title": "[dev] 가맹점 외부정산 회귀",
      "role": "ADMIN",
      "page": "가맹점관리",
      "checklistItem": "가맹점 외부정산 회귀",
      "action": "로그인한 개발계 인앱 브라우저에서 실제 저장·재진입·다운로드·조회 수행",
      "expected": "해당 화면의 외부정산 값·연결·금액·권한 범위가 요청 기준과 일치한다.",
      "actual": "전용 가맹점 BP100696 외부정산 UI 신규/수정 및 재진입 유지 확인(20,21). 다운로드 U2 외부정산 유지. 업로드 하위 검증은 범위 제외.",
      "status": "PASS",
      "statusText": "통과",
      "screenshots": [
        "artifacts/screenshots/20-vendor-ui-created-detail.jpg",
        "artifacts/screenshots/21-vendor-ui-updated-reopened.jpg"
      ],
      "logs": [
        "artifacts/logs/20-vendor-ui-created-detail.txt",
        "artifacts/logs/21-vendor-ui-updated-reopened.txt"
      ],
      "files": [],
      "traces": [],
      "error": ""
    },
    {
      "originalChecklistId": 7,
      "title": "[dev] 계약·MID·영업라인 연결",
      "role": "ADMIN",
      "page": "가맹점 영업라인",
      "checklistItem": "계약·MID·영업라인 연결",
      "action": "로그인한 개발계 인앱 브라우저에서 실제 저장·재진입·다운로드·조회 수행",
      "expected": "해당 화면의 외부정산 값·연결·금액·권한 범위가 요청 기준과 일치한다.",
      "actual": "영업라인 상세에서 코페이 계약 QA4368_코페이_외부정산_1026 / MID QA43681026 / 법인 BP100683 2% → 영업점 BP100684 3% → 가맹점 BP100685 4% 정상 연결. 증거18,19.",
      "status": "PASS",
      "statusText": "통과",
      "screenshots": [
        "artifacts/screenshots/18-vendor-external-and-binding-list.jpg",
        "artifacts/screenshots/19-contract-mid-salesline-binding.jpg"
      ],
      "logs": [
        "artifacts/logs/18-vendor-external-and-binding-list.txt",
        "artifacts/logs/19-contract-mid-salesline-binding.txt"
      ],
      "files": [],
      "traces": [],
      "error": ""
    },
    {
      "originalChecklistId": 8,
      "title": "[dev] 승인·취소 상쇄 및 순거래1004원",
      "role": "ADMIN",
      "page": "거래내역",
      "checklistItem": "승인·취소 상쇄 및 순거래1004원",
      "action": "로그인한 개발계 인앱 브라우저에서 실제 저장·재진입·다운로드·조회 수행",
      "expected": "해당 화면의 외부정산 값·연결·금액·권한 범위가 요청 기준과 일치한다.",
      "actual": "MID QA43681026 필터에서3건: 승인101004원/취소100000원/순1004원. QA4368SMALL20261026091606 및 원승인/취소 QA4368EXT20261026091457 연결, BP100685·코페이 계약 확인. 증거23~26.",
      "status": "PASS",
      "statusText": "통과",
      "screenshots": [
        "artifacts/screenshots/23-trade-1004-net-summary.jpg",
        "artifacts/screenshots/24-trade-vendor-amounts.jpg",
        "artifacts/screenshots/25-trade-approval-cancel-status.jpg",
        "artifacts/screenshots/26-trade-tid-mid-order-link.jpg"
      ],
      "logs": [
        "artifacts/logs/23-trade-1004-net-summary.txt",
        "artifacts/logs/24-trade-vendor-amounts.txt",
        "artifacts/logs/25-trade-approval-cancel-status.txt",
        "artifacts/logs/26-trade-tid-mid-order-link.txt"
      ],
      "files": [],
      "traces": [],
      "error": ""
    },
    {
      "originalChecklistId": 9,
      "title": "[dev] 외부정산 완료·시도X·완료O",
      "role": "ADMIN",
      "page": "정산내역",
      "checklistItem": "외부정산 완료·시도X·완료O",
      "action": "로그인한 개발계 인앱 브라우저에서 실제 저장·재진입·다운로드·조회 수행",
      "expected": "해당 화면의 외부정산 값·연결·금액·권한 범위가 요청 기준과 일치한다.",
      "actual": "외부 필터 8건 모두 완료, 시도X·완료O. 증거01~03.",
      "status": "PASS",
      "statusText": "통과",
      "screenshots": [
        "artifacts/screenshots/27-settlement-final-qa-department-filter.jpg",
        "artifacts/screenshots/28-settlement-final-completed-attempt-x.jpg"
      ],
      "logs": [
        "artifacts/logs/27-settlement-final-qa-department-filter.txt",
        "artifacts/logs/28-settlement-final-completed-attempt-x.txt"
      ],
      "files": [],
      "traces": [],
      "error": ""
    },
    {
      "originalChecklistId": 10,
      "title": "[dev] 정산액10/10/963·순983원",
      "role": "ADMIN",
      "page": "정산내역",
      "checklistItem": "정산액10/10/963·순983원",
      "action": "로그인한 개발계 인앱 브라우저에서 실제 저장·재진입·다운로드·조회 수행",
      "expected": "해당 화면의 외부정산 값·연결·금액·권한 범위가 요청 기준과 일치한다.",
      "actual": "법인10원, 영업점10원, 가맹점 -95037+96000=963원, 전체983원. 증거01~03.",
      "status": "PASS",
      "statusText": "통과",
      "screenshots": [
        "artifacts/screenshots/29-settlement-final-net-983.jpg"
      ],
      "logs": [
        "artifacts/logs/29-settlement-final-net-983.txt"
      ],
      "files": [],
      "traces": [],
      "error": ""
    }
  ],
  "deploymentCommitVerified": false,
  "method": "logged-in Codex in-app browser; UI forms and downloaded xlsx XML validation; no extra payment or payout",
  "notificationPolicy": "사용자 재승인: 개발계 완료 알림1회, 주홍석만 멘션. 배포 검증 후 수동 전송하여 중복 알림 방지.",
  "unitTests": "개발자 제공37건 통과는 독립 QA 집계에서 제외",
  "settlementNet": {
    "corporation": 10,
    "branch": 10,
    "vendor": 963,
    "total": 983
  },
  "tradeNet": {
    "approval": 101004,
    "cancellation": 100000,
    "net": 1004
  },
  "excludedRows": [
    {
      "originalChecklistId": 11,
      "title": "[dev] ADMIN/TA/CO/BO/VE 화면·권한",
      "role": "TA/CO/BO/VE",
      "page": "역할별 조회·수정 범위",
      "checklistItem": "ADMIN/TA/CO/BO/VE 화면·권한",
      "action": "테스트 부서 연결 역할 계정의 준비 여부 확인",
      "expected": "해당 화면의 외부정산 값·연결·금액·권한 범위가 요청 기준과 일치한다.",
      "actual": "ADMIN 세션 검증 수행. 프로젝트 .env.local 및 BIX_ADMIN_DEV_TA/CO/BO/VE 자격정보 없음. 테스트 부서에 연결된 역할 계정 미준비로 범위분리 확인 불가; 권한/공유 프리셋 변경하지 않음.",
      "status": "EXCLUDED",
      "statusText": "확인 불가",
      "screenshots": [],
      "logs": [
        "artifacts/logs/role-prerequisites.md"
      ],
      "files": [],
      "traces": [],
      "error": "테스트 부서에 연결된 역할별 로그인 계정 미준비",
      "previousStatus": "BLOCKED",
      "exclusionReason": "2026-10-26 주홍석 사용자 요청: 남은 권한 검증1건을 QA 범위에서 제외하고 완료 집계를 정리한다. 미준비 계정의 권한 검증을 통과로 바꾸지 않고 최종 집계에서 제외한다."
    }
  ],
  "scopeChange": {
    "at": "2026-10-26T11:51:28.665125+09:00",
    "requesterName": "주홍석",
    "excludedOriginalChecklistIds": [
      4,
      5,
      11
    ],
    "reason": "2026-10-26 주홍석 사용자 요청: 남은 권한 검증1건을 QA 범위에서 제외하고 완료 집계를 정리한다. 미준비 계정의 권한 검증을 통과로 바꾸지 않고 최종 집계에서 제외한다."
  }
}
