跳转至

画布 / 资产 / Chat / Word

源码:src/backend/db/models/canvas_project.pyuser_asset.pychat_session.pyword_session.py 返回 总览 字段表格式:字段 | 中文名 | 类型 | 可空 | 作用

ER

erDiagram
  users ||--o{ canvas_folders : owns
  users ||--o{ canvas_projects : owns
  users ||--o{ user_assets : owns
  users ||--o{ chat_sessions : owns
  canvas_folders ||--o{ canvas_projects : groups
  word_sessions ||--o{ word_prompt_items : items
  product_sub_types ||--o{ word_sessions : optional
  fabric_materials ||--o{ word_sessions : optional
  product_categories ||--o{ word_sessions : optional
  product_styles ||--o{ word_sessions : optional

canvas_folders — 画布文件夹

用户维度单层文件夹,无嵌套。删除文件夹时,关联项目的 folder_id 由 FK SET NULL 置空(归入「未分组」),不连带删除项目。 约束UniqueConstraint(user_id, name)uq_canvas_folders_user_name

字段 中文名 类型 可空 作用
id 文件夹 ID UUID NO 主键
user_id 用户 ID UUID NO FK→users.id CASCADE;有索引;文件夹归属用户
name 文件夹名称 String(100) NO 展示名;与 user_id 复合唯一
sort_order 排序权重 Integer NO 同用户下列表排序;默认 0
created_at 创建时间 timestamptz NO 行创建时间
updated_at 更新时间 timestamptz NO 行最后修改时间

canvas_projects — 画布文档

每个项目对应一份完整 CanvasDocument JSON(节点、边、assets、viewport 等)。revision 为乐观锁:更新时需携带期望版本,冲突返回 409。

字段 中文名 类型 可空 作用
id 项目 ID UUID NO 主键
user_id 用户 ID UUID NO FK→users.id CASCADE;有索引;项目归属用户
title 项目标题 String(200) NO 列表展示名;默认「未命名项目」
document 画布文档 JSONB NO 完整 CanvasDocument;画布内资产存于 document.assets
revision 修订版本 Integer NO 乐观锁版本号;创建为 0,每次更新 +1;冲突返回 409
thumbnail_key 缩略图键 String(500) YES 最近一次缩略图 OSS object_key;列表预览用
folder_id 文件夹 ID UUID YES FK→canvas_folders.id SET NULL;有索引;NULL=未分组
deleted_at 删除时间 timestamptz YES 软删标记;非空表示已删除
created_at 创建时间 timestamptz NO 行创建时间
updated_at 更新时间 timestamptz NO 行最后修改时间

user_assets — 跨画布用户资产

用户资产库(图片/视频/文本),可跨画布复用;删除画布不影响本表。object_key 指向 OSS,下载 URL 由 Storage 服务实时签发。

字段 中文名 类型 可空 作用
id 资产 ID UUID NO 主键
user_id 用户 ID UUID NO FK→users.id CASCADE;有索引;资产归属用户
name 资产名称 String(200) NO 展示名
asset_type 资产类型 String(20) NO image / video / text
mime_type MIME 类型 String(100) NO image/pngvideo/mp4text/plain
object_key OSS 对象键 String(500) NO 存储对象路径;下载 URL 运行时签发
size 文件大小 BigInteger NO 字节数;默认 0
width 宽度 Integer YES 图片/视频像素宽
height 高度 Integer YES 图片/视频像素高
text_content 文本内容 Text YES text 且体积较小时存原文,供列表预览
content_hash 内容哈希 String(128) YES 去重/完整性校验用哈希
deleted_at 删除时间 timestamptz YES 软删标记;非空表示已删除
created_at 创建时间 timestamptz NO 行创建时间
updated_at 更新时间 timestamptz NO 行最后修改时间

chat_sessions — Chat↔Hermes 归属

聊天正文由 Hermes SessionDB 持有;本表仅做 JWT 用户归属与侧栏元数据。 约束hermes_session_id 唯一 → uk_chat_sessions_hermes_session_id

字段 中文名 类型 可空 作用
id 会话 ID UUID NO 主键
user_id 用户 ID UUID NO FK→users.id CASCADE;有索引;会话归属用户
hermes_session_id Hermes 会话 ID String(128) NO 唯一;对应请求头 X-Hermes-Session-Id
title 会话标题 String(200) NO 侧栏主标题;默认「新建对话」
subtitle 会话副标题 String(200) NO 侧栏副标题;默认「图现AI助手」
deleted_at 删除时间 timestamptz YES 软删标记;非空表示已从侧栏移除
created_at 创建时间 timestamptz NO 行创建时间
updated_at 更新时间 timestamptz NO 行最后修改时间

word_sessions — Word 上传解析会话

每次上传一个 .docx 生成一条记录,关联产品维度与模板类型;解析出的图片归入图模板,提示词供后续测试。

字段 中文名 类型 可空 作用
id 会话 ID UUID NO 主键
original_filename 原始文件名 String(255) NO 上传时的 .docx 文件名
template_type 模板类型 Enum word_session_template_type NO main / detail / replica
product_sub_type_id 产品子类 ID UUID YES FK→product_sub_types.id CASCADE;有索引;主图/详情新链路可空
fabric_material_id 面料材质 ID UUID YES FK→fabric_materials.id CASCADE;有索引;无材质叶子时可空
product_category_id 产品大类 ID UUID YES FK→product_categories.id CASCADE;有索引;主图/详情新链路
style_id 风格 ID UUID YES FK→product_styles.id CASCADE;有索引;主图/详情新链路
image_template_id 图模板 ID UUID YES 有索引;无 FK;自动匹配/创建的目标图模板
prompt_count 提示词数量 SmallInteger NO 本会话解析出的提示词条数;默认 0
image_count 图片数量 SmallInteger NO 本会话解析出的图片数(含未挂到提示词的);默认 0
created_at 创建时间 timestamptz NO 行创建时间

word_prompt_items — Word 解析条目

字段 中文名 类型 可空 作用
id 条目 ID UUID NO 主键
session_id 会话 ID UUID NO FK→word_sessions.id CASCADE;有索引;所属上传会话
prompt_index 提示词序号 SmallInteger NO 1-based 顺序号
label 原始标签 String(50) NO Word 中的标签文案,如「第一张」
prompt_text 提示词正文 Text NO 解析出的提示词内容
reference_image_key 参考图键 String(500) YES 关联样图 OSS object_key(转 WebP 后)
template_image_id 模板图片 ID UUID YES 无 FK;已归入图库时填入 template_images.id
created_at 创建时间 timestamptz NO 行创建时间