Skip to content

以下是基于 aigc 数据库文档核心业务模块(管理员权限、AIGC 生成、智能体交互、分镜项目)的 Mermaid ER 图代码,按业务模块拆分图表,确保关系清晰且与文档表结构完全匹配:

文件位置与维护说明

  • ER 图文件路径:docs/database/MERMAID-ER.md
  • 关联数据库文档:docs/database/README.md
  • 维护流程:先更新迁移(php think migrate:create/run/rollback)→ 验证表结构 → 同步更新本 ER 图并提交。
  • 预览提示:支持 Mermaid 的 Markdown 预览器可直接渲染;在线预览可使用 mermaid.live。

1. 管理员权限模块表关系图

(覆盖 sets_admin_* 系列表与全局路由表的关联)

mermaid
erDiagram
    %% 主表:管理员用户表
    sets_admin_user {
        int id PK "自增主键"
        int admin_role_id FK "关联角色ID"
        varchar account "登录账号"
        varchar password "加密密码"
        varchar name "用户称呼"
        tinyint status "1有效/0禁用"
        int create_time "创建时间戳"
    }

    %% 主表:管理员角色表
    sets_admin_role {
        int id PK "自增主键"
        int parent "父角色ID(0为顶级)"
        varchar name "角色名"
        text remark "角色备注"
        tinyint status "1正常/0禁用"
    }

    %% 中间表:权限关联表(角色-路由)
    sets_admin_access {
        int id PK "自增主键"
        int admin_role_id FK "关联角色ID"
        int global_application_route_id FK "关联路由ID"
    }

    %% 主表:全局应用路由表(权限控制基础)
    sets_global_application_route {
        int id PK "自增主键"
        int global_application_id "关联应用ID"
        varchar url "路由规则"
        tinyint type_client "0通用/1用户端/2管理端"
        tinyint authorized "1需登录/0无需登录"
    }

    %% 主表:管理员菜单表(关联路由)
    sets_admin_menu {
        int id PK "自增主键"
        int global_application_route_id FK "关联路由ID"
        int parent "父菜单ID(0为顶级)"
        varchar title "菜单显示标题"
        varchar path "菜单路由路径"
        tinyint status "1启用/0禁用"
    }

    %% 表关系定义
    sets_admin_user ||--o{ sets_admin_role : "N对1(多用户对应1个角色)"
    sets_admin_role ||--o{ sets_admin_access : "1对N(1个角色关联多路由权限)"
    sets_global_application_route ||--o{ sets_admin_access : "1对N(1个路由被多角色关联)"
    sets_global_application_route ||--o{ sets_admin_menu : "1对N(1个路由对应1个菜单)"

2. AIGC 生成核心模块表关系图

(覆盖图片生成、封面生成、视频合成相关表)

mermaid
erDiagram
    %% 主表:用户表(生成操作主体)
    sets_member {
        int id PK "自增主键"
        varchar mobile "手机号"
        varchar nick_name "用户昵称"
        tinyint status "1有效/0禁用"
    }

    %% 主表:图片主题表(生成素材分类)
    sets_image_topic {
        int id PK "自增主键"
        int image_type_id FK "关联图片类型ID"
        varchar name "主题名"
        text prompt "生成提示词"
        text negative_prompt "反向提示词"
        varchar model "生成模型(如 poster-from-oss-video)"
        decimal aspect_ratio "长宽比(如 9:16→0.5625)"
        tinyint status "1可用/0不可用"
    }

    %% 主表:图片类型表(主题的上级分类)
    sets_image_type {
        int id PK "自增主键"
        varchar name "类型名"
        varchar cover "类型封面URL"
        tinyint status "1可用/0不可用"
    }

    %% 表:图片生成记录表(生成操作日志)
    sets_image_generate_record {
        int id PK "自增主键"
        int member_id FK "关联用户ID"
        int image_topic_id FK "关联主题ID"
        varchar prompt "生成提示词"
        varchar status "任务状态(success/failed)"
        varchar oss_url "生成结果URL"
        int create_time "创建时间戳"
    }

    %% 表:图片素材表(生成结果存储)
    sets_image {
        int id PK "自增主键"
        int image_topic_id FK "关联主题ID"
        varchar key "OSS存储Key"
        varchar image_url "访问URL"
        varchar prompt "生成提示词"
        int is_illegal "0待查/1违规"
    }

    %% 表:AIGC封面生成记录表
    sets_aigc_cover_record {
        int id PK "自增主键"
        varchar actor_type "操作主体类型(member/admin)"
        int actor_id "操作主体ID"
        varchar video_key "原视频OSS Key"
        varchar cover_key "最终海报OSS Key"
        int status "1成功/0失败"
    }

    %% 表:AIGC视频合成表(ICE)
    sets_aigc_ice {
        int id PK "自增主键"
        int storyboard_id FK "关联分镜项目ID"
        int synthesis_type "0单帧/1整片"
        varchar video_url "合成视频URL"
        int status "1草稿/2处理中/3成功"
        decimal duration "视频时长(秒)"
    }

    %% 表关系定义
    sets_image_type ||--o{ sets_image_topic : "1对N(1个类型包含多主题)"
    sets_image_topic ||--o{ sets_image_generate_record : "1对N(1个主题关联多生成记录)"
    sets_image_topic ||--o{ sets_image : "1对N(1个主题包含多素材)"
    sets_member ||--o{ sets_image_generate_record : "1对N(1个用户发起多生成任务)"
    sets_aigc_ice }o--|| sets_storyboard : "N对1(多合成任务关联1个分镜项目)"

3. 智能体(Agent)交互模块表关系图

(覆盖智能体定义、会话、消息相关表)

mermaid
erDiagram
    %% 主表:智能体基础信息表
    sets_agent {
        int id PK "自增主键"
        varchar name "智能体名称"
        varchar did "DID生成的agent_id"
        varchar coze_bot_id "Coze生成的bot_id"
        varchar description "智能体描述"
        int image_topic_id FK "关联图片主题ID"
    }

    %% 主表:用户表(交互主体)
    sets_member {
        int id PK "自增主键"
        varchar nick_name "用户昵称"
        varchar avatar "用户头像"
    }

    %% 表:智能体会话表(会话容器)
    sets_agent_conversation {
        int id PK "自增主键"
        int agent_id FK "关联智能体ID"
        int member_id FK "关联用户ID"
        varchar coze_id "Coze会话ID"
        varchar message "消息列表(JSON)"
        int create_time "创建时间戳"
    }

    %% 表:智能体会话聊天表(会话详情)
    sets_agent_conversation_chat {
        int id PK "自增主键"
        int agent_id FK "关联智能体ID"
        int member_id FK "关联用户ID"
        varchar conversation_id "Coze会话ID"
        varchar chat_id "Coze聊天ID"
        varchar status "会话状态(running/success)"
        int completed_at "会话完成时间戳"
    }

    %% 表:智能体会话消息表(单条消息)
    sets_agent_conversation_message {
        int id PK "自增主键"
        int agent_id FK "关联智能体ID"
        int member_id FK "关联用户ID"
        varchar conversation_id FK "关联会话ID"
        varchar content "消息内容"
        varchar role "角色(user/assistant)"
        varchar type "消息类型(question/answer)"
        int create_at "消息创建时间戳"
    }

    %% 表关系定义
    sets_agent ||--o{ sets_agent_conversation : "1对N(1个智能体关联多会话)"
    sets_member ||--o{ sets_agent_conversation : "1对N(1个用户发起多会话)"
    sets_agent_conversation ||--o{ sets_agent_conversation_chat : "1对N(1个会话包含多聊天记录)"
    sets_agent_conversation ||--o{ sets_agent_conversation_message : "1对N(1个会话包含多消息)"
    sets_agent }o--|| sets_image_topic : "N对1(多智能体关联1个图片主题)"

4. 分镜项目与发布模块表关系图

(覆盖分镜项目、分镜项、发布记录相关表)

mermaid
erDiagram
    %% 主表:用户表(分镜创建主体)
    sets_member {
        int id PK "自增主键"
        int status "1有效/0禁用"
    }

    %% 主表:分镜项目表(核心容器)
    sets_storyboard {
        int id PK "自增主键"
        int member_id FK "关联用户ID"
        int image_topic_id FK "关联图片主题ID"
        varchar title "分镜项目标题"
        int status "0草稿/1生成中/2已生成"
        int version "分镜版本号"
    }

    %% 表:分镜项表(项目拆分单元)
    sets_storyboard_item {
        int id PK "自增主键"
        int storyboard_id FK "关联分镜项目ID"
        int number "分镜序号"
        longtext description "分镜描述"
        longtext line "台词文本"
        longtext prompt "生成提示词"
        int follow_global "1跟随全局主题/0不跟随"
    }

    %% 表:分镜历史表(版本记录)
    sets_storyboard_history {
        int id PK "自增主键"
        int storyboard_id FK "关联分镜项目ID"
        int member_id FK "关联用户ID"
        int version "分镜版本号"
        longtext history_list "历史记录(JSON)"
    }

    %% 表:分镜发布记录表(发布操作日志)
    sets_storyboard_publish_record {
        int id PK "自增主键"
        int storyboard_id FK "关联分镜项目ID"
        int member_id FK "关联用户ID"
        varchar platform "发布平台(如douyin)"
        varchar status "发布状态(success/failed)"
        varchar external_id "平台返回发布ID"
    }

    %% 表:AIGC发布任务表(全局发布管理)
    sets_aigc_publish_runs {
        int id PK "自增主键"
        varchar storyboard_id "关联分镜项目ID"
        varchar status "任务状态(running/success)"
        varchar video_url "发布视频URL"
        datetime created_at "创建时间"
    }

    %% 表关系定义
    sets_member ||--o{ sets_storyboard : "1对N(1个用户创建多分镜项目)"
    sets_storyboard ||--o{ sets_storyboard_item : "1对N(1个项目包含多分镜项)"
    sets_storyboard ||--o{ sets_storyboard_history : "1对N(1个项目包含多版本历史)"
    sets_storyboard ||--o{ sets_storyboard_publish_record : "1对N(1个项目发起多发布记录)"
    sets_storyboard ||--o{ sets_aigc_publish_runs : "1对N(1个项目关联多发布任务)"
    sets_image_topic ||--o{ sets_storyboard : "1对N(1个主题关联多分镜项目)"

使用说明

  1. 渲染方式:将上述代码复制到支持 Mermaid 的 Markdown 编辑器(如 Typora、语雀、GitHub)中,即可自动生成可视化 ER 图。
  2. 关系标注
    • 符号含义:||--o{ 表示“一对多”,}o--|| 表示“多对一”,||--|| 表示“一对一”。
    • 括号内说明:明确字段类型(PK 主键/FK 外键)、业务含义及状态值(如“1 有效/0 禁用”)。
  3. 业务对齐:所有关系严格遵循文档中表结构的外键关联(如 sets_agent_conversation.agent_id 关联 sets_agent.id),无额外虚构关系。