Files
deepdata/deep-flow/web/docs/testing-thought-block.md
沃巴蒂 ff22ed3a8b feat(deepdata): 引入修改密码、文件预览组件与清洗算子增强,deepflow 改名为 deep-flow
本次同步 09-12 至 09-28 的代码变更,主要内容:

新增功能
- 修改密码:后端新增 ChangePasswordRequest DTO 与UserController/UserService
  对应接口,前端新增 ChangePasswordDialog 并在 Header 接入入口
- 文件预览组件重构:file-preview 目录拆分出 VideoPreview(支持 blobUrl 直传)、
  ImagePreview、AudioPreview,index.tsx 统一调度各类型预览器
- 新增 my_ops 算子模块:markitdown_parser、mineru_pdf_parser、text_quality_evaluator
- 新增 tools/minio-file-server MinIO 文件服务

功能增强
- 数据清洗:cleaning_task_service/scheduler/routes 重构,
  data_juicer_executor 与 wrapper 增强,OperatorTable/LogsTable/TaskDetail 同步调整
- 数据标注:annotation sync.py、project.py 接口与schema 更新
- 数据采集、算子市场、首页与菜单路由相关页面调整
- DataJuicer 算子接入(useOperatorOperations、dj_ops_schema)

结构调整
- deepflow/ 更名为 deep-flow/(419 个文件重命名)
- 新增 helm 部署编排、GitHub Actions 之外的自建镜像构建脚本

未纳入本次提交
- scripts-backup/、runtime/python-executor-backup/、components_backup/(备份目录)
- *.backup*、__pycache__ 产物
- zh_core_web_sm-3.8.0-py3-none-any.whl(46MB 构建产物)
- DataX/(内嵌独立仓库,远程亦未收录其源码)
2026-10-03 22:44:56 +08:00

2.2 KiB
Raw Permalink Blame History

测试思考块功能

快速测试

方法 1: 使用模拟数据

  1. 在浏览器中访问应用并添加 ?mock=reasoning-example 参数
  2. 发送任意消息
  3. 观察计划卡片上方是否出现思考块

方法 2: 启用深度思考模式

  1. 确保配置了 reasoning 模型(如 DeepSeek R1)
  2. 在聊天界面点击"Deep Thinking"按钮
  3. 发送一个需要规划的问题
  4. 观察是否出现思考块

预期行为

思考块外观

  • 深度思考开始时自动展开显示
  • 思考阶段使用 primary 主题色(边框、背景、文字、图标)
  • 带有 18px 大脑图标和"深度思考过程"标题
  • 使用 font-semibold 字体权重,与 CardTitle 保持一致
  • rounded-xl 圆角设计,与其他卡片组件统一
  • 标准的 px-6 py-4 内边距

交互行为

  • 思考阶段:自动展开,蓝色高亮,显示加载动画
  • 计划阶段:自动折叠,切换为默认主题
  • 用户可随时手动展开/折叠
  • 平滑的展开/折叠动画和主题切换

分阶段显示

  • 思考阶段:只显示思考块,不显示计划卡片
  • 计划阶段:思考块折叠,显示完整计划卡片

内容渲染

  • 支持 Markdown 格式
  • 中文内容正确显示
  • 保持原有的换行和格式

故障排除

思考块不显示

  1. 检查消息是否包含 reasoningContent 字段
  2. 确认 reasoning_content 事件是否正确处理
  3. 验证消息合并逻辑是否正常工作

内容显示异常

  1. 检查 Markdown 渲染是否正常
  2. 确认 CSS 样式是否正确加载
  3. 验证动画效果是否启用

流式传输问题

  1. 检查 WebSocket 连接状态
  2. 确认事件流格式是否正确
  3. 验证消息更新逻辑

开发调试

控制台检查

// 检查消息对象
const messages = useStore.getState().messages;
const lastMessage = Array.from(messages.values()).pop();
console.log('Reasoning content:', lastMessage?.reasoningContent);

网络面板

  • 查看 SSE 事件流
  • 确认 reasoning_content 字段存在
  • 检查事件格式是否正确

React DevTools

  • 检查 ThoughtBlock 组件状态
  • 验证 props 传递是否正确
  • 观察组件重新渲染情况