{
  "issueId": "3553",
  "environment": "dev",
  "source": "Redmine #3553 QA checklist - recovery bond v2 monthly",
  "scenario": "recovery-bond-v2-monthly",
  "sourceText": "주홍석님의 QA 요청입니다\n조지민 프로님 안녕하세요, 비스킷 링크 개발계 QA 요청드립니다\n[1] QA 요청 배경\n- https://itsm.bix.bz/issues/3553\n- 법인계좌 V2 회수채권 조회/해소 기능 QA 요청. 준비된 A_주홍석_일반법인 데이터 기준으로 전체 채권은 등록월 기준, 회수/해소 금액은 회수월 기준, 미회수채권은 등록월 채권의 현재 남은 금액 기준으로 표시되는지 확인 필요. 이미 회수된 금액이 있는 상태에서 추가 결제 회수분이 거래금액 대비 회수비율로 계산되어 회수채권에 합산되는지 확인 필요\n[2] 사전 데이터\n- A_주홍석_일반법인 법인계좌에 총 채권 20,000원 준비: 4월 등록 채권 10,000원, 6월 등록 채권 10,000원\n- 위 채권 중 회수 이력은 전부 6월에 발생하도록 준비: 4월 채권 회수 900원, 6월 채권 회수 98원, 총 회수채권 998원\n- 미회수채권은 총 19,002원 준비: 4월 미회수 9,100원, 6월 미회수 9,902원\n- 회수 금액 계산 기준: 가맹점은 거래금액의 90%, 법인은 거래금액의 4.945%를 회수하며 계산된 금액의 소수점은 버림\n- 이미 6월 회수 이력에 900원과 98원이 있는 상태에서 신규 수기결제 회수분이 비율대로 추가 합산되는지 확인\n- 6월 해소완료 40원, 해소대기 958원 준비\n- 신규 회수채권 확인이 필요한 경우 hsjve40 / <redacted> / <redacted> 계정으로 로그인 후 수기결제를 진행해 회수 이력을 추가 생성\n[3] 사전 작업\n- admin, ta, co 권한 계정으로 법인계좌 V2 메뉴 접근 가능 여부 확인\n- A_주홍석_일반법인 법인계좌를 조회할 수 있는지 확인\n- 신규 회수채권 생성 확인 시 hsjve40 계정으로 로그인해 수기결제 가능 여부 확인\n[4] 권한별 테스트\n- admin\n- ta\n- co\n[5] 검증 대상\n- 법인계좌 V2 목록 화면\n- 법인 월별 회수채권 목록 화면\n- 법인 월별 회수채권 상세/해소 화면\n- 수기결제 화면\n- 법인계좌 이체 화면\n[6] 체크리스트\n- 법인계좌 V2 목록에서 A_주홍석_일반법인의 총채권 20,000원, 회수채권 998원, 미회수채권 19,002원, 해소완료 40원, 해소대기 958원이 준비된 데이터와 일치하는지 확인\n- 이미 6월 회수 이력에 900원이 있는 상태에서 수기결제 후 결제금액의 90%로 계산된 회수금액이 기존 회수채권에 추가 합산되는지 확인\n- 이미 6월 회수 이력에 98원이 있는 상태에서 수기결제 후 결제금액의 4.945%로 계산된 회수금액이 기존 회수채권에 추가 합산되는지 확인\n- 수기결제 후 가맹점 회수채권은 거래금액의 90%로 계산되고 소수점이 버려져 표시되는지 확인\n- 수기결제 후 법인 회수채권은 거래금액의 4.945%로 계산되고 소수점이 버려져 표시되는지 확인\n- 월별 회수채권 목록에서 4월 전체 채권은 10,000원으로 표시되고 6월 회수 이력 금액이 4월 회수채권으로 잡히지 않는지 확인\n- 월별 회수채권 목록에서 4월 미회수채권은 9,100원으로 표시되는지 확인\n- 월별 회수채권 목록에서 6월 전체 채권은 10,000원으로 표시되고 4월 등록 채권 10,000원이 중복 합산되지 않는지 확인\n- 월별 회수채권 목록에서 6월 회수채권 998원, 미회수채권 9,902원, 해소완료 40원, 해소대기 958원이 표시되는지 확인\n- 월별 목록 하단 합계의 전체 채권은 20,000원, 회수채권은 998원, 미회수채권은 19,002원으로 표시되고 중복 합산되지 않는지 확인\n- 6월 상세 진입 시 상단 요약의 전체 채권은 10,000원으로 표시되고, 목록 화면의 6월 전체 채권과 일치하는지 확인\n- 6월 상세 목록에는 4월 등록 채권과 6월 등록 채권이 함께 보이고, 4월 등록 채권 행의 전체 채권 10,000원, 회수 900원, 미회수 9,100원이 맞게 표시되는지 확인\n- 6월 상세 목록에서 6월 등록 채권 행의 전체 채권 10,000원, 회수 98원, 미회수 9,902원, 해소완료 40원, 해소대기 58원이 맞게 표시되는지 확인\n- 회수채권 해소 처리 후 처리 내역에 처리자명이 표시되고, 해소완료와 해소대기 금액이 새로고침 후에도 유지되는지 확인\n- 해소 가능 금액보다 큰 금액을 입력했을 때 처리되지 않고 사용자에게 실패 사유가 보이는지 확인\n- hsjve40 계정으로 수기결제 후 A_주홍석_일반법인 월별 회수채권 화면에서 신규 회수 이력이 해당 회수월에 반영되는지 확인\n- 법인계좌 이체 시 남은 회수채권을 제외한 금액까지만 이체 가능한지 확인",
  "scope": "dev 환경 admin/ta/co 권한으로 법인계좌관리V2의 A_주홍석_일반법인 회수채권 월별 목록/상세/해소 화면을 확인하고, 필요 시 hsjve40 수기결제로 신규 회수 이력을 생성해 거래금액 대비 회수비율 계산과 이체 가능 금액 제한을 검증한다.",
  "roles": [
    "ADMIN",
    "TA",
    "CO"
  ],
  "subjectAccounts": [
    {
      "role": "VE",
      "application": "store",
      "envRole": "LUCY_VE",
      "label": "hsjve40"
    }
  ],
  "checklist": [
    "법인계좌 V2 목록에서 A_주홍석_일반법인의 총채권 20,000원, 회수채권 998원, 미회수채권 19,002원, 해소완료 40원, 해소대기 958원이 준비된 데이터와 일치하는지 확인",
    "이미 6월 회수 이력에 900원이 있는 상태에서 수기결제 후 결제금액의 90%로 계산된 회수금액이 기존 회수채권에 추가 합산되는지 확인",
    "이미 6월 회수 이력에 98원이 있는 상태에서 수기결제 후 결제금액의 4.945%로 계산된 회수금액이 기존 회수채권에 추가 합산되는지 확인",
    "수기결제 후 가맹점 회수채권은 거래금액의 90%로 계산되고 소수점이 버려져 표시되는지 확인",
    "수기결제 후 법인 회수채권은 거래금액의 4.945%로 계산되고 소수점이 버려져 표시되는지 확인",
    "월별 회수채권 목록에서 4월 전체 채권은 10,000원으로 표시되고 6월 회수 이력 금액이 4월 회수채권으로 잡히지 않는지 확인",
    "월별 회수채권 목록에서 4월 미회수채권은 9,100원으로 표시되는지 확인",
    "월별 회수채권 목록에서 6월 전체 채권은 10,000원으로 표시되고 4월 등록 채권 10,000원이 중복 합산되지 않는지 확인",
    "월별 회수채권 목록에서 6월 회수채권 998원, 미회수채권 9,902원, 해소완료 40원, 해소대기 958원이 표시되는지 확인",
    "월별 목록 하단 합계의 전체 채권은 20,000원, 회수채권은 998원, 미회수채권은 19,002원으로 표시되고 중복 합산되지 않는지 확인",
    "6월 상세 진입 시 상단 요약의 전체 채권은 10,000원으로 표시되고, 목록 화면의 6월 전체 채권과 일치하는지 확인",
    "6월 상세 목록에는 4월 등록 채권과 6월 등록 채권이 함께 보이고, 4월 등록 채권 행의 전체 채권 10,000원, 회수 900원, 미회수 9,100원이 맞게 표시되는지 확인",
    "6월 상세 목록에서 6월 등록 채권 행의 전체 채권 10,000원, 회수 98원, 미회수 9,902원, 해소완료 40원, 해소대기 58원이 맞게 표시되는지 확인",
    "회수채권 해소 처리 후 처리 내역에 처리자명이 표시되고, 해소완료와 해소대기 금액이 새로고침 후에도 유지되는지 확인",
    "해소 가능 금액보다 큰 금액을 입력했을 때 처리되지 않고 사용자에게 실패 사유가 보이는지 확인",
    "hsjve40 계정으로 수기결제 후 A_주홍석_일반법인 월별 회수채권 화면에서 신규 회수 이력이 해당 회수월에 반영되는지 확인",
    "법인계좌 이체 시 남은 회수채권을 제외한 금액까지만 이체 가능한지 확인"
  ],
  "setupSteps": [
    {
      "name": "준비 데이터 조회",
      "kind": "manual-precondition",
      "role": "ADMIN",
      "application": "admin",
      "description": "A_주홍석_일반법인의 4월/6월 채권, 6월 회수/해소 금액이 준비된 상태인지 법인계좌관리V2 API와 화면으로 확인한다.",
      "required": true,
      "mutation": "none",
      "navigation": {
        "name": "법인계좌관리V2",
        "path": "/lab/corporation-accounts-v2"
      }
    },
    {
      "name": "수기결제 신규 회수 이력 생성",
      "kind": "data-create",
      "role": "VE",
      "application": "store",
      "description": "신규 회수채권 계산 검증이 필요한 경우 hsjve40 계정으로 수기결제를 생성한다. 카드/인증 정보는 로컬 환경변수로만 주입한다.",
      "required": false,
      "mutation": "temporary",
      "guardEnv": "QA_3553_ALLOW_PAYMENT_MUTATION",
      "navigation": {
        "name": "스토어 수기결제",
        "path": "/face-to-face-payment"
      },
      "restore": {
        "required": true,
        "description": "이번 QA에서 생성한 수기결제는 증거 수집 후 PG 취소 API로 정리한다.",
        "spec": "생성 거래 ID, 금액, 회수채권 반영 확인, PG 취소 결과를 runtime 로그에 남긴다."
      }
    },
    {
      "name": "회수채권 해소/이체 mutation guard",
      "kind": "manual-precondition",
      "role": "ADMIN",
      "application": "admin",
      "description": "해소 처리와 법인계좌 이체는 개발계 데이터 변경이므로 QA_3553_ALLOW_RESOLUTION_MUTATION=1 또는 QA_3553_ALLOW_TRANSFER_MUTATION=1일 때만 실제 실행한다.",
      "required": true,
      "mutation": "temporary",
      "guardEnv": "QA_3553_ALLOW_RESOLUTION_MUTATION",
      "navigation": {
        "name": "법인 월별 회수채권 상세/해소",
        "path": "/lab/corporation-accounts-v2"
      },
      "restore": {
        "required": true,
        "description": "실제 해소/이체 mutation을 실행한 경우 QA 생성 처리 내역을 즉시 되돌리고, 실패 초과 입력 검증은 재조회로 금액 불변을 확인한다.",
        "spec": "처리 전/후 해소완료, 해소대기, 이체 가능 금액과 복구 결과를 runtime 로그에 남긴다."
      }
    }
  ],
  "pages": [
    {
      "name": "법인계좌관리V2",
      "application": "admin",
      "roles": [
        "ADMIN",
        "TA",
        "CO"
      ],
      "path": "/lab/corporation-accounts-v2",
      "tenantParam": "tenantId",
      "dataRequestUrlPattern": "corporation-accounts"
    },
    {
      "name": "법인 월별 회수채권 목록",
      "application": "admin",
      "roles": [
        "ADMIN",
        "TA",
        "CO"
      ],
      "path": "/lab/corporation-accounts-v2",
      "tenantParam": "tenantId",
      "dataRequestUrlPattern": "recovery|bond|debt|collection"
    },
    {
      "name": "법인 월별 회수채권 상세/해소",
      "application": "admin",
      "roles": [
        "ADMIN",
        "TA",
        "CO"
      ],
      "path": "/lab/corporation-accounts-v2",
      "tenantParam": "tenantId",
      "dataRequestUrlPattern": "recovery|bond|debt|collection|resolve"
    },
    {
      "name": "스토어 수기결제",
      "application": "store",
      "roles": [
        "VE"
      ],
      "path": "/face-to-face-payment",
      "tenantParam": "tenantId",
      "dataRequestUrlPattern": "store/identity/payment"
    },
    {
      "name": "법인계좌 이체",
      "application": "admin",
      "roles": [
        "ADMIN",
        "TA",
        "CO"
      ],
      "path": "/account/remittance-manage",
      "tenantParam": "tenantId",
      "dataRequestUrlPattern": "transfer"
    }
  ]
}
