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:
@@ -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数、段落数统计
|
||||
- ✅ **全文阅读模式**(Phase2):Token限制、智能文档选择
|
||||
**鏍稿績鑳藉姏锛?*
|
||||
- 鉁?**鐭ヨ瘑搴揅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>淇℃伅**锛氭枃妗f暟銆乀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>浠g爜缁撴瀯
|
||||
|
||||
**主页面(`frontend/src/pages/KnowledgePage.tsx`):** 281行
|
||||
- 知识库列表视图
|
||||
- 知识库详情视图(Tabs:文档管理 + 统计信息)
|
||||
**涓婚〉闈<EFBFBD>紙`frontend/src/pages/KnowledgePage.tsx`锛夛細** 281琛?
|
||||
- 鐭ヨ瘑搴撳垪琛ㄨ<EFBFBD>鍥?
|
||||
- 鐭ヨ瘑搴撹<EFBFBD>鎯呰<EFBFBD>鍥撅紙Tabs锛氭枃妗g<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>浠g爜缁撴瀯
|
||||
|
||||
**服务层(`backend/src/legacy/services/reviewService.ts`):** 453行
|
||||
**鏈嶅姟灞傦紙`backend/src/legacy/services/reviewService.ts`锛夛細** 453琛?
|
||||
```typescript
|
||||
reviewManuscript() // 主入口(异步执行)
|
||||
reviewManuscript() // 涓诲叆鍙o紙寮傛<EFBFBD>鎵ц<EFBFBD>锛?
|
||||
processReviewTask() // 鍚庡彴澶勭悊浠诲姟
|
||||
reviewEditorialStandards() // 稿约规范性评估
|
||||
reviewMethodology() // 方法学评估
|
||||
reviewEditorialStandards() // 绋跨害瑙勮寖鎬ц瘎浼?
|
||||
reviewMethodology() // 鏂规硶瀛﹁瘎浼?
|
||||
parseJSONFromLLMResponse() // 瀹归敊JSON瑙f瀽
|
||||
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>浠g爜缁撴瀯
|
||||
|
||||
**主页面(`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銆佹枃妗e<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>浠g爜鍦╜backend/src/modules/pkb/`
|
||||
2. 鉁?鍓嶇<E98D93>浠g爜鍦╜frontend-v2/src/modules/pkb/`
|
||||
3. 鉁?API璺<49>緞涓篳/api/v1/pkb/*`
|
||||
4. 鉁?鎵€鏈夊姛鑳芥祴璇曢€氳繃锛堢煡璇嗗簱CRUD銆佹枃妗d笂浼犮€佹<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>浠g爜鍦╜backend/src/modules/rvw/`
|
||||
2. 鉁?鍓嶇<E98D93>浠g爜鍦╜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);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user