- 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
203 lines
5.2 KiB
Markdown
203 lines
5.2 KiB
Markdown
# AI智能文献模块 - 数据库设计
|
||
|
||
> **文档版本:** v1.0
|
||
> **创建日期:** 2025-10-29
|
||
> **维护者:** AI智能文献开发团队
|
||
> **最后更新:** 2025-10-29
|
||
|
||
---
|
||
|
||
## 📋 文档说明
|
||
|
||
本文档描述AI智能文献模块的数据库设计,包括数据表结构、关系设计、索引设计等。
|
||
|
||
---
|
||
|
||
## 🗄️ 核心数据表
|
||
|
||
### 1. 文献筛选项目表 (literature_screening_projects)
|
||
|
||
```sql
|
||
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)
|
||
|
||
```sql
|
||
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)
|
||
|
||
```sql
|
||
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)
|
||
|
||
```sql
|
||
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
|
||
```
|
||
|
||
---
|
||
|
||
## 🔍 索引设计
|
||
|
||
```sql
|
||
-- 文献条目表索引
|
||
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
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|