Files
ai/backend/prisma/migrations/20260617133000_novel_ip_phase1/migration.sql
T

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;