feat(站内通知): 麦象异常扫描上线——任务停滞/失败/队列积压/批量空结果推管理员
用户要求「maixiang异常也要发通知」,确认范围(卡住/失败/队列堆积/服务不可用)与 受众(只发管理员)后实现: - MaixiangConsoleClient:18960 后台只读接口客户端(batch/tasks、tasks、queue/status、 batch/detail),token 鉴权、失败只记日志。URL 必须用 URI 对象提交——字符串形态会被 RestClient 二次编码(%20→%2520),end_time 参数实测报 Incorrect DATETIME value, 检查会静默失效;已加回归单测 buildUrlEncodesTimeParameterExactlyOnce - MaixiangAnomalyScanner 五类检查:①批量任务停滞(status 0/1 超时无更新,默认 60 分钟) ②单任务滞留(创建超 30 分钟未完成)③近 30 分钟失败达最小条数 ④批量任务空结果 (worker 报错时批次仍被标"已完成",是唯一可抓的批量失败信号)⑤队列积压(pending≥300 / processing≥100);去重按天/小时/任务,全部为管理员全局事件(subjectUserId=null) - 接入 NotificationScanScheduler(分布式锁内同跑);scene=maixiang_anomaly; AIIMAGE_NOTIFICATION_MAIXIANG_* 环境变量可调,令牌留空=跳过 - 前端 NotificationScene 类型补 maixiang_anomaly(铃铛不按 scene 渲染,无运行时改动) - 测试:客户端解析(真实抓包样例)+ 扫描器 14 例 + 手工联调探针 MaixiangLiveProbeTest (-Dmaixiang.live=true 开启,只读不写通知) 已部署双节点(.env 加 console token、JAR cd3e06c4)并线上验证:首扫推 2×15 条管理员通知 (3 个变体任务停滞 / 39 个跟价任务滞留),二次扫描落库=0 去重生效。
This commit is contained in:
@@ -41,6 +41,30 @@ public class NotificationProperties {
|
||||
/** jikip 代理接口探测开关(复用余额查询接口判活,使用 user-secret 的 jikip 配置)。 */
|
||||
private boolean jikipProbeEnabled = true;
|
||||
|
||||
/** 麦象(18960 任务调度)异常扫描开关:任务停滞/失败/队列积压 → 管理员通知。 */
|
||||
private boolean maixiangScanEnabled = true;
|
||||
|
||||
/**
|
||||
* 麦象后台接口令牌(18960 console token)。留空=跳过麦象异常扫描——
|
||||
* 该令牌与「跟价任务 API 地址」(priceTrackApiUrl) 一起构成后台只读接口的访问凭据。
|
||||
*/
|
||||
private String maixiangConsoleToken = "";
|
||||
|
||||
/** 麦象批量任务停滞阈值(分钟):status=0/1 且超过该时长无更新视为卡住。 */
|
||||
private int maixiangStuckMinutes = 60;
|
||||
|
||||
/** 麦象单任务滞留阈值(分钟):创建超时仍未完成(status=0/1)视为滞留/无人消费。 */
|
||||
private int maixiangSingleStuckMinutes = 30;
|
||||
|
||||
/** 麦象任务失败告警阈值(条):近 30 分钟窗口内失败数达到该值才告警。 */
|
||||
private int maixiangFailMinCount = 1;
|
||||
|
||||
/** 麦象队列积压阈值(条):task:queue 待处理数达到该值告警。 */
|
||||
private int maixiangQueuePendingThreshold = 300;
|
||||
|
||||
/** 麦象队列积压阈值(条):task:processing 处理中数达到该值告警。 */
|
||||
private int maixiangQueueProcessingThreshold = 100;
|
||||
|
||||
/** 已读通知保留天数(超期自动清理),默认 90 天。 */
|
||||
private int readRetentionDays = 90;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user