- System architecture and design documentation - Business module docs (ASL/AIA/PKB/RVW/DC/SSA/ST) - ASL module complete design (quality assurance, tech selection) - Platform layer and common capabilities docs - Development standards and API specifications - Deployment and operations guides - Project management and milestone tracking - Architecture implementation reports - Documentation templates and guides
5.2 KiB
5.2 KiB
AI智能文献模块 - 数据库设计
文档版本: v1.0
创建日期: 2025-10-29
维护者: AI智能文献开发团队
最后更新: 2025-10-29
📋 文档说明
本文档描述AI智能文献模块的数据库设计,包括数据表结构、关系设计、索引设计等。
🗄️ 核心数据表
1. 文献筛选项目表 (literature_screening_projects)
CREATE TABLE literature_screening_projects (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID NOT NULL REFERENCES users(id),
project_name VARCHAR(255) NOT NULL,
protocol_id UUID, -- 研究方案ID(未来关联)
-- PICO标准
pico_criteria JSONB, -- PICO结构化数据
-- 筛选标准
inclusion_criteria TEXT,
exclusion_criteria TEXT,
-- 状态
status VARCHAR(50) DEFAULT 'draft', -- draft, screening, completed
-- 筛选配置
screening_config JSONB, -- 筛选配置(双模型选择等)
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
2. 文献条目表 (literature_items)
CREATE TABLE literature_items (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
project_id UUID NOT NULL REFERENCES literature_screening_projects(id) ON DELETE CASCADE,
-- 文献基本信息
pmid VARCHAR(50),
title TEXT,
authors TEXT,
journal VARCHAR(255),
publication_year INTEGER,
doi VARCHAR(255),
abstract TEXT,
-- 文件信息
full_text_file_path VARCHAR(500),
full_text_status VARCHAR(50), -- not_required, pending, downloaded, uploaded, failed
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE(project_id, pmid)
);
3. 标题摘要初筛结果表 (title_abstract_screening_results)
CREATE TABLE title_abstract_screening_results (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
project_id UUID NOT NULL REFERENCES literature_screening_projects(id) ON DELETE CASCADE,
literature_item_id UUID NOT NULL REFERENCES literature_items(id) ON DELETE CASCADE,
-- DS模型判断
ds_p_judgment VARCHAR(10), -- ✓, ✗, ?
ds_i_judgment VARCHAR(10),
ds_c_judgment VARCHAR(10),
ds_s_judgment VARCHAR(10),
ds_conclusion VARCHAR(20), -- include, exclude
-- DS模型证据
ds_p_evidence TEXT,
ds_i_evidence TEXT,
ds_c_evidence TEXT,
ds_s_evidence TEXT,
-- Q3模型判断
q3_p_judgment VARCHAR(10),
q3_i_judgment VARCHAR(10),
q3_c_judgment VARCHAR(10),
q3_s_judgment VARCHAR(10),
q3_conclusion VARCHAR(20),
-- Q3模型证据
q3_p_evidence TEXT,
q3_i_evidence TEXT,
q3_c_evidence TEXT,
q3_s_evidence TEXT,
-- 冲突状态
conflict_status VARCHAR(20) DEFAULT 'none', -- none, conflict, resolved
-- 最终决策
final_decision VARCHAR(20), -- include, exclude, pending
final_decision_by UUID REFERENCES users(id),
final_decision_at TIMESTAMP,
exclusion_reason TEXT,
-- AI处理状态
ai_processing_status VARCHAR(50) DEFAULT 'pending', -- pending, processing, completed, failed
ai_processed_at TIMESTAMP,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE(project_id, literature_item_id)
);
4. 筛选任务表 (screening_tasks)
CREATE TABLE screening_tasks (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
project_id UUID NOT NULL REFERENCES literature_screening_projects(id) ON DELETE CASCADE,
task_type VARCHAR(50) NOT NULL, -- title_abstract, full_text
status VARCHAR(50) DEFAULT 'pending', -- pending, running, completed, failed
total_items INTEGER,
processed_items INTEGER DEFAULT 0,
success_items INTEGER DEFAULT 0,
failed_items INTEGER DEFAULT 0,
started_at TIMESTAMP,
completed_at TIMESTAMP,
error_message TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
📊 数据关系图
literature_screening_projects (1) ──< (N) literature_items
literature_screening_projects (1) ──< (N) title_abstract_screening_results
literature_items (1) ──< (1) title_abstract_screening_results
literature_screening_projects (1) ──< (N) screening_tasks
🔍 索引设计
-- 文献条目表索引
CREATE INDEX idx_literature_items_project_id ON literature_items(project_id);
CREATE INDEX idx_literature_items_pmid ON literature_items(pmid);
-- 筛选结果表索引
CREATE INDEX idx_screening_results_project_id ON title_abstract_screening_results(project_id);
CREATE INDEX idx_screening_results_item_id ON title_abstract_screening_results(literature_item_id);
CREATE INDEX idx_screening_results_conflict ON title_abstract_screening_results(conflict_status);
CREATE INDEX idx_screening_results_decision ON title_abstract_screening_results(final_decision);
-- 任务表索引
CREATE INDEX idx_screening_tasks_project_id ON screening_tasks(project_id);
CREATE INDEX idx_screening_tasks_status ON screening_tasks(status);
⏳ 待完善内容
后续将补充:
- 全文复筛相关表结构
- 数据提取相关表结构
- 数据迁移方案
- 数据字典
文档版本: v1.0
最后更新: 2025-10-29