feat(aia): Complete AIA V2.0 with universal streaming capabilities

Major Changes:
- Add StreamingService with OpenAI Compatible format
- Upgrade Chat component V2 with Ant Design X integration
- Implement AIA module with 12 intelligent agents
- Update API routes to unified /api/v1 prefix
- Update system documentation

Backend (~1300 lines):
- common/streaming: OpenAI Compatible adapter
- modules/aia: 12 agents, conversation service, streaming integration
- Update route versions (RVW, PKB to v1)

Frontend (~3500 lines):
- modules/aia: AgentHub + ChatWorkspace (100% prototype restoration)
- shared/Chat: AIStreamChat, ThinkingBlock, useAIStream Hook
- Update API endpoints to v1

Documentation:
- AIA module status guide
- Universal capabilities catalog
- System overview updates
- All module documentation sync

Tested: Stream response verified, authentication working
Status: AIA V2.0 core completed (85%)
This commit is contained in:
2026-01-14 19:15:01 +08:00
parent 3d35e9c58b
commit 1b53ab9d52
386 changed files with 52096 additions and 65238 deletions

View File

@@ -1,52 +1,52 @@
# PKB锛堜釜浜虹煡璇嗗簱锛夊拰 RVW锛堝<E9949B>绋垮姛鑳斤級杩佺Щ璁″垝
> **创建日期:** 2025-12-28
> **维护者:** 技术团队
> **目标:** 将已开发的PKB和RVW功能迁移到最新的模块化架构上
> **鍒涘缓鏃ユ湡锛?* 2025-12-28
> **缁存姢鑰咃細** 鎶€鏈<E282AC>洟闃?
> **<EFBFBD>爣锛?* 灏嗗凡寮€鍙戠殑PKB鍜孯VW鍔熻兘杩佺Щ鍒版渶鏂扮殑妯″潡鍖栨灦鏋勪笂
---
## 馃搵 鎵ц<E98EB5>鎽樿<E98EBD>
### 杩佺Щ鐩<D0A9>
将旧版本(`frontend` + `backend/src/legacy`)中的**个人知识库PKB**和**审稿功能RVW**迁移到新架构(`frontend-v2` + `backend/src/modules`),使其符合最新的模块化、云原生设计规范。
灏嗘棫鐗堟湰锛坄frontend` + `backend/src/legacy`锛変腑鐨?*涓<>汉鐭ヨ瘑搴擄紙PKB锛?*鍜?*瀹ǹ鍔熻兘锛圧VW锛?*杩佺Щ鍒版柊鏋舵瀯锛坄frontend-v2` + `backend/src/modules`锛夛紝浣垮叾绗﹀悎鏈€鏂扮殑妯″潡鍖栥€佷簯鍘熺敓璁捐<EFBFBD>瑙勮寖銆?
### 当前状态
### 褰撳墠鐘舵€?
| 功能 | 旧架构位置 | 完成度 | 数据库Schema | 前端UI |
| 鍔熻兘 | 鏃ф灦鏋勪綅缃?| 瀹屾垚搴?| 鏁版嵁搴揝chema | 鍓嶇<EFBFBD>UI |
|------|-----------|--------|-------------|--------|
| **PKB 个人知识库** | `backend/src/legacy` + `frontend/src` | 100% | `pkb_schema` | ✅ 完整UI |
| **RVW 审稿功能** | `backend/src/legacy` + `frontend/src` | 100% | `public.ReviewTask` | ✅ 完整UI |
| **PKB <EFBFBD>汉鐭ヨ瘑搴?* | `backend/src/legacy` + `frontend/src` | 鉁?100% | `pkb_schema` | 鉁?瀹屾暣UI |
| **RVW 瀹$ǹ鍔熻兘** | `backend/src/legacy` + `frontend/src` | 鉁?100% | `public.ReviewTask` | 鉁?瀹屾暣UI |
### 迁移优先级
1. **P0(最高优先级)**: PKB个人知识库 - 已100%完成,迁移风险低
2. **P1(高优先级)**: RVW审稿功能 - 已100%完成,迁移风险低
### 杩佺Щ浼樺厛绾?
1. **P0锛堟渶楂樹紭鍏堢骇锛?*: PKB涓<42>汉鐭ヨ瘑搴?- 宸?00%瀹屾垚锛岃縼绉婚<E7BB89>闄╀綆
2. **P1锛堥珮浼樺厛绾э級**: RVW瀹$ǹ鍔熻兘 - 宸?00%瀹屾垚锛岃縼绉婚<EFBFBD>闄╀綆
---
## 馃攳 宸叉湁鍔熻兘娣卞害鍒嗘瀽
### 一、PKB个人知识库功能详情
### 涓€銆丳KB锛堜釜浜虹煡璇嗗簱锛夊姛鑳借<EFBFBD>鎯?
#### 1.1 功能特性
#### 1.1 鍔熻兘鐗规€?
**核心能力:**
- **知识库CRUD**:创建、查看、编辑、删除知识库
- **配额管理**每用户3个知识库每库50个文档
- **文档上传**支持PDF、Word、TXT、Markdown
- **文档状态追踪**uploading parsing indexing completed/error
- **Dify RAG集成**基于Dify平台的向量检索
- **语义检索**:支持多知识库联合检索,top_k=15
- **统计信息**文档数、Token数、段落数统计
- **全文阅读模式**Phase2Token限制、智能文档选择
**鏍稿績鑳藉姏锛?*
- 鉁?**鐭ヨ瘑搴揅RUD**锛氬垱寤恒€佹煡鐪嬨€佺紪杈戙€佸垹闄ょ煡璇嗗簱
- 鉁?**閰嶉<E996B0>悊**锛氭瘡鐢ㄦ埛3涓<33>煡璇嗗簱锛屾瘡搴?0涓<30>枃妗?
- 鉁?**鏂囨。涓婁紶**锛氭敮鎸丳DF銆乄ord銆乀XT銆丮arkdown
- 鉁?**鏂囨。鐘舵€佽拷韪?*锛歶ploading 鈫?parsing 鈫?indexing 鈫?completed/error
- 鉁?**Dify RAG闆嗘垚**锛氬熀浜嶥ify骞冲彴鐨勫悜閲忔<E996B2>绱?
- 鉁?**璇<>箟妫€绱?*锛氭敮鎸佸<E98EB8>鐭ヨ瘑搴撹仈鍚堟<E98D9A><EFBFBD>top_k=15
- 鉁?**缁熻<E7BC81>淇℃伅**锛氭枃妗暟銆乀oken鏁般€佹<E282AC>钀芥暟缁熻<E7BC81>
- 鉁?**鍏ㄦ枃闃呰<E99783>妯″紡**锛圥hase2锛夛細Token闄愬埗銆佹櫤鑳芥枃妗i€夋嫨
**鎶€鏈<E282AC>寒鐐癸細**
- 🏆 **Python微服务集成**:调用`extraction_service`提取文档文本
- 馃弳 **Python<EFBFBD>湇鍔¢泦鎴?*锛氳皟鐢╜extraction_service`鎻愬彇鏂囨。鏂囨湰
- 馃弳 **Dify Dataset绠悊**锛氭瘡涓<E798A1>煡璇嗗簱瀵瑰簲涓€涓狣ify Dataset
- 🏆 **Token精确计算**使用tiktoken计算Token双重限制50文件 + 980K tokens
- 🏆 **智能文档选择**基于Token容量的智能推荐算法
- 馃弳 **Token绮剧‘璁$畻**锛氫娇鐢╰iktoken璁$畻Token鏁帮紝鍙岄噸闄愬埗锛?0鏂囦欢 + 980K tokens锛?
- 馃弳 **鏅鸿兘鏂囨。閫夋嫨**锛氬熀浜嶵oken瀹归噺鐨勬櫤鑳芥帹鑽愮畻娉?
#### 1.2 数据库结构
#### 1.2 鏁版嵁搴撶粨鏋?
**PKB Schema锛坄pkb_schema`锛夛細**
```prisma
@@ -83,7 +83,7 @@ model Document {
extractionQuality Float?
charCount Int?
language String? // chinese/english
extractedText String? // Phase2:全文存储
extractedText String? // Phase2锛氬叏鏂囧瓨鍌?
uploadedAt DateTime @default(now())
processedAt DateTime?
}
@@ -114,24 +114,24 @@ model BatchTask {
**鏈嶅姟灞傦紙`backend/src/legacy/services/`锛夛細**
```typescript
knowledgeBaseService.ts (365)
createKnowledgeBase() // 创建知识库(Dify Dataset
knowledgeBaseService.ts (365?
createKnowledgeBase() // 鍒涘缓鐭ヨ瘑搴擄紙Dify Dataset锛?
getKnowledgeBases() // 鑾峰彇鍒楄〃
getKnowledgeBaseById() // 鑾峰彇璇︽儏
updateKnowledgeBase() // 鏇存柊
deleteKnowledgeBase() // 删除级联删除Dify Dataset
searchKnowledgeBase() // 语义检索(调用Dify API
deleteKnowledgeBase() // 鍒犻櫎锛堢骇鑱斿垹闄<EFBFBD>ify Dataset锛?
searchKnowledgeBase() // <EFBFBD>箟妫€绱<EFBFBD>紙璋冪敤Dify API锛?
getKnowledgeBaseStats() // 缁熻<E7BC81>淇℃伅
getDocumentSelection() // 智能文档选择Phase2
getDocumentSelection() // 鏅鸿兘鏂囨。閫夋嫨锛圥hase2锛?
documentService.ts
uploadDocument() // 涓婁紶鏂囨。
getDocuments() // 鑾峰彇鏂囨。鍒楄〃
deleteDocument() // 鍒犻櫎鏂囨。
reprocessDocument() // 閲嶆柊澶勭悊
pollDocumentStatus() // 轮询状态
pollDocumentStatus() // <EFBFBD><EFBFBD>鐘舵€?
tokenService.ts (243)
tokenService.ts (243?
calculateDocumentTokens() // 璁畻Token
selectDocumentsForFullText() // 鏅鸿兘閫夋嫨
TOKEN_LIMITS
@@ -139,7 +139,7 @@ tokenService.ts (243行)
**鎺у埗鍣ㄥ眰锛坄backend/src/legacy/controllers/`锛夛細**
```typescript
knowledgeBaseController.ts (341)
knowledgeBaseController.ts (341?
POST /knowledge-bases
GET /knowledge-bases
GET /knowledge-bases/:id
@@ -160,22 +160,22 @@ documentController.ts
#### 1.4 鍓嶇<E98D93>爜缁撴瀯
**主页面(`frontend/src/pages/KnowledgePage.tsx`** 281
- 知识库列表视图
- 知识库详情视图Tabs文档管理 + 统计信息)
**涓婚〉闈<EFBFBD>`frontend/src/pages/KnowledgePage.tsx`锛夛細** 281琛?
- 鐭ヨ瘑搴撳垪琛ㄨ<EFBFBD>鍥?
- 鐭ヨ瘑搴撹<EFBFBD>鎯呰<EFBFBD>鍥撅紙Tabs锛氭枃妗<EFBFBD>鐞?+ 缁熻<E7BC81>淇℃伅锛?
- 鍙岃繘搴︽潯瀹归噺鏄剧ず锛堟枃浠舵暟 + Token鏁帮級
**缁勪欢锛坄frontend/src/components/knowledge/`锛夛細**
```
KnowledgeBaseList.tsx // 知识库卡片列表
CreateKBDialog.tsx // 创建对话框
EditKBDialog.tsx // 编辑对话框
KnowledgeBaseList.tsx // 鐭ヨ瘑搴撳崱鐗囧垪琛?
CreateKBDialog.tsx // 鍒涘缓瀵硅瘽妗?
EditKBDialog.tsx // 缂栬緫瀵硅瘽妗?
DocumentList.tsx // 鏂囨。鍒楄〃锛堝惈鐘舵€佸窘绔狅級
DocumentUpload.tsx // 鏂囦欢涓婁紶锛堟嫋鎷芥敮鎸侊級
```
**鐘舵€佺<E282AC>鐞嗭紙`frontend/src/stores/useKnowledgeBaseStore.ts`锛夛細**
- Zustand状态管理
- Zustand鐘舵€佺<EFBFBD>鐞?
- API璋冪敤灏佽<E7818F>
- 瀹炴椂鐘舵€佽疆璇<E79686>紙5绉掗棿闅旓級
@@ -183,40 +183,40 @@ DocumentUpload.tsx // 文件上传(拖拽支持)
### 浜屻€丷VW锛堝<E9949B>绋垮姛鑳斤級鍔熻兘璇︽儏
#### 2.1 功能特性
#### 2.1 鍔熻兘鐗规€?
**核心能力:**
- **稿件上传**支持Word文档.doc/.docx最大5MB
- **双维度评估**
**鏍稿績鑳藉姏锛?*
- 鉁?**绋夸欢涓婁紶**锛氭敮鎸乄ord鏂囨。锛?doc/.docx锛夛紝鏈€澶?MB
- 鉁?**鍙岀淮搴﹁瘎浼?*锛?
- 绋跨害瑙勮寖鎬ц瘎浼帮紙11椤规爣鍑嗭級
- 鏂规硶瀛﹁瘎浼帮紙3澶ч儴鍒嗭級
- **基于真实期刊标准**:《中华医学超声杂志》稿约
- **智能分析**使用LLM进行结构化评估
- **完整报告**JSON格式结果支持导出PDF/复制文本
- **模型选择**DeepSeek-V3 / Qwen3-72B / Qwen-Long
- **任务管理**:任务列表、状态追踪、进度显示
- 鉁?**鍩轰簬鐪熷疄鏈熷垔鏍囧噯**锛氥€婁腑鍗庡尰瀛﹁秴澹版潅蹇椼€嬬ǹ绾?
- 鉁?**鏅鸿兘鍒嗘瀽**锛氫娇鐢↙LM杩涜<E69DA9>缁撴瀯鍖栬瘎浼?
- 鉁?**瀹屾暣鎶ュ憡**锛欽SON鏍煎紡缁撴灉锛屾敮鎸佸<E98EB8>鍑篜DF/澶嶅埗鏂囨湰
- 鉁?**妯″瀷閫夋嫨**锛欴eepSeek-V3 / Qwen3-72B / Qwen-Long
- 鉁?**浠诲姟绠$悊**锛氫换鍔″垪琛ㄣ€佺姸鎬佽拷韪<E68BB7>€佽繘搴︽樉绀?
**评估标准:**
**璇勪及鏍囧噯锛?*
**稿约规范性评估11项**
1. 文题Title
2. 作者(Authors
3. 中文摘要Chinese Abstract
4. 英文摘要English Abstract
5. 中文关键词(Chinese Keywords
6. 英文关键词(English Keywords
7. 正文Main Text
8. 参考文献(References
9. 图表Figures and Tables
10. 利益冲突Conflict of Interest
11. 伦理审查Ethics Approval
**绋跨害瑙勮寖鎬ц瘎浼帮紙11椤癸級锛?*
1. 鏂囬<EFBFBD>锛圱itle锛?
2. 浣滆€咃紙Authors锛?
3. <EFBFBD>枃鎽樿<EFBFBD>锛圕hinese Abstract锛?
4. 鑻辨枃鎽樿<EFBFBD>锛圗nglish Abstract锛?
5. <EFBFBD>枃鍏抽敭璇嶏紙Chinese Keywords锛?
6. 鑻辨枃鍏抽敭璇嶏紙English Keywords锛?
7. 姝f枃锛圡ain Text锛?
8. 鍙傝€冩枃鐚<EFBFBD>References锛?
9. 鍥捐〃锛團igures and Tables锛?
10. 鍒╃泭鍐茬獊锛圕onflict of Interest锛?
11. 浼︾悊瀹℃煡锛圗thics Approval锛?
**鏂规硶瀛﹁瘎浼帮紙3閮ㄥ垎锛夛細**
1. 科研设计Research Design
2. 统计方法Statistical Methods
3. 统计分析Statistical Analysis
1. 绉戠爺璁捐<EFBFBD>锛圧esearch Design锛?
2. 缁熻<EFBFBD>鏂规硶锛圫tatistical Methods锛?
3. 缁熻<EFBFBD>鍒嗘瀽锛圫tatistical Analysis锛?
#### 2.2 数据库结构
#### 2.2 鏁版嵁搴撶粨鏋?
**ReviewTask琛<6B>紙褰撳墠鍦╜public` schema锛岄渶杩佺Щ鍒癭rvw_schema`锛夛細**
```prisma
@@ -230,8 +230,8 @@ model ReviewTask {
status String // pending/extracting/reviewing_editorial/reviewing_methodology/completed/failed
modelUsed String
overallScore Float?
editorialReview Json? // 稿约规范性评估结果
methodologyReview Json? // 方法学评估结果
editorialReview Json? // 绋跨害瑙勮寖鎬ц瘎浼扮粨鏋?
methodologyReview Json? // 鏂规硶瀛﹁瘎浼扮粨鏋?
errorMessage String?
startedAt DateTime?
completedAt DateTime?
@@ -242,14 +242,14 @@ model ReviewTask {
#### 2.3 鍚庣<E98D9A>爜缁撴瀯
**服务层(`backend/src/legacy/services/reviewService.ts`** 453
**鏈嶅姟灞傦紙`backend/src/legacy/services/reviewService.ts`锛夛細** 453琛?
```typescript
reviewManuscript() // 主入口(异步执行)
reviewManuscript() // 涓诲叆鍙紙寮傛<EFBFBD>鎵ц<EFBFBD>锛?
processReviewTask() // 鍚庡彴澶勭悊浠诲姟
reviewEditorialStandards() // 稿约规范性评估
reviewMethodology() // 方法学评估
reviewEditorialStandards() // 绋跨害瑙勮寖鎬ц瘎浼?
reviewMethodology() // 鏂规硶瀛﹁瘎浼?
parseJSONFromLLMResponse() // 瀹归敊JSON瑙
getReviewTask() // 获取任务状态
getReviewTask() // 鑾峰彇浠诲姟鐘舵€?
getReviewTasks() // 鑾峰彇浠诲姟鍒楄〃锛堝垎椤碉級
deleteReviewTask() // 鍒犻櫎浠诲姟
getReviewReport() // 鑾峰彇瀹屾暣鎶ュ憡
@@ -257,17 +257,17 @@ getReviewReport() // 获取完整报告
**Prompt璁捐<E79281>锛坄backend/prompts/`锛夛細**
```
review_editorial_system.txt (210行)
review_editorial_system.txt (210琛?
鈹斺攢鈹€ 11涓<31>瘎浼扮淮搴︾殑璇︾粏鏍囧噯
review_methodology_system.txt (231行)
review_methodology_system.txt (231琛?
鈹斺攢鈹€ 3涓<33>儴鍒嗙殑璇勪及鏍囧噯
```
**控制器层(`backend/src/legacy/controllers/reviewController.ts`** 265
**鎺у埗鍣ㄥ眰锛坄backend/src/legacy/controllers/reviewController.ts`锛夛細** 265琛?
```typescript
POST /review/upload // 上传稿件并开始审查
GET /review/tasks/:taskId // 获取任务状态
POST /review/upload // 涓婁紶绋夸欢骞跺紑濮嬪<EFBFBD>鏌?
GET /review/tasks/:taskId // 鑾峰彇浠诲姟鐘舵€?
GET /review/tasks/:taskId/report // 鑾峰彇瀹℃煡鎶ュ憡
GET /review/tasks // 鑾峰彇浠诲姟鍒楄〃锛堝垎椤碉級
DELETE /review/tasks/:taskId // 鍒犻櫎浠诲姟
@@ -275,23 +275,23 @@ DELETE /review/tasks/:taskId // 删除任务
#### 2.4 鍓嶇<E98D93>爜缁撴瀯
**主页面(`frontend/src/pages/ReviewPage.tsx`** 625
- 渐变色标题卡片
- 3步流程:上传稿件 → 选择模型 → 开始审查
- 5步进度展示:上传 → 提取文本 → 稿约评估 → 方法学评估 → 生成报告
- 报告展示Tabs切换
- 导出功能PDF生成 + 文本复制)
**涓婚〉闈<EFBFBD>`frontend/src/pages/ReviewPage.tsx`锛夛細** 625琛?
- 娓愬彉鑹叉爣棰樺崱鐗?
- 3姝ユ祦绋嬶細涓婁紶绋夸欢 鈫?閫夋嫨妯″瀷 鈫?寮€濮嬪<E6BFAE>鏌?
- 5姝ヨ繘搴﹀睍绀猴細涓婁紶 鈫?鎻愬彇鏂囨湰 鈫?绋跨害璇勪及 鈫?鏂规硶瀛﹁瘎浼?鈫?鐢熸垚鎶ュ憡
- 鎶ュ憡灞曠ず锛圱abs鍒囨崲锛?
- 瀵煎嚭鍔熻兘锛圥DF鐢熸垚 + 鏂囨湰澶嶅埗锛?
**缁勪欢锛坄frontend/src/components/review/`锛夛細**
```
ScoreCard.tsx // 鍒嗘暟鍗墖锛堥<E9949B>鑹茬紪鐮侊級
EditorialReview.tsx // 稿约规范性评估详情
MethodologyReview.tsx // 方法学评估详情
EditorialReview.tsx // 绋跨害瑙勮寖鎬ц瘎浼拌<EFBFBD>鎯?
MethodologyReview.tsx // 鏂规硶瀛﹁瘎浼拌<EFBFBD>鎯?
```
**视觉设计:**
**瑙嗚<EFBFBD>璁捐<EFBFBD>锛?*
- 娓愬彉鑹蹭富棰橈細`linear-gradient(135deg, #667eea 0%, #764ba2 100%)`
- 分数颜色编码≥90优秀绿、≥80良好、≥70中等、<70需改进
- 鍒嗘暟棰滆壊缂栫爜锛氣墺90浼樼<EFBFBD>锛堢豢锛夈€佲墺80鑹<EFBFBD>ソ锛堣摑锛夈€佲墺70涓<EFBFBD>瓑锛堥粍锛夈€?70闇€鏀硅繘锛堢孩锛?
- 鎷栨嫿涓婁紶鏀<E7B4B6>
- 鍝嶅簲寮忓竷灞€
@@ -300,66 +300,66 @@ MethodologyReview.tsx // 方法学评估详情
## 馃幆 杩佺Щ绛栫暐
### 杩佺Щ鍘熷垯
1. **保持功能完整性**100%保留现有功能,不做删减
2. **遵循新架构规范**符合模块化、Schema隔离、云原生设计
3. **复用平台能力**:使用`common`层的存储、日志、LLM、文档处理服务
4. **渐进式迁移**:先后端再前端,确保每步可测试
5. **保持数据兼容**:数据库表结构平滑迁移,不丢失数据
1. **淇濇寔鍔熻兘瀹屾暣鎬?*锛?00%淇濈暀鐜版湁鍔熻兘锛屼笉鍋氬垹鍑?
2. **閬靛惊鏂版灦鏋勮<EFBFBD>鑼?*锛氱<E9949B>鍚堟ā鍧楀寲銆丼chema闅旂<E99785>銆佷簯鍘熺敓璁捐<E79281>
3. **澶嶇敤骞冲彴鑳藉姏**锛氫娇鐢╜common`灞傜殑瀛樺偍銆佹棩蹇椼€丩LM銆佹枃妗<E5A697>鐞嗘湇鍔?
4. **娓愯繘寮忚縼绉?*锛氬厛鍚庣<E98D9A>鍐嶅墠绔<E5A2A0>紝纭<E7B49D>繚姣忔<E5A7A3><EFBFBD>祴璇?
5. **淇濇寔鏁版嵁鍏煎<EFBFBD>**锛氭暟鎹<E69A9F>簱琛ㄧ粨鏋勫钩婊戣縼绉伙紝涓嶄涪澶辨暟鎹?
---
## 馃搵 杩佺Щ浠诲姟娓呭崟
### Phase 1: PKB个人知识库迁移(优先)
### Phase 1: PKB<EFBFBD>汉鐭ヨ瘑搴撹縼绉伙紙浼樺厛锛?
#### Task 1.1:后端代码迁移 ⏱️ 预计2-3小时
#### Task 1.1锛氬悗绔<EFBFBD>唬鐮佽縼绉?鈴憋笍 棰勮<E6A3B0>2-3灏忔椂
**目标目录:** `backend/src/modules/pkb/`
**<EFBFBD>爣鐩<EFBFBD>綍锛?* `backend/src/modules/pkb/`
**迁移步骤:**
**杩佺Щ姝ラ<EFBFBD>锛?*
1. **鍒涘缓妯″潡缁撴瀯** (30鍒嗛挓)
```bash
backend/src/modules/pkb/
鈹溾攢鈹€ README.md # 妯″潡璇存槑
鈹溾攢鈹€ controllers/
│ ├── knowledgeBaseController.ts # 从legacy迁移
│ └── documentController.ts # 从legacy迁移
鈹? 鈹溾攢鈹€ knowledgeBaseController.ts # 浠巐egacy杩佺Щ
鈹? 鈹斺攢鈹€ documentController.ts # 浠巐egacy杩佺Щ
鈹溾攢鈹€ services/
│ ├── knowledgeBaseService.ts # 从legacy迁移
│ ├── documentService.ts # 从legacy迁移
│ └── tokenService.ts # 从legacy迁移
鈹? 鈹溾攢鈹€ knowledgeBaseService.ts # 浠巐egacy杩佺Щ
鈹? 鈹溾攢鈹€ documentService.ts # 浠巐egacy杩佺Щ
鈹? 鈹斺攢鈹€ tokenService.ts # 浠巐egacy杩佺Щ
鈹溾攢鈹€ routes/
│ └── index.ts # 路由注册
鈹? 鈹斺攢鈹€ index.ts # <EFBFBD>敱娉ㄥ唽
鈹斺攢鈹€ types/
鈹斺攢鈹€ index.ts # 绫诲瀷瀹氫箟
```
2. **澶嶅埗骞舵洿鏂版湇鍔″眰** (60鍒嗛挓)
- 浠巂backend/src/legacy/services/`澶嶅埗鏂囦欢
- 更新导入路径:
- 鏇存柊瀵煎叆璺<E58F86>緞锛?
```typescript
// ❌ 旧代码
// 鉂?鏃т唬鐮?
import { prisma } from '../../config/database.js';
import { difyClient } from '../../common/rag/DifyClient.js';
// ✅ 新代码
// 鉁?鏂颁唬鐮?
import { prisma } from '@/config/database';
import { difyClient } from '@/common/rag/DifyClient';
```
- 使用平台能力:
- 浣跨敤骞冲彴鑳藉姏锛?
```typescript
// ✅ 使用storage抽象层(如果需要文件存储)
// 鉁?浣跨敤storage鎶借薄灞傦紙濡傛灉闇€瑕佹枃浠跺瓨鍌<EFBFBD>
import { storage } from '@/common/storage';
// ✅ 使用logger替换console.log
// 鉁?浣跨敤logger锛堟浛鎹<EFBFBD>onsole.log锛?
import { logger } from '@/common/logging';
// ✅ 使用extractionClient(已有)
// 鉁?浣跨敤extractionClient锛堝凡鏈夛級
import { extractionClient } from '@/common/document/ExtractionClient';
```
3. **复制并更新控制器层** (30分钟)
3. **澶嶅埗骞舵洿鏂版帶鍒跺櫒灞?* (30鍒嗛挓)
- 浠巂backend/src/legacy/controllers/`澶嶅埗鏂囦欢
- 鏇存柊瀵煎叆璺<E58F86>
- 绉婚櫎`MOCK_USER_ID`锛屼粠`request.user`鑾峰彇锛堝緟瀹炵幇璁よ瘉涓<EFBFBD>棿浠讹級
@@ -372,7 +372,7 @@ MethodologyReview.tsx // 方法学评估详情
import * as documentController from '../controllers/documentController';
export default async function pkbRoutes(fastify: FastifyInstance) {
// 知识库管理
// 鐭ヨ瘑搴撶<EFBFBD>鐞?
fastify.post('/api/v1/pkb/knowledge-bases', knowledgeBaseController.createKnowledgeBase);
fastify.get('/api/v1/pkb/knowledge-bases', knowledgeBaseController.getKnowledgeBases);
fastify.get('/api/v1/pkb/knowledge-bases/:id', knowledgeBaseController.getKnowledgeBaseById);
@@ -403,13 +403,13 @@ MethodologyReview.tsx // 方法学评估详情
6. **鍒涘缓妯″潡README** (20鍒嗛挓)
```markdown
# PKB 个人知识库模块
# PKB <EFBFBD>汉鐭ヨ瘑搴撴ā鍧?
## 鍔熻兘姒傝堪
- 鐭ヨ瘑搴揅RUD
- 文档上传与管理
- Dify RAG检索
- 批处理任务
- 鏂囨。涓婁紶涓庣<EFBFBD>鐞?
- Dify RAG妫€绱?
- 鎵瑰<EFBFBD>鐞嗕换鍔?
## API绔<49>
...
@@ -421,47 +421,47 @@ MethodologyReview.tsx // 方法学评估详情
- pkb_schema.batch_results
```
#### Task 1.2:前端代码迁移 ⏱️ 预计2-3小时
#### Task 1.2锛氬墠绔<EFBFBD>唬鐮佽縼绉?鈴憋笍 棰勮<E6A3B0>2-3灏忔椂
**目标目录:** `frontend-v2/src/modules/pkb/`
**<EFBFBD>爣鐩<EFBFBD>綍锛?* `frontend-v2/src/modules/pkb/`
**迁移步骤:**
**杩佺Щ姝ラ<EFBFBD>锛?*
1. **鍒涘缓妯″潡缁撴瀯** (30鍒嗛挓)
```bash
frontend-v2/src/modules/pkb/
鈹溾攢鈹€ index.tsx # 妯″潡鍏ュ彛锛堣矾鐢遍厤缃<E58EA4>
鈹溾攢鈹€ api/
│ └── index.ts # API封装
鈹? 鈹斺攢鈹€ index.ts # API灏佽<EFBFBD>
鈹溾攢鈹€ pages/
│ ├── KnowledgeBasePage.tsx # 知识库列表页
│ └── KnowledgeBaseDetail.tsx # 知识库详情页
鈹? 鈹溾攢鈹€ KnowledgeBasePage.tsx # 鐭ヨ瘑搴撳垪琛ㄩ〉
鈹? 鈹斺攢鈹€ KnowledgeBaseDetail.tsx # 鐭ヨ瘑搴撹<EFBFBD>鎯呴〉
鈹溾攢鈹€ components/
│ ├── KnowledgeBaseList.tsx
│ ├── CreateKBDialog.tsx
│ ├── EditKBDialog.tsx
│ ├── DocumentList.tsx
│ └── DocumentUpload.tsx
鈹? 鈹溾攢鈹€ KnowledgeBaseList.tsx
鈹? 鈹溾攢鈹€ CreateKBDialog.tsx
鈹? 鈹溾攢鈹€ EditKBDialog.tsx
鈹? 鈹溾攢鈹€ DocumentList.tsx
鈹? 鈹斺攢鈹€ DocumentUpload.tsx
鈹溾攢鈹€ hooks/
│ └── useKnowledgeBase.ts # 状态管理
鈹? 鈹斺攢鈹€ useKnowledgeBase.ts # 鐘舵€佺<EFBFBD>鐞?
鈹斺攢鈹€ types/
鈹斺攢鈹€ index.ts # 绫诲瀷瀹氫箟
```
2. **复制并更新API层** (30分钟)
2. **澶嶅埗骞舵洿鏂癆PI灞?* (30鍒嗛挓)
- 浠巂frontend/src/api/knowledgeBaseApi.ts`澶嶅埗
- 更新API路径`/api/knowledge-bases` `/api/v1/pkb/knowledge-bases`
- 鏇存柊API璺<49>緞锛歚/api/knowledge-bases` 鈫?`/api/v1/pkb/knowledge-bases`
3. **复制并更新组件** (90分钟)
- 从`frontend/src/components/knowledge/`复制所有组件
3. **澶嶅埗骞舵洿鏂扮粍浠?* (90鍒嗛挓)
- 浠巂frontend/src/components/knowledge/`澶嶅埗鎵€鏈夌粍浠?
- 鏇存柊瀵煎叆璺<E58F86>
- 使用新的`request`实例(如果有)
- 保持Ant Design 6.0组件兼容性
- 浣跨敤鏂扮殑`request`瀹炰緥锛堝<EFBFBD>鏋滄湁锛?
- 淇濇寔Ant Design 6.0缁勪欢鍏煎<EFBFBD>鎬?
4. **澶嶅埗骞舵洿鏂颁富椤甸潰** (60鍒嗛挓)
- 浠巂frontend/src/pages/KnowledgePage.tsx`澶嶅埗
- 拆分为两个页面:列表页 + 详情页(可选)
- 更新状态管理:Zustand React Query或保持Zustand
- 鎷嗗垎涓轰袱涓<E8A2B1>〉闈<E38089>細鍒楄〃椤?+ 璇︽儏椤碉紙鍙<E7B499>€夛級
- 鏇存柊鐘舵€佺<E282AC>鐞嗭細Zustand 鈫?React Query鎴栦繚鎸乑ustand
5. **鍒涘缓妯″潡鍏ュ彛** (30鍒嗛挓)
```typescript
@@ -473,7 +473,7 @@ MethodologyReview.tsx // 方法学评估详情
const pkbModule: ModuleConfig = {
id: 'pkb',
name: '个人知识库',
name: '<EFBFBD>汉鐭ヨ瘑搴?,
icon: 'FileTextOutlined',
routes: [
{
@@ -498,50 +498,50 @@ MethodologyReview.tsx // 方法学评估详情
#### Task 1.3锛氭暟鎹<EFBFBD>簱Schema楠岃瘉 鈴憋笍 棰勮<E6A3B0>30鍒嗛挓
**妫€鏌ヤ簨椤癸細**
- `pkb_schema.knowledge_bases` 表结构完整
- `pkb_schema.documents` 表结构完整
- `pkb_schema.batch_tasks` 表结构完整
- `pkb_schema.batch_results` 表结构完整
- ✅ 外键关系正确
- ✅ 索引齐全
- 鉁?`pkb_schema.knowledge_bases` 琛ㄧ粨鏋勫畬鏁?
- 鉁?`pkb_schema.documents` 琛ㄧ粨鏋勫畬鏁?
- 鉁?`pkb_schema.batch_tasks` 琛ㄧ粨鏋勫畬鏁?
- 鉁?`pkb_schema.batch_results` 琛ㄧ粨鏋勫畬鏁?
- 鉁?澶栭敭鍏崇郴姝g‘
- 鉁?绱㈠紩榻愬叏
**Prisma Schema已存在,无需修改。**
**Prisma Schema宸插瓨鍦<EFBFBD>紝鏃犻渶淇<EFBFBD>敼銆?*
#### Task 1.4:集成测试 ⏱️ 预计1小时
#### Task 1.4锛氶泦鎴愭祴璇?鈴憋笍 棰勮<E6A3B0>1灏忔椂
**测试清单:**
1. ✅ 创建知识库
2. ✅ 上传文档PDF/Word
3. ✅ 文档状态轮询
4. ✅ 语义检索
5. ✅ 删除文档
6. ✅ 删除知识库
7. Token计算和智能选择
8. ✅ 批处理任务创建和执行
**娴嬭瘯娓呭崟锛?*
1. 鉁?鍒涘缓鐭ヨ瘑搴?
2. 鉁?涓婁紶鏂囨。锛圥DF/Word锛?
3. 鉁?鏂囨。鐘舵€佽疆璇?
4. 鉁?璇<>箟妫€绱?
5. 鉁?鍒犻櫎鏂囨。
6. 鉁?鍒犻櫎鐭ヨ瘑搴?
7. 鉁?Token璁$畻鍜屾櫤鑳介€夋嫨
8. 鉁?鎵瑰<E98EB5>鐞嗕换鍔″垱寤哄拰鎵ц<E98EB5>
---
### Phase 2: RVW瀹ǹ鍔熻兘杩佺Щ
#### Task 2.1:后端代码迁移 ⏱️ 预计2-3小时
#### Task 2.1锛氬悗绔<EFBFBD>唬鐮佽縼绉?鈴憋笍 棰勮<E6A3B0>2-3灏忔椂
**目标目录:** `backend/src/modules/rvw/`
**<EFBFBD>爣鐩<EFBFBD>綍锛?* `backend/src/modules/rvw/`
**迁移步骤:**
**杩佺Щ姝ラ<EFBFBD>锛?*
1. **鍒涘缓妯″潡缁撴瀯** (30鍒嗛挓)
```bash
backend/src/modules/rvw/
鈹溾攢鈹€ README.md
鈹溾攢鈹€ controllers/
│ └── reviewController.ts
鈹? 鈹斺攢鈹€ reviewController.ts
鈹溾攢鈹€ services/
│ └── reviewService.ts
鈹? 鈹斺攢鈹€ reviewService.ts
鈹溾攢鈹€ routes/
│ └── index.ts
鈹? 鈹斺攢鈹€ index.ts
鈹溾攢鈹€ prompts/
│ ├── editorial_system.txt # 从backend/prompts/复制
│ └── methodology_system.txt # 从backend/prompts/复制
鈹? 鈹溾攢鈹€ editorial_system.txt # 浠巄ackend/prompts/澶嶅埗
鈹? 鈹斺攢鈹€ methodology_system.txt # 浠巄ackend/prompts/澶嶅埗
鈹斺攢鈹€ types/
鈹斺攢鈹€ index.ts
```
@@ -549,15 +549,15 @@ MethodologyReview.tsx // 方法学评估详情
2. **澶嶅埗骞舵洿鏂版湇鍔″眰** (60鍒嗛挓)
- 浠巂backend/src/legacy/services/reviewService.ts`澶嶅埗
- 鏇存柊瀵煎叆璺<E58F86>
- 使用平台能力:
- 浣跨敤骞冲彴鑳藉姏锛?
```typescript
import { logger } from '@/common/logging';
import { extractionClient } from '@/common/document/ExtractionClient';
import { LLMFactory } from '@/common/llm/adapters/LLMFactory';
```
- 移动Prompt文件到模块内部
- 绉诲姩Prompt鏂囦欢鍒版ā鍧楀唴閮?
3. **复制并更新控制器层** (30分钟)
3. **澶嶅埗骞舵洿鏂版帶鍒跺櫒灞?* (30鍒嗛挓)
- 浠巂backend/src/legacy/controllers/reviewController.ts`澶嶅埗
- 鏇存柊瀵煎叆璺<E58F86>
@@ -586,9 +586,9 @@ MethodologyReview.tsx // 方法学评估详情
#### Task 2.2锛氭暟鎹<EFBFBD>簱Schema杩佺Щ 鈴憋笍 棰勮<E6A3B0>1灏忔椂
**当前问题:** `ReviewTask`表在`public` schema,需迁移到`rvw_schema`
**褰撳墠闂<EFBFBD><EFBFBD>锛?* `ReviewTask`琛ㄥ湪`public` schema锛岄渶杩佺Щ鍒癭rvw_schema`
**迁移步骤:**
**杩佺Щ姝ラ<EFBFBD>锛?*
1. **鏇存柊Prisma Schema** (20鍒嗛挓)
```prisma
@@ -615,7 +615,7 @@ MethodologyReview.tsx // 方法学评估详情
@@index([status], map: "idx_rvw_tasks_status")
@@index([createdAt], map: "idx_rvw_tasks_created_at")
@@map("review_tasks")
@@schema("rvw_schema") // ⭐ 迁移到rvw_schema
@@schema("rvw_schema") // 猸?杩佺Щ鍒皉vw_schema
}
```
@@ -623,12 +623,12 @@ MethodologyReview.tsx // 方法学评估详情
```sql
-- backend/prisma/migrations/migrate_review_to_rvw_schema.sql
-- 1. 创建rvw_schema(如果不存在)
-- 1. 鍒涘缓rvw_schema锛堝<EFBFBD>鏋滀笉瀛樺湪锛?
CREATE SCHEMA IF NOT EXISTS rvw_schema;
-- 2. 在rvw_schema中创建新表
-- 2. 鍦╮vw_schema<EFBFBD>垱寤烘柊琛?
CREATE TABLE rvw_schema.review_tasks (
-- 复制public.ReviewTask表结构
-- 澶嶅埗public.ReviewTask琛ㄧ粨鏋?
-- 娣诲姞铔囧舰鍛藉悕锛坲ser_id, file_name绛夛級
);
@@ -661,37 +661,37 @@ MethodologyReview.tsx // 方法学评估详情
npm run test:db
```
#### Task 2.3:前端代码迁移 ⏱️ 预计2-3小时
#### Task 2.3锛氬墠绔<EFBFBD>唬鐮佽縼绉?鈴憋笍 棰勮<E6A3B0>2-3灏忔椂
**目标目录:** `frontend-v2/src/modules/rvw/`
**<EFBFBD>爣鐩<EFBFBD>綍锛?* `frontend-v2/src/modules/rvw/`
**迁移步骤:**
**杩佺Щ姝ラ<EFBFBD>锛?*
1. **鍒涘缓妯″潡缁撴瀯** (30鍒嗛挓)
```bash
frontend-v2/src/modules/rvw/
鈹溾攢鈹€ index.tsx
鈹溾攢鈹€ api/
│ └── index.ts
鈹? 鈹斺攢鈹€ index.ts
鈹溾攢鈹€ pages/
│ ├── ReviewPage.tsx
│ └── ReviewList.tsx (可选)
鈹? 鈹溾攢鈹€ ReviewPage.tsx
鈹? 鈹斺攢鈹€ ReviewList.tsx (<EFBFBD>€?
鈹溾攢鈹€ components/
│ ├── ScoreCard.tsx
│ ├── EditorialReview.tsx
│ └── MethodologyReview.tsx
鈹? 鈹溾攢鈹€ ScoreCard.tsx
鈹? 鈹溾攢鈹€ EditorialReview.tsx
鈹? 鈹斺攢鈹€ MethodologyReview.tsx
鈹溾攢鈹€ hooks/
│ └── useReviewTask.ts
鈹? 鈹斺攢鈹€ useReviewTask.ts
鈹斺攢鈹€ types/
鈹斺攢鈹€ index.ts
```
2. **复制并更新API层** (30分钟)
2. **澶嶅埗骞舵洿鏂癆PI灞?* (30鍒嗛挓)
- 浠巂frontend/src/api/reviewApi.ts`澶嶅埗
- 更新API路径`/api/review` `/api/v1/rvw`
- 鏇存柊API璺<49>緞锛歚/api/review` 鈫?`/api/v1/rvw`
3. **复制并更新组件** (60分钟)
- 从`frontend/src/components/review/`复制所有组件
3. **澶嶅埗骞舵洿鏂扮粍浠?* (60鍒嗛挓)
- 浠巂frontend/src/components/review/`澶嶅埗鎵€鏈夌粍浠?
- 淇濇寔瑙嗚<E79199>璁捐<E79281>锛堟笎鍙樿壊銆侀<E98A86>鑹茬紪鐮侊級
4. **澶嶅埗骞舵洿鏂颁富椤甸潰** (90鍒嗛挓)
@@ -725,91 +725,91 @@ MethodologyReview.tsx // 方法学评估详情
6. **鍦ㄦ<E98DA6>鏋朵腑娉ㄥ唽妯″潡** (10鍒嗛挓)
#### Task 2.4:集成测试 ⏱️ 预计1小时
#### Task 2.4锛氶泦鎴愭祴璇?鈴憋笍 棰勮<E6A3B0>1灏忔椂
**测试清单:**
1. ✅ 上传Word稿件
2. ✅ 状态轮询5个步骤
3. ✅ 稿约规范性评估11项
4. ✅ 方法学评估3部分
5. ✅ 总体评分计算
6. ✅ 报告展示Tabs切换
7. ✅ 导出PDF
8. ✅ 复制报告文本
9. ✅ 任务列表查询
10. ✅ 删除任务
**娴嬭瘯娓呭崟锛?*
1. 鉁?涓婁紶Word绋夸欢
2. 鉁?鐘舵€佽疆璇<E79686>紙5涓<35><E6B693>楠わ級
3. 鉁?绋跨害瑙勮寖鎬ц瘎浼帮紙11椤癸級
4. 鉁?鏂规硶瀛﹁瘎浼帮紙3閮ㄥ垎锛?
5. 鉁?鎬讳綋璇勫垎璁$畻
6. 鉁?鎶ュ憡灞曠ず锛圱abs鍒囨崲锛?
7. 鉁?瀵煎嚭PDF
8. 鉁?澶嶅埗鎶ュ憡鏂囨湰
9. 鉁?浠诲姟鍒楄〃鏌ヨ<E98F8C>
10. 鉁?鍒犻櫎浠诲姟
---
## 🔧 技术细节补充
## 馃敡 鎶€鏈<E282AC>粏鑺傝ˉ鍏?
### 鍏抽敭渚濊禆澶嶇敤
**宸叉湁骞冲彴鑳藉姏锛堝彲鐩存帴澶嶇敤锛夛細**
```typescript
// ✅ 文档提取服务(已有)
// 鉁?鏂囨。鎻愬彇鏈嶅姟锛堝凡鏈夛級
import { extractionClient } from '@/common/document/ExtractionClient';
// 支持PDF、Word、TXT已集成Python微服务
// <EFBFBD>寔锛歅DF銆乄ord銆乀XT锛屽凡闆嗘垚Python<EFBFBD>湇鍔?
// LLM网关(已有)
// 鉁?LLM缃戝叧锛堝凡鏈夛級
import { LLMFactory } from '@/common/llm/adapters/LLMFactory';
// 鏀<>寔锛欴eepSeek-V3, Qwen-Max, GPT-5-Pro, Claude-4.5
// ✅ 存储服务(已有)
// 鉁?瀛樺偍鏈嶅姟锛堝凡鏈夛級
import { storage } from '@/common/storage';
// 支持LocalAdapter OSSAdapter零代码切换
// <EFBFBD>寔锛歀ocalAdapter 鈫?OSSAdapter闆朵唬鐮佸垏鎹?
// ✅ 日志系统(已有)
// 鉁?鏃ュ織绯荤粺锛堝凡鏈夛級
import { logger } from '@/common/logging';
// RAG服务已有PKB需要
// 鉁?RAG鏈嶅姟锛堝凡鏈夛紝PKB闇€瑕侊級
import { difyClient } from '@/common/rag/DifyClient';
```
### 澶栭儴渚濊禆
**PKB模块额外依赖:**
- **Dify平台**已部署提供RAG检索能力
- **tiktoken**Token计算,已安装(`@dqbd/tiktoken`
- ✅ **Python微服务**:文档提取,已部署
**PKB妯″潡棰濆<EFBFBD>渚濊禆锛?*
- 鉁?**Dify骞冲彴**锛氬凡閮ㄧ讲锛屾彁渚汻AG妫€绱㈣兘鍔?
- 鉁?**tiktoken**锛歍oken畻锛屽凡瀹夎<EFBFBD>锛坄@dqbd/tiktoken`锛?
- 鉁?**Python<EFBFBD>湇鍔?*锛氭枃妗f彁鍙栵紝宸查儴缃?
**RVW模块额外依赖:**
- ✅ **html2canvas**PDF导出前端需安装
- ✅ **jspdf**PDF生成前端需安装
**RVW妯″潡棰濆<EFBFBD>渚濊禆锛?*
- 鉁?**html2canvas**锛歅DF瀵煎嚭锛堝墠绔<EFBFBD>級锛岄渶瀹夎<EFBFBD>
- 鉁?**jspdf**锛歅DF鐢熸垚锛堝墠绔<EFBFBD>級锛岄渶瀹夎<EFBFBD>
### API璺<49>緞瑙勮寖
**新架构API路径**
**鏂版灦鏋凙PI璺<EFBFBD>緞锛?*
```
PKB模块:
PKB妯″潡锛?
/api/v1/pkb/knowledge-bases/*
/api/v1/pkb/documents/*
RVW模块:
RVW妯″潡锛?
/api/v1/rvw/upload
/api/v1/rvw/tasks/*
```
**鏃ф灦鏋凙PI璺<49>緞锛堥渶鍚戝悗鍏煎<E98D8F>锛夛細**
```
/api/knowledge-bases/* (可保留,重定向到新路径)
/api/review/* (可保留,重定向到新路径)
/api/knowledge-bases/* 锛堝彲淇濈暀锛岄噸瀹氬悜鍒版柊璺<EFBFBD>緞锛?
/api/review/* 锛堝彲淇濈暀锛岄噸瀹氬悜鍒版柊璺<EFBFBD>緞锛?
```
---
## 📝 数据迁移与向后兼容
## 馃摑 鏁版嵁杩佺Щ涓庡悜鍚庡吋瀹?
### PKB妯″潡
- ✅ **无需数据迁移**`pkb_schema`已存在且结构完整
- ✅ **API向后兼容**:保留旧路径`/api/knowledge-bases`,内部转发到新路径
- 鉁?**鏃犻渶鏁版嵁杩佺Щ**锛歚pkb_schema`宸插瓨鍦ㄤ笖缁撴瀯瀹屾暣
- 鉁?**API鍚戝悗鍏煎<E98D8F>**锛氫繚鐣欐棫璺<E6A3AB>`/api/knowledge-bases`锛屽唴閮ㄨ浆鍙戝埌鏂拌矾寰?
### RVW妯″潡
- ⚠️ **需要数据迁移**`public.ReviewTask` `rvw_schema.review_tasks`
- ⚠️ **字段名调整**:驼峰命名 → 蛇形命名(`userId` `user_id`
- ✅ **API向后兼容**:保留旧路径`/api/review`,内部转发到新路径
- 鈿狅笍 **闇€瑕佹暟鎹<E69A9F>縼绉?*锛歚public.ReviewTask` 鈫?`rvw_schema.review_tasks`
- 鈿狅笍 **瀛楁<E7809B>鍚嶈皟鏁?*锛氶┘宄板懡鍚?鈫?铔囧舰鍛藉悕锛坄userId` 鈫?`user_id`锛?
- 鉁?**API鍚戝悗鍏煎<E98D8F>**锛氫繚鐣欐棫璺<E6A3AB>`/api/review`锛屽唴閮ㄨ浆鍙戝埌鏂拌矾寰?
**迁移脚本模板:**
**杩佺Щ鑴氭湰妯℃澘锛?*
```sql
-- 鍒涘缓鏂癝chema
CREATE SCHEMA IF NOT EXISTS rvw_schema;
@@ -843,26 +843,26 @@ CREATE INDEX idx_rvw_tasks_created_at ON rvw_schema.review_tasks(created_at);
---
## ✅ 验收标准
## 鉁?楠屾敹鏍囧噯
### PKB妯″潡杩佺Щ瀹屾垚鏍囧噯
1. ✅ 后端代码在`backend/src/modules/pkb/`
2. ✅ 前端代码在`frontend-v2/src/modules/pkb/`
3. ✅ API路径为`/api/v1/pkb/*`
4. ✅ 所有功能测试通过知识库CRUD、文档上传、检索、批处理
5. ✅ 前端UI完全迁移列表、详情、上传、对话框
6. ✅ 复用平台能力logger、storage、extractionClient、difyClient
7. ✅ 文档完整README.md、API文档
1. 鉁?鍚庣<E98D9A>爜鍦╜backend/src/modules/pkb/`
2. 鉁?鍓嶇<E98D93>爜鍦╜frontend-v2/src/modules/pkb/`
3. 鉁?API璺<49>緞涓篳/api/v1/pkb/*`
4. 鉁?鎵€鏈夊姛鑳芥祴璇曢€氳繃锛堢煡璇嗗簱CRUD銆佹枃妗笂浼犮€佹<E282AC>绱€€佹壒澶勭悊锛?
5. 鉁?鍓嶇<E98D93>UI瀹屽叏杩佺Щ锛堝垪琛ㄣ€佽<E282AC>鎯呫€佷笂浼犮€佸<E282AC>璇濇<E79287>锛?
6. 鉁?澶嶇敤骞冲彴鑳藉姏锛坙ogger銆乻torage銆乪xtractionClient銆乨ifyClient锛?
7. 鉁?鏂囨。瀹屾暣锛圧EADME.md銆丄PI鏂囨。锛?
### RVW妯″潡杩佺Щ瀹屾垚鏍囧噯
1. ✅ 后端代码在`backend/src/modules/rvw/`
2. ✅ 前端代码在`frontend-v2/src/modules/rvw/`
3. ✅ API路径为`/api/v1/rvw/*`
4. ✅ 数据已迁移到`rvw_schema.review_tasks`
5. ✅ 所有功能测试通过(上传、评估、报告、导出)
6. ✅ 前端UI完全迁移上传、进度、报告、导出
7. ✅ 复用平台能力logger、extractionClient、LLMFactory
8.Prompt文件在模块内部(`modules/rvw/prompts/`
1. 鉁?鍚庣<E98D9A>爜鍦╜backend/src/modules/rvw/`
2. 鉁?鍓嶇<E98D93>爜鍦╜frontend-v2/src/modules/rvw/`
3. 鉁?API璺<49>緞涓篳/api/v1/rvw/*`
4. 鉁?鏁版嵁宸茶縼绉诲埌`rvw_schema.review_tasks`
5. 鉁?鎵€鏈夊姛鑳芥祴璇曢€氳繃锛堜笂浼犮€佽瘎浼般€佹姤鍛娿€佸<E282AC>鍑猴級
6. 鉁?鍓嶇<E98D93>UI瀹屽叏杩佺Щ锛堜笂浼犮€佽繘搴︺€佹姤鍛娿€佸<E282AC>鍑猴級
7. 鉁?澶嶇敤骞冲彴鑳藉姏锛坙ogger銆乪xtractionClient銆丩LMFactory锛?
8. 鉁?Prompt鏂囦欢鍦ㄦā鍧楀唴閮<EFBFBD>`modules/rvw/prompts/`锛?
---
@@ -870,9 +870,9 @@ CREATE INDEX idx_rvw_tasks_created_at ON rvw_schema.review_tasks(created_at);
### 闇€瑕佹洿鏂扮殑鏂囨。
1. **系统当前状态与开发指南**
- 文件:`docs/00-系统总体设计/00-系统当前状态与开发指南.md`
- 更新PKB和RVW模块状态从"已完成(旧架构)"改为"✅ 100%(新架构)"
1. **绯荤粺褰撳墠鐘舵€佷笌寮€鍙戞寚鍗?*
- 鏂囦欢锛歚docs/00-绯荤粺鎬讳綋璁捐<E79281>/00-绯荤粺褰撳墠鐘舵€佷笌寮€鍙戞寚鍗?md`
- 鏇存柊锛歅KB鍜孯VW妯″潡鐘舵€佷粠"宸插畬鎴愶紙鏃ф灦鏋勶級"鏀逛负"鉁?100%锛堟柊鏋舵瀯锛?
2. **妯″潡README鍒涘缓**
- `backend/src/modules/pkb/README.md`
@@ -883,37 +883,37 @@ CREATE INDEX idx_rvw_tasks_created_at ON rvw_schema.review_tasks(created_at);
- `frontend-v2/src/modules/rvw/README.md`
4. **API鏂囨。鏇存柊**
- `docs/04-开发规范/04-API路由总览.md`
- `docs/04-寮€鍙戣<EFBFBD>鑼?04-API璺<49>敱鎬昏<E98EAC>.md`
- 娣诲姞PKB鍜孯VW鐨凙PI绔<49>偣娓呭崟
5. **杩佺Щ瀹屾垚鎶ュ憡**
- 鏂板缓锛歚docs/08-椤圭洰绠$悊/PKB鍜孯VW杩佺Щ瀹屾垚鎶ュ憡.md`
- 记录:迁移时间、遇到的问题、解决方案、测试结果
- 璁板綍锛氳縼绉绘椂闂淬€侀亣鍒扮殑闂<EFBFBD><EFBFBD>銆佽В鍐虫柟妗堛€佹祴璇曠粨鏋?
---
## 馃幆 鎬荤粨
### 杩佺Щ浼樺娍
1. **架构统一**:所有模块遵循相同的模块化结构
2. **易于维护**:代码组织清晰,职责明确
3. **复用平台能力**:减少重复代码,提升代码质量
4. **支持独立部署**:每个模块可独立打包、部署、销售
5. **Schema隔离**:数据库层面模块独立,降低耦合
1. 鉁?**鏋舵瀯缁熶竴**锛氭墍鏈夋ā鍧楅伒寰<E4BC92>浉鍚岀殑妯″潡鍖栫粨鏋?
2. 鉁?**鏄撲簬缁存姢**锛氫唬鐮佺粍缁囨竻鏅帮紝鑱岃矗鏄庣‘
3. 鉁?**澶嶇敤骞冲彴鑳藉姏**锛氬噺灏戦噸澶嶄唬鐮侊紝鎻愬崌浠g爜璐ㄩ噺
4. 鉁?**鏀<>寔鐙<E5AF94>珛閮ㄧ讲**锛氭瘡涓<E798A1>ā鍧楀彲鐙<E5BDB2>珛鎵撳寘銆侀儴缃层€侀攢鍞?
5. 鉁?**Schema闅旂<EFBFBD>**锛氭暟鎹<E69A9F>簱灞傞潰妯″潡鐙<E6BDA1>珛锛岄檷浣庤€﹀悎
### 棰勮<E6A3B0>鎬昏€楁椂
- **PKB模块迁移**6-8小时
- **RVW模块迁移**7-9小时含数据迁移
- **总计**13-17小时约2个工作日
- **PKB妯″潡杩佺Щ**锛?-8灏忔椂
- **RVW妯″潡杩佺Щ**锛?-9灏忔椂锛堝惈鏁版嵁杩佺Щ锛?
- **鎬昏<EFBFBD>**锛?3-17灏忔椂锛堢害2涓<32>伐浣滄棩锛?
### 椋庨櫓璇勪及
- **风险低**功能已100%完成,代码质量高
- **测试覆盖**:有完整的手动测试流程
- **向后兼容**保留旧API路径不影响现有前端
- 鉁?**椋庨櫓浣?*锛氬姛鑳藉凡100%瀹屾垚锛屼唬鐮佽川閲忛珮
- 鉁?**娴嬭瘯瑕嗙洊**锛氭湁瀹屾暣鐨勬墜鍔ㄦ祴璇曟祦绋?
- 鉁?**鍚戝悗鍏煎<E98D8F>**锛氫繚鐣欐棫API璺<49>緞锛屼笉褰卞搷鐜版湁鍓嶇<E98D93>
---
**文档维护者:** 技术团队
**鏂囨。缁存姢鑰咃細** 鎶€鏈<E282AC>洟闃?
**鏈€鍚庢洿鏂帮細** 2025-12-28
**涓嬩竴姝ワ細** 鎵ц<E98EB5>杩佺Щ浠诲姟锛屾寜TODO娓呭崟閫愰」瀹屾垚
@@ -939,5 +939,6 @@ CREATE INDEX idx_rvw_tasks_created_at ON rvw_schema.review_tasks(created_at);