docs: 后台管理 API 说明与变更记录(AGENTS.md / change-log)

This commit is contained in:
夏犀麟 2026-08-24 22:36:25 +08:00
parent 8fdb25e6bd
commit 75e56dae43
2 changed files with 47 additions and 0 deletions

View File

@ -44,6 +44,18 @@ service.xpcool.com/
utility/ # 预留跨切面辅助 utility/ # 预留跨切面辅助
``` ```
## 后台管理 APIapi/admin/v1
- 三层路由隔离`internal/cmd/cmd.go`
- **公开**无鉴权`POST /auth/login`
- **仅登录** `AdminAuthOnly``GET /auth/info`个人资料`GET /auth/codes`按钮权限码`GET /menu/routes`vben 动态路由
- **接口级鉴权** `AdminAuth`RBAC 管理日志等
- **接口鉴权机制重要**中间件按请求方法+路径 `admin_menu`type=2 path `"METHOD /path"``{id}` 为动态段反查所需权限码再校验用户是否拥有**前端无需传 X-Permission**未配置映射的接口一律拒绝
- RBAC 管理`/admins``/roles``/menus/tree`权限码 `system:admin:*``system:role:*``system:menu:*`
- 日志监控`GET /log/files``GET /log/tail?file=&lines=&keyword=`权限码 `monitor:log:*`file 参数防路径穿越
- 新增受保护接口三步 `api/admin/v1/<xxx>.go` Req/Res `internal/controller/admin/<xxx>.go` 加方法 `admin_menu` type=2 `permission` 填权限码`path` `"METHOD /路径"` 映射
- 迁移脚本`003_schema_ext.sql`admin_menu icon/component/hidden`004_seed.sql`初始 admin/admin123super_admin22 条菜单`005_menu_paths.sql`按钮-接口路径映射
## 开放接口api/open/v1前端调用与命名规则 ## 开放接口api/open/v1前端调用与命名规则
- **命名决策**公共接口前缀用 **open**不用 common理由`common` 语义偏"内部公共代码"`open` 是开放接口业界惯例支付宝 /open/api 更能表达"对外暴露、无鉴权"同属"公开"语义的备选还有 `public` - **命名决策**公共接口前缀用 **open**不用 common理由`common` 语义偏"内部公共代码"`open` 是开放接口业界惯例支付宝 /open/api 更能表达"对外暴露、无鉴权"同属"公开"语义的备选还有 `public`

View File

@ -153,3 +153,38 @@
### 待办与风险 ### 待办与风险
- 无新增风险后续新增子功能统一按 `tools/<name>/<name>.go` 建文件 - 无新增风险后续新增子功能统一按 `tools/<name>/<name>.go` 建文件
---
## 追加22:40后台管理功能开发后端完成
### 请求
使用 goframe-v2 开发登录菜单按钮级权限等常规后台管理功能前端 vben5 对接backend 动态路由模式登录后台后开发服务器日志管理功能
### 变更commit 8fdb25e35 文件
- `manifest/sql/003_schema_ext.sql`admin_menu `icon/component/hidden`
- `manifest/sql/004_seed.sql`初始 admin/admin123super_admin 角色22 条菜单含按钮权限码角色/用户绑定
- `manifest/sql/005_menu_paths.sql`按钮行 path `"METHOD /路径"` 接口映射{id} 动态段
- auth`/auth/info``/auth/codes`路由拆分公开(NewAuth)/仅登录(NewProfile)/受保护(New)三组新增 `AdminAuthOnly` 中间件
- menu`/menu/routes` 返回 vben backend 动态路由树按角色过滤+排序
- RBAC`/admins``/roles``/menus/tree` CRUD含角色绑定重置密码菜单授权删除校验子节点
- log`/log/files``/log/tail`反向块扫描读尾部+关键词过滤+路径穿越防护
- 安全接口鉴权改为方法+路径权限码自动映射`PermissionForPath`+`matchRoute`**不再信任前端 X-Permission**
- 修复gf v2.10.2 `${ENV}` 不自动替换 cmd.injectEnv 注入MySQL driver blank import `contrib/drivers/mysql/v2`gtime Format(PHP) Layout(Go) 区分再次踩坑CreatedAt 输出 layout 原样
- `log/` 加入 .gitignoreconfig.dev.yaml logger.path=log日志落盘
### 决策与理由
- **接口鉴权用路径映射而非 X-Permission**原实现用户可用自己拥有的任意权限码访问任意受保护接口越权漏洞改为后端按 method+path admin_menu 映射未配置即拒绝
- **受保护接口分三层**公开 loginAdminAuthOnlyinfo/codes/routes登录即可取vben 登录后立即调用AdminAuthRBAC/日志
- **admin_menu 按钮行 path 存接口映射** type=1 菜单行的路由 path 语义区分开避免冲突
- **gf gen dao 不可用**本机 gf CLI 为公司定制版生成 com.lib.gf.v2 import与项目官方 gf 不兼容本次手动补齐 admin_menu 三字段entity/do/table后续换官方 CLI 或脚本化处理
### 待办与风险
- **前端对接vben5**admin.xpcool.com 需配置 accessMode=backend登录/信息/权限码/动态路由对接系统管理三页面+日志监控页面按钮级 v-access:code
- 冒烟测试已建 opuser/op 测试角色可清理
- 菜单管理接口的 assignMenu 权限码暂无独立接口角色授权在 role update 中完成保留扩展位
- 生产环境 JWT_SECRET/DB_DSN 必须通过环境变量提供${ENV} 不会自动替换