1112 lines
41 KiB
Markdown
1112 lines
41 KiB
Markdown
# CMPP 短信平台第一版开发需求文档
|
||
|
||
## 0. 文档前提
|
||
|
||
本文基于当前前端设计原型整理,用于交给 Codex 或开发团队执行第一版落地开发。
|
||
|
||
当前确认:第一版保留短信业务,排除彩信功能;账户计费、充值套餐、账单流水进入第一版开发范围。彩信服务、彩信应用/签名/模板 Tab,以及运营端彩信相关菜单标记为“待开发”;业务性能指标为“平台可稳定入队并调度 500 条短信/秒,实际向通道 submit 受通道限速配置控制”。
|
||
|
||
## 1. 项目目标
|
||
|
||
建设一个短信平台第一版,支持企业客户在客户端完成短信应用、模板、签名、号码导入、短信发送、批量任务查询、发送明细查询、上行短信查询;支持运营端完成企业管理、企业应用/签名/模板管理、审核、通道配置、通道签名报备、报备任务导出/回执导入、发送监控、任务进度、短信记录、上行记录、安全控制和系统管理。
|
||
|
||
第一版必须满足:
|
||
|
||
- 支持最高 500 条短信/秒的提交吞吐。
|
||
- 支持批量任务异步发送,前端提交后可查询任务进度。
|
||
- 支持通道级限速、失败重试、回执同步和发送记录追踪。
|
||
- 支持企业、应用、签名、模板、通道、通道组、报备任务等核心配置数据的后台维护。
|
||
- 彩信功能仅保留菜单占位或隐藏,不进入第一版开发范围。
|
||
- 账户计费、充值套餐、账单流水进入第一版范围,并与发送记录形成可对账闭环。
|
||
|
||
## 2. 角色与权限
|
||
|
||
### 2.1 客户端企业管理员
|
||
|
||
可管理本企业短信应用、短信模板、短信签名、发送任务、上行短信、企业认证、企业用户和系统日志。
|
||
|
||
### 2.2 客户端普通用户
|
||
|
||
可按授权查看应用、模板、签名、发送任务和发送明细;是否允许创建和发送需由企业管理员配置。
|
||
|
||
### 2.3 运营端管理员
|
||
|
||
可管理全平台企业、应用、签名、模板、审核、通道、通道组、报备任务、发送监控、短信记录、上行记录、黑名单、敏感词、用户、手机号段库和引流字段库。
|
||
|
||
### 2.4 运营审核员
|
||
|
||
可处理企业认证审核、短信审核、短信模板审核、签名/模板/发送内容相关审核。
|
||
|
||
## 3. 第一版范围
|
||
|
||
### 3.1 客户端范围
|
||
|
||
保留并开发:
|
||
|
||
- 工作台
|
||
- 短信发送
|
||
- 查看批量任务
|
||
- 短信发送详情
|
||
- 查看上行短信
|
||
- 短信应用
|
||
- 模板管理
|
||
- 签名与引流信息
|
||
- 充值套餐
|
||
- 账单流水
|
||
- 企业认证
|
||
- 用户管理
|
||
- 账号设置
|
||
- 系统日志
|
||
|
||
暂不开发:
|
||
|
||
- 彩信服务分组下全部菜单
|
||
|
||
### 3.2 运营端范围
|
||
|
||
保留并开发:
|
||
|
||
- 运营看板、发送监控、数据统计、客户管理
|
||
- 企业管理、企业应用管理、企业签名管理、企业模板管理
|
||
- 企业认证审核、短信审核、短信模板审核
|
||
- 短信通道管理、短信通道组管理
|
||
- 报备任务、报备记录
|
||
- 短信任务进度、短信记录、短信上行记录
|
||
- 充值记录、账单流水、套餐配置、计费规则
|
||
- 企业黑名单、全局黑名单、敏感词管理
|
||
- 用户管理、手机号段库、引流信息字段库
|
||
|
||
暂不开发:
|
||
|
||
- 彩信模板审核
|
||
- 彩信通道管理
|
||
- 彩信任务进度
|
||
- 彩信记录
|
||
- 企业应用管理的彩信应用 Tab
|
||
- 企业签名管理的彩信签名 Tab
|
||
- 企业模板管理的彩信模板 Tab
|
||
|
||
## 4. 核心业务流程
|
||
|
||
### 4.1 企业入驻与认证
|
||
|
||
1. 客户端企业管理员提交企业认证资料。
|
||
2. 运营端在企业认证审核中查看资料并审核通过或驳回。
|
||
3. 审核通过后企业可创建短信应用、签名、模板并发起短信发送。
|
||
4. 驳回时必须记录驳回原因,客户端可查看并重新提交。
|
||
|
||
### 4.2 短信应用管理
|
||
|
||
1. 客户端创建短信应用,填写应用名称、场景、回调地址、限额等信息。
|
||
2. 运营端可查看企业应用,并支持按企业名称、应用名称、状态搜索。
|
||
3. 运营端可启用、停用、编辑应用。
|
||
4. 应用必须归属企业,并关联后续签名、模板和发送任务。
|
||
|
||
### 4.3 签名与引流信息
|
||
|
||
1. 客户端创建短信签名,提交签名名称、用途、证明材料、引流信息。
|
||
2. 运营端企业签名管理查看签名资料。
|
||
3. 签名需完成企业内部审核和通道报备,状态包括草稿、待审核、已通过、已驳回、报备中、报备通过、报备失败。
|
||
4. 已通过且报备通过的签名才允许发送。
|
||
|
||
### 4.4 模板管理与审核
|
||
|
||
1. 客户端创建短信模板,填写模板名称、短信内容、变量、应用、签名。
|
||
2. 系统校验敏感词、字数、变量格式和签名匹配。
|
||
3. 运营端短信模板审核可通过或驳回模板。
|
||
4. 审核通过的模板才允许在短信发送中选择。
|
||
|
||
### 4.5 短信发送
|
||
|
||
1. 客户端选择短信应用、签名、模板。
|
||
2. 输入或导入接收手机号,支持手动输入和文件导入。
|
||
3. 系统校验号码格式、黑名单、手机号段、企业余额/额度、模板变量。
|
||
4. 客户端选择立即发送或定时发送。
|
||
5. 提交后生成批量任务,任务进入待审核或待发送状态。
|
||
6. 系统执行风控规则,命中拒绝规则则直接拒绝并记录原因,命中人工审核规则则进入运营端短信审核。
|
||
7. 若命中审核策略,运营端短信审核通过后进入发送队列,审核页面必须展示进入审核的原因。
|
||
8. 发送服务按通道组路由、通道限速、企业限速执行提交。
|
||
9. 平台批量任务只记录客户端创建的发送任务;API 调用和 CMPP 对接发送不进入批量任务。
|
||
10. 所有来源的短信,包括平台批量任务、API 调用、CMPP 对接发送,全部按手机号维度进入短信记录。
|
||
11. 任务进度、发送详情和短信记录实时或准实时更新。
|
||
|
||
### 4.6 通道配置与路由
|
||
|
||
1. 运营端配置短信通道,包括通道名称、运营商、单价、网关地址、端口、企业代码、账号、密码、接入号、协议参数、启停状态。
|
||
2. 运营端配置短信通道组,定义通道优先级、运营商适配、区域适配、权重和故障切换。
|
||
3. 发送时根据企业、应用、签名、模板、号码归属、通道状态和通道组策略选择通道。
|
||
4. 通道异常时应支持熔断、降级、切换备用通道和失败重试。
|
||
|
||
### 4.7 通道签名报备
|
||
|
||
1. 运营端在通道配置中维护签名报备字段。
|
||
2. 客户端上传签名资料。
|
||
3. 运营端审核企业签名资料。
|
||
4. 运营端在通道资料更新后生成通道签名报备任务。
|
||
5. 运营端在报备任务中导出通道报备资料。
|
||
6. 运营端在报备任务或通道报备详情页导入通道回执。
|
||
7. 系统根据回执同步签名在各通道的报备状态。
|
||
8. 报备记录保留每次导出、导入、状态变更和操作人。
|
||
|
||
### 4.8 回执与上行
|
||
|
||
1. 通道回执接入后更新发送记录状态。
|
||
2. 回执状态至少包括提交成功、提交失败、发送成功、发送失败、未知、超时。
|
||
3. 提交后 72 小时仍为未知的短信转超时,返回客户失败。
|
||
4. 超时前允许人工同步、重新拉取回执或接收供应商二次回执;所有二次回执必须记录历史。
|
||
5. 上行短信接入后优先按手机号、接入号、企业/应用、时间窗口匹配下发记录。
|
||
6. 接入号匹配不到企业/应用时,展示近期平台对此手机号下发的短信供人工判断。
|
||
7. 完全匹配不到的上行短信仍需入库,并展示为未匹配。
|
||
8. 客户端可查看本企业上行短信,运营端可查看全平台上行短信。
|
||
|
||
### 4.9 账户计费
|
||
|
||
1. 客户端可查看充值套餐、购买或申请充值套餐、查看账单流水。
|
||
2. 发送创建时按短信内容计费条数、企业单价或套餐规则生成预估费用,计费条数只按 70/67 字规则拆分。
|
||
3. 平台需在发送前检查企业账户余额、套餐余量或授信额度。
|
||
4. 发送链路需记录计费条数、计费单价、计费金额、账务状态。
|
||
5. 账单流水与短信记录可追溯关联,支持按企业、应用、任务、手机号、时间对账。
|
||
6. 最终失败、超时失败需要退费。
|
||
7. 计费口径可配置为按提交成功计费或按回执成功计费。
|
||
|
||
## 5. 功能需求
|
||
|
||
### 5.1 客户端工作台
|
||
|
||
- 展示短信余量或可发送额度、今日发送量、成功率、待审核事项、快捷入口。
|
||
- 展示最近发送批次、发送趋势、签名/模板状态。
|
||
- 数据范围限定为当前企业。
|
||
|
||
### 5.2 客户端短信发送
|
||
|
||
- 支持选择短信应用、签名、模板。
|
||
- 支持模板变量填充。
|
||
- 支持手机号手动输入、粘贴、文件导入。
|
||
- 导入号码文件格式支持 CSV、TXT,最大文件大小 20 MB。
|
||
- 单任务最大号码数默认 100 万条。
|
||
- 支持去重、非法号码提示、黑名单拦截提示。
|
||
- 支持立即发送和定时发送。
|
||
- 不允许修改已审核模板主体,只允许填写模板变量;如需修改主体,必须新建模板重新审核。
|
||
- 不符合模板的短信按应用配置处理:拒绝发送、进入人工审核或直接发送。
|
||
- 敏感词命中第一期直接拒绝发送,并记录拒绝原因。
|
||
- 提交后展示任务编号和任务状态。
|
||
|
||
### 5.3 客户端批量任务
|
||
|
||
- 支持按任务编号、应用、发送时间、状态搜索。
|
||
- 展示任务总量、成功数、失败数、未知数、发送进度、创建人。
|
||
- 支持查看任务详情和导出明细;默认企业管理员可导出,普通用户需授权。
|
||
|
||
### 5.4 客户端发送详情
|
||
|
||
- 支持按手机号、内容、回执、时间搜索。
|
||
- 展示手机号、短信内容、计费条数、通道、提交时间、回执时间、状态。
|
||
- 支持查看单条发送链路。
|
||
|
||
### 5.5 客户端上行短信
|
||
|
||
- 支持按手机号、内容、接收时间搜索。
|
||
- 展示上行内容、接入号、匹配下发记录、接收时间。
|
||
|
||
### 5.6 客户端短信应用
|
||
|
||
- 支持新增、编辑、启用、停用应用。
|
||
- 支持配置回调地址、IP 白名单、应用密钥、日发送限额。
|
||
- 支持配置“不符合模板的短信”处理策略:拒绝发送、人工审核、直接发送。
|
||
- 支持配置应用级风控阈值:单任务最大号码数、重复号码比例、非法号码比例、黑名单命中比例、非工作时间大批量发送策略、短时间任务创建频控。
|
||
- 默认阈值:重复号码比例 30%、非法号码比例 10%、黑名单命中比例 5%、同一企业/应用 10 分钟内最多创建 10 次任务。
|
||
- 应用密钥需支持重置,并记录操作日志。
|
||
|
||
### 5.7 客户端模板管理
|
||
|
||
- 支持新增、编辑、提交审核、撤回、删除草稿。
|
||
- 支持变量识别和字数/计费条数预估。
|
||
- 支持查看审核记录和驳回原因。
|
||
|
||
### 5.8 客户端签名管理
|
||
|
||
- 支持新增、编辑、提交审核、上传证明材料。
|
||
- 支持维护引流信息。
|
||
- 支持查看通道报备状态。
|
||
|
||
### 5.9 客户端账户计费
|
||
|
||
- 充值套餐:展示可购买套餐、套餐价格、短信条数、有效期、适用范围。
|
||
- 账单流水:展示充值、冻结、扣费、退费、调整等流水。
|
||
- 账单流水需关联短信任务、短信记录或人工调整单据。
|
||
- 客户端账号设置属于系统管理,不允许客户自行配置通道或通道组。
|
||
|
||
### 5.10 运营端看板与监控
|
||
|
||
- 展示总发送量、成功率、通道健康度、待处理审核数。
|
||
- 发送监控展示通道状态、发送趋势、失败率、积压队列。
|
||
- 数据统计支持按企业、应用、通道、日期统计。
|
||
|
||
### 5.11 运营端客户与企业
|
||
|
||
- 支持企业列表、企业详情、新增、编辑、启用、停用。
|
||
- 支持企业认证资料审核。
|
||
- 支持查看企业下应用、签名、模板、发送记录、报备记录。
|
||
|
||
### 5.12 运营端审核
|
||
|
||
- 企业认证审核:通过、驳回、查看材料。
|
||
- 短信模板审核:通过、驳回、敏感词提示、变量检查。
|
||
- 短信审核:查看短信内容、号码量、计费条数、进入审核原因、命中规则、风险原因;支持通过、驳回。
|
||
- 审核动作集中在审核中心;企业应用/签名/模板管理页面只做查询、维护、停用、备注和查看审核记录。
|
||
|
||
### 5.13 运营端通道管理
|
||
|
||
- 支持新增、编辑、删除、启用、停用短信通道。
|
||
- 支持发送测试短信。
|
||
- 支持查看通道成功率、未知率、失败率、累计发送量。
|
||
- 支持进入通道报备详情。
|
||
|
||
### 5.14 运营端通道组管理
|
||
|
||
- 支持新增、编辑通道组。
|
||
- 支持配置运营商、区域、优先级、权重、备用通道、限速。
|
||
- 支持设置企业或应用绑定关系。
|
||
|
||
### 5.15 运营端报备任务
|
||
|
||
- 支持按企业、签名、通道、任务状态、时间搜索。
|
||
- 支持生成报备任务。
|
||
- 支持在报备任务中导出通道报备资料。
|
||
- 支持在报备任务中导入回执。
|
||
- 支持查看报备任务详情和处理历史。
|
||
|
||
### 5.16 运营端报备记录
|
||
|
||
- 记录报备任务生成、导出、导入、状态同步、失败原因。
|
||
- 支持按企业、签名、通道、状态、操作时间搜索。
|
||
|
||
### 5.17 安全控制
|
||
|
||
- 企业黑名单:企业维度号码拦截。
|
||
- 全局黑名单:平台维度号码拦截。
|
||
- 敏感词管理:发送前和审核时命中提示或拦截。
|
||
- 手机号段库:用于运营商识别和路由。
|
||
- 引流信息字段库:用于签名/报备资料结构化采集。
|
||
|
||
### 5.18 风控规则闭环
|
||
|
||
- 运营端提供风控规则配置页面,可按平台、企业、应用维度配置规则。
|
||
- 第一版支持规则:单任务最大号码数、重复号码比例、非法号码比例、黑名单命中比例、非工作时间大批量营销发送、短时间任务创建频控、模板变量异常。
|
||
- 默认阈值:重复号码比例 30%、非法号码比例 10%、黑名单命中比例 5%、同一企业/应用 10 分钟内最多创建 10 次任务。
|
||
- 每条规则需配置启停、阈值、处理动作、适用范围、优先级。
|
||
- 处理动作包括:拒绝发送、进入人工审核、仅记录预警。
|
||
- 命中规则后必须生成风控命中记录,包含规则编号、规则名称、阈值、实际值、处理动作、命中时间。
|
||
- 进入短信审核的任务必须展示进入审核原因和命中的风控规则。
|
||
- 直接拒绝的任务必须向客户端返回可读原因,并写入系统日志。
|
||
|
||
### 5.19 运营端账户计费
|
||
|
||
- 套餐配置:支持配置套餐名称、价格、短信条数、有效期、适用企业范围、启停状态。
|
||
- 充值记录:支持人工充值、套餐购买记录、授信额度调整。
|
||
- 账单流水:支持冻结、扣费、退费、解冻、人工调整、失败返还。
|
||
- 计费规则:支持按短信计费条数、企业单价、套餐余量、授信额度计算费用。
|
||
- 账务流水必须与短信记录形成可追溯关系,支持对账导出。
|
||
- 最终失败、超时失败需要退费。
|
||
- 计费口径可配置为按提交成功计费或按回执成功计费。
|
||
|
||
### 5.20 数据保存与清理
|
||
|
||
- 发送记录保存 12 个月。
|
||
- 支持运营端手动按月清除发送记录。
|
||
- 冷热分层由技术方案自行设计,但不得影响最近 12 个月在线查询与对账。
|
||
|
||
### 5.21 系统管理与审计
|
||
|
||
- 用户管理支持角色、权限、启停、重置密码。
|
||
- 系统日志记录登录、配置变更、审核、发送、导入导出、密钥重置等操作。
|
||
|
||
## 6. 非功能需求
|
||
|
||
### 6.1 性能
|
||
|
||
- 平台峰值提交能力:500 条短信/秒。
|
||
- 批量任务提交接口响应:创建任务后 2 秒内返回任务编号,不同步完成发送。
|
||
- 查询接口 P95 响应时间:列表查询小于 500 ms,详情查询小于 800 ms。
|
||
- 发送进度延迟:任务进度统计延迟不超过 5 秒。
|
||
- 回执处理:单通道回执接入后 10 秒内完成状态更新,异常积压需告警。
|
||
|
||
### 6.2 可用性
|
||
|
||
- 发送链路服务可横向扩容。
|
||
- 通道异常不影响其他通道发送。
|
||
- 队列消息必须可重试、可追踪、可补偿。
|
||
- 关键配置变更必须记录审计日志。
|
||
|
||
### 6.3 数据安全
|
||
|
||
- 企业数据必须按租户隔离。
|
||
- 手机号、通道密码、应用密钥等敏感字段加密或脱敏展示。
|
||
- 导入文件需做格式校验、大小限制、病毒/恶意内容防护。
|
||
- 导出文件需鉴权并记录日志。
|
||
|
||
### 6.4 合规与风控
|
||
|
||
- 支持敏感词拦截。
|
||
- 支持黑名单拦截。
|
||
- 支持按企业、应用、通道设置日限额、秒级限速。
|
||
- 营销类短信不单独硬编码强制审核,由应用配置和风控规则共同决定处理动作。
|
||
|
||
## 7. 推荐技术栈
|
||
|
||
### 7.1 前端
|
||
|
||
- React 19
|
||
- TypeScript
|
||
- Vite
|
||
- React Router
|
||
- Zustand 或 TanStack Query
|
||
- ECharts
|
||
- Lucide React
|
||
- CSS Modules 或现有全局 CSS 体系
|
||
|
||
说明:现有原型已使用 React、TypeScript、Vite、React Router、Zustand、ECharts、Lucide,可延续。
|
||
|
||
### 7.2 后端
|
||
|
||
采用 TypeScript 业务后台 + Go CMPP 网关:
|
||
|
||
- 后端 API:NestJS + TypeScript
|
||
- DB:PostgreSQL
|
||
- ORM:Prisma
|
||
- 队列:Redis + BullMQ
|
||
- 缓存/限速:Redis
|
||
- 文件:MinIO
|
||
- API 文档:OpenAPI/Swagger
|
||
- 监控:Prometheus + Grafana
|
||
- 日志:Loki 或 ELK
|
||
- 网关:Go 实现真实 CMPP Gateway,第一版必须接入真实 CMPP 长连接能力
|
||
|
||
### 7.3 短信网关
|
||
|
||
- Go CMPP Gateway 作为独立服务部署,不和 NestJS 业务后台耦合。
|
||
- 第一版支持真实 CMPP 2.0/3.0 长连接能力,后续可扩展 SGIP、SMGP、HTTP 通道。
|
||
- 网关负责通道连接、登录认证、长连接保活、submit、deliver、active test、重连、滑动窗口、sequence 管理、回执与上行接收。
|
||
- NestJS 业务后台负责企业、应用、模板、签名、报备、审核、计费、风控、路由决策和发送任务编排。
|
||
- NestJS 与 Go Gateway 之间通过 Redis/BullMQ 队列或内部 gRPC/HTTP 通信;第一版建议使用队列提交发送指令、队列回传提交结果和回执事件。
|
||
- Go Gateway 不直接承担业务审核、账务扣费、签名报备判断,只执行已被业务后台路由后的通道提交。
|
||
|
||
### 7.4 Go CMPP 开源项目评估结论
|
||
|
||
可参考开源项目,但不建议直接把完整开源网关作为核心生产服务不加改造使用。建议策略:
|
||
|
||
- 协议层优先评估并复用成熟 Go CMPP 协议库,降低从零实现 CMPP PDU、编解码、sequence、滑动窗口、deliver 解析的风险。
|
||
- 网关服务层由本项目自研,围绕本系统的通道配置、限速、发送队列、回执幂等、监控、日志、故障切换、账务关联来设计。
|
||
- 对开源网关项目可作为参考实现或测试工具,不直接绑定业务模型。
|
||
|
||
初步候选:
|
||
|
||
- `bigwhite/gocmpp`:Go CMPP 协议库,适合作为协议层参考或依赖候选。
|
||
- `JoeCao/cmpp-gateway`:基于 gocmpp 的网关项目,包含 gateway、backend、simulator 等模块,适合作为架构参考和联调模拟参考。
|
||
|
||
落地前需要完成一次技术 Spike:
|
||
|
||
1. 拉取候选项目,确认 License、维护活跃度、CMPP 2.0/3.0 支持情况。
|
||
2. 用模拟 SMSC 完成 connect、submit、deliver、active test、disconnect 流程。
|
||
3. 压测单连接和多连接 submit 能力,验证 500 条/秒调度下的网关稳定性。
|
||
4. 检查异常场景:断线重连、sequence 回绕、窗口满、回执重复、SMSC 慢响应。
|
||
5. 决定最终依赖方式:直接依赖协议库、fork 改造、或完全自研协议层。
|
||
|
||
## 8. 建议系统架构
|
||
|
||
### 8.1 服务拆分
|
||
|
||
第一版可采用模块化单体加独立发送 Worker,避免过早微服务化:
|
||
|
||
- Web/API 服务:认证、企业、应用、签名、模板、审核、通道、报备、查询。
|
||
- Send Worker:消费发送队列,执行路由、限速、提交通道。
|
||
- Receipt Worker:处理通道回执、更新发送状态。
|
||
- Report Worker:处理报备资料导出、回执导入、状态同步。
|
||
- Gateway Adapter:CMPP 通道连接与协议适配。
|
||
|
||
后续可拆为独立服务:
|
||
|
||
- tenant-service
|
||
- config-service
|
||
- audit-service
|
||
- send-service
|
||
- gateway-service
|
||
- report-service
|
||
- statistics-service
|
||
|
||
### 8.2 发送链路
|
||
|
||
1. API 创建批量任务。
|
||
2. 拆分号码和变量,生成 message_record。
|
||
3. 写入数据库并投递 send.queue。
|
||
4. Send Worker 消费消息,校验黑名单、敏感词、限额。
|
||
5. 路由选择通道。
|
||
6. 通过通道限速器控制 TPS。
|
||
7. 调用 Gateway Adapter 提交短信。
|
||
8. 写入 submit 状态。
|
||
9. Receipt Worker 接收回执并更新最终状态。
|
||
10. 统计任务进度。
|
||
|
||
### 8.3 500 条/秒实现建议
|
||
|
||
- 创建任务与发送解耦,提交接口只负责入库和投递队列。
|
||
- Send Worker 多实例部署,每实例处理固定通道分片或队列分片。
|
||
- 使用 Redis Token Bucket 或本地令牌桶加 Redis 协调实现通道限速。
|
||
- 单条发送记录以 message_id 全局唯一,所有提交和回执处理幂等。
|
||
- 批量插入 message_record,避免逐条事务。
|
||
- 按任务、日期或企业对发送明细表做分区。
|
||
- 热查询统计写入 Redis 或统计表,避免实时 count 大表。
|
||
|
||
## 9. 核心数据模型
|
||
|
||
### 9.1 租户与用户
|
||
|
||
- tenant:企业主体。
|
||
- tenant_certification:企业认证资料。
|
||
- user:用户。
|
||
- role、permission、user_role:权限。
|
||
- operation_log:操作日志。
|
||
|
||
### 9.2 短信配置
|
||
|
||
- sms_application:短信应用。
|
||
- sms_signature:短信签名。
|
||
- signature_material:签名证明材料。
|
||
- sms_template:短信模板。
|
||
- template_variable:模板变量。
|
||
- audit_record:审核记录。
|
||
|
||
### 9.3 通道与路由
|
||
|
||
- sms_channel:短信通道。
|
||
- sms_channel_group:通道组。
|
||
- sms_channel_group_item:通道组通道明细。
|
||
- channel_route_rule:路由规则。
|
||
- channel_health_metric:通道健康指标。
|
||
|
||
### 9.4 报备
|
||
|
||
- channel_report_field:通道报备字段配置。
|
||
- signature_report_material:签名报备资料。
|
||
- channel_signature_report_task:通道签名报备任务。
|
||
- channel_signature_report_record:报备记录。
|
||
- report_export_file:导出文件。
|
||
- report_receipt_import:回执导入批次。
|
||
|
||
### 9.5 发送
|
||
|
||
- sms_batch_task:批量任务。
|
||
- sms_message_record:单号码发送记录,所有平台任务、API 调用、CMPP 对接发送均进入此表。
|
||
- sms_api_request:API 调用批次记录。
|
||
- cmpp_submit_session:CMPP 对接提交会话或批次记录。
|
||
- sms_submit_record:通道提交记录。
|
||
- sms_receipt_record:短信回执。
|
||
- sms_uplink_message:上行短信。
|
||
- sms_send_audit:短信发送审核。
|
||
|
||
### 9.6 风控与基础数据
|
||
|
||
- enterprise_blacklist:企业黑名单。
|
||
- global_blacklist:全局黑名单。
|
||
- sensitive_word:敏感词。
|
||
- risk_rule:风控规则配置。
|
||
- risk_rule_hit:风控规则命中记录。
|
||
- phone_segment:手机号段库。
|
||
- drainage_field:引流字段库。
|
||
|
||
### 9.7 账户计费
|
||
|
||
- billing_plan:充值套餐。
|
||
- tenant_account:企业账户。
|
||
- account_balance:余额或套餐余量。
|
||
- account_transaction:账户流水。
|
||
- billing_rule:计费规则。
|
||
- sms_billing_record:短信计费记录。
|
||
- recharge_order:充值订单或人工充值记录。
|
||
|
||
## 10. 接口范围
|
||
|
||
### 10.1 客户端 API
|
||
|
||
- `POST /api/client/auth/login`
|
||
- `GET /api/client/dashboard`
|
||
- `GET /api/client/applications`
|
||
- `POST /api/client/applications`
|
||
- `PUT /api/client/applications/{id}`
|
||
- `POST /api/client/applications/{id}/secret/reset`
|
||
- `GET /api/client/signatures`
|
||
- `POST /api/client/signatures`
|
||
- `POST /api/client/signatures/{id}/submit`
|
||
- `GET /api/client/templates`
|
||
- `POST /api/client/templates`
|
||
- `POST /api/client/templates/{id}/submit`
|
||
- `POST /api/client/sms/tasks`
|
||
- `GET /api/client/sms/tasks`
|
||
- `GET /api/client/sms/tasks/{id}`
|
||
- `GET /api/client/sms/messages`
|
||
- `GET /api/client/sms/uplinks`
|
||
- `GET /api/client/billing/plans`
|
||
- `POST /api/client/billing/orders`
|
||
- `GET /api/client/billing/transactions`
|
||
- `POST /api/client/enterprise-certification`
|
||
- `GET /api/client/users`
|
||
- `GET /api/client/system-logs`
|
||
|
||
### 10.2 运营端 API
|
||
|
||
- `GET /api/admin/dashboard`
|
||
- `GET /api/admin/monitor`
|
||
- `GET /api/admin/statistics`
|
||
- `GET /api/admin/enterprises`
|
||
- `POST /api/admin/enterprises`
|
||
- `PUT /api/admin/enterprises/{id}`
|
||
- `GET /api/admin/enterprise-applications`
|
||
- `GET /api/admin/enterprise-signatures`
|
||
- `GET /api/admin/enterprise-templates`
|
||
- `POST /api/admin/audits/{id}/approve`
|
||
- `POST /api/admin/audits/{id}/reject`
|
||
- `GET /api/admin/channels`
|
||
- `POST /api/admin/channels`
|
||
- `PUT /api/admin/channels/{id}`
|
||
- `POST /api/admin/channels/{id}/test`
|
||
- `GET /api/admin/channels/{id}/reports`
|
||
- `POST /api/admin/channel-groups`
|
||
- `GET /api/admin/report-tasks`
|
||
- `POST /api/admin/report-tasks/generate`
|
||
- `POST /api/admin/report-tasks/{id}/export`
|
||
- `POST /api/admin/report-tasks/{id}/receipt-import`
|
||
- `GET /api/admin/report-records`
|
||
- `GET /api/admin/sms/tasks`
|
||
- `GET /api/admin/sms/records`
|
||
- `GET /api/admin/sms/uplinks`
|
||
- `GET /api/admin/blacklists/enterprise`
|
||
- `GET /api/admin/blacklists/global`
|
||
- `GET /api/admin/sensitive-words`
|
||
- `GET /api/admin/risk-rules`
|
||
- `POST /api/admin/risk-rules`
|
||
- `PUT /api/admin/risk-rules/{id}`
|
||
- `GET /api/admin/risk-rule-hits`
|
||
- `GET /api/admin/billing/plans`
|
||
- `POST /api/admin/billing/plans`
|
||
- `PUT /api/admin/billing/plans/{id}`
|
||
- `GET /api/admin/billing/transactions`
|
||
- `POST /api/admin/billing/recharges`
|
||
- `GET /api/admin/phone-segments`
|
||
- `GET /api/admin/drainage-fields`
|
||
- `GET /api/admin/users`
|
||
|
||
### 10.3 通道回调 API
|
||
|
||
- `POST /api/gateway/receipts/{channelCode}`
|
||
- `POST /api/gateway/uplinks/{channelCode}`
|
||
|
||
如使用 CMPP 长连接,回执和上行由 Gateway Adapter 直接消费协议消息,不一定暴露 HTTP 回调。
|
||
|
||
## 11. 状态定义
|
||
|
||
### 11.1 审核状态
|
||
|
||
- draft:草稿
|
||
- pending:待审核
|
||
- approved:已通过
|
||
- rejected:已驳回
|
||
|
||
### 11.2 报备状态
|
||
|
||
- not_required:无需报备
|
||
- waiting_material:待资料
|
||
- pending:待报备
|
||
- exporting:导出中
|
||
- submitted:已提交通道
|
||
- approved:报备通过
|
||
- rejected:报备失败
|
||
- partial_approved:部分通过
|
||
|
||
### 11.3 发送任务状态
|
||
|
||
- draft:草稿
|
||
- pending_audit:待审核
|
||
- rejected:审核驳回
|
||
- scheduled:待定时发送
|
||
- queued:排队中
|
||
- sending:发送中
|
||
- completed:已完成
|
||
- canceled:已取消
|
||
- failed:失败
|
||
|
||
### 11.4 单条短信状态
|
||
|
||
- created:已创建
|
||
- rejected:风控拒绝或规则拒绝
|
||
- filtered:已拦截
|
||
- queued:待发送
|
||
- submitted:已提交
|
||
- submit_failed:提交失败
|
||
- delivered:发送成功
|
||
- undelivered:发送失败
|
||
- unknown:未知
|
||
- timeout:超时
|
||
|
||
### 11.5 短信来源
|
||
|
||
- platform_task:客户端平台批量任务
|
||
- api:企业 API 调用
|
||
- cmpp: 企业 CMPP 对接发送
|
||
|
||
### 11.6 风控处理动作
|
||
|
||
- reject:拒绝发送
|
||
- manual_audit:进入人工审核
|
||
- warn_only:仅记录预警
|
||
|
||
### 11.7 账务状态
|
||
|
||
- estimated:已预估
|
||
- frozen:已冻结
|
||
- charged:已扣费
|
||
- refunded:已退费
|
||
- released:已解冻
|
||
- adjusted:人工调整
|
||
|
||
## 12. 实施步骤
|
||
|
||
### 阶段 1:工程初始化
|
||
|
||
1. 确认第一版范围,关闭或隐藏彩信菜单,保留账户计费菜单。
|
||
2. 建立前端、NestJS API、Go CMPP Gateway 的仓库结构或 monorepo 工作区。
|
||
3. 配置代码规范、环境变量、构建、Docker Compose。
|
||
4. 建立 Prisma schema 和数据库迁移流程。
|
||
5. 建立 OpenAPI 文档和前端 API Client 生成流程。
|
||
6. 建立 Go Gateway 的配置、日志、监控、健康检查和本地模拟 SMSC 联调环境。
|
||
|
||
### 阶段 2:基础能力
|
||
|
||
1. 实现登录、用户、角色、权限。
|
||
2. 实现租户隔离。
|
||
3. 实现文件上传和对象存储。
|
||
4. 实现操作日志。
|
||
5. 实现基础字典:手机号段、敏感词、黑名单、引流字段。
|
||
6. 实现账户、套餐、账务流水基础模型。
|
||
|
||
### 阶段 3:企业与配置
|
||
|
||
1. 实现企业认证。
|
||
2. 实现短信应用。
|
||
3. 实现短信签名和材料。
|
||
4. 实现短信模板和变量解析。
|
||
5. 实现应用级不符合模板短信处理策略。
|
||
6. 实现审核记录与审核工作台。
|
||
|
||
### 阶段 4:通道与报备
|
||
|
||
1. 实现短信通道 CRUD。
|
||
2. 实现通道组与路由规则。
|
||
3. 实现通道签名报备字段配置。
|
||
4. 实现报备任务生成。
|
||
5. 实现报备资料导出。
|
||
6. 实现回执导入和报备状态同步。
|
||
|
||
### 阶段 5:发送链路
|
||
|
||
1. 实现批量任务创建。
|
||
2. 实现号码导入、校验、去重、拆分。
|
||
3. 实现风控规则配置、规则命中、审核原因展示。
|
||
4. 实现发送审核策略。
|
||
5. 实现发送前账户校验、预估、冻结或扣费。
|
||
6. 实现发送队列。
|
||
7. 实现 Send Worker。
|
||
8. 实现 Go CMPP Gateway,支持真实 CMPP 长连接、submit、deliver、active test、重连。
|
||
9. 实现回执处理、72 小时超时和上行处理。
|
||
10. 实现任务进度统计。
|
||
|
||
### 阶段 6:查询与统计
|
||
|
||
1. 实现客户端批量任务、发送详情、上行短信。
|
||
2. 实现运营端任务进度、短信记录、上行记录。
|
||
3. 实现客户端充值套餐、账单流水。
|
||
4. 实现运营端充值记录、账务流水、套餐配置。
|
||
5. 实现运营看板、发送监控、数据统计。
|
||
6. 实现导出权限和导出日志。
|
||
|
||
### 阶段 7:性能与稳定性
|
||
|
||
1. 压测任务创建接口。
|
||
2. 压测队列消费和发送 Worker。
|
||
3. 压测回执处理。
|
||
4. 验证 500 条/秒提交能力。
|
||
5. 验证风控规则命中、审核原因、账务流水一致性。
|
||
6. 验证通道限速、故障切换、重试、幂等。
|
||
7. 加入监控告警和慢查询优化。
|
||
|
||
### 阶段 8:验收
|
||
|
||
1. 按原型完成页面功能联调。
|
||
2. 完成核心流程端到端测试。
|
||
3. 完成权限测试。
|
||
4. 完成数据隔离测试。
|
||
5. 完成账务对账测试。
|
||
6. 完成性能测试报告。
|
||
7. 完成 Linux 部署方案。
|
||
8. 完成上线回滚方案。
|
||
|
||
## 13. Codex 开发执行建议
|
||
|
||
### 13.1 推荐任务拆分
|
||
|
||
1. 根据本文创建数据库迁移脚本和实体模型。
|
||
2. 实现认证、租户、权限基础模块。
|
||
3. 实现企业、应用、签名、模板 CRUD 与审核。
|
||
4. 实现账户计费、套餐、账务流水。
|
||
5. 实现通道、通道组、报备任务。
|
||
6. 实现风控规则、审核原因、规则命中记录。
|
||
7. 实现 NestJS Send Worker、BullMQ 队列和 Redis 限速。
|
||
8. 实现 Go CMPP Gateway,并完成与 NestJS 队列事件的联调。
|
||
9. 实现发送任务、发送明细、回执、上行。
|
||
10. 前端将 mock service 替换为真实 API。
|
||
11. 增加集成测试、性能测试和部署脚本。
|
||
|
||
### 13.2 给 Codex 的单任务提示模板
|
||
|
||
```text
|
||
请基于 docs/first-version-development-requirements.md,实现【模块名】。
|
||
要求:
|
||
1. 遵循现有原型页面和字段命名。
|
||
2. NestJS 后端实现 Prisma schema、migration、Service、Controller、DTO、单元测试。
|
||
3. Go Gateway 实现配置、连接管理、CMPP submit/deliver/active test、回执事件发布、单元测试。
|
||
4. 前端将对应 mock 数据替换为 API 调用,保留现有视觉样式。
|
||
5. 补充错误处理、权限校验、操作日志。
|
||
6. 运行构建和相关测试。
|
||
```
|
||
|
||
## 14. 已确认关键决策
|
||
|
||
### 14.1 通道协议与报备
|
||
|
||
- 运营商通道协议参数和回执格式先按公开 CMPP 文档实现。
|
||
- 签名报备字段模板由运营端自行配置和手工维护。
|
||
- 第一期不考虑通过 API 向运营商传送签名报备资料。
|
||
|
||
### 14.2 发送能力
|
||
|
||
- 需要支持定时发送。
|
||
- 导入号码文件格式支持 CSV、TXT。
|
||
- 导入文件最大 20 MB。
|
||
- 单任务最大号码数默认 100 万条。
|
||
|
||
### 14.3 风控默认阈值
|
||
|
||
- 重复号码比例默认阈值:30%。
|
||
- 非法号码比例默认阈值:10%。
|
||
- 黑名单命中比例默认阈值:5%。
|
||
- 短时间任务创建频控默认阈值:同一企业/应用 10 分钟内 10 次。
|
||
|
||
### 14.4 计费与退费
|
||
|
||
- 最终失败、超时失败需要退费。
|
||
- 计费口径可配置为按提交成功计费或按回执成功计费。
|
||
- 短信计费规则只按 70/67 字拆分。
|
||
|
||
### 14.5 数据保存与更正
|
||
|
||
- 发送记录保存 12 个月。
|
||
- 支持手动按月清除发送记录。
|
||
- 冷热分层由技术方案自行设计。
|
||
- 超时后供应商又返回成功回执时,不允许自动覆盖业务失败状态。
|
||
- 系统需保留二次回执记录,并提供人工更正功能。
|
||
|
||
### 14.6 认证、部署与账号体系
|
||
|
||
- 第一版不考虑多租户独立域名和企业 SSO,只支持一个平台域名。
|
||
- 部署环境为 Linux。
|
||
- 最终需要给出 Linux 部署方案。
|
||
- 企业认证资料采用人工上传、人工审核,不接第三方实名认证或营业执照 OCR。
|
||
|
||
### 14.7 待确认问题
|
||
|
||
暂无阻塞性待确认问题。后续进入详细设计或开发时,如遇具体运营商协议参数、生产部署资源规格、默认套餐价格等执行细节,再按模块补充确认。
|
||
|
||
## 15. 第一版落地执行路线
|
||
|
||
### 阶段 0:技术 Spike
|
||
|
||
目标:优先验证最大技术风险,避免业务代码写完后发现网关链路不可用。
|
||
|
||
任务:
|
||
|
||
1. Go CMPP Gateway Spike
|
||
- 基于 `gocmpp` 验证 CMPP connect、submit、deliver、active test、terminate。
|
||
- 参考 `JoeCao/cmpp-gateway` 的连接、重连、SEQID/MSGID 追踪、模拟器设计。
|
||
- 搭建最小 Go Gateway,支持配置一个模拟或真实 CMPP 通道。
|
||
|
||
2. BullMQ 通信 Spike
|
||
- NestJS 通过 Redis/BullMQ 下发发送指令。
|
||
- Go Gateway 消费发送指令或监听队列事件。
|
||
- Go Gateway 回传提交结果、回执、上行事件。
|
||
|
||
3. 500 条/秒链路 Spike
|
||
- 不接完整业务,只压测 NestJS 入队、Go Gateway 消费、模拟通道响应。
|
||
- 验证平台可稳定入队并调度 500 条短信/秒。
|
||
- 输出压测结果、瓶颈和下一步优化建议。
|
||
|
||
验收标准:
|
||
|
||
- 能跑通一条模拟短信:NestJS 入队 -> Go Gateway 提交 -> submit resp -> deliver 回执 -> NestJS 更新状态。
|
||
- Go Gateway 断线后可重连,并能继续消费后续消息。
|
||
- 所有消息都有 messageId、channelId、sequenceId 或可追踪映射。
|
||
- Spike 文档记录是否采用 `gocmpp`、是否需要 fork、哪些能力需要自研。
|
||
|
||
### 阶段 1:工程骨架
|
||
|
||
目标:让前端、NestJS API、Go Gateway 和基础设施能稳定启动。
|
||
|
||
任务:
|
||
|
||
1. 建立 monorepo 或多目录结构:
|
||
- `web`:React + TypeScript + Vite
|
||
- `api`:NestJS + TypeScript
|
||
- `gateway`:Go CMPP Gateway
|
||
- `docs`:需求、设计、接口、部署文档
|
||
2. 配置 PostgreSQL、Redis、MinIO、Docker Compose。
|
||
3. 配置 Prisma、migration、seed。
|
||
4. 配置 OpenAPI/Swagger。
|
||
5. 配置日志、环境变量、健康检查。
|
||
6. 配置基础 CI 命令:lint、test、build。
|
||
|
||
验收标准:
|
||
|
||
- `web`、`api`、`gateway` 均可本地启动。
|
||
- Docker Compose 可启动 PostgreSQL、Redis、MinIO。
|
||
- NestJS 可连接 PostgreSQL 和 Redis。
|
||
- Go Gateway 可读取配置并启动健康检查接口。
|
||
|
||
### 阶段 2:基础后台
|
||
|
||
目标:完成业务底座。
|
||
|
||
任务:
|
||
|
||
1. 登录认证。
|
||
2. 企业/租户。
|
||
3. 用户、角色、权限。
|
||
4. 操作日志。
|
||
5. 文件上传。
|
||
6. 系统字典。
|
||
7. 手机号段库。
|
||
8. 敏感词。
|
||
9. 黑名单。
|
||
10. 引流字段库。
|
||
|
||
验收标准:
|
||
|
||
- 所有业务数据具备租户隔离。
|
||
- 关键操作写入操作日志。
|
||
- 文件上传可用于签名资料和认证资料。
|
||
|
||
### 阶段 3:短信配置
|
||
|
||
目标:客户和运营能配置发送短信所需资源。
|
||
|
||
任务:
|
||
|
||
1. 短信应用。
|
||
2. 应用密钥和 IP 白名单。
|
||
3. 应用发送限额。
|
||
4. 应用级“不符合模板短信”处理策略。
|
||
5. 短信签名。
|
||
6. 签名资料。
|
||
7. 短信模板。
|
||
8. 模板变量。
|
||
9. 平台审核记录。
|
||
|
||
验收标准:
|
||
|
||
- 客户端可创建应用、签名、模板。
|
||
- 运营端可审核签名和模板。
|
||
- 发送时只能使用审核通过的签名和模板。
|
||
- 客户端不能修改已审核模板主体,只能填写变量。
|
||
|
||
### 阶段 4:通道与报备
|
||
|
||
目标:运营端能配置通道、通道组和签名报备流程。
|
||
|
||
任务:
|
||
|
||
1. 短信通道管理。
|
||
2. 通道组管理。
|
||
3. 路由规则。
|
||
4. 通道签名报备字段配置。
|
||
5. 签名报备资料。
|
||
6. 报备任务生成。
|
||
7. 报备资料导出。
|
||
8. 回执导入。
|
||
9. 报备记录。
|
||
10. 签名报备状态同步。
|
||
|
||
验收标准:
|
||
|
||
- 签名审核状态和通道报备状态分层。
|
||
- 发送前必须校验签名在目标通道报备通过。
|
||
- 报备任务导出、导入具备幂等和历史记录。
|
||
|
||
### 阶段 5:账户计费
|
||
|
||
目标:发送前能判断是否可发,发送后能对账。
|
||
|
||
任务:
|
||
|
||
1. 套餐配置。
|
||
2. 充值套餐。
|
||
3. 企业账户。
|
||
4. 余额或套餐余量。
|
||
5. 充值记录。
|
||
6. 账单流水。
|
||
7. 发送预估费用。
|
||
8. 冻结、扣费、退费、解冻。
|
||
9. 短信记录与账务流水关联。
|
||
|
||
验收标准:
|
||
|
||
- 客户端充值套餐和账单流水进入第一版。
|
||
- 发送前校验账户余额、套餐余量或授信额度。
|
||
- 每条短信记录可追溯到账务流水。
|
||
|
||
### 阶段 6:风控与审核
|
||
|
||
目标:发送前有规则、有原因、有闭环。
|
||
|
||
任务:
|
||
|
||
1. 风控规则配置。
|
||
2. 默认阈值。
|
||
3. 单任务最大号码数。
|
||
4. 重复号码比例。
|
||
5. 非法号码比例。
|
||
6. 黑名单命中比例。
|
||
7. 非工作时间大批量营销发送。
|
||
8. 短时间任务创建频控。
|
||
9. 模板变量异常。
|
||
10. 风控命中记录。
|
||
11. 短信审核。
|
||
12. 审核原因展示。
|
||
13. 拒绝原因返回客户端。
|
||
|
||
验收标准:
|
||
|
||
- 命中风控规则时记录规则编号、规则名称、阈值、实际值、处理动作。
|
||
- 进入审核的任务必须展示审核原因。
|
||
- 直接拒绝的任务必须向客户端返回可读原因。
|
||
|
||
### 阶段 7:发送链路
|
||
|
||
目标:真实跑通短信发送。
|
||
|
||
任务:
|
||
|
||
1. 客户端批量任务创建。
|
||
2. 号码导入和拆分。
|
||
3. 发送任务入队。
|
||
4. Send Worker。
|
||
5. 通道路由。
|
||
6. Redis 限速。
|
||
7. Go Gateway 提交 CMPP。
|
||
8. Submit Resp 处理。
|
||
9. 回执处理。
|
||
10. 上行短信处理。
|
||
11. 72 小时未知转超时。
|
||
12. 任务进度统计。
|
||
|
||
验收标准:
|
||
|
||
- 平台创建的批量任务只记录客户端任务。
|
||
- 平台任务、API 调用、CMPP 对接发送全部按手机号维度进入短信记录。
|
||
- 支持 submit resp、deliver 回执、上行短信、超时补偿。
|
||
|
||
### 阶段 8:查询、统计、验收
|
||
|
||
目标:系统可运营、可排查、可上线。
|
||
|
||
任务:
|
||
|
||
1. 客户端批量任务。
|
||
2. 客户端发送详情。
|
||
3. 客户端上行短信。
|
||
4. 运营端发送监控。
|
||
5. 运营端任务进度。
|
||
6. 运营端短信记录。
|
||
7. 运营端上行记录。
|
||
8. 运营看板。
|
||
9. 数据统计。
|
||
10. 操作日志审计。
|
||
11. 性能压测。
|
||
12. 500 条/秒报告。
|
||
13. Linux 上线部署文档。
|
||
14. 回滚方案。
|
||
|
||
验收标准:
|
||
|
||
- 可按企业、应用、通道、任务、手机号追踪发送链路。
|
||
- 可按账务流水和短信记录对账。
|
||
- 输出 500 条/秒压测报告。
|
||
- 输出 Linux 部署方案,至少覆盖 Docker Compose 或 systemd 部署、环境变量、数据库迁移、日志目录、备份恢复、服务健康检查和回滚步骤。
|
||
|
||
## 16. 新 Codex 会话提示词
|
||
|
||
## 17. 第一版需求增补记录
|
||
|
||
### 2026-07-01 账户与日志展示调整
|
||
|
||
1. 运营端增加企业人工充值入口。
|
||
- 运营端可针对指定企业录入人工充值金额、操作人和备注。
|
||
- 人工充值必须写入充值订单和账务流水。
|
||
- 运营端充值记录需区分人工充值和套餐充值。
|
||
2. 客户端概览指标调整。
|
||
- 原“剩余条数”改为“剩余余额”。
|
||
- 原“近24小时成功率”改为“今日发送条数和今日成功率”。
|
||
- 新增“今日消费金额”和“今日返还金额”展示。
|
||
3. 运营端增加系统日志。
|
||
- 运营端可查询全平台系统日志。
|
||
- 日志需支持按企业、模块、级别、操作人、资源 ID 或详情定位。
|
||
- 人工充值、审核、风控、发送链路、系统管理等关键动作需要可追溯。
|
||
|
||
建议新开 Codex 会话后直接发送以下提示词:
|
||
|
||
```text
|
||
当前项目是 CMPP 短信平台第一版开发,工作区内已有前端设计原型和需求文档。
|
||
|
||
请先完整阅读:
|
||
1. docs/first-version-development-requirements.md
|
||
2. docs/ui-design-guidelines.md
|
||
3. package.json
|
||
4. src/routes/AppRoutes.tsx
|
||
5. src/layouts/ClientLayout.tsx
|
||
6. src/layouts/AdminLayout.tsx
|
||
|
||
重要前提:
|
||
- 第一版保留短信业务,排除彩信功能。
|
||
- 账户计费、充值套餐、账单流水进入第一版。
|
||
- 前端使用 React + TypeScript + Vite。
|
||
- 后端 API 使用 NestJS + TypeScript。
|
||
- DB 使用 PostgreSQL。
|
||
- ORM 使用 Prisma。
|
||
- 队列使用 Redis + BullMQ。
|
||
- 缓存/限速使用 Redis。
|
||
- 文件使用 MinIO。
|
||
- 第一版必须实现真实 Go CMPP Gateway。
|
||
- Go Gateway 协议层优先评估 gocmpp,参考 JoeCao/cmpp-gateway 的连接、重连、SEQID/MSGID 追踪、模拟器设计。
|
||
- 不从零手写整个 CMPP 协议栈,也不直接照搬完整开源网关;协议层可复用,服务层按本项目自研。
|
||
- NestJS 负责业务审核、风控、计费、报备、路由和发送编排。
|
||
- Go Gateway 只负责 CMPP 连接、协议提交、submit resp、回执、上行事件回传。
|
||
|
||
请从 docs/first-version-development-requirements.md 的“阶段 0:技术 Spike”开始执行。
|
||
|
||
第一步请先不要大规模写业务代码,先输出并创建阶段 0 Spike 的最小工程计划,包括:
|
||
1. 目录结构建议。
|
||
2. NestJS 与 Go Gateway 的队列消息格式。
|
||
3. Go Gateway 最小能力清单。
|
||
4. gocmpp 与 cmpp-gateway 的技术评估任务。
|
||
5. 500 条/秒 Spike 压测指标。
|
||
6. 阶段 0 的验收标准。
|
||
|
||
然后按计划逐步实现。每完成一步都要运行构建或测试,并更新文档。
|
||
```
|