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:
2026-01-16 13:42:10 +08:00
parent 98d862dbd4
commit 66255368b7
560 changed files with 70424 additions and 52353 deletions

View File

@@ -1,10 +1,12 @@
# RVW蝔蹂辣摰⊥䰻璅<EFBFBD> - 敶枏<E695B6><E69E8F><EFBFBD><E59786><EFBFBD><EFBFBD><E69298><EFBFBD><E78390>?
> **<2A><><EFBFBD><EFB99D>𧋦嚗?* v3.2
> **<EFBFBD>𥕦遣<EFBFBD><EFBFBD>嚗?* 2026-01-07
# RVW稿件审查模块 - 当前状态与开发指南
> **文档版本:** v3.2
> **创建日期:** 2026-01-07
> **最后更新:** 2026-01-10
> **蝏湔擪<EFBFBD><EFBFBD><EFBFBD>** 撘<><E69298>穃𣪧<E7A983>?
> **敶枏<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>** <EFBFBD>?**Phase 1-6 摰峕<EFBFBD>嚗玺chema<EFBFBD>𠉛氖摰峕<EFBFBD>嚗峕芋<EFBFBD>?5%<25>舐鍂**
> **<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?* 敹恍<E695B9><EFBFBD>ΟVW璅<E79285><E288AA><EFBFBD><E59786><EFBFBD>銝箸鰵AI<41><EFBFBD><E68B87>𣂷<EFBFBD>銝𠹺<E98A9D><F0A0B9BA>?
> **维护者:** 开发团队
> **当前状态:** **Phase 1-6 完成Schema隔离完成模块95%可用**
> **文档目的:** 快速了解RVW模块状态为新AI助手提供上下文
---
## 📊 模块概览
@@ -15,171 +17,219 @@
|------|------|
| **模块名称** | RVW - 稿件审查系统 (Review) |
| **模块定位** | 智能期刊审稿辅助系统(可独立销售) |
| **<EFBFBD><EFBFBD><EFBFBD>隞瑕<EFBFBD>?* | 潃鐥<E6BD83>潃鐥<E6BD83>潃?<3F><><EFBFBD> |
| **<EFBFBD><EFBFBD><EFBFBD>?* | 潃鐥<E6BD83>潃鐥<E6BD83>潃?<3F><><EFBFBD><EFBFBD><EFBFBD>瑞黎摰<E9BB8E><E691B0>銝滚<E98A9D>嚗?|
| **商业价值** | ⭐⭐⭐⭐⭐ 极高 |
| **独立性** | ⭐⭐⭐⭐⭐ 极高(用户群完全不同) |
| **目标用户** | 期刊初审编辑 |
| **<EFBFBD><EFBFBD>𤑳𠶖<EFBFBD>?* | <20>?**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>100%摰峕<E691B0>嚗峕𣈲<E5B395><F0A388B2>ord撖澆枂嚗<E69E82><EFBFBD><E6AD87><EFBFBD><EFBFBD>?frontend-v2** |
| **开发状态** | ✅ **核心功能100%完成支持Word导出已集成到 frontend-v2** |
### 核心目标
> <EFBFBD><EFBFBD><EFBFBD>銝?*"撘<>蝞勗朖<E58B97>?**<2A><><EFBFBD>賢恣蝔踹極<E8B8B9><EFBFBD><E791AF><EFBFBD>颲睲<E9A2B2>隡删阮隞塚<E99A9E>蝟餌<E89D9F><E9A48C>芸𢆡餈鞱<E9A488><E99EB1><EFBFBD><EFBFBD><E79289><EFBFBD><EFBFBD><E996AB><EFBFBD>?<3F><EFBFBD>摮佗<E691AE>嚗諹<E59A97><E8ABB9>箏虾靘𥕦<E99D98><F0A595A6><EFBFBD><EFBFBD>摰∠阮<E288A0><EFBFBD><E4BA99>?>
> **<2A><EFBFBD><E8A9A8><EFBFBD><EFBFBD>**嚗帋<E59A97>隡惩<E99AA1><E683A9>箸𥁒<E7AEB8>?< 2<><32><EFBFBD>嚗𥡝<E59A97><F0A5A19D><EFBFBD><EFBFBD>折䔮憸䀹<E686B8><E480B9><EFBFBD> > 80%
> 打造一个**"开箱即用"**的智能审稿工具。编辑上传稿件,系统自动运行双重检查(规范性+方法学),输出可供参考的审稿报告。
>
> **核心指标**:上传到出报告 < 2分钟规范性问题检出率 > 80%
### 功能规格
#### 核心AI能力已完成 ✅)
1. **蝔輻漲閫<EFBFBD><EFBFBD><EFBFBD><EFBFBD>隡?*嚗?1憿寞<E686BF><E5AF9E><EFBFBD><EFBFBD>
- <EFBFBD><EFBFBD><EFBFBD>摮埈㺭<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䕸PI蝑? - <20><EFBFBD><E7AE94>𠹺葉<F0A0B9BA>𤾸龫摮西<E691AE>憯唳<E686AF>敹𨰜<E695B9>讠阮蝥行<E89DA5><E8A18C>?
2. **<EFBFBD><EFBFBD>摮西<EFBFBD>隡?*嚗?<3F><EFBFBD>嚗?0銝芣<E98A9D><E88AA3><EFBFBD>嚗? - 蝘𤑳<E89D98>霈曇恣霂<E681A3>摯嚗?銝芣<E98A9D><E88AA3><EFBFBD>嚗? - 蝏蠘恣摮行䲮瘜閙<E7989C>餈啗<E9A488>隡堆<E99AA1>5銝芣<E98A9D><E88AA3><EFBFBD>嚗? - 蝏蠘恣<E8A098><E681A3><EFBFBD><EFBFBD>摯嚗?銝芣<E98A9D><E88AA3><EFBFBD>嚗?
1. **稿约规范性评估**11项标准
- 文题字数、摘要结构、参考文献、图片DPI等
- 基于《中华医学超声杂志》稿约标准
2. **方法学评估**3部分20个检查点
- 科研设计评估9个检查点
- 统计学方法描述评估5个检查点
- 统计分析评估6个检查点
3. **综合评分 + PICO提取**
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0-100嚗? - <20><EFBFBD>摮衣𠶖<E8A1A3><F0A0B696><EFBFBD><EFBFBD>𣞁<EFBFBD>躰秤 <20>椬摮条<E691AE> <20><EFBFBD><EFBFBD>嚗? - PICO蝏𤘪<E89D8F><F0A498AA>𡝗<EFBFBD><F0A19D97><EFBFBD>P/I/C/O嚗?
- 规范性分数0-100
- 方法学状态(🔴错误 🟡存疑 🟢通过)
- PICO结构化提取P/I/C/O
#### 交互功能(✅ 已完成)
| <EFBFBD><EFBFBD> | <20><EFBFBD><E68A92>?| <20><EFBFBD><E59581>?| <20><EFBFBD>?|
| 功能 | 旧版本 | 新版本 | 状态 |
|------|--------|--------|------|
| <EFBFBD><EFBFBD>隞嗡<EFBFBD>隡?| <20>?| <20>?| <20>?撌脣<E6928C><E884A3>?|
| <EFBFBD><EFBFBD>銝𠹺<EFBFBD> | <20>?| <20>?| <20>?撌脣<E6928C><E884A3>?|
| 摰∠阮撌乩<EFBFBD><EFBFBD><EFBFBD>摰質”嚗?| <20>?| <20>?| <20>?撌脣<E6928C><E884A3>?|
| <EFBFBD><EFBFBD>雿㯄<EFBFBD>㗇𥋘 | <20>芸𢆡 | <20><EFBFBD><E586BD><EFBFBD>?| <20>?撌脣<E6928C><E884A3>?|
| <EFBFBD><EFBFBD><EFBFBD><EFBFBD> | <20>?| <20>?| <20>?撌脣<E6928C><E884A3>?|
| <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?| <20>?| <20>?| <20>?撌脣<E6928C><E884A3>?|
| <EFBFBD><EFBFBD>蟮敶埝﹝ | <20>?| <20>?| <20><EFBFBD> <20>唳旿摨枏歇<E69E8F><EFBFBD>嚗𪄇I<F0AA8487><49><EFBFBD> |
| 蝟餌<EFBFBD>霈曄蔭 | <20>?| <20>?| <20><EFBFBD> <20><><EFBFBD><EFBFBD><E69298>?|
| <EFBFBD><EFBFBD>憿菟𢒰 | <20>?| <20><EFBFBD> | <20><EFBFBD> 憭滨鍂撟喳蝱<E596B3><EFBFBD> |
| PICO<EFBFBD><EFBFBD> | <20>?| <20>?| <20><EFBFBD> <20>唳旿摨枏歇<E69E8F><EFBFBD>嚗𪄇I<F0AA8487><49><EFBFBD> |
| 单文件上传 | ✅ | ✅ | ✅ 已完成 |
| 批量上传 | ❌ | ✅ | ✅ 已完成 |
| 审稿工作台(宽表) | ❌ | ✅ | ✅ 已完成 |
| 智能体选择 | 自动 | 用户可选 | ✅ 已完成 |
| 批量操作 | ❌ | ✅ | ✅ 已完成 |
| 状态筛选 | ❌ | ✅ | ✅ 已完成 |
| 历史归档 | ❌ | ✅ | ⏸️ 数据库已支持UI暂缓 |
| 系统设置 | ❌ | ✅ | ⏸️ 暂不开发 |
| 登录页面 | ❌ | ⏸️ | ⏸️ 复用平台登录 |
| PICO卡片 | ❌ | ✅ | ⏸️ 数据库已支持UI暂缓 |
---
## <EFBFBD><EFBFBD>儭?<3F><EFBFBD><E59786><EFBFBD>?
### <20>?撌脣<E6928C><E884A3><EFBFBD>蝘鳴<E89D98>Modules嚗?
## 🏗️ 架构状态
### ✅ 已完成迁移Modules
```
<EFBFBD>𡒊垢嚗<EFBFBD><EFBFBD> 撌脣<E6928C><E884A3><EFBFBD>嚗?backend/src/modules/rvw/
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> routes/index.ts # v2 API頝舐眏嚗?api/v2/rvw嚗?<3F><EFBFBD><E98EBF><EFBFBD> controllers/reviewController.ts # <20><EFBFBD><E689B9><EFBFBD><E58981>急鸌<E680A5>𤩺<EFBFBD>雿栶<E99BBF><E6A0B6><EFBFBD><EFBFBD><E8B3AD>㗇𥋘嚗?<3F><EFBFBD><E98EBF><EFBFBD> services/
<EFBFBD>? <20><EFBFBD><E98EBF><EFBFBD> reviewService.ts # <20><EFBFBD><E8A9A8>滚𦛚嚗<F0A69B9A><EFBFBD><EFBFBD>撱箝<E692B1><E7AE9D><EFBFBD>銵䕘<E98AB5>
<EFBFBD>? <20><EFBFBD><E98EBF><EFBFBD> editorialService.ts # 蝔輻漲閫<E6BCB2><E996AB><EFBFBD><EFBFBD>隡?<3F>? <20><EFBFBD><E98EBF><EFBFBD> methodologyService.ts # <20><EFBFBD>摮西<E691AE>隡?<3F>? <20><EFBFBD><E5A999><EFBFBD> utils.ts # 撌亙<E6928C><E4BA99>賣㺭
后端(✅ 已完成):
backend/src/modules/rvw/
├── routes/index.ts # v2 API路由/api/v2/rvw
├── controllers/reviewController.ts # 控制器(含批量操作、智能体选择)
├── services/
│ ├── reviewService.ts # 核心服务(任务创建、执行)
│ ├── editorialService.ts # 稿约规范性评估
│ ├── methodologyService.ts # 方法学评估
│ └── utils.ts # 工具函数
├── workers/
<EFBFBD>? <20><EFBFBD><E5A999><EFBFBD> reviewWorker.ts # pg-boss<EFBFBD>郊隞餃𦛚憭<EFBFBD><EFBFBD>
│ └── reviewWorker.ts # pg-boss异步任务处理
├── types/index.ts # TypeScript类型定义
└── __tests__/ # API测试脚本
<EFBFBD>滨垢嚗<EFBFBD><EFBFBD> 撌脣<E6928C><E884A3><EFBFBD>嚗?frontend-v2/src/modules/rvw/
前端(✅ 已完成):
frontend-v2/src/modules/rvw/
├── index.tsx # 模块入口
├── api/index.ts # API接口
├── types/index.ts # 类型定义
├── styles/index.css # 样式文件
├── pages/
<EFBFBD>? <20><EFBFBD><E5A999><EFBFBD> Dashboard.tsx # 摰∠阮撌乩<EFBFBD><EFBFBD><EFBFBD>隞餃𦛚<EFBFBD>𡑒”<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
│ └── Dashboard.tsx # 审稿工作台(任务列表、筛选)
└── components/
├── Header.tsx # 页头(上传按钮)
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> Sidebar.tsx # 靘扯器<EFBFBD>誩紡<EFBFBD>? <20><EFBFBD><E98EBF><EFBFBD> TaskTable.tsx # 隞餃𦛚<E9A483>𡑒”銵冽聢
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> TaskDetail.tsx # 隞餃𦛚霂行<E99C82><EFBFBD><E59A97>摨行辺+<2B><EFBFBD>+Word撖澆枂嚗? <20><EFBFBD><E98EBF><EFBFBD> EditorialReport.tsx # 蝔輻漲閫<E6BCB2><E996AB><EFBFBD>扳𥁒<E689B3>? <20><EFBFBD><E98EBF><EFBFBD> MethodologyReport.tsx # <20><EFBFBD>摮西<E691AE>隡唳𥁒<E594B3>? <20><EFBFBD><E98EBF><EFBFBD> AgentModal.tsx # <20><EFBFBD>雿㯄<E99BBF>㗇𥋘撘寧<E69298>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ScoreRing.tsx # <EFBFBD><EFBFBD><EFBFBD><EFBFBD>隞?
├── Sidebar.tsx # 侧边栏导航
├── TaskTable.tsx # 任务列表表格
├── TaskDetail.tsx # 任务详情(进度条+报告+Word导出
├── EditorialReport.tsx # 稿约规范性报告
├── MethodologyReport.tsx # 方法学评估报告
├── AgentModal.tsx # 智能体选择弹窗
└── ScoreRing.tsx # 评分环组件
旧版本(保留兼容):
backend/src/legacy/
├── routes/reviewRoutes.ts # v1 API路由保留
├── controllers/reviewController.ts
└── services/reviewService.ts
Prompt<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?backend/prompts/
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> review_editorial_system.txt # 蝔輻漲霂<E6BCB2>摯嚗?66銵䕘<E98AB5>
Prompt(保持不变):
backend/prompts/
├── review_editorial_system.txt # 稿约评估266行
└── review_methodology_system.txt # 方法学评估257行
<EFBFBD>唳旿摨橒<EFBFBD><EFBFBD>?撌脣<E6928C><E884A3><EFBFBD>嚗?- ReviewTask銵典歇瘛餃<E7989B><E9A483><EFBFBD>畾蛛<E795BE>selectedAgents, editorialScore, methodologyScore, methodologyStatus, picoExtract, isArchived, archivedAt
- <EFBFBD>?Schema撌脰<E6928C>蝘餃<E89D98> rvw_schema嚗?026-01-10摰峕<E691B0>嚗?```
数据库(✅ 已完成):
- ReviewTask表已添加新字段selectedAgents, editorialScore, methodologyScore, methodologyStatus, picoExtract, isArchived, archivedAt
- ✅ Schema已迁移到 rvw_schema2026-01-10完成
```
---
## <EFBFBD><EFBFBD><><E69298>𤏸<EFBFBD>摨?
| Phase | 隞餃𦛚 | <20><EFBFBD>?| 摰峕<E691B0><E5B395><EFBFBD> |
## 📋 开发进度
| Phase | 任务 | 状态 | 完成日期 |
|-------|------|------|---------|
| Phase 1 | <EFBFBD>𡒊垢璅<EFBFBD><EFBFBD>宏銝擧<EFBFBD>撅?| <20>?撌脣<E6928C><E884A3>?| 2026-01-07 |
| Phase 2 | <EFBFBD>唳旿摨枏<EFBFBD>畾菜<EFBFBD>撅?| <20>?撌脣<E6928C><E884A3>?| 2026-01-07 |
| Phase 3 | <EFBFBD>滨垢<EFBFBD>齿<EFBFBD>嚗Êrontend-v2嚗?| <20>?撌脣<E6928C><E884A3>?| 2026-01-07 |
| Phase 4 | <EFBFBD><EFBFBD><EFBFBD>瘚贝<EFBFBD>銝𦻓ug靽桀<EFBFBD> | <20>?撌脣<E6928C><E884A3>?| 2026-01-10 |
| Phase 5 | <EFBFBD><EFBFBD>撖澆枂嚗Áord嚗?| <20>?撌脣<E6928C><E884A3>?| 2026-01-10 |
| Phase 6 | Schema<EFBFBD>𠉛氖餈<EFBFBD>宏 | <20>?撌脣<E6928C><E884A3>?| 2026-01-10 |
| Phase 7 | 蝟餌<EFBFBD>霈曄蔭銝𤾸<EFBFBD>獢?| <20><EFBFBD> <20><><EFBFBD> | - |
| Phase 1 | 后端模块迁移与扩展 | ✅ 已完成 | 2026-01-07 |
| Phase 2 | 数据库字段扩展 | ✅ 已完成 | 2026-01-07 |
| Phase 3 | 前端重构frontend-v2 | ✅ 已完成 | 2026-01-07 |
| Phase 4 | 集成测试与Bug修复 | ✅ 已完成 | 2026-01-10 |
| Phase 5 | 报告导出Word | ✅ 已完成 | 2026-01-10 |
| Phase 6 | Schema隔离迁移 | ✅ 已完成 | 2026-01-10 |
| Phase 7 | 系统设置与归档 | ⏸️ 暂缓 | - |
| **总计** | - | **95%** | - |
### Phase 1-5 完成内容
**后端Phase 1**
- <20>?<3F>𥕦遣 `backend/src/modules/rvw/`<E79285>蝏𤘪<E89D8F>
- <20>?餈<>宏撟嗡<E6929F><E597A1>?reviewService<EFBFBD><EFBFBD>ditorialService<EFBFBD><EFBFBD>ethodologyService
- <20>?摰䂿緵<E482BF><EFBFBD>雿㯄<E99BBF>㗇𥋘嚗ìelectedAgents嚗塄ditorial/methodology/both嚗?- <20>?摰䂿緵<E482BF><EFBFBD>餈鞱<E9A488>API嚗Ê̄atchRunReviewTasks嚗?- <20>?<3F>踵揢 console.log 銝?logger <20>滚𦛚
- <20>?瘜典<E7989C> v2 API頝舐眏嚗?api/v2/rvw嚗?- <20>?摰䂿緵 pg-boss 撘<>郊隞餃𦛚憭<F0A69B9A><E686AD>嚗ǐeviewWorker嚗?
- ✅ 创建 `backend/src/modules/rvw/` 模块结构
- ✅ 迁移并优化 reviewService、editorialService、methodologyService
- ✅ 实现智能体选择selectedAgentseditorial/methodology/both
- ✅ 实现批量运行APIbatchRunReviewTasks
- ✅ 替换 console.log 为 logger 服务
- ✅ 注册 v2 API路由/api/v2/rvw
- ✅ 实现 pg-boss 异步任务处理reviewWorker
**数据库Phase 2**
- <20>?瘛餃<E7989B> selectedAgents 摮埈挾嚗𠄎tring[]嚗?- <20>?瘛餃<E7989B> editorialScore 摮埈挾嚗㇅loat?嚗?- <20>?瘛餃<E7989B> methodologyScore 摮埈挾嚗㇅loat?嚗? 2026-01-10<31><EFBFBD>
- <20>?瘛餃<E7989B> methodologyStatus 摮埈挾嚗𠄎tring?嚗?- <20>?瘛餃<E7989B> picoExtract 摮埈挾嚗㇇son?嚗?- <20>?瘛餃<E7989B> isArchived<65><64>rchivedAt 摮埈挾嚗<E68CBE><E59A97><EFBFBD>𣈲<EFBFBD><F0A388B2><EFBFBD>
- <20>?雿輻鍂 prisma db push <20>峕郊<E5B395>唳㺭<E594B3><EFBFBD>
- ✅ 添加 selectedAgents 字段String[]
- ✅ 添加 editorialScore 字段Float?
- ✅ 添加 methodologyScore 字段Float?- 2026-01-10新增
- ✅ 添加 methodologyStatus 字段String?
- ✅ 添加 picoExtract 字段Json?
- ✅ 添加 isArchived、archivedAt 字段(归档支持)
- ✅ 使用 prisma db push 同步到数据库
**前端Phase 3**
- <20>?<3F>𥕦遣 `frontend-v2/src/modules/rvw/`<E79285><E288AA><EFBFBD>蝏𤘪<E89D8F>
- <20>?摰䂿緵 Dashboard 憿菟𢒰嚗<EFBFBD><EFBFBD><EFBFBD>銵具<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𤩺<EFBFBD>雿頣<EFBFBD>
- <20>?摰䂿緵 TaskDetail <EFBFBD>辣嚗<EFBFBD>恣蝔輯<EFBFBD>摨行辺<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嗥𠶖<EFBFBD><EFBFBD>蔭霂<EFBFBD>
- <20>?摰䂿緵 EditorialReport <EFBFBD>辣嚗<EFBFBD>阮蝥西<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>隡唳𥁒<EFBFBD>𠺪<EFBFBD>
- <20>?摰䂿緵 MethodologyReport <EFBFBD>辣嚗<EFBFBD>䲮瘜訫郎霂<EFBFBD><EFBFBD><EFBFBD>嚗?- <20>?摰䂿緵 AgentModal 蝏<>辣嚗<E8BEA3><EFBFBD><EFBFBD><E8B3AD>㗇𥋘撘寧<E69298>嚗?- <20>?瘜典<E7989C><E585B8>?moduleRegistry.ts
- ✅ 创建 `frontend-v2/src/modules/rvw/` 模块目录结构
- ✅ 实现 Dashboard 页面(任务列表、筛选、批量操作)
- ✅ 实现 TaskDetail 组件(审稿进度条、实时状态轮询)
- ✅ 实现 EditorialReport 组件(稿约规范性评估报告)
- ✅ 实现 MethodologyReport 组件(方法学评估报告)
- ✅ 实现 AgentModal 组件(智能体选择弹窗)
- ✅ 注册到 moduleRegistry.ts
**集成测试与Bug修复Phase 4**
- <20>?靽桀<E99DBD><E6A180><EFBFBD>摮血<E691AE><E8A180><EFBFBD><E594AC>曄內<E69B84><EFBFBD><EFBFBD><E59A97>銵券△<E588B8>曄內"warn"<22><EFBFBD><E494B6><EFBFBD><E887AC><EFBFBD>
- <20>?靽桀<E99DBD><E6A180><EFBFBD>㗇䲮瘜訫郎<E8A8AB>嗉祕<E59789><E7A595>△銝齿遬蝷箸𥁒<E7AEB8>𢠃䔮憸?- <20>?靽桀<E99DBD> activeTab 暺䁅恕<E48185>澆紡<E6BE86><EFBFBD><E6B8A1>曄內<E69B84><EFBFBD>
- <20>?摰峕㟲瘚贝<E7989A><E8B49D>閙惣<E99699><EFBFBD><E8B3AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>雿枏恣蝔踵<E89D94>蝔?
**<2A><EFBFBD>撖澆枂嚗㇊hase 5嚗㚁<E59A97>**
- <20>?摰㕑<E691B0> docx <20>?file-saver 摨?- <20>?摰䂿緵 Word <20><>﹝撖澆枂<E6BE86><EFBFBD>
- <20>?<3F><EFBFBD>蝏𤘪<E89D8F><F0A498AA>𡝗𥁒<F0A19D97>𠺪<EFBFBD><F0A0BAAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>砌縑<E7A08C>航”<E888AA><EFBFBD><E6BDA6>阮蝥西<E89DA5><E8A5BF><EFBFBD><EFBFBD><EFBFBD><E689BC>䲮瘜訫郎霂<E9838E>摯嚗?- <20>?<3F><EFBFBD><E6A185><EFBFBD>遣霈桐蝙<E6A190><EFBFBD><E585B6><EFBFBD><E5B1B8><EFBFBD>霈?
**Schema<6D>𠉛氖餈<E6B096>宏嚗㇊hase 6嚗㚁<E59A97>**
- <20>?撠?review_tasks 銵其<E98AB5> public 餈<><EFBFBD>?rvw_schema
- <20>?<3F>湔鰵 Prisma schema 銝剔<E98A9D> @@schema <20><>
- <20>?<3F>齿鰵<E9BDBF><E9B0B5><EFBFBD> Prisma Client
- <20>?撉諹<E69289><E8ABB9><EFBFBD><EFBFBD>㗇䰻霂<E99C82><EFBCB7><EFBFBD><EFBFBD>虜撌乩<E6928C>
- ✅ 修复方法学分数不显示问题(列表页显示"warn"而不是分数)
- ✅ 修复只选方法学时详情页不显示报告问题
- ✅ 修复 activeTab 默认值导致的显示问题
- ✅ 完整测试单智能体和双智能体审稿流程
霂衣<EFBFBD>隞餃𦛚皜<EFBFBD><EFBFBD><EFBFBD><EFBFBD>[RVW璅<E79285><EFBFBD>宏霈<E99C88>](./04-撘<><E69298>𤏸恣<F0A48FB8>?RVW璅<E79285><EFBFBD>宏霈<E99C88>.md)
**报告导出Phase 5**
- ✅ 安装 docx 和 file-saver 库
- ✅ 实现 Word 文档导出功能
- ✅ 支持结构化报告(标题、基本信息表格、稿约规范性、方法学评估)
- ✅ 问题和建议使用不同颜色标记
**Schema隔离迁移Phase 6**
- ✅ 将 review_tasks 表从 public 迁移到 rvw_schema
- ✅ 更新 Prisma schema 中的 @@schema 指令
- ✅ 重新生成 Prisma Client
- ✅ 验证所有查询和关联正常工作
详细任务清单见:[RVW模块迁移计划](./04-开发计划/RVW模块迁移计划.md)
---
## <EFBFBD><20><><EFBFBD><EFBFBD>韏?
### 憭滨鍂<E6BBA8><E98D82><EFBFBD><EFBFBD><E59597>?
| <20><EFBFBD> | 雿滨蔭 | <20><EFBFBD>?|
## 🔧 技术依赖
### 复用的平台能力
| 能力 | 位置 | 用途 |
|------|------|------|
| **LLM网关** | `@/common/llm/LLMFactory` | AI评估 |
| **文档处理** | `ExtractionClient` | Word/PDF文本提取 |
| **存储** | `@/common/storage` | 文件存储 |
| **<EFBFBD><EFBFBD>** | `@/common/logging` | 蝏𤘪<EFBFBD><EFBFBD>𡝗𠯫敹?|
| **日志** | `@/common/logging` | 结构化日志 |
| **任务队列** | `jobQueue` | 异步任务处理 |
### LLM模型
| <EFBFBD> | <20><EFBFBD>?| 霂湔<E99C82> |
| 模型 | 用途 | 说明 |
|------|------|------|
| DeepSeek-V3 | 默认 | 性价比高,推理能力强 |
| DeepSeek-R1 | <EFBFBD><EFBFBD>?| 瘛勗漲<E58B97><EFBFBD> |
| Qwen3-72B | <EFBFBD><EFBFBD>?| 銝剜<E98A9D><E5899C><EFBFBD>圾憟?|
| DeepSeek-R1 | 备选 | 深度推理 |
| Qwen3-72B | 备选 | 中文理解好 |
---
## 📚 相关文档
### <EFBFBD><EFBFBD><EFBFBD><EFBFBD>獢?
- [<5B><EFBFBD><E7AE84><EFBFBD>摰∠阮蝟餌<E89D9F>MVP PRD](./01-<2D><><EFBFBD><E79899><EFBFBD>?<3F><EFBFBD><E7AE84><EFBFBD>摰∠阮蝟餌<E89D9F>%20MVP%20鈭批<E988AD><E689B9><EFBFBD><EFBFBD><E79899>獢?md)
- [<5B><EFBFBD>摰∠阮V7<56><EFBFBD>](./01-<2D><><EFBFBD><E79899><EFBFBD>?<3F><EFBFBD>摰∠阮V7.html) - <20>舐凒<E88890><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
### 需求文档
### 撘<><E69298><EFBFBD>獢?
- [餈<>宏霈<E99C88>嚗ǒ2.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>](./04-撘<><E69298>𤏸恣<F0A48FB8>?RVW璅<E79285><EFBFBD>宏霈<E99C88>.md) 漎<><E6BC8E> **銝餉<E98A9D><EFBFBD><E69298><EFBFBD>獢?*
- [智能期刊审稿系统MVP PRD](./01-需求分析/智能期刊审稿系统%20MVP%20产品需求文档.md)
- [智能审稿V7原型](./01-需求分析/智能审稿V7.html) - 可直接浏览器打开
### <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>獢?
- [<5B><EFBFBD>蝟餌<E89D9F><E9A48C><EFBFBD><EFBFBD>舀𨰫摨閙𥁒<E99699>𠺖(../../00-憿寧𤌍璁<F0A48C8D>膩/<2F><EFBFBD>蝟餌<E89D9F><E9A48C><EFBFBD><EFBFBD>舀𨰫摨閙𥁒<E99699>?md) - Line 578-748
- [鈭穃<E988AD><E7A983><EFBFBD><E7AC94>𤏸<EFBFBD><F0A48FB8><EFBFBD>(../../04-撘<><E69298>𤏸<EFBFBD><F0A48FB8>?08-鈭穃<E988AD><E7A983><EFBFBD><E7AC94>𤏸<EFBFBD><F0A48FB8>?md)
### 开发文档
- [迁移计划v2.0整合版)](./04-开发计划/RVW模块迁移计划.md) ⬅️ **主要开发文档**
### 参考文档
- [现有系统技术摸底报告](../../00-项目概述/现有系统技术摸底报告.md) - Line 578-748
- [云原生开发规范](../../04-开发规范/08-云原生开发规范.md)
- [系统架构分层设计](../../00-系统总体设计/01-系统架构分层设计.md)
### Prompt文件
- [蝔輻漲閫<E6BCB2><E996AB><EFBFBD><EFBFBD>隡唳<E99AA1><E594B3><EFBFBD>(./蝔輻漲閫<E6BCB2><E996AB><EFBFBD><EFBFBD>隡唳<E99AA1><E594B3>?txt)
- [蝔蹂辣<E8B982><EFBFBD>摮西<E691AE>隡唳<E99AA1><E594B3><EFBFBD>(./蝔蹂辣<E8B982><EFBFBD>摮西<E691AE>隡唳<E99AA1><E594B3>?txt)
- [稿约规范性评估标准](./稿约规范性评估标准.txt)
- [稿件方法学评估标准](./稿件方法学评估标准.txt)
---
## <EFBFBD>㴓 敹恍<E695B9><EFBFBD>憪?
## 🎯 快速开始
### 访问审稿模块
1. **启动后端**
@@ -188,7 +238,7 @@ Prompt保持不变
npm run dev
```
2. **<EFBFBD>臬𢆡<EFBFBD>滨垢嚗<EFBFBD><EFBFBD>?frontend-v2嚗?*
2. **启动前端(新版 frontend-v2**
```bash
cd frontend-v2
npm run dev
@@ -196,49 +246,54 @@ Prompt保持不变
3. **访问审稿页面**
- 打开 `http://localhost:3000`
- <EFBFBD>孵稬憿園<EFBFBD>撖潸⏛<EFBFBD><EFBFBD> **"憸<>恣蝔?** <20><>
- <EFBFBD>𣇉凒<EFBFBD>亥挪<EFBFBD>?`http://localhost:3000/rvw`
- 点击顶部导航栏的 **"预审稿"** 标签
- 或直接访问 `http://localhost:3000/rvw`
4. **测试流程**
- 点击"上传稿件"按钮
- <EFBFBD>㗇𥋘Word/PDF<EFBFBD><EFBFBD>﹝嚗<EFBFBD>楆5MB嚗? - <20>㗇𥋘<E39787><EFBFBD>雿橒<E99BBF>蝔輻漲閫<E6BCB2><E996AB><EFBFBD>?<3F><EFBFBD>摮?銝方<E98A9D><E696B9><EFBFBD><EFBFBD><EFBFBD>
- 选择Word/PDF文档≤5MB
- 选择智能体(稿约规范性/方法学/两者都选)
- 点击"运行"按钮
- 蝑匧<EFBFBD>AI霂<EFBFBD>摯摰峕<EFBFBD><EFBFBD>漲1-2<><32><EFBFBD>嚗? - <20><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
- 等待AI评估完成约1-2分钟
- 查看评估报告
### API测试新版 v2 API
### API瘚贝<E7989A><EFBFBD><EFBFBD>?v2 API嚗?
```http
### 获取任务列表
GET http://localhost:3001/api/v1/rvw/tasks
GET http://localhost:3001/api/v2/rvw/tasks
### <EFBFBD>厩𠶖<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?GET http://localhost:3001/api/v1/rvw/tasks?status=pending
### 按状态筛选
GET http://localhost:3001/api/v2/rvw/tasks?status=pending
### 上传稿件
POST http://localhost:3001/api/v1/rvw/tasks
POST http://localhost:3001/api/v2/rvw/tasks
Content-Type: multipart/form-data
# file: 文件
# selectedAgents: ["editorial", "methodology"]
### 运行单个任务
POST http://localhost:3001/api/v1/rvw/tasks/{{taskId}}/run
POST http://localhost:3001/api/v2/rvw/tasks/{{taskId}}/run
Content-Type: application/json
{"selectedAgents": ["editorial", "methodology"]}
### 批量运行任务
POST http://localhost:3001/api/v1/rvw/tasks/batch-run
POST http://localhost:3001/api/v2/rvw/tasks/batch-run
Content-Type: application/json
{"taskIds": ["id1", "id2"], "selectedAgents": ["editorial"]}
### 获取任务详情
GET http://localhost:3001/api/v1/rvw/tasks/{{taskId}}
GET http://localhost:3001/api/v2/rvw/tasks/{{taskId}}
### 获取报告
GET http://localhost:3001/api/v1/rvw/tasks/{{taskId}}/report
GET http://localhost:3001/api/v2/rvw/tasks/{{taskId}}/report
```
### 旧版API保持兼容
```http
### 𠹺<EFBFBD><EFBFBD>API?POST http://localhost:3001/api/v1/review/upload
### 上传稿件旧API
POST http://localhost:3001/api/v1/review/upload
Content-Type: multipart/form-data
```
@@ -248,25 +303,28 @@ Content-Type: multipart/form-data
### 对新AI助手
1. <EFBFBD>?**<2A><EFBFBD><E8A9A8><EFBFBD>撌脣<E6928C><E884A3>?*嚗𡁜<E59A97><F0A1819C>𡒊垢撌脰<E6928C>蝘餃<E89D98><E9A483>唳沲<E594B3><E6B2B2><EFBFBD><EFBFBD>舀迤撣訾蝙<E8A8BE>?2. <20>?**撌脤<E6928C><E884A4>𣂼<EFBFBD> frontend-v2**嚗𡁻<E59A97><EFBFBD>憿園<E686BF>撖潸⏛<E6BDB8>?憸<>恣蝔?餈𥕦<E9A488>
3. <EFBFBD>?**v2 API 撌脣停蝏?*嚗?api/v2/rvw/* 頝舐眏<E88890>舐鍂
4. <EFBFBD>?**<2A>萄儐鈭穃<E988AD><E7A983><EFBFBD><E8A098>?*嚗帋蝙<E5B88B>?logger <20>滚𦛚<E6BB9A>蹂誨 console.log
1. **核心功能已完成**:前后端已迁移到新架构,可正常使用
2. **已集成到 frontend-v2**:通过顶部导航栏"预审稿"进入
3. **v2 API 已就绪**/api/v2/rvw/* 路由可用
4.**遵循云原生规范**:使用 logger 服务替代 console.log
5. ⚠️ **保留旧API**v1路由保持兼容支持旧前端
### 撌脣<EFBFBD><EFBFBD>鞉㺿<EFBFBD>?
| <20><EFBFBD> | <20><EFBFBD><EFBFBD> | <20><EFBFBD><EFBFBD> | <20><EFBFBD>?|
|------|--------|--------|------|
| <20><EFBFBD> | console.log | logger<65>滚𦛚 | <20>?撌脣<E6928C><E884A3>?|
| <20><EFBFBD>霈方<E99C88> | Mock<63><EFBFBD>ID | getUserId(request) | <20>?撌脣<E6928C><E884A3>?|
| <20><EFBFBD>雿㯄<E99BBF>㗇𥋘 | <20>芸𢆡 | <20><EFBFBD><E586BD><EFBFBD>?| <20>?撌脣<E6928C><E884A3>?|
| <20><EFBFBD><E5AFA5><EFBFBD> | <20>?| batchRunReviewTasks | <20>?撌脣<E6928C><E884A3>?|
### 已完成改造
### 敺<><E695BA>蝏剜㺿<E5899C>?
| <20><EFBFBD> | 敶枏<E695B6> | <20><EFBFBD> | 隡睃<E99AA1>蝥?|
| 问题 | 改造前 | 改造后 | 状态 |
|------|--------|--------|------|
| 日志 | console.log | logger服务 | ✅ 已完成 |
| 用户认证 | Mock用户ID | getUserId(request) | ✅ 已完成 |
| 智能体选择 | 自动 | 用户可选 | ✅ 已完成 |
| 批量操作 | 无 | batchRunReviewTasks | ✅ 已完成 |
### 待后续改造
| 问题 | 当前 | 目标 | 优先级 |
|------|------|------|--------|
| Schema雿滨蔭 | <EFBFBD>?rvw_schema | - | <EFBFBD>?撌脣<E6928C><E884A3>?|
| 隞餃𦛚憭<EFBFBD><EFBFBD> | <EFBFBD>?pg-boss | - | <EFBFBD>?撌脣<E6928C><E884A3>?|
| <EFBFBD><EFBFBD>撖澆枂 | <EFBFBD>?Word (.docx) | PDF隡睃<EFBFBD> | P3 |
| Schema位置 | rvw_schema | - | ✅ 已完成 |
| 任务处理 | pg-boss | - | ✅ 已完成 |
| 报告导出 | Word (.docx) | PDF优化 | P3 |
---
@@ -274,31 +332,46 @@ Content-Type: multipart/form-data
根据MVP PRD验收标准如下
1. **<EFBFBD><EFBFBD><EFBFBD>?*嚗𡁶鍂<F0A181B6><EFBFBD><E79181>𣂼<EFBFBD>銝𠹺<E98A9D>5銝枉DF嚗<46><EFBFBD><EFBFBD><E79285>餈鞱<E9A488>嚗𣬚<E59A97>敺?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E59786><EFBFBD><EFBFBD><EFBFBD>銝?撌脣<E6928C><E884A3>?
1. **流程通**用户能成功上传5个PDF勾选双模型运行等待3分钟内状态全部变为"已完成"
2. **<EFBFBD><EFBFBD><EFBFBD>?*嚗? - 銝𠹺<E98A9D><EFBFBD><EFBFBD><E89DAD><EFBFBD><EFBFBD><E8AAA9>?<3F><EFBFBD>蝏栞捏"<22><>阮隞塚<E99A9E><EFBFBD><E996AB><EFBFBD>扳惣<E689B3><EFBFBD><EFBFBD><EFBFBD>仿<EFBFBD>
- 銝𠹺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𤩺毽瘛?t璉<74>撉?<3F>?<3F>⊥䲮璉<E4B2AE>撉?<3F><>阮隞塚<E99A9E><E5A19A><EFBFBD>摮行惣<E8A18C><EFBFBD><EFBFBD><EFBFBD>?摮条<E691AE>"<22>?<3F>躰秤"
2. **报告准**
- 上传一篇故意删掉"摘要结论"的稿件,规范性智能体必须报错
- 上传一篇故意混淆"t检验"和"卡方检验"的稿件,方法学智能体必须报"存疑"或"错误"
3. **无崩溃**连续上传20个文件系统不卡死不白屏
3. **<EFBFBD>惩援皞?*嚗朞<E59A97>蝏凋<E89D8F>隡?0銝芣<E98A9D>隞塚<E99A9E>蝟餌<E89D9F>銝滚㨃甇鳴<E79487>銝滨蒾撅?
---
## 🚀 未来规划
### <EFBFBD>?撌脣<E6928C><E884A3><EFBFBD>2026-01-07 ~ 2026-01-10嚗?
- [x] <20><EFBFBD><EFBFBD><EFBFBD>?modules/rvw嚗<77><E59A97>蝡荔<E89DA1>
- [x] <EFBFBD><EFBFBD><EFBFBD><EFBFBD>?modules/rvw<EFBFBD><EFBFBD>蝡?frontend-v2嚗?- [x] <20><EFBFBD>MVP<56><EFBFBD><E595A3><EFBFBD><E8B89D><EFBFBD>銝𠹺<E98A9D><F0A0B9BA><EFBFBD>極雿𨅯蝱<F0A885AF><E89DB1><EFBFBD><EFBFBD><E8B3AD>㗇𥋘嚗?- [x] 鈭穃<E988AD><E7A983><EFBFBD>㺿<EFBFBD>𩤃<EFBFBD>logger<65>滚𦛚嚗?- [x] v2 API 頝舐眏瘜典<E7989C>
- [x] <EFBFBD>唳旿摨枏<EFBFBD>畾菜<EFBFBD>撅?- [x] pg-boss撘<73>郊隞餃𦛚憭<F0A69B9A><E686AD>嚗?026-01-10嚗?- [x] Word<72><EFBFBD>撖澆枂嚗?026-01-10嚗?- [x] <20><EFBFBD>摮血<E691AE><E8A180>唳遬蝷箔耨憭㵪<E686AD>2026-01-10嚗?- [x] <20>閙惣<E99699><EFBFBD>摰∠阮<E288A0>曄內靽桀<E99DBD>嚗?026-01-10嚗?- [x] Schema餈<61><EFBFBD>?rvw_schema嚗?026-01-10嚗?
### ✅ 已完成(2026-01-07 ~ 2026-01-10
- [x] 架构迁移到 modules/rvw(后端)
- [x] 架构迁移到 modules/rvw前端 frontend-v2
- [x] 整合MVP新功能批量上传、工作台、智能体选择
- [x] 云原生改造logger服务
- [x] v2 API 路由注册
- [x] 数据库字段扩展
- [x] pg-boss异步任务处理2026-01-10
- [x] Word报告导出2026-01-10
- [x] 方法学分数显示修复2026-01-10
- [x] 单智能体审稿显示修复2026-01-10
- [x] Schema迁移到 rvw_schema2026-01-10
### 后续版本
- [ ] PDF报告导出优化
- [ ] PICO卡片UI实现
- [ ] 历史归档UI实现
- [ ] <EFBFBD><EFBFBD>憿菟𢒰嚗<EFBFBD>𡠺蝡衤漣<EFBFBD><EFBFBD>𧒄嚗?- [ ] 摰∠阮鈭箇恣<E7AE87><E681A3>頂蝏?- [ ] 憭朞蔭摰∠阮瘚<E998AE><E7989A>
- [ ] <EFBFBD><EFBFBD>摨梶恣<EFBFBD>?- [ ] <20><EFBFBD>鈭批<E988AD><E689B9><EFBFBD>
- [ ] 登录页面(独立产品时)
- [ ] 审稿人管理系统
- [ ] 多轮审稿流程
- [ ] 期刊库管理
- [ ] 独立产品打包
---
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𧋦嚗?* v3.2
**文档版本:** v3.2
**最后更新:** 2026-01-10
**敶枏<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>** <EFBFBD>?Phase 1-6 摰峕<EFBFBD>嚗峕芋<EFBFBD>?5%<25>舐鍂嚗玺chema撌脤<E6928C>蝳?
**当前状态:** Phase 1-6 完成模块95%可用Schema已隔离
**下一步:** 生产环境部署测试

View File

@@ -1,123 +1,135 @@
# **<EFBFBD><EFBFBD><EFBFBD><EFBFBD>摰∠阮蝟餌<EFBFBD> MVP 鈭批<E988AD><E689B9><EFBFBD><EFBFBD><E79899>獢?*
# **智能期刊审稿系统 MVP 产品需求文档**
| 憿寧𤌍撅墧<EFBFBD>?| <20><> |
| 项目属性 | 内容 |
| :---- | :---- |
| **项目名称** | 智能期刊审稿辅助系统 (SmartReview MVP) |
| **文档版本** | V1.0 (MVP) |
| **隡睃<EFBFBD>蝥?* | P0 (<28><EFBFBD><E8A9A8><EFBFBD><E8A098>剔㴓) |
| **优先级** | P0 (核心功能闭环) |
| **目标用户** | 期刊初审编辑 |
## **1\. 产品目标 (Product Goal)**
<EFBFBD><EFBFBD><EFBFBD>銝歿*\*<2A>𨅯<EFBFBD>蝞勗朖<E58B97><EFBFBD>𩄼*\*<2A><><EFBFBD>賢恣蝔踹極<E8B8B9><EFBFBD><E791AF><EFBFBD>颲睲<E9A2B2>隡删阮隞塚<E99A9E>蝟餌<E89D9F><E9A48C>芸𢆡餈鞱<E9A488><E99EB1><EFBFBD><EFBFBD><E79289><EFBFBD><EFBFBD><E996AB><EFBFBD>?<3F><EFBFBD>摮佗<E691AE>嚗諹<E59A97><E8ABB9>箏虾靘𥕦<E99D98><F0A595A6><EFBFBD><EFBFBD>摰∠阮<E288A0><EFBFBD><E4BA99>?
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗帋<EFBFBD>隡惩<EFBFBD><EFBFBD>箸𥁒<EFBFBD>?\< 2<><32><EFBFBD>嚗𥡝<E59A97><F0A5A19D><EFBFBD><EFBFBD>折䔮憸䀹<E686B8><E480B9><EFBFBD> \> 80%<EFBFBD>?
打造一个\*\*“开箱即用”\*\*的智能审稿工具。编辑上传稿件,系统自动运行双重检查(规范性+方法学),输出可供参考的审稿报告。
核心指标:上传到出报告 \< 2分钟规范性问题检出率 \> 80%
## **2\. 功能范围 (Scope)**
### **<EFBFBD>?MVP <EFBFBD><EFBFBD> (In Scope)**
### **MVP 包含 (In Scope)**
1. **韐行<EFBFBD>雿梶頂**嚗𡁶<E59A97><F0A181B6><EFBFBD>韐血噡<E8A180><EFBFBD>嚗峕𣈲<E5B395><F0A388B2><EFBFBD><EFBFBD>?Logo 摰𡁜<E691B0><F0A1819C>?
2. **<EFBFBD><EFBFBD>辣憭<EFBFBD><EFBFBD>**嚗𡁏鸌<F0A1818F><EFBFBD>隡?Word/PDF嚗<46><E59A97>銵典<E98AB5>蝷箇𠶖<E7AE87><F0A0B696><EFBFBD>?
3. **摰⊥䰻瘚<EFBFBD><EFBFBD>**嚗𡁶鍂<F0A181B6><EFBFBD><E7919F><EFBFBD>㗇𥋘<E39787><EFBFBD>雿枏<E99BBF>韏瑕恣<E79195><EFBFBD><E4BC90>𤾸蝱撘<E89DB1>郊餈鞱<E9A488><E99EB1>?
4. **<EFBFBD><EFBFBD><EFBFBD>批恣<EFBFBD>?*嚗朞<E59A97><E69C9E><EFBFBD><E7A18B><EFBFBD><E5959C><EFBFBD><EFBFBD><E996AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E69FB4><EFBFBD>䕸PI蝑厩<E58EA9><E280B2><EFBFBD><EFBFBD>?
5. **<EFBFBD><EFBFBD>摮血恣<EFBFBD>?*嚗䥪ICO <20>𣂼<EFBFBD><F0A382BC><EFBFBD><EFBFBD>蝛嗥掩<E597A5><EFBFBD><E8B49D><EFBFBD><E68092>抅蝖<E68A85>蝏蠘恣<E8A098><EFBFBD><E9A489><EFBFBD><E28ABF>?
6. **<EFBFBD><EFBFBD>銝𤾸紡<EFBFBD>?*嚗𡁜<E59A97><EFBFBD><EFBFBD><EFBFBD>撅閧內嚗峕𣈲<E5B395>?PDF 撖澆枂<E6BE86>?
### **<2A>?MVP 銝滚<E98A9D><E6BB9A>?(Out of Scope)**
1. **账户体系**:简单的账号登录,支持期刊 Logo 定制。
2. **文件处理**:批量上传 Word/PDF列表展示状态。
3. **审查流程**:用户手动选择智能体发起审查,后台异步运行。
4. **规范性审查**覆盖字数、摘要结构、参考文献、图片DPI等硬指标。
5. **方法学审查**PICO 提取、研究类型识别、基础统计逻辑校验。
6. **报告与导出**:双视图报告展示,支持 PDF 导出。
1. <20>函瑪<E587BD><E791AA>﹝蝻𤥁<E89DBB><F0A4A581>?(Web Office)<29>?
2. 憭齿<E686AD><E9BDBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E884AB>鞟恣<E99E9F><E681A3>頂蝏麄<E89D8F>?
3. <20>桐辣<E6A190>芸𢆡<E88AB8><EFBFBD><E785BE><EFBFBD><EFBFBD><EFBFBD>?
4. 擃条漣<E69DA1><E6BCA3>蟮敶埝﹝銝擧<E98A9D>頂蝏麄<E89D8F>?
5. <20>滨垢<E6BBA8><EFBFBD><E888AA>𣇉<EFBFBD> Prompt <20>滨蔭<E6BBA8>𤾸蝱<F0A4BEB8>?
## **3\. 霂衣<E99C82><E8A1A3><EFBFBD><E8A098><EFBFBD>瘙?(Requirements)**
### **❌ MVP 不包含 (Out of Scope)**
### **3.1 <20><EFBFBD>憿?(Login)**
1. 在线文档编辑器 (Web Office)。
2. 复杂的角色权限管理系统。
3. 邮件自动发送功能。
4. 高级历史归档与检索系统。
5. 前端可视化的 Prompt 配置后台。
* **<2A><EFBFBD>**嚗朞揭<E69C9E><EFBFBD><E79195><EFBFBD><EFBFBD><EFBFBD><E99C82>?
* **UI**嚗?
* 撌?銝𠹺儒撅閧內<E996A7><EFBFBD> Logo 銝𤾸<E98A9D>蝘堆<E89D98><E5A086><EFBFBD><E88880>滨蔭嚗剹<E59A97>?
* 颲枏<E9A2B2><EFBFBD><E78DA2>韐血噡<E8A180><E599A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
* <20><EFBFBD><E9A483>厰僼嚗𡁶<E59A97><F0A181B6>餅嵗撉䕘<E69289>憭梯揖<E6A2AF>鞟內<E99E9F>𡏭揭<F0A18FAD><EFBFBD><EFBFBD><E69296><EFBFBD>躰秤<E8BAB0><EFBFBD>?
* **<2A><EFBFBD>**嚗锭ession 靽脲<E99DBD> 24 撠𤩺𧒄嚗屸<E59A97><E5B1B8><EFBFBD><EFBFBD>蒈敶𨰻<E695B6>?
### **3.2 摰∠阮撌乩<E6928C><E4B9A9>?(Dashboard)**
## **3\. 详细功能需求 (Requirements)**
餈蹱糓蝟餌<EFBFBD><EFBFBD><EFBFBD><EFBFBD>屸𢒰嚗屸<EFBFBD><EFBFBD>沔*\*<2A>𨅯捐銵兩<E98AB5>𩄼*\*撣<><E692A3><EFBFBD>?
#### **3.2.1 憿園<E686BF><E59C92><EFBFBD><E6BBA2>?*
### **3.1 登录页 (Login)**
* **功能**:账号密码验证。
* **UI**
* 左/上侧展示期刊 Logo 与名称(支持配置)。
* 输入框:账号、密码。
* 登录按钮:点击校验,失败提示“账号或密码错误”。
* **逻辑**Session 保持 24 小时,避免频繁登录。
### **3.2 审稿工作台 (Dashboard)**
这是系统的主界面,采用\*\*“宽表”\*\*布局。
#### **3.2.1 顶部操作区**
* **品牌区**展示“XX杂志社智能审稿系统”。
* **筛选栏**
* 状态 (全部/待处理/已完成)。
* 时间 (今天/近7天)。
* **上传按钮**
* 点击触发文件选择器。
* 支持多选。
* 支持扩展名:.docx, .pdf。
* 限制:单文件 \< 50MB。
* **<2A><><EFBFBD><EFBFBD>?*嚗𡁜<E59A97>蝷算<E89DB7>𤤴X<F0A4A4B4><58><EFBFBD>蝷暹惣<E69AB9>賢恣蝔輻頂蝏麨<E89D8F><EFBFBD>?
* **蝑偦<E89D91><EFBFBD>**嚗?
* <20><EFBFBD>?(<28><EFBFBD>/敺<><E695BA><EFBFBD>?撌脣<E6928C><E884A3>?<3F>?
* <20>園𡢿 (隞𠰴予/餈?憭?<3F>?
* **銝𠹺<E98A9D><F0A0B9BA>厰僼**嚗?
* <20>孵稬閫血<E996AB><E8A180><EFBFBD><EFBFBD>㗇𥋘<E39787><EFBFBD>?
* <20><EFBFBD>憭𡁻<E686AD><EFBFBD>?
* <20><EFBFBD><E88880><EFBFBD><E68B99><EFBFBD>.docx, .pdf<64>?
* <20>𣂼<EFBFBD>嚗𡁜<E59A97><F0A1819C><EFBFBD>辣 \< 50MB<4D>?
#### **3.2.2 稿件列表**
列表包含以下列:
* 憭漤<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>蝷?Tags嚗<73><E59A97><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E689BC>䲮瘜訫郎嚗剹<E59A97>?
* 复选框:用于批量操作。
* 文件信息:文件名(点击进入详情)、大小、上传时间。
* 审稿维度:展示 Tags规范性、方法学
* 状态:
* **<EFBFBD><EFBFBD><EFBFBD>?*嚗𡁜<E59A97>銝𠹺<E98A9D>嚗峕𧊋餈鞱<E9A488><E99EB1>?
* **餈鞱<EFBFBD>銝?*嚗𡁜<E59A97>蝷箏𢆡<E7AE8F>?Loading <EFBFBD><EFBFBD><EFBFBD>?
* **撌脣<EFBFBD><EFBFBD>?*嚗?
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>曄內<EFBFBD><EFBFBD>㺭嚗<EFBFBD><EFBFBD>嚗𡁶遛<EFBFBD>?"90<39>?嚗剹<E59A97>?
* <EFBFBD><EFBFBD><EFBFBD>䲮瘜訫郎嚗峕遬蝷箇<EFBFBD>霈綽<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𠧧 "摮条<E691AE>"嚗剹<E59A97>?
* **待处理**:刚上传,未运行。
* **运行中**:展示动态 Loading 图标。
* **已完成**
* 若跑了规范性,显示分数(如:绿色 "90分")。
* 若跑了方法学,显示结论(如:黄色 "存疑")。
* 操作列:
* \[<EFBFBD>憪见恣<EFBFBD>功]嚗𡁻<E59A97>撖孵<E69296><EFBFBD><E686AD><EFBFBD><EFBFBD><E59786><EFBFBD>?
* \[<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\]嚗𡁻<E59A97>撖孵歇摰峕<E691B0><E5B395><EFBFBD><E59786><EFBFBD>?
* \[开始审查\]:针对待处理状态。
* \[查看报告\]:针对已完成状态。
#### **3.2.3 任务发起弹窗 (The Launcher)**
* **閫血<EFBFBD>**嚗𡁶<E59A97><F0A181B6><EFBFBD>銵其葉<E585B6><E89189><EFBFBD>𨅯<EFBFBD>憪见恣<E8A781><EFBFBD><EFBFBD>摨閖<E691A8><E99696><EFBFBD><E5AFA5><EFBFBD><E6BBA2><EFBFBD><E8AE90>𡏭<EFBFBD>銵𢞖<E98AB5><EFBFBD>?
* **<EFBFBD><EFBFBD>捆**嚗?
* <EFBFBD><EFBFBD><EFBFBD>嚗尠<EFBFBD>𨅯<EFBFBD>韏瑟惣<EFBFBD>賢恣<EFBFBD><EFBFBD><EFBFBD>?
* **触发**:点击列表中的“开始审查”或底部批量操作栏的“运行”。
* **内容**
* 标题:“发起智能审查”。
* 复选框组:
* \[x\] 蝔輻漲閫<EFBFBD><EFBFBD><EFBFBD>扳惣<EFBFBD><EFBFBD> (暺䁅恕<E48185>劐葉)<29>?
* \[ \] <EFBFBD><EFBFBD>摮衣<EFBFBD>霈⊥惣<EFBFBD><EFBFBD><EFBFBD>?
* **<EFBFBD><EFBFBD>**嚗𡁶<E59A97><F0A181B6>摰𡁜<E691B0><EFBFBD><E59A97>蝡臬<E89DA1>撱箔遙<E7AE94><EFBFBD><E288B4>𡑒”<F0A19192><EFBFBD><E59786><EFBFBD>銝算<E98A9D>𡏭<EFBFBD>銵䔶葉<E494B6><EFBFBD>?
### **3.3 摰∠阮霂行<E99C82>憿?(Report Detail)**
* \[x\] 稿约规范性智能体 (默认选中)。
* \[ \] 方法学统计智能体。
* **逻辑**:点击确定后,后端创建任务,列表状态变为“运行中”。
### **3.3 审稿详情页 (Report Detail)**
#### **3.3.1 头部信息**
* 撅閧內<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𣂼<EFBFBD>嚗剹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝑橘<EFBFBD>MVP<EFBFBD><EFBFBD>銝齿遬蝷綽<EFBFBD><EFBFBD>?
* <EFBFBD>厰僼嚗䨵[銝贝蝸<E8B49D>毺阮\]<5D><>[撖澆枂<E6BE86><EFBFBD>PDF\]<EFBFBD>?
#### **3.3.2 閫<>㦛 A嚗𡁶阮蝥西<E89DA5><E8A5BF><EFBFBD><EFBFBD>扳𥁒<E689B3>?*
* 展示文件名、作者若能提取、版本标签MVP可暂不显示
* 按钮:\[下载原稿\]、\[导出报告PDF\]
#### **3.3.2 视图 A稿约规范性报告**
* **总评卡片**:展示总分 (0-100) 和 结论 (Pass/Fail)。
* **检查项列表**
* **文题字数**:提取字数,对比标准(如 \<20字
* **摘要结构**:正则匹配“目的/方法/结果/结论”关键词。
* **参考文献**:识别引用格式错误。
* **图片质量**:显示低分辨率图片的页码和 DPI 值。
* **交互**:每个报错项下方提供“建议修改意见”,支持点击复制。
* **<2A><EFBFBD><E9A489><EFBFBD>**嚗𡁜<E59A97>蝷箸<E89DB7><EFBFBD> (0-100) <20>?蝏栞捏 (Pass/Fail)<29>?
* **璉<><E79289>仿★<E4BBBF>𡑒”**嚗?
* **<2A><><EFBFBD>摮埈㺭**嚗𡁏<E59A97><F0A1818F><EFBFBD><E7A18B><EFBFBD>撖寞<E69296><E5AF9E><EFBFBD><EFBFBD><EFBFBD><E59A97> \<20摮梹<E691AE><E6A2B9>?
* **<2A><EFBFBD>蝏𤘪<E89D8F>**嚗𡁏迤<F0A1818F>坔龪<E59D94>𨧀<EFBFBD>𦦵𤌍<F0A6A6B5>?<3F><EFBFBD>/蝏𤘪<E89D8F>/蝏栞捏<E6A09E><EFBFBD><E598A5><EFBFBD><E6A0AA>?
* **<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?*嚗朞<E59A97><E69C9E><EFBFBD><E680A0>冽聢撘誯<E69298>霂胯<E99C82>?
* **<2A><EFBFBD>韐券<E99F90>**嚗𡁏遬蝷箔<E89DB7><E7AE94><EFBFBD><EFBFBD><E58498><EFBFBD><E3A69B><EFBFBD>憿萇<E686BF><E89087>?DPI <20><EFBFBD>?
* **鈭支<E988AD>**嚗𡁏<E59A97>銝芣𥁒<E88AA3>䠷★銝𧢲䲮<F0A7A2B2>𣂷<EFBFBD><F0A382B7>𨅯遣霈桐耨<E6A190><EFBFBD><EFBFBD><E996AB><EFBFBD><E59885><EFBFBD><E88880>孵稬憭滚<E686AD><E6BB9A>?
#### **3.3.3 视图 B方法学评估报告**
* **PICO <EFBFBD><EFBFBD>**嚗𡁶<E59A97><F0A181B6><EFBFBD><EFBFBD>撅閧內<E996A7>𣂼<EFBFBD><F0A382BC><EFBFBD> P/I/C/O <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>霈⊥䲮瘜𨰝<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𤑳緵憭𡁶<EFBFBD>瘥磰<EFBFBD><EFBFBD>芰鍂 ANOVA嚗剹<EFBFBD>?
* **<EFBFBD>?*嚗?
* <EFBFBD>𣞁 **<EFBFBD>躰秤**嚗𡁏<E59A97>蝖桃<E89D96><E6A183><EFBFBD>蝖砌慾<E7A08C>?
* <EFBFBD>椬 **摮条<E691AE>**嚗𡁏芋<F0A1818F><EFBFBD>蝖桀<E89D96>嚗屸<E59A97>鈭箏極憭齿瓲<E9BDBF>?
* <EFBFBD>**<EFBFBD><EFBFBD>**嚗𡁻<E59A97><EFBFBD><E9A489>芣晾<E88AA3>?
* **PICO 卡片**:结构化展示提取出的 P/I/C/O 内容。
* **逻辑推理区**
* 展示模型对“研究类型”的判断(如:回顾性队列研究)。
* 展示“统计方法”的合理性分析(如:发现多组比较未用 ANOVA)。
* **红绿灯**
* 🔴 **错误**:明确的逻辑硬伤。
* 🟡 **存疑**:模型不确定,需人工复核。
* 🟢 **通过**:逻辑自洽。
## **4\. 技术与性能要求 (Non-functional)**
1. **<EFBFBD><EFBFBD><EFBFBD>笔漲**嚗?
* <EFBFBD>𡑒”<EFBFBD>㰘蝸 \< 1蝘鉝<EFBFBD>?
* <EFBFBD><EFBFBD>辣銝𠹺<EFBFBD><EFBFBD>笔漲<EFBFBD><EFBFBD>鈭𤾸蒂摰踝<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>摨血<EFBFBD><EFBFBD><EFBFBD>?
2. **撟嗅<EFBFBD><EFBFBD><EFBFBD>**嚗?
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> 5 銝芯遙<E88AAF><E288AA>𤏸<EFBFBD>銵䕘<E98AB5>銝漤<E98A9D><EFBFBD><E996AC><EFBFBD>笔云銋<E4BA91><E98A8B><EFBFBD>?
3. **<EFBFBD>澆捆<EFBFBD>?*嚗?
* 隡睃<EFBFBD><EFBFBD><EFBFBD> Chrome / Edge 瘚讛<EFBFBD><EFBFBD><EFBFBD>?
4. **<EFBFBD>唳旿摰匧<EFBFBD>**嚗?
* 蝔蹂辣<EFBFBD><EFBFBD>辣摮睃<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝳颯<EFBFBD>?
* 摰∠阮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>瑕虾閫<EFBFBD><EFBFBD>?
1. **响应速度**
* 列表加载 \< 1秒。
* 文件上传速度取决于带宽,需有进度反馈。
2. **并发处理**
* 支持至少 5 个任务并发运行(不需要排队太久)。
3. **兼容性**
* 优先支持 Chrome / Edge 浏览器。
4. **数据安全**
* 稿件文件存储需加密或隔离。
* 审稿报告仅授权账号可见。
## **5\. 验收标准 (Acceptance Criteria)**
1. **<EFBFBD><EFBFBD><EFBFBD>?*嚗𡁶鍂<F0A181B6><EFBFBD><E79181>𣂼<EFBFBD>銝𠹺<E98A9D> 5 銝?PDF<EFBFBD><EFBFBD><EFBFBD><EFBFBD>餈鞱<EFBFBD>嚗𣬚<EFBFBD>敺?3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E59786><EFBFBD><EFBFBD><EFBFBD>銝算<E98A9D>𨅯歇摰峕<E691B0><E5B395><EFBFBD>?
2. **<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>?
* 銝𠹺<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><EFBFBD>?
3. **<EFBFBD>惩援皞?*嚗朞<E59A97>蝏凋<E89D8F>隡?20 銝芣<E98A9D>隞塚<E99A9E>蝟餌<E89D9F>銝滚㨃甇鳴<E79487>銝滨蒾撅譌<E69285>
1. **流程通**:用户能成功上传 5 PDF,勾选双模型运行,等待 3 分钟内,状态全部变为“已完成”。
2. **报告准**
* 上传一篇故意删掉“摘要结论”的稿件,规范性智能体必须报错。
* 上传一篇故意混淆“t检验”和“卡方检验”的稿件方法学智能体必须报“存疑”或“错误”。
3. **无崩溃**:连续上传 20 个文件,系统不卡死,不白屏。

View File

@@ -1,57 +1,62 @@
# RVW稿件审查模块迁移计划v2.1 - 稳定迁移版)
> **鏂囨。鐗堟湰锛?* v2.1
> **鍒涘缓鏃ユ湡锛?* 2026-01-07
> **文档版本:** v2.1
> **创建日期:** 2026-01-07
> **最后更新:** 2026-01-07
> **缁存姢鑰咃細** 寮€鍙戝洟闃?
> **鏂囨。鐩<EFBFBD>殑锛?* 灏嗙ǹ浠跺<E6B5A0>鏌ュ姛鑳戒粠鏃ф灦鏋勫畨鍏ㄨ縼绉诲埌鏂版灦鏋勶紝鍚屾椂鏁村悎MVP鏍稿績闇€姹?
> **维护者:** 开发团队
> **文档目的:** 将稿件审查功能从旧架构安全迁移到新架构同时整合MVP核心需求
---
## 📋 项目概述
### 1. 背景
绋夸欢瀹℃煡鍔熻兘鏄?025-10-30锛圖ay 30锛夌嫭绔嬪紑鍙戠殑鍔熻兘妯″潡锛岀洰鍓嶄綅浜?`backend/src/legacy/` 鍜?`frontend/` <EFBFBD>綍涓<EFBFBD>€傜幇闇€瑕侊細
稿件审查功能是2025-10-30Day 30)独立开发的功能模块,目前位于 `backend/src/legacy/` `frontend/` 目录中。现需要:
1. **鏋舵瀯杩佺Щ**锛氳縼绉诲埌鏍囧噯鐨勬ā鍧楃洰褰曠粨鏋勶紙`modules/rvw`锛?2. **鍔熻兘鍗囩骇**锛氭暣鍚堛€婃櫤鑳芥湡鍒婂<E98D92>绋跨郴缁烳VP浜у搧闇€姹傛枃妗€嬬殑鏍稿績鍔熻兘
1. **架构迁移**:迁移到标准的模块目录结构(`modules/rvw`
2. **功能升级**整合《智能期刊审稿系统MVP产品需求文档》的核心功能
### 2. 迁移原则
| 原则 | 说明 |
|------|------|
| **稳定优先** | 每个Phase完成后必须通过测试验证 |
| **瀹夊叏鍙<EFBFBD>** | 鏁版嵁搴撹縼绉诲墠蹇呴』澶囦唤锛屾敮鎸佸洖婊?|
| **安全可靠** | 数据库迁移前必须备份,支持回滚 |
| **阶段验证** | 每个Phase有明确的验收标准 |
| **鍚戝悗鍏煎<EFBFBD>** | 淇濈暀鏃<EFBFBD>PI杩囨浮鏈燂紝涓嶅奖鍝嶇幇鏈夊姛鑳?|
| **娓愯繘寮?* | 鍏堟牳蹇冨悗鎵╁睍锛屽厛鍚庣<E98D9A>鍚庡墠绔?|
| **向后兼容** | 保留旧API过渡期不影响现有功能 |
| **渐进式** | 先核心后扩展,先后端后前端 |
### 3. 功能范围
| 鍔熻兘 | 鏈<><E98F88>寮€鍙?| 鏁版嵁搴撴敮鎾?| 璇存槑 |
| 功能 | 本次开发 | 数据库支撑 | 说明 |
|------|:--------:|:----------:|------|
| **鏍稿績AI璇勪及** | 鉁?| 鉁?| 绋跨害瑙勮寖鎬?鏂规硶瀛?|
| **鎵归噺涓婁紶** | 鉁?| 鉁?| 澶氭枃浠朵笂浼?|
| **瀹$ǹ宸ヤ綔鍙?* | 鉁?| 鉁?| 瀹借〃甯冨眬+绛涢€?|
| **鏅鸿兘浣撻€夋嫨** | 鉁?| 鉁?| 鍙<>€?涓<>垨2涓?|
| **鎵归噺鎿嶄綔** | 鉁?| 鉁?| 鎵归噺杩愯<E69DA9>瀹℃煡 |
| **鐘舵€佺瓫閫?* | 鉁?| 鉁?| 鍏ㄩ儴/寰呭<E5AFB0>鐞?宸插畬鎴?|
| PDF鎶ュ憡瀵煎嚭 | 鉁?| 鉁?| 浼樺寲鐜版湁鍔熻兘 |
| PICO鍗$墖 | 鈴革笍 | 鉁?| **鏆備笉寮€鍙戯紝鏁版嵁搴撻<EFBFBD>鐣?* |
| 绯荤粺璁剧疆 | 鈴革笍 | 鉁?| **鏆備笉寮€鍙戯紝鏁版嵁搴撻<EFBFBD>鐣?* |
| 鍘嗗彶褰掓。 | 鈴革笍 | 鉁?| **鏆備笉寮€鍙戯紝鏁版嵁搴撻<EFBFBD>鐣?* |
| 鐧诲綍椤甸潰 | 鈴革笍 | - | 鏆備笉寮€鍙?|
| **核心AI评估** | ✅ | ✅ | 稿约规范性+方法学 |
| **批量上传** | ✅ | ✅ | 多文件上传 |
| **审稿工作台** | ✅ | ✅ | 宽表布局+筛选 |
| **智能体选择** | ✅ | ✅ | 可选1个或2个 |
| **批量操作** | ✅ | ✅ | 批量运行审查 |
| **状态筛选** | ✅ | ✅ | 全部/待处理/已完成 |
| PDF报告导出 | ✅ | ✅ | 优化现有功能 |
| PICO卡片 | ⏸️ | | **暂不开发,数据库预留** |
| 系统设置 | ⏸️ | | **暂不开发,数据库预留** |
| 历史归档 | ⏸️ | | **暂不开发,数据库预留** |
| 登录页面 | ⏸️ | - | 暂不开发 |
### 4. 智能体选择说明
鐢ㄦ埛鍙<EFBFBD>互鐏垫椿閫夋嫨杩愯<EFBFBD>鐨勬櫤鑳戒綋锛?
用户可以灵活选择运行的智能体:
```
閫夐」 A: <EFBFBD>€夋嫨銆岀ǹ绾﹁<EFBFBD>鑼冩€ф櫤鑳戒綋銆? 鈫?鍙<>繍琛岃<E7909B>鑼冩€ц瘎浼?閫夐」 B: 鍙<>€夋嫨銆屾柟娉曞<E5A889>缁熻<E7BC81>鏅鸿兘浣撱€? 鈫?鍙<>繍琛屾柟娉曞<E5A889>璇勪及
閫夐」 C: 鍚屾椂閫夋嫨涓や釜鏅鸿兘浣? 鈫?鍚屾椂杩愯<E69DA9>涓ら」璇勪及锛堥粯璁わ級
选项 A: 只选择「稿约规范性智能体」 → 只运行规范性评估
选项 B: 只选择「方法学统计智能体」 → 只运行方法学评估
选项 C: 同时选择两个智能体 → 同时运行两项评估(默认)
```
---
## 馃搳 鏁版嵁搴撹<E690B4>璁★紙瀹屾暣鐗堬紝鏀<E7B49D>拺鏈<E68BBA>潵鎵╁睍锛?
## 📊 数据库设计(完整版,支撑未来扩展)
### 1. 期刊配置表(预留,暂不使用)
```prisma
@@ -79,16 +84,20 @@ model JournalConfig {
model ReviewTask {
id String @id @default(uuid())
userId String @map("user_id")
journalId String? @map("journal_id") // 棰勭暀锛氭湡鍒婂叧鑱?
journalId String? @map("journal_id") // 预留:期刊关联
// 文件信息
fileName String @map("file_name")
fileSize Int @map("file_size")
filePath String? @map("file_path")
extractedText String @map("extracted_text")
wordCount Int? @map("word_count")
authorName String? @map("author_name") // 棰勭暀锛氫綔鑰呮彁鍙?
// 鐘舵€佺<E282AC>鐞? status String @default("pending")
// 鉁?鏅鸿兘浣撻€夋嫨锛氬彲閫?涓<>垨2涓? selectedAgents String[] @default(["editorial", "methodology"]) @map("selected_agents")
authorName String? @map("author_name") // 预留:作者提取
// 状态管理
status String @default("pending")
// ✅ 智能体选择可选1个或2个
selectedAgents String[] @default(["editorial", "methodology"]) @map("selected_agents")
// 评估结果
editorialReview Json? @map("editorial_review")
@@ -102,13 +111,15 @@ model ReviewTask {
// 预留PICO提取暂不使用
picoExtract Json? @map("pico_extract")
// 鍏冩暟鎹? modelUsed String? @map("model_used")
// 元数据
modelUsed String? @map("model_used")
startedAt DateTime? @map("started_at")
completedAt DateTime? @map("completed_at")
durationSeconds Int? @map("duration_seconds")
errorMessage String? @map("error_message")
// 棰勭暀锛氬綊妗e姛鑳斤紙鏆備笉浣跨敤锛? isArchived Boolean @default(false) @map("is_archived")
// 预留:归档功能(暂不使用)
isArchived Boolean @default(false) @map("is_archived")
archivedAt DateTime? @map("archived_at")
createdAt DateTime @default(now()) @map("created_at")
@@ -130,26 +141,29 @@ model ReviewTask {
### 3. 字段说明
| 瀛楁<EFBFBD> | 鏈<><E98F88>浣跨敤 | 棰勭暀鐢ㄩ€?|
| 字段 | 本次使用 | 预留用途 |
|------|:--------:|---------|
| `journalId` | 鉂?| 绯荤粺璁剧疆锛氭湡鍒婂叧鑱?|
| `authorName` | 鉂?| 鑷<>姩鎻愬彇浣滆€呭悕 |
| `selectedAgents` | 鉁?| 鐢ㄦ埛閫夋嫨鐨勬櫤鑳戒綋 |
| `editorialScore` | 鉁?| 鍒楄〃鏄剧ず瑙勮寖鎬у垎鏁?|
| `methodologyStatus` | 鉁?| 鍒楄〃鏄剧ず鏂规硶瀛︾姸鎬?|
| `picoExtract` | 鉂?| PICO鍗$墖鏁版嵁 |
| `isArchived` | 鉂?| 鍘嗗彶褰掓。鍔熻兘 |
| `archivedAt` | 鉂?| 褰掓。鏃堕棿 |
| `journalId` | ❌ | 系统设置:期刊关联 |
| `authorName` | ❌ | 自动提取作者名 |
| `selectedAgents` | ✅ | 用户选择的智能体 |
| `editorialScore` | ✅ | 列表显示规范性分数 |
| `methodologyStatus` | ✅ | 列表显示方法学状态 |
| `picoExtract` | | PICO卡片数据 |
| `isArchived` | ❌ | 历史归档功能 |
| `archivedAt` | ❌ | 归档时间 |
---
## 📋 安全迁移策略
### 1. 杩佺Щ鍓嶅噯澶?
```bash
# 1. 澶囦唤鏁版嵁搴?pg_dump -h localhost -U postgres -d airesearch -F c -f backup_before_rvw_migration.dump
### 1. 迁移前准备
# 2. 璁板綍褰撳墠鏁版嵁閲?SELECT COUNT(*) FROM public.review_tasks;
```bash
# 1. 备份数据库
pg_dump -h localhost -U postgres -d airesearch -F c -f backup_before_rvw_migration.dump
# 2. 记录当前数据量
SELECT COUNT(*) FROM public.review_tasks;
# 3. 导出关键数据(可选)
COPY public.review_tasks TO '/tmp/review_tasks_backup.csv' WITH CSV HEADER;
@@ -166,49 +180,55 @@ ALTER TABLE review_schema.review_tasks SET SCHEMA public;
DROP SCHEMA review_schema;
```
### 3. 闃舵<EFBFBD>鎬ч獙璇?
姣忎釜Phase瀹屾垚鍚庡繀椤婚€氳繃浠ヤ笅楠岃瘉锛?
### 3. 阶段性验证
每个Phase完成后必须通过以下验证
| Phase | 验证内容 | 验收标准 |
|-------|---------|---------|
| Phase 1 | 后端API测试 | 所有API返回正确日志无ERROR |
| Phase 2 | 鏁版嵁搴撹縼绉?| 鏁版嵁瀹屾暣锛屾煡璇㈡<E79287>甯革紝绱㈠紩鏈夋晥 |
| Phase 2 | 数据库迁移 | 数据完整,查询正常,索引有效 |
| Phase 3 | 前端功能测试 | 核心流程通顺,无白屏/报错 |
| Phase 4 | 闆嗘垚娴嬭瘯 | 绔<>埌绔<E59F8C>祦绋嬫<E7BB8B>甯?|
| Phase 4 | 集成测试 | 端到端流程正常 |
| Phase 5 | 验收测试 | 符合MVP验收标准 |
---
## 馃搵 寮€鍙戜换鍔℃竻鍗?
## 📋 开发任务清单
### Phase 1后端模块迁移2天
#### Day 1 涓婂崍锛氬垱寤烘ā鍧楃粨鏋?+ 澶嶇敤鏍稿績浠g爜
#### Day 1 上午:创建模块结构 + 复用核心代码
**1.1 创建目录结构**
```
backend/src/modules/rvw/
├── routes/
鈹? 鈹斺攢鈹€ index.ts # <EFBFBD>敱瀹氫箟
│ └── index.ts # 路由定义
├── controllers/
鈹? 鈹斺攢鈹€ reviewController.ts # 鎺у埗鍣?鈹溾攢鈹€ services/
鈹? 鈹溾攢鈹€ reviewService.ts # 涓绘湇鍔★紙澶嶇敤+鎵╁睍锛?鈹? 鈹溾攢鈹€ editorialService.ts # 绋跨害璇勪及锛堝<E9949B><EFBFBD>
鈹? 鈹斺攢鈹€ methodologyService.ts # 鏂规硶瀛﹁瘎浼帮紙澶嶇敤锛?鈹溾攢鈹€ types/
鈹? 鈹斺攢鈹€ index.ts # 绫诲瀷瀹氫箟
│ └── reviewController.ts # 控制器
├── services/
│ ├── reviewService.ts # 主服务(复用+扩展)
│ ├── editorialService.ts # 稿约评估(复用)
│ └── methodologyService.ts # 方法学评估(复用)
├── types/
│ └── index.ts # 类型定义
├── prompts/
鈹? 鈹溾攢鈹€ editorial_system.txt # 绋跨害Prompt
鈹? 鈹斺攢鈹€ methodology_system.txt # 鏂规硶瀛<EFBFBD>rompt
│ ├── editorial_system.txt # 稿约Prompt
│ └── methodology_system.txt # 方法学Prompt
└── index.ts # 模块入口
```
- [ ] **1.1.1** 创建目录结构
- [ ] **1.1.2** 澶嶅埗 `reviewEditorialStandards()` 鈫?`editorialService.ts`
- [ ] **1.1.3** 澶嶅埗 `reviewMethodology()` 鈫?`methodologyService.ts`
- [ ] **1.1.4** 澶嶅埗 `parseJSONFromLLMResponse()` 鈫?`utils.ts`
- [ ] **1.1.2** 复制 `reviewEditorialStandards()` `editorialService.ts`
- [ ] **1.1.3** 复制 `reviewMethodology()` `methodologyService.ts`
- [ ] **1.1.4** 复制 `parseJSONFromLLMResponse()` `utils.ts`
- [ ] **1.1.5** 复制 Prompt 文件到模块内
**1.2 浜戝師鐢熸敼閫?*
**1.2 云原生改造**
- [ ] **1.2.1** 鏇挎崲 `console.log` 鈫?`logger`
- [ ] **1.2.1** 替换 `console.log` `logger`
- [ ] **1.2.2** 移除 Mock用户ID集成JWT认证
- [ ] **1.2.3** 使用 `process.env` 配置
@@ -222,7 +242,8 @@ export type AgentType = 'editorial' | 'methodology';
export interface RunReviewParams {
taskId: string;
agents: AgentType[]; // <EFBFBD>€?涓<>垨2涓?}
agents: AgentType[]; // 可选1个或2个
}
// services/reviewService.ts
async function runReview(params: RunReviewParams) {
@@ -233,7 +254,8 @@ async function runReview(params: RunReviewParams) {
throw new Error('请至少选择一个智能体');
}
// 鏇存柊浠诲姟鐘舵€? await prisma.reviewTask.update({
// 更新任务状态
await prisma.reviewTask.update({
where: { id: taskId },
data: {
status: 'reviewing',
@@ -279,7 +301,8 @@ function calculateOverallScore(editorial: any, methodology: any, agents: AgentTy
// 两个都选40% + 60%
return editorial.overall_score * 0.4 + methodology.overall_score * 0.6;
} else if (agents.includes('editorial') && editorial) {
// <EFBFBD>€夎<EFBFBD>鑼冩€? return editorial.overall_score;
// 只选规范性
return editorial.overall_score;
} else if (agents.includes('methodology') && methodology) {
// 只选方法学
return methodology.overall_score;
@@ -291,8 +314,9 @@ function calculateOverallScore(editorial: any, methodology: any, agents: AgentTy
- [ ] **1.3.1** 实现智能体选择类型定义
- [ ] **1.3.2** 实现 `runReview()` 函数
- [ ] **1.3.3** 实现综合分数计算逻辑
- [ ] **1.3.4** 瀹炵幇鏂规硶瀛︾姸鎬佸垽鏂<EFBFBD>pass/warn/fail锛?
#### Day 2 涓婂崍锛氭壒閲忔搷浣?+ API鎵╁睍
- [ ] **1.3.4** 实现方法学状态判断(pass/warn/fail
#### Day 2 上午:批量操作 + API扩展
**1.4 批量运行实现**
@@ -301,7 +325,8 @@ function calculateOverallScore(editorial: any, methodology: any, agents: AgentTy
async function batchRunReview(params: BatchRunParams) {
const { taskIds, agents } = params;
// 闄愬埗骞跺彂鏁? const MAX_CONCURRENT = 5;
// 限制并发数
const MAX_CONCURRENT = 5;
const results = [];
for (let i = 0; i < taskIds.length; i += MAX_CONCURRENT) {
@@ -317,8 +342,9 @@ async function batchRunReview(params: BatchRunParams) {
```
- [ ] **1.4.1** 实现批量运行接口
- [ ] **1.4.2** 瀹炵幇骞跺彂鎺у埗锛堟渶澶?涓<>
- [ ] **1.4.3** 瀹炵幇閿欒<EFBFBD>澶勭悊锛堝崟涓<EFBFBD>け璐ヤ笉褰卞搷鍏朵粬锛?
- [ ] **1.4.2** 实现并发控制最多5个
- [ ] **1.4.3** 实现错误处理(单个失败不影响其他)
**1.5 API路由定义**
```typescript
@@ -338,52 +364,58 @@ export default async function rvwRoutes(fastify: FastifyInstance) {
```
- [ ] **1.5.1** 实现路由定义
- [ ] **1.5.2** 瀹炵幇鎺у埗鍣ㄦ柟娉?- [ ] **1.5.3** 娣诲姞璇锋眰楠岃瘉
- [ ] **1.5.2** 实现控制器方法
- [ ] **1.5.3** 添加请求验证
#### Day 2 涓嬪崍锛氭敞鍐岃矾鐢?+ Phase 1 楠岃瘉
#### Day 2 下午:注册路由 + Phase 1 验证
**1.6 娉ㄥ唽鏂拌矾鐢?*
**1.6 注册新路由**
```typescript
// backend/src/index.ts
import rvwRoutes from './modules/rvw/routes/index.js';
// 娉ㄥ唽鏂拌矾鐢憋紙v2锛?await fastify.register(rvwRoutes, { prefix: '/api/v1/rvw' });
logger.info('鉁?RVW绋夸欢瀹℃煡璺<E785A1>敱宸叉敞鍐? /api/v1/rvw');
// 注册新路由v2
await fastify.register(rvwRoutes, { prefix: '/api/v2/rvw' });
logger.info('✅ RVW稿件审查路由已注册: /api/v2/rvw');
// 淇濈暀鏃ц矾鐢憋紙鍏煎<EFBFBD>锛?await fastify.register(reviewRoutes, { prefix: '/api/v1' });
logger.info('鉁?Legacy瀹ǹ璺<C7B9>敱淇濈暀: /api/v1/review');
// 保留旧路由(兼容)
await fastify.register(reviewRoutes, { prefix: '/api/v1' });
logger.info('✅ Legacy审稿路由保留: /api/v1/review');
```
- [ ] **1.6.1** 娉ㄥ唽鏂拌矾鐢?- [ ] **1.6.2** 淇濈暀鏃ц矾鐢卞吋瀹?
- [ ] **1.6.1** 注册新路由
- [ ] **1.6.2** 保留旧路由兼容
**1.7 Phase 1 验证测试**
```http
### 1.
POST {{baseUrl}}/api/v1/rvw/tasks
POST {{baseUrl}}/api/v2/rvw/tasks
Content-Type: multipart/form-data
# file: test.docx
### 2.
POST {{baseUrl}}/api/v1/rvw/tasks/{{taskId}}/run
POST {{baseUrl}}/api/v2/rvw/tasks/{{taskId}}/run
Content-Type: application/json
{ "agents": ["editorial"] }
### 3. <EFBFBD><EFBFBD>?POST {{baseUrl}}/api/v1/rvw/tasks/{{taskId}}/run
### 3.
POST {{baseUrl}}/api/v2/rvw/tasks/{{taskId}}/run
Content-Type: application/json
{ "agents": ["methodology"] }
### 4.
POST {{baseUrl}}/api/v1/rvw/tasks/{{taskId}}/run
POST {{baseUrl}}/api/v2/rvw/tasks/{{taskId}}/run
Content-Type: application/json
{ "agents": ["editorial", "methodology"] }
### 5.
POST {{baseUrl}}/api/v1/rvw/tasks/batch/run
POST {{baseUrl}}/api/v2/rvw/tasks/batch/run
Content-Type: application/json
{
@@ -392,22 +424,22 @@ Content-Type: application/json
}
### 6.
GET {{baseUrl}}/api/v1/rvw/tasks?status=pending&limit=10
GET {{baseUrl}}/api/v2/rvw/tasks?status=pending&limit=10
### 7.
GET {{baseUrl}}/api/v1/rvw/tasks/{{taskId}}/report
GET {{baseUrl}}/api/v2/rvw/tasks/{{taskId}}/report
```
**Phase 1 楠屾敹鏍囧噯锛?*
**Phase 1 验收标准:**
| 娴嬭瘯椤?| 棰勬湡缁撴灉 | 閫氳繃 |
| 测试项 | 预期结果 | 通过 |
|--------|---------|:----:|
| 鍒涘缓浠诲姟 | 杩斿洖taskId锛岀姸鎬乸ending | 猬?|
| <EFBFBD>€夎<EFBFBD>鑼冩€?| 鍙<>editorialReview鏈夊€?| 猬?|
| <EFBFBD>€夋柟娉曞<EFBFBD> | 鍙<>methodologyReview鏈夊€?| 猬?|
| 涓や釜閮介€?| 涓や釜Review閮芥湁鍊?| 猬?|
| 鎵归噺杩愯<EFBFBD> | 澶氫釜浠诲姟閮藉畬鎴?| 猬?|
| <EFBFBD>PI鍏煎<EFBFBD> | `/api/v1/review/*` 姝e父 | 猬?|
| 创建任务 | 返回taskId状态pending | |
| 只选规范性 | 只有editorialReview有值 | ⬜ |
| 只选方法学 | 只有methodologyReview有值 | ⬜ |
| 两个都选 | 两个Review都有值 | ⬜ |
| 批量运行 | 多个任务都完成 | ⬜ |
| 旧API兼容 | `/api/v1/review/*` 正常 | |
- [ ] **1.7.1** 编写测试用例
- [ ] **1.7.2** 执行测试
@@ -416,11 +448,12 @@ GET {{baseUrl}}/api/v1/rvw/tasks/{{taskId}}/report
---
### Phase 2锛氭暟鎹<EFBFBD>簱Schema杩佺Щ锛?.5澶╋級
### Phase 2数据库Schema迁移0.5天)
#### 迁移前:备份
- [ ] **2.1** 澶囦唤鏁版嵁搴? ```bash
- [ ] **2.1** 备份数据库
```bash
pg_dump -h localhost -U postgres -d airesearch -F c -f backup_phase2.dump
```
@@ -436,7 +469,8 @@ GET {{baseUrl}}/api/v1/rvw/tasks/{{taskId}}/report
-- 1. 创建新Schema
CREATE SCHEMA IF NOT EXISTS review_schema;
-- 2. 鍒涘缓鏈熷垔閰嶇疆琛<EFBFBD>紙棰勭暀锛? CREATE TABLE review_schema.journal_configs (
-- 2. 创建期刊配置表(预留)
CREATE TABLE review_schema.journal_configs (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name VARCHAR(255) NOT NULL,
logo_url TEXT,
@@ -449,7 +483,8 @@ GET {{baseUrl}}/api/v1/rvw/tasks/{{taskId}}/report
-- 3. 迁移review_tasks表到新Schema
ALTER TABLE public.review_tasks SET SCHEMA review_schema;
-- 4. 娣诲姞鏂板瓧娈碉紙鏀<EFBFBD>寔鏈<EFBFBD>潵鎵╁睍锛? ALTER TABLE review_schema.review_tasks
-- 4. 添加新字段(支持未来扩展)
ALTER TABLE review_schema.review_tasks
ADD COLUMN IF NOT EXISTS journal_id UUID REFERENCES review_schema.journal_configs(id),
ADD COLUMN IF NOT EXISTS author_name VARCHAR(255),
ADD COLUMN IF NOT EXISTS selected_agents TEXT[] DEFAULT ARRAY['editorial', 'methodology'],
@@ -470,7 +505,8 @@ GET {{baseUrl}}/api/v1/rvw/tasks/{{taskId}}/report
- [ ] **2.4** 更新Prisma Schema
- 修改 `@@schema("review_schema")`
- 娣诲姞鏂板瓧娈?
- 添加新字段
- [ ] **2.5** 执行迁移
```bash
npx prisma migrate dev --name rvw_schema_migration
@@ -478,8 +514,10 @@ GET {{baseUrl}}/api/v1/rvw/tasks/{{taskId}}/report
#### Phase 2 验证
- [ ] **2.6** 楠岃瘉鏁版嵁瀹屾暣鎬? ```sql
-- 纭<><E7BAAD>鏁版嵁閲忎竴鑷? SELECT COUNT(*) FROM review_schema.review_tasks;
- [ ] **2.6** 验证数据完整性
```sql
-- 确认数据量一致
SELECT COUNT(*) FROM review_schema.review_tasks;
-- 确认字段可用
SELECT id, selected_agents, editorial_score FROM review_schema.review_tasks LIMIT 5;
@@ -491,15 +529,15 @@ GET {{baseUrl}}/api/v1/rvw/tasks/{{taskId}}/report
LIMIT 5;
```
**Phase 2 楠屾敹鏍囧噯锛?*
**Phase 2 验收标准:**
| 娴嬭瘯椤?| 棰勬湡缁撴灉 | 閫氳繃 |
| 测试项 | 预期结果 | 通过 |
|--------|---------|:----:|
| 鏁版嵁杩佺Щ | 鏁版嵁閲忎竴鑷?| 猬?|
| 鏂板瓧娈?| 瀛楁<E7809B>瀛樺湪涓斿彲鐢?| 猬?|
| 澶栭敭鍏崇郴 | 鍏宠仈姝e父 | 猬?|
| 绱㈠紩鏈夋晥 | 鏌ヨ<E98F8C>鎬ц兘姝 | 猬?|
| API姝e父 | 鍚庣<E98D9A>API浠嶅彲鐢?| 猬?|
| 数据迁移 | 数据量一致 | ⬜ |
| 新字段 | 字段存在且可用 | ⬜ |
| 外键关系 | 关联正常 | |
| 索引有效 | 查询性能正常 | |
| API正常 | 后端API仍可用 | ⬜ |
- [ ] **2.7** 确认Phase 2通过
@@ -507,33 +545,38 @@ GET {{baseUrl}}/api/v1/rvw/tasks/{{taskId}}/report
### Phase 3前端重构3天
#### Day 3锛氭ā鍧楃粨鏋?+ API灞?
#### Day 3:模块结构 + API
**3.1 创建模块结构**
```
frontend-v2/src/modules/rvw/
├── api/
鈹? 鈹斺攢鈹€ reviewApi.ts # API灏佽<EFBFBD>
│ └── reviewApi.ts # API封装
├── components/
鈹? 鈹溾攢鈹€ ScoreCard.tsx # 澶嶇敤
鈹? 鈹溾攢鈹€ EditorialReview.tsx # 澶嶇敤
鈹? 鈹溾攢鈹€ MethodologyReview.tsx # 澶嶇敤
鈹? 鈹溾攢鈹€ AgentSelector.tsx # 馃啎 鏅鸿兘浣撻€夋嫨寮圭獥
鈹? 鈹溾攢鈹€ BatchToolbar.tsx # 馃啎 鎵归噺鎿嶄綔鏍?鈹? 鈹溾攢鈹€ TaskTable.tsx # 馃啎 浠诲姟鍒楄〃琛ㄦ牸
鈹? 鈹斺攢鈹€ StatusFilter.tsx # 馃啎 鐘舵€佺瓫閫?鈹溾攢鈹€ pages/
鈹? 鈹溾攢鈹€ ReviewDashboard.tsx # 馃啎 瀹$ǹ宸ヤ綔鍙?鈹? 鈹斺攢鈹€ ReviewDetail.tsx # 鎶ュ憡璇︽儏锛堜紭鍖栵級
│ ├── ScoreCard.tsx # 复用
│ ├── EditorialReview.tsx # 复用
│ ├── MethodologyReview.tsx # 复用
│ ├── AgentSelector.tsx # 🆕 智能体选择弹窗
│ ├── BatchToolbar.tsx # 🆕 批量操作栏
│ ├── TaskTable.tsx # 🆕 任务列表表格
│ └── StatusFilter.tsx # 🆕 状态筛选
├── pages/
│ ├── ReviewDashboard.tsx # 🆕 审稿工作台
│ └── ReviewDetail.tsx # 报告详情(优化)
├── hooks/
鈹? 鈹溾攢鈹€ useReviewTask.ts
鈹? 鈹斺攢鈹€ useBatchOperation.ts
│ ├── useReviewTask.ts
│ └── useBatchOperation.ts
├── stores/
鈹? 鈹斺攢鈹€ useReviewStore.ts
│ └── useReviewStore.ts
├── types/
鈹? 鈹斺攢鈹€ index.ts
│ └── index.ts
└── index.tsx
```
- [ ] **3.1.1** 创建目录结构
- [ ] **3.1.2** 澶嶇敤鐜版湁缁勪欢锛圫coreCard銆丒ditorialReview銆丮ethodologyReview锛?
- [ ] **3.1.2** 复用现有组件ScoreCard、EditorialReview、MethodologyReview
**3.2 API封装**
```typescript
@@ -542,12 +585,12 @@ export type AgentType = 'editorial' | 'methodology';
// 运行审查(支持选择智能体)
export async function runReview(taskId: string, agents: AgentType[]): Promise<void> {
return axios.post(`/api/v1/rvw/tasks/${taskId}/run`, { agents });
return axios.post(`/api/v2/rvw/tasks/${taskId}/run`, { agents });
}
// 批量运行
export async function batchRunReview(taskIds: string[], agents: AgentType[]): Promise<void> {
return axios.post('/api/v1/rvw/tasks/batch/run', { taskIds, agents });
return axios.post('/api/v2/rvw/tasks/batch/run', { taskIds, agents });
}
// 获取任务列表(带筛选)
@@ -558,25 +601,30 @@ export interface TaskListParams {
}
export async function getTaskList(params: TaskListParams): Promise<TaskListResponse> {
return axios.get('/api/v1/rvw/tasks', { params });
return axios.get('/api/v2/rvw/tasks', { params });
}
```
- [ ] **3.2.1** 实现API封装
- [ ] **3.2.2** 实现类型定义
#### Day 4锛氭牳蹇冮〉闈㈠紑鍙?
#### Day 4:核心页面开发
**3.3 智能体选择弹窗**
```tsx
// components/AgentSelector.tsx
interface AgentSelectorProps {
visible: boolean;
taskIds: string[]; // <EFBFBD>寔鍗曚釜鎴栧<EFBFBD>涓? onConfirm: (agents: AgentType[]) => void;
taskIds: string[]; // 支持单个或多个
onConfirm: (agents: AgentType[]) => void;
onCancel: () => void;
}
// 寮圭獥鍐呭<EFBFBD>锛?// 鉁?绋跨害瑙勮寖鎬ф櫤鑳戒綋锛堥粯璁ら€変腑锛?// 鏍煎紡銆佸弬鑰冩枃鐚<E69E83>€佸浘鐗囨<E99097>鏌?// 鈽?鏂规硶瀛︾粺璁℃櫤鑳戒綋
// 弹窗内容:
// ✅ 稿约规范性智能体(默认选中)
// 格式、参考文献、图片检查
// ☐ 方法学统计智能体
// DeepSeek 深度逻辑推理
//
// 提示可选择1个或同时选择2个智能体
@@ -585,21 +633,37 @@ interface AgentSelectorProps {
```
- [ ] **3.3.1** 实现智能体选择弹窗
- [ ] **3.3.2** <EFBFBD>寔鍗曢€夊拰澶氶€?- [ ] **3.3.3** 榛樿<E6A69B>閫変腑瑙勮寖鎬ф櫤鑳戒綋
- [ ] **3.3.2** 支持单选和多选
- [ ] **3.3.3** 默认选中规范性智能体
**3.4 瀹$ǹ宸ヤ綔鍙?*
**3.4 审稿工作台**
```
鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?鈹? Header: [Logo] 鏅鸿兘瀹$ǹ绯荤粺 [涓婁紶鏂扮ǹ浠禲 鈹?鈹溾攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?鈹? Filter: [鍏ㄩ儴|寰呭<E5AFB0>鐞唡宸插畬鎴怾 鈹?鈹溾攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?鈹? 鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹? 鈹?鈹? 鈹? 鈽? 鏂囦欢鍚嶇О/淇℃伅 涓婁紶鏃堕棿 瀹$ǹ缁村害 缁撴灉鎽樿<E98EBD> 鎿嶄綔 鈹? 鈹?鈹? 鈹? 鈽? 鏇块浄鍒╃彔鍗曟姉...pdf 10:30 [瑙勮寖][鏂规硶] 92鍒? [鏌ョ湅] 鈹?鈹? 鈹? 鈽? 楂樿<E6A582>鍘嬭嵂鐗?..docx 鍒氬垰 [鏈<>繍琛宂 绛夊緟... [寮€濮媇 鈹?鈹? 鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹? 鈹?鈹溾攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?鈹? [Batch Toolbar: 3涓<33>枃浠跺凡閫変腑 | 杩愯<E69DA9>鏅鸿兘瀹ǹ | 鉁昡 鈹?鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?```
┌─────────────────────────────────────────────────────────────────┐
│ Header: [Logo] 智能审稿系统 [上传新稿件] │
├─────────────────────────────────────────────────────────────────┤
│ Filter: [全部|待处理|已完成] │
├─────────────────────────────────────────────────────────────────┤
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ ☐ 文件名称/信息 上传时间 审稿维度 结果摘要 操作 │ │
│ │ ☐ 替雷利珠单抗...pdf 10:30 [规范][方法] 92分 [查看] │
│ │ ☐ 高血压药物...docx 刚刚 [未运行] 等待... [开始] │
│ └───────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────┤
│ [Batch Toolbar: 3个文件已选中 | 运行智能审稿 | ✕] │
└─────────────────────────────────────────────────────────────────┘
```
- [ ] **3.4.1** 实现页面布局
- [ ] **3.4.2** 实现任务列表表格
- [ ] **3.4.3** 瀹炵幇鐘舵€佺瓫閫?- [ ] **3.4.4** 瀹炵幇鎵归噺鎿嶄綔鏍?
#### Day 5锛氭姤鍛婅<E98D9B>鎯?+ Phase 3 楠岃瘉
- [ ] **3.4.3** 实现状态筛选
- [ ] **3.4.4** 实现批量操作栏
**3.5 鎶ュ憡璇︽儏椤?*
#### Day 5报告详情 + Phase 3 验证
- [ ] **3.5.1** 瀹炵幇Tab鍒囨崲锛堣<E9949B>鑼冩€?鏂规硶瀛︼級
**3.5 报告详情页**
- [ ] **3.5.1** 实现Tab切换规范性/方法学)
- [ ] **3.5.2** 复用评估详情组件
- [ ] **3.5.3** 根据选择的智能体显示对应Tab
- [ ] **3.5.4** 实现导出报告按钮
@@ -622,14 +686,14 @@ interface AgentSelectorProps {
**Phase 3 验证测试**
| 娴嬭瘯椤?| 棰勬湡缁撴灉 | 閫氳繃 |
| 测试项 | 预期结果 | 通过 |
|--------|---------|:----:|
| 椤甸潰鍔犺浇 | 宸ヤ綔鍙版<E98D99>甯告樉绀?| 猬?|
| 鏂囦欢涓婁紶 | 鏀<>寔澶氭枃浠?| 猬?|
| 鏅鸿兘浣撻€夋嫨 | 鍙<>€?涓<>垨2涓?| 猬?|
| 鎵归噺鎿嶄綔 | 鎵归噺杩愯<E69DA9>鎴愬姛 | 猬?|
| 鐘舵€佺瓫閫?| 绛涢€夌粨鏋滄<E98F8B>纭?| 猬?|
| 鎶ュ憡鏌ョ湅 | 鏄剧ず瀵瑰簲璇勪及缁撴灉 | 猬?|
| 页面加载 | 工作台正常显示 | ⬜ |
| 文件上传 | 支持多文件 | ⬜ |
| 智能体选择 | 可选1个或2个 | ⬜ |
| 批量操作 | 批量运行成功 | |
| 状态筛选 | 筛选结果正确 | ⬜ |
| 报告查看 | 显示对应评估结果 | |
- [ ] **3.7** 确认Phase 3通过
@@ -637,41 +701,46 @@ interface AgentSelectorProps {
### Phase 4集成测试1天
**4.1 <EFBFBD>埌绔<EFBFBD>祴璇?*
**4.1 端到端测试**
| 测试场景 | 步骤 | 预期结果 |
|---------|------|---------|
| 鍗曟枃浠?鍗曟櫤鑳戒綋 | 涓婁紶鈫掗€夎<E282AC>鑼冩€р啋鏌ョ湅 | 鍙<>樉绀鸿<E7BB80>鑼冩€ф姤鍛?|
| 鍗曟枃浠?鍙屾櫤鑳戒綋 | 涓婁紶鈫掗€変袱涓<E8A2B1>啋鏌ョ湅 | 鏄剧ず涓や釜鎶ュ憡Tab |
| 单文件+单智能体 | 上传→选规范性→查看 | 只显示规范性报告 |
| 单文件+双智能体 | 上传→选两个→查看 | 显示两个报告Tab |
| 批量+双智能体 | 上传3个→批量运行 | 3个都完成 |
| 鐘舵€佺瓫閫?| 涓婁紶鈫掔瓫閫夊緟澶勭悊 | 姝g‘杩囨护 |
| 状态筛选 | 上传→筛选待处理 | 正确过滤 |
- [ ] **4.1.1** 执行端到端测试
- [ ] **4.1.2** 修复发现的问题
- [ ] **4.1.1** 鎵ц<E98EB5><EFBFBD>埌绔<E59F8C>祴璇?- [ ] **4.1.2** 淇<><E6B787>鍙戠幇鐨勯棶棰?
**4.2 性能测试**
| 指标 | 目标 | 实际 |
|------|------|------|
| 鍒楄〃鍔犺浇 | < 1绉?| 猬?|
| 鍗曟枃浠跺<EFBFBD>鏌?| < 2鍒嗛挓 | 猬?|
| 5鏂囦欢骞跺彂 | < 5鍒嗛挓 | 猬?|
| 列表加载 | < 1秒 | ⬜ |
| 单文件审查 | < 2分钟 | |
| 5文件并发 | < 5分钟 | |
- [ ] **4.2.1** 执行性能测试
**4.3 鍏煎<EFBFBD>鎬ф祴璇?*
**4.3 兼容性测试**
- [ ] **4.3.1** Chrome浏览器测试
- [ ] **4.3.2** Edge浏览器测试
- [ ] **4.3.3** 旧API兼容性确认
- [ ] **4.3.1** Chrome娴忚<E5A8B4>鍣ㄦ祴璇?- [ ] **4.3.2** Edge娴忚<E5A8B4>鍣ㄦ祴璇?- [ ] **4.3.3** 鏃<>PI鍏煎<E98D8F>х璁?
---
### Phase 5锛氶獙鏀朵笌涓婄嚎锛?.5澶╋級
### Phase 5验收与上线0.5天)
**5.1 MVP验收标准**
| 楠屾敹椤?| 棰勬湡缁撴灉 | 閫氳繃 |
| 验收项 | 预期结果 | 通过 |
|--------|---------|:----:|
| 娴佺▼閫?| 5涓狿DF锛?鍒嗛挓鍐呭叏閮ㄥ畬鎴?| 猬?|
| 瑙勮寖鎬у噯纭?| 鍒犳帀鎽樿<E98EBD>缁撹<E7BC81>蹇呴』鎶ラ敊 | 猬?|
| 鏂规硶瀛﹀噯纭?| 娣锋穯缁熻<E7BC81>鏂规硶蹇呴』鎶ュ瓨鐤?| 猬?|
| 鏃犲穿婧?| 杩炵画涓婁紶20涓<30>笉鍗℃<E98D97> | 猬?|
| 流程通 | 5个PDF3分钟内全部完成 | ⬜ |
| 规范性准确 | 删掉摘要结论必须报错 | |
| 方法学准确 | 混淆统计方法必须报存疑 | ⬜ |
| 无崩溃 | 连续上传20个不卡死 | |
- [ ] **5.1.1** 执行验收测试
- [ ] **5.1.2** 编写验收报告
@@ -680,19 +749,20 @@ interface AgentSelectorProps {
- [ ] **5.2.1** 更新文档
- [ ] **5.2.2** 通知相关人员
- [ ] **5.2.3** 鐩戞帶涓婄嚎鍚庣姸鎬?
- [ ] **5.2.3** 监控上线后状态
---
## 📅 时间估算
| Phase | 浠诲姟 | 棰勪及宸ユ椂 | 楠岃瘉鐐?|
| Phase | 任务 | 预估工时 | 验证点 |
|-------|------|---------|--------|
| **Phase 1** | 鍚庣<EFBFBD>妯″潡杩佺Щ | 2澶?| 鉁?API娴嬭瘯閫氳繃 |
| **Phase 2** | 鏁版嵁搴撹縼绉?| 0.5澶?| 鉁?鏁版嵁瀹屾暣鎬ч獙璇?|
| **Phase 3** | 鍓嶇<EFBFBD>閲嶆瀯 | 3澶?| 鉁?鍔熻兘娴嬭瘯閫氳繃 |
| **Phase 4** | 闆嗘垚娴嬭瘯 | 1澶?| 鉁?绔<>埌绔<E59F8C>祴璇曢€氳繃 |
| **Phase 5** | 楠屾敹涓婄嚎 | 0.5澶?| 鉁?MVP楠屾敹閫氳繃 |
| **鎬昏<EFBFBD>** | - | **7澶?* | - |
| **Phase 1** | 后端模块迁移 | 2天 | ✓ API测试通过 |
| **Phase 2** | 数据库迁移 | 0.5天 | ✓ 数据完整性验证 |
| **Phase 3** | 前端重构 | 3天 | ✓ 功能测试通过 |
| **Phase 4** | 集成测试 | 1天 | ✓ 端到端测试通过 |
| **Phase 5** | 验收上线 | 0.5天 | ✓ MVP验收通过 |
| **总计** | - | **7天** | - |
---
@@ -700,38 +770,41 @@ interface AgentSelectorProps {
| 功能 | 预留字段 | 后续计划 |
|------|---------|---------|
| **PICO鍗$墖** | `pico_extract` | 鏂规硶瀛﹁瘎浼版墿灞?|
| **绯荤粺璁剧疆** | `JournalConfig`琛?| 鏈熷垔Logo/妯″瀷閰嶇疆 |
| **PICO卡片** | `pico_extract` | 方法学评估扩展 |
| **系统设置** | `JournalConfig`表 | 期刊Logo/模型配置 |
| **历史归档** | `is_archived`, `archived_at` | 自动归档7天前数据 |
| **鐧诲綍椤甸潰** | - | <EFBFBD>珛浜у搧鏃跺紑鍙?|
| **登录页面** | - | 独立产品时开发 |
---
## ⚠️ 风险控制
### 1. 鏁版嵁搴撹縼绉婚<EFBFBD>闄?
### 1. 数据库迁移风险
| 风险 | 概率 | 影响 | 控制措施 |
|------|------|------|---------|
| 鏁版嵁涓㈠け | 浣?| 楂?| 杩佺Щ鍓嶅<E98D93>浠?|
| 杩佺Щ澶辫触 | 涓?| 涓?| 鍑嗗<E98D91>鍥炴粴SQL |
| 鎬ц兘涓嬮檷 | 浣?| 涓?| 楠岃瘉绱㈠紩鏈夋晥鎬?|
| 数据丢失 | 低 | 高 | 迁移前备份 |
| 迁移失败 | 中 | 中 | 准备回滚SQL |
| 性能下降 | 低 | 中 | 验证索引有效性 |
### 2. 功能回归风险
| 风险 | 概率 | 影响 | 控制措施 |
|------|------|------|---------|
| <EFBFBD>PI涓<EFBFBD>柇 | 浣?| 楂?| 淇濈暀v1璺<31> |
| 璇勪及缁撴灉寮傚父 | 浣?| 楂?| 瀵规瘮娴嬭瘯缁撴灉 |
| 鍓嶇<EFBFBD>鐧藉睆 | 涓?| 涓?| 闃舵<E99783>鎬ф祴璇?|
| 旧API中断 | 低 | 高 | 保留v1路由 |
| 评估结果异常 | 低 | 高 | 对比测试结果 |
| 前端白屏 | 中 | 中 | 阶段性测试 |
### 3. 回滚计划
```bash
# 濡傛灉闇€瑕佸洖婊氬埌杩佺Щ鍓嶇姸鎬?
# 如果需要回滚到迁移前状态
# 1. 停止服务
pm2 stop all
# 2. 鍥炴粴鏁版嵁搴?pg_restore -h localhost -U postgres -d airesearch -c backup_phase2.dump
# 2. 回滚数据库
pg_restore -h localhost -U postgres -d airesearch -c backup_phase2.dump
# 3. 切换到旧代码分支
git checkout main
@@ -742,14 +815,15 @@ pm2 start all
---
## 馃摎 鍙傝€冩枃妗?
- [鏅鸿兘鏈熷垔瀹ǹ绯荤粺MVP PRD](../01-闇€姹傚垎鏋?鏅鸿兘鏈熷垔瀹$ǹ绯荤粺%20MVP%20浜у搧闇€姹傛枃妗?md)
- [鏅鸿兘瀹ǹV7鍘熷瀷](../01-闇€姹傚垎鏋?鏅鸿兘瀹ǹV7.html)
- [浜戝師鐢熷紑鍙戣<EFBFBD>鑼僝(../../04-寮€鍙戣<E98D99>鑼?08-浜戝師鐢熷紑鍙戣<E98D99>鑼?md)
- [鐜版湁绯荤粺鎶€鏈<EFBFBD>懜搴曟姤鍛奭(../../00-椤圭洰姒傝堪/鐜版湁绯荤粺鎶€鏈<E282AC>懜搴曟姤鍛?md)
## 📚 参考文档
- [智能期刊审稿系统MVP PRD](../01-需求分析/智能期刊审稿系统%20MVP%20产品需求文档.md)
- [智能审稿V7原型](../01-需求分析/智能审稿V7.html)
- [云原生开发规范](../../04-开发规范/08-云原生开发规范.md)
- [现有系统技术摸底报告](../../00-项目概述/现有系统技术摸底报告.md)
---
**鏂囨。鐗堟湰锛?* v2.1
**文档版本:** v2.1
**最后更新:** 2026-01-07
**下一步:** 确认后开始Phase 1

View File

@@ -1,37 +1,37 @@
# RVW - 稿件审查系统
> **妯″潡浠e彿锛?* RVW (Review)
> **寮€鍙戠姸鎬侊細** 鈿?鏍稿績鍔熻兘宸插畬鎴愶紝寰呮墿灞?
> **鍟嗕笟浠峰€硷細** 猸愨瓙猸愨瓙猸?鍙<>嫭绔嬪敭鍗?
> **<EFBFBD>珛鎬э細** 猸愨瓙猸愨瓙猸?鏋侀珮
> **模块代号:** RVW (Review)
> **开发状态:** ⚡ 核心功能已完成,待扩展
> **商业价值:** ⭐⭐⭐⭐⭐ 可独立售卖
> **独立性:** ⭐⭐⭐⭐⭐ 极高
> **优先级:** P1
---
## 📋 模块概述
绋夸欢瀹℃煡绯荤粺鎻愪緵AI杈呭姪鐨勭ǹ浠舵櫤鑳藉<EFBFBD>鏌ュ姛鑳姐€?
稿件审查系统提供AI辅助的稿件智能审查功能。
**鏍稿績浠峰€硷細** 瀹屽叏鐙<E58F8F>珛鐨勪骇鍝侊紝鍙<E7B49D>嫭绔嬪敭鍗栫粰鏈熷垔缂栬緫閮?
**核心价值:** 完全独立的产品,可独立售卖给期刊编辑部
---
## 🎯 核心功能
### 宸插畬鎴愬姛鑳?
1. 鉁?**鏂囨。涓婁紶** - Word绋夸欢涓婁紶
2. 鉁?**鏂囨湰鎻愬彇** - 璋冪敤鏂囨。澶勭悊寮曟搸
3. 鉁?**绋跨害瑙勮寖鎬ц瘎浼?* - 11椤硅瘎浼帮紙editorial_review锛?
4. 鉁?**鏂规硶瀛﹁瘎浼?* - 3閮ㄥ垎璇勪及锛坢ethodology_review锛?
5. 鉁?**缁煎悎璇勫垎** - 鍙岀淮搴﹁瘎鍒?
6. 鉁?**PDF瀵煎嚭** - 璇勪及鎶ュ憡瀵煎嚭
### 已完成功能
1. **文档上传** - Word稿件上传
2. **文本提取** - 调用文档处理引擎
3. **稿约规范性评估** - 11项评估editorial_review
4. **方法学评估** - 3部分评估methodology_review
5. **综合评分** - 双维度评分
6. **PDF导出** - 评估报告导出
### 未来扩展
- 鈴?瀹ǹ浜虹<E6B59C>鐞?
- 鈴?瀹$ǹ娴佺▼绠$悊
- 鈴?澶氳疆瀹$ǹ
- 鈴?瀹ǹ鎰忚<E98EB0>妯℃澘
- 鈴?鏈熷垔搴撶<E690B4>鐞?
- ⏳ 审稿人管理
- ⏳ 审稿流程管理
- ⏳ 多轮审稿
- ⏳ 审稿意见模板
- ⏳ 期刊库管理
---
@@ -39,16 +39,16 @@
```
RVW-稿件审查系统/
鈹溾攢鈹€ [AI瀵规帴] RVW<EFBFBD>€熶笂涓嬫枃.md # 鈴?寰呭垱寤?
├── [AI对接] RVW快速上下文.md # ⏳ 待创建
├── 00-项目概述/
鈹? 鈹溾攢鈹€ 01-浜у搧闇€姹傛枃妗?PRD).md # 鈴?寰呭垱寤?
鈹? 鈹溾攢鈹€ 02-鐙<>珛绯荤粺瑙勫垝.md # 鈴?寰呭垱寤?
鈹? 鈹斺攢鈹€ 03-鍟嗕笟妯″紡璁捐<E79281>.md # 鈴?寰呭垱寤?
│ ├── 01-产品需求文档(PRD).md # ⏳ 待创建
│ ├── 02-独立系统规划.md # ⏳ 待创建
│ └── 03-商业模式设计.md # ⏳ 待创建
├── 01-设计文档/
├── 02-业务规则/
鈹? 鈹溾攢鈹€ 01-鏂规硶瀛﹁瘎浼版爣鍑?md # 鈴?寰呰縼绉?
鈹? 鈹斺攢鈹€ 02-绋跨害瑙勮寖鎬ц瘎浼版爣鍑?md # 鈴?寰呰縼绉?
鈹斺攢鈹€ README.md # 鉁?褰撳墠鏂囨。
│ ├── 01-方法学评估标准.md # ⏳ 待迁移
│ └── 02-稿约规范性评估标准.md # ⏳ 待迁移
└── README.md # ✅ 当前文档
```
---
@@ -62,18 +62,18 @@ RVW-稿件审查系统/
## 🎯 商业模式
**<EFBFBD>爣瀹㈡埛锛?* 鏈熷垔缂栬緫閮ㄣ€佸嚭鐗堢ぞ銆佸<E98A86>浼?
**<EFBFBD>崠鏂瑰紡锛?* 瀹屽叏鐙<E58F8F>珛浜у
**瀹氫环绛栫暐锛?* 鎸夋湡鍒婅<E98D92>闃?鎴?鎸夌ǹ浠舵暟閲忚<E996B2>璐?
**目标客户:** 期刊编辑部、出版社、学会
**售卖方式:** 完全独立产品
**定价策略:** 按期刊订阅 或 按稿件数量计费
---
## 猸?涓轰粈涔堥€傚悎鐙<E6828E>珛锛?
## ⭐ 为什么适合独立?
1. 鉁?**鐢ㄦ埛缇ょ嫭绔?* - 鏈熷垔缂栬緫閮?vs 涓村簥鍖荤敓锛堝畬鍏ㄤ笉鍚岋級
2. 鉁?**涓氬姟閫昏緫鐙<E7B7AB>** - 涓庡叾浠栨ā鍧楁棤鍏宠仈
3. 鉁?**閮ㄧ讲鍦烘櫙鐙<E6AB99>** - 鏈熷垔缂栬緫閮ㄦ湁鑷<EFBFBD>繁鐨勯儴缃查渶姹?
4. 鉁?**鍟嗕笟妯″紡鐙<E7B4A1>** - <EFBFBD>互鎸夋湡鍒婅<EFBFBD>闃?
1. **用户群独立** - 期刊编辑部 vs 临床医生(完全不同)
2. **业务逻辑独立** - 与其他模块无关联
3. **部署场景独立** - 期刊编辑部有自己的部署需求
4. **商业模式独立** - 可以按期刊订阅
---