{
  "issueId": "3557",
  "environment": "dev",
  "scenario": "biscuit-card-manual-charge",
  "source": "Redmine #3557 + user-provided QA checklist 2026-06-15",
  "sourceText": "이의현님의 QA 요청입니다\n조지민 프로님 안녕하세요, 비스킷 페이 개발계 QA 요청드립니다\n[1] QA 요청 배경\n- https://itsm.bix.bz/issues/3557\n[2] 사전 데이터\n- 별도 준비 데이터 없음 (대상 계정 충전 방식이 '정산금 자동 충전' 상태로 세팅 완료)\n[3] 사전 작업\n- dw_ve / <redacted password> / <redacted PIN> 계정으로 비스킷페이(store-dev.biscuitpay.com) 로그인\n[4] 권한별 테스트\n- ve\n[5] 검증 대상\n- 비스킷 카드 설정 화면\n- 사이드바 메뉴\n- 수동 충전 화면\n[6] 체크리스트\n- [케이스1-사이드바 메뉴 반영] 비스킷 카드 설정 화면(/biscuit-card/settings)에서 '충전 방식' 섹션 셀렉트를 '정산금 자동 충전'에서 '수동 금액 충전'으로 변경하고 '저장' 버튼을 누른다\n- [케이스1] 표시되는 '충전 방식 설정' 바텀시트에서 '저장' 버튼을 한 번 더 눌러 컨펌하고, 이어서 뜨는 '저장 완료' 모달에서 '확인'을 눌러 닫는다\n- [케이스1-확인] 화면 우상단 햄버거 버튼을 눌러 사이드바를 연다. '비스킷 카드' 메뉴 하위에 '카드 관리'와 '수동 충전' 2개 서브메뉴가 (새로고침 없이) 즉시 표시되는지 확인\n- [케이스2-수동충전 동작] 사이드바에서 '수동 충전' 서브메뉴를 눌러 수동 충전 화면(/biscuit-card/manual-charge)으로 이동한다\n- [케이스2] 충전 금액 입력란에 1000을 입력하고 하단 '충전' 버튼을 누른다. 표시되는 바텀시트에서 '충전' 버튼을 눌러 컨펌한다\n- [케이스2-확인] 약 1초 로딩 후 '충전 완료' 모달이 표시되는지 확인하고, '확인' 버튼을 눌러 모달을 닫는다",
  "scope": "dev 환경 비스킷페이 VE(dw_ve) 계정으로 비스킷 카드 설정의 충전 방식을 수동 금액 충전으로 변경한 뒤 사이드바 수동 충전 메뉴 즉시 반영과 1,000원 수동 충전 완료 모달을 검증",
  "checklist": [
    "[케이스1-사이드바 메뉴 반영] 비스킷 카드 설정 화면(/biscuit-card/settings)에서 '충전 방식' 섹션 셀렉트를 '정산금 자동 충전'에서 '수동 금액 충전'으로 변경하고 '저장' 버튼을 누른다",
    "[케이스1] 표시되는 '충전 방식 설정' 바텀시트에서 '저장' 버튼을 한 번 더 눌러 컨펌하고, 이어서 뜨는 '저장 완료' 모달에서 '확인'을 눌러 닫는다",
    "[케이스1-확인] 화면 우상단 햄버거 버튼을 눌러 사이드바를 연다. '비스킷 카드' 메뉴 하위에 '카드 관리'와 '수동 충전' 2개 서브메뉴가 (새로고침 없이) 즉시 표시되는지 확인",
    "[케이스2-수동충전 동작] 사이드바에서 '수동 충전' 서브메뉴를 눌러 수동 충전 화면(/biscuit-card/manual-charge)으로 이동한다",
    "[케이스2] 충전 금액 입력란에 1000을 입력하고 하단 '충전' 버튼을 누른다. 표시되는 바텀시트에서 '충전' 버튼을 눌러 컨펌한다",
    "[케이스2-확인] 약 1초 로딩 후 '충전 완료' 모달이 표시되는지 확인하고, '확인' 버튼을 눌러 모달을 닫는다"
  ],
  "roles": [
    "VE"
  ],
  "subjectAccounts": [
    {
      "role": "VE",
      "label": "dw_ve",
      "envRole": "DW_VE"
    }
  ],
  "setupSteps": [
    {
      "name": "dw_ve 비스킷 카드 충전 방식 사전 상태 확인",
      "kind": "manual-precondition",
      "role": "VE",
      "application": "store",
      "description": "dw_ve 계정의 비스킷 카드 충전 방식이 '정산금 자동 충전' 상태로 세팅된 상태에서 시작한다. 계정 비밀번호와 PIN은 로컬 환경변수에만 주입하고 git 산출물에 남기지 않는다.",
      "required": true,
      "mutation": "none",
      "navigation": {
        "name": "비스킷 카드 설정",
        "path": "/biscuit-card/settings"
      }
    },
    {
      "name": "충전 방식을 수동 금액 충전으로 변경",
      "kind": "data-update",
      "role": "VE",
      "application": "store",
      "description": "비스킷 카드 설정 화면에서 충전 방식을 수동 금액 충전으로 변경하고 바텀시트 확인 및 저장 완료 모달 확인까지 진행한다.",
      "required": true,
      "mutation": "persistent",
      "guardEnv": "QA_3557_ALLOW_CHARGE_METHOD_CHANGE",
      "navigation": {
        "name": "비스킷 카드 설정",
        "path": "/biscuit-card/settings"
      },
      "restore": {
        "required": false,
        "description": "수동 충전 메뉴와 수동 충전 동작 확인을 위해 변경된 수동 금액 충전 상태를 유지한다."
      }
    },
    {
      "name": "수동 충전 1,000원 실행",
      "kind": "data-create",
      "role": "VE",
      "application": "store",
      "description": "수동 충전 화면에서 1,000원을 입력하고 충전 확인 바텀시트와 충전 완료 모달을 검증한다.",
      "required": true,
      "mutation": "persistent",
      "guardEnv": "QA_3557_ALLOW_MANUAL_CHARGE",
      "navigation": {
        "name": "비스킷 카드 수동 충전",
        "path": "/biscuit-card/manual-charge"
      },
      "restore": {
        "required": false,
        "description": "개발계 충전 검증 건은 별도 자동 취소/차감 복구 절차가 확인되지 않아 증적만 남긴다."
      }
    }
  ],
  "pages": [
    {
      "name": "비스킷 카드 설정",
      "application": "store",
      "path": "/biscuit-card/settings",
      "tenantParam": "tenantId",
      "roles": [
        "VE"
      ],
      "searchButtonSelector": "button:has-text('저장')",
      "dataRequestUrlPattern": "biscuit-card|charge|policy|setting"
    },
    {
      "name": "비스킷 카드 사이드바",
      "application": "store",
      "path": "/biscuit-card/settings",
      "tenantParam": "tenantId",
      "roles": [
        "VE"
      ],
      "searchButtonSelector": "button[aria-label*='메뉴'], button[aria-label*='사이드바'], header button"
    },
    {
      "name": "비스킷 카드 수동 충전",
      "application": "store",
      "path": "/biscuit-card/manual-charge",
      "tenantParam": "tenantId",
      "roles": [
        "VE"
      ],
      "searchButtonSelector": "button:has-text('충전')",
      "dataRequestUrlPattern": "biscuit-card|manual-charge|charge"
    }
  ]
}
