6.8 KiB
Executable File
6.8 KiB
Executable File
05_数据库表结构设计
1. 核心表清单
users
projects
novel_sources
novel_chapters
copyright_records
story_bibles
world_bibles
characters
character_images
character_memories
episodes
episode_scripts
storyboard_shots
shot_images
plot_memories
plot_threads
continuity_checks
assets
render_tasks
provider_configs
provider_logs
orders
quota_accounts
quota_logs
revision_requests
content_reviews
case_showcases
analytics_events
system_configs
operation_logs
2. projects
id BIGINT PRIMARY KEY
user_id BIGINT NOT NULL
title VARCHAR(255)
input_mode VARCHAR(50) -- ai_original/upload/admin_import
genre VARCHAR(100)
style_code VARCHAR(100)
output_type VARCHAR(50)
target_episode_count INT
episode_duration INT
status VARCHAR(80)
copyright_status VARCHAR(80)
payment_status VARCHAR(80)
quality_level VARCHAR(50)
is_long_series BOOLEAN DEFAULT FALSE
created_at DATETIME
updated_at DATETIME
completed_at DATETIME
索引:
user_id,status
genre,status
created_at
3. novel_sources
id BIGINT PRIMARY KEY
project_id BIGINT NOT NULL
source_type VARCHAR(50)
title VARCHAR(255)
author_name VARCHAR(100)
raw_asset_id BIGINT
raw_text LONGTEXT
clean_text LONGTEXT
word_count INT
chapter_count INT
parse_status VARCHAR(50)
parse_report JSON
created_at DATETIME
4. novel_chapters
id BIGINT PRIMARY KEY
project_id BIGINT NOT NULL
novel_source_id BIGINT
chapter_no INT
title VARCHAR(255)
content LONGTEXT
summary TEXT
visual_summary TEXT
word_count INT
status VARCHAR(50)
created_at DATETIME
visual_summary 用于记录该章节可视化场景摘要。
5. copyright_records
id BIGINT PRIMARY KEY
project_id BIGINT
user_id BIGINT
authorization_type VARCHAR(50)
statement_text TEXT
ip VARCHAR(80)
user_agent TEXT
confirmed_at DATETIME
authorization_type:
author_self
licensed
public_domain
internal_test
ai_original
6. story_bibles
id BIGINT PRIMARY KEY
project_id BIGINT
title VARCHAR(255)
logline TEXT
main_plot TEXT
core_conflict TEXT
selling_points TEXT
tone VARCHAR(100)
world_summary TEXT
ending_direction TEXT
taboo_rules TEXT
version INT
status VARCHAR(50)
created_at DATETIME
updated_at DATETIME
7. world_bibles
id BIGINT PRIMARY KEY
project_id BIGINT
world_type VARCHAR(100)
setting_text TEXT
rules_text TEXT
power_system TEXT
social_structure TEXT
time_period TEXT
visual_rules TEXT
forbidden_rules TEXT
status VARCHAR(50)
created_at DATETIME
8. characters
id BIGINT PRIMARY KEY
project_id BIGINT
name VARCHAR(100)
role_type VARCHAR(50)
gender_label VARCHAR(50)
age_group VARCHAR(50)
identity_desc TEXT
appearance_desc TEXT
hair_desc TEXT
costume_rules TEXT
personality_desc TEXT
speech_style TEXT
relationship_desc TEXT
character_arc TEXT
negative_rules TEXT
anchor_asset_id BIGINT
importance_level INT
status VARCHAR(50)
created_at DATETIME
role_type:
lead_male
lead_female
villain
supporting
extra
9. character_images
id BIGINT PRIMARY KEY
project_id BIGINT
character_id BIGINT
asset_id BIGINT
image_type VARCHAR(50)
prompt_text TEXT
negative_prompt TEXT
is_anchor BOOLEAN
quality_score DECIMAL(5,2)
status VARCHAR(50)
created_at DATETIME
image_type:
front_reference
side_reference
expression
costume
anchor
episode_variant
10. character_memories
id BIGINT PRIMARY KEY
project_id BIGINT
character_id BIGINT
episode_id BIGINT
memory_type VARCHAR(50)
content TEXT
created_at DATETIME
memory_type:
appearance_state
relationship_state
emotion_state
goal_state
injury_state
costume_state
11. episodes
id BIGINT PRIMARY KEY
project_id BIGINT
episode_no INT
source_chapter_ids JSON
title VARCHAR(255)
summary TEXT
opening_hook TEXT
middle_conflict TEXT
ending_hook TEXT
target_duration INT
status VARCHAR(50)
created_at DATETIME
12. episode_scripts
id BIGINT PRIMARY KEY
project_id BIGINT
episode_id BIGINT
script_text LONGTEXT
narration_text LONGTEXT
dialogue_json JSON
version INT
status VARCHAR(50)
created_at DATETIME
13. storyboard_shots
id BIGINT PRIMARY KEY
project_id BIGINT
episode_id BIGINT
shot_no INT
scene_name VARCHAR(255)
location_desc TEXT
characters_json JSON
visual_desc TEXT
action_desc TEXT
dialogue_text TEXT
narration_text TEXT
camera_motion VARCHAR(100)
effect_type VARCHAR(100)
duration DECIMAL(6,2)
prompt_text TEXT
negative_prompt TEXT
status VARCHAR(50)
created_at DATETIME
14. plot_memories
id BIGINT PRIMARY KEY
project_id BIGINT
episode_id BIGINT
chapter_id BIGINT
memory_type VARCHAR(50)
content TEXT
importance_level INT
status VARCHAR(50)
created_at DATETIME
memory_type:
event
clue
foreshadowing
resolved_conflict
unresolved_conflict
relationship_change
world_rule
item_state
15. plot_threads
id BIGINT PRIMARY KEY
project_id BIGINT
thread_name VARCHAR(255)
thread_type VARCHAR(80)
description TEXT
start_episode_no INT
expected_resolve_episode_no INT
resolved_episode_no INT
status VARCHAR(50)
created_at DATETIME
thread_type:
main_plot
romance
revenge
mystery
villain_plan
character_growth
16. continuity_checks
id BIGINT PRIMARY KEY
project_id BIGINT
episode_id BIGINT
check_type VARCHAR(80)
result_status VARCHAR(50)
issue_text TEXT
suggestion_text TEXT
created_at DATETIME
check_type:
character_name
relationship
timeline
appearance
plot_thread
world_rule
17. assets
id BIGINT PRIMARY KEY
user_id BIGINT
project_id BIGINT
asset_type VARCHAR(50)
file_path VARCHAR(500)
file_url VARCHAR(500)
mime_type VARCHAR(100)
width INT
height INT
duration DECIMAL(10,2)
size BIGINT
hash VARCHAR(128)
visibility VARCHAR(30)
status VARCHAR(50)
created_at DATETIME
18. render_tasks
id BIGINT PRIMARY KEY
project_id BIGINT
episode_id BIGINT
shot_id BIGINT
task_type VARCHAR(80)
provider_id BIGINT
status VARCHAR(50)
input_json JSON
input_hash VARCHAR(128)
output_asset_id BIGINT
provider_request_id VARCHAR(255)
retry_count INT
max_retry INT
cost_estimate DECIMAL(12,4)
cost_actual DECIMAL(12,4)
error_code VARCHAR(100)
error_message TEXT
created_at DATETIME
started_at DATETIME
finished_at DATETIME
19. analytics_events
id BIGINT PRIMARY KEY
project_id BIGINT
episode_id BIGINT
event_type VARCHAR(80)
platform VARCHAR(80)
metric_json JSON
created_at DATETIME
用于后续记录播放量、完播率、点赞率、评论反馈等。
20. 索引建议
projects(user_id,status)
novel_chapters(project_id,chapter_no)
characters(project_id,role_type)
episodes(project_id,episode_no)
storyboard_shots(project_id,episode_id,shot_no)
plot_memories(project_id,episode_id)
plot_threads(project_id,status)
render_tasks(project_id,status)
render_tasks(task_type,status)
assets(project_id,asset_type)