{
  "issueId": "3895",
  "environment": "dev",
  "scenario": "weroute-notification",
  "source": "Redmine #3895 + user-provided QA checklist 2026-07-30",
  "sourceText": "송인준님의 QA 요청입니다. 제공된 위루트 결제 통보 curl을 개발계에 발송하고 기본 ADMIN 계정으로 거래관리 > 거래내역과 거래 로그에 정상 적재되는지 확인합니다. Redmine: https://itsm.bix.bz/issues/3895",
  "scope": "개발계 위루트 결제 통보 1건을 발송한 뒤 기본 ADMIN 계정의 거래내역 및 거래 로그에서 거래정보, 주문번호, 승인번호, 금액, 거래일시, 승인 상태가 정상 적재되고 새로고침 후에도 유지되는지 검증한다.",
  "roles": [
    "ADMIN"
  ],
  "checklist": [
    "위루트 결제 통보 전송 후 거래내역에 대상 거래정보, 주문번호, 승인번호, 금액, 거래일시와 승인 상태가 정상 적재되는지 확인",
    "위루트 결제 통보 전송 후 거래 로그에 대상 거래와 승인 성공 상태가 정상 적재되고 새로고침 후에도 유지되는지 확인"
  ],
  "setupSteps": [
    {
      "name": "위루트 결제 통보 실행 허용",
      "kind": "data-create",
      "role": "ADMIN",
      "application": "admin",
      "description": "QA_3895_ALLOW_NOTIFICATION_MUTATION=1일 때만 사용자가 제공한 개발계 위루트 결제 통보를 1회 발송한다. 재실행은 QA_3895_REUSE_SENT_NOTIFICATION=1로 기존 적재 건만 검증한다.",
      "required": true,
      "mutation": "persistent",
      "guardEnv": "QA_3895_ALLOW_NOTIFICATION_MUTATION",
      "restore": {
        "required": false,
        "description": "결제 통보 적재 자체가 검증 대상이므로 취소 또는 삭제하지 않고 승인 거래로 유지한다."
      }
    }
  ],
  "pages": [
    {
      "name": "거래내역",
      "application": "admin",
      "roles": [
        "ADMIN"
      ],
      "path": "/trade-history-v2",
      "tenantParam": "tenantId",
      "searchButtonSelector": "button:has-text('검색'), button:has-text('조회'), [data-testid='search-button']",
      "dataRequestUrlPattern": "/api/v2/transactions",
      "filters": [
        {
          "name": "거래정보",
          "selector": "input[name='keyword'], input[name='searchKeyword'], input[placeholder*='검색'], input[placeholder*='거래'], input[placeholder*='승인']",
          "type": "textbox",
          "value": "damp01288m01032607300117086105",
          "queryParamCandidates": [
            "keyword",
            "searchKeyword",
            "transactionInfo"
          ]
        }
      ]
    },
    {
      "name": "거래 로그",
      "application": "admin",
      "roles": [
        "ADMIN"
      ],
      "path": "/payment-history",
      "tenantParam": "tenantId",
      "searchButtonSelector": "button:has-text('검색'), button:has-text('조회'), [data-testid='search-button']",
      "dataRequestUrlPattern": "/api/v2/payments/manage",
      "filters": [
        {
          "name": "거래정보",
          "selector": "input[name='keyword'], input[name='searchKeyword'], input[placeholder*='검색'], input[placeholder*='거래'], input[placeholder*='승인']",
          "type": "textbox",
          "value": "damp01288m01032607300117086105",
          "queryParamCandidates": [
            "keyword",
            "searchKeyword",
            "trxId"
          ]
        }
      ]
    }
  ]
}
