feat: Phase 1 - 核心功能实现
This commit is contained in:
67
app/routes/stats.py
Normal file
67
app/routes/stats.py
Normal file
@@ -0,0 +1,67 @@
|
||||
"""
|
||||
统计路由
|
||||
"""
|
||||
from flask import Blueprint, jsonify
|
||||
from flask_jwt_extended import jwt_required
|
||||
from app.models import db, User, Session, Agent, Gateway, Message
|
||||
from sqlalchemy import func
|
||||
|
||||
stats_bp = Blueprint('stats', __name__)
|
||||
|
||||
|
||||
@stats_bp.route('/', methods=['GET'])
|
||||
@jwt_required()
|
||||
def get_stats():
|
||||
"""获取系统统计信息"""
|
||||
stats = {
|
||||
'users': User.query.count(),
|
||||
'sessions': Session.query.filter_by(status='active').count(),
|
||||
'agents': Agent.query.filter_by(status='online').count(),
|
||||
'gateways': Gateway.query.filter_by(status='online').count(),
|
||||
'messages': Message.query.count(),
|
||||
}
|
||||
|
||||
return jsonify({'stats': stats}), 200
|
||||
|
||||
|
||||
@stats_bp.route('/sessions', methods=['GET'])
|
||||
@jwt_required()
|
||||
def get_session_stats():
|
||||
"""获取会话统计"""
|
||||
stats = {
|
||||
'total': Session.query.count(),
|
||||
'active': Session.query.filter_by(status='active').count(),
|
||||
'closed': Session.query.filter_by(status='closed').count(),
|
||||
'paused': Session.query.filter_by(status='paused').count(),
|
||||
}
|
||||
|
||||
return jsonify({'stats': stats}), 200
|
||||
|
||||
|
||||
@stats_bp.route('/messages', methods=['GET'])
|
||||
@jwt_required()
|
||||
def get_message_stats():
|
||||
"""获取消息统计"""
|
||||
stats = {
|
||||
'total': Message.query.count(),
|
||||
'sent': Message.query.filter_by(status='sent').count(),
|
||||
'delivered': Message.query.filter_by(status='delivered').count(),
|
||||
'read': Message.query.filter_by(status='read').count(),
|
||||
'failed': Message.query.filter_by(status='failed').count(),
|
||||
}
|
||||
|
||||
return jsonify({'stats': stats}), 200
|
||||
|
||||
|
||||
@stats_bp.route('/agents', methods=['GET'])
|
||||
@jwt_required()
|
||||
def get_agent_stats():
|
||||
"""获取 Agent 统计"""
|
||||
stats = {
|
||||
'total': Agent.query.count(),
|
||||
'online': Agent.query.filter_by(status='online').count(),
|
||||
'offline': Agent.query.filter_by(status='offline').count(),
|
||||
'busy': Agent.query.filter_by(status='busy').count(),
|
||||
}
|
||||
|
||||
return jsonify({'stats': stats}), 200
|
||||
Reference in New Issue
Block a user