Files
saas-mbr/docs/agent-guide.md
T

94 lines
4.9 KiB
Markdown
Raw Normal View History

# AI 生成代码工作流与 Vibe Coding 协作指南
> 权威来源:`docs/agent-guide.md` · 编码约束详见 `docs/coding-standards.md`(本文件只讲"怎么协作",不重复约束)
## 1. 适用场景
- **用户给界面 → AI 出代码**:用户提供界面原型(图片/截图/链接/文字描述)与业务说明,AI 按 `coding-standards.md §7` 的步骤序列(S1~S10)生成前后端代码。
- **团队 Vibe Coding**:所有成员(人 + AI)在统一约束下开发,产出可互审、可合并、可交付。
## 2. "界面 → 代码"提示词协议
### 2.1 用户侧(发起开发请求时的最小输入)
```
【业务说明】<要做什么,一两句话>
【界面】<原型图 / 截图 / 链接 / 界面文字描述>
【应用名】<APP_NAME,如 example>
【服务别名】<前端 URL 首段,如 sms>
【数据库】<MySQL / SQL Server,默认 MySQL>
【子系统编码】<public/data/data.js 的 currentSubsystem,默认沿用现有>
【租户上下文】<本系统为多租户 SaaS,默认行级隔离;AI 生成代码须自动带租户过滤,业务参数不传 tenantId>
```
### 2.2 AI 侧(开工前必须明确的默认值)
若用户未提供以下任一项,**按下述默认值执行并在交付说明中标注**,不得中断询问:
| 项 | 默认值 |
|---|---|
| APP_NAME | 沿用后端 `bootstrap.yml` 现有 `spring.application.name`(老系统内新增功能);新系统才要求用户确认 |
| 服务别名 | 沿用 `window.frameBaseConfig.backendServices` 中现有别名;新增服务需用户确认映射 |
| 数据库 | MySQL(建表脚本需与 sqlserver.sql 双份同步) |
| 页面归属 | 菜单结构按界面标题推断一级/二级菜单;无法推断时归入现有最近菜单 |
| 租户隔离 | 默认开启(行级);AI 生成的数据访问自动叠加 `tenant_id` 过滤;不在 URL / 业务参数中传递 tenantId(来自 token,见 `coding-standards.md §9` |
### 2.3 交付说明模板(AI 每次交付代码时附带)
```
## 本次交付
- 新增/修改文件清单(路径)
- 界面元素 → 实现映射(查询区/表格列/表单字段/操作按钮分别落在哪些代码位置)
- 接口清单(方法 + URL + 响应结构)
- SQL 变更(表/升级版本号)
## 已执行检查
- APP_NAME 四联检(①~④ 一致?)
- 统一响应体/异常码/分页契约/Excel 分支
- 未触碰 src/framework、pom、assembly
## 待办/风险
- 需后端菜单数据注册才能在前端菜单可见
- 需真机验证项(多数据源/定时任务/消息队列等)
```
## 3. 联调与验证纪律
- **Mock 证据不足**:多数据源路由、Kafka 消费、XXL-JOB 调度、Nacos 配置拉取、真实数据库迁移等**必须真机验证**,不得以 mock/静态检查作为完成依据。
- 前端 `npm run dev` + 后端启动的冒烟清单见 `coding-standards.md §7.4`
- 交付前由 AI 执行 `coding-standards.md §7.3` 必须/禁止清单自检。
## 4. 团队协作约定
### 4.1 提交
- 遵循 Conventional Commits`type(scope): subject``feat/fix/docs/refactor/chore/test`)。
- 提交粒度:一个功能/一个修复一个提交;先 `git add` 相关文件再提交,禁止 `git add -A` 夹带无关改动。
- 工作区单一 git 仓库(`D:\workBuddySpace\member`),docs/ 与两项目统一管理;发布以后端 `*-bin.zip` 为单元。
### 4.2 评审
- 评审重点:`coding-standards.md §7.3` 清单项、分层依赖方向(§5.1)、SQL 双份同步、命名规范。
- PR 描述按「变更内容 / 验证方式 / 影响范围」三段。
### 4.3 文档维护(单源化纪律)
- 共享约束只改 `docs/coding-standards.md`;仓库内 `.project.agents` 的 CONVENTIONS 只允许写指针 + 本仓库特有内容,**禁止复制正文**。
- 功能更新同步后端 `src/main/resources/doc/升级日志.md`
### 4.4 框架演进
- 业务自研组件/工具泛用性高 → 提交框架负责人评审后纳入 `src/framework/**`,再在新业务中复用;不得长期只存在于业务内。
- 框架升级:不覆盖 `public``vite.config.ts``src/subsystem`
## 5. 常见坑(高频返工点)
| 坑 | 规避 |
|---|---|
| 前端再取 `.data`(已自动解包) | 编码时直接使用返回值 |
| URL 首段与后端 context-path/Controller 路径不符 → 404 | 生成后端接口后回填前端 ts,路径逐字对齐 |
| 原生 SQL 字符串拼接 → 注入/报错 | 一律 `?` 占位参数化 |
| 只改 mysql.sql 忘 sqlserver.sql | 建表双份同步作为 S7 固定动作 |
| 新页面菜单不可见 | 后端菜单数据(`sql/data/`)注册 + dynamicRouter 匹配 url===path |
| 手动拼主键/UUID | 一律 `DaoIdGenerator` |
| 新增 Util/Helper 类 | 遵循 §8.4:可引不可增 |
| 漏写租户过滤 → 跨租户数据泄露 | 数据访问必须带 `tenant_id`JPA @Filter / Repository 基类 / 原生 SQL `?`),缓存 key 加 `tenant:{id}:` 前缀(§9 |