Files
MoFin/specs/xmpp_monitor.json
T

73 lines
3.6 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"module": "xmpp_monitor",
"version": "1.0",
"purpose": "XMPP 通信通道全链路可观测性。记录消息收发日志、LLM 调用追踪、异常检测与自动修复。",
"human_help": {
"title": "XMPP 通信监控",
"description": [
"实时监控 MoFin 的 XMPP 通信通道健康状态。",
"追踪范围:知微 Bot ↔ XMPP 群聊、cron 报告推送、市场扫描推送、策略通知。",
"当消息流中断或异常时,Dashboard 自动告警并展示失败原因。"
],
"usage": [
"Dashboard 📊 仪表盘 → 查看消息流实时状态",
"Dashboard 🏥 健康 → 查看 XMPP 通道健康指标(最后消息时间、错误率)",
"GET /api/xmpp/messages — 查询消息历史(支持按时间/Agent/状态筛选)",
"GET /api/xmpp/health — XMPP 通道健康检查"
],
"troubleshooting": [
"消息推送失败 → 查看 xmpp_messages.jsonl 中的错误信息",
"ejabberd 挂了 → Dashboard 自动检测,手动 docker restart ejabberd",
"知微 Bot 离线 → 检查 systemctl status xmpp-zhiwei"
]
},
"ai_spec": {
"apis": [
{"method": "GET", "path": "/api/xmpp/messages", "returns": "{messages[{timestamp, direction, from, to, body_preview, status, error, latency_ms}], total} — 支持 ?since=&agent=&status=&limit=50 参数"},
{"method": "GET", "path": "/api/xmpp/health", "returns": "{status, last_message_age_sec, error_rate_1h, queue_depth, ejabberd_status}"},
{"method": "GET", "path": "/api/xmpp/stats", "returns": "{today{sent, failed, latency_avg}, week{sent, failed}}"}
],
"dependencies": [
"xmpp_logger.py — 消息日志采集(写入 gateway/logs/xmpp_messages.jsonl",
"ejabberd Docker 容器 — XMPP 服务器(:5222",
"cron_to_xmpp.py — 报告推送到 XMPPsend 函数写入 xmpp_logger",
"market_scanner.py — 选股结果推送 XMPP:5805",
"知微 Bot — xmpp-zhiwei systemd 服务"
],
"architecture": {
"log_format": "JSONL, 每行一条: {timestamp, direction(in/out), from_jid, to_jid, body_preview(前100字), status(ok/error/timeout), error, latency_ms}",
"health_checks": [
"最后消息年龄 >10min → 🔴 告警",
"最近1小时错误率 >50% → 🟡 告警",
"ejabberd 容器不在运行 → 🔴 严重",
"知微 Bot 进程不在 → 🔴 严重"
]
},
"constraints": [
"xmpp_logger.py 通过 hook 方式接入 cron_to_xmpp.send(),不动现有业务逻辑",
"消息日志保留最近 7 天,自动轮转",
"Dashboard 每 10 秒自动刷新消息流",
"错误信息脱敏:不记录完整消息体,只记录前 100 字预览"
],
"must_not": [
"不要在消息日志中记录 API Key 或密码",
"不要修改 cron_to_xmpp.py 的业务逻辑(只加 hook",
"不要在 xmpp_monitor 中重复实现已有的 system_health_check 逻辑"
],
"tests": [
{"id": "XM01", "name": "/api/xmpp/health 返回 ejabberd 状态", "endpoint": "GET /api/xmpp/health"},
{"id": "XM02", "name": "/api/xmpp/messages 返回消息列表", "endpoint": "GET /api/xmpp/messages"},
{"id": "XM03", "name": "xmpp_logger 写入 JSONL 格式正确", "endpoint": "file check"}
],
"related_files": [
"xmpp_logger.py — 消息日志采集",
"cron_to_xmpp.py — 报告推送(send 函数)",
"scripts/market_scanner.py — 选股推送",
"server.py — /api/xmpp/* 端点",
"agents_health_check.py — Tier1 健康检查(含 XMPP 检测)"
]
}
}