feat(admin): Add user management and upgrade to module permission system
Features - User Management (Phase 4.1): - Database: Add user_modules table for fine-grained module permissions - Database: Add 4 user permissions (view/create/edit/delete) to role_permissions - Backend: UserService (780 lines) - CRUD with tenant isolation - Backend: UserController + UserRoutes (648 lines) - 13 API endpoints - Backend: Batch import users from Excel - Frontend: UserListPage (412 lines) - list/filter/search/pagination - Frontend: UserFormPage (341 lines) - create/edit with module config - Frontend: UserDetailPage (393 lines) - details/tenant/module management - Frontend: 3 modal components (592 lines) - import/assign/configure - API: GET/POST/PUT/DELETE /api/admin/users/* endpoints Architecture Upgrade - Module Permission System: - Backend: Add getUserModules() method in auth.service - Backend: Login API returns modules array in user object - Frontend: AuthContext adds hasModule() method - Frontend: Navigation filters modules based on user.modules - Frontend: RouteGuard checks requiredModule instead of requiredVersion - Frontend: Remove deprecated version-based permission system - UX: Only show accessible modules in navigation (clean UI) - UX: Smart redirect after login (avoid 403 for regular users) Fixes: - Fix UTF-8 encoding corruption in ~100 docs files - Fix pageSize type conversion in userService (String to Number) - Fix authUser undefined error in TopNavigation - Fix login redirect logic with role-based access check - Update Git commit guidelines v1.2 with UTF-8 safety rules Database Changes: - CREATE TABLE user_modules (user_id, tenant_id, module_code, is_enabled) - ADD UNIQUE CONSTRAINT (user_id, tenant_id, module_code) - INSERT 4 permissions + role assignments - UPDATE PUBLIC tenant with 8 module subscriptions Technical: - Backend: 5 new files (~2400 lines) - Frontend: 10 new files (~2500 lines) - Docs: 1 development record + 2 status updates + 1 guideline update - Total: ~4900 lines of code Status: User management 100% complete, module permission system operational
This commit is contained in:
@@ -1,99 +1,99 @@
|
||||
# 全文复筛前端逻辑调整 - Settings页面优化
|
||||
|
||||
**日期**: 2025-01-23
|
||||
**靚<EFBFBD>㟲<EFBFBD>笔<EFBFBD>**: <EFBFBD>冽<EFBFBD><EFBFBD>漤<EFBFBD><EFBFBD>餉<EFBFBD><EFBFBD>躰秤嚗屸<EFBFBD>閬<EFBFBD>躹<EFBFBD>?<3F><>讃<EFBFBD>𡑒”撖澆<E69296>"<22>?PDF銝𠹺<E98A9D>"銝支葵<E694AF>祉<EFBFBD>甇仿炊
|
||||
**<EFBFBD>嗆<EFBFBD>?*: <20>?撌脣<E6928C><E884A3>?
|
||||
**调整原因**: 用户反馈逻辑错误,需要区分"文献列表导入"和"PDF上传"两个独立步骤
|
||||
**状态**: ✅ 已完成
|
||||
|
||||
---
|
||||
|
||||
## 🔴 **问题发现**
|
||||
|
||||
### <EFBFBD>笔<EFBFBD><EFBFBD>躰秤霈曇恣嚗?
|
||||
### 原始错误设计:
|
||||
|
||||
```
|
||||
甇仿炊1: 撖澆<E69296>敺<EFBFBD><E695BA>蝑𥟇<E89D91><F0A59F87>?
|
||||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> Tab1: 隞擧<EFBFBD>憸䀹<EFBFBD>閬<EFBFBD><EFBFBD>蝑𥕦紡<EFBFBD>?
|
||||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> Tab2: <EFBFBD>见𢆡銝𠹺<EFBFBD>Excel <20>?<3F>躰秤霈曇恣
|
||||
<EFBFBD>? <20>婙<EFBFBD><E5A999><EFBFBD> 銝𠹺<E98A9D><F0A0B9BA><EFBFBD>鉄<EFBFBD><E98984>讃靽⊥<E99DBD><E28AA5><EFBFBD>xcel嚗<6C>毽瘛<E6AFBD><E7989B><EFBFBD><EFBFBD>縑<EFBFBD>臬<EFBFBD>PDF嚗?
|
||||
步骤1: 导入待复筛文献
|
||||
├── Tab1: 从标题摘要初筛导入
|
||||
├── Tab2: 手动上传Excel ❌ 错误设计
|
||||
│ └── 上传包含文献信息的Excel(混淆了元信息和PDF)
|
||||
└── Tab3: 从知识库选择
|
||||
```
|
||||
|
||||
**<EFBFBD>躰秤<EFBFBD>?*嚗?
|
||||
**错误点**:
|
||||
- Tab2暗示可以通过Excel导入PDF,但Excel不可能包含PDF文件
|
||||
- 瘝⊥<EFBFBD><EFBFBD>箏<EFBFBD>"<22><>讃<EFBFBD><E8AE83>縑<EFBFBD>?<3F>?PDF<44>冽<EFBFBD>"銝支葵璁<E891B5>艙
|
||||
- 没有区分"文献元信息"和"PDF全文"两个概念
|
||||
- 流程不清晰,用户容易混淆
|
||||
|
||||
---
|
||||
|
||||
## <EFBFBD>?**靚<>㟲<EFBFBD>𡒊<EFBFBD>甇<EFBFBD>&<EFBFBD>餉<EFBFBD>**
|
||||
## ✅ **调整后的正确逻辑**
|
||||
|
||||
### 銝㗇郊瘚<EFBFBD><EFBFBD>嚗?
|
||||
### 三步流程:
|
||||
|
||||
```
|
||||
步骤1: 获取待复筛的文献列表(只获取元信息)
|
||||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> Tab1: 隞擧<EFBFBD>憸䀹<EFBFBD>閬<EFBFBD><EFBFBD>蝑𥕦紡<EFBFBD>?
|
||||
<EFBFBD>? <20>婙<EFBFBD><E5A999><EFBFBD> 撖澆<E69296>銝𠹺<E98A9D><F0A0B9BA>航<EFBFBD>"撌脩熙<E884A9>?<3F><><EFBFBD><EFBFBD>桀<EFBFBD>靽⊥<E99DBD>
|
||||
├── Tab1: 从标题摘要初筛导入
|
||||
│ └── 导入上一环节"已纳入"的文献元信息
|
||||
└── Tab2: 手动上传Excel
|
||||
└── 上传包含文献元信息的Excel(Title, Abstract, PMID等)
|
||||
└── 不包含PDF文件
|
||||
|
||||
甇仿炊2: 銝𠹺<E98A9D><F0A0B9BA>冽<EFBFBD><E586BD><EFBFBD>讃嚗<E8AE83>蛹瘥讐<E798A5><E8AE90><EFBFBD>讃銝𠹺<E98A9D>PDF嚗?
|
||||
步骤2: 上传全文文献(为每篇文献上传PDF)
|
||||
├── 显示文献列表表格
|
||||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> 瘥讛<E798A5><E8AE9B>曄內PDF<44>嗆<EFBFBD><E59786><EFBFBD>敺<EFBFBD><E695BA>隡?銝𠹺<E98A9D>銝?撌脣停蝏?憭梯揖嚗?
|
||||
├── 每行显示PDF状态(待上传/上传中/已就绪/失败)
|
||||
└── 操作列提供两种方式:
|
||||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> (1) <20>见𢆡銝𠹺<E98A9D>PDF嚗㇈VP敶枏<E695B6><E69E8F>孵<EFBFBD>嚗?
|
||||
<EFBFBD>婙<EFBFBD><EFBFBD><EFBFBD> (2) 隞𡒊䰻霂<E4B0BB><E99C82><EFBFBD>㗇𥋘嚗<F0A58B98><E59A97><EFBFBD>臬<EFBFBD>箏𦛚嚗?
|
||||
├── (1) 手动上传PDF(MVP当前方式)
|
||||
└── (2) 从知识库选择(技术债务)
|
||||
|
||||
步骤3: 启动全文复筛
|
||||
<EFBFBD>婙<EFBFBD><EFBFBD><EFBFBD> 閬<><E996AC>嚗朞秐撠?蝭<><E89DAD><EFBFBD>桃<EFBFBD>PDF撌脣停蝏?
|
||||
└── 要求:至少1篇文献的PDF已就绪
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📝 **详细修改内容**
|
||||
|
||||
### **1. 甇仿炊1<EFBFBD>孵<EFBFBD>嚗朞繮<EFBFBD>硋<EFBFBD>憭滨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>桀<EFBFBD>銵?*
|
||||
### **1. 步骤1改名:获取待复筛的文献列表**
|
||||
|
||||
**靽格㺿<EFBFBD>?*嚗?
|
||||
**修改前**:
|
||||
```
|
||||
甇仿炊1: 撖澆<E69296>敺<EFBFBD><E695BA>蝑𥟇<E89D91><F0A59F87>?
|
||||
步骤1: 导入待复筛文献
|
||||
```
|
||||
|
||||
**靽格㺿<EFBFBD>?*嚗?
|
||||
**修改后**:
|
||||
```
|
||||
步骤1: 获取待复筛的文献列表
|
||||
霂湔<EFBFBD>嚗𡁻<EFBFBD><EFBFBD><EFBFBD>紡<EFBFBD>交<EFBFBD><EFBFBD>桃<EFBFBD><EFBFBD>箸𧋦靽⊥<EFBFBD>嚗<EFBFBD><EFBFBD>憸塩<EFBFBD><EFBFBD><EFBFBD>閬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗㚁<EFBFBD>PDF<EFBFBD>冽<EFBFBD>撠<EFBFBD>銁銝衤<EFBFBD>甇乩<EFBFBD>隡?
|
||||
说明:首先导入文献的基本信息(标题、摘要、作者等),PDF全文将在下一步上传
|
||||
```
|
||||
|
||||
**<EFBFBD>孵𢆡<EFBFBD><EFBFBD>眏**嚗?
|
||||
- <EFBFBD>𡒊&霂湔<EFBFBD>餈嗘<EFBFBD>甇亙蘨<EFBFBD>瑕<EFBFBD>"<22><>讃<EFBFBD>𡑒”"嚗<><E59A97>靽⊥<E99DBD>嚗?
|
||||
**改动理由**:
|
||||
- 明确说明这一步只获取"文献列表"(元信息)
|
||||
- 不包含PDF文件
|
||||
|
||||
---
|
||||
|
||||
### **2. Tab2<EFBFBD>孵<EFBFBD>嚗𡁏<EFBFBD><EFBFBD>其<EFBFBD>隡𪊲xcel嚗<EFBFBD>蘨<EFBFBD>怠<EFBFBD>靽⊥<EFBFBD>嚗?*
|
||||
### **2. Tab2改名:手动上传Excel(只含元信息)**
|
||||
|
||||
**靽格㺿<EFBFBD>?*嚗?
|
||||
**修改前**:
|
||||
```jsx
|
||||
Tab2: 手动上传Excel
|
||||
<EFBFBD>讛膩嚗帋<EFBFBD>隡惩<EFBFBD><EFBFBD>急<EFBFBD><EFBFBD>桀<EFBFBD>銵函<EFBFBD>Excel<EFBFBD><EFBFBD>辣嚗<EFBFBD><EFBFBD> 瘝⊥<EFBFBD>霂湔<EFBFBD>銝滚鉄PDF嚗?
|
||||
描述:上传包含文献列表的Excel文件(❌ 没有说明不含PDF)
|
||||
```
|
||||
|
||||
**靽格㺿<EFBFBD>?*嚗?
|
||||
**修改后**:
|
||||
```jsx
|
||||
Tab2: 手动上传Excel
|
||||
霂湔<EFBFBD>嚗帋<EFBFBD>隡惩<EFBFBD><EFBFBD>急<EFBFBD><EFBFBD>桀<EFBFBD>靽⊥<EFBFBD><EFBFBD><EFBFBD>xcel<EFBFBD><EFBFBD>辣嚗<EFBFBD><EFBFBD>憸塩<EFBFBD><EFBFBD><EFBFBD>閬<EFBFBD><EFBFBD><EFBFBD>MID蝑㚁<EFBFBD>嚗䔶<EFBFBD><EFBFBD><EFBFBD>鉄PDF<EFBFBD><EFBFBD>辣<EFBFBD><EFBFBD>DF<EFBFBD>冽<EFBFBD>撠<EFBFBD>銁銝衤<EFBFBD>甇乩<EFBFBD>隡𨬭<EFBFBD>?
|
||||
说明:上传包含文献元信息的Excel文件(标题、摘要、PMID等),不包含PDF文件。PDF全文将在下一步上传。
|
||||
|
||||
Excel璅⊥踎摮埈挾霂湔<EFBFBD>嚗?
|
||||
敹<EFBFBD>‵摮埈挾嚗?
|
||||
<EFBFBD>?Title嚗<EFBFBD><EFBFBD>憸矋<EFBFBD>
|
||||
<EFBFBD>?Abstract嚗<EFBFBD><EFBFBD>閬<EFBFBD><EFBFBD>
|
||||
Excel模板字段说明:
|
||||
必填字段:
|
||||
• Title(标题)
|
||||
• Abstract(摘要)
|
||||
|
||||
可选字段:
|
||||
<EFBFBD>?PMID<EFBFBD><EFBFBD>OI<EFBFBD><EFBFBD>uthors嚗<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ournal嚗<EFBFBD><EFBFBD><EFBFBD>𠺪<EFBFBD><EFBFBD><EFBFBD>ear嚗<EFBFBD>僑隞踝<EFBFBD>
|
||||
• PMID、DOI、Authors(作者)、Journal(期刊)、Year(年份)
|
||||
```
|
||||
|
||||
**<EFBFBD>孵𢆡<EFBFBD><EFBFBD>眏**嚗?
|
||||
**改动理由**:
|
||||
- 明确说明"不包含PDF文件"
|
||||
- 提供Excel模板字段说明
|
||||
- 添加"下载Excel模板"按钮
|
||||
@@ -102,168 +102,168 @@ Excel模板字段说明
|
||||
|
||||
### **3. 删除Tab3:从知识库选择**
|
||||
|
||||
**靽格㺿<EFBFBD>?*嚗?
|
||||
**修改前**:
|
||||
```
|
||||
Tab3: 从知识库选择
|
||||
```
|
||||
|
||||
**靽格㺿<EFBFBD>?*嚗?
|
||||
**修改后**:
|
||||
```
|
||||
嚗<EFBFBD><EFBFBD><EFBFBD>三ab3嚗𣬚䰻霂<EFBFBD><EFBFBD><EFBFBD>蠘<EFBFBD>蝘餃<EFBFBD>甇仿炊2嚗?
|
||||
(删除Tab3,知识库功能移到步骤2)
|
||||
```
|
||||
|
||||
**<EFBFBD>孵𢆡<EFBFBD><EFBFBD>眏**嚗?
|
||||
- <EFBFBD>亥<EFBFBD>摨㯄<EFBFBD>㗇𥋘摨磰砲<EFBFBD>?銝𠹺<E98A9D>PDF"<22>航<EFBFBD>嚗諹<E59A97>䔶<EFBFBD><E494B6>?<3F>瑕<EFBFBD><E79195><EFBFBD>讃<EFBFBD>𡑒”"<22>航<EFBFBD>
|
||||
- 蝞<EFBFBD><EFBFBD>巁ab<EFBFBD>圈<EFBFBD>嚗?銝枚ab<61>湔<EFBFBD><E6B994>堆<EFBFBD>
|
||||
**改动理由**:
|
||||
- 知识库选择应该在"上传PDF"环节,而不是"获取文献列表"环节
|
||||
- 简化Tab数量(2个Tab更清晰)
|
||||
|
||||
---
|
||||
|
||||
### **4. 步骤2重命名:上传全文文献**
|
||||
|
||||
**靽格㺿<EFBFBD>?*嚗?
|
||||
**修改前**:
|
||||
```
|
||||
甇仿炊2: <20>冽<EFBFBD><E586BD>瑕<EFBFBD>銝𡒊恣<F0A1928A>?
|
||||
步骤2: 全文获取与管理
|
||||
```
|
||||
|
||||
**靽格㺿<EFBFBD>?*嚗?
|
||||
**修改后**:
|
||||
```
|
||||
步骤2: 上传全文文献
|
||||
霂湔<EFBFBD>嚗帋蛹瘥讐<EFBFBD><EFBFBD><EFBFBD>讃銝𠹺<EFBFBD>撖孵<EFBFBD><EFBFBD><EFBFBD>DF<EFBFBD>冽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>臭誑<EFBFBD>见𢆡銝𠹺<EFBFBD><EFBFBD>砍𧑐PDF<EFBFBD><EFBFBD>辣嚗峕<EFBFBD>隞𡒊䰻霂<EFBFBD><EFBFBD><EFBFBD>㗇𥋘撌脫<EFBFBD>PDF嚗<EFBFBD><EFBFBD><EFBFBD>睲葉嚗剹<EFBFBD>?
|
||||
说明:为每篇文献上传对应的PDF全文。您可以手动上传本地PDF文件,或从知识库选择已有PDF(开发中)。
|
||||
```
|
||||
|
||||
**<EFBFBD>孵𢆡<EFBFBD><EFBFBD>眏**嚗?
|
||||
- "銝𠹺<EFBFBD><EFBFBD>冽<EFBFBD><EFBFBD><EFBFBD>讃"瘥?<3F>冽<EFBFBD><E586BD>瑕<EFBFBD>銝𡒊恣<F0A1928A>?<3F>湔<EFBFBD>蝖?
|
||||
- <EFBFBD>𡒊&霂湔<EFBFBD>餈嗘<EFBFBD>甇亦<EFBFBD><EFBFBD>桃<EFBFBD><EFBFBD>?銝𠹺<E98A9D>PDF"
|
||||
**改动理由**:
|
||||
- "上传全文文献"比"全文获取与管理"更明确
|
||||
- 明确说明这一步的目的是"上传PDF"
|
||||
|
||||
---
|
||||
|
||||
### **5. 操作列增强:支持两种上传方式**
|
||||
|
||||
**靽格㺿<EFBFBD>?*嚗?
|
||||
**修改前**:
|
||||
```jsx
|
||||
操作列:
|
||||
- 未上传:[上传PDF]按钮
|
||||
- 撌脣停蝏迎<EFBFBD><EFBFBD>曄內"撌脣停蝏?
|
||||
- 已就绪:显示"已就绪"
|
||||
```
|
||||
|
||||
**靽格㺿<EFBFBD>?*嚗?
|
||||
**修改后**:
|
||||
```jsx
|
||||
操作列:
|
||||
- <EFBFBD>芯<EFBFBD>隡?憭梯揖嚗?
|
||||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> [銝𠹺<EFBFBD>PDF]<EFBFBD>厰僼嚗<EFBFBD><EFBFBD><EFBFBD>其<EFBFBD>隡䭾𧋦<EFBFBD>訐DF嚗?
|
||||
<EFBFBD>婙<EFBFBD><EFBFBD><EFBFBD> [<EFBFBD>亥<EFBFBD>摨𨩇<EFBFBD>厰僼嚗<EFBFBD><EFBFBD><EFBFBD>亥<EFBFBD>摨㯄<EFBFBD>㗇𥋘嚗峕<EFBFBD>蝳<EFBFBD>鍂嚗?
|
||||
- 未上传/失败:
|
||||
├── [上传PDF]按钮(手动上传本地PDF)
|
||||
└── [知识库]按钮(从知识库选择,暂禁用)
|
||||
|
||||
- 已就绪:
|
||||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>?撌脣<EFBFBD><EFBFBD>?
|
||||
<EFBFBD>婙<EFBFBD><EFBFBD><EFBFBD> [<EFBFBD>齿鰵銝𠹺<EFBFBD>]<EFBFBD>厰僼嚗<EFBFBD><EFBFBD>霈豢𤜯<EFBFBD>㎜DF嚗?
|
||||
├── ✓ 已完成
|
||||
└── [重新上传]按钮(允许替换PDF)
|
||||
```
|
||||
|
||||
**<EFBFBD>孵𢆡<EFBFBD><EFBFBD>眏**嚗?
|
||||
**改动理由**:
|
||||
- 提供两种上传方式选项
|
||||
- 撌脣停蝏芰<EFBFBD><EFBFBD><EFBFBD>讃銋笔虾隞仿<EFBFBD><EFBFBD>唬<EFBFBD>隡?
|
||||
- 已就绪的文献也可以重新上传
|
||||
|
||||
---
|
||||
|
||||
### **6. <EFBFBD>寥<EFBFBD><EFBFBD>滢<EFBFBD>撌亙<EFBFBD><EFBFBD>?*
|
||||
### **6. 批量操作工具栏**
|
||||
|
||||
**<EFBFBD>啣<EFBFBD>**嚗?
|
||||
**新增**:
|
||||
```jsx
|
||||
步骤2顶部工具栏:
|
||||
- 撌虫儒嚗𡁜歇<EFBFBD>㗇𥋘 X 蝭?| [<EFBFBD>寥<EFBFBD><EFBFBD>𣳇膄]<EFBFBD>厰僼
|
||||
- <EFBFBD>喃儒嚗靀隞𡒊䰻霂<EFBFBD><EFBFBD><EFBFBD>寥<EFBFBD>撖澆<EFBFBD>]<EFBFBD>厰僼嚗<EFBFBD><EFBFBD>蝳<EFBFBD>鍂嚗?
|
||||
- 左侧:已选择 X 篇 | [批量删除]按钮
|
||||
- 右侧:[从知识库批量导入]按钮(暂禁用)
|
||||
```
|
||||
|
||||
**<EFBFBD>孵𢆡<EFBFBD><EFBFBD>眏**嚗?
|
||||
**改动理由**:
|
||||
- 支持批量操作
|
||||
- 銝箸𧊋<EFBFBD>亦<EFBFBD><EFBFBD>亥<EFBFBD>摨𤘪鸌<EFBFBD>誩紡<EFBFBD>仿<EFBFBD><EFBFBD>坔<EFBFBD><EFBFBD>?
|
||||
- 为未来的知识库批量导入预留入口
|
||||
|
||||
---
|
||||
|
||||
### **7. 提示信息优化**
|
||||
|
||||
**靽格㺿<EFBFBD>?*嚗?
|
||||
**修改前**:
|
||||
```
|
||||
<EFBFBD>鞟內嚗朞秐撠煾<EFBFBD>閬?蝭<><E89DAD><EFBFBD>桃<EFBFBD>PDF撌脣停蝏芣<E89D8F><E88AA3>賢鍳<E8B3A2>典<EFBFBD>蝑𥕢遙<F0A595A2>~<EFBFBD>?
|
||||
提示:至少需要1篇文献的PDF已就绪才能启动复筛任务。
|
||||
```
|
||||
|
||||
**靽格㺿<EFBFBD>?*嚗?
|
||||
**修改后**:
|
||||
```
|
||||
<EFBFBD>芯<EFBFBD>隡牐遙雿𠠬DF嚗?
|
||||
<EFBFBD>鞟內嚗朞秐撠煾<EFBFBD>閬?蝭<><E89DAD><EFBFBD>桃<EFBFBD>PDF撌脣停蝏芣<E89D8F><E88AA3>賢鍳<E8B3A2>典<EFBFBD>蝑𥕢遙<F0A595A2>~<EFBFBD><EFBD9E>窈<EFBFBD>孵稬銵冽聢銝剔<E98A9D><E58994>𣂷<EFBFBD>隡蘯DF<44>烐<EFBFBD><E78390>桐蛹<E6A190><E89BB9>讃銝𠹺<E98A9D><F0A0B9BA>冽<EFBFBD><E586BD>?
|
||||
未上传任何PDF:
|
||||
提示:至少需要1篇文献的PDF已就绪才能启动复筛任务。请点击表格中的【上传PDF】按钮为文献上传全文。
|
||||
|
||||
部分PDF已就绪:
|
||||
<EFBFBD>鞟內嚗𡁜歇<EFBFBD>?X 蝭<><E89DAD><EFBFBD>桃<EFBFBD>PDF撠梁貌嚗諹<E59A97><E8ABB9>?Y 蝭<><E89DAD>銝𠹺<E98A9D><F0A0B9BA><EFBFBD><EFBFBD><EFBFBD>臭誑蝏抒賒銝𠹺<E98A9D><F0A0B9BA>拐<EFBFBD>PDF嚗峕<E59A97><E5B395>湔𦻖<E6B994>臬𢆡憭滨<E686AD>嚗<EFBFBD>𧊋銝𠹺<E98A9D>PDF<44><46><EFBFBD><EFBFBD>桀<EFBFBD>鋡怨歲餈<E6ADB2><E9A488><EFBFBD>?
|
||||
提示:已有 X 篇文献的PDF就绪,还有 Y 篇待上传。您可以继续上传剩余PDF,或直接启动复筛(未上传PDF的文献将被跳过)。
|
||||
|
||||
全部PDF已就绪:
|
||||
<EFBFBD>鞟內嚗𡁜歇<EFBFBD>?X 蝭<><E89DAD><EFBFBD>桃<EFBFBD>PDF撠梁貌嚗<E8B28C>虾隞亙鍳<E4BA99>典<EFBFBD><E585B8><EFBFBD><EFBFBD>蝑𥕢遙<F0A595A2>?
|
||||
提示:已有 X 篇文献的PDF就绪,可以启动全文复筛任务
|
||||
```
|
||||
|
||||
**<EFBFBD>孵𢆡<EFBFBD><EFBFBD>眏**嚗?
|
||||
- <EFBFBD>寞旿銝滚<EFBFBD><EFBFBD>嗆<EFBFBD><EFBFBD>遬蝷箔<EFBFBD><EFBFBD>峕<EFBFBD>蝷?
|
||||
**改动理由**:
|
||||
- 根据不同状态显示不同提示
|
||||
- 明确告知操作步骤
|
||||
|
||||
---
|
||||
|
||||
## <EFBFBD>㴓 **<EFBFBD>詨<EFBFBD><EFBFBD>寡<EFBFBD><EFBFBD>?*
|
||||
## 🎯 **核心改进点**
|
||||
|
||||
### **璁<EFBFBD>艙<EFBFBD><EFBFBD>氖**嚗?
|
||||
### **概念分离**:
|
||||
```
|
||||
<EFBFBD><EFBFBD>讃<EFBFBD><EFBFBD>縑<EFBFBD>荔<EFBFBD>甇仿炊1嚗?
|
||||
<EFBFBD>?
|
||||
PDF<EFBFBD>冽<EFBFBD><EFBFBD><EFBFBD>辣嚗<EFBFBD>郊撉?嚗?
|
||||
<EFBFBD>?
|
||||
<EFBFBD>臬𢆡蝑偦<EFBFBD>㚁<EFBFBD>甇仿炊3嚗?
|
||||
文献元信息(步骤1)
|
||||
↓
|
||||
PDF全文文件(步骤2)
|
||||
↓
|
||||
启动筛选(步骤3)
|
||||
```
|
||||
|
||||
### **瘚<EFBFBD><EFBFBD>皜<EFBFBD>苊<EFBFBD>?*嚗?
|
||||
### **流程清晰化**:
|
||||
1. **步骤1**:获取文献列表(只要标题、摘要等元信息)
|
||||
2. **甇仿炊2**嚗帋蛹瘥讐<E798A5><E8AE90><EFBFBD>讃銝𠹺<E98A9D>PDF嚗<46><E59A97>撖嫣<E69296><E5ABA3>唾<EFBFBD>嚗?
|
||||
3. **甇仿炊3**嚗𡁜鍳<F0A1819C>典<EFBFBD><E585B8><EFBFBD><EFBFBD>蝑𨥈<E89D91>閬<EFBFBD><E996AC><EFBFBD>喳<EFBFBD>1蝭𤊿DF撠梁貌嚗?
|
||||
2. **步骤2**:为每篇文献上传PDF(一对一关联)
|
||||
3. **步骤3**:启动全文复筛(要求至少1篇PDF就绪)
|
||||
|
||||
---
|
||||
|
||||
## 📊 **修改统计**
|
||||
|
||||
```
|
||||
靽格㺿<EFBFBD><EFBFBD>辣嚗?銝?
|
||||
- FulltextSettings.tsx (621銵?
|
||||
修改文件:1个
|
||||
- FulltextSettings.tsx (621行)
|
||||
|
||||
靽格㺿<EFBFBD><EFBFBD>捆嚗?
|
||||
- <EFBFBD>𣳇膄隞<EFBFBD><EFBFBD>嚗鰺50銵䕘<EFBFBD><EFBFBD>𣳇膄Tab3<EFBFBD>亥<EFBFBD>摨㯄<EFBFBD>㗇𥋘嚗?
|
||||
修改内容:
|
||||
- 删除代码:~50行(删除Tab3知识库选择)
|
||||
- 修改代码:~150行(重写步骤说明、提示信息)
|
||||
- 新增代码:~30行(批量操作工具栏、重新上传按钮)
|
||||
|
||||
Linter<EFBFBD>躰秤嚗?銝?
|
||||
Linter错误:0个
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## <EFBFBD>?**撉峕𤣰<E5B395><F0A4A3B0><EFBFBD>**
|
||||
## ✅ **验收标准**
|
||||
|
||||
### **UI撅閧內**嚗?
|
||||
- <EFBFBD>?甇仿炊1<E7828A>?銝枚ab嚗<62><E59A97><EFBFBD>萘<EFBFBD>撖澆<E69296> / <20>见𢆡銝𠹺<E98A9D>Excel嚗?
|
||||
- <EFBFBD>?甇仿炊1<E7828A><31>xcel銝𠹺<E98A9D><F0A0B9BA>𡒊&霂湔<E99C82>"銝滚<E98A9D><E6BB9A>促DF"
|
||||
- <EFBFBD>?甇仿炊2<E7828A><32><EFBFBD>銝?銝𠹺<E98A9D><F0A0B9BA>冽<EFBFBD><E586BD><EFBFBD>讃"
|
||||
- <EFBFBD>?甇仿炊2瘥讛<E798A5><E8AE9B>?銝𠹺<E98A9D>PDF"<22>?<3F>亥<EFBFBD>摨?<3F>厰僼
|
||||
- <EFBFBD>?甇仿炊2<E7828A><32><EFBFBD>蝷箸覔<E7AEB8>娑DF<44>嗆<EFBFBD><E59786>𢆡<EFBFBD><F0A286A1><EFBFBD><EFBFBD>?
|
||||
### **UI展示**:
|
||||
- ✅ 步骤1有2个Tab(从初筛导入 / 手动上传Excel)
|
||||
- ✅ 步骤1的Excel上传明确说明"不包含PDF"
|
||||
- ✅ 步骤2标题为"上传全文文献"
|
||||
- ✅ 步骤2每行有"上传PDF"和"知识库"按钮
|
||||
- ✅ 步骤2的提示根据PDF状态动态变化
|
||||
|
||||
### **<EFBFBD>餉<EFBFBD>甇<EFBFBD>&**嚗?
|
||||
- <EFBFBD>?Excel<EFBFBD>芸紡<EFBFBD>交<EFBFBD><EFBFBD>桀<EFBFBD>靽⊥<EFBFBD>
|
||||
- <EFBFBD>?PDF<EFBFBD>朞<EFBFBD>銵冽聢銝剔<EFBFBD>"銝𠹺<E98A9D>PDF"<22>厰僼<E58EB0>𣂷葵銝𠹺<E98A9D>
|
||||
- <EFBFBD>?<3F>亥<EFBFBD>摨枏<E691A8><E69E8F>賢銁甇仿炊2嚗䔶<E59A97><E494B6>冽郊撉?
|
||||
- <EFBFBD>?<3F><>捂<EFBFBD>典<EFBFBD><E585B8><EFBFBD>讃瘝⊥<E7989D>PDF銋笔虾隞亙鍳<E4BA99>其遙<E585B6>?
|
||||
### **逻辑正确**:
|
||||
- ✅ Excel只导入文献元信息
|
||||
- ✅ PDF通过表格中的"上传PDF"按钮逐个上传
|
||||
- ✅ 知识库功能在步骤2,不在步骤1
|
||||
- ✅ 允许部分文献没有PDF也可以启动任务
|
||||
|
||||
---
|
||||
|
||||
## 🚀 **后续工作**
|
||||
|
||||
### **隡睃<EFBFBD>蝥判1嚗<EFBFBD><EFBFBD>憿鳴<EFBFBD>**嚗?
|
||||
1. <EFBFBD>?<3F>滨垢<E6BBA8>餉<EFBFBD>靚<EFBFBD>㟲嚗<E39FB2>歇摰峕<E691B0>嚗?
|
||||
2. <EFBFBD>?摰䂿緵Excel閫<6C><E996AB><EFBFBD>蠘<EFBFBD>嚗<EFBFBD>圾<EFBFBD>鞉<EFBFBD><E99E89>桀<EFBFBD>靽⊥<E99DBD>嚗?
|
||||
3. <EFBFBD>?摰䂿緵PDF銝𠹺<E98A9D>API撖寞𦻖
|
||||
### **优先级P1(必须)**:
|
||||
1. ✅ 前端逻辑调整(已完成)
|
||||
2. ⏳ 实现Excel解析功能(解析文献元信息)
|
||||
3. ⏳ 实现PDF上传API对接
|
||||
|
||||
### **隡睃<EFBFBD>蝥判2嚗<EFBFBD>遣霈殷<EFBFBD>**嚗?
|
||||
1. PDF<EFBFBD>寥<EFBFBD>銝𠹺<EFBFBD>嚗<EFBFBD><EFBFBD><EFBFBD>賢<EFBFBD>銝枉DF<EFBFBD><EFBFBD>辣嚗?
|
||||
### **优先级P2(建议)**:
|
||||
1. PDF批量上传(拖拽多个PDF文件)
|
||||
2. 从知识库选择PDF功能
|
||||
3. Excel模板下载功能
|
||||
|
||||
@@ -271,23 +271,22 @@ Linter错误
|
||||
|
||||
## 📝 **备注**
|
||||
|
||||
### **<EFBFBD>喲睸霈曇恣<EFBFBD>笔<EFBFBD>**嚗?
|
||||
1. **璁<EFBFBD>艙<EFBFBD><EFBFBD>氖**嚗𡁏<E59A97><F0A1818F>桀<EFBFBD>靽⊥<E99DBD> <20>?PDF<44><46>辣
|
||||
### **关键设计原则**:
|
||||
1. **概念分离**:文献元信息 ≠ PDF文件
|
||||
2. **流程清晰**:三步流程,逐步推进
|
||||
3. **<EFBFBD>菜暑<EFBFBD>?*嚗𡁜<E59A97>霈賊<E99C88><E8B38A><EFBFBD><EFBFBD><EFBFBD>格<EFBFBD>PDF銋笔虾<E7AC94>臬𢆡
|
||||
3. **灵活性**:允许部分文献无PDF也可启动
|
||||
|
||||
### **<EFBFBD>冽<EFBFBD>雿㯄<EFBFBD>隡睃<EFBFBD>**嚗?
|
||||
### **用户体验优化**:
|
||||
- 每一步都有清晰的说明
|
||||
- 銝滚<EFBFBD><EFBFBD>嗆<EFBFBD><EFBFBD><EFBFBD>銝滚<EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝷?
|
||||
- 不同状态有不同的提示
|
||||
- 支持重新上传PDF
|
||||
- 憸<EFBFBD><EFBFBD><EFBFBD>亥<EFBFBD>摨枏<EFBFBD><EFBFBD>?
|
||||
- 预留知识库入口
|
||||
|
||||
---
|
||||
|
||||
**文档版本**: v1.0
|
||||
**<EFBFBD><EFBFBD><EFBFBD>擧凒<EFBFBD>?*: 2025-01-23
|
||||
**<EFBFBD>詨<EFBFBD><EFBFBD><EFBFBD>﹝**: [2025-01-23_<EFBFBD>冽<EFBFBD>憭滨<EFBFBD><EFBFBD>滨垢撘<EFBFBD><EFBFBD>穃<EFBFBD><EFBFBD>?md](./2025-01-23_<EFBFBD>冽<EFBFBD>憭滨<EFBFBD><EFBFBD>滨垢撘<EFBFBD><EFBFBD>穃<EFBFBD><EFBFBD>?md)
|
||||
|
||||
**最后更新**: 2025-01-23
|
||||
**相关文档**: [2025-01-23_全文复筛前端开发完成.md](./2025-01-23_全文复筛前端开发完成.md)
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user