gengx
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
-- AI Chat Database Schema
|
||||
SET NAMES utf8mb4;
|
||||
CREATE DATABASE IF NOT EXISTS ai_chat DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
USE ai_chat;
|
||||
|
||||
@@ -58,6 +59,23 @@ CREATE TABLE IF NOT EXISTS users (
|
||||
FOREIGN KEY (membership_level_id) REFERENCES membership_levels(id)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- 一次性注册邀请码;指定 department_id 后,新用户会自动归属到该部门
|
||||
CREATE TABLE IF NOT EXISTS invitation_codes (
|
||||
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
code VARCHAR(32) NOT NULL UNIQUE,
|
||||
department_id INT UNSIGNED NULL,
|
||||
created_by INT UNSIGNED NULL,
|
||||
used_by INT UNSIGNED NULL,
|
||||
status ENUM('active', 'used', 'revoked') NOT NULL DEFAULT 'active',
|
||||
expires_at TIMESTAMP NULL,
|
||||
used_at TIMESTAMP NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
INDEX idx_invitation_status (status),
|
||||
INDEX idx_invitation_department (department_id),
|
||||
INDEX idx_invitation_created (created_at)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- 系统功能开关
|
||||
CREATE TABLE IF NOT EXISTS system_settings (
|
||||
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
@@ -134,6 +152,86 @@ CREATE TABLE IF NOT EXISTS uploads (
|
||||
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- 短剧项目(一个项目可包含多集,角色资产在项目内复用)
|
||||
CREATE TABLE IF NOT EXISTS video_projects (
|
||||
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id INT UNSIGNED NOT NULL,
|
||||
title VARCHAR(160) NOT NULL,
|
||||
idea MEDIUMTEXT NOT NULL,
|
||||
style VARCHAR(100) DEFAULT '电影写实',
|
||||
aspect_ratio VARCHAR(10) NOT NULL DEFAULT '9:16',
|
||||
episode_duration INT UNSIGNED NOT NULL DEFAULT 30,
|
||||
duration_mode VARCHAR(10) NOT NULL DEFAULT 'fixed',
|
||||
quality VARCHAR(20) NOT NULL DEFAULT 'fast',
|
||||
voice_language VARCHAR(20) NOT NULL DEFAULT 'zh-CN',
|
||||
show_subtitles TINYINT(1) NOT NULL DEFAULT 1,
|
||||
character_origin VARCHAR(20) NOT NULL DEFAULT 'east_asian',
|
||||
screen_text_language VARCHAR(20) NOT NULL DEFAULT 'zh-CN',
|
||||
shot_duration_mode VARCHAR(10) NOT NULL DEFAULT 'auto',
|
||||
status VARCHAR(30) NOT NULL DEFAULT 'draft',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
||||
INDEX idx_video_project_user (user_id, updated_at)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS video_characters (
|
||||
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
project_id BIGINT UNSIGNED NOT NULL,
|
||||
user_id INT UNSIGNED NOT NULL,
|
||||
name VARCHAR(80) NOT NULL,
|
||||
description TEXT NULL,
|
||||
reference_upload_id INT UNSIGNED NULL,
|
||||
voice_key VARCHAR(100) NULL,
|
||||
is_locked TINYINT(1) NOT NULL DEFAULT 1,
|
||||
asset_version INT UNSIGNED NOT NULL DEFAULT 1,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (project_id) REFERENCES video_projects(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
||||
INDEX idx_video_character_project (project_id, id)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS video_episodes (
|
||||
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
project_id BIGINT UNSIGNED NOT NULL,
|
||||
episode_no INT UNSIGNED NOT NULL DEFAULT 1,
|
||||
title VARCHAR(160) NOT NULL,
|
||||
script MEDIUMTEXT NULL,
|
||||
status VARCHAR(30) NOT NULL DEFAULT 'storyboard',
|
||||
progress TINYINT UNSIGNED NOT NULL DEFAULT 0,
|
||||
progress_message VARCHAR(255) NULL,
|
||||
final_upload_id INT UNSIGNED NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (project_id) REFERENCES video_projects(id) ON DELETE CASCADE,
|
||||
UNIQUE KEY uk_video_episode_number (project_id, episode_no),
|
||||
INDEX idx_video_episode_status (status, updated_at)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS video_shots (
|
||||
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
episode_id BIGINT UNSIGNED NOT NULL,
|
||||
shot_no INT UNSIGNED NOT NULL,
|
||||
title VARCHAR(160) NOT NULL,
|
||||
prompt TEXT NOT NULL,
|
||||
dialogue TEXT NULL,
|
||||
duration_seconds SMALLINT UNSIGNED NOT NULL DEFAULT 5,
|
||||
workflow_type VARCHAR(20) NOT NULL DEFAULT 'fl2va',
|
||||
status VARCHAR(30) NOT NULL DEFAULT 'draft',
|
||||
prompt_id VARCHAR(80) NULL,
|
||||
seed BIGINT UNSIGNED NULL,
|
||||
output_upload_id INT UNSIGNED NULL,
|
||||
error_message TEXT NULL,
|
||||
meta JSON NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (episode_id) REFERENCES video_episodes(id) ON DELETE CASCADE,
|
||||
UNIQUE KEY uk_video_shot_number (episode_id, shot_no),
|
||||
INDEX idx_video_shot_prompt (prompt_id),
|
||||
INDEX idx_video_shot_status (status, updated_at)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- 每日消息统计
|
||||
CREATE TABLE IF NOT EXISTS user_daily_stats (
|
||||
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
@@ -160,7 +258,7 @@ INSERT INTO departments (name, parent_id, sort_order) VALUES
|
||||
|
||||
-- 默认系统设置
|
||||
INSERT INTO system_settings (setting_key, setting_value, description) VALUES
|
||||
('features', '{"markdown":true,"image":true,"video":true,"voice":true,"document":true,"emoji":true,"upload_image":true,"upload_video":true,"upload_file":true,"paste_image":true}', '功能开关'),
|
||||
('features', '{"markdown":true,"image":true,"video":true,"voice":true,"document":true,"emoji":true,"upload_image":true,"upload_video":true,"upload_file":true,"paste_image":true,"short_drama":true}', '功能开关'),
|
||||
('site_name', 'AI Chat', '站点名称'),
|
||||
('allow_register', 'true', '是否允许注册');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user