160 lines
5.9 KiB
Markdown
160 lines
5.9 KiB
Markdown
# 开发产线 (SDLC Pipeline) 架构概览
|
||
|
||
## 客户可以输入什么
|
||
|
||
开发产线的入口是「项目管理」,客户分多阶段输入:
|
||
|
||
### 项目创建阶段
|
||
- 项目名称、描述、项目类型 (web_app / mobile / api_service)
|
||
- 技术栈配置 (JSON: 框架、语言、数据库等)
|
||
- 代码仓库 URL
|
||
- 关联的 Pipeline 定义 ID(选哪个产线模板)
|
||
|
||
### 迭代创建阶段
|
||
- 迭代名称、迭代类型 (new_feature / bugfix / refactor / upgrade)
|
||
- 迭代范围 (JSON: 功能点、用户故事)
|
||
- 优先级 (1-10)
|
||
- 创建迭代时**自动触发 Pipeline 任务**(project.py:auto-submit)
|
||
|
||
### 各阶段人工交互输入
|
||
| 阶段 | 步骤 | 输入内容 |
|
||
|------|------|----------|
|
||
| 需求 | requirement_gathering | 需求文档表单 |
|
||
| 需求 | requirement_review | 审批 (approve/reject) |
|
||
| 设计 | table_design | 确认 LLM 生成的表结构 |
|
||
| 设计 | crud_design | 确认 LLM 生成的 CRUD 定义 |
|
||
| 设计 | api_design | 确认 LLM 生成的 API 规范 |
|
||
| 设计 | design_review | 架构负责人审批 |
|
||
| 开发 | code_review | 高级开发审批代码 |
|
||
| 开发 | code_fix | 提交修复说明 |
|
||
| 测试 | test_plan_create | 编写测试方案 |
|
||
| 测试 | bug_fix | 修复说明 + commit SHA |
|
||
| 测试 | acceptance_test | 产品经理验收 |
|
||
| 部署 | deploy_env_collect | SSH 信息 + 数据库连接 |
|
||
| 部署 | deploy_test_approve | 发布经理确认 |
|
||
| 运维 | incident_response | 故障处理方案 |
|
||
| 升级 | upgrade_plan | 新版本规划 |
|
||
|
||
### 统一输入形式(驾驶舱模式)
|
||
- **正文输入**:多行文本框,支持自然语言
|
||
- **文件附件**:上传需求文档、设计稿、代码文件等
|
||
- 类似与大模型对话的交互体验
|
||
|
||
## 客户应该看到什么
|
||
|
||
### 仪表盘驾驶舱
|
||
- 项目总数 / 活跃数
|
||
- 活跃迭代数
|
||
- 待处理 Bug(按严重程度分布:critical/major/minor/trivial)
|
||
- 待审批数
|
||
- 最近 5 个迭代及进度条
|
||
|
||
### 时间线面板
|
||
- 产线步骤的线性时间线
|
||
- 实时状态更新(completed/running/pending/waiting/failed)
|
||
- 点击步骤展开详情(产物、日志、审批表单)
|
||
- 按阶段分组(需求/设计/开发/测试/部署/运维)
|
||
|
||
### 对话面板
|
||
- Agent ↔ 用户对话历史
|
||
- Agent 自动推送:分析结果、设计产出预览、测试结果
|
||
- 用户在输入框中回复、审批、补充信息
|
||
- 系统事件通知(步骤开始/完成)
|
||
|
||
### 步骤详情弹窗
|
||
- 步骤描述和配置
|
||
- 输入/输出 artifact(JSON 树形查看)
|
||
- 执行日志
|
||
- human_task:表单 + 提交按钮
|
||
- approval_gate:approve / reject 按钮
|
||
- failed:错误详情 + 重试
|
||
|
||
### 项目管理页面
|
||
- 项目列表:状态、类型、关联产线
|
||
- 迭代列表:状态流转 (planning → in_progress → testing → completed)
|
||
- Bug 管理:严重程度、状态、关联迭代、提交人类型
|
||
|
||
### 测试/部署页面
|
||
- 测试用例列表、结果统计
|
||
- 测试计划、部署环境配置
|
||
|
||
## 产线信息交互
|
||
|
||
当前开发产线定义了 **7 个阶段、28 个步骤类型**:
|
||
|
||
| 阶段 | 步骤数 | 自动 | 人工 | 审批 |
|
||
|------|--------|------|------|------|
|
||
| Phase 1: 需求 | 2 | 0 | 1 | 1 |
|
||
| Phase 2: 设计 | 4 | 3 | 1 | 1 |
|
||
| Phase 3: 开发 | 5 | 3 | 1 | 1 |
|
||
| Phase 4: 测试 | 8 | 4 | 3 | 0 |
|
||
| Phase 5: 部署 | 6 | 3 | 1 | 1 |
|
||
| Phase 6: 运维 | 2 | 1 | 1 | 0 |
|
||
| Phase 7: 升级 | 1 | 0 | 1 | 0 |
|
||
|
||
### DAG 依赖图
|
||
```
|
||
requirement_gathering → requirement_review
|
||
→ table_design ──┬──→ design_review
|
||
→ crud_design ──┤
|
||
→ api_design ──┘
|
||
design_review → code_generate → code_compliance_check
|
||
→ code_auto_fix → code_review
|
||
code_review → test_plan_create → test_case_generate
|
||
→ functional_test ──┬──→ bug_report
|
||
→ performance_test──┘
|
||
bug_report → bug_fix → bug_verify → acceptance_test
|
||
acceptance_test → deploy_env_collect → deploy_test
|
||
→ deploy_test_verify → deploy_test_approve
|
||
deploy_test_approve → deploy_production
|
||
→ deploy_production_verify → monitor
|
||
monitor → incident_response (if alerts)
|
||
```
|
||
|
||
### 步骤间信息传递
|
||
信息通过 artifact 传递 — handler 的 output_data 存入 `pipeline_artifacts` 表,
|
||
下游通过 `input_data[dep_step_name]` 获取上游产物。
|
||
|
||
### 对话层信息流
|
||
- 用户在驾驶舱输入框发送消息 → 存储到 sd_conversations → DSPY 处理
|
||
- Agent 分析后可能在对话中回复,同时触发产线步骤流转
|
||
- 关键步骤完成时 Agent 推送结果到对话面板
|
||
|
||
## 开发规范遵循
|
||
|
||
### 模块架构
|
||
- 产线专属 UI(pipeline-sdlc)与引擎层(pipeline_task)严格分离
|
||
- 跨模块调用:`entire_url('/pipeline_task/api/task_list.dspy')` 绝对路径
|
||
- pipeline_task 零数据表,纯薄交互层
|
||
|
||
### UI 规范
|
||
- index.ui 统一三层布局:Title (cheight:6) → 卡片区 (cheight:18) → VScrollPanel (css:filler)
|
||
- 白底卡片 + SVG 图标(严禁暗色主题、emoji、backgroundColor)
|
||
- Tabular popup → Tree 步骤树弹窗
|
||
- toolbar 按钮 script 中用 `this` 取选中行
|
||
|
||
### DSPY 规范
|
||
- 零 import(预加载:json、DBPools、get_user、params_kw、getID)
|
||
- `return` 代替 `print`
|
||
- `getID()` 代替 `uuid()`
|
||
- `await get_user()` 不是 `get_user()`
|
||
- 禁 `ServerEnv()`,用 `request._run_ns`
|
||
- `sor.U()` 只要 2 个参数 (table, data_dict)
|
||
- `await sor.sqlExe(sql, {})` 第二参数必须是 dict
|
||
|
||
### models/*.json 规范
|
||
- summary[0].primary 必须是数组
|
||
- float/double 字段必须有 len + dec
|
||
- indexes idxfields 必须是数组
|
||
- codes 引用 appcodes_kv 必须用 parentid= 不是 id=
|
||
|
||
### CRUD json/*.json 规范
|
||
- 根键必须是 `tblname` + `params`
|
||
- editable 必须有 new/update/delete_data_url
|
||
- 使用 `{{entire_url('../api/xxx.dspy')}}` 格式
|
||
|
||
### 部署规范(铁律)
|
||
- 本地改 → git commit → git push → 服务器 git pull → pip install(如需) → 重启
|
||
- 禁直接在服务器改源文件
|
||
- curl 200 ≠ 功能正常,必须浏览器验证
|