Major Changes: - Database: Install pg_bigm/pgvector plugins, create test database - Python service: v1.0 -> v1.1, add pymupdf4llm/openpyxl/pypandoc - Node.js backend: v1.3 -> v1.7, fix pino-pretty and ES Module imports - Frontend: v1.2 -> v1.3, skip TypeScript check for deployment - Code recovery: Restore empty files from local backup Technical Fixes: - Fix pino-pretty error in production (conditional loading) - Fix ES Module import paths (add .js extensions) - Fix OSSAdapter TypeScript errors - Update Prisma Schema (63 models, 16 schemas) - Update environment variables (DATABASE_URL, EXTRACTION_SERVICE_URL, OSS) - Remove deprecated variables (REDIS_URL, DIFY_API_URL, DIFY_API_KEY) Documentation: - Create 0126 deployment folder with 8 documents - Update database development standards v2.0 - Update SAE deployment status records Deployment Status: - PostgreSQL: ai_clinical_research_test with plugins - Python: v1.1 @ 172.17.173.84:8000 - Backend: v1.7 @ 172.17.173.89:3001 - Frontend: v1.3 @ 172.17.173.90:80 Tested: All services running successfully on SAE
375 lines
7.0 KiB
Markdown
375 lines
7.0 KiB
Markdown
# 全文复筛前端逻辑调整 - Settings页面优化
|
||
|
||
**日期**: 2025-01-23
|
||
**调整原因**: 用户反馈逻辑错误,需要区分"文献列表导入"和"PDF上传"两个独立步骤
|
||
**状态**: ✅ 已完成
|
||
|
||
---
|
||
|
||
## 🔴 **问题发现**
|
||
|
||
### 原始错误设计:
|
||
|
||
```
|
||
步骤1: 导入待复筛文献
|
||
├── Tab1: 从标题摘要初筛导入
|
||
├── Tab2: 手动上传Excel ❌ 错误设计
|
||
│ └── 上传包含文献信息的Excel(混淆了元信息和PDF)
|
||
└── Tab3: 从知识库选择
|
||
```
|
||
|
||
**错误点**:
|
||
- Tab2暗示可以通过Excel导入PDF,但Excel不可能包含PDF文件
|
||
- 没有区分"文献元信息"和"PDF全文"两个概念
|
||
- 流程不清晰,用户容易混淆
|
||
|
||
---
|
||
|
||
## ✅ **调整后的正确逻辑**
|
||
|
||
### 三步流程:
|
||
|
||
```
|
||
步骤1: 获取待复筛的文献列表(只获取元信息)
|
||
├── Tab1: 从标题摘要初筛导入
|
||
│ └── 导入上一环节"已纳入"的文献元信息
|
||
└── Tab2: 手动上传Excel
|
||
└── 上传包含文献元信息的Excel(Title, Abstract, PMID等)
|
||
└── 不包含PDF文件
|
||
|
||
步骤2: 上传全文文献(为每篇文献上传PDF)
|
||
├── 显示文献列表表格
|
||
├── 每行显示PDF状态(待上传/上传中/已就绪/失败)
|
||
└── 操作列提供两种方式:
|
||
├── (1) 手动上传PDF(MVP当前方式)
|
||
└── (2) 从知识库选择(技术债务)
|
||
|
||
步骤3: 启动全文复筛
|
||
└── 要求:至少1篇文献的PDF已就绪
|
||
```
|
||
|
||
---
|
||
|
||
## 📝 **详细修改内容**
|
||
|
||
### **1. 步骤1改名:获取待复筛的文献列表**
|
||
|
||
**修改前**:
|
||
```
|
||
步骤1: 导入待复筛文献
|
||
```
|
||
|
||
**修改后**:
|
||
```
|
||
步骤1: 获取待复筛的文献列表
|
||
说明:首先导入文献的基本信息(标题、摘要、作者等),PDF全文将在下一步上传
|
||
```
|
||
|
||
**改动理由**:
|
||
- 明确说明这一步只获取"文献列表"(元信息)
|
||
- 不包含PDF文件
|
||
|
||
---
|
||
|
||
### **2. Tab2改名:手动上传Excel(只含元信息)**
|
||
|
||
**修改前**:
|
||
```jsx
|
||
Tab2: 手动上传Excel
|
||
描述:上传包含文献列表的Excel文件(❌ 没有说明不含PDF)
|
||
```
|
||
|
||
**修改后**:
|
||
```jsx
|
||
Tab2: 手动上传Excel
|
||
说明:上传包含文献元信息的Excel文件(标题、摘要、PMID等),不包含PDF文件。PDF全文将在下一步上传。
|
||
|
||
Excel模板字段说明:
|
||
必填字段:
|
||
• Title(标题)
|
||
• Abstract(摘要)
|
||
|
||
可选字段:
|
||
• PMID、DOI、Authors(作者)、Journal(期刊)、Year(年份)
|
||
```
|
||
|
||
**改动理由**:
|
||
- 明确说明"不包含PDF文件"
|
||
- 提供Excel模板字段说明
|
||
- 添加"下载Excel模板"按钮
|
||
|
||
---
|
||
|
||
### **3. 删除Tab3:从知识库选择**
|
||
|
||
**修改前**:
|
||
```
|
||
Tab3: 从知识库选择
|
||
```
|
||
|
||
**修改后**:
|
||
```
|
||
(删除Tab3,知识库功能移到步骤2)
|
||
```
|
||
|
||
**改动理由**:
|
||
- 知识库选择应该在"上传PDF"环节,而不是"获取文献列表"环节
|
||
- 简化Tab数量(2个Tab更清晰)
|
||
|
||
---
|
||
|
||
### **4. 步骤2重命名:上传全文文献**
|
||
|
||
**修改前**:
|
||
```
|
||
步骤2: 全文获取与管理
|
||
```
|
||
|
||
**修改后**:
|
||
```
|
||
步骤2: 上传全文文献
|
||
说明:为每篇文献上传对应的PDF全文。您可以手动上传本地PDF文件,或从知识库选择已有PDF(开发中)。
|
||
```
|
||
|
||
**改动理由**:
|
||
- "上传全文文献"比"全文获取与管理"更明确
|
||
- 明确说明这一步的目的是"上传PDF"
|
||
|
||
---
|
||
|
||
### **5. 操作列增强:支持两种上传方式**
|
||
|
||
**修改前**:
|
||
```jsx
|
||
操作列:
|
||
- 未上传:[上传PDF]按钮
|
||
- 已就绪:显示"已就绪"
|
||
```
|
||
|
||
**修改后**:
|
||
```jsx
|
||
操作列:
|
||
- 未上传/失败:
|
||
├── [上传PDF]按钮(手动上传本地PDF)
|
||
└── [知识库]按钮(从知识库选择,暂禁用)
|
||
|
||
- 已就绪:
|
||
├── ✓ 已完成
|
||
└── [重新上传]按钮(允许替换PDF)
|
||
```
|
||
|
||
**改动理由**:
|
||
- 提供两种上传方式选项
|
||
- 已就绪的文献也可以重新上传
|
||
|
||
---
|
||
|
||
### **6. 批量操作工具栏**
|
||
|
||
**新增**:
|
||
```jsx
|
||
步骤2顶部工具栏:
|
||
- 左侧:已选择 X 篇 | [批量删除]按钮
|
||
- 右侧:[从知识库批量导入]按钮(暂禁用)
|
||
```
|
||
|
||
**改动理由**:
|
||
- 支持批量操作
|
||
- 为未来的知识库批量导入预留入口
|
||
|
||
---
|
||
|
||
### **7. 提示信息优化**
|
||
|
||
**修改前**:
|
||
```
|
||
提示:至少需要1篇文献的PDF已就绪才能启动复筛任务。
|
||
```
|
||
|
||
**修改后**:
|
||
```
|
||
未上传任何PDF:
|
||
提示:至少需要1篇文献的PDF已就绪才能启动复筛任务。请点击表格中的【上传PDF】按钮为文献上传全文。
|
||
|
||
部分PDF已就绪:
|
||
提示:已有 X 篇文献的PDF就绪,还有 Y 篇待上传。您可以继续上传剩余PDF,或直接启动复筛(未上传PDF的文献将被跳过)。
|
||
|
||
全部PDF已就绪:
|
||
提示:已有 X 篇文献的PDF就绪,可以启动全文复筛任务
|
||
```
|
||
|
||
**改动理由**:
|
||
- 根据不同状态显示不同提示
|
||
- 明确告知操作步骤
|
||
|
||
---
|
||
|
||
## 🎯 **核心改进点**
|
||
|
||
### **概念分离**:
|
||
```
|
||
文献元信息(步骤1)
|
||
↓
|
||
PDF全文文件(步骤2)
|
||
↓
|
||
启动筛选(步骤3)
|
||
```
|
||
|
||
### **流程清晰化**:
|
||
1. **步骤1**:获取文献列表(只要标题、摘要等元信息)
|
||
2. **步骤2**:为每篇文献上传PDF(一对一关联)
|
||
3. **步骤3**:启动全文复筛(要求至少1篇PDF就绪)
|
||
|
||
---
|
||
|
||
## 📊 **修改统计**
|
||
|
||
```
|
||
修改文件:1个
|
||
- FulltextSettings.tsx (621行)
|
||
|
||
修改内容:
|
||
- 删除代码:~50行(删除Tab3知识库选择)
|
||
- 修改代码:~150行(重写步骤说明、提示信息)
|
||
- 新增代码:~30行(批量操作工具栏、重新上传按钮)
|
||
|
||
Linter错误:0个
|
||
```
|
||
|
||
---
|
||
|
||
## ✅ **验收标准**
|
||
|
||
### **UI展示**:
|
||
- ✅ 步骤1有2个Tab(从初筛导入 / 手动上传Excel)
|
||
- ✅ 步骤1的Excel上传明确说明"不包含PDF"
|
||
- ✅ 步骤2标题为"上传全文文献"
|
||
- ✅ 步骤2每行有"上传PDF"和"知识库"按钮
|
||
- ✅ 步骤2的提示根据PDF状态动态变化
|
||
|
||
### **逻辑正确**:
|
||
- ✅ Excel只导入文献元信息
|
||
- ✅ PDF通过表格中的"上传PDF"按钮逐个上传
|
||
- ✅ 知识库功能在步骤2,不在步骤1
|
||
- ✅ 允许部分文献没有PDF也可以启动任务
|
||
|
||
---
|
||
|
||
## 🚀 **后续工作**
|
||
|
||
### **优先级P1(必须)**:
|
||
1. ✅ 前端逻辑调整(已完成)
|
||
2. ⏳ 实现Excel解析功能(解析文献元信息)
|
||
3. ⏳ 实现PDF上传API对接
|
||
|
||
### **优先级P2(建议)**:
|
||
1. PDF批量上传(拖拽多个PDF文件)
|
||
2. 从知识库选择PDF功能
|
||
3. Excel模板下载功能
|
||
|
||
---
|
||
|
||
## 📝 **备注**
|
||
|
||
### **关键设计原则**:
|
||
1. **概念分离**:文献元信息 ≠ PDF文件
|
||
2. **流程清晰**:三步流程,逐步推进
|
||
3. **灵活性**:允许部分文献无PDF也可启动
|
||
|
||
### **用户体验优化**:
|
||
- 每一步都有清晰的说明
|
||
- 不同状态有不同的提示
|
||
- 支持重新上传PDF
|
||
- 预留知识库入口
|
||
|
||
---
|
||
|
||
**文档版本**: v1.0
|
||
**最后更新**: 2025-01-23
|
||
**相关文档**: [2025-01-23_全文复筛前端开发完成.md](./2025-01-23_全文复筛前端开发完成.md)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|