优化项目整合内容

This commit is contained in:
2025-08-05 19:56:38 +08:00
parent 3f78ce7365
commit 4a0800a776
7 changed files with 2608 additions and 364 deletions

View File

@@ -13,11 +13,13 @@ from .config_manager import (
get_config_group_by_id, delete_config_group,
save_query_history, get_query_history,
get_query_history_by_id, delete_query_history,
batch_delete_query_history,
# Redis配置管理
REDIS_DEFAULT_CONFIG, save_redis_config_group, get_redis_config_groups,
get_redis_config_group_by_id, delete_redis_config_group,
save_redis_query_history, get_redis_query_history,
get_redis_query_history_by_id, delete_redis_query_history,
batch_delete_redis_query_history,
parse_redis_config_from_yaml
)
from .cassandra_client import create_connection
@@ -38,15 +40,26 @@ def setup_routes(app, query_log_collector):
def index():
return render_template('index.html')
@app.route('/test-config-load')
def test_config_load():
"""配置加载测试页面"""
return send_from_directory('.', 'test_config_load.html')
@app.route('/db-compare')
def db_compare():
"""Cassandra数据库比对工具页面"""
return render_template('db_compare.html')
@app.route('/redis-compare')
def redis_compare():
"""Redis数据比对工具页面"""
return render_template('redis_compare.html')
@app.route('/redis-js-test')
def redis_js_test():
return render_template('redis_js_test.html')
@app.route('/redis-test')
def redis_test():
return render_template('redis_test.html')
# 基础API
@app.route('/api/default-config')
@@ -593,6 +606,41 @@ def setup_routes(app, query_log_collector):
else:
return jsonify({'success': False, 'error': '查询历史记录删除失败'}), 500
@app.route('/api/query-history/batch-delete', methods=['POST'])
def api_batch_delete_query_history():
"""批量删除Cassandra查询历史记录"""
try:
data = request.get_json()
if not data:
return jsonify({'success': False, 'error': '请求数据格式错误'}), 400
history_ids = data.get('history_ids', [])
# 验证参数
if not history_ids:
return jsonify({'success': False, 'error': '请提供要删除的历史记录ID列表'}), 400
if not isinstance(history_ids, list):
return jsonify({'success': False, 'error': 'history_ids必须是数组'}), 400
# 验证所有ID都是整数
try:
history_ids = [int(id) for id in history_ids]
except (ValueError, TypeError):
return jsonify({'success': False, 'error': '历史记录ID必须是整数'}), 400
# 调用批量删除函数
result = batch_delete_query_history(history_ids)
if result['success']:
return jsonify(result)
else:
return jsonify(result), 500
except Exception as e:
logger.error(f"批量删除Cassandra查询历史记录异常: {e}")
return jsonify({'success': False, 'error': f'服务器内部错误: {str(e)}'}), 500
# 查询日志管理API
@app.route('/api/query-logs', methods=['GET'])
def api_get_query_logs():
@@ -1087,22 +1135,89 @@ def setup_routes(app, query_log_collector):
else:
return jsonify({'success': False, 'error': 'Redis查询历史记录删除失败'}), 500
@app.route('/api/redis/query-history/batch-delete', methods=['POST'])
def api_batch_delete_redis_query_history():
"""批量删除Redis查询历史记录"""
try:
data = request.get_json()
if not data or 'history_ids' not in data:
return jsonify({'success': False, 'error': '请提供要删除的历史记录ID列表'}), 400
history_ids = data['history_ids']
if not isinstance(history_ids, list):
return jsonify({'success': False, 'error': '历史记录ID列表格式错误'}), 400
if not history_ids:
return jsonify({'success': False, 'error': '没有要删除的记录'}), 400
# 验证ID都是整数
try:
history_ids = [int(id) for id in history_ids]
except (ValueError, TypeError):
return jsonify({'success': False, 'error': '历史记录ID格式错误'}), 400
result = batch_delete_redis_query_history(history_ids)
if result['success']:
return jsonify(result)
else:
return jsonify(result), 500
except Exception as e:
logger.error(f"批量删除Redis历史记录异常: {e}")
return jsonify({'success': False, 'error': f'批量删除失败: {str(e)}'}), 500
# Redis查询日志API
@app.route('/api/redis/query-logs', methods=['GET'])
def api_get_redis_query_logs():
"""获取Redis查询日志"""
"""获取Redis查询日志,支持分组显示"""
try:
limit = request.args.get('limit', 100, type=int)
# 获取最新的查询日志
logs = query_log_collector.get_logs(limit=limit)
# 过滤Redis相关的日志
redis_logs = []
for log in logs:
if (log.get('message') and 'redis' in log.get('message', '').lower()) or log.get('query_type') == 'redis':
redis_logs.append(log)
return jsonify({'success': True, 'data': redis_logs})
limit = request.args.get('limit', 1000, type=int)
grouped = request.args.get('grouped', 'true').lower() == 'true' # 默认分组显示
from_db = request.args.get('from_db', 'true').lower() == 'true' # 默认从数据库获取
if grouped:
# 返回分组日志
grouped_logs = query_log_collector.get_logs_grouped_by_batch(limit, from_db)
# 过滤出Redis相关的日志组
redis_grouped_logs = []
for batch_id, logs in grouped_logs:
# 过滤每个批次中的日志只保留Redis相关的
redis_logs = [
log for log in logs
if log.get('query_type') == 'redis' or
(log.get('message') and 'redis' in log.get('message', '').lower())
]
if redis_logs: # 只有当批次中有Redis日志时才添加
redis_grouped_logs.append([batch_id, redis_logs])
# 获取总数(用于统计)
total_logs = sum(len(logs) for _, logs in redis_grouped_logs)
return jsonify({
'success': True,
'data': redis_grouped_logs,
'grouped': True,
'total_logs': total_logs,
'from_db': from_db
})
else:
# 返回平铺日志
logs = query_log_collector.get_logs(limit, from_db)
# 过滤Redis相关的日志
redis_logs = [
log for log in logs
if log.get('query_type') == 'redis' or
(log.get('message') and 'redis' in log.get('message', '').lower())
]
return jsonify({
'success': True,
'data': redis_logs,
'grouped': False,
'total_logs': len(redis_logs),
'from_db': from_db
})
except Exception as e:
logger.error(f"获取Redis查询日志失败: {e}")
return jsonify({'success': False, 'error': str(e)}), 500