pipeline-sdlc/docs/sdlc-architecture.md

160 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 开发产线 (SDLC Pipeline) 架构概览
## 客户可以输入什么
开发产线的入口是「项目管理」,客户分多阶段输入:
### 项目创建阶段
- 项目名称、描述、项目类型 (web_app / mobile / api_service)
- 技术栈配置 (JSON: 框架、语言、数据库等)
- 代码仓库 URL
- 关联的 Pipeline 定义 ID选哪个产线模板
### 迭代创建阶段
- 迭代名称、迭代类型 (new_feature / bugfix / refactor / upgrade)
- 迭代范围 (JSON: 功能点、用户故事)
- 优先级 (1-10)
- 创建迭代时**自动触发 Pipeline 任务**project.pyauto-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 自动推送:分析结果、设计产出预览、测试结果
- 用户在输入框中回复、审批、补充信息
- 系统事件通知(步骤开始/完成)
### 步骤详情弹窗
- 步骤描述和配置
- 输入/输出 artifactJSON 树形查看)
- 执行日志
- human_task表单 + 提交按钮
- approval_gateapprove / 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 推送结果到对话面板
## 开发规范遵循
### 模块架构
- 产线专属 UIpipeline-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 ≠ 功能正常,必须浏览器验证