Some checks failed
CI Check / check (push) Has been cancelled
- 创建统一的Modal组件,采用Apple风格设计 - 实现毛玻璃效果、圆角、动画和细边框描边 - 修复弹窗打开时背景滚动问题 - 修复分类管理中重复卡片和数组字符串显示问题 - 优化选项解析逻辑,添加去重和过滤机制
5.2 KiB
5.2 KiB
模板功能改进说明
✅ 已完成的修改
1. 预制模板隐藏状态同步到首页
问题:预制模板隐藏后,首页的 tag 不会一起隐藏
解决方案:
- 将隐藏状态从
localStorage迁移到数据库SystemSettings表 - 新增
hiddenBuiltinTemplates字段(String 类型,存储 JSON 数组) - 修改
/api/templates和/api/upload-templatesAPI,读取隐藏状态并过滤 - 修改
TemplateManager组件,从数据库读取和保存隐藏状态
修改文件:
prisma/schema.prisma- 添加hiddenBuiltinTemplates字段app/api/system-settings/route.ts- 支持读取和更新隐藏状态app/api/templates/route.ts- 过滤隐藏的预制模板app/api/upload-templates/route.ts- 过滤隐藏的预制模板app/admin/_components/TemplateManager.tsx- 从数据库读取/保存隐藏状态
数据库迁移:
⚠️ 重要说明:数据库迁移只需要执行一次(添加 hiddenBuiltinTemplates 字段),之后隐藏/显示预制模板的操作不需要再次迁移。
-
第一次:运行迁移添加字段(已完成)
npx prisma db push # 已执行 -
之后的操作:隐藏/显示预制模板只是更新
SystemSettings表中的数据值,不是修改数据库结构,所以不需要迁移。这就像更新其他系统设置(如站点名称、Logo等)一样,只是数据更新,不是结构修改。
2. 预览模板样式同步到上传素材表单
问题:预览面板和实际上传表单的样式不一致
解决方案:
- 将预览面板的样式类应用到上传表单
- 统一使用
rounded-2xl、渐变背景、阴影等样式 - 统一必填字段的标识样式(紫色渐变标签)
修改文件:
components/UploadModal.tsx- 同步预览面板的样式类
样式改进:
- 输入框:
rounded-2xl、渐变背景、阴影效果 - 必填标签:紫色渐变标签(
from-purple-500 to-indigo-600) - 标签样式:
text-xs font-semibold、tracking-tight - 过渡动画:
transition-all duration-300 ease-[cubic-bezier(0.4,0,0.2,1)]
3. 自定义模板中隐藏"素材类型"字段
问题:自定义模板的目的是灵活应对不同客户群体,不需要"素材类型"字段
解决方案:
- 在保存自定义模板时,自动过滤掉
materialType字段 - 在 API 返回自定义模板时,过滤掉
materialType字段 - 在上传表单渲染时,过滤掉
materialType字段 - 预制模板仍然保留
materialType字段(用于兼容老系统)
修改文件:
app/admin/_components/TemplateManager.tsx- 保存时过滤materialTypeapp/api/upload-templates/route.ts- 返回时过滤materialTypecomponents/UploadModal.tsx- 渲染时过滤materialType
逻辑说明:
- 预制模板:保留
materialType字段(用于兼容老系统数据) - 自定义模板:自动隐藏
materialType字段(更灵活)
📋 数据库迁移
⚠️ 重要说明:迁移只需要执行一次
数据库迁移只需要执行一次(添加 hiddenBuiltinTemplates 字段),之后隐藏/显示预制模板的操作不需要再次迁移。
迁移内容
在 SystemSettings 表中添加:
hiddenBuiltinTemplates(String?, nullable) - 存储隐藏的预制模板键名数组(JSON 格式)
迁移状态
✅ 已完成:已通过 npx prisma db push 添加字段到数据库
工作原理
- 第一次:添加
hiddenBuiltinTemplates字段到SystemSettings表(结构修改,需要迁移) - 之后:隐藏/显示预制模板时,只是更新这个字段的值(数据更新,不需要迁移)
- 调用
/api/system-settingsPUT 接口 - 更新
hiddenBuiltinTemplates字段的 JSON 值 - 就像更新其他系统设置一样,只是数据更新,不是结构修改
- 调用
这完全符合项目主旨:字段已经存在,只是在使用它来存储配置数据。
🎯 功能验证
1. 验证预制模板隐藏同步
- 进入模板管理
- 隐藏一个预制模板
- 刷新首页
- 检查首页的 tag 是否也隐藏了
2. 验证样式同步
- 进入模板管理
- 预览一个模板
- 打开上传素材表单
- 选择相同的模板
- 对比样式是否一致
3. 验证素材类型字段隐藏
- 创建一个自定义模板
- 添加字段(包括素材类型)
- 保存模板
- 在上传素材时选择该模板
- 检查是否看不到"素材类型"字段
⚠️ 注意事项
- 数据库迁移:✅ 已完成,只需要执行一次(添加字段)。之后隐藏/显示预制模板的操作只是更新数据,不需要再次迁移。
- 向后兼容:预制模板仍然包含
materialType字段,不影响老系统 - 样式一致性:预览和实际上传表单现在使用相同的样式类
- 数据更新 vs 结构修改:
- 隐藏/显示预制模板 = 数据更新(更新
hiddenBuiltinTemplates字段的值) - 不需要数据库迁移,就像更新站点名称、Logo 等系统设置一样
- 隐藏/显示预制模板 = 数据更新(更新
更新日期: 2025-11-23 状态: ✅ 已完成