{
  "issueId": "3517",
  "environment": "dev",
  "source": "Redmine #3517 QA checklist - manual payment custom cancel date",
  "scenario": "manual-payment-custom-cancel-date",
  "sourceText": "주홍석님의 QA 요청입니다\n조지민 프로님 안녕하세요, 비스킷 링크 개발계 QA 요청드립니다\n[1] QA 요청 배경\n- https://itsm.bix.bz/issues/3517\n- 수기결제 전산취소 시 현재 일시가 아닌 사용자가 지정한 취소일시가 거래내역에 반영되는지 확인 요청\n[2] 사전 데이터\n- 개발계 스토어 계정: hsjve40 / <redacted> / <redacted>\n[3] 사전 작업\n- 스토어에서 hsjve40 계정으로 로그인 가능 여부 확인\n- 스토어에서 수기결제를 진행할 수 있는 가맹점/결제 수단 준비\n[4] 권한별 테스트\n- ve\n[5] 검증 대상\n- 스토어 수기결제 화면\n- 거래내역 화면의 전산취소 신청 모달\n- 거래내역 목록 재조회 결과\n[6] 체크리스트\n- 스토어에서 수기결제를 정상 진행한다\n- 거래내역에서 생성된 거래를 선택해 전산취소 신청을 연다\n- 취소일시 영역에서 현재 일시 체크박스를 해제한 뒤 거래일 이후의 임의 취소일시로 변경한다\n- 전산취소 신청 후 목록을 다시 조회했을 때 취소 거래의 거래일시에 입력한 취소일시가 표시되는지 확인한다\n- 현재 일시 체크박스를 해제하고 지정한 취소일시가 화면 새로고침 후에도 유지되는지 확인한다",
  "scope": "dev 스토어에서 hsjve40 가맹점 계정으로 수기결제를 생성한 뒤, 거래내역의 전산취소 신청 모달에서 현재 일시 체크를 해제하고 거래일 이후 지정 취소일시를 입력해 취소 거래일시 반영과 새로고침 후 유지 여부를 확인한다.",
  "roles": [
    "ADMIN",
    "VE"
  ],
  "subjectAccounts": [
    {
      "role": "VE",
      "application": "store",
      "envRole": "LUCY_VE",
      "label": "hsjve40"
    }
  ],
  "checklist": [
    "스토어에서 수기결제를 정상 진행한다",
    "거래내역에서 생성된 거래를 선택해 전산취소 신청을 연다",
    "취소일시 영역에서 현재 일시 체크박스를 해제한 뒤 거래일 이후의 임의 취소일시로 변경한다",
    "전산취소 신청 후 목록을 다시 조회했을 때 취소 거래의 거래일시에 입력한 취소일시가 표시되는지 확인한다",
    "현재 일시 체크박스를 해제하고 지정한 취소일시가 화면 새로고침 후에도 유지되는지 확인한다"
  ],
  "setupSteps": [
    {
      "name": "수기결제 생성 및 전산취소 신청 데이터 변경 허용",
      "kind": "data-create",
      "role": "VE",
      "application": "store",
      "description": "hsjve40 스토어 계정으로 수기결제를 실제 생성하고, 같은 거래를 전산취소 신청하여 지정 취소일시 반영을 확인한다. 카드 정보는 .env.local의 QA_3517_* 또는 QA_3315_* 값을 사용한다.",
      "required": true,
      "mutation": "temporary",
      "guardEnv": "QA_3517_ALLOW_PAYMENT_MUTATION",
      "navigation": {
        "name": "스토어 수기결제",
        "path": "/face-to-face-payment"
      },
      "restore": {
        "required": true,
        "description": "이번 QA에서 생성한 수기결제는 전산취소 신청으로 취소 상태가 되어야 한다. 전산취소 신청 전 실패하면 정리 로그에 남기고 운영자 취소가 필요한 상태로 표시한다.",
        "spec": "전산취소 신청 성공 여부, 지정 취소일시, 목록 재조회 거래일시를 보고서에 남긴다."
      }
    },
    {
      "name": "전산 거래내역에서 지정 취소일시 전산취소 신청",
      "kind": "state-verify",
      "role": "ADMIN",
      "application": "admin",
      "description": "스토어에서 생성한 수기결제 거래를 전산 거래내역에서 조회하고, 거래 삭제/전산취소 신청 모달에서 현재 일시를 해제한 뒤 지정 취소일시로 취소 신청한다.",
      "required": true,
      "mutation": "temporary",
      "guardEnv": "QA_3517_ALLOW_PAYMENT_MUTATION",
      "navigation": {
        "name": "전산 거래내역",
        "path": "/trade-history-v2"
      },
      "restore": {
        "required": true,
        "description": "전산취소 신청이 성공하면 생성 거래는 취소 상태가 된다. 신청 전에 실패하면 QA 로그에 생성 거래 정보를 남기고 운영자 취소 API로 정리한다.",
        "spec": "전산취소 신청 성공 여부와 취소 거래일시 반영 결과를 보고서에 남긴다."
      }
    }
  ],
  "pages": [
    {
      "name": "스토어 수기결제",
      "application": "store",
      "roles": [
        "VE"
      ],
      "path": "/face-to-face-payment",
      "tenantParam": "tenantId",
      "dataRequestUrlPattern": "store/identity/payment"
    },
    {
      "name": "전산 거래내역",
      "application": "admin",
      "roles": [
        "ADMIN"
      ],
      "path": "/trade-history-v2",
      "tenantParam": "tenantId",
      "dataRequestUrlPattern": "transactions|transaction/cancel"
    }
  ]
}
