pipeline-sdlc/docs/sdlc-cockpit-design.md

7.9 KiB
Raw Permalink Blame History

开发产线 (SDLC Pipeline) 驾驶舱设计文档

设计理念

开发产线的用户界面采用驾驶舱模式设计。核心理念是:

  • 像和大模型对话一样交互用户以自然语言描述需求上传文件Agent 自动分析和执行
  • 状态信息直线展示:产线进度以时间线/步骤条形式一目了然
  • 详情按需展开:点击步骤节点才展开具体内容(产物、日志、审批表单)

用户输入

统一为类大模型交互界面

输入形式

┌─────────────────────────────────────────┐
│ 📎 已附加: design-doc.pdf  [×]         │
│                                         │
│ ┌─────────────────────────────────────┐ │
│ │ 请输入你的需求或回复...              │ │
│ │                                     │ │
│ │                                     │ │
│ └─────────────────────────────────────┘ │
│                           [📎] [发送 ⏎]│
└─────────────────────────────────────────┘

输入组件

组件 说明
正文输入框 多行文本支持自然语言描述需求、回复Agent
文件附件 支持上传多个文件(需求文档、设计稿、代码等)
发送按钮 提交后触发 Agent 分析并推入产线

输入可触发的操作

  • 新建迭代:描述需求 → Agent 自动创建迭代并启动产线
  • 回复人工任务:填写表单 → Agent 继续执行
  • 审批决策approve / reject → 产线流转
  • 补充信息:代码修复说明、环境配置等

驾驶舱布局

┌──────────────────────────────────────────────────────────┐
│ 驾驶舱标题栏:[项目选择器▾] [迭代选择器▾] [刷新]       │
├──────────────────────────────────────────────────────────┤
│ 统计卡片行:活跃项目 | 进行中迭代 | 待处理Bug | 待审批   │
├───────────────────────────┬──────────────────────────────┤
│  时间线面板 (40%)         │  对话面板 (60%)              │
│ ┌────────────────────────┐│ ┌──────────────────────────┐ │
│ │ 🟢 需求采集         ✓  ││ │ 🤖 Agent: 收到需求...     │ │
│ │ 🟢 需求评审         ✓  ││ │ 👤 你: 请增加XX功能      │ │
│ │ 🟡 表设计       进行中  ││ │ 🤖 Agent: 设计完成,     │ │
│ │ ⚪ CRUD设计     待执行  ││ │   请确认以下方案...      │ │
│ │ ⚪ API设计      待执行  ││ │                          │ │
│ │ ⚪ 设计评审       阻塞  ││ │ ┌──────────────────────┐ │ │
│ │ ⚪ 代码生成     待执行  ││ │ │ 输入需求或回复...    │ │ │
│ └────────────────────────┘│ │ │            [📎][发送] │ │ │
│                           │ │ └──────────────────────┘ │ │
│  [点击步骤展开详情→]       │ └──────────────────────────┘ │
└───────────────────────────┴──────────────────────────────┘

时间线设计

步骤节点状态

图标 状态 含义
🟢 completed 步骤已完成
🟡 running 正在执行中
pending 等待前置步骤完成
🔵 waiting 等待人工输入/审批
🔴 failed 执行失败
⏭ ⊘ skipped 已跳过
⏸ ∥ paused 已暂停

时间线交互

  • 直线排列:步骤按 DAG 拓扑排序后垂直排列,连接线显示依赖关系
  • 当前步骤高亮running/waiting 状态的步骤有脉冲动画
  • 点击展开:点击任意步骤节点,在右侧面板或弹窗中展示详情
  • 详情内容
    • 步骤描述和配置
    • 输入/输出 artifact支持 JSON 树形查看)
    • 执行日志
    • 如果是 human_task显示表单或审批按钮
    • 如果是 failed显示错误信息和重试按钮

步骤分组(时间段)

▼ 需求阶段
  🟢 需求采集
  🟢 需求评审
▼ 设计阶段
  🟡 表设计
  ⚪ CRUD设计
  ⚪ API设计
  ⚪ 设计评审
▼ 开发阶段
  ⚪ 代码生成
  ...

对话面板设计

消息类型

角色 样式 说明
🤖 Agent 左对齐,深色背景 系统自动消息:分析结果、步骤状态变更
👤 用户 右对齐,蓝色背景 用户输入:需求、回复、审批
系统 居中,灰色小字 系统事件:步骤开始/完成、Bug上报

Agent 消息内容

  • 需求分析结果
  • 设计产出预览表结构、CRUD清单
  • 代码审查报告
  • 测试结果摘要
  • 部署状态
  • 人工任务请求:表单字段、审批选项

用户消息触发

  • 输入框发送 → 创建用户消息 → 调用 DSPY 处理 → Agent 回复

对话持久化

消息存储在数据库表 sd_conversations 中,与迭代关联。

数据模型

sd_conversations对话消息表

字段 类型 说明
id str(32) 主键
iteration_id str(32) 关联迭代
task_id str(32) 关联 Pipeline 任务
step_name str(100) 关联步骤(可为空)
role str(20) agent / user / system
content text 消息正文
attachments text 附件列表 JSON
created_at timestamp 创建时间

技术实现

页面路由

  • /sd_cockpit/ → 驾驶舱主页面
  • /sd_cockpit/timeline.dspy → 时间线数据 API
  • /sd_cockpit/chat_messages.dspy → 对话消息 APIGET 读取 / POST 发送)
  • /sd_cockpit/step_detail.dspy → 步骤详情 API
  • /sd_cockpit/dashboard_data.dspy → 统计卡片数据

Bricks Widget 映射

设计元素 Bricks 实现
时间线列表 VBox + 自定义 styled VBox items
对话面板 VScrollPanel + VBox message bubbles
输入框 Form widget (textarea + submit)
统计卡片 ResponsableBox + VBox.card
步骤详情 Popup + urlwidget (加载 step_detail.ui)
文件上传 Form file field
项目/迭代选择 code dropdown widget

跨模块调用

驾驶舱在 pipeline-sdlc 模块内,调用 pipeline_task API 时使用绝对路径:

entire_url('/pipeline_task/api/task_submit.dspy')
entire_url('/pipeline_task/api/task_detail.dspy')
entire_url('/pipeline_task/api/human_complete.dspy')

开发规范遵循

规范项 应用
布局标准 四卡片 + filler 内容区,白底 SVG 图标
DSPY 规范 零 import、return 代替 print、getID()、await get_user()
跨模块调用 绝对路径 entire_url('/pipeline_task/api/...')
部署铁律 本地改 → commit → push → 服务器 pull → 重启 → 浏览器验证
DSPY async 用 request._run_ns不用 ServerEnv()
sor.U() 只传2个参数
禁止 不直接改服务器原文,不动其他模块