From 1a2e1983843cf7c0f14e247859e684a4bdd331da Mon Sep 17 00:00:00 2001 From: yumoqing Date: Sat, 22 Aug 2026 00:12:41 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=AF=8F=E4=B8=AA=E8=A7=92=E8=89=B2?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E8=A7=92=E8=89=B2=E5=AE=9A=E4=B9=89=E6=8A=80?= =?UTF-8?q?=E8=83=BD=EF=BC=88=E8=A7=92=E8=89=B2+=E8=81=8C=E8=B4=A3+?= =?UTF-8?q?=E8=A7=84=E8=8C=83=E5=88=97=E8=A1=A8=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 8 个角色各建 role/SKILL.md:requirement/design/develop/deploy_test/test/deploy_prod/pm/qc - 角色技能只定义角色、职责、应遵守的规范列表(引用 global 规范,需时 load_skill 加载全文), 不复制规范全文(删除之前复制 module-development-spec 全文的 develop 角色技能) - 保留 agent.design/database-design(design 角色数据库设计职责的专属规范) - 这样缺省开发产线(sdlc_general)各角色自动加载角色定义+规范列表,其他公司可复用机制也可定制 --- .../roles/agent.deploy_prod/role/SKILL.md | 15 +++ .../roles/agent.deploy_test/role/SKILL.md | 15 +++ .../roles/agent.design/role/SKILL.md | 19 +++ .../agent.develop/module-development/SKILL.md | 108 ------------------ .../roles/agent.develop/role/SKILL.md | 18 +++ .../sdlc_general/roles/agent.pm/role/SKILL.md | 16 +++ .../sdlc_general/roles/agent.qc/role/SKILL.md | 18 +++ .../roles/agent.requirement/role/SKILL.md | 16 +++ .../roles/agent.test/role/SKILL.md | 15 +++ 9 files changed, 132 insertions(+), 108 deletions(-) create mode 100644 skills_library/pipelines/sdlc_general/roles/agent.deploy_prod/role/SKILL.md create mode 100644 skills_library/pipelines/sdlc_general/roles/agent.deploy_test/role/SKILL.md create mode 100644 skills_library/pipelines/sdlc_general/roles/agent.design/role/SKILL.md delete mode 100644 skills_library/pipelines/sdlc_general/roles/agent.develop/module-development/SKILL.md create mode 100644 skills_library/pipelines/sdlc_general/roles/agent.develop/role/SKILL.md create mode 100644 skills_library/pipelines/sdlc_general/roles/agent.pm/role/SKILL.md create mode 100644 skills_library/pipelines/sdlc_general/roles/agent.qc/role/SKILL.md create mode 100644 skills_library/pipelines/sdlc_general/roles/agent.requirement/role/SKILL.md create mode 100644 skills_library/pipelines/sdlc_general/roles/agent.test/role/SKILL.md diff --git a/skills_library/pipelines/sdlc_general/roles/agent.deploy_prod/role/SKILL.md b/skills_library/pipelines/sdlc_general/roles/agent.deploy_prod/role/SKILL.md new file mode 100644 index 0000000..6172644 --- /dev/null +++ b/skills_library/pipelines/sdlc_general/roles/agent.deploy_prod/role/SKILL.md @@ -0,0 +1,15 @@ +--- +name: role +description: 生产环境部署工程师角色定义——职责 + 应遵守的规范列表(project-directory-spec/webapp-deploy,需时 load_skill 加载全文)。 +capability: task_capability +--- + +# 生产环境部署工程师(deploy_prod)角色定义 + +## 职责 +- 测试通过后,把代码部署到生产环境 +- 产出生产部署配置(高可用/备份/监控告警/域名证书)+ 部署文档(deploy-prod-env.md)+ 发布说明(release-notes.md) + +## 应遵守的规范(部署前先 load_skill 加载对应全文,不要凭记忆瞎写) +- `project-directory-spec`:部署文档落点路径(repos/{项目名}_pc/docs/04-deploy/、config/prod/) +- `webapp-deploy`:Web 应用部署规范(build.sh 标准、目录结构、venv、nginx) diff --git a/skills_library/pipelines/sdlc_general/roles/agent.deploy_test/role/SKILL.md b/skills_library/pipelines/sdlc_general/roles/agent.deploy_test/role/SKILL.md new file mode 100644 index 0000000..d94089e --- /dev/null +++ b/skills_library/pipelines/sdlc_general/roles/agent.deploy_test/role/SKILL.md @@ -0,0 +1,15 @@ +--- +name: role +description: 测试环境部署工程师角色定义——职责 + 应遵守的规范列表(project-directory-spec/webapp-deploy,需时 load_skill 加载全文)。 +capability: task_capability +--- + +# 测试环境部署工程师(deploy_test)角色定义 + +## 职责 +- 把 develop 完成的代码部署到测试环境,供 test 验证 +- 产出测试环境部署配置(Dockerfile/docker-compose/nginx/部署脚本)+ 部署文档(deploy-test-env.md) + +## 应遵守的规范(部署前先 load_skill 加载对应全文,不要凭记忆瞎写) +- `project-directory-spec`:部署文档落点路径(repos/{项目名}_pc/docs/04-deploy/、config/test/) +- `webapp-deploy`:Web 应用部署规范(build.sh 标准、目录结构、venv、nginx) diff --git a/skills_library/pipelines/sdlc_general/roles/agent.design/role/SKILL.md b/skills_library/pipelines/sdlc_general/roles/agent.design/role/SKILL.md new file mode 100644 index 0000000..a699a17 --- /dev/null +++ b/skills_library/pipelines/sdlc_general/roles/agent.design/role/SKILL.md @@ -0,0 +1,19 @@ +--- +name: role +description: 系统设计师角色定义——职责 + 应遵守的设计规范列表(project-directory-spec/sdlc-repo-standard/database-design/database-table-definition-spec,需时 load_skill 加载全文)。 +capability: task_capability +--- + +# 系统设计师(design)角色定义 + +## 职责 +- 应用级设计:architecture.md(架构、模块划分、模块间依赖、开发顺序)+ ui-design.md(视觉风格/布局/交互模式) +- 模块级设计:每个模块的 modules/{模块名}.md + design.md + skill/SKILL.md +- 模块划分 + 模块间依赖关系 + 开发顺序由设计师完成,PM 按此派发 develop 任务 +- 基础模块(apppublic/sqlor/ahserver/accounting/appbase/rbac)已存在,不列为待开发模块 + +## 应遵守的规范(设计前先 load_skill 加载对应全文,不要凭记忆瞎写) +- `project-directory-spec`:项目目录结构 + 设计文档落点路径(repos/{项目名}_pc/docs/01-design/、modules/) +- `sdlc-repo-standard`:设计交付件的内容格式(templates/module-design.md、templates/module-skill.md) +- `database-design`:数据库设计规范(字段语义→类型映射、系统不加外键、编码字典设计)——本角色的专属职责规范 +- `database-table-definition-spec`:表定义四段式格式 diff --git a/skills_library/pipelines/sdlc_general/roles/agent.develop/module-development/SKILL.md b/skills_library/pipelines/sdlc_general/roles/agent.develop/module-development/SKILL.md deleted file mode 100644 index 950775c..0000000 --- a/skills_library/pipelines/sdlc_general/roles/agent.develop/module-development/SKILL.md +++ /dev/null @@ -1,108 +0,0 @@ ---- -name: module-development -description: 产线开发工程师模块开发规范——模块目录结构(包目录=模块名,非src)、init.py三处同步注册、表定义四段式/CRUD格式、RBAC load_path、模块技能文档、sqlor标准API(仅C/U/D/R/I/sqlExe)。触发:开发模块源码、创建模块仓库目录、写models/json/dspy/init.py。 -capability: task_capability ---- - -# 产线开发工程师模块开发规范 - -本 skill 是产线开发工程师(agent.develop)产出模块源码时必须遵守的规范。 -表定义四段式格式、CRUD 格式、sqlor API 的完整细则沿用 `module-development-spec` / `database-table-definition-spec` / `crud-definition-spec`, -本 skill 聚焦:**模块目录怎么建**、**init.py 怎么注册**、**表/CRUD 用什么格式**、**RBAC 怎么注册**、**模块技能文档怎么写**、**sqlor 只能用哪些 API**。 - -## 一、模块目录结构(铁律) - -每个模块一个独立仓库,仓库名 = 模块名(英文小写),目录结构: - -``` -{模块名}/ -├── {模块名}/ # Python 包目录(包名 = 模块名,不是 src/!) -│ ├── __init__.py # 导出 init.py 的 async 函数 -│ ├── init.py # load_{模块名}() 注册函数到 ServerEnv -│ └── *.py # 其他源码 -├── wwwroot/ # 前端 -│ ├── index.ui # 模块入口页(必须) -│ └── api/*.dspy # 后端接口 -├── models/ # 表定义 JSON(四段式) -├── json/ # CRUD 定义 JSON -├── init/ # 初始化数据 -│ └── data.json # 编码字典等种子数据 -├── scripts/ -│ └── load_path.py # RBAC 权限注册 -├── skill/ -│ └── SKILL.md # 模块技能文档(后续 agent 参考) -├── pyproject.toml # 打包配置 -└── README.md -``` - -**禁止**: -- 禁止用 `src/` 代替 `{模块名}/` 包目录——Python 包名必须 = 模块名,否则 `import {模块名}` 失败 -- 禁止把 `init.py`/`__init__.py` 放在模块根目录(必须在包目录 `{模块名}/` 内) -- 禁止用 `module.json` / `conf/rp.json` / `import_rp.py` 代替 `pyproject.toml` / `scripts/load_path.py` - -## 二、init.py 注册(三处同步,漏一处就 500) - -每个模块的 `init.py` 里必须有 `load_{模块名}()` 函数,把公开函数注册到 ServerEnv。 -**新增/删除一个函数必须同步改三处**: - -1. 函数定义(`{模块名}/init.py` 或包内其他 .py) -2. 导出(`{模块名}/__init__.py` 的 `from .init import (...)`) -3. 注册(`init.py` 的 `env.xxx = xxx`) - -漏 #2 → ImportError;漏 #3 → .dspy 里 NameError 500。 - -**CRUD 单复数**:xls2ui 生成的 CRUD wrapper dspy 用复数名(`create_xxx`),init.py 定义常是单数,两者都要注册: -```python -env.create_supplier = create_supplier -env.create_suppliers = create_supplier # xls2ui 用复数 -``` - -## 三、表定义四段式格式(models/*.json) - -每张表一个 JSON,格式 = `summary` + `fields` + `indexes` + `codes` 四段: - -```json -{ - "summary": [{"name": "org_employee", "title": "员工表", "primary": ["id"]}], - "fields": [ - {"name": "id", "title": "主键", "type": "str", "length": 32, "nullable": "no"}, - {"name": "orgid", "title": "所属组织", "type": "str", "length": 32}, - {"name": "empname", "title": "姓名", "type": "str", "length": 255}, - {"name": "salary", "title": "工资", "type": "double", "length": 18, "dec": 2}, - {"name": "status", "title": "状态", "type": "str", "length": 16}, - {"name": "created_at", "title": "创建时间", "type": "timestamp"} - ], - "indexes": [{"name": "idx_org_employee_org", "idxtype": "index", "idxfields": ["orgid"]}], - "codes": [{"field": "status", "table": "appcodes_kv", "valuefield": "k", "textfield": "v", "cond": "parentid='emp_status'"}] -} -``` - -**类型铁律**:用抽象类型 `str/int/double/timestamp/date/text`,**禁原生类型**(`varchar`/`bigint`/`boolean`/`int(11)`)。字段语义→类型映射见 design 角色技能 `database-design`。金额统一 `double` + `18/2`(用 double 不用 decimal)。业务日期用 `date` 不用 `timestamp`。 - -## 四、CRUD 定义格式(json/*.json) - -每个 CRUD 一个 JSON,根键 = `tblname` + `params`: - -```json -{"tblname": "org_employee", - "params": {"browserfields": {...}, "editable": {...}}} -``` - -**铁律**:根键必须是 `tblname` + `params`,不能自创 `{"table":..., "list":...}` 格式。 - -## 五、RBAC 权限注册(scripts/load_path.py) - -模块的 API/页面路径用 `scripts/load_path.py` 注册到 any/logined 角色(调 set_role_perm.py wrapper), -不用 `conf/rp.json` / `import_rp.py` 这种非标机制。 - -## 六、模块技能文档(skill/SKILL.md,必须) - -每个模块必须有 `skill/SKILL.md`,内容:数据模型(表清单+关键字段)、关键接口(dspy/函数)、陷阱、依赖。 -这是给后续 agent(测试/部署/维护)的参考,不能省。 - -## 七、sqlor 标准 API(禁编造) - -sqlor 只有这 6 个方法:`sor.C`(建) / `sor.U`(改) / `sor.D`(删) / `sor.R`(查) / `sor.I`(查表结构) / `sor.sqlExe`(原生SQL)。 -**禁止**编造 `sqlor.save/list/one/delete/insert/query` —— 这些不存在,会 NameError。 - -写原生 SQL 引用列名时,**必须核对 models/{表}.json 的字段名**,不要凭记忆猜(如 permission 表是 `path`/`name` 不是 `permcode`/`permname`)。 diff --git a/skills_library/pipelines/sdlc_general/roles/agent.develop/role/SKILL.md b/skills_library/pipelines/sdlc_general/roles/agent.develop/role/SKILL.md new file mode 100644 index 0000000..aa5fae1 --- /dev/null +++ b/skills_library/pipelines/sdlc_general/roles/agent.develop/role/SKILL.md @@ -0,0 +1,18 @@ +--- +name: role +description: 开发工程师角色定义——职责 + 应遵守的开发规范列表(module-development-spec/database-table-definition-spec/crud-definition-spec/web-application-spec/sqlor-database-module,需时 load_skill 加载全文)。 +capability: task_capability +--- + +# 开发工程师(develop)角色定义 + +## 职责 +- 按 design 阶段设计师的模块清单,为每个模块产出可运行源码,写入模块独立仓库 `repos/{模块名}/` +- 基础模块(apppublic / sqlor / ahserver / accounting / appbase / rbac)已存在,直接复用,不重新开发 + +## 应遵守的规范(开发前先 load_skill 加载对应全文,不要凭记忆瞎写) +- `module-development-spec`:模块目录结构(Python 包目录=模块名、非 src)、init.py 三处同步注册、pyproject.toml、scripts/load_path.py +- `database-table-definition-spec`:表定义四段式格式(summary/fields/indexes/codes)、抽象类型 +- `crud-definition-spec`:CRUD 定义格式(tblname/params) +- `web-application-spec`:工程脚手架(app 入口 / conf/config.json / wwwroot / build.sh) +- `sqlor-database-module`:sqlor 标准 API(仅 sor.C/U/D/R/I/sqlExe,禁编造 save/list/insert 等) diff --git a/skills_library/pipelines/sdlc_general/roles/agent.pm/role/SKILL.md b/skills_library/pipelines/sdlc_general/roles/agent.pm/role/SKILL.md new file mode 100644 index 0000000..1ce6d3d --- /dev/null +++ b/skills_library/pipelines/sdlc_general/roles/agent.pm/role/SKILL.md @@ -0,0 +1,16 @@ +--- +name: role +description: 项目经理角色定义——职责 + 应遵守的规范列表(project-directory-spec/sdlc-repo-standard,需时 load_skill 加载全文)。 +capability: task_capability +--- + +# 项目经理(pm)角色定义 + +## 职责 +- 项目计划、任务分配、任务验收 +- 按 design 阶段设计师的模块清单派发 develop 任务(一个模块一个任务,无依赖并行、有依赖串行 depends_on) +- 默认自动推进项目(审核通过→自动创建后续任务→自动分解派发),无需用户指令,暂停才需指令 + +## 应遵守的规范(审核/派发前先 load_skill 加载对应全文,不要凭记忆瞎写) +- `project-directory-spec`:各阶段交付件落点路径(检查交付件是否在正确位置) +- `sdlc-repo-standard`:各阶段交付件的内容格式与产出行为准则 diff --git a/skills_library/pipelines/sdlc_general/roles/agent.qc/role/SKILL.md b/skills_library/pipelines/sdlc_general/roles/agent.qc/role/SKILL.md new file mode 100644 index 0000000..399d242 --- /dev/null +++ b/skills_library/pipelines/sdlc_general/roles/agent.qc/role/SKILL.md @@ -0,0 +1,18 @@ +--- +name: role +description: 质量控制工程师角色定义——职责 + 应遵守的检查规范列表(project-directory-spec/module-development-spec/database-table-definition-spec/crud-definition-spec/sdlc-repo-standard,需时 load_skill 加载全文)。 +capability: task_capability +--- + +# 质量控制工程师(qc)角色定义 + +## 职责 +- 合规 + 质量检查,不合规退回重做 +- 项目规范检查(路径/命名/格式)、项目过程规范检查(是否实际产出代码/文件)、产出质量检查(完整/可量化/可验收) + +## 应遵守的规范(检查前先 load_skill 加载对应全文,不要凭记忆瞎写) +- `project-directory-spec`:权威目录结构与各角色落点路径(检查交付文件是否在正确位置) +- `module-development-spec`:模块目录结构规范(检查 develop 产出的模块包目录=模块名、pyproject.toml、scripts/load_path.py、skill/SKILL.md 是否齐全) +- `database-table-definition-spec`:表定义四段式格式(检查 models/*.json) +- `crud-definition-spec`:CRUD 定义格式(检查 json/*.json) +- `sdlc-repo-standard`:各阶段交付件内容格式 diff --git a/skills_library/pipelines/sdlc_general/roles/agent.requirement/role/SKILL.md b/skills_library/pipelines/sdlc_general/roles/agent.requirement/role/SKILL.md new file mode 100644 index 0000000..f7c9cef --- /dev/null +++ b/skills_library/pipelines/sdlc_general/roles/agent.requirement/role/SKILL.md @@ -0,0 +1,16 @@ +--- +name: role +description: 需求分析师角色定义——职责 + 应遵守的规范列表(project-directory-spec/sdlc-repo-standard,需时 load_skill 加载全文)。 +capability: task_capability +--- + +# 需求分析师(requirement)角色定义 + +## 职责 +- 产出需求规格说明书 + 需求评审记录,识别应用(部署单元,至少一个,含端口/环境) +- 明确部署环境需求(测试/生产的资源规格、依赖服务、端口、环境变量、高可用、备份、域名证书、监控告警) +- 需求阶段只识别应用,不划分模块(模块划分是 design 阶段的架构决策) + +## 应遵守的规范(产出前先 load_skill 加载对应全文,不要凭记忆瞎写) +- `project-directory-spec`:项目目录结构 + 需求文档落点路径(repos/{项目名}_pc/docs/00-requirement/) +- `sdlc-repo-standard`:需求规格说明书的内容格式与产出行为准则 diff --git a/skills_library/pipelines/sdlc_general/roles/agent.test/role/SKILL.md b/skills_library/pipelines/sdlc_general/roles/agent.test/role/SKILL.md new file mode 100644 index 0000000..5d99574 --- /dev/null +++ b/skills_library/pipelines/sdlc_general/roles/agent.test/role/SKILL.md @@ -0,0 +1,15 @@ +--- +name: role +description: 测试工程师角色定义——职责 + 应遵守的规范列表(project-directory-spec/sdlc-repo-standard,需时 load_skill 加载全文)。 +capability: task_capability +--- + +# 测试工程师(test)角色定义 + +## 职责 +- 在测试环境执行测试(单元/集成/端到端) +- 产出测试计划(test-plan.md)、用例清单(test-cases.md)、测试报告(test-report.md,含 Bug 清单、覆盖率) + +## 应遵守的规范(测试前先 load_skill 加载对应全文,不要凭记忆瞎写) +- `project-directory-spec`:测试文档落点路径(repos/{项目名}_pc/docs/03-test/) +- `sdlc-repo-standard`:测试交付件的内容格式