feat: XMPP observability — logger, monitor endpoints, clean dead xiaoguo refs
This commit is contained in:
@@ -1272,6 +1272,49 @@ def api_module_spec(module):
|
||||
return jsonify({"error": f"Module '{module}' not found"}), 404
|
||||
|
||||
|
||||
# ── XMPP 通信监控 API ─────────────────────────────────
|
||||
|
||||
@app.route("/api/xmpp/messages")
|
||||
def api_xmpp_messages():
|
||||
"""查询 XMPP 消息日志"""
|
||||
since = request.args.get("since", "")
|
||||
agent = request.args.get("agent", "")
|
||||
status = request.args.get("status", "")
|
||||
limit = int(request.args.get("limit", 50))
|
||||
try:
|
||||
from xmpp_logger import query
|
||||
msgs = query(since=since or None, agent=agent or None, status=status or None, limit=limit)
|
||||
return jsonify({"messages": msgs, "total": len(msgs)})
|
||||
except ImportError:
|
||||
return jsonify({"messages": [], "total": 0})
|
||||
|
||||
|
||||
@app.route("/api/xmpp/health")
|
||||
def api_xmpp_health():
|
||||
"""XMPP 通道健康检查"""
|
||||
try:
|
||||
from xmpp_logger import health as xmpp_health
|
||||
h = xmpp_health()
|
||||
# 补充 ejabberd Docker 状态
|
||||
import subprocess
|
||||
r = subprocess.run(["docker", "ps", "--filter", "name=ejabberd", "--format", "{{.Status}}"],
|
||||
capture_output=True, timeout=5, text=True)
|
||||
h["ejabberd"] = r.stdout.strip() if r.returncode == 0 and r.stdout.strip() else "not_found"
|
||||
return jsonify(h)
|
||||
except ImportError:
|
||||
return jsonify({"status": "no_logger", "last_message_age_sec": -1, "error_rate_1h": 0, "ejabberd": "unknown"})
|
||||
|
||||
|
||||
@app.route("/api/xmpp/stats")
|
||||
def api_xmpp_stats():
|
||||
"""XMPP 消息统计"""
|
||||
try:
|
||||
from xmpp_logger import stats as xmpp_stats
|
||||
return jsonify(xmpp_stats())
|
||||
except ImportError:
|
||||
return jsonify({"today": {"sent": 0, "failed": 0, "latency_avg": 0}, "week": {"sent": 0, "failed": 0}})
|
||||
|
||||
|
||||
# 注册提示词管理路由
|
||||
register_routes(app)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user