xxy aa98ea2623 @
Initial commit

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@
2026-06-05 18:45:29 +08:00

465 lines
20 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 智能报告生成平台 - 数据库初始化脚本
-- 数据库名建议post_eval_report
-- 适用于 MySQL
-- 创建数据库(可选)
-- CREATE DATABASE IF NOT EXISTS post_eval_report DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- USE post_eval_report;
-- 项目(统一:知识库 + 撰写)
-- uuid 由应用层生成,避免 MySQL 8/9 对生成列函数限制导致初始化失败
CREATE TABLE IF NOT EXISTS projects (
id INT AUTO_INCREMENT PRIMARY KEY,
uuid VARCHAR(32) NOT NULL UNIQUE,
name VARCHAR(255) NOT NULL,
description TEXT,
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
doc_count INT DEFAULT 0,
eval_reports_count INT DEFAULT 0,
total_size VARCHAR(32) DEFAULT '0 B',
tags TEXT,
status VARCHAR(16) DEFAULT 'active',
color VARCHAR(16) DEFAULT '#3b82f6',
sync_suppressed_table_names LONGTEXT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE INDEX idx_projects_created_at ON projects(created_at);
CREATE INDEX idx_projects_updated_at ON projects(updated_at);
CREATE INDEX idx_projects_status ON projects(status);
-- 知识库目录表project_id 关联 projects.uuidparent_id 形成目录树
CREATE TABLE IF NOT EXISTS kb_directories (
id VARCHAR(64) PRIMARY KEY,
project_id VARCHAR(32) NOT NULL,
parent_id VARCHAR(64) NULL,
name VARCHAR(255) NOT NULL,
full_path VARCHAR(1024) NOT NULL,
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
FOREIGN KEY (project_id) REFERENCES projects(uuid) ON DELETE CASCADE,
FOREIGN KEY (parent_id) REFERENCES kb_directories(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE INDEX idx_kb_dirs_project ON kb_directories(project_id);
CREATE INDEX idx_kb_dirs_parent ON kb_directories(parent_id);
-- 知识库文档status: 0=失败 2=排队中 3=处理中 4=可用)
CREATE TABLE IF NOT EXISTS kb_documents (
id VARCHAR(64) PRIMARY KEY,
project_id VARCHAR(32) NOT NULL,
directory_id VARCHAR(64) NULL,
name VARCHAR(255) NOT NULL,
size VARCHAR(32) NOT NULL,
file_path VARCHAR(512),
storage_rel_path VARCHAR(512) NULL COMMENT '项目内完整相对路径(含文件名)',
word_count INT DEFAULT 0,
uploaded_at DATETIME NOT NULL,
status INT DEFAULT 2,
error_message TEXT NULL,
factor JSON NULL COMMENT '文档要素 JSON 数组',
category VARCHAR(32) NULL DEFAULT NULL COMMENT '文件分类',
FOREIGN KEY (project_id) REFERENCES projects(uuid) ON DELETE CASCADE,
FOREIGN KEY (directory_id) REFERENCES kb_directories(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE INDEX idx_kb_docs_project ON kb_documents(project_id);
CREATE INDEX idx_kb_docs_directory ON kb_documents(directory_id);
-- 若已有 kb_documents 表,执行以下语句添加 word_count 字段:
-- ALTER TABLE kb_documents ADD COLUMN word_count INT DEFAULT 0 AFTER file_path;
-- 撰写文档project_id 关联 projects.uuid与 kb_documents 一致)
CREATE TABLE IF NOT EXISTS write_documents (
id VARCHAR(64) PRIMARY KEY,
project_id VARCHAR(32) NOT NULL,
title VARCHAR(255) NOT NULL,
content LONGTEXT,
word_count INT DEFAULT 0,
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
status VARCHAR(16) DEFAULT 'draft',
sort_order INT DEFAULT 0,
FOREIGN KEY (project_id) REFERENCES projects(uuid) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE INDEX idx_write_docs_project ON write_documents(project_id);
-- 文档版本
CREATE TABLE IF NOT EXISTS doc_versions (
id VARCHAR(64) PRIMARY KEY,
document_id VARCHAR(64) NOT NULL,
version VARCHAR(32) NOT NULL,
content LONGTEXT NOT NULL,
citation_payload LONGTEXT NULL,
saved_at DATETIME NOT NULL,
author VARCHAR(64) NOT NULL,
note TEXT,
FOREIGN KEY (document_id) REFERENCES write_documents(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE INDEX idx_versions_doc ON doc_versions(document_id);
-- 要素表定义(全局/时间)
CREATE TABLE IF NOT EXISTS element_tables (
id VARCHAR(64) PRIMARY KEY,
project_id VARCHAR(32) NOT NULL,
table_type VARCHAR(32) NOT NULL,
table_name VARCHAR(255) NOT NULL,
year INT NULL,
is_time_dimension TINYINT(1) DEFAULT 0,
sort_order INT DEFAULT 0,
sync_suppressed_row_keys LONGTEXT NULL,
custom_row_order LONGTEXT NULL,
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
FOREIGN KEY (project_id) REFERENCES projects(uuid) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE INDEX idx_element_tables_project ON element_tables(project_id);
CREATE INDEX idx_element_tables_type_year ON element_tables(table_type, year);
CREATE INDEX idx_element_tables_name ON element_tables(table_name);
-- 要素单元格
CREATE TABLE IF NOT EXISTS element_cells (
id VARCHAR(64) PRIMARY KEY,
table_id VARCHAR(64) NOT NULL,
project_id VARCHAR(32) NOT NULL,
row_key VARCHAR(255) NOT NULL,
col_key VARCHAR(255) NULL,
year INT NULL,
value LONGTEXT NULL,
source_document_id VARCHAR(64) NULL,
source_line_no INT NULL,
source_line_end INT NULL,
source_quote TEXT NULL,
confidence FLOAT NULL,
extraction_batch_id VARCHAR(64) NULL,
extraction_model VARCHAR(128) NULL,
source_type VARCHAR(16) NULL COMMENT 'extract=文档抽取, manual=手工输入',
conflict_status VARCHAR(16) DEFAULT 'none',
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
FOREIGN KEY (table_id) REFERENCES element_tables(id) ON DELETE CASCADE,
FOREIGN KEY (project_id) REFERENCES projects(uuid) ON DELETE CASCADE,
FOREIGN KEY (source_document_id) REFERENCES kb_documents(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE INDEX idx_element_cells_project ON element_cells(project_id);
CREATE INDEX idx_element_cells_row_col ON element_cells(row_key, col_key);
CREATE INDEX idx_element_cells_year ON element_cells(year);
-- 抽取结果留存table/element
CREATE TABLE IF NOT EXISTS extraction_results (
id VARCHAR(64) PRIMARY KEY,
project_id VARCHAR(32) NOT NULL,
document_id VARCHAR(64) NOT NULL,
batch_id VARCHAR(64) NOT NULL,
result_type VARCHAR(16) NOT NULL,
table_type VARCHAR(32) NULL,
table_name VARCHAR(255) NULL,
year INT NULL,
item_key VARCHAR(255) NOT NULL,
item_value LONGTEXT NULL,
source_line_no INT NULL,
source_line_end INT NULL,
confidence FLOAT NULL,
raw_payload JSON NULL,
extracted_at DATETIME NULL,
created_at DATETIME NOT NULL,
FOREIGN KEY (project_id) REFERENCES projects(uuid) ON DELETE CASCADE,
FOREIGN KEY (document_id) REFERENCES kb_documents(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE INDEX idx_extraction_project_doc ON extraction_results(project_id, document_id);
CREATE INDEX idx_extraction_batch ON extraction_results(batch_id);
CREATE INDEX idx_extraction_table_name ON extraction_results(table_name);
CREATE INDEX idx_extraction_key ON extraction_results(item_key);
-- 要素抽取结果明细(面向“细则章节/小节提示词 -> 项目材料”)
CREATE TABLE IF NOT EXISTS element_extraction_results (
id VARCHAR(64) PRIMARY KEY,
project_id VARCHAR(32) NOT NULL,
table_type VARCHAR(32) NOT NULL,
year INT NULL,
table_name VARCHAR(255) NOT NULL,
extracted_at DATETIME NOT NULL,
item_key VARCHAR(255) NOT NULL,
item_value LONGTEXT NULL,
source_document_id VARCHAR(64) NULL,
source_line_no INT NULL,
source_line_end INT NULL,
created_at DATETIME NOT NULL,
FOREIGN KEY (project_id) REFERENCES projects(uuid) ON DELETE CASCADE,
FOREIGN KEY (source_document_id) REFERENCES kb_documents(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE INDEX idx_el_ext_project ON element_extraction_results(project_id);
CREATE INDEX idx_el_ext_table ON element_extraction_results(table_type, year, table_name);
CREATE INDEX idx_el_ext_key ON element_extraction_results(item_key);
CREATE INDEX idx_el_ext_source_doc ON element_extraction_results(source_document_id);
-- 冲突记录
CREATE TABLE IF NOT EXISTS element_conflicts (
id VARCHAR(64) PRIMARY KEY,
project_id VARCHAR(32) NOT NULL,
table_id VARCHAR(64) NULL,
cell_id VARCHAR(64) NULL,
item_key VARCHAR(255) NOT NULL,
old_value LONGTEXT NULL,
new_value LONGTEXT NULL,
selected_value LONGTEXT NULL,
source_document_id VARCHAR(64) NULL,
source_line_no INT NULL,
status VARCHAR(16) DEFAULT 'pending',
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
FOREIGN KEY (project_id) REFERENCES projects(uuid) ON DELETE CASCADE,
FOREIGN KEY (table_id) REFERENCES element_tables(id) ON DELETE SET NULL,
FOREIGN KEY (cell_id) REFERENCES element_cells(id) ON DELETE SET NULL,
FOREIGN KEY (source_document_id) REFERENCES kb_documents(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE INDEX idx_element_conflicts_project ON element_conflicts(project_id);
CREATE INDEX idx_element_conflicts_status ON element_conflicts(status);
-- 文档 markdown 落库
CREATE TABLE IF NOT EXISTS document_markdowns (
id VARCHAR(64) PRIMARY KEY,
project_id VARCHAR(32) NOT NULL,
document_id VARCHAR(64) NOT NULL,
extracted_filename VARCHAR(255) NULL,
markdown_content LONGTEXT NOT NULL,
content_hash VARCHAR(64) NULL,
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
FOREIGN KEY (project_id) REFERENCES projects(uuid) ON DELETE CASCADE,
FOREIGN KEY (document_id) REFERENCES kb_documents(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE INDEX idx_markdowns_project_doc ON document_markdowns(project_id, document_id);
-- 文档段落切分
CREATE TABLE IF NOT EXISTS document_chunks (
id VARCHAR(64) PRIMARY KEY,
project_id VARCHAR(32) NOT NULL,
document_id VARCHAR(64) NOT NULL,
markdown_id VARCHAR(64) NULL,
heading VARCHAR(512) NULL,
chunk_text LONGTEXT NOT NULL,
chunk_index INT DEFAULT 0,
source_line_start INT NULL,
source_line_end INT NULL,
vector_id VARCHAR(128) NULL,
created_at DATETIME NOT NULL,
FOREIGN KEY (project_id) REFERENCES projects(uuid) ON DELETE CASCADE,
FOREIGN KEY (document_id) REFERENCES kb_documents(id) ON DELETE CASCADE,
FOREIGN KEY (markdown_id) REFERENCES document_markdowns(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE INDEX idx_chunks_project_doc ON document_chunks(project_id, document_id);
CREATE INDEX idx_chunks_heading ON document_chunks(heading(255));
-- 独立后台任务pdf2md 文件处理与 element-agent 要素抽取
CREATE TABLE IF NOT EXISTS tasks (
id VARCHAR(64) PRIMARY KEY,
project VARCHAR(64) NOT NULL,
task_type INT NOT NULL,
file_id VARCHAR(64) NULL,
file_path VARCHAR(1024) NULL,
status INT NOT NULL DEFAULT 1,
payload_json JSON NULL,
result_path VARCHAR(1024) NULL,
error_message LONGTEXT NULL,
add_time DATETIME NOT NULL,
finish_time DATETIME NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE INDEX idx_tasks_status_type_time ON tasks(status, task_type, add_time);
CREATE INDEX idx_tasks_project ON tasks(project);
CREATE INDEX idx_tasks_file_id ON tasks(file_id);
-- 模板管理
CREATE TABLE IF NOT EXISTS report_templates (
id VARCHAR(64) PRIMARY KEY,
name VARCHAR(255) NOT NULL,
description TEXT NULL,
is_default TINYINT(1) DEFAULT 0,
is_active TINYINT(1) DEFAULT 1,
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE INDEX idx_templates_default ON report_templates(is_default);
CREATE TABLE IF NOT EXISTS report_template_sections (
id VARCHAR(64) PRIMARY KEY,
template_id VARCHAR(64) NOT NULL,
section_key VARCHAR(64) NOT NULL,
section_title VARCHAR(255) NOT NULL,
section_prompt LONGTEXT NULL,
section_output_contract LONGTEXT NULL,
section_order INT DEFAULT 0,
examples LONGTEXT NULL,
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
FOREIGN KEY (template_id) REFERENCES report_templates(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE INDEX idx_template_sections_template ON report_template_sections(template_id);
-- 报告生成任务7章分章异步
CREATE TABLE IF NOT EXISTS report_generation_jobs (
id VARCHAR(64) PRIMARY KEY,
project_id VARCHAR(32) NOT NULL,
template_id VARCHAR(64) NULL,
status VARCHAR(16) DEFAULT 'pending',
progress INT DEFAULT 0,
current_section_key VARCHAR(64) NULL,
error_message TEXT NULL,
requested_by VARCHAR(64) NULL,
options JSON NULL,
snapshot JSON NULL,
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
completed_at DATETIME NULL,
FOREIGN KEY (project_id) REFERENCES projects(uuid) ON DELETE CASCADE,
FOREIGN KEY (template_id) REFERENCES report_templates(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE INDEX idx_report_jobs_project ON report_generation_jobs(project_id);
CREATE INDEX idx_report_jobs_status ON report_generation_jobs(status);
CREATE TABLE IF NOT EXISTS report_generation_chapters (
id VARCHAR(64) PRIMARY KEY,
job_id VARCHAR(64) NOT NULL,
section_key VARCHAR(64) NOT NULL,
section_title VARCHAR(255) NOT NULL,
section_order INT DEFAULT 0,
status VARCHAR(16) DEFAULT 'pending',
content LONGTEXT NULL,
prompt_text LONGTEXT NULL,
evidence_payload JSON NULL,
validation_payload JSON NULL,
error_message TEXT NULL,
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
completed_at DATETIME NULL,
FOREIGN KEY (job_id) REFERENCES report_generation_jobs(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE INDEX idx_report_chapters_job ON report_generation_chapters(job_id);
CREATE INDEX idx_report_chapters_status ON report_generation_chapters(status);
-- 最小 RBAC
CREATE TABLE IF NOT EXISTS departments (
id VARCHAR(64) PRIMARY KEY,
name VARCHAR(255) NOT NULL,
description TEXT NULL,
parent_id VARCHAR(64) NULL,
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
FOREIGN KEY (parent_id) REFERENCES departments(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS users (
id VARCHAR(64) PRIMARY KEY,
username VARCHAR(64) NOT NULL UNIQUE,
password_hash VARCHAR(255) NULL,
department_id VARCHAR(64) NULL,
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
FOREIGN KEY (department_id) REFERENCES departments(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE INDEX idx_users_department ON users(department_id);
CREATE TABLE IF NOT EXISTS roles (
id VARCHAR(64) PRIMARY KEY,
name VARCHAR(64) NOT NULL UNIQUE,
description TEXT NULL,
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS permissions (
id VARCHAR(64) PRIMARY KEY,
perm_key VARCHAR(128) NOT NULL UNIQUE,
perm_type VARCHAR(32) NOT NULL,
description TEXT NULL,
created_at DATETIME NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE INDEX idx_permissions_type ON permissions(perm_type);
CREATE TABLE IF NOT EXISTS role_permissions (
id VARCHAR(64) PRIMARY KEY,
role_id VARCHAR(64) NOT NULL,
permission_id VARCHAR(64) NOT NULL,
created_at DATETIME NOT NULL,
FOREIGN KEY (role_id) REFERENCES roles(id) ON DELETE CASCADE,
FOREIGN KEY (permission_id) REFERENCES permissions(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS user_roles (
id VARCHAR(64) PRIMARY KEY,
user_id VARCHAR(64) NOT NULL,
role_id VARCHAR(64) NOT NULL,
created_at DATETIME NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
FOREIGN KEY (role_id) REFERENCES roles(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS project_members (
id VARCHAR(64) PRIMARY KEY,
project_id VARCHAR(32) NOT NULL,
user_id VARCHAR(64) NOT NULL,
role VARCHAR(32) DEFAULT 'editor',
created_at DATETIME NOT NULL,
FOREIGN KEY (project_id) REFERENCES projects(uuid) ON DELETE CASCADE,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE INDEX idx_project_members_project ON project_members(project_id);
CREATE TABLE IF NOT EXISTS project_departments (
id VARCHAR(64) PRIMARY KEY,
project_id VARCHAR(32) NOT NULL,
department_id VARCHAR(64) NOT NULL,
created_at DATETIME NOT NULL,
FOREIGN KEY (project_id) REFERENCES projects(uuid) ON DELETE CASCADE,
FOREIGN KEY (department_id) REFERENCES departments(id) ON DELETE CASCADE,
UNIQUE KEY uq_project_department (project_id, department_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE INDEX idx_project_departments_project ON project_departments(project_id);
-- 回填记录:每次要素回填均留痕,支持证据追溯
CREATE TABLE IF NOT EXISTS fill_records (
id VARCHAR(64) PRIMARY KEY,
project_id VARCHAR(32) NOT NULL,
cell_id VARCHAR(64) NULL,
table_id VARCHAR(64) NULL,
row_key VARCHAR(255) NOT NULL,
col_key VARCHAR(255) NULL,
year INT NULL,
filled_value LONGTEXT NULL,
previous_value LONGTEXT NULL,
source_document_id VARCHAR(64) NULL,
source_document_name VARCHAR(255) NULL COMMENT '冗余存储文档名,文档删除后仍可追溯',
source_line_no INT NULL,
source_line_end INT NULL,
source_quote TEXT NULL COMMENT '原文摘录片段,作为回填依据',
confidence FLOAT NULL,
extraction_batch_id VARCHAR(64) NULL,
extraction_model VARCHAR(128) NULL COMMENT '使用的 LLM 模型标识',
fill_type VARCHAR(16) NOT NULL DEFAULT 'auto' COMMENT 'auto=抽取回填, manual=人工编辑, resolve=冲突解决',
created_at DATETIME NOT NULL,
FOREIGN KEY (project_id) REFERENCES projects(uuid) ON DELETE CASCADE,
FOREIGN KEY (cell_id) REFERENCES element_cells(id) ON DELETE SET NULL,
FOREIGN KEY (table_id) REFERENCES element_tables(id) ON DELETE SET NULL,
FOREIGN KEY (source_document_id) REFERENCES kb_documents(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE INDEX idx_fill_records_project ON fill_records(project_id);
CREATE INDEX idx_fill_records_cell ON fill_records(cell_id);
CREATE INDEX idx_fill_records_batch ON fill_records(extraction_batch_id);
CREATE INDEX idx_fill_records_source_doc ON fill_records(source_document_id);
CREATE INDEX idx_fill_records_created ON fill_records(created_at);
-- ============================================================
-- report_section_references章节参考范文
-- ============================================================
CREATE TABLE IF NOT EXISTS report_section_references (
id VARCHAR(64) PRIMARY KEY,
template_id VARCHAR(64) NULL COMMENT '关联模板IDreport_templates.id按模板过滤参考范文',
source_file VARCHAR(255) NOT NULL COMMENT '来源文件名',
section_key VARCHAR(64) NOT NULL COMMENT '章节标识,如 1.1、2.1.1',
section_title VARCHAR(255) NOT NULL COMMENT '章节标题',
section_order INT DEFAULT 0 COMMENT '章节序号',
content TEXT NOT NULL COMMENT '该章节的参考范文 Markdown',
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE INDEX idx_ref_source_file ON report_section_references(source_file);
CREATE INDEX idx_ref_section_key ON report_section_references(section_key);
CREATE INDEX idx_ref_template_id ON report_section_references(template_id);