188 lines
7.3 KiB
SQL
188 lines
7.3 KiB
SQL
CREATE TABLE `novel_generation_plans` (
|
|
`id` BIGINT NOT NULL AUTO_INCREMENT,
|
|
`project_id` BIGINT NOT NULL,
|
|
`novel_source_id` BIGINT NULL,
|
|
`user_id` BIGINT NOT NULL,
|
|
`novel_scale` VARCHAR(30) NOT NULL DEFAULT 'medium',
|
|
`target_words` INT NULL,
|
|
`target_chapters` INT NULL,
|
|
`genre` VARCHAR(100) NULL,
|
|
`style_code` VARCHAR(100) NULL,
|
|
`brief_json` JSON NULL,
|
|
`ip_bible_json` JSON NULL,
|
|
`volume_plan_json` JSON NULL,
|
|
`pipeline_config_json` JSON NULL,
|
|
`quality_threshold_json` JSON NULL,
|
|
`automation_level` VARCHAR(20) NOT NULL DEFAULT 'L1',
|
|
`status` VARCHAR(50) NOT NULL DEFAULT 'draft',
|
|
`current_chapter_no` INT NOT NULL DEFAULT 0,
|
|
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
|
PRIMARY KEY (`id`),
|
|
KEY `npg_project_status_idx` (`project_id`, `status`),
|
|
KEY `npg_source_idx` (`novel_source_id`),
|
|
KEY `npg_user_status_idx` (`user_id`, `status`),
|
|
KEY `npg_scale_level_idx` (`novel_scale`, `automation_level`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE `novel_chapter_versions` (
|
|
`id` BIGINT NOT NULL AUTO_INCREMENT,
|
|
`project_id` BIGINT NOT NULL,
|
|
`novel_source_id` BIGINT NULL,
|
|
`novel_chapter_id` BIGINT NULL,
|
|
`chapter_no` INT NOT NULL,
|
|
`version_no` INT NOT NULL,
|
|
`version_type` VARCHAR(50) NOT NULL,
|
|
`title` VARCHAR(255) NULL,
|
|
`content_text` LONGTEXT NULL,
|
|
`content_json` JSON NULL,
|
|
`source_agent` VARCHAR(100) NULL,
|
|
`provider_code` VARCHAR(100) NULL,
|
|
`model_name` VARCHAR(100) NULL,
|
|
`quality_score` DECIMAL(5, 2) NULL,
|
|
`status` VARCHAR(50) NOT NULL DEFAULT 'draft',
|
|
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ncv_source_chapter_version_type_key` (`novel_source_id`, `chapter_no`, `version_no`, `version_type`),
|
|
KEY `ncv_project_chapter_idx` (`project_id`, `chapter_no`),
|
|
KEY `ncv_chapter_idx` (`novel_chapter_id`),
|
|
KEY `ncv_agent_idx` (`source_agent`),
|
|
KEY `ncv_status_idx` (`status`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE `novel_context_memories` (
|
|
`id` BIGINT NOT NULL AUTO_INCREMENT,
|
|
`project_id` BIGINT NOT NULL,
|
|
`novel_source_id` BIGINT NULL,
|
|
`chapter_no` INT NULL,
|
|
`memory_type` VARCHAR(80) NOT NULL,
|
|
`memory_text` LONGTEXT NULL,
|
|
`memory_json` JSON NULL,
|
|
`importance_level` INT NOT NULL DEFAULT 0,
|
|
`status` VARCHAR(50) NOT NULL DEFAULT 'active',
|
|
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
PRIMARY KEY (`id`),
|
|
KEY `ncm_project_type_idx` (`project_id`, `memory_type`),
|
|
KEY `ncm_source_chapter_idx` (`novel_source_id`, `chapter_no`),
|
|
KEY `ncm_type_status_idx` (`memory_type`, `status`),
|
|
KEY `ncm_importance_idx` (`importance_level`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE `novel_quality_reports` (
|
|
`id` BIGINT NOT NULL AUTO_INCREMENT,
|
|
`project_id` BIGINT NOT NULL,
|
|
`novel_source_id` BIGINT NULL,
|
|
`novel_chapter_id` BIGINT NULL,
|
|
`chapter_no` INT NULL,
|
|
`report_type` VARCHAR(50) NOT NULL,
|
|
`total_score` DECIMAL(5, 2) NULL,
|
|
`score_json` JSON NULL,
|
|
`problems_json` JSON NULL,
|
|
`suggestions_json` JSON NULL,
|
|
`pass_status` BOOLEAN NOT NULL DEFAULT false,
|
|
`rewrite_required` BOOLEAN NOT NULL DEFAULT false,
|
|
`source_agent` VARCHAR(100) NULL,
|
|
`provider_code` VARCHAR(100) NULL,
|
|
`model_name` VARCHAR(100) NULL,
|
|
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
PRIMARY KEY (`id`),
|
|
KEY `nqr_project_chapter_idx` (`project_id`, `chapter_no`),
|
|
KEY `nqr_source_chapter_idx` (`novel_source_id`, `chapter_no`),
|
|
KEY `nqr_chapter_idx` (`novel_chapter_id`),
|
|
KEY `nqr_pass_idx` (`pass_status`),
|
|
KEY `nqr_agent_idx` (`source_agent`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE `novel_version_snapshots` (
|
|
`id` BIGINT NOT NULL AUTO_INCREMENT,
|
|
`project_id` BIGINT NOT NULL,
|
|
`novel_source_id` BIGINT NOT NULL,
|
|
`version_no` INT NOT NULL,
|
|
`title` VARCHAR(255) NULL,
|
|
`snapshot_scope` VARCHAR(50) NOT NULL,
|
|
`chapter_start` INT NULL,
|
|
`chapter_end` INT NULL,
|
|
`source_hash` VARCHAR(128) NULL,
|
|
`snapshot_text` LONGTEXT NULL,
|
|
`snapshot_json` JSON NULL,
|
|
`created_for` VARCHAR(50) NULL,
|
|
`created_by_user_id` BIGINT NULL,
|
|
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `nvs_source_version_key` (`novel_source_id`, `version_no`),
|
|
KEY `nvs_project_idx` (`project_id`),
|
|
KEY `nvs_for_idx` (`created_for`),
|
|
KEY `nvs_range_idx` (`chapter_start`, `chapter_end`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE `novel_derivative_jobs` (
|
|
`id` BIGINT NOT NULL AUTO_INCREMENT,
|
|
`project_id` BIGINT NOT NULL,
|
|
`novel_source_id` BIGINT NOT NULL,
|
|
`snapshot_id` BIGINT NULL,
|
|
`user_id` BIGINT NOT NULL,
|
|
`derivative_type` VARCHAR(50) NOT NULL,
|
|
`target_project_id` BIGINT NULL,
|
|
`target_ref_id` BIGINT NULL,
|
|
`chapter_start` INT NULL,
|
|
`chapter_end` INT NULL,
|
|
`config_json` JSON NULL,
|
|
`status` VARCHAR(50) NOT NULL DEFAULT 'pending',
|
|
`progress_json` JSON NULL,
|
|
`error_message` TEXT NULL,
|
|
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
|
PRIMARY KEY (`id`),
|
|
KEY `ndj_project_type_idx` (`project_id`, `derivative_type`),
|
|
KEY `ndj_source_status_idx` (`novel_source_id`, `status`),
|
|
KEY `ndj_snapshot_idx` (`snapshot_id`),
|
|
KEY `ndj_user_status_idx` (`user_id`, `status`),
|
|
KEY `ndj_target_project_idx` (`target_project_id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE `agent_prompts` (
|
|
`id` BIGINT NOT NULL AUTO_INCREMENT,
|
|
`agent_name` VARCHAR(100) NOT NULL,
|
|
`version` INT NOT NULL DEFAULT 1,
|
|
`provider_type` VARCHAR(80) NOT NULL DEFAULT 'NovelProvider',
|
|
`default_provider_code` VARCHAR(100) NULL,
|
|
`system_prompt` LONGTEXT NOT NULL,
|
|
`user_prompt_template` LONGTEXT NOT NULL,
|
|
`output_schema_json` JSON NULL,
|
|
`temperature` DECIMAL(4, 2) NULL,
|
|
`max_output_tokens` INT NULL,
|
|
`is_active` BOOLEAN NOT NULL DEFAULT true,
|
|
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ap_name_version_key` (`agent_name`, `version`),
|
|
KEY `ap_name_active_idx` (`agent_name`, `is_active`),
|
|
KEY `ap_provider_type_idx` (`provider_type`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE `agent_runs` (
|
|
`id` BIGINT NOT NULL AUTO_INCREMENT,
|
|
`project_id` BIGINT NULL,
|
|
`novel_source_id` BIGINT NULL,
|
|
`chapter_no` INT NULL,
|
|
`agent_name` VARCHAR(100) NOT NULL,
|
|
`prompt_version` INT NULL,
|
|
`provider_code` VARCHAR(100) NULL,
|
|
`model_name` VARCHAR(100) NULL,
|
|
`provider_log_id` BIGINT NULL,
|
|
`input_json` JSON NULL,
|
|
`output_json` JSON NULL,
|
|
`output_text` LONGTEXT NULL,
|
|
`status` VARCHAR(50) NOT NULL DEFAULT 'running',
|
|
`quality_score` DECIMAL(5, 2) NULL,
|
|
`error_code` VARCHAR(100) NULL,
|
|
`error_message` TEXT NULL,
|
|
`started_at` DATETIME(3) NULL,
|
|
`finished_at` DATETIME(3) NULL,
|
|
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
PRIMARY KEY (`id`),
|
|
KEY `ar_project_agent_idx` (`project_id`, `agent_name`),
|
|
KEY `ar_source_chapter_idx` (`novel_source_id`, `chapter_no`),
|
|
KEY `ar_status_created_idx` (`status`, `created_at`),
|
|
KEY `ar_provider_log_idx` (`provider_log_id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|