break
d5bcda94fe
feat(套餐真流量预警): AUG26-004 真流量预警规则、达量扫描通知与导出
新增 000228 迁移:规则表 tb_package_traffic_alert_rule(每套餐商品至多一条,无软删除,package_id
非部分唯一约束)、达量预警快照表 tb_package_traffic_alert(以主套餐使用记录 + 阈值快照为唯一键,
触发时冻结用量、额度、比例、阈值、到期时间、归属与资产快照),并为 tb_package_usage 新增扫描
范围部分索引 idx_package_usage_alert_scope;down 在预警表存在数据时阻断回滚。
新增规则维护接口 GET/POST/PUT /api/admin/package-traffic-alert-rules(仅超级管理员与平台账号):
创建校验套餐存在且真流量额度大于零,阈值为 1%~100% 的两位小数;修改只影响后续扫描,不回填也
不改写既有预警快照;全部写操作记录操作者、前后值与时间。
新增每日 06:00(Asia/Shanghai)扫描任务 package:traffic:alert:scan,与套餐临期扫描共用 data_cleanup
队列:按资产汇总当前有效套餐的真流量,分子取使用记录真已用量、分母取使用记录真总量快照,命中
主套餐规则阈值时在同一事务创建预警与可靠通知事件;重复执行以唯一冲突视为已处理,不重复投递,
不建停机锁、不调用运营商。
新增预警列表、详情与异步导出 GET /api/admin/package-traffic-alerts、GET /api/admin/package-traffic-alerts/:id、
POST /api/admin/package-traffic-alerts/export,列表与详情一律读冻结快照;新增通知类型
package.traffic.alert 与受控目标 package_traffic_alert_detail,目标解析仅对超级管理员与平台账号
返回可跳转,越权与不存在统一按资源不可见处理。
同步 OpenAPI(cmd/gendocs、cmd/api/docs.go、pkg/openapi/handlers.go)、审计动作与资源注册、上下文
健康检查证据;归档变更并同步 package-traffic-alert 主 Spec。
2026-09-16 17:05:55 +08:00
..
2026-04-14 11:24:35 +08:00
2026-04-14 11:24:35 +08:00
2026-04-14 11:24:35 +08:00
2026-04-14 11:11:15 +08:00
2026-04-14 11:11:15 +08:00
2026-04-15 11:00:32 +08:00
2026-04-15 11:00:32 +08:00
2026-04-15 11:00:32 +08:00
2026-04-15 11:00:32 +08:00
2026-04-15 11:00:32 +08:00
2026-04-15 11:00:32 +08:00
2026-04-15 12:21:21 +08:00
2026-04-15 12:21:21 +08:00
2026-04-16 11:14:39 +08:00
2026-04-16 11:14:39 +08:00
2026-04-16 11:14:39 +08:00
2026-04-16 11:14:39 +08:00
2026-04-16 11:14:39 +08:00
2026-04-16 11:14:39 +08:00
2026-04-16 14:27:47 +08:00
2026-04-16 14:27:47 +08:00
2026-04-17 17:03:41 +08:00
2026-04-17 17:03:41 +08:00
2026-04-17 18:07:29 +08:00
2026-04-17 18:07:29 +08:00
2026-04-17 18:28:38 +08:00
2026-04-17 18:28:38 +08:00
2026-04-18 10:19:21 +08:00
2026-04-18 10:19:21 +08:00
2026-04-20 15:29:25 +08:00
2026-04-20 15:29:25 +08:00
2026-04-21 10:55:12 +08:00
2026-04-21 10:55:12 +08:00
2026-04-23 10:59:34 +08:00
2026-04-23 10:59:34 +08:00
2026-04-23 11:43:15 +08:00
2026-04-23 11:43:15 +08:00
2026-04-23 17:14:10 +08:00
2026-04-23 17:14:10 +08:00
2026-04-27 09:47:03 +08:00
2026-04-27 09:47:03 +08:00
2026-04-27 12:16:38 +08:00
2026-04-27 12:16:38 +08:00
2026-04-27 18:10:08 +08:00
2026-04-27 18:10:08 +08:00
2026-04-27 18:10:08 +08:00
2026-04-27 18:10:08 +08:00
2026-04-28 17:40:06 +08:00
2026-04-28 17:40:06 +08:00
2026-04-30 09:52:39 +08:00
2026-04-30 09:52:39 +08:00
2026-05-11 10:22:48 +08:00
2026-05-11 10:22:48 +08:00
2026-05-12 10:32:38 +08:00
2026-05-12 10:32:38 +08:00
2026-05-12 11:13:04 +08:00
2026-05-12 11:13:04 +08:00
2026-05-12 14:10:48 +08:00
2026-05-12 14:10:48 +08:00
2026-05-18 10:34:04 +08:00
2026-05-18 10:34:04 +08:00
2026-05-22 14:07:20 +08:00
2026-05-22 14:07:20 +08:00
2026-05-26 17:16:11 +08:00
2026-05-26 17:16:11 +08:00
2026-05-26 17:16:11 +08:00
2026-05-26 17:16:11 +08:00
2026-05-29 10:52:12 +08:00
2026-05-29 10:52:12 +08:00
2026-06-01 11:21:29 +08:00
2026-06-01 11:21:29 +08:00
2026-06-01 11:49:24 +08:00
2026-06-01 11:49:24 +08:00
2026-06-03 16:55:32 +08:00
2026-06-03 16:55:32 +08:00
2026-06-15 15:28:29 +08:00
2026-06-15 15:28:29 +08:00
2026-06-17 16:23:03 +09:00
2026-06-17 16:23:03 +09:00
2026-06-22 17:21:13 +09:00
2026-06-22 17:21:13 +09:00
2026-06-22 17:21:13 +09:00
2026-06-22 17:21:13 +09:00
2026-06-22 17:21:13 +09:00
2026-06-22 17:21:13 +09:00
2026-06-29 12:29:31 +09:00
2026-06-29 12:29:31 +09:00
2026-06-29 12:29:31 +09:00
2026-06-29 12:29:31 +09:00
2026-07-22 15:06:06 +09:00
2026-07-22 15:06:06 +09:00
2026-07-22 18:05:38 +09:00
2026-07-22 18:05:38 +09:00
2026-07-22 21:07:08 +09:00
2026-07-22 21:07:08 +09:00
2026-07-22 21:07:08 +09:00
2026-07-22 21:07:08 +09:00
2026-07-23 13:14:43 +09:00
2026-07-23 13:14:43 +09:00
2026-07-23 17:52:48 +09:00
2026-07-24 16:07:18 +08:00
2026-07-23 17:52:48 +09:00
2026-07-24 16:07:18 +08:00
2026-07-23 21:31:22 +09:00
2026-07-24 16:07:18 +08:00
2026-07-24 16:07:18 +08:00
2026-07-24 16:07:18 +08:00
2026-07-24 16:07:18 +08:00
2026-07-24 16:07:18 +08:00
2026-07-24 16:07:18 +08:00
2026-07-24 16:07:18 +08:00
2026-07-24 16:07:18 +08:00
2026-07-24 16:07:18 +08:00
2026-07-24 16:07:18 +08:00
2026-07-24 16:07:18 +08:00
2026-07-24 16:07:18 +08:00
2026-07-24 16:07:18 +08:00
2026-07-24 16:07:18 +08:00
2026-07-24 16:07:18 +08:00
2026-07-24 16:07:18 +08:00
2026-07-24 16:07:18 +08:00
2026-07-24 16:07:18 +08:00
2026-07-24 16:07:18 +08:00
2026-07-24 16:07:18 +08:00
2026-08-10 16:30:38 +08:00
2026-07-24 16:07:18 +08:00
2026-07-24 16:07:18 +08:00
2026-07-24 16:07:18 +08:00
2026-07-24 16:07:18 +08:00
2026-07-24 19:59:24 +08:00
2026-07-24 19:59:24 +08:00
2026-07-25 17:06:58 +08:00
2026-07-25 17:06:58 +08:00
2026-07-25 17:06:58 +08:00
2026-07-25 17:06:58 +08:00
2026-07-25 17:06:58 +08:00
2026-07-25 17:06:58 +08:00
2026-07-25 17:06:58 +08:00
2026-07-25 17:06:58 +08:00
2026-07-25 17:06:58 +08:00
2026-07-25 17:06:58 +08:00
2026-07-25 17:06:58 +08:00
2026-07-25 17:06:58 +08:00
2026-07-25 17:06:58 +08:00
2026-07-25 17:06:58 +08:00
2026-07-25 17:06:58 +08:00
2026-07-25 17:06:58 +08:00
2026-07-25 17:06:58 +08:00
2026-07-25 17:06:58 +08:00
2026-07-25 17:06:58 +08:00
2026-07-25 17:06:58 +08:00
2026-07-25 17:06:58 +08:00
2026-07-25 17:06:58 +08:00
2026-07-25 17:06:58 +08:00
2026-07-25 17:06:58 +08:00
2026-07-25 17:06:58 +08:00
2026-07-25 17:06:58 +08:00
2026-07-25 18:18:45 +08:00
2026-07-25 18:18:45 +08:00
2026-07-25 18:18:45 +08:00
2026-07-25 18:18:45 +08:00
2026-07-27 16:02:55 +08:00
2026-07-27 16:02:55 +08:00
2026-07-27 16:02:55 +08:00
2026-07-27 16:02:55 +08:00
2026-08-03 09:47:22 +08:00
2026-08-03 09:47:22 +08:00
2026-08-03 09:47:22 +08:00
2026-08-03 09:47:22 +08:00
2026-08-03 09:47:22 +08:00
2026-08-03 09:47:22 +08:00
2026-08-03 09:47:22 +08:00
2026-08-03 09:47:22 +08:00
2026-08-05 14:30:54 +08:00
2026-08-05 14:30:54 +08:00
2026-08-06 09:35:00 +08:00
2026-08-06 09:35:00 +08:00
2026-08-06 09:35:00 +08:00
2026-08-06 09:35:00 +08:00
2026-08-10 17:37:55 +08:00
2026-08-10 17:37:55 +08:00
2026-08-14 09:08:43 +08:00
2026-08-14 09:08:43 +08:00
2026-08-14 09:08:43 +08:00
2026-08-14 09:08:43 +08:00
2026-08-14 09:08:43 +08:00
2026-08-14 09:08:43 +08:00
2026-09-09 18:13:04 +08:00
2026-09-09 18:13:04 +08:00
2026-09-10 11:03:20 +08:00
2026-09-10 11:03:20 +08:00
2026-09-10 18:24:05 +08:00
2026-09-10 18:24:05 +08:00
2026-09-11 15:21:23 +08:00
2026-09-11 15:21:23 +08:00
2026-09-14 09:45:13 +08:00
2026-09-14 09:45:13 +08:00
2026-09-14 09:45:13 +08:00
2026-09-14 09:45:13 +08:00
2026-09-14 09:45:13 +08:00
2026-09-14 09:45:13 +08:00
2026-09-14 09:45:13 +08:00
2026-09-14 09:45:13 +08:00
2026-09-14 11:55:16 +08:00
2026-09-14 11:55:16 +08:00
2026-09-14 11:55:16 +08:00
2026-09-14 11:55:16 +08:00
2026-09-14 13:40:34 +08:00
2026-09-14 13:40:34 +08:00
2026-09-14 16:51:44 +08:00
2026-09-14 16:51:44 +08:00
2026-09-14 18:32:26 +08:00
2026-09-14 18:32:26 +08:00
2026-09-15 11:54:56 +08:00
2026-09-15 11:54:56 +08:00
2026-09-15 11:54:56 +08:00
2026-09-15 11:54:56 +08:00
2026-09-15 15:23:52 +08:00
2026-09-15 15:23:52 +08:00
2026-09-16 16:41:25 +08:00
2026-09-16 16:41:25 +08:00
2026-09-16 17:05:55 +08:00
2026-09-16 17:05:55 +08:00
2026-04-14 11:56:50 +08:00