- Backend: Add display_name to TaskNode and DagNode for human-readable names - Frontend: Update visualizer and tabs to use display_name - UX: Implement global scrolling layout for ReportPage - UX: Add sticky behavior with visual feedback for Workflow Sidebar - UX: Fix RealtimeLogs scrolling and layout issues
2.3 KiB
2.3 KiB
[Pending] 为工作流任务添加人类可读名称 (Display Name)
背景
目前,前端在显示任务名称时使用的是任务 ID(例如 analysis:news_analysis,或者是经过简单格式化后的 news analysis)。然而,真正的人类可读名称(例如 “新闻分析”)是定义在 AnalysisTemplate 配置中的,但这些名称并没有通过工作流事件传播到 WorkflowOrchestrator 或前端。
目标
确保前端可以在工作流可视化图表(Visualizer)和标签页(Tab Headers)中显示模板中定义的本地化/人类可读的任务名称。
需要的变更
1. Common Contracts (services/common-contracts)
- 文件:
src/workflow_types.rs或src/messages.rs - 行动: 更新
TaskNode结构体(用于WorkflowStateSnapshot),增加一个display_name(Option<String>) 字段。 - 行动: (可选) 如果我们需要实时更新也携带名称,可以更新
WorkflowTaskEvent,虽然对于静态拓扑来说,快照(Snapshot)通常就足够了。
2. Workflow Orchestrator Service (services/workflow-orchestrator-service)
- 文件:
src/dag_scheduler.rs - 行动: 在通过
add_node添加节点时,接受一个display_name参数。 - 文件:
src/workflow.rs - 行动: 在
build_dag函数中,遍历template.modules时:- 提取
module_config.name(例如 “新闻分析”)。 - 在创建 DAG 节点时传递这个名称。
- 提取
3. Frontend (frontend)
- 文件:
src/types/workflow.ts - 行动: 更新
TaskNode接口以匹配新的后端 DTO。 - 文件:
src/components/workflow/WorkflowVisualizer.tsx&src/pages/ReportPage.tsx - 行动: 如果
node.display_name存在,则优先使用它;否则回退到使用formatNodeName(node.id)。
替代方案 / 临时方案 (纯前端)
由于前端已经(通过 useAnalysisTemplates hook)获取了 AnalysisTemplate,我们可以:
- 从 URL 参数中获取当前的
templateId。 - 查找对应的模板定义。
- 创建一个映射表:
module_id -> module_name。 - 在
ReportPage和WorkflowVisualizer中使用此映射表来动态解析名称。
优先级
中等 - 能够显著改善用户体验 (UX),但现有功能不受影响。