gongxiangp2/.kiro/specs/ui-fixes/网络诊断增强完成报告.md

7.8 KiB
Raw Blame History

网络诊断功能增强完成报告

📋 任务概述

目标: 增强网络诊断功能,添加预览文件加载速度检测,帮助精准定位预览文件加载慢的问题

完成时间: 2025-12-22

部署状态: ✅ 已部署到影子系统(5320)


✨ 新增功能

1. 预览图片加载测试

  • 功能: 测试真实的3D场景预览图片加载速度
  • 检测指标:
    • 图片加载时间(秒)
    • 文件大小(MB)
    • 下载速度(MB/s)
  • 警告阈值: 加载时间 > 3秒

2. 预览视频加载测试

  • 功能: 测试主图视频/安装视频/种草视频的加载性能
  • 检测指标:
    • 视频元数据加载时间(首字节时间)
    • 文件大小(MB)
    • 视频URL
  • 警告阈值: 元数据加载时间 > 5秒

3. 音频文件加载测试

  • 功能: 测试音乐素材的加载性能
  • 检测指标:
    • 音频元数据加载时间
    • 文件大小(MB)
    • 音频URL
  • 警告阈值: 元数据加载时间 > 3秒

4. DNS和连接测试

  • 功能: 测试网络连接的底层性能
  • 检测指标:
    • DNS解析时间(ms)
    • TCP连接时间(ms)
    • 首字节时间/TTFB(ms)
    • 总耗时(ms)
  • 警告阈值: 总耗时 > 1000ms

🔧 技术实现

测试顺序

  1. DNS和连接测试(基础网络性能)
  2. 下载测速(通用下载速度)
  3. 上传测速(通用上传速度)
  4. 存储连通性(MinIO S3连接)
  5. 预览图片加载(新增)
  6. 预览视频加载(新增)
  7. 音频文件加载(新增)

关键技术点

1. 使用Performance API测量加载时间

const startTime = performance.now()
// 加载资源
const endTime = performance.now()
const loadTime = endTime - startTime

2. 使用Resource Timing API获取详细网络时序

const entries = performance.getEntriesByType('resource') as PerformanceResourceTiming[]
const entry = entries.find(e => e.name.includes('/api/network-status'))

if (entry) {
  dnsTime = entry.domainLookupEnd - entry.domainLookupStart
  connectTime = entry.connectEnd - entry.connectStart
  ttfb = entry.responseStart - entry.requestStart
}

3. 测试真实素材文件

  • 从API获取真实的素材数据
  • 测试实际的预览URL
  • 模拟用户真实的加载场景

4. 状态分类

  • success: 测试成功,性能良好
  • warning: 测试成功但性能较差(黄色警告)
  • error: 测试失败(红色错误)
  • testing: 正在测试中

📊 诊断报告格式

复制结果包含的信息

=== 网络诊断报告 ===
时间: 2025-12-22 14:30:00
浏览器: Mozilla/5.0 ...
当前URL: http://192.168.58.20:5320

=== 测试结果 ===
DNS和连接测试: ✓ 成功
  总耗时: 150ms
  详细信息: DNS解析: 10ms, TCP连接: 20ms, 首字节时间: 50ms, 总耗时: 150ms

下载测速: ✓ 成功
  下载速度: 15.23 MB/s

上传测速: ✓ 成功
  上传速度: 8.45 MB/s

存储连通性: ✓ 成功
  存储服务连接正常

预览图片加载: ⚠ 警告
  加载时间: 3.50秒 (2.15 MB/s)
  详细信息: 总耗时: 3500ms, 文件大小: 7.52MB, URL: https://...

预览视频加载: ✓ 成功
  元数据加载: 2.30秒 (文件: 15.20MB)
  详细信息: 首字节时间: 2300ms, 总耗时: 2300ms, 文件大小: 15.20MB, URL: https://...

音频文件加载: ✓ 成功
  元数据加载: 1.20秒 (文件: 5.50MB)
  详细信息: 首字节时间: 1200ms, 总耗时: 1200ms, 文件大小: 5.50MB, URL: https://...

=== 网络环境信息 ===
在线状态: 在线
连接类型: 4g
下行速度: 10 Mbps
RTT延迟: 50 ms

=== 性能分析 ===
⚠ 预览图片加载较慢或失败,可能影响用户体验

提示: 请将此报告提供给技术支持以便快速定位问题

🎯 使用方法

1. 打开网络诊断

  • 点击右上角用户头像
  • 选择"网络诊断"菜单项

2. 开始诊断

  • 点击"开始诊断"按钮
  • 等待所有测试完成(约10-20秒)

3. 查看结果

  • 绿色✓:测试成功,性能良好
  • 黄色⚠:测试成功但性能较差
  • 红色✗:测试失败

4. 复制报告

  • 点击"复制结果"按钮
  • 将报告提供给AI或技术支持
  • AI可以根据详细的性能指标精准定位问题

🔍 问题诊断指南

预览图片加载慢

可能原因:

  1. S3存储访问慢(检查存储连通性测试)
  2. 图片文件过大(检查文件大小)
  3. 网络带宽不足(检查下载测速)
  4. DNS解析慢(检查DNS解析时间)

解决方案:

  • 如果在内网,切换到内网地址(192.168.58.20)
  • 优化图片大小和格式
  • 使用CDN加速
  • 检查MinIO配置

预览视频加载慢

可能原因:

  1. 视频文件过大
  2. 转码未完成(检查videoProcessingStatus)
  3. 网络带宽不足
  4. 首字节时间过长

解决方案:

  • 等待视频转码完成
  • 使用压缩后的预览视频
  • 优化视频编码参数
  • 检查服务器性能

音频文件加载慢

可能原因:

  1. 音频文件过大
  2. 存储访问慢
  3. 网络延迟高

解决方案:

  • 压缩音频文件
  • 使用更高效的音频格式
  • 检查存储服务性能

📝 修改的文件

1. components/NetworkDiagnoseModal.tsx

修改内容:

  • 扩展TestResult接口,添加新的测试类型和详细信息字段
  • 新增testPreviewImageLoad()函数 - 预览图片加载测试
  • 新增testPreviewVideoLoad()函数 - 预览视频加载测试
  • 新增testPreviewAudioLoad()函数 - 音频文件加载测试
  • 新增testDNSAndConnection()函数 - DNS和连接测试
  • 更新startDiagnose()函数 - 按顺序执行所有测试
  • 增强copyResults()函数 - 生成更详细的诊断报告
  • 更新UI显示 - 支持warning状态,显示详细信息

代码行数: 约700行(新增约300行)


✅ 测试验证

部署信息

功能验证清单

  • DNS和连接测试正常运行
  • 下载测速正常运行
  • 上传测速正常运行
  • 存储连通性测试正常运行
  • 预览图片加载测试正常运行
  • 预览视频加载测试正常运行
  • 音频文件加载测试正常运行
  • 复制结果功能正常
  • 警告状态正确显示(黄色背景)
  • 详细信息正确显示(DNS、TTFB等)

🎉 预期效果

1. 精准定位问题

通过详细的性能指标,可以快速定位:

  • 是网络问题还是服务器问题
  • 是DNS问题还是带宽问题
  • 是文件过大还是存储慢

2. 方便AI分析

复制的诊断报告包含:

  • 完整的测试结果
  • 详细的性能指标
  • 网络环境信息
  • 性能分析建议

AI可以根据这些信息快速给出解决方案。

3. 提升用户体验

  • 用户可以自助诊断网络问题
  • 技术支持可以快速定位问题
  • 减少问题排查时间

📌 注意事项

  1. 测试时间: 完整测试需要10-20秒,请耐心等待
  2. 网络消耗: 测试会下载真实的预览文件,消耗一定流量
  3. 测试准确性: 测试结果受当前网络状况影响,建议多次测试
  4. 警告阈值: 当前阈值是根据经验设置的,可能需要根据实际情况调整

🚀 后续优化建议

  1. 添加历史记录: 保存诊断历史,对比不同时间的性能
  2. 自动诊断: 在页面加载慢时自动触发诊断
  3. 性能监控: 持续监控预览文件加载性能
  4. 智能建议: 根据诊断结果自动给出优化建议
  5. 批量测试: 测试多个预览文件,获得更准确的平均值

📞 技术支持

如果遇到问题,请:

  1. 运行网络诊断
  2. 复制完整的诊断报告
  3. 提供给AI或技术支持
  4. 说明具体的问题现象

报告生成时间: 2025-12-22 报告生成人: Kiro AI Assistant