Files
java-template/utils
BrunoGaoandClaude 3248bb0a2a feat: 完成消息系统V2优化 - 基于user_id的高性能索引重构
## 主要更改

### 1. 数据库表结构增强
- **t_device_message_v2**: 新增7个关键字段
  - priority_level: 优先级数值(1-5)
  - channels: 分发渠道JSON
  - require_ack: 是否需要确认
  - metadata: 扩展元数据JSON
  - target_count: 目标用户总数
  - version: 乐观锁版本号

- **t_device_message_detail_v2**: 新增8个关键字段
  - distribution_id: 分发唯一ID
  - device_sn: 设备序列号
  - user_id: 用户ID(核心查询字段)
  - response_duration: 响应耗时
  - delivery_details: 分发详情JSON
  - client_info: 客户端信息JSON
  - location_info: 位置信息JSON
  - last_retry_time: 最后重试时间

### 2. 索引优化重构 (基于user_id)
- 删除原有device_sn相关索引
- 新建5个user_id高性能复合索引:
  - idx_customer_user_time: 客户+用户+时间
  - idx_customer_user_status: 客户+用户+状态
  - idx_customer_user_type: 客户+用户+类型
  - idx_user_org_priority: 用户+组织+优先级
  - idx_user_status_time: 用户+状态+时间

- detail表新建4个user_id相关索引:
  - uk_message_user_target: 唯一约束
  - idx_customer_user_status: 客户+用户+状态
  - idx_user_channel_time: 用户+渠道+时间
  - idx_user_delivery_status: 用户+分发状态

### 3. 数据迁移和初始化
- 自动生成distribution_id
- 根据urgency设置priority_level
- 初始化默认channels配置
- 保持现有数据完整性

### 4. 性能提升预期
- 用户消息查询: 预计10-20倍性能提升
- 确认状态查询: 支持快速人员清单检索
- 存储空间: JSON字段替代冗余VARCHAR
- 查询覆盖: 所有user_id查询都能命中索引

### 5. 文档和脚本
- 完整的V2优化SQL脚本
- 消息机制设计文档
- 数据库备份(22MB)
- 性能验证查询

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-09-15 07:56:03 +08:00
..
2025-09-07 20:03:14 +08:00
2025-09-07 20:03:14 +08:00
2025-09-07 20:03:14 +08:00
2025-09-09 12:34:47 +08:00
2025-09-09 12:34:47 +08:00
2025-09-08 21:27:32 +08:00
2025-09-07 20:03:14 +08:00
2025-09-07 20:03:14 +08:00
2025-09-08 21:27:32 +08:00
2025-09-07 20:03:14 +08:00
2025-09-09 12:34:47 +08:00
2025-09-07 20:03:14 +08:00
2025-09-08 21:27:32 +08:00
2025-09-08 21:27:32 +08:00
2025-09-08 21:27:32 +08:00
2025-09-07 20:03:14 +08:00
2025-09-08 21:27:32 +08:00
2025-09-07 20:03:14 +08:00
2025-09-07 20:03:14 +08:00
2025-09-07 20:03:14 +08:00
2025-09-07 20:03:14 +08:00
2025-09-07 20:03:14 +08:00
2025-09-07 20:03:14 +08:00
2025-09-08 21:27:32 +08:00
2025-09-07 20:03:14 +08:00

API 自动化测试工具

用于测试 upload_health_data、upload_device_info、upload_common_event 三个接口的功能和性能。

功能特点

  • 🔗 从数据库读取真实的用户和设备数据
  • 🧪 功能测试:验证接口的基本功能
  • ⚡ 性能测试:并发测试,统计响应时间
  • 📊 详细的测试报告生成
  • 🎯 支持自定义测试参数

环境要求

pip install -r requirements.txt

配置

1. 数据库配置

修改 db_config.json 文件:

{
  "host": "localhost",
  "port": 3306,
  "database": "ljwx",
  "user": "root",
  "password": "your_password"
}

2. API 地址

默认测试地址:http://192.168.1.83:5001

使用方法

简单运行

python run_tests.py

高级用法

# 仅功能测试
python api_tester.py --mode functional

# 仅性能测试
python api_tester.py --mode performance --concurrent 10 --requests 20

# 指定 API 地址
python api_tester.py --url http://192.168.1.83:5001 --mode both

# 指定输出文件
python api_tester.py --output my_test_report.txt

命令行参数

  • --url: API 基础地址 (默认: http://192.168.1.83:5001)
  • --mode: 测试模式 (functional|performance|both, 默认: both)
  • --concurrent: 性能测试并发用户数 (默认: 5)
  • --requests: 每个用户的请求数 (默认: 10)
  • --output: 输出报告文件名

测试接口

1. upload_health_data

健康数据上传接口,测试数据包括:

  • 心率、血氧、体温、步数等健康指标
  • GPS 位置信息
  • 血压数据
  • 时间戳等

2. upload_device_info

设备信息上传接口,测试数据包括:

  • 设备系统版本
  • 网络地址信息
  • 电池状态
  • 设备状态等

3. upload_common_event

通用事件上传接口,测试数据包括:

  • 各种设备事件类型
  • 事件值和设备序列号
  • 位置信息
  • 关联的健康数据

测试报告

测试完成后会生成详细报告,包含:

  • 📈 测试概要(成功率、响应时间等)
  • 🎯 各接口详细统计
  • ⏱️ 响应时间分析(平均值、最值、中位数)
  • ❌ 错误详情

文件说明

  • api_tester.py - 主测试工具
  • db_config.py - 数据库连接模块
  • run_tests.py - 简化运行脚本
  • db_config.json - 数据库配置文件
  • requirements.txt - Python 依赖包

数据来源

  • 用户数据:从 sys_user 表获取
  • 设备数据:从 t_device_info 表获取
  • 自动生成符合接口规范的测试数据