再次提交一下代码

This commit is contained in:
andy
2026-07-17 13:13:47 +07:00
parent f4d86248d4
commit 980a3a2535
41 changed files with 1699 additions and 187 deletions

View File

@@ -12,6 +12,8 @@ Runtime、Planner、Memory 或通用工具调用框架。
当前项目时间存储、接口返回、酒店时区展示和本地业务日期边界统一参考 `docs/project/backend-time-design.md`
当前项目接口暴露、权限、酒店隔离和审计边界统一参考 `docs/project/security-access-control-boundary.md`。新增或修改 Controller、第三方入口、调试入口或 worker 触发入口时,必须同步检查该文档。
## 2. 技术栈
`server/pom.xml` 为准,当前后端技术栈如下:
@@ -278,7 +280,45 @@ Secret 只能通过 `.env`、环境变量或部署平台 Secret 注入。仓库
- 后端 Secret 不得放入前端 `VITE_*`
- 生产环境应拆分 ConfigMap / 非敏感环境变量与 Secret / 密钥管理系统。
## 14. API 设计规范
## 14. 接口暴露、权限和审计边界
新增或修改后端入口前,必须先判定接口分类:
```text
PUBLIC
FRONTEND_USER
FRONTEND_ADMIN
FRONTEND_DEBUG
THIRD_PARTY_SUPERAGENT
THIRD_PARTY_AGENTBUS
THIRD_PARTY_MCP
INTERNAL_ONLY
```
中文说明:
| 分类 | 中文含义 | 后端落地要求 |
| --- | --- | --- |
| `PUBLIC` | 公开基础接口 | 只能返回健康、登录等非敏感信息,不返回业务数据和配置细节 |
| `FRONTEND_USER` | 普通业务前端接口 | 目标状态必须登录、权限码和酒店访问权控制 |
| `FRONTEND_ADMIN` | 系统管理后台接口 | 必须登录、管理权限码和管理审计 |
| `FRONTEND_DEBUG` | Debug、Demo、Replay、Probe 等调试接口 | 必须有环境开关、受控 access key 或管理权限,生产默认关闭或严格限制 |
| `THIRD_PARTY_SUPERAGENT` | SuperAgent 服务到服务接口 | 使用 HMAC、timestamp、nonce、body hash 等机器鉴权,不使用用户 Bearer token |
| `THIRD_PARTY_AGENTBUS` | AgentBus 实时入口 | 使用 AgentBus Token、入库幂等和受控 dispatch不直接改业务状态 |
| `THIRD_PARTY_MCP` | MCP 工具入口 | 使用 Bearer Token 和工具级能力限制,不暴露无关业务接口 |
| `INTERNAL_ONLY` | 后端内部能力 | 不提供外部 HTTP 入口,只能通过 Service、Port、Worker 或 Adapter 内部调用 |
落地规则:
- Controller 方法新增前必须明确调用方、鉴权方式、权限码、酒店隔离方式、敏感字段返回边界和审计要求。
- 前端业务接口最终应使用登录态、权限码和酒店访问权;第三方机器接口不得误用用户登录态。
- 后端内部 Adapter、Repository、Mapper、Secret、外部系统 client、raw payload 和原始附件读取能力不得直接暴露给前端或第三方。
- 邮件正文、HTML、附件 URL、AI 原始 payload、trace、调试错误摘要等敏感数据返回前必须确认调用方和审计策略。
- 写接口必须明确 actor 来源前端用户写操作使用当前登录用户SuperAgent、MCP、AgentBus 使用机器身份。
- 新增或变更接口必须同步更新 `docs/project/security-access-control-boundary.md`。影响前端时同步更新 `docs/project/frontend-backend/backend-to-frontend-notes.md`,影响 SuperAgent / MCP / AgentBus 时同步更新对应集成契约文档。
- 新增接口权限时必须执行 `docs/project/security-access-control-boundary.md` 中“新增接口权限固定流程”:定义权限码、补启动同步、补内置角色矩阵、后端强制校验、前端权限类型和交互同步、系统设置可分配、补测试和文档。
## 15. API 设计规范
- API 返回稳定代码,不返回中文或英文文本作为前端业务判断依据。
- 动态表单字段使用稳定 `fieldKey` 和可国际化 `labelKey`
@@ -287,7 +327,7 @@ Secret 只能通过 `.env`、环境变量或部署平台 Secret 注入。仓库
- 外部写操作结果不明确时,禁止盲目重试。
- 调试接口必须默认关闭,并使用独立访问密钥。
## 15. 测试与检查命令
## 16. 测试与检查命令
后端最低检查:
@@ -308,7 +348,7 @@ cd server
如果命令尚未配置或因环境问题无法运行,必须明确说明,不能假装通过。
## 16. Git 与协作流程
## 17. Git 与协作流程
- 改动前说明目标、范围和将修改的文件。
- 每次只处理一个模块或一个纵向切片。
@@ -318,11 +358,13 @@ cd server
- 修改后运行项目已配置的检查命令。
- Git commit message 使用中文,清楚说明本次提交的业务或技术变更。
## 17. 后端提交前检查清单
## 18. 后端提交前检查清单
- [ ] 是否遵守 platform / workflows / integrations 分层?
- [ ] 是否已在 `docs/project/security-access-control-boundary.md` 中登记或更新接口分类、鉴权方式、权限码、酒店隔离和审计要求?
- [ ] 模块内部是否遵守 `control` / `service` / `service.impl` / `domain` / `mapper` / `repository` / `common.dto` / `common.request` / `common.result` / `common.enums` 目录规则?
- [ ] Controller 是否没有直接访问 Mapper 或外部 Adapter
- [ ] 第三方接口是否没有误用用户登录权限,前端接口是否没有直接暴露 Secret、raw payload 或外部系统调用能力?
- [ ] Request、Result、DTO 是否放在 `common.request``common.result``common.dto`,而不是混在 `service` 或临时 `application` 包?
- [ ] `control``service``service.impl``repository` 方法是否有中文注释?
- [ ] Mapper 自定义语义化方法是否按复杂度合理补充中文注释,且未为了 MyBatis-Plus 自带继承方法强行加无意义注释?