{
  "issueId": "3125",
  "environment": "dev",
  "source": "Redmine #3125 QA checklist",
  "scenario": "wallet-bulk-transfer",
  "sourceText": "이의현님의 QA 요청입니다\n조지민 프로님 안녕하세요, 비스킷 링크 개발계 QA 요청드립니다\n[1] QA 요청 배경\n- https://itsm.bix.bz/issues/3125\n- 지갑 관리 화면 '지갑 복수이체' 기능 재QA 요청드립니다. 이전 QA에서 (1) 이체 진행 중 두 번째 확인 팝업을 놓쳐 실패, (2) 법인 계정에서 본인 지갑 외 다른 법인 지갑까지 노출되는 이슈가 있어 수정 후 재요청. 이체 흐름은 [이체 버튼 → 1차 확인 swal → 응답 수신 → 2차 안내 swal → 결과 테이블 갱신] 순서이며, 두 swal 모두 '확인'을 눌러야 다음 단계로 진행됩니다.\n[2] 사전 데이터\n- 어드민 테스트 계정: bigs_jjm (법인지갑 관리자 이체 권한 부여 완료)\n- 법인 테스트 계정: jjmco01 (기본 선택될 지갑: A_주홍석_법인)\n- 수취 계좌: 카카오뱅크 3333088854750 이의현\n[3] 사전 작업\n- 페이지 URL 안내 — 지갑 관리: https://admin-dev.biscuitpay.com/master-accounting/wallet-management / 지갑 입출금 내역: https://admin-dev.biscuitpay.com/master-accounting/wallet-inout-history / 이체내역: https://admin-dev.biscuitpay.com/account/transfer-details\n[4] 권한별 테스트\n- admin\n- co\n[5] 검증 대상\n- 지갑 관리 화면\n- 지갑 입출금 내역 화면\n- 이체내역 화면\n[6] 체크리스트\n- bigs_jjm 계정으로 지갑 관리 페이지 진입 → 엑셀 버튼 클릭 시 '복수이체 양식 받기' 항목이 표시되는지 확인\n- '복수이체 양식 받기' 클릭 → 행 수 입력 모달에서 행 수 입력 후 다운로드 클릭 → 보관함이 아니라 브라우저를 통해 로컬로 엑셀 파일이 직접 다운로드되는지 확인 (브라우저 다운로드 알림 / 다운로드 폴더 확인)\n- 지갑 관리 페이지에서 '이체' 버튼 클릭 → 팝오버에 '지갑 복수이체' 항목이 표시되고, 해당 항목 클릭 시 복수이체 모달이 표시되는지 확인\n- bigs_jjm(어드민) 계정에서 복수이체 모달의 드롭다운을 클릭 → 여러 법인 지갑이 검색·선택 가능한지 확인\n- 법인 지갑 선택 후 카카오뱅크 / 3333088854750 / 이의현 정보가 입력된 엑셀 양식을 업로드 → '파일읽기' 클릭 시 파싱 결과 테이블이 모달 내에 표시되는지 확인\n- 파싱 결과 표시 상태에서 '이체' 버튼 클릭 → 1차 확인 swal('이체를 진행하시겠습니까?')에서 '이체' 클릭 → 이체 요청이 처리되고, 이어서 2차 안내 swal('정상적으로 처리되었습니다.')이 한 번 더 표시되면 '확인' 클릭 → 모달 내 결과 테이블에 처리결과가 갱신되어 표시되는지 확인 (※ 본 체크리스트의 '성공'은 이체 요청 자체가 정상 처리되었는지를 의미하며, 개별 행의 성공/실패 여부는 검증 범위 외)\n- 이체 요청 후 지갑 입출금 내역 페이지(/master-accounting/wallet-inout-history) 진입 → 방금 요청한 출금 건이 목록에 '표시되는지'만 확인 (※ 개별 행 실패 여부는 본 검증 범위 외)\n- 이체 요청 후 이체내역 페이지(/account/transfer-details) 진입 → 방금 요청한 이체 건이 목록에 '표시되는지'만 확인 (※ 개별 행 실패 여부는 본 검증 범위 외)\n- jjmco01(법인) 계정으로 지갑 관리 페이지 진입 → '이체' 버튼 클릭 → '지갑 복수이체' 클릭으로 모달 진입 시, 발신 지갑이 'A_주홍석_법인'으로 자동 선택되어 있고 드롭다운이 비활성화되어 사용자가 변경할 수 없는지 확인 (다른 법인 지갑이 목록에 나타나지 않아야 함)",
  "scope": "dev admin/CO 계정으로 지갑 관리의 지갑 복수이체 권한 노출, 브라우저 로컬 다운로드 기반 엑셀 양식 다운로드/업로드, 1차·2차 swal 확인을 포함한 실제 이체 요청 처리, 지갑 입출금/이체 내역 표시, CO 발신 지갑 고정 및 타 법인 지갑 미노출을 재검증",
  "checklist": [
    "bigs_jjm 계정으로 지갑 관리 페이지 진입 → 엑셀 버튼 클릭 시 '복수이체 양식 받기' 항목이 표시되는지 확인",
    "'복수이체 양식 받기' 클릭 → 행 수 입력 모달에서 행 수 입력 후 다운로드 클릭 → 보관함이 아니라 브라우저를 통해 로컬로 엑셀 파일이 직접 다운로드되는지 확인 (브라우저 다운로드 알림 / 다운로드 폴더 확인)",
    "지갑 관리 페이지에서 '이체' 버튼 클릭 → 팝오버에 '지갑 복수이체' 항목이 표시되고, 해당 항목 클릭 시 복수이체 모달이 표시되는지 확인",
    "bigs_jjm(어드민) 계정에서 복수이체 모달의 드롭다운을 클릭 → 여러 법인 지갑이 검색·선택 가능한지 확인",
    "법인 지갑 선택 후 카카오뱅크 / 3333088854750 / 이의현 정보가 입력된 엑셀 양식을 업로드 → '파일읽기' 클릭 시 파싱 결과 테이블이 모달 내에 표시되는지 확인",
    "파싱 결과 표시 상태에서 '이체' 버튼 클릭 → 1차 확인 swal('이체를 진행하시겠습니까?')에서 '이체' 클릭 → 이체 요청이 처리되고, 이어서 2차 안내 swal('정상적으로 처리되었습니다.')이 한 번 더 표시되면 '확인' 클릭 → 모달 내 결과 테이블에 처리결과가 갱신되어 표시되는지 확인 (※ 본 체크리스트의 '성공'은 이체 요청 자체가 정상 처리되었는지를 의미하며, 개별 행의 성공/실패 여부는 검증 범위 외)",
    "이체 요청 후 지갑 입출금 내역 페이지(/master-accounting/wallet-inout-history) 진입 → 방금 요청한 출금 건이 목록에 '표시되는지'만 확인 (※ 개별 행 실패 여부는 본 검증 범위 외)",
    "이체 요청 후 이체내역 페이지(/account/transfer-details) 진입 → 방금 요청한 이체 건이 목록에 '표시되는지'만 확인 (※ 개별 행 실패 여부는 본 검증 범위 외)",
    "jjmco01(법인) 계정으로 지갑 관리 페이지 진입 → '이체' 버튼 클릭 → '지갑 복수이체' 클릭으로 모달 진입 시, 발신 지갑이 'A_주홍석_법인'으로 자동 선택되어 있고 드롭다운이 비활성화되어 사용자가 변경할 수 없는지 확인 (다른 법인 지갑이 목록에 나타나지 않아야 함)"
  ],
  "roles": [
    "CO"
  ],
  "subjectAccounts": [
    {
      "role": "CO",
      "label": "법인 계정 jjmco01",
      "envRole": "CO"
    }
  ],
  "setupSteps": [
    {
      "name": "법인지갑 관리자 이체 권한 부여 확인",
      "kind": "manual-precondition",
      "role": "ADMIN",
      "application": "admin",
      "description": "bigs_jjm 계정에 법인지갑 관리자 이체 권한이 부여된 상태에서 지갑 복수이체 메뉴와 양식 다운로드 노출을 확인한다. 복수이체 양식은 문서보관함이 아니라 브라우저 다운로드 이벤트와 로컬 저장 파일로 검증한다.",
      "required": true,
      "mutation": "none",
      "navigation": {
        "name": "지갑 관리",
        "path": "/master-accounting/wallet-management"
      }
    },
    {
      "name": "지갑 복수이체 실행",
      "kind": "data-create",
      "role": "ADMIN",
      "application": "admin",
      "description": "카카오뱅크 3333088854750 이의현 수취 계좌로 개발계 소액 이체 1건을 실행하고, 1차 확인 swal → 응답 수신 → 2차 안내 swal 확인 → 결과 테이블 갱신 → 지갑 입출금/이체 내역 표시 순서로 확인한다. 개별 행의 성공/실패 상태는 본 재QA 범위에서 제외한다.",
      "required": true,
      "mutation": "persistent",
      "guardEnv": "QA_3125_ALLOW_WALLET_TRANSFER",
      "navigation": {
        "name": "지갑 관리",
        "path": "/master-accounting/wallet-management"
      },
      "restore": {
        "required": false,
        "description": "개발계 지갑 복수이체 검증이며 별도 자동 취소/복구 API가 확인되지 않으면 이체 내역 증적만 남긴다."
      }
    }
  ],
  "pages": [
    {
      "name": "지갑 관리",
      "application": "admin",
      "path": "/master-accounting/wallet-management",
      "tenantParam": "tenantId",
      "roles": [
        "ADMIN",
        "CO"
      ],
      "dataRequestUrlPattern": "wallet|wallets|transfer"
    },
    {
      "name": "지갑 입출금 내역",
      "application": "admin",
      "path": "/master-accounting/wallet-inout-history",
      "tenantParam": "tenantId",
      "roles": [
        "ADMIN"
      ],
      "dataRequestUrlPattern": "wallet"
    },
    {
      "name": "이체 내역",
      "application": "admin",
      "path": "/account/transfer-details",
      "tenantParam": "tenantId",
      "roles": [
        "ADMIN"
      ],
      "dataRequestUrlPattern": "transfer"
    }
  ]
}
