feat: 模板预设机制 - 4 套模板各绑一组 JQK/Joker + 背景

经典 → 古典宫廷(王子/皇后/国王/小丑)
现代 → 现代人物(小孩/女青年/男青年/小丑鱼)
卡通 → 现代人物 + 暖色调 + 圆边框
复古 → 简笔符号 + 深色边框 + 米色背景

后端:
- CardTemplate 新增 theme_id(绑预设主题)+ design_override(背景/边框/字体等覆盖)
- 新增 apply_template_to_project():把 LibraryAsset 复制到项目素材 + 写 design
- 创建项目时支持传 template_id,自动套用整套预设
- 模板列表 API 附加 library 预览(4 张图缩略)

前端 Home.vue:
- 4 套模板卡片每张带 4 张缩略图(来自 library 预览)
- 点模板一键创建项目 + 跳转到编辑器
- '新建空白项目' 保留为独立按钮

init_system 同步:4 套模板配置 + 应用到示例项目
This commit is contained in:
Developer
2026-06-02 15:08:37 +08:00
parent 5ca000b8ab
commit 7417a4a893
7 changed files with 309 additions and 78 deletions

View File

@@ -1,8 +1,9 @@
from django.db import models
import uuid
class CardTemplate(models.Model):
"""扑克牌模板模型"""
"""扑克牌模板模型(经典/现代/卡通/复古 4 套预设)"""
id = models.CharField(max_length=50, primary_key=True) # 'classic', 'modern', etc.
name = models.CharField(max_length=100)
description = models.TextField()
@@ -15,7 +16,15 @@ class CardTemplate(models.Model):
color_diamond = models.CharField(max_length=20, default='#FF0000')
color_background = models.CharField(max_length=20, default='#FFFFFF')
# 默认素材路径JSON
# 模板绑定的预设主题(指向 LibraryAsset.theme_id
# 例如 'classical' 模板 → 使用 LibraryAsset.theme_id='classical' 的所有素材
theme_id = models.CharField(max_length=50, blank=True, default='classical')
# 模板级 design 覆盖background_color / border_color / pip_size_ratio 等
# 不填则走全局默认
design_override = models.JSONField(default=dict)
# 默认素材路径JSON保留字段兼容老逻辑
default_assets = models.JSONField(default=dict)
created_at = models.DateTimeField(auto_now_add=True)