Skip to content

v3.1.0

Choose a tag to compare

@pollybird pollybird released this 10 Oct 14:10
· 14 commits to main since this release

ZhyCMS v3.1.0 — 数据库迁移插件

新增官方内置插件 db_migrator(默认不启用):在后台把 SQLite 开发库一键迁移到 MySQL / PostgreSQL——目标库建表 → 按外键依赖逐表复制数据(单事务失败整体回滚)→ PostgreSQL 自动重置自增序列 → 同步 Alembic 版本号(重启时不重复执行增量迁移);支持连接测试、目标库非空保护(需显式勾选覆盖)、迁移后立即热切换引擎免重启。同时修复文章批量操作不更新搜索索引的问题,并修复后台用户管理表单字段与业务层脱节导致的多项账号管理异常。无数据库结构变更、无新增 Python 依赖。

Added

  • 数据库迁移插件(db_migrator,官方内置,默认不启用)
    • 后台「插件管理」启用后出现「数据库迁移」菜单(db_migrator:manage 权限门控,不向预设角色默认授权)
    • 迁移流程:目标库建表 → 按拓扑序逐表复制(每批 500 行,单事务失败整体回滚)→ PostgreSQL 重置整型主键序列 → 同步源库 alembic_version 版本号
    • 安全机制:目标库同名表已有数据时拒绝迁移,勾选「覆盖目标库已有数据」才清空重迁;迁移前先测试连通性
    • 生效方式:迁移完成自动落盘 instance/db_config.json(重启生效,删除该文件即可放弃);勾选「迁移后立即切换」免重启即时生效(失败自动回滚配置),并清空整站缓存
  • 测试:本版本周期新增 16 个用例,全量 296 项通过

Fixed

  • 文章批量操作搜索索引不同步:批量发布/撤回/删除/归档/移动/提交审核此前只清栏目缓存、未逐篇更新索引,导致 Whoosh 等索引型后端与数据库状态不一致
  • 后台用户管理表单与业务层脱节:修复「新增账号两次输入密码一致却提示不一致」、新增账号默认禁用、角色未绑定、昵称丢失、重置密码校验失败等问题;非超管无法再通过表单授予超管权限

Notes

  • 升级:v3.0.x → v3.1.0 无数据库结构变更、无新增依赖,覆盖代码重启即可,详见 UPGRADE.md
  • db_migrator 插件默认不启用,现有站点升级后行为无任何变化

ZhyCMS v3.0.0 — 可视化页面构建器

v3.0.0 未单独发布发行版,其更新内容随本发行版一并说明。

新增自研轻量拖拽式页面构建器(原生 HTML5 拖拽 + JSON Schema 组件注册 + iframe 内服务端真实渲染),覆盖首页、单页、列表页、文章详情页四种全页面类型;内置 24 个 Bootstrap4 组件(布局 6 + 基础 8 + 数据 10),支持草稿/发布/修订回滚、中英双语文案、语言白名单与会员可见性、桌面/平板/手机三端预览、全局页面样式设置(背景/页脚/标题色/圆角/边框/阴影)。默认布局三层合并:新建构建页按「当前启用主题 fixture → 核心回退」解析基础布局,再叠加已启用插件贡献的布局片段;轮播图/产品/招聘/教程四个内容型插件启用后新首页开箱即用。插件还可通过 get_builder_widgets() 钩子注册自有组件,插件禁用/卸载时前台静默降级、后台卸载前做布局引用拦截。采用「构建器为主、手写模板永久兜底」双轨策略:只有已发布布局的页面才走构建器,老站升级后零行为变化。数据库结构变更:新增迁移 0009(builder_pages / builder_revisions 两张表)。无 Node 构建链、无新增 Python 依赖。

Added

  • 可视化页面构建器(核心):四作用域(网站首页/单页/列表页/文章详情页);24 个内置组件;编辑器(组件库、iframe 真实主题画布、属性面板、图层树、拖拽排序与嵌套、三端设备切换与全屏预览、CKEditor5 富文本、800ms 防抖自动存草稿);发布工作流(草稿/已发布双版本隔离、修订快照、一键回滚、从默认布局初始化向导、四分组列表与未构建栏目快捷入口);预览与主题适配(8 套主题全部验证可渲染,组件支持主题级覆写)
  • 布局 JSON Schema v1:服务端 allowlist 校验(组件类型/props 白名单/localized 语言键)、最大嵌套深度 8、单页节点上限 300、文档体积上限 256KB;非法草稿/发布返回 400
  • 全局页面样式:layout.styles 页面级背景/页脚配色/标题色/圆角/边框/阴影,服务端白名单生成 CSS,预览与生产共用同一规则
  • 默认布局三层解析:按当前启用主题解析(主题 fixture → 核心回退);第三方上传主题可自带 builder/<scope>.json,上传时同一套校验,非法整包拒绝;8 套官方主题必备 builder/home.json
  • 插件贡献默认布局片段:PluginBase.get_builder_layouts() 自动扫描 builder/<scope>.json,启用强校验、撞 id 自动重写、卸载同步清理;只做一次性快照,已有草稿/已发布页绝不被改写
  • 四内容型插件开箱即用:banner 新增 banner-hero 首屏轮播组件;product/recruit/tutorial 各新增数据组件与首页区块
  • 多语言与可见性:文本类 props 支持 {zh, en} 多值并按当前语言回退;节点支持语言白名单与会员限定
  • 插件联动:get_builder_widgets() 注册自有组件;插件卸载前若仍有页面引用其组件则拒绝卸载并列出引用页面
  • 权限与审计:新增权限点 builder:manage(content_auditor/content_editor)与 builder:publish(仅 content_auditor);创建/发布/回滚/删除写入审计日志
  • 文档:新增 docs/PAGE_BUILDER.md;wiki.html、SECURITY.md、UPGRADE.md 同步 v3.0.0
  • 测试:新增 139 个用例,全量 280 项通过

Changed

  • 前台首页/单页/列表页/文章详情页视图接入双轨:存在已发布构建布局时走构建器渲染(缓存键仍含分页/语言/主题),无布局时渲染既有手写模板
  • 侧边栏新增「页面构建」一级菜单(受 builder:manage 权限门控)

Notes

  • 升级:v2.6.x → v3.0.0 需执行迁移 0009(页面构建器两张表),无新增依赖;升级后所有页面默认仍走手写模板,在「页面构建」中创建并发布布局后才切换到构建器
  • 不做 header/footer/导航可视化,不提供独立落地页;构建器只接管内容区
  • 富文本编辑器复用既有自托管 CKEditor5;图片上传复用 /admin/upload