# 调试记录 ## 数据管理页面问题 ### 问题描述 在数据管理页面中,火箭炮列表点击详情按钮时,请求了错误的设备 ID,导致显示了巡飞弹的数据。 ### 问题分析 1. 日志记录: ``` INFO:src.routes:Getting details for equipment ID: 4 INFO:src.routes:Equipment type: 巡飞弹 INFO:src.routes:Found equipment details: Hero-30 INFO:src.routes:Custom params: {...} ``` 2. 问题原因: - 后端返回的数据中,火箭炮和巡飞弹的 ID 范围重叠 - 火箭炮的 ID 应该从 1001 开始 - 巡飞弹的 ID 从 1 开始 - 前端没有正确处理设备 ID 的映射 3. 数据流分析: - 前端发送请求:`GET /api/data/details/4` - 后端查询数据库:`SELECT * FROM equipment WHERE id = 4` - 返回了 ID=4 的巡飞弹数据 - 前端显示了错误的装备类型数据 ### 新增问题:数据显示不完整 1. 问题描述: - 在数据管理页面,火箭炮和巡飞弹的表格中,除了长度和重量,其他参数列都没有数据显示 - 详情页面能正确显示所有数据 2. 问题原因: - 后端返回的数据中,特有参数以逗号分隔的字符串形式存储在 `specific_params` 字段中 - 前端需要解析这个字符串,将其转换为对象格式才能正确显示 3. 解决方案: - 在前端添加特有参数字符串的解析函数 - 将解析后的参数合并到数据对象中 - 确保表格和详情页面使用相同的数据格式 4. 代码修改: ```javascript // 解析特有参数字符串 const parseSpecificParams = (paramsStr, type) => { if (!paramsStr) return {} const values = paramsStr.split(',') if (type === '火箭炮') { return { firing_angle_horizontal: values[0], firing_angle_vertical: values[1], // ... 其他火箭炮特有参数 } } else if (type === '巡飞弹') { return { wingspan_m: values[0], warhead_weight_kg: values[1], // ... 其他巡飞弹特有参数 } } return {} } ``` 5. 验证方法: - 检查原始数据格式 - 验证参数解析结果 - 确认表格显示完整 - 对比详情页面数据 ### 最佳实践 1. 数据处理: - 在数据加载时进行参数解析 - 保持数据格式的一致性 - 添加数据验证和错误处理 2. 错误处理: - 添加详细的日志记录 - 提供清晰的错误提示 - 实现优雅的错误恢复 3. 调试方法: - 使用日志跟踪数据流 - 验证数据一致性 - 检查类型匹配