File size: 4,667 Bytes
583741e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
# Papers Database 使用说明

## 概述

现在系统已经支持将arXiv文章和评价内容存储到SQLite数据库中,而不是保存在JSON文件中。这样可以更好地管理论文数据,支持查询、统计和标签管理。

## 数据库结构

### papers 表

| 字段 | 类型 | 说明 |
|------|------|------|
| arxiv_id | TEXT PRIMARY KEY | arXiv论文ID |
| title | TEXT NOT NULL | 论文标题 |
| authors | TEXT NOT NULL | 作者列表 |
| abstract | TEXT | 论文摘要 |
| categories | TEXT | 论文分类 |
| published_date | TEXT | 发布日期 |
| evaluation_content | TEXT | 评价内容(JSON格式) |
| evaluation_score | REAL | 总体自动化评分 |
| evaluation_tags | TEXT | 评价标签 |
| is_evaluated | BOOLEAN | 是否已评价 |
| evaluation_date | TIMESTAMP | 评价日期 |
| created_at | TIMESTAMP | 创建时间 |
| updated_at | TIMESTAMP | 更新时间 |

## 使用方法

### 1. 插入论文

```python
from src.database.db import db

# 插入新论文
db.insert_paper(
    arxiv_id="2508.05629",
    title="Your Paper Title",
    authors="Author 1, Author 2",
    abstract="Paper abstract...",
    categories="cs.AI, cs.LG",
    published_date="2024-08-01"
)
```

### 2. 更新评价

```python
# 更新论文评价
db.update_paper_evaluation(
    arxiv_id="2508.05629",
    evaluation_content='{"overall_automatability": 3, "three_year_feasibility": 75}',
    evaluation_score=3.0,
    evaluation_tags="3yr_feasibility:75%,overall_automatability:3/4"
)
```

### 3. 查询论文

```python
# 获取单个论文
paper = db.get_paper("2508.05629")

# 获取所有已评价的论文
evaluated_papers = db.get_evaluated_papers()

# 获取所有未评价的论文
unevaluated_papers = db.get_unevaluated_papers()

# 搜索论文
search_results = db.search_papers("AI")
```

### 4. 统计信息

```python
# 获取论文统计
count = db.get_papers_count()
print(f"总论文数: {count['total']}")
print(f"已评价: {count['evaluated']}")
print(f"未评价: {count['unevaluated']}")
```

## API 接口

### 获取评价列表
```
GET /api/evals
```

### 检查论文是否已评价
```
GET /api/has-eval/{paper_id}
```

### 获取论文评价
```
GET /api/eval/{paper_id}
```

### 获取论文统计
```
GET /api/papers/status
```

### 插入新论文
```
POST /api/papers/insert
Content-Type: application/json

{
    "arxiv_id": "2508.05629",
    "title": "Paper Title",
    "authors": "Author 1, Author 2",
    "abstract": "Abstract...",
    "categories": "cs.AI",
    "published_date": "2024-08-01"
}
```

### 评价论文
```
POST /api/papers/evaluate/{arxiv_id}
```

## CLI 工具使用

### 评价论文并保存到数据库

```bash
# 使用arxiv_id参数将评价保存到数据库
python cli.py https://arxiv.org/pdf/2508.05629 --arxiv-id 2508.05629

# 同时保存到文件和数据库
python cli.py https://arxiv.org/pdf/2508.05629 --arxiv-id 2508.05629 -o /path/to/output
```

## 迁移现有数据

如果你有现有的JSON评价文件,可以编写脚本将它们导入到数据库中:

```python
import json
import os
from src.database.db import db

def migrate_json_to_db(json_dir="workdir"):
    """将JSON文件迁移到数据库"""
    for filename in os.listdir(json_dir):
        if filename.endswith('.json'):
            filepath = os.path.join(json_dir, filename)
            with open(filepath, 'r') as f:
                data = json.load(f)
            
            # 提取arxiv_id(假设文件名包含arxiv_id)
            arxiv_id = filename.split('_')[0]  # 根据实际文件名格式调整
            
            # 更新数据库中的评价
            if 'response' in data:
                db.update_paper_evaluation(
                    arxiv_id=arxiv_id,
                    evaluation_content=data['response'],
                    evaluation_score=None,  # 需要从内容中解析
                    evaluation_tags=None
                )
                print(f"Migrated {filename} for paper {arxiv_id}")
```

## 优势

1. **结构化存储**: 论文信息和评价内容分开存储,便于查询
2. **标签系统**: 支持为评价添加标签,便于分类和筛选
3. **统计功能**: 可以轻松获取论文统计信息
4. **搜索功能**: 支持按标题、作者、摘要搜索论文
5. **状态管理**: 通过`is_evaluated`字段跟踪评价状态
6. **API支持**: 提供完整的RESTful API接口

## 注意事项

1. 确保在评价论文前先插入论文基本信息
2. 评价内容建议使用JSON格式,便于解析和展示
3. 定期备份数据库文件
4. 可以使用`evaluation_tags`字段存储关键评分信息,便于快速筛选