Initial commit

This commit is contained in:
zyp
2026-05-22 16:13:20 +08:00
commit b3089a254e
1444 changed files with 372077 additions and 0 deletions

151
QB303_BATTLE_UNIT_CODE.md Normal file
View File

@@ -0,0 +1,151 @@
# QB303设备按battle_unit_code统一标识
## 🎯 **功能概述**
现在QB303设备数据将根据`battle_unit_code`字段作为设备的唯一标识符,而不是使用`sn`字段。这意味着:
- ✅ 相同`battle_unit_code`的设备会被识别为同一个设备并更新数据
- ✅ 不同`battle_unit_code`的设备会在列表中显示为不同的装备
- ✅ 设备信息会保留原始的`sn``sid`字段供参考
## 📋 **数据结构变化**
### **设备标识逻辑**
```javascript
// 优先使用 battle_unit_code 作为设备ID
let battleUnitCode = data.host?.battle_unit_code || data.sn || 'QB303_' + Date.now();
// 设备信息结构
{
equipmentId: battleUnitCode, // 主键battle_unit_code
battleUnitCode: battleUnitCode, // 作战单元代码
sn: data.sn || '', // 原始序列号
sid: data.host?.sid || '', // 原始设备ID
equipmentType: 'QB303设备',
// ... 其他字段
}
```
### **示例数据**
```json
{
"version": "1.0",
"timestamp": 1757293532423,
"data": {
"host": {
"battle_unit_code": "dy04", 作为设备唯一标识
"sid": "2",
"latitude": 28.20648476190476,
"longitude": 112.8945530952381,
"altitude": 200,
"health_status": 1,
"platform_type": 1
},
"sn": "2"
},
"biz_code": "qb303_device_status"
}
```
## 🧪 **测试函数**
### **1. 单个设备测试**
```javascript
testQB303Data()
```
- 发送一个`battle_unit_code: "dy04"`的测试设备
### **2. 多设备测试**
```javascript
testMultipleQB303Data()
```
- 依次发送3个不同`battle_unit_code`的设备:
- `dy04` (sn: "2")
- `dy05` (sn: "3")
- `dy06` (sn: "4")
## 🔍 **测试场景**
### **场景1新设备添加**
```
发送 battle_unit_code: "dy04" → 添加新设备 [dy04]
发送 battle_unit_code: "dy05" → 添加新设备 [dy05]
结果列表中有2个不同的设备
```
### **场景2设备数据更新**
```
发送 battle_unit_code: "dy04", altitude: 200 → 添加设备 [dy04]
发送 battle_unit_code: "dy04", altitude: 250 → 更新设备 [dy04]
结果列表中只有1个设备高度更新为250
```
### **场景3混合场景**
```
发送 battle_unit_code: "dy04", sn: "2" → 添加设备 [dy04]
发送 battle_unit_code: "dy04", sn: "3" → 更新设备 [dy04] (sn改为"3")
发送 battle_unit_code: "dy05", sn: "2" → 添加新设备 [dy05]
结果列表中有2个设备 [dy04] 和 [dy05]
```
## 📊 **预期输出**
### **运行 testQB303Data() 后:**
```
收到QB303设备状态数据: {...}
解析的QB303设备数据: {equipmentId: "dy04", battleUnitCode: "dy04", ...}
使用battle_unit_code作为设备标识: dy04
新的QB303设备 [dy04] 已添加
```
### **运行 testMultipleQB303Data() 后:**
```
发送设备 [dy04] 的测试数据: {...}
新的QB303设备 [dy04] 已添加
发送设备 [dy05] 的测试数据: {...}
新的QB303设备 [dy05] 已添加
发送设备 [dy06] 的测试数据: {...}
新的QB303设备 [dy06] 已添加
所有QB303设备数据发送完成
最终设备列表长度: X (原有数量 + 3)
各设备的battle_unit_code: ["dy04", "dy05", "dy06", ...]
```
## 🎨 **UI显示**
在其他装备面板中每个QB303设备会显示
- **设备名称**: `[dy04] QB303设备`
- **作战单元**: `dy04`
- **原始SN**: `2`
- **设备状态**: 基于`health_status`
- **位置信息**: 经纬度、高度
- **运动数据**: 速度、姿态角等
## 🚀 **开始测试**
1. **清理现有数据**(可选):
```javascript
localStorage.removeItem("index-otherEquipmentList");
location.reload();
```
2. **测试单个设备**
```javascript
testQB303Data()
```
3. **测试多个设备**
```javascript
testMultipleQB303Data()
```
4. **检查结果**
- 观察控制台日志
- 查看其他装备选项卡数量变化
- 确认设备列表中显示正确的`battle_unit_code`
现在您的QB303设备将按照`battle_unit_code`进行正确的分组和标识!