-- yh_web 建表语句(MySQL 5.7+ / MariaDB 10.2+) -- 与当前功能及线上已有结构对应,便于迁移或对照。主键使用 VARCHAR(24) 与 MongoDB ObjectID 字符串形式兼容。 SET NAMES utf8mb4; -- ------------------------------- -- 站点 -- ------------------------------- CREATE TABLE IF NOT EXISTS `sites` ( `id` VARCHAR(24) NOT NULL COMMENT '主键,与 MongoDB ObjectID 字符串一致', `name` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '站点名称', `domain` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '域名', `description` TEXT COMMENT '描述', `created_at` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_created_at` (`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='站点表'; -- ------------------------------- -- 网页(属于某站点) -- ------------------------------- CREATE TABLE IF NOT EXISTS `pages` ( `id` VARCHAR(24) NOT NULL COMMENT '主键', `site_id` VARCHAR(24) NOT NULL DEFAULT '' COMMENT '站点ID', `slug` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '路径标识 index, about, ...', `title` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '标题', `type` VARCHAR(32) NOT NULL DEFAULT 'page' COMMENT '类型 homepage, page', `content` LONGTEXT COMMENT 'HTML 或 JSON 字符串', `updated_at` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_site_slug` (`site_id`, `slug`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='网页表'; -- ------------------------------- -- 站点资源/上传文件 -- ------------------------------- CREATE TABLE IF NOT EXISTS `site_assets` ( `id` VARCHAR(24) NOT NULL COMMENT '主键', `site_id` VARCHAR(24) NOT NULL DEFAULT '' COMMENT '站点ID', `name` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '文件名/显示名', `file_path` VARCHAR(512) NOT NULL DEFAULT '' COMMENT '相对路径', `size` BIGINT NOT NULL DEFAULT 0 COMMENT '字节数', `content_type` VARCHAR(128) NOT NULL DEFAULT '' COMMENT 'MIME 类型', `created_at` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_site_id` (`site_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='站点资源表'; -- ------------------------------- -- 用户 -- ------------------------------- CREATE TABLE IF NOT EXISTS `users` ( `id` VARCHAR(24) NOT NULL COMMENT '主键', `username` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '用户名', `mobile` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '手机号', `email` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '邮箱', `password` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '密码哈希', `role` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '角色名', `role_id` INT NOT NULL DEFAULT 1 COMMENT '9527=超级管理员 1=普通用户', `is_beta` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否体验用户', `trial_start_date` VARCHAR(16) NOT NULL DEFAULT '' COMMENT '试用开始日期', `trial_end_date` VARCHAR(16) NOT NULL DEFAULT '' COMMENT '试用结束日期', `last_login` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '最后登录时间', `llm` VARCHAR(64) NOT NULL DEFAULT '' COMMENT 'LLM 配置', PRIMARY KEY (`id`), UNIQUE KEY `uk_username` (`username`), KEY `idx_mobile` (`mobile`), KEY `idx_email` (`email`), KEY `idx_role_id` (`role_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表'; -- ------------------------------- -- 工作空间 -- ------------------------------- CREATE TABLE IF NOT EXISTS `workspaces` ( `id` VARCHAR(24) NOT NULL COMMENT '主键', `name` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '名称', `user_id` VARCHAR(24) NOT NULL DEFAULT '' COMMENT '用户ID', `created_at` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_user_id` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='工作空间表'; -- ------------------------------- -- 对话 -- ------------------------------- CREATE TABLE IF NOT EXISTS `conversations` ( `id` VARCHAR(24) NOT NULL COMMENT '主键', `title` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '标题', `user_id` VARCHAR(24) NOT NULL DEFAULT '' COMMENT '用户ID', `workspace_id` VARCHAR(24) NOT NULL DEFAULT '' COMMENT '工作空间ID', `created_at` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '创建时间', `updated_at` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_user_id` (`user_id`), KEY `idx_workspace_id` (`workspace_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='对话表'; -- ------------------------------- -- 消息(统计用,功能上若未实现可先建表) -- ------------------------------- CREATE TABLE IF NOT EXISTS `messages` ( `id` VARCHAR(24) NOT NULL COMMENT '主键', `conversation_id` VARCHAR(24) NOT NULL DEFAULT '' COMMENT '对话ID', `role` VARCHAR(16) NOT NULL DEFAULT '' COMMENT 'role: user/assistant/system', `content` LONGTEXT COMMENT '内容', `created_at` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_conversation_id` (`conversation_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='消息表'; -- ------------------------------- -- 文件(统计用,功能上若未实现可先建表) -- ------------------------------- CREATE TABLE IF NOT EXISTS `files` ( `id` VARCHAR(24) NOT NULL COMMENT '主键', `user_id` VARCHAR(24) NOT NULL DEFAULT '' COMMENT '用户ID', `name` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '文件名', `file_path` VARCHAR(512) NOT NULL DEFAULT '' COMMENT '存储路径', `size` BIGINT NOT NULL DEFAULT 0 COMMENT '字节数', `created_at` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_user_id` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='文件表'; -- ------------------------------- -- 系统配置(键值,_id 为配置键:payment / sms_platform) -- ------------------------------- CREATE TABLE IF NOT EXISTS `system_config` ( `id` VARCHAR(64) NOT NULL COMMENT '配置键 payment, sms_platform 等', `payload` JSON COMMENT '配置内容(支付/短信等)', `updated_at` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '更新时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统配置表';