功能 #15793
金银报价
开始日期:
2026-07-21
计划完成日期:
% 完成:
100%
描述
需求以及相关信息请看:
http://redmine.tajansoft.com/projects/gold-price-pusher/wiki/Wiki
测试背景
这是金银报价机器人系统。外部行情系统推送金价/银价行情到 market-api,系统按后台配置的报价规则计算新报价,然后通过钉钉群机器人发送报价消息。后台可以配置报价规则、消息模板、钉钉群,并查看消息推送清单。
重点测试流程
- 后台配置
- 报价规则:金价、银价规则能查看、编辑、保存、公式预览。
- 报价消息模板:模板内容必填;支持参数 {{quote_price}}、{{datetime}}、{{y}}、{{m}}、{{d}}、{{h}}、{{min}}、{{s}}。
- 钉钉群:新增、编辑、启用/禁用;加签 secret 开启时必须能正常发送。
- 行情推送
- 推送有效金价行情后,满足规则时生成金价报价。
- 推送有效银价行情后,满足规则时生成银价报价。
- 重复行情不应重复生成报价。
- 非交易时间、缺少必要行情、规则错误时,不应推送钉钉,但行情应正常接收。
- 钉钉推送
- 启用群能收到消息。
- 禁用群不应收到后续 pending 任务消息。
- 修改群 webhook/secret 后,后续发送应使用最新配置。
- 模板参数应被正确替换,例如时间、报价金额。
- 钉钉返回成功时,推送清单状态为成功。
- webhook 错误、关键词不匹配、签名错误等明确失败时,推送清单状态为最终失败。
- 超时或网络异常时,状态为最终结果未知,不自动重复推送。
- 消息推送清单
- 默认显示最近 7 天。
- 可以按处理完成时间、状态、推送群查询。
- 钉钉响应摘要、错误信息长文本不能把表格撑乱,应截断并能悬浮查看。
- 状态、金价/银价展示有颜色标识。
- 导出功能可正常导出查询结果。
重点异常场景
- RabbitMQ 暂停或不可用:行情仍能入库,任务后续应通过数据库扫描兜底处理。
- task 服务重启:pending 任务应能继续处理;sending 超时任务应变成最终结果未知。
- 新报价产生时,旧的未发送 pending 任务应变成已被新报价替代,不应再发送。
- 同一个金属、同一个钉钉群,不应出现并发重复发送。
子任务
历史记录
#4 由 蔡伟 更新于 大约 7 小时 之前
- 状态 从 新建 变更为 已解决
测试ok
测试点:
1、API 接口测试:签名验证 (SHA1)、金价数据接收、银价数据接收、参数校验(PriceTime、枚举值)、数据重复不会处理
2、报价公式测试:金价报价公式 (步长0.5)、金价报价公式 (步长0.1)、银价报价公式、白银单位换算、精度验证
3、触发规则测试:金价、银价上/下限触发、稳定区间(不触发)、边界值测试
4、钉钉推送测试:金价、银价消息推送、模板参数替换、钉钉加签、多群推送
5、异常场景测试:数据缺失、报价不变不重复推送、MQ不可用时任务留库、task服务重启、非交易时段
6、配置管理测试:交易窗口配置、规则修改、消息模板配置、钉钉群配置(启用/禁用)
7、数据库分区测试:分区列表、分区连续性、未来分区、分区数据量(模拟了1000条)、分区重建