6.8 KiB
Raw Blame History

name description
sdlc-repo-standard SDLC project repo layout and deliverable specs.

SDLC 项目仓库标准

项目工作空间 workspace/repos/ 下建三类仓库,其他临时文件/其他用途文件不进仓库:

  1. 项目过程仓库(repos/project/):阶段文档、QC 审计文档、项目管理文档都放这里
  2. 应用仓库(至少一个):应用代码
  3. 模块仓库(每个模块一个):模块代码

目录结构

workspace/
├── repos/
│   ├── project/                 # 项目过程仓库(git,本地仓库,无远程)
│   │   ├── README.md
│   │   ├── docs/                # 阶段文档
│   │   │   ├── 00-requirement/
│   │   │   │   └── requirement-spec.md
│   │   │   ├── 01-design/
│   │   │   │   ├── architecture.md   # 系统架构、模块划分、模块间依赖、开发顺序
│   │   │   │   └── ui-design.md      # 视觉风格/主页面/用户交互模式/弹窗规范
│   │   │   ├── 02-develop/
│   │   │   │   └── dev-notes.md
│   │   │   ├── 03-test/
│   │   │   │   ├── test-plan.md
│   │   │   │   ├── test-cases.md
│   │   │   │   └── test-report.md
│   │   │   ├── 04-deploy/
│   │   │   │   ├── deploy-guide.md
│   │   │   │   └── release-notes.md
│   │   │   └── 05-pm/               # 项目管理文档 + QC 审计文档
│   │   │       └── reviews/
│   │   ├── modules/             # 模块说明 + 模块级设计(自包含单元)
│   │   │   ├── <模块名>.md      # 模块清单:功能/仓库/依赖/开发顺序
│   │   │   └── <模块名>/
│   │   │       ├── design.md    # 数据设计(表DDL) + CRUD + 处理逻辑(接口)
│   │   │       └── skill/SKILL.md
│   │   ├── apps/                # 应用说明(每个应用一个文件)
│   │   │   └── <应用名>.md
│   │   ├── config/              # 部署配置
│   │   └── .gitignore
│   ├── <应用仓库>/              # 应用代码仓库(至少一个)
│   └── <模块仓库>/              # 每个模块一个代码仓库
└── (其他临时文件不进仓库)

说明:

  • 项目过程仓库是本地 git 仓库(无远程),只 commit 不 push;QC 审核检查 commit 记录。
  • 应用仓库、模块仓库是代码仓库(有远程),develop 阶段 clone 到 repos/ 下并提交。

模块说明文件 modules/<模块名>.md

# <模块名>
- **功能**: <一句话描述>
- **仓库**: git@git.opencomputing.cn:org/<repo>.git
- **技术栈**: <语言/框架>
- **状态**: <规划中/开发中/已完成>
- **负责人**: <role>
- **依赖模块**: <列出依赖的其他模块>
- **开发顺序**: <拓扑序中的位置,被依赖的先开发>
- **关联应用**: <属于哪个应用>

模块级设计 modules/<模块名>/

每个模块是自包含、可复用的单元,数据设计放模块内而非应用级:

modules/<模块名>/
├── design.md            # 数据设计(表结构DDL) + CRUD 定义 + 处理逻辑(接口)
└── skill/SKILL.md       # 模块技能文档(develop agent 参考)

原则: 数据、CRUD、处理逻辑、skills 都属于模块本身,不放在应用级 design 里,这样模块可整体复用(换个应用直接带着自己的数据/逻辑/skills 一起加载)。

模板: 设计产出用统一模板,保证 develop 读到的每个模块设计结构一致——

  • design.md 模板 → templates/module-design.md(模块元信息 / 数据设计→models / CRUD→json / 处理逻辑→dspy / 入口菜单)
  • skill/SKILL.md 模板 → templates/module-skill.md(frontmatter / 概述 / 数据模型 / 关键接口 / 陷阱 / 依赖)

应用说明文件 apps/<应用名>.md

# <应用名>
- **描述**: <应用的整体功能和定位>
- **包含模块**:
  - <模块1> (git@...)
  - <模块2> (git@...)
- **部署环境**: <地址/端口>
- **负责人**: <role>
- **状态**: <规划中/开发中/已上线>

各角色产出规范

所有阶段文档都产出到项目过程仓库 repos/project/ 下,完成后 git_commit_push 提交到项目过程仓库。

requirement(需求分析师)

  • 产出: repos/project/docs/00-requirement/requirement-spec.md
  • 同时创建: repos/project/apps/ 下至少一个应用说明文件(应用 = 部署单元,含端口/环境)
  • 不划分模块: 模块划分是架构决策,由 design 阶段设计师完成
  • 内容: 项目概述、用户角色及权限、功能列表(含验收标准)、非功能需求、业务流程

design(系统设计师)

  • 应用级产出: repos/project/docs/01-design/architecture.md(系统架构、模块划分、模块间依赖、开发顺序), ui-design.md(视觉风格/主页面/用户交互模式/弹窗规范)
  • 模块级设计: 每个模块在 repos/project/modules/<模块名>/ 下产出自己的设计——数据设计(表结构DDL)、CRUD 定义、处理逻辑(接口)、skills(技能文档)。数据/CRUD/逻辑/skills 属于模块本身,不放在应用级,保证模块可整体复用
  • 更新: repos/project/modules/ 下各模块的技术栈、依赖关系、开发顺序
  • 内容: 架构图及技术选型、模块清单与依赖图、视觉风格与交互规范

develop(开发工程师)

  • 产出: repos/project/docs/02-develop/dev-notes.md(开发说明,记录了哪些模块仓库、开发了什么功能)
  • 源码: 写入对应模块的独立仓库 repos/<模块名>/(通过 modules/ 中的 repo URL 确定),不在项目过程仓库中
  • 更新: repos/project/modules/ 下对应模块的状态为开发中/已完成
  • 行为准则:
    1. 先读 repos/project/modules/ 确认模块仓库 URL
    2. git_clone 模块仓库到 repos/ 下
    3. write_file 写代码到模块仓库
    4. run_shell 编译验证
    5. git_commit_push 提交模块仓库
    6. write_file 更新 repos/project/modules/<模块名>.md 状态,git_commit_push 提交项目过程仓库
    7. deliver 交付

test(测试工程师)

  • 产出: repos/project/docs/03-test/test-plan.md, test-cases.md, test-report.md

deploy(部署工程师)

  • 产出: repos/project/docs/04-deploy/deploy-guide.md, release-notes.md, repos/project/config/ 下部署配置

PM(项目经理)

  • 审核要点:
    • 每个阶段检查项目过程仓库有 git commit、交付件已受控提交
    • develop: 必须检查对应模块仓库有 git commit,modules/ 状态已更新
    • 每个阶段检查 modules/ 和 apps/ 文件是否随进度更新