1.6 更新日志
概述
本项目遵循语义化版本演进,重大架构决策与约定变更记录于此。详细提交历史见 Gitee 仓库。
v4.0.0(2026-10 · 当前版本)
GoFrame+ElementPlus 版本首个正式封板版本,25 张业务表 → 27 个模块完整落地。
架构定稿
- 主键统一 int 数据库自增(2026-10-13 定稿):禁用雪花算法(
utility/id已删除);新增后用result.LastInsertId()回读;hooks 不填 id - 目录平铺结构:api/v1、controller、logic、service 均为单包,每模块一个 snake_case 文件,同包 init 自动注册
- 中间件链定稿:CORS → Response → RateLimit → Demo → JWT → Tenant → OperationLog,权限校验在 Bind 包装层完成
- 筛选对齐三件套(2026-10-14 定稿):前端 querySchemas.ts ↔ XxxPageReq 同名驼峰字段 ↔ spec 声明(LikeFields/EqFields),导出与列表同套筛选
- URL 约定:全部路由统一
/api前缀,无/v1版本段;公开白名单三处一致(public.go / gmeta public 标签 / router.go 手工注册)
功能清单
- 认证与安全:JWT 双令牌(access 2h + refresh 7d 轮换)、jti 黑名单、图形验证码(TTF 渲染 + SVG 降级)、bcrypt 双重加盐、固定窗口限流(认证入口独立阈值)、演示模式、受信代理 IP
- 权限体系:RBAC(user→role→menu 权限节点)、gmeta permission 标签、前端权限指令、超管通配权限
*:*:* - 多租户:9 张租户级表自动隔离(hooks.tenantTables)、租户状态/过期中间件校验(60s 缓存)、事务化开户、用户上限
- 数据权限:role.data_scope 四档(全部/本部门及以下/本部门/仅本人),
ApplyDataScope("dept_id")一行声明接线 - CRUD 基座:ModuleSpec 泛型(筛选/排序/树形/字典/文件/富文本/唯一校验/钩子/数据权限)
- 监控体系:在线用户(双令牌拉黑强退)、服务器监控、缓存监控(Redis INFO)、操作日志(异步批量落库 + 脱敏)、登录日志(ip2region 归属地)
- 定时任务:数据驱动调度器、HTTP/本地处理器双形态、三种执行策略、多实例执行锁(job🔒{id})、内置 LogClean/CleanTemp
- 代码生成器:HTTP + CLI 双入口、后端八件套 + 前端五件产出、菜单/权限/字典/路由幂等副作用、覆盖策略保护
- 整库迁移器:五方言互迁(内省 → IR → 方言 DDL → 分批搬运 → 序列修复 → 行数校验)
- 文件体系:两段式上传(temp → 正式目录)、富文本 [IMG_URL] 持久化契约、临时目录每日 03:30 自动清理
工程保障
- 静态门禁:
go vet+gofmt检查;前端 ESLint + Prettier + Stylelint + commitlint - 测试:sqlite 集成测试 + hooks MySQL 集成测试
- 回归:hack/golden 黄金样本接口响应比对(录制参数带 pageSize=3 等)
- OpenAPI:gmeta 补注册进 gf goai,
/api.json原生输出 +/swagger本地 Redoc 页面
历史版本
| 版本 | 说明 |
|---|---|
| v4.0.0-beta | 27 模块全量实现,架构决策落地(主键自增、中间件链、筛选三件套定稿) |
| v4.0.0-alpha | 项目初始化:GoFrame 骨架 + 核心模块(auth/user/role/menu)+ 前端工程搭建 |
破坏性变更记录
变更须知
- 2026-10-13:主键策略由雪花算法改为数据库自增——历史数据的 id 语义不变,但新增代码禁止依赖
utility/id(包已删除)。 - URL 全部去版本段——
/api/v1/*形式的旧链接失效,前端 baseURL 为/api。 - 前端登录响应字段为
access_token/refresh_token/expires_in/token_type(下划线),与全局驼峰约定不同,这是 OAuth2 惯例,禁止"修正"。