Files
ProjectAGiPrompt/1-AgentSkills/developing-project-management/SKILL.md
2026-02-02 15:06:28 +08:00

11 KiB
Raw Blame History

name, description, argument-hint, allowed-tools
name description argument-hint allowed-tools
developing-project-management 项目管理模块开发指南 Guides development of rmdc-project-management 模块项目全生命周期管理Project Lifecycle、类 Git 版本管理snapshot/diff支持草稿/发布/回滚、ACL 权限控制、TOTP 二次授权、与工单(work-procedure)的联动回调,以及 Vue3 + Vuetify 前端页面/组件开发。Triggered when you modify 项目 CRUD、草稿/版本相关 APIdraft/version、权限授予与授权能力ACL/TOTP/SuperAdmin、工作流回调与状态同步、数据库迁移或前端 ProjectDetail 等页面与组件。Keywords: 项目生命周期, 版本快照, diff 算法, ACL, TOTP, workflow callback, SuperAdmin, optimistic lock/乐观锁, Vue3, Vuetify, ProjectDetail. <change-type> [target] — change-type 可选: api|entity|service|migration|frontend|auth|version|component. Examples: "api draft-submit" / "frontend ProjectDetail" / "version diff-algorithm"
Read
Glob
Grep
Bash
Edit
Write

Developing Project Management Module

本 Skill 指导 rmdc-project-management 模块的开发,该模块是 RMDC 系统的核心业务模块,负责以 K8s Namespace 为粒度的项目全生命周期管理。

模块定位

  • 核心职责: 项目 CRUD、Git-like 版本控制、细粒度 ACL 权限、一级 TOTP 授权
  • 后端技术栈: Go + Gin + GORM + PostgreSQL (JSONB)
  • 前端技术栈: Vue3 + TypeScript + Vuetify3
  • 架构: 模块化单体,通过接口注入与 rmdc-work-procedure 工单模块协作
  • 版本控制思想: 类似 Git 的分支管理Master 主线 + 用户草稿分支)

动态上下文注入

使用前先获取当前仓库状态:

# 查看项目管理模块后端目录结构
!`find . -path "*/rmdc-project-management/*" -name "*.go" | head -20`

# 查看前端组件目录结构
!`find . -path "*/admin/components/*" -name "*.vue" | head -20`

# 查找版本控制相关代码
!`grep -rn "VersionSnapshot\|CompareVersions\|DiffResult" --include="*.go" | head -15`

# 查找前端生命周期状态相关代码
!`grep -rn "lifecycle_status\|LIFECYCLE_STATUS" --include="*.vue" --include="*.ts" | head -15`

Plan计划阶段

产物清单

根据 $ARGUMENTS 确定变更范围:

变更类型 产物文件 影响模块 参考文档
api handler/*.go, router.go rmdc-core 路由注册 reference/06-api-design/api-endpoints.md
entity entity/*.go 数据库迁移、DTO 映射 reference/05-database-schema/data-structures.md
service service/*.go 业务逻辑、版本快照 reference/04-version-control/version-design.md
migration migrations/*.sql 数据库 Schema reference/05-database-schema/database-schema.md
frontend pages/*.vue, components/*.vue 前端页面 reference/07-frontend-design/
auth service/auth_*.go TOTP 授权、Exchange-Hub reference/03-permission-model/acl-permission.md
version service/version_*.go 版本快照、Diff 算法 reference/04-version-control/version-design.md
component components/*.vue 前端组件开发 reference/07-frontend-design/component-specifications.md

决策点

  1. 是否涉及生命周期状态变更? → 检查 reference/02-lifecycle-state-machine/lifecycle-states.md
  2. 是否修改版本快照结构? → 检查 reference/04-version-control/version-design.md
  3. 是否涉及并发修改冲突? → 检查乐观锁实现base_version 校验)
  4. 是否变更 ACL 权限模型? → 检查 reference/03-permission-model/acl-permission.md
  5. 是否影响工单模块回调? → 检查 reference/02-lifecycle-state-machine/workflow-state-mapping.md
  6. 是否涉及前端页面修改? → 检查 reference/07-frontend-design/page-architecture.md
  7. 是否涉及用户侧/管理侧差异? → 检查 reference/07-frontend-design/user-admin-difference.md

Verify验证阶段

后端 Checklist

  • 生命周期状态机完整性: 所有状态转换有明确的触发条件和权限控制
  • 版本快照一致性: projects 表与 project_versions 表数据同步
  • 乐观锁检查: 并发修改时 base_version == current_version 校验存在
  • 超管直改版本生成: SuperAdmin 直接修改必须同时生成版本记录(原子事务)
  • Diff 算法正确性: 版本对比结果按模块分组,字段路径完整,中文名映射正确
  • ACL 权限验证: 接口权限注解与业务逻辑一致,授权模块仅 SuperAdmin 可见
  • 工单回调幂等: 状态更新操作具备幂等性
  • 敏感字段加密: 密码字段使用 AES-256 加密存储
  • 审计日志: 所有写操作记录到 rmdc-audit-log
  • Namespace 校验: 符合 RFC 1123 DNS 标签规范

前端 Checklist

  • 状态分离: 查看/编辑模式正确切换,isEditMode 状态管理正确
  • 脏数据检测: hasChanges computed 正确计算,退出时有确认对话框
  • 角色差异化: SuperAdmin 与普通用户看到的 Tab 和操作按钮符合设计
  • 生命周期展示: 状态标签颜色、图标、Alert Banner 符合规范
  • 工单关联: 多工单场景正确处理,跳转链接正确
  • 组件复用: 共用组件正确抽离Props 和 Emits 设计合理
  • 响应式布局: 移动端适配正确,断点设置符合 Vuetify 规范
  • TypeScript 类型: 类型定义完整,无 any 类型

验证命令

# 检查版本服务实现
!`grep -rn "CompareVersions\|CreateOfficialVersion\|VersionSnapshot" service/*.go`

# 检查乐观锁实现
!`grep -rn "base_version\|BaseVersion\|VersionConflict\|409" --include="*.go"`

# 检查敏感字段加密
!`grep -rn "EncryptAES\|DecryptAES\|admin_password\|ssh_pwd" --include="*.go"`

# 检查前端生命周期状态
!`grep -rn "LIFECYCLE_STATUS\|getLifecycleStatusColor" --include="*.vue" --include="*.ts"`

# 检查前端组件引用
!`grep -rn "BasicInfoReadonly\|SaveConfirmDialog" --include="*.vue"`

# 运行模块单元测试
go test ./internal/project/... -v -cover

Execute执行阶段

后端 API 开发流程

  1. 定义请求/响应结构体 → dto/project_dto.go
  2. 实现 Service 方法 → service/project_service.go
  3. 实现 Handler 方法 → handler/project_handler.go
  4. 注册路由 → router.go (注意权限中间件)
  5. 编写单元测试 → *_test.go

版本快照变更流程

  1. 更新 VersionSnapshot 结构体定义 → reference/05-database-schema/data-structures.md
  2. 更新字段名映射表 fieldNameMap → 确保 Diff 显示中文名
  3. 确保 CompareVersions Diff 算法兼容新字段
  4. 测试历史版本查看功能不受影响

SuperAdmin 直改流程

  1. 更新 projects 表 + 插入 project_versions必须在同一事务
  2. workflow_id 设为空或 DIRECT_EDIT 标识
  3. committer_id 记录 SuperAdmin ID
  4. 更新 current_version 字段

前端组件开发流程

  1. 只读组件*Readonly.vue,使用 v-row/v-col 布局
  2. 表单组件*Form.vue,使用 Vuetify 表单组件
  3. 组件导出 → 更新 components/index.ts
  4. 页面集成 → 在 ProjectDetail.vueUserProjectDetail.vue 中引用
  5. 类型定义 → 更新 types/*.ts

前端状态管理流程

  1. 进入编辑模式: 深拷贝 masterDataeditForm
  2. 修改检测: 使用 hasChanges computed
  3. 保存前确认: 使用 SaveConfirmDialog 展示 Diff
  4. 退出保护: 有未保存修改时弹出确认对话框

Pitfalls常见问题

后端

  1. 超管直改未生成版本: SuperAdmin 直接修改 projects 表时,必须同时插入 project_versions 记录,否则版本链断裂

  2. 草稿基准版本过期: 用户 A 基于 v3 创建草稿,超管修改产生 v4用户 A 提交时需检测冲突409 Conflict

  3. 工单回调重复处理: 工单模块可能重试回调,ProjectLifecycleUpdater 实现必须幂等

  4. ACL 权限遗漏授权模块: authorization_info 模块仅 SuperAdmin 可见,其他角色查询时需过滤

  5. 密码字段明文泄露: AdminPasswordSSHPwd 等字段响应时必须脱敏(返回 ********

前端

  1. 编辑模式状态未同步: 切换 Tab 时 isEditMode 状态可能丢失,需使用 v-window 而非条件渲染

  2. Diff 计算不完整: 对比时遗漏嵌套字段,需使用递归 JSON Diff

  3. 工单按钮显示错误: 多工单场景下 workflow_id 可能是数组,需正确处理


模块依赖关系

rmdc-project-management
├── → rmdc-user-auth (用户鉴权、ACL 权限查询)
├── ↔ rmdc-work-procedure (工单创建/状态转换 + 回调更新生命周期)
├── → rmdc-audit-log (操作审计记录)
├── → rmdc-exchange-hub (授权指令下发)
└── ← rmdc-core (路由注册、依赖注入)

关键接口速查

类别 路径 权限 说明
项目列表 POST /api/project/list Login 自动过滤 ACL
项目详情 POST /api/project/detail View ACL Master 版本
创建项目 POST /api/project/create SuperAdmin 同时创建填写工单
直接更新 POST /api/project/update SuperAdmin 必须生成新版本
保存草稿 POST /api/project/draft/save View ACL 更新草稿快照
提交审核 POST /api/project/draft/submit View ACL 检测版本冲突
草稿差异 POST /api/project/draft/diff View ACL 草稿与主线 Diff
版本历史 POST /api/project/version/list View ACL 仅 official 类型
版本对比 POST /api/project/version/diff View ACL 按模块分组
权限分配 POST /api/project/permission/grant SuperAdmin 模块级权限

前端页面速查

页面 路径 角色 说明
管理员项目详情 pages/admin/ProjectDetail.vue SuperAdmin 全功能,含授权/版本历史
用户项目详情 pages/user/UserProjectDetail.vue User 草稿编辑,提交审核

相关文档(章节分层)

章节目录 内容
reference/01-architecture-overview/ 模块依赖关系
reference/02-lifecycle-state-machine/ 生命周期状态机、工单状态映射
reference/03-permission-model/ ACL 权限模型、权限检查流程
reference/04-version-control/ 版本快照、Diff 算法、乐观锁
reference/05-database-schema/ DDL、索引、数据结构定义
reference/06-api-design/ API 清单、业务流程
reference/07-frontend-design/ 前端页面架构、组件规范、交互时序