-- 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='系统配置表';
