Skip to content

Latest commit

 

History

History
221 lines (165 loc) · 4.34 KB

File metadata and controls

221 lines (165 loc) · 4.34 KB

快速参考 - 问题修复

修复内容一览

问题 状态 修改文件 改动行数
智能图表生成状态感知 ✅ 已修复 chat-message-display-optimized.tsx ~60 行
聊天窗口高度限制 ✅ 已修复 chat-panel-optimized.tsx 1 行

问题1:智能图表生成状态感知

症状

  • 大模型显示"空闲"
  • 图表仍显示"生成中"
  • 实际图表已生成

原因

Token 限制导致流式输出中断,状态未同步

解决方案

双重检测机制

  1. 自动检测(主要)

    • 流结束时自动完成
    • 无需用户操作
    • 适用于 90% 场景
  2. 超时检测(辅助)

    • 5分钟后显示提示
    • 提供手动完成按钮
    • 保底方案

用户体验

正常场景

生成中 → 已完成
提示:图表生成完成,已实时渲染到画布

Token 限制场景

生成中 → 已完成(自动)
提示:流式输出已结束,图表已自动应用到画布

超时场景

生成中 → 显示黄色提示框
提示:长时间无响应,流式输出可能已结束
操作:点击"应用当前图表"按钮 → 已完成

问题2:聊天窗口高度

症状

  • 消息多时窗口无限增长
  • 可能超出视口

原因

缺少显式高度限制

解决方案

添加 style={{ maxHeight: '100%' }}

用户体验

消息少 → 正常显示
消息多 → 出现滚动条
新消息 → 自动滚动到底部

测试快速检查

✅ 问题1测试

# 测试1:正常生成
1. 发送:"帮我画一个简单的流程图"
2. 观察状态是否正确变为"已完成"

# 测试2:Token 限制
1. 发送:"帮我画一个包含50个节点的复杂系统架构图"
2. 观察是否自动完成
3. 提示信息是否正确

# 测试3:超时检测
1. 开启网络限速(Chrome DevTools → Network → Slow 3G)
2. 发送图表请求
3. 等待5分钟
4. 观察是否显示超时提示
5. 点击"应用当前图表"按钮

✅ 问题2测试

# 测试1:少量消息
1. 发送 3-5 条消息
2. 确认布局正常

# 测试2:大量消息
1. 发送 20+ 条消息
2. 确认出现滚动条
3. 滚动功能正常

# 测试3:窗口调整
1. 调整浏览器窗口大小
2. 确认布局适应

代码位置

问题1:DiagramToolCard 组件

文件components/chat-message-display-optimized.tsx

关键代码

// 行 93-107:流结束自动完成
useEffect(() => {
    if (
        !isGenerationBusy && 
        !isComparisonRunning &&
        localState === "input-streaming" &&
        displayDiagramXml?.length > 0
    ) {
        setLocalState("output-available");
        setAutoCompletedByStreamEnd(true);
    }
}, [isGenerationBusy, isComparisonRunning, localState, displayDiagramXml]);

// 行 119-131:超时检测
useEffect(() => {
    // 5分钟后显示超时提示
    const timer = setTimeout(() => {
        if (localState === "input-streaming") {
            setShowTimeoutHint(true);
        }
    }, 300000);
    return () => clearTimeout(timer);
}, [localState]);

问题2:ChatPanel 消息容器

文件components/chat-panel-optimized.tsx

关键代码

// 行 1119-1122:添加高度限制
<div 
    className="flex-1 min-h-0 overflow-y-auto ..."
    style={{ maxHeight: '100%' }}
>
    <ChatMessageDisplay ... />
</div>

回滚方案

如果需要回滚修复:

问题1回滚

删除以下内容:

  • autoCompletedByStreamEnd state
  • showTimeoutHint state
  • streamingStartTimeRef ref
  • 流结束检测 useEffect
  • 超时检测 useEffect
  • handleManualComplete 函数
  • 超时提示 UI
  • 状态提示信息中的自动完成判断

问题2回滚

删除:

style={{ maxHeight: '100%' }}

性能影响

  • CPU:可忽略(< 0.1%)
  • 内存:< 1KB
  • 渲染:无额外开销
  • 网络:无影响

浏览器兼容性

浏览器 最低版本 测试状态
Chrome 90+ ✅ 兼容
Firefox 88+ ✅ 兼容
Safari 14+ ✅ 兼容
Edge 90+ ✅ 兼容

相关文档