Files
training/AGENTS.md
2026-07-28 11:00:28 +08:00

96 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 项目规则
## 项目背景
这是一个前后端分离的培训项目。
## 技术栈
- 前端React 18、TypeScript、Vite
- 后端Spring Boot 3.4.5、Java 21、MyBatis-Plus
- 数据库MySQL 8
- 缓存Redis
## 工作规则
- 所有文件使用 UTF-8 编码,避免中文乱码。
- 修改代码前,先阅读项目结构和相关文件。
- 修改前说明将影响哪些文件。
- 修改后给出启动命令和测试步骤。
- 不要把所有功能堆在一个页面或一个文件中。
- 建表或修改表结构时,补充完整的中文注释。
- 涉及删除文件、删除数据或清空数据库时,必须先二次确认,并提供操作日志和回滚说明。
## 环境
- 使用 `.env.example` 作为环境配置参考。
- 不要将密码、令牌或其他敏感信息写入代码、日志或提交内容。
## 前端规则
- 遵循现有组件、路由、状态管理和样式规范。
- 保持组件职责清晰,避免创建过大的组件。
- 修改用户界面时验证桌面端和移动端布局。
## 后端规则
- 类型名使用大驼峰,变量名和方法名使用小驼峰。
- 采用四层结构:`controller``service``mapper``domain`
- `controller` 层声明接口,为前端提供 API。
- `service` 层声明业务接口,`impl` 子目录负责实现业务逻辑。
- `mapper` 层包含 Mapper 接口和 XML 文件,负责数据库操作。
- `domain` 层包含 POJO、DTO 等领域对象。
- 方法参数不要使用 `Map`;需要结构化参数时创建对应的 DTO 类。
- 使用 Lombok 的 `@RequiredArgsConstructor` 完成依赖注入。
## API 规范
- 接口路径使用版本前缀,例如 `/api/v1/``/api/v2/`;新增不兼容变更时升级主版本。
- 接口命名使用“动词 + 名词”表达操作和资源,例如 `POST /api/v1/users`
- 接口成功响应统一使用以下结构:
```json
{
"code": 200,
"message": "success",
"data": {}
}
```
- 错误码集中定义并保持全局唯一;不要在业务代码中散落硬编码错误码和错误信息。
- 分页接口统一使用 `page`、`pageSize` 请求参数,并在响应中提供 `total` 总条数;分页数据放在 `data` 中。
- 需要认证的接口通过 `Authorization: Bearer <token>` 传递凭证。
- JSON 请求和响应使用 `Content-Type: application/json`,并根据实际内容设置 `Accept` 请求头。
- 新增接口时同步明确 HTTP 方法、路径、请求头、请求参数、响应结构、错误码和版本归属。
## 数据库规则
- 表名使用大写,多个单词之间使用下划线连接,例如 `USER_PROFILE`。
- 新建或修改表结构后,将最终建表语句保存到 `sql/<表名>.sql`。
- SQL 中为表和字段补充清晰的中文注释。
- 数据库写操作前先确认目标、范围、影响行数和回滚方式。
## 输出规范
- 使用标准代码格式。
- 完成时说明:修改了哪些文件、每个文件的变化、验证方法、是否涉及 SQL以及风险和回滚方式。
## 通用约束
### 语言规范(不可变)
- 文档和代码注释必须使用中文。
- 变量名、函数名、类名和其他代码标识符仍使用英文,并遵循对应语言的命名规范。
### 可观测性与兜底
- 任务必须具备完整链路:任务 ID、关联引用和关键日志。
- 失败时必须提供明确的兜底提示,并支持合理的重试机制。
- 日志不得记录密码、令牌或其他敏感信息。
### 占位元素
- 图标或图片资源尚未确定时,使用占位 `div` 并添加 `TODO` 注释。
- 禁止使用临时 SVG、临时占位图服务或未授权的外部图片作为占位元素。
- 占位元素必须明确标记最终资源的替换位置。