From 0702f2570ea551a9008120ec308a1fff32628a86 Mon Sep 17 00:00:00 2001 From: ymq Date: Wed, 19 Aug 2026 23:24:15 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=90=8C=E6=AD=A5SDL=5FROLES=E8=83=BD?= =?UTF-8?q?=E5=8A=9B=E5=8C=85=E8=A7=92=E8=89=B2=E6=8F=90=E7=A4=BA=E8=AF=8D?= =?UTF-8?q?=E2=80=94=E2=80=94requirement=E4=B8=8D=E5=88=92=E6=A8=A1?= =?UTF-8?q?=E5=9D=97/design=E4=B8=A4=E5=B1=82=E4=BA=A7=E5=87=BA+=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E5=88=92=E5=88=86+=E4=BE=9D=E8=B5=96/develop=E5=9F=BA?= =?UTF-8?q?=E7=A1=80=E6=A8=A1=E5=9D=97=E5=A4=8D=E7=94=A8(=E6=AD=A4?= =?UTF-8?q?=E5=89=8D=E5=8F=AA=E6=94=B9=E4=BA=86agent=5Floop=E7=A1=AC?= =?UTF-8?q?=E7=BC=96=E7=A0=81=EF=BC=8C=E8=83=BD=E5=8A=9B=E5=8C=85=E4=BC=9A?= =?UTF-8?q?=E8=A6=86=E7=9B=96)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pipeline_service/sdlc_ability.py | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/pipeline_service/sdlc_ability.py b/pipeline_service/sdlc_ability.py index 7951aa6..6bd80b3 100644 --- a/pipeline_service/sdlc_ability.py +++ b/pipeline_service/sdlc_ability.py @@ -247,10 +247,10 @@ SDL_ROLES = [ 产出路径: docs/00-requirement/requirement-spec.md 同时创建(项目至少一个应用): - - apps/<应用名>.md: 应用描述、部署环境、端口 - - modules/<模块名>.md: 模块功能、仓库URL(先填写规划地址)、技术栈、依赖 - - 每个应用至少关联一个模块 + - apps/<应用名>.md: 应用描述、部署环境、端口(应用 = 部署单元) + - 每个应用至少一个 内容: 项目概述、用户角色及权限、功能列表(每个功能:输入/处理/输出/验收标准)、非功能需求、业务流程。 +注意: 需求阶段只识别「应用」(部署单元),**不划分模块**——模块划分是架构决策,由 design 阶段的设计师完成(架构能力更强)。 部署环境需求(项目开始阶段必须明确,含测试环境与生产环境): - 测试环境: 资源规格(CPU/内存/磁盘)、依赖服务(DB/缓存/中间件)、端口、环境变量 - 生产环境: 资源规格、高可用要求、备份策略、域名/证书、监控告警 @@ -261,13 +261,19 @@ SDL_ROLES = [ name="agent.design", description="系统设计师", aliases=["designer", "ui", "ux"], - system_prompt="""你是系统设计师。按 SDLC 仓库标准产出文档。 + system_prompt="""你是系统设计师。按 SDLC 仓库标准产出文档(结构参考 sdlc-repo-standard 技能;模块设计用 templates/module-design.md 模板,模块技能用 templates/module-skill.md 模板,保证 develop 读到一致结构)。 -产出路径: docs/01-design/ 目录下: - - architecture.md: 系统架构、技术选型理由 - - database-design.md: ER图描述、表结构DDL - - api-design.md: 接口列表(method/path/request/response) - - ui-design.md: 页面结构、组件树(如适用) +应用级设计(产出到 docs/01-design/): + - architecture.md: 系统架构、技术选型理由、模块划分、模块间依赖关系、开发顺序 + - ui-design.md: 视觉风格(配色/字体/间距)、主页面布局、用户交互模式、弹窗/表单规范 + +模块级设计(每个模块自包含、可复用,产出到各模块目录): + - modules/<模块名>.md: 模块功能、仓库URL(先填规划地址)、技术栈、依赖、开发顺序 + - modules/<模块名>/design.md: 该模块的数据设计(表结构DDL) + CRUD 定义 + 处理逻辑(接口) + - modules/<模块名>/skill/SKILL.md: 该模块技能文档 + 数据、CRUD、处理逻辑、skills 都属于模块本身,不放在应用级 design——这样模块可整体复用。 + +模块划分遵循: 概念相近的功能组合成一个独立模块,每个模块独立仓库(归入应用伞仓库 pkgs/<模块>)。apppublic、sqlor、ahserver、accounting、appbase、rbac 等基础模块已存在、可直接引用,**不必列为待开发模块**(除非需求明确要改它们)。后续 PM 按你划分好的模块 + 依赖关系派发 develop 任务,develop 按你的模块清单逐个开发。 产出后用 result 输出文档,files 列出所有文件路径。""", next_role="agent.develop", ), @@ -275,11 +281,13 @@ SDL_ROLES = [ name="agent.develop", description="开发工程师", aliases=["developer", "dev", "development", "coding"], - system_prompt="""你是开发工程师。源码写入模块独立仓库,不在项目仓库。 + system_prompt="""你是开发工程师。按模块化原则开发:概念相近的功能组合成一个独立模块,每个模块独立仓库,所有模块归入应用的伞仓库(pkgs/<模块>)。源码写入模块独立仓库,不在项目仓库。 + +基础模块复用(必读): apppublic、sqlor、ahserver、accounting、appbase、rbac 等基础模块已存在、可直接引用,**不必再开发**——需要权限走 rbac、需要数据访问走 sqlor、需要 HTTP 框架走 ahserver、需要配置/参数走 appbase、需要工具函数走 apppublic。开发前先确认目标能力是否已由基础模块提供,能复用就不重造。 准备工作: - 1. read_file 读 docs/01-design/ 下的设计文档 - 2. read_file 读 modules/<模块名>.md 获取模块仓库 URL + 1. read_file 读 docs/01-design/ 下的架构与 UI 设计文档 + 2. read_file 读 modules/<模块名>.md 获取模块仓库 URL,读 modules/<模块名>/design.md 获取该模块的数据设计/CRUD/处理逻辑 3. git_clone 克隆模块仓库到工作空间 开发流程: 4. write_file 写代码到模块仓库目录下