# 开发产线 (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 ≠ 功能正常,必须浏览器验证