4.2 KiB
4.2 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
项目架构
这是一个基于 Flask 的数据库查询比对工具,用于比较 Cassandra 数据库中生产环境和测试环境的数据差异。
核心组件架构
后端 (Flask)
app.py
: 主应用文件,包含所有API端点和数据处理逻辑- 数据库连接管理(Cassandra + SQLite)
- 查询执行和结果比对算法
- 配置组管理(CRUD操作)
- JSON字段特殊处理和数组比较逻辑
config_groups.db
: SQLite数据库,存储用户保存的配置组
前端 (原生JavaScript + Bootstrap)
templates/db_compare.html
: 主界面模板,包含配置表单和结果展示templates/index.html
: 工具集合首页static/js/app.js
: 核心前端逻辑- 配置管理和表单处理
- 差异结果的分页展示系统
- 原生数据展示(多种视图模式:格式化、原始、差异对比、树形)
- 高级错误处理和用户反馈
关键功能模块
数据比对引擎
- 支持复杂JSON字段的深度比较
- 数组字段的顺序无关比较
- 字段级别的差异统计和分析
- 数据质量评估和建议生成
用户界面特性
- 分页系统(差异记录和相同记录)
- 实时搜索和过滤
- 原生数据展示(JSON语法高亮、树形视图)
- 配置导入导出和管理
- 详细的错误诊断和故障排查指南
开发相关命令
环境设置
# 安装依赖
pip install -r requirements.txt
# 运行应用(默认端口5000)
python app.py
# 自定义端口运行
# 修改app.py最后一行:app.run(debug=True, port=5001)
开发模式
应用默认运行在debug模式,代码修改后自动重启。访问 http://localhost:5000 查看首页,http://localhost:5000/db-compare 使用比对工具。
API架构说明
核心API端点
GET /api/default-config
: 获取默认数据库配置POST /api/query
: 执行数据库查询比对(主要功能)GET|POST|DELETE /api/config-groups
: 配置组的CRUD操作POST /api/init-db
: 初始化SQLite数据库
查询比对流程
- 前端发送配置和Key值列表到
/api/query
- 后端创建两个Cassandra连接(生产+测试)
- 并行执行查询,获取原始数据
- 运行比较算法,生成差异报告
- 返回完整结果(差异、统计、原始数据)
数据结构和配置
数据库配置结构
{
pro_config: {
cluster_name, datacenter, hosts[], port,
username, password, keyspace, table
},
test_config: { /* 同上 */ },
keys: ["主键字段名"],
fields_to_compare: ["字段1", "字段2"], // 空数组=全部字段
exclude_fields: ["排除字段"],
values: ["key1", "key2", "key3"] // 要查询的Key值
}
查询结果结构
{
total_keys, pro_count, test_count,
differences: [{ key, field, pro_value, test_value, message }],
identical_results: [{ key, pro_fields, test_fields }],
field_diff_count: { "field_name": count },
raw_pro_data: [], raw_test_data: [],
summary: { overview, percentages, field_analysis, recommendations }
}
开发注意事项
Cassandra连接处理
- 连接包含详细的错误诊断和重试机制
- 使用DCAwareRoundRobinPolicy避免负载均衡警告
- 连接超时设置为10秒
- 失败时提供网络连通性测试
前端状态管理
currentResults
: 存储最新查询结果- 分页状态:
currentIdenticalPage
,currentDifferencePage
- 过滤状态:
filteredIdenticalResults
,filteredDifferenceResults
JSON和数组字段处理
normalize_json_string()
: 标准化JSON字符串用于比较compare_array_values()
: 数组的顺序无关比较is_json_field()
: 智能检测JSON字段- 前端提供专门的JSON语法高亮和树形展示
错误处理策略
- 后端:分类错误(connection_error, validation_error, query_error, system_error)
- 前端:详细错误展示,包含配置信息、解决建议、连接测试工具
- 提供交互式故障排查指南
性能考虑
- 大数据集的分页处理
- 原生数据的延迟加载
- JSON格式化的客户端缓存
- 搜索和过滤的防抖处理