{
  "issueId": "3631",
  "environment": "dev",
  "source": "Redmine #3631 QA checklist - welcome deposit telegram system notification",
  "scenario": "telegram-system-notification",
  "sourceText": "김경주님의 QA 요청입니다. 조지민 프로님 안녕하세요, 비스킷 링크 개발계 QA 요청드립니다. [1] QA 요청 배경 - https://itsm.bix.bz/issues/3631 - 웰컴 입금 통보 수신 시 기존 deposit_check 기록 외에 텔레그램방에도 결과를 전송하도록 확장했습니다. 시스템 알림용 텔레그램 챗봇/이력 노출 범위가 권한에 따라 다르게 동작해야 해서, 이상거래 알림 발송내역과 이상거래 알림 챗봇 관리 화면 기준으로 확인이 필요합니다. [2] 사전 데이터 - admin 권한 계정 - ta 권한 계정 - 개발계 텔레그램 챗봇/채팅방 데이터 - 웰컴 입금 통보 테스트 요청 후 생성되는 텔레그램 이력. [3] 사전 작업 - curl -i -X POST \"https://api-dev.biscuitpay.com/api/v1/transfer/notification/WELCOMEPAYMENTS\" -H \"Content-Type: application/json\" -H \"Origin: https://biscuitpay.com\" -d '{\"trnsctnState\":\"SUCCESS\",\"trnsctnType\":\"MEMBER_DEPOSIT\",\"depositOwnerName\":\"(주)QA테스트\",\"orgAmt\":123456,\"guid\":\"qa-test-guid-20260629-001\",\"tid\":110000029,\"vaccntNo\":\"066431591233\",\"desc\":\"(주)QA테스트\"}' 실행 후 admin 계정의 이상거래 알림 발송내역 화면에서 신규 이력이 생성되는지 확인. [수정 추가] 테스트용 curl로 30건 빠르게 발송: tid 110000701~110000730, guid telegram-qa-burst-20260630-1~30, 입금자 (주)텔레그램QA연속1~30, 금액 300001~300030원, 가상계좌 066431597700. 30건 천천히 발송: tid 110000801~110000830, guid telegram-qa-slow-20260630-1~30, 입금자 (주)텔레그램QA간격1~30, 금액 400001~400030원, 가상계좌 066431598800, 각 요청 간 sleep 1초. [4] 권한별 테스트 - admin - ta. [5] 검증 대상 - 이상거래 알림 발송내역 화면 - 이상거래 알림 챗봇 관리 화면(admin만 접근 가능) - 채팅방 등록 화면의 알림 설정 선택 단계 - 채팅방 등록 화면의 알림봇 초대 단계. [6] 체크리스트 - 입금 통보 테스트 요청 실행 후 admin 계정의 이상거래 알림 발송내역 화면에서 신규 웰컴 입금 통보 이력이 입금통보 알리미 / 시스템 알림 용도로 추가되었는지 확인 - 새로 생성된 웰컴 입금 통보 이력의 메시지 내용에 입금자 (주)QA테스트, 거래아이디 110000029, 가상계좌 066431591233, 금액 123,456원, 생성날짜가 포함되어 있는지 확인 - 이상거래 알림 발송내역 화면 상단에 시스템 알림은 마스터 권한만 볼 수 있습니다. 안내 문구가 표시되는지 확인 - 이상거래 알림 발송내역 화면에서 유형 필터로 시스템 알림을 선택했을 때 시스템 알림 이력만 조회되는지 확인 - 이상거래 알림 발송내역 목록에서 유형 값이 업체, 법인, 시스템으로 표시되는지 확인 - 이상거래 알림 발송내역 화면에서 유형, 채팅방명 검색 시 검색 기준으로 목록이 필터링되는지 확인 - 이상거래 알림 발송내역 목록에서 알림 용도 값이 별도 매핑 없이 화면에 표시되는지 확인 - admin 계정에서 이상거래 알림 챗봇 관리 화면에 접근 가능한지 확인 - ta 권한에서는 이상거래 알림 챗봇 관리 화면에 접근할 수 없는지 확인 - 이상거래 알림 챗봇 관리 화면에서 용도 칼럼이 표시되는지 확인 - 이상거래 알림 챗봇 관리 화면에 시스템 알림은 마스터 권한만 볼 수 있습니다. 안내 문구가 표시되는지 확인 - admin 계정의 챗봇 유형 선택 화면에서 시스템 알림 유형이 노출되는지 확인 - ta 권한에서는 시스템 알림용 챗봇 및 시스템 알림 유형이 노출되지 않는지 확인 - 채팅방 등록 화면의 알림 설정 선택 단계에서 시스템 알림 유형이 노출되지 않는지 확인 - 채팅방 등록 화면의 알림봇 초대 단계에서도 시스템 알림 봇이 노출되지 않는지 확인 - 기존 업체 및 법인 알림 유형은 채팅방 등록 시 정상 선택 가능한지 확인 - 기존 테넌트 전체방 텔레그램 이력 조회가 기존과 동일하게 동작하는지 확인 - 30건 빠른 발송 시 모든 요청이 성공하고 시스템 알림 발송내역에 30건이 반영되는지 확인 - 30건 1초 간격 발송 시 모든 요청이 성공하고 시스템 알림 발송내역에 30건이 반영되는지 확인. Redmine #3631 Webhook Bot 봇이 요청을 처리할 수 없습니다.",
  "scope": "dev 환경 ADMIN/TA 계정으로 웰컴 입금 통보 POST 이후 텔레그램 발송내역의 시스템 이력 생성, 발송내역 필터/검색, 챗봇 관리의 시스템 알림 노출 범위, 채팅방 등록 플로우의 시스템 알림 노출 제한, 30건 빠른 발송 및 30건 1초 간격 발송 반영을 검증한다.",
  "roles": [
    "ADMIN",
    "TA"
  ],
  "checklist": [
    "입금 통보 테스트 요청 실행 후 admin 계정의 이상거래 알림 발송내역 화면에서 신규 웰컴 입금 통보 이력이 입금통보 알리미 / 시스템 알림 용도로 추가되었는지 확인",
    "새로 생성된 웰컴 입금 통보 이력의 메시지 내용에 입금자 (주)QA테스트, 거래아이디 110000029, 가상계좌 066431591233, 금액 123,456원, 생성날짜가 포함되어 있는지 확인",
    "이상거래 알림 발송내역 화면 상단에 시스템 알림은 마스터 권한만 볼 수 있습니다. 안내 문구가 표시되는지 확인",
    "이상거래 알림 발송내역 화면에서 유형 필터로 시스템 알림을 선택했을 때 시스템 알림 이력만 조회되는지 확인",
    "이상거래 알림 발송내역 목록에서 유형 값이 업체, 법인, 시스템으로 표시되는지 확인",
    "이상거래 알림 발송내역 화면에서 유형, 채팅방명 검색 시 검색 기준으로 목록이 필터링되는지 확인",
    "이상거래 알림 발송내역 목록에서 알림 용도 값이 별도 매핑 없이 화면에 표시되는지 확인",
    "admin 계정에서 이상거래 알림 챗봇 관리 화면에 접근 가능한지 확인",
    "ta 권한에서는 이상거래 알림 챗봇 관리 화면에 접근할 수 없는지 확인",
    "이상거래 알림 챗봇 관리 화면에서 용도 칼럼이 표시되는지 확인",
    "이상거래 알림 챗봇 관리 화면에 시스템 알림은 마스터 권한만 볼 수 있습니다. 안내 문구가 표시되는지 확인",
    "admin 계정의 챗봇 유형 선택 화면에서 시스템 알림 유형이 노출되는지 확인",
    "ta 권한에서는 시스템 알림용 챗봇 및 시스템 알림 유형이 노출되지 않는지 확인",
    "채팅방 등록 화면의 알림 설정 선택 단계에서 시스템 알림 유형이 노출되지 않는지 확인",
    "채팅방 등록 화면의 알림봇 초대 단계에서도 시스템 알림 봇이 노출되지 않는지 확인",
    "기존 업체 및 법인 알림 유형은 채팅방 등록 시 정상 선택 가능한지 확인",
    "기존 테넌트 전체방 텔레그램 이력 조회가 기존과 동일하게 동작하는지 확인",
    "웰컴 입금 통보 30건을 빠르게 연속 발송했을 때 모든 요청이 성공하고 이상거래 알림 발송내역에 시스템 알림 30건이 반영되는지 확인",
    "웰컴 입금 통보 30건을 1초 간격으로 발송했을 때 모든 요청이 성공하고 이상거래 알림 발송내역에 시스템 알림 30건이 반영되는지 확인"
  ],
  "subjectAccounts": [
    {
      "role": "ADMIN",
      "label": "bigs_jjm",
      "envRole": "ADMIN"
    },
    {
      "role": "TA",
      "label": "jjmta01",
      "envRole": "TA"
    }
  ],
  "setupSteps": [
    {
      "name": "ADMIN/TA 개발계 로그인",
      "kind": "state-verify",
      "role": "ADMIN",
      "application": "admin",
      "targetRoles": [
        "ADMIN",
        "TA"
      ],
      "description": "ADMIN/TA 계정으로 개발계 어드민에 로그인하고 이상거래 알림 발송내역, 이상거래 알림 챗봇 관리, 이상거래 알림 채팅방 관리 화면 접근 상태를 확인한다.",
      "required": true,
      "mutation": "none"
    },
    {
      "name": "웰컴 입금 통보 테스트 요청",
      "kind": "data-create",
      "role": "ADMIN",
      "application": "admin",
      "description": "WELCOMEPAYMENTS 입금 통보 POST를 개발계 API로 발송해 텔레그램 시스템 알림 이력을 생성한다.",
      "required": true,
      "mutation": "persistent",
      "guardEnv": "QA_3631_ALLOW_NOTIFICATION_MUTATION",
      "spec": "curl -i -X POST \"https://api-dev.biscuitpay.com/api/v1/transfer/notification/WELCOMEPAYMENTS\" -H \"Content-Type: application/json\" -H \"Origin: https://biscuitpay.com\" -d '{\"trnsctnState\":\"SUCCESS\",\"trnsctnType\":\"MEMBER_DEPOSIT\",\"depositOwnerName\":\"(주)QA테스트\",\"orgAmt\":123456,\"guid\":\"qa-test-guid-20260629-001\",\"tid\":110000029,\"vaccntNo\":\"066431591233\",\"desc\":\"(주)QA테스트\"}'",
      "restore": {
        "required": false,
        "description": "이번 요청은 텔레그램 발송 이력 생성 자체가 검증 대상이므로 생성된 개발계 이력을 원복하지 않는다. 생성된 이력 ID, 생성일시, 메시지 내용을 보고서에 남긴다."
      }
    },
    {
      "name": "웰컴 입금 통보 30건 빠른 발송",
      "kind": "data-create",
      "role": "ADMIN",
      "application": "admin",
      "description": "WELCOMEPAYMENTS 입금 통보 POST를 sleep 없이 30건 연속 발송해 텔레그램 시스템 알림 이력 생성 누락 여부를 확인한다.",
      "required": true,
      "mutation": "persistent",
      "guardEnv": "QA_3631_ALLOW_NOTIFICATION_MUTATION",
      "spec": "for i in $(seq 1 30); do tid=$((110000700 + i)); curl -i -X POST \"https://api-dev.biscuitpay.com/api/v1/transfer/notification/WELCOMEPAYMENTS\" -H \"Content-Type: application/json\" -H \"Origin: https://biscuitpay.com\" -d \"{\\\"trnsctnState\\\":\\\"SUCCESS\\\",\\\"trnsctnType\\\":\\\"MEMBER_DEPOSIT\\\",\\\"depositOwnerName\\\":\\\"(주)텔레그램QA연속${i}\\\",\\\"orgAmt\\\":$((300000 + i)),\\\"guid\\\":\\\"telegram-qa-burst-20260630-${i}\\\",\\\"tid\\\":${tid},\\\"vaccntNo\\\":\\\"066431597700\\\",\\\"desc\\\":\\\"(주)텔레그램QA연속${i}\\\"}\"; echo; done",
      "restore": {
        "required": false,
        "description": "개발계 텔레그램 발송 이력 생성 자체가 검증 대상이므로 원복하지 않는다."
      }
    },
    {
      "name": "웰컴 입금 통보 30건 1초 간격 발송",
      "kind": "data-create",
      "role": "ADMIN",
      "application": "admin",
      "description": "WELCOMEPAYMENTS 입금 통보 POST를 1초 간격으로 30건 발송해 텔레그램 시스템 알림 이력 생성 누락 여부를 확인한다.",
      "required": true,
      "mutation": "persistent",
      "guardEnv": "QA_3631_ALLOW_NOTIFICATION_MUTATION",
      "spec": "for i in $(seq 1 30); do tid=$((110000800 + i)); curl -i -X POST \"https://api-dev.biscuitpay.com/api/v1/transfer/notification/WELCOMEPAYMENTS\" -H \"Content-Type: application/json\" -H \"Origin: https://biscuitpay.com\" -d \"{\\\"trnsctnState\\\":\\\"SUCCESS\\\",\\\"trnsctnType\\\":\\\"MEMBER_DEPOSIT\\\",\\\"depositOwnerName\\\":\\\"(주)텔레그램QA간격${i}\\\",\\\"orgAmt\\\":$((400000 + i)),\\\"guid\\\":\\\"telegram-qa-slow-20260630-${i}\\\",\\\"tid\\\":${tid},\\\"vaccntNo\\\":\\\"066431598800\\\",\\\"desc\\\":\\\"(주)텔레그램QA간격${i}\\\"}\"; echo; sleep 1; done",
      "restore": {
        "required": false,
        "description": "개발계 텔레그램 발송 이력 생성 자체가 검증 대상이므로 원복하지 않는다."
      }
    }
  ],
  "pages": [
    {
      "name": "이상거래 알림 발송내역",
      "application": "admin",
      "roles": [
        "ADMIN",
        "TA"
      ],
      "path": "/business/telegram-history",
      "tenantParam": "tenantId",
      "dataRequestUrlPattern": "telegram/history"
    },
    {
      "name": "이상거래 알림 챗봇 관리",
      "application": "admin",
      "roles": [
        "ADMIN",
        "TA"
      ],
      "path": "/admin/telegram-chatbot-manage",
      "tenantParam": "tenantId",
      "dataRequestUrlPattern": "telegram/chatBots",
      "accessByRole": {
        "ADMIN": "allowed",
        "TA": "denied"
      }
    },
    {
      "name": "이상거래 알림 채팅방 관리",
      "application": "admin",
      "roles": [
        "ADMIN",
        "TA"
      ],
      "path": "/business/telegram-chat-room-manage",
      "tenantParam": "tenantId",
      "dataRequestUrlPattern": "telegram"
    }
  ]
}
