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,56 +1,56 @@
|
||||
# Day 4开发记录:数据库设计与批处理服务开发
|
||||
# Day 4寮€鍙戣<EFBFBD>褰曪細鏁版嵁搴撹<EFBFBD>璁′笌鎵瑰<EFBFBD>鐞嗘湇鍔″紑鍙?
|
||||
|
||||
> **日期**:2025-11-23
|
||||
> **开发者**:ASL开发团队
|
||||
> **鏃ユ湡**锛?025-11-23
|
||||
> **寮€鍙戣€?*锛欰SL寮€鍙戝洟闃?
|
||||
> **闃舵<E99783>**锛氬叏鏂囧<E98F82>绛汳VP - Day 4
|
||||
> **状态**:✅ 已完成
|
||||
> **鐘舵€?*锛氣渽 宸插畬鎴?
|
||||
|
||||
---
|
||||
|
||||
## 📋 开发目标
|
||||
## 馃搵 寮€鍙戠洰鏍?
|
||||
|
||||
**Day 4上午**:完成数据库设计与迁移
|
||||
**Day 4下午**:开发批处理服务(FulltextScreeningService)
|
||||
**Day 4涓婂崍**锛氬畬鎴愭暟鎹<E69A9F>簱璁捐<E79281>涓庤縼绉?
|
||||
**Day 4涓嬪崍**锛氬紑鍙戞壒澶勭悊鏈嶅姟锛團ulltextScreeningService锛?
|
||||
|
||||
---
|
||||
|
||||
## ✅ Day 4上午:数据库设计与迁移
|
||||
## 鉁?Day 4涓婂崍锛氭暟鎹<EFBFBD>簱璁捐<EFBFBD>涓庤縼绉?
|
||||
|
||||
### 1. Schema璁捐<E79281>
|
||||
|
||||
#### 1.1 修改 AslLiterature 表
|
||||
#### 1.1 淇<EFBFBD>敼 AslLiterature 琛?
|
||||
|
||||
鏂板<EFBFBD>13涓<EFBFBD>叏鏂囧<EFBFBD>绛涚浉鍏冲瓧娈碉細
|
||||
|
||||
**文献生命周期**:
|
||||
- `stage` - 阶段标记(imported/title_screened/fulltext_pending/fulltext_screened)
|
||||
**鏂囩尞鐢熷懡鍛ㄦ湡**锛?
|
||||
- `stage` - 闃舵<EFBFBD>鏍囪<EFBFBD>锛坕mported/title_screened/fulltext_pending/fulltext_screened锛?
|
||||
|
||||
**PDF管理**:
|
||||
**PDF绠$悊**锛?
|
||||
- `has_pdf` - 鏄<>惁鏈塒DF
|
||||
- `pdf_storage_type` - 存储类型(oss/dify/local)
|
||||
- `pdf_storage_type` - 瀛樺偍绫诲瀷锛坥ss/dify/local锛?
|
||||
- `pdf_storage_ref` - 瀛樺偍寮曠敤
|
||||
- `pdf_status` - 状态(pending/extracting/completed/failed)
|
||||
- `pdf_status` - 鐘舵€侊紙pending/extracting/completed/failed锛?
|
||||
- `pdf_uploaded_at` - 涓婁紶鏃堕棿
|
||||
|
||||
**全文管理(云原生)**:
|
||||
- `full_text_storage_type` - 存储类型(oss/dify)
|
||||
**鍏ㄦ枃绠$悊锛堜簯鍘熺敓锛?*锛?
|
||||
- `full_text_storage_type` - 瀛樺偍绫诲瀷锛坥ss/dify锛?
|
||||
- `full_text_storage_ref` - 瀛樺偍寮曠敤
|
||||
- `full_text_url` - 璁块棶URL
|
||||
|
||||
**全文元数据**:
|
||||
- `full_text_format` - 格式(markdown/plaintext)
|
||||
- `full_text_source` - 提取方式(nougat/pymupdf)
|
||||
**鍏ㄦ枃鍏冩暟鎹?*锛?
|
||||
- `full_text_format` - 鏍煎紡锛坢arkdown/plaintext锛?
|
||||
- `full_text_source` - 鎻愬彇鏂瑰紡锛坣ougat/pymupdf锛?
|
||||
- `full_text_token_count` - Token鏁伴噺
|
||||
- `full_text_extracted_at` - 鎻愬彇鏃堕棿
|
||||
|
||||
**设计亮点**:
|
||||
- ✅ **云原生架构**:全文存储在OSS/Dify,数据库只存引用
|
||||
- ✅ **符合规范**:遵循《云原生开发规范》,不在数据库存储大文本
|
||||
- ✅ **可扩展性**:支持多种存储方式的适配器模式
|
||||
**璁捐<EFBFBD>浜<EFBFBD>偣**锛?
|
||||
- 鉁?**浜戝師鐢熸灦鏋?*锛氬叏鏂囧瓨鍌ㄥ湪OSS/Dify锛屾暟鎹<E69A9F>簱鍙<E7B0B1>瓨寮曠敤
|
||||
- 鉁?**绗﹀悎瑙勮寖**锛氶伒寰<E4BC92>€婁簯鍘熺敓寮€鍙戣<E98D99>鑼冦€嬶紝涓嶅湪鏁版嵁搴撳瓨鍌ㄥぇ鏂囨湰
|
||||
- 鉁?**鍙<>墿灞曟€?*锛氭敮鎸佸<E98EB8>绉嶅瓨鍌ㄦ柟寮忕殑閫傞厤鍣ㄦā寮?
|
||||
|
||||
#### 1.2 新建 AslFulltextScreeningTask 表
|
||||
#### 1.2 鏂板缓 AslFulltextScreeningTask 琛?
|
||||
|
||||
任务管理表,字段包括:
|
||||
浠诲姟绠$悊琛<EFBFBD>紝瀛楁<EFBFBD>鍖呮嫭锛?
|
||||
- 鍩虹<E98DA9>淇℃伅锛歚id`, `project_id`
|
||||
- 妯″瀷閰嶇疆锛歚model_a`, `model_b`, `prompt_version`
|
||||
- 杩涘害璺熻釜锛歚total_count`, `processed_count`, `success_count`, `failed_count`, `degraded_count`
|
||||
@@ -58,34 +58,34 @@
|
||||
- 鐘舵€佺<E282AC>鐞嗭細`status`, `started_at`, `completed_at`, `estimated_end_at`
|
||||
- 閿欒<E996BF>璁板綍锛歚error_message`, `error_stack`
|
||||
|
||||
**设计亮点**:
|
||||
- ✅ **实时进度**:支持前端轮询任务进度
|
||||
- ✅ **成本跟踪**:累计Token和费用
|
||||
- ✅ **预估时间**:动态计算剩余时间
|
||||
**璁捐<EFBFBD>浜<EFBFBD>偣**锛?
|
||||
- 鉁?**瀹炴椂杩涘害**锛氭敮鎸佸墠绔<E5A2A0>疆璇<E79686>换鍔¤繘搴?
|
||||
- 鉁?**鎴愭湰璺熻釜**锛氱疮璁<E796AE>oken鍜岃垂鐢?
|
||||
- 鉁?**棰勪及鏃堕棿**锛氬姩鎬佽<E98EAC>绠楀墿浣欐椂闂?
|
||||
|
||||
#### 1.3 新建 AslFulltextScreeningResult 表
|
||||
#### 1.3 鏂板缓 AslFulltextScreeningResult 琛?
|
||||
|
||||
结果存储表(12字段模板),字段包括:
|
||||
- **双模型结果**:Model A (DeepSeek-V3) 和 Model B (Qwen-Max) 的完整输出
|
||||
缁撴灉瀛樺偍琛<EFBFBD>紙12瀛楁<EFBFBD>妯℃澘锛夛紝瀛楁<EFBFBD>鍖呮嫭锛?
|
||||
- **鍙屾ā鍨嬬粨鏋?*锛歁odel A (DeepSeek-V3) 鍜?Model B (Qwen-Max) 鐨勫畬鏁磋緭鍑?
|
||||
- **楠岃瘉缁撴灉**锛氬尰瀛﹂€昏緫楠岃瘉銆佽瘉鎹<E79889>摼楠岃瘉
|
||||
- **冲突检测**:字段级冲突对比、优先级排序
|
||||
- **人工复核**:最终决策、排除原因、复核笔记
|
||||
- **可追溯性**:原始输出、Prompt版本、处理时间
|
||||
- **鍐茬獊妫€娴?*锛氬瓧娈电骇鍐茬獊瀵规瘮銆佷紭鍏堢骇鎺掑簭
|
||||
- **浜哄伐澶嶆牳**锛氭渶缁堝喅绛栥€佹帓闄ゅ師鍥犮€佸<E282AC>鏍哥瑪璁?
|
||||
- **鍙<EFBFBD>拷婧<EFBFBD>€?*锛氬師濮嬭緭鍑恒€丳rompt鐗堟湰銆佸<E98A86>鐞嗘椂闂?
|
||||
|
||||
**设计亮点**:
|
||||
- ✅ **JSONB存储**:12字段灵活存储,支持高效查询
|
||||
- ✅ **双模型对比**:完整保存两个模型的输出
|
||||
- ✅ **冲突优先级**:自动计算review_priority(0-100)
|
||||
- ✅ **可审计**:保留raw_output,可追溯LLM原始响应
|
||||
**璁捐<EFBFBD>浜<EFBFBD>偣**锛?
|
||||
- 鉁?**JSONB瀛樺偍**锛?2瀛楁<E7809B>鐏垫椿瀛樺偍锛屾敮鎸侀珮鏁堟煡璇?
|
||||
- 鉁?**鍙屾ā鍨嬪<E98DA8>姣?*锛氬畬鏁翠繚瀛樹袱涓<E8A2B1>ā鍨嬬殑杈撳嚭
|
||||
- 鉁?**鍐茬獊浼樺厛绾?*锛氳嚜鍔ㄨ<E98D94>绠梤eview_priority锛?-100锛?
|
||||
- 鉁?**鍙<><E98D99>璁?*锛氫繚鐣檙aw_output锛屽彲杩芥函LLM鍘熷<E98D98>鍝嶅簲
|
||||
|
||||
### 2. 杩佺Щ绛栫暐
|
||||
|
||||
#### 2.1 闂<><E99782>璇嗗埆
|
||||
|
||||
在迁移过程中发现:
|
||||
鍦ㄨ縼绉昏繃绋嬩腑鍙戠幇锛?
|
||||
- 鈿狅笍 鍘嗗彶閬楃暀闂<E69A80><E99782>锛氶儴鍒嗘ā鍧楃殑琛ㄥ垱寤哄湪 `public` schema
|
||||
- ✅ ASL模块数据完全正确:所有表都在 `asl_schema`
|
||||
- ⚠️ Prisma Migrate会尝试删除 `public` 中的重复表
|
||||
- 鉁?ASL妯″潡鏁版嵁瀹屽叏姝g‘锛氭墍鏈夎〃閮藉湪 `asl_schema`
|
||||
- 鈿狅笍 Prisma Migrate浼氬皾璇曞垹闄?`public` 涓<EFBFBD>殑閲嶅<EFBFBD>琛?
|
||||
|
||||
#### 2.2 瑙e喅鏂规<E98F82>锛氭墜鍔⊿QL杩佺Щ
|
||||
|
||||
@@ -98,46 +98,46 @@ CREATE TABLE IF NOT EXISTS asl_schema.fulltext_screening_tasks (...);
|
||||
CREATE TABLE IF NOT EXISTS asl_schema.fulltext_screening_results (...);
|
||||
```
|
||||
|
||||
**执行**:
|
||||
**鎵ц<EFBFBD>**锛?
|
||||
```bash
|
||||
Get-Content manual_fulltext_screening.sql | docker exec -i ai-clinical-postgres psql ...
|
||||
```
|
||||
|
||||
**验证**:
|
||||
**楠岃瘉**锛?
|
||||
```sql
|
||||
\dt asl_schema.*
|
||||
-- 结果:6个表
|
||||
-- ✅ literatures (已更新)
|
||||
-- ✅ screening_projects
|
||||
-- ✅ screening_tasks
|
||||
-- ✅ screening_results
|
||||
-- ✅ fulltext_screening_tasks (新建)
|
||||
-- ✅ fulltext_screening_results (新建)
|
||||
-- 缁撴灉锛?涓<>〃
|
||||
-- 鉁?literatures (宸叉洿鏂?
|
||||
-- 鉁?screening_projects
|
||||
-- 鉁?screening_tasks
|
||||
-- 鉁?screening_results
|
||||
-- 鉁?fulltext_screening_tasks (鏂板缓)
|
||||
-- 鉁?fulltext_screening_results (鏂板缓)
|
||||
```
|
||||
|
||||
#### 2.3 Schema闅旂<E99785>楠岃瘉
|
||||
|
||||
**检查结果**:
|
||||
- ✅ ASL模块所有6个表都在 `asl_schema`
|
||||
- ✅ 无数据泄漏到 `public` schema
|
||||
- ✅ 外键约束全部指向 `asl_schema` 内部
|
||||
- ✅ Prisma Model正确映射(`@@schema("asl_schema")`)
|
||||
**妫€鏌ョ粨鏋?*锛?
|
||||
- 鉁?ASL妯″潡鎵€鏈?涓<>〃閮藉湪 `asl_schema`
|
||||
- 鉁?鏃犳暟鎹<E69A9F>硠婕忓埌 `public` schema
|
||||
- 鉁?澶栭敭绾︽潫鍏ㄩ儴鎸囧悜 `asl_schema` 鍐呴儴
|
||||
- 鉁?Prisma Model姝g‘鏄犲皠锛坄@@schema("asl_schema")`锛?
|
||||
|
||||
**相关文档**:
|
||||
- [数据库迁移状态说明](./2025-11-23_数据库迁移状态说明.md)
|
||||
- [数据库设计文档](../02-技术设计/01-数据库设计.md)
|
||||
**鐩稿叧鏂囨。**锛?
|
||||
- [鏁版嵁搴撹縼绉荤姸鎬佽<EFBFBD>鏄嶿(./2025-11-23_鏁版嵁搴撹縼绉荤姸鎬佽<E98EAC>鏄?md)
|
||||
- [鏁版嵁搴撹<EFBFBD>璁℃枃妗<EFBFBD>(../02-鎶€鏈<E282AC><E98F88>璁?01-鏁版嵁搴撹<E690B4>璁?md)
|
||||
|
||||
### 3. 浜у嚭
|
||||
|
||||
- ✅ Prisma Schema更新(3个模型)
|
||||
- ✅ 手动SQL迁移脚本(141行)
|
||||
- ✅ 数据库迁移状态说明文档(435行)
|
||||
- ✅ 数据库设计文档更新(v3.0)
|
||||
- ✅ 模块状态文档更新(v1.2)
|
||||
- 鉁?Prisma Schema鏇存柊锛?涓<>ā鍨嬶級
|
||||
- 鉁?鎵嬪姩SQL杩佺Щ鑴氭湰锛?41琛岋級
|
||||
- 鉁?鏁版嵁搴撹縼绉荤姸鎬佽<E98EAC>鏄庢枃妗o紙435琛岋級
|
||||
- 鉁?鏁版嵁搴撹<E690B4>璁℃枃妗f洿鏂帮紙v3.0锛?
|
||||
- 鉁?妯″潡鐘舵€佹枃妗f洿鏂帮紙v1.2锛?
|
||||
|
||||
---
|
||||
|
||||
## ✅ Day 4下午:批处理服务开发
|
||||
## 鉁?Day 4涓嬪崍锛氭壒澶勭悊鏈嶅姟寮€鍙?
|
||||
|
||||
### 1. 鏍稿績鏈嶅姟锛欶ulltextScreeningService
|
||||
|
||||
@@ -145,11 +145,11 @@ Get-Content manual_fulltext_screening.sql | docker exec -i ai-clinical-postgres
|
||||
|
||||
| 鑱岃矗 | 璇存槑 |
|
||||
|------|------|
|
||||
| **任务调度** | 批量处理文献,并发控制 |
|
||||
| **服务集成** | 调用LLM服务、验证器、冲突检测 |
|
||||
| **进度跟踪** | 实时更新任务进度,计算预估时间 |
|
||||
| **容错处理** | 重试机制、降级模式、错误记录 |
|
||||
| **数据持久化** | 保存处理结果到数据库 |
|
||||
| **浠诲姟璋冨害** | 鎵归噺澶勭悊鏂囩尞锛屽苟鍙戞帶鍒?|
|
||||
| **鏈嶅姟闆嗘垚** | 璋冪敤LLM鏈嶅姟銆侀獙璇佸櫒銆佸啿绐佹<EFBFBD>娴?|
|
||||
| **杩涘害璺熻釜** | 瀹炴椂鏇存柊浠诲姟杩涘害锛岃<EFBFBD>绠楅<EFBFBD>浼版椂闂?|
|
||||
| **瀹归敊澶勭悊** | 閲嶈瘯鏈哄埗銆侀檷绾фā寮忋€侀敊璇<EFBFBD><EFBFBD>褰?|
|
||||
| **鏁版嵁鎸佷箙鍖?* | 淇濆瓨澶勭悊缁撴灉鍒版暟鎹<E69A9F>簱 |
|
||||
|
||||
#### 1.2 鏍稿績鏂规硶
|
||||
|
||||
@@ -163,10 +163,10 @@ async createAndProcessTask(
|
||||
): Promise<string>
|
||||
```
|
||||
|
||||
功能:
|
||||
- 验证项目和文献数据
|
||||
鍔熻兘锛?
|
||||
- 楠岃瘉椤圭洰鍜屾枃鐚<EFBFBD>暟鎹?
|
||||
- 鍒涘缓浠诲姟璁板綍
|
||||
- 启动后台处理(不等待完成)
|
||||
- 鍚<EFBFBD>姩鍚庡彴澶勭悊锛堜笉绛夊緟瀹屾垚锛?
|
||||
- 杩斿洖浠诲姟ID
|
||||
|
||||
**2. processTaskInBackground() - 鍚庡彴鎵瑰<E98EB5>鐞嗛€昏緫**
|
||||
@@ -180,15 +180,15 @@ private async processTaskInBackground(
|
||||
): Promise<void>
|
||||
```
|
||||
|
||||
功能:
|
||||
- 更新任务状态为"运行中"
|
||||
- 构建PICOS上下文
|
||||
- 使用 `p-queue` 实现并发控制(默认并发3)
|
||||
鍔熻兘锛?
|
||||
- 鏇存柊浠诲姟鐘舵€佷负"杩愯<E69DA9>涓?
|
||||
- 鏋勫缓PICOS涓婁笅鏂?
|
||||
- 浣跨敤 `p-queue` 瀹炵幇骞跺彂鎺у埗锛堥粯璁ゅ苟鍙?锛?
|
||||
- 璋冪敤 `screenLiteratureWithRetry()` 澶勭悊姣忕瘒鏂囩尞
|
||||
- 累计统计(success/failed/degraded/tokens/cost)
|
||||
- 绱<EFBFBD><EFBFBD>缁熻<EFBFBD>锛坰uccess/failed/degraded/tokens/cost锛?
|
||||
- 鏍囪<E98F8D>浠诲姟瀹屾垚
|
||||
|
||||
**3. screenLiteratureWithRetry() - 单篇处理(带重试)**
|
||||
**3. screenLiteratureWithRetry() - 鍗曠瘒澶勭悊锛堝甫閲嶈瘯锛?*
|
||||
|
||||
```typescript
|
||||
private async screenLiteratureWithRetry(
|
||||
@@ -200,10 +200,10 @@ private async screenLiteratureWithRetry(
|
||||
): Promise<SingleLiteratureResult>
|
||||
```
|
||||
|
||||
功能:
|
||||
- 最多重试2次(可配置)
|
||||
- 指数退避策略(1s, 2s)
|
||||
- 捕获并记录错误
|
||||
鍔熻兘锛?
|
||||
- 鏈€澶氶噸璇?娆★紙鍙<E7B499>厤缃<E58EA4>級
|
||||
- 鎸囨暟閫€閬跨瓥鐣ワ紙1s, 2s锛?
|
||||
- 鎹曡幏骞惰<EFBFBD>褰曢敊璇?
|
||||
|
||||
**4. screenLiterature() - 鍗曠瘒澶勭悊鏍稿績閫昏緫**
|
||||
|
||||
@@ -217,14 +217,14 @@ private async screenLiterature(
|
||||
): Promise<SingleLiteratureResult>
|
||||
```
|
||||
|
||||
功能:
|
||||
1. 获取全文内容(支持测试模式:跳过PDF提取)
|
||||
2. 调用 `LLM12FieldsService.processDualModels()`(双模型并行)
|
||||
3. 医学逻辑验证(`MedicalLogicValidator`)
|
||||
4. 证据链验证(`EvidenceChainValidator`)
|
||||
5. 冲突检测(`ConflictDetectionService`)
|
||||
鍔熻兘锛?
|
||||
1. 鑾峰彇鍏ㄦ枃鍐呭<EFBFBD>锛堟敮鎸佹祴璇曟ā寮忥細璺宠繃PDF鎻愬彇锛?
|
||||
2. 璋冪敤 `LLM12FieldsService.processDualModels()`锛堝弻妯″瀷骞惰<EFBFBD>锛?
|
||||
3. 鍖诲<EFBFBD>閫昏緫楠岃瘉锛坄MedicalLogicValidator`锛?
|
||||
4. 璇佹嵁閾鹃獙璇侊紙`EvidenceChainValidator`锛?
|
||||
5. 鍐茬獊妫€娴嬶紙`ConflictDetectionService`锛?
|
||||
6. 淇濆瓨缁撴灉鍒版暟鎹<E69A9F>簱锛坄fulltext_screening_results`琛<>級
|
||||
7. 返回处理结果(tokens、cost、isDegraded)
|
||||
7. 杩斿洖澶勭悊缁撴灉锛坱okens銆乧ost銆乮sDegraded锛?
|
||||
|
||||
**5. updateTaskProgress() - 杩涘害鏇存柊**
|
||||
|
||||
@@ -235,10 +235,10 @@ private async updateTaskProgress(
|
||||
): Promise<void>
|
||||
```
|
||||
|
||||
功能:
|
||||
鍔熻兘锛?
|
||||
- 璁$畻骞冲潎澶勭悊鏃堕棿
|
||||
- 预估剩余时间(estimatedEndAt)
|
||||
- 更新数据库(processed/success/failed/degraded/tokens/cost)
|
||||
- 棰勪及鍓╀綑鏃堕棿锛坋stimatedEndAt锛?
|
||||
- 鏇存柊鏁版嵁搴擄紙processed/success/failed/degraded/tokens/cost锛?
|
||||
|
||||
**6. completeTask() - 浠诲姟瀹屾垚**
|
||||
|
||||
@@ -249,9 +249,9 @@ private async completeTask(
|
||||
): Promise<void>
|
||||
```
|
||||
|
||||
功能:
|
||||
- 标记任务状态(completed/failed)
|
||||
- 更新最终统计
|
||||
鍔熻兘锛?
|
||||
- 鏍囪<EFBFBD>浠诲姟鐘舵€侊紙completed/failed锛?
|
||||
- 鏇存柊鏈€缁堢粺璁?
|
||||
- 璁板綍瀹屾垚鏃堕棿
|
||||
|
||||
#### 1.3 鏌ヨ<E98F8C>鎺ュ彛
|
||||
@@ -262,11 +262,11 @@ private async completeTask(
|
||||
async getTaskProgress(taskId: string): Promise<ScreeningProgress | null>
|
||||
```
|
||||
|
||||
返回:
|
||||
- 任务状态(pending/running/completed/failed)
|
||||
- 进度统计(processed/success/failed/degraded)
|
||||
- 成本统计(totalTokens/totalCost)
|
||||
- 时间信息(started/completed/estimatedEnd)
|
||||
杩斿洖锛?
|
||||
- 浠诲姟鐘舵€侊紙pending/running/completed/failed锛?
|
||||
- 杩涘害缁熻<EFBFBD>锛坧rocessed/success/failed/degraded锛?
|
||||
- 鎴愭湰缁熻<EFBFBD>锛坱otalTokens/totalCost锛?
|
||||
- 鏃堕棿淇℃伅锛坰tarted/completed/estimatedEnd锛?
|
||||
|
||||
**getTaskResults() - 鏌ヨ<E98F8C>浠诲姟缁撴灉**
|
||||
|
||||
@@ -277,10 +277,10 @@ async getTaskResults(
|
||||
): Promise<{ results, total }>
|
||||
```
|
||||
|
||||
功能:
|
||||
鍔熻兘锛?
|
||||
- 鏀<>寔杩囨护锛堜粎鍐茬獊椤癸級
|
||||
- 鍒嗛〉鏌ヨ<E98F8C>
|
||||
- 按优先级排序(冲突优先、review_priority降序)
|
||||
- 鎸変紭鍏堢骇鎺掑簭锛堝啿绐佷紭鍏堛€乺eview_priority闄嶅簭锛?
|
||||
|
||||
**updateReviewDecision() - 鏇存柊浜哄伐澶嶆牳鍐崇瓥**
|
||||
|
||||
@@ -291,12 +291,12 @@ async updateReviewDecision(
|
||||
): Promise<void>
|
||||
```
|
||||
|
||||
功能:
|
||||
- 更新最终决策(include/exclude)
|
||||
鍔熻兘锛?
|
||||
- 鏇存柊鏈€缁堝喅绛栵紙include/exclude锛?
|
||||
- 璁板綍澶嶆牳浜哄拰鏃堕棿
|
||||
- 记录排除原因和笔记
|
||||
- 璁板綍鎺掗櫎鍘熷洜鍜岀瑪璁?
|
||||
|
||||
### 2. 技术亮点
|
||||
### 2. 鎶€鏈<EFBFBD>寒鐐?
|
||||
|
||||
#### 2.1 骞跺彂鎺у埗
|
||||
|
||||
@@ -314,26 +314,26 @@ const tasks = literatures.map((literature, index) =>
|
||||
await Promise.all(tasks);
|
||||
```
|
||||
|
||||
**优势**:
|
||||
- ✅ 自动排队,避免同时发起过多LLM请求
|
||||
- ✅ 控制API调用频率,防止触发限流
|
||||
- ✅ 充分利用并发,提速3倍(串行→3并发)
|
||||
**浼樺娍**锛?
|
||||
- 鉁?鑷<>姩鎺掗槦锛岄伩鍏嶅悓鏃跺彂璧疯繃澶歀LM璇锋眰
|
||||
- 鉁?鎺у埗API璋冪敤棰戠巼锛岄槻姝㈣Е鍙戦檺娴?
|
||||
- 鉁?鍏呭垎鍒╃敤骞跺彂锛屾彁閫?鍊嶏紙涓茶<E6B693>鈫?骞跺彂锛?
|
||||
|
||||
#### 2.2 瀹归敊鏈哄埗
|
||||
|
||||
**3层容错**:
|
||||
1. **Retry层**:单篇文献失败自动重试(最多2次)
|
||||
2. **Degraded层**:LLM12FieldsService支持降级模式(单模型成功即可)
|
||||
3. **Continue层**:单篇失败不影响整体,继续处理其他文献
|
||||
**3灞傚<EFBFBD>閿?*锛?
|
||||
1. **Retry灞?*锛氬崟绡囨枃鐚<E69E83>け璐ヨ嚜鍔ㄩ噸璇曪紙鏈€澶?娆★級
|
||||
2. **Degraded灞?*锛歀LM12FieldsService鏀<EFBFBD>寔闄嶇骇妯″紡锛堝崟妯″瀷鎴愬姛鍗冲彲锛?
|
||||
3. **Continue灞?*锛氬崟绡囧け璐ヤ笉褰卞搷鏁翠綋锛岀户缁<E688B7><E7BC81>鐞嗗叾浠栨枃鐚?
|
||||
|
||||
**效果**:
|
||||
- ✅ 降低失败率
|
||||
- ✅ 提高任务完成率
|
||||
- ✅ 完整记录失败原因
|
||||
**鏁堟灉**锛?
|
||||
- 鉁?闄嶄綆澶辫触鐜?
|
||||
- 鉁?鎻愰珮浠诲姟瀹屾垚鐜?
|
||||
- 鉁?瀹屾暣璁板綍澶辫触鍘熷洜
|
||||
|
||||
#### 2.3 娴嬭瘯妯″紡
|
||||
|
||||
支持 `skipExtraction: true` 测试模式:
|
||||
鏀<EFBFBD>寔 `skipExtraction: true` 娴嬭瘯妯″紡锛?
|
||||
|
||||
```typescript
|
||||
if (config.skipExtraction) {
|
||||
@@ -344,10 +344,10 @@ if (config.skipExtraction) {
|
||||
}
|
||||
```
|
||||
|
||||
**优势**:
|
||||
- ✅ 快速验证服务逻辑
|
||||
- ✅ 无需真实PDF文件
|
||||
- ✅ 节省测试成本
|
||||
**浼樺娍**锛?
|
||||
- 鉁?蹇<>€熼獙璇佹湇鍔¢€昏緫
|
||||
- 鉁?鏃犻渶鐪熷疄PDF鏂囦欢
|
||||
- 鉁?鑺傜渷娴嬭瘯鎴愭湰
|
||||
|
||||
#### 2.4 瀹炴椂杩涘害璺熻釜
|
||||
|
||||
@@ -359,26 +359,26 @@ const remainingItems = totalCount - processedCount;
|
||||
const estimatedRemainingTime = avgTimePerItem * remainingItems;
|
||||
```
|
||||
|
||||
**用户体验**:
|
||||
- ✅ 前端可轮询显示进度
|
||||
- ✅ 显示预估完成时间
|
||||
- ✅ 实时显示成本统计
|
||||
**鐢ㄦ埛浣撻獙**锛?
|
||||
- 鉁?鍓嶇<E98D93>鍙<EFBFBD>疆璇㈡樉绀鸿繘搴?
|
||||
- 鉁?鏄剧ず棰勪及瀹屾垚鏃堕棿
|
||||
- 鉁?瀹炴椂鏄剧ず鎴愭湰缁熻<E7BC81>
|
||||
|
||||
### 3. 闆嗘垚娴嬭瘯
|
||||
|
||||
创建了完整的集成测试脚本:
|
||||
鍒涘缓浜嗗畬鏁寸殑闆嗘垚娴嬭瘯鑴氭湰锛?
|
||||
|
||||
**测试场景**:
|
||||
1. ✅ 准备测试数据(查找项目和文献)
|
||||
2. ✅ 创建并处理任务(测试模式,3篇文献,2并发)
|
||||
3. ✅ 轮询任务进度(每5秒)
|
||||
4. ✅ 查询任务结果(分页,排序)
|
||||
5. ✅ 更新人工复核决策
|
||||
**娴嬭瘯鍦烘櫙**锛?
|
||||
1. 鉁?鍑嗗<E98D91>娴嬭瘯鏁版嵁锛堟煡鎵鹃」鐩<E3808D>拰鏂囩尞锛?
|
||||
2. 鉁?鍒涘缓骞跺<E9AA9E>鐞嗕换鍔★紙娴嬭瘯妯″紡锛?绡囨枃鐚<E69E83>紝2骞跺彂锛?
|
||||
3. 鉁?杞<><E69D9E>浠诲姟杩涘害锛堟瘡5绉掞級
|
||||
4. 鉁?鏌ヨ<E98F8C>浠诲姟缁撴灉锛堝垎椤碉紝鎺掑簭锛?
|
||||
5. 鉁?鏇存柊浜哄伐澶嶆牳鍐崇瓥
|
||||
|
||||
**测试文件**:
|
||||
- `service-integration-test.ts` (约200行)
|
||||
**娴嬭瘯鏂囦欢**锛?
|
||||
- `service-integration-test.ts` (绾?00琛?
|
||||
|
||||
**运行方式**:
|
||||
**杩愯<EFBFBD>鏂瑰紡**锛?
|
||||
```bash
|
||||
cd backend
|
||||
npx ts-node src/modules/asl/fulltext-screening/services/__tests__/service-integration-test.ts
|
||||
@@ -386,19 +386,19 @@ npx ts-node src/modules/asl/fulltext-screening/services/__tests__/service-integr
|
||||
|
||||
### 4. 浜у嚭
|
||||
|
||||
**代码**:
|
||||
- ✅ `FulltextScreeningService.ts` (约700行)
|
||||
- ✅ 集成测试脚本 (约200行)
|
||||
- ✅ TypeScript类型定义完整
|
||||
- ✅ 代码注释详细
|
||||
**浠g爜**锛?
|
||||
- 鉁?`FulltextScreeningService.ts` (绾?00琛?
|
||||
- 鉁?闆嗘垚娴嬭瘯鑴氭湰 (绾?00琛?
|
||||
- 鉁?TypeScript绫诲瀷瀹氫箟瀹屾暣
|
||||
- 鉁?浠g爜娉ㄩ噴璇︾粏
|
||||
|
||||
**依赖**:
|
||||
- ✅ 安装 `p-queue` 库
|
||||
**渚濊禆**锛?
|
||||
- 鉁?瀹夎<E780B9> `p-queue` 搴?
|
||||
|
||||
**质量**:
|
||||
- ✅ 无Linter错误
|
||||
- ✅ 完整的错误处理
|
||||
- ✅ 详细的日志记录
|
||||
**璐ㄩ噺**锛?
|
||||
- 鉁?鏃燣inter閿欒<EFBFBD>
|
||||
- 鉁?瀹屾暣鐨勯敊璇<E6958A><E79287>鐞?
|
||||
- 鉁?璇︾粏鐨勬棩蹇楄<E8B987>褰?
|
||||
|
||||
---
|
||||
|
||||
@@ -406,101 +406,101 @@ npx ts-node src/modules/asl/fulltext-screening/services/__tests__/service-integr
|
||||
|
||||
### 鏃堕棿鍒嗛厤
|
||||
|
||||
| 阶段 | 任务 | 耗时 | 状态 |
|
||||
| 闃舵<EFBFBD> | 浠诲姟 | 鑰楁椂 | 鐘舵€?|
|
||||
|------|------|------|------|
|
||||
| **上午** | 数据库设计 | 1h | ✅ |
|
||||
| | Schema设计(3个模型) | 30min | ✅ |
|
||||
| | 手动SQL迁移 | 20min | ✅ |
|
||||
| | Schema隔离验证 | 10min | ✅ |
|
||||
| | 文档编写(迁移状态说明) | 30min | ✅ |
|
||||
| | 文档更新(设计文档、状态文档) | 20min | ✅ |
|
||||
| **下午** | 批处理服务开发 | 2h | ✅ |
|
||||
| | 服务核心逻辑 | 1h | ✅ |
|
||||
| | 集成测试脚本 | 30min | ✅ |
|
||||
| | 代码审查与优化 | 30min | ✅ |
|
||||
| **合计** | | 3h | ✅ |
|
||||
| **涓婂崍** | 鏁版嵁搴撹<EFBFBD>璁?| 1h | 鉁?|
|
||||
| | Schema璁捐<EFBFBD>锛?涓<>ā鍨嬶級 | 30min | 鉁?|
|
||||
| | 鎵嬪姩SQL杩佺Щ | 20min | 鉁?|
|
||||
| | Schema闅旂<EFBFBD>楠岃瘉 | 10min | 鉁?|
|
||||
| | 鏂囨。缂栧啓锛堣縼绉荤姸鎬佽<EFBFBD>鏄庯級 | 30min | 鉁?|
|
||||
| | 鏂囨。鏇存柊锛堣<EFBFBD>璁℃枃妗c€佺姸鎬佹枃妗o級 | 20min | 鉁?|
|
||||
| **涓嬪崍** | 鎵瑰<EFBFBD>鐞嗘湇鍔″紑鍙?| 2h | 鉁?|
|
||||
| | 鏈嶅姟鏍稿績閫昏緫 | 1h | 鉁?|
|
||||
| | 闆嗘垚娴嬭瘯鑴氭湰 | 30min | 鉁?|
|
||||
| | 浠g爜瀹℃煡涓庝紭鍖?| 30min | 鉁?|
|
||||
| **鍚堣<EFBFBD>** | | 3h | 鉁?|
|
||||
|
||||
### 浠g爜浜у嚭
|
||||
|
||||
| 绫诲埆 | 鏂囦欢 | 琛屾暟 | 璇存槑 |
|
||||
|------|------|------|------|
|
||||
| **核心服务** | FulltextScreeningService.ts | ~700 | 批处理服务 |
|
||||
| **鏍稿績鏈嶅姟** | FulltextScreeningService.ts | ~700 | 鎵瑰<EFBFBD>鐞嗘湇鍔?|
|
||||
| **娴嬭瘯** | service-integration-test.ts | ~200 | 闆嗘垚娴嬭瘯 |
|
||||
| **数据库** | manual_fulltext_screening.sql | 141 | 迁移脚本 |
|
||||
| **文档** | 数据库迁移状态说明 | 435 | 详细记录 |
|
||||
| **文档** | Day 4开发记录 | ~800 | 本文档 |
|
||||
| **鏁版嵁搴?* | manual_fulltext_screening.sql | 141 | 杩佺Щ鑴氭湰 |
|
||||
| **鏂囨。** | 鏁版嵁搴撹縼绉荤姸鎬佽<EFBFBD>鏄?| 435 | 璇︾粏璁板綍 |
|
||||
| **鏂囨。** | Day 4寮€鍙戣<EFBFBD>褰?| ~800 | 鏈<EFBFBD>枃妗?|
|
||||
| **鍚堣<E98D9A>** | | ~2,276 | |
|
||||
|
||||
### 功能完成度
|
||||
### 鍔熻兘瀹屾垚搴?
|
||||
|
||||
| 功能模块 | 完成度 | 说明 |
|
||||
| 鍔熻兘妯″潡 | 瀹屾垚搴?| 璇存槑 |
|
||||
|---------|--------|------|
|
||||
| 数据库设计 | 100% ✅ | 3个表,13个新字段 |
|
||||
| 数据库迁移 | 100% ✅ | 手动SQL,安全执行 |
|
||||
| 任务创建与调度 | 100% ✅ | 支持并发控制 |
|
||||
| 单篇文献处理 | 100% ✅ | 集成所有验证器 |
|
||||
| 进度跟踪 | 100% ✅ | 实时更新,预估时间 |
|
||||
| 容错处理 | 100% ✅ | 重试、降级、继续 |
|
||||
| 查询接口 | 100% ✅ | 进度、结果、决策 |
|
||||
| 集成测试 | 100% ✅ | 端到端测试脚本 |
|
||||
| 鏁版嵁搴撹<EFBFBD>璁?| 100% 鉁?| 3涓<EFBFBD>〃锛?3涓<33>柊瀛楁<E7809B> |
|
||||
| 鏁版嵁搴撹縼绉?| 100% 鉁?| 鎵嬪姩SQL锛屽畨鍏ㄦ墽琛?|
|
||||
| 浠诲姟鍒涘缓涓庤皟搴?| 100% 鉁?| 鏀<>寔骞跺彂鎺у埗 |
|
||||
| 鍗曠瘒鏂囩尞澶勭悊 | 100% 鉁?| 闆嗘垚鎵€鏈夐獙璇佸櫒 |
|
||||
| 杩涘害璺熻釜 | 100% 鉁?| 瀹炴椂鏇存柊锛岄<E9949B>浼版椂闂?|
|
||||
| 瀹归敊澶勭悊 | 100% 鉁?| 閲嶈瘯銆侀檷绾с€佺户缁?|
|
||||
| 鏌ヨ<EFBFBD>鎺ュ彛 | 100% 鉁?| 杩涘害銆佺粨鏋溿€佸喅绛?|
|
||||
| 闆嗘垚娴嬭瘯 | 100% 鉁?| 绔<>埌绔<E59F8C>祴璇曡剼鏈?|
|
||||
|
||||
---
|
||||
|
||||
## 馃幆 鍏抽敭鍐崇瓥
|
||||
|
||||
### 1. 云原生存储方案 ✅
|
||||
### 1. 浜戝師鐢熷瓨鍌ㄦ柟妗?鉁?
|
||||
|
||||
**鍐崇瓥**锛氬叏鏂囧唴瀹瑰瓨鍌ㄥ湪OSS/Dify锛屾暟鎹<E69A9F>簱鍙<E7B0B1>瓨寮曠敤
|
||||
|
||||
**理由**:
|
||||
- 符合《云原生开发规范》
|
||||
**鐞嗙敱**锛?
|
||||
- 绗﹀悎銆婁簯鍘熺敓寮€鍙戣<EFBFBD>鑼冦€?
|
||||
- 閬垮厤鏁版嵁搴撹啫鑳€
|
||||
- 支持大规模扩展
|
||||
- 鏀<EFBFBD>寔澶ц<EFBFBD>妯℃墿灞?
|
||||
|
||||
**实现**:
|
||||
- `full_text_storage_type` - 存储类型(oss/dify)
|
||||
- `full_text_storage_ref` - 存储引用(key或ID)
|
||||
**瀹炵幇**锛?
|
||||
- `full_text_storage_type` - 瀛樺偍绫诲瀷锛坥ss/dify锛?
|
||||
- `full_text_storage_ref` - 瀛樺偍寮曠敤锛坘ey鎴朓D锛?
|
||||
- `full_text_url` - 璁块棶URL
|
||||
|
||||
### 2. 手动SQL迁移策略 ✅
|
||||
### 2. 鎵嬪姩SQL杩佺Щ绛栫暐 鉁?
|
||||
|
||||
**鍐崇瓥**锛氫笉浣跨敤 `prisma migrate`锛岃€屾槸鎵嬪姩缂栧啓SQL鑴氭湰
|
||||
|
||||
**理由**:
|
||||
- Prisma Migrate会尝试删除 `public` schema中的重复表
|
||||
- 可能影响其他模块(AIA、PKB、Platform)
|
||||
**鐞嗙敱**锛?
|
||||
- Prisma Migrate浼氬皾璇曞垹闄?`public` schema涓<EFBFBD>殑閲嶅<EFBFBD>琛?
|
||||
- 鍙<EFBFBD>兘褰卞搷鍏朵粬妯″潡锛圓IA銆丳KB銆丳latform锛?
|
||||
- 鎵嬪姩SQL鏇村畨鍏ㄣ€佸彲鎺с€佸彲瀹¤<E780B9>
|
||||
|
||||
**原则**:
|
||||
**鍘熷垯**锛?
|
||||
- "绠″ソ鑷<E382BD>繁"锛氬彧鎿嶄綔 `asl_schema`
|
||||
- 涓嶅姩 `public` schema锛屼笉褰卞搷鍏朵粬妯″潡
|
||||
|
||||
### 3. 测试模式设计 ✅
|
||||
### 3. 娴嬭瘯妯″紡璁捐<EFBFBD> 鉁?
|
||||
|
||||
**决策**:支持 `skipExtraction: true` 测试模式
|
||||
**鍐崇瓥**锛氭敮鎸?`skipExtraction: true` 娴嬭瘯妯″紡
|
||||
|
||||
**理由**:
|
||||
**鐞嗙敱**锛?
|
||||
- 蹇<>€熼獙璇佹湇鍔¢€昏緫
|
||||
- 鏃犻渶鍑嗗<E98D91>鐪熷疄PDF鏂囦欢
|
||||
- 节省测试成本和时间
|
||||
- 鑺傜渷娴嬭瘯鎴愭湰鍜屾椂闂?
|
||||
|
||||
**实现**:
|
||||
**瀹炵幇**锛?
|
||||
```typescript
|
||||
if (config.skipExtraction) {
|
||||
fullText = `# ${title}\n\n## Abstract\n${abstract}`;
|
||||
}
|
||||
```
|
||||
|
||||
### 4. 并发控制策略 ✅
|
||||
### 4. 骞跺彂鎺у埗绛栫暐 鉁?
|
||||
|
||||
**决策**:使用 `p-queue`,默认并发3
|
||||
**鍐崇瓥**锛氫娇鐢?`p-queue`锛岄粯璁ゅ苟鍙?
|
||||
|
||||
**理由**:
|
||||
- 提速3倍(相比串行处理)
|
||||
**鐞嗙敱**锛?
|
||||
- 鎻愰€?鍊嶏紙鐩告瘮涓茶<E6B693>澶勭悊锛?
|
||||
- 閬垮厤瑙﹀彂API闄愭祦
|
||||
- 自动排队,优雅控制
|
||||
- 鑷<EFBFBD>姩鎺掗槦锛屼紭闆呮帶鍒?
|
||||
|
||||
**配置**:
|
||||
**閰嶇疆**锛?
|
||||
```typescript
|
||||
const queue = new PQueue({ concurrency: 3 });
|
||||
```
|
||||
@@ -511,66 +511,66 @@ const queue = new PQueue({ concurrency: 3 });
|
||||
|
||||
### 闂<><E99782>1锛氭暟鎹<E69A9F>簱杩佺Щ鍐茬獊
|
||||
|
||||
**问题**:`prisma db push` 检测到会删除 `public` schema中的表
|
||||
**闂<EFBFBD><EFBFBD>**锛歚prisma db push` 妫€娴嬪埌浼氬垹闄?`public` schema涓<EFBFBD>殑琛?
|
||||
|
||||
**现象**:
|
||||
**鐜拌薄**锛?
|
||||
```
|
||||
鈿狅笍 There might be data loss when applying the changes:
|
||||
• You are about to drop the `users` table, which is not empty (2 rows).
|
||||
• You are about to drop the `projects` table, which is not empty (2 rows).
|
||||
鈥?You are about to drop the `users` table, which is not empty (2 rows).
|
||||
鈥?You are about to drop the `projects` table, which is not empty (2 rows).
|
||||
```
|
||||
|
||||
**根因**:
|
||||
**鏍瑰洜**锛?
|
||||
- 鍘嗗彶閬楃暀闂<E69A80><E99782>锛氶儴鍒嗘ā鍧楃殑琛ㄥ垱寤哄湪 `public` schema
|
||||
- Prisma Migrate浼氬皾璇曞悓姝ユ墍鏈塻chema
|
||||
|
||||
**解决方案**:
|
||||
1. 不使用 `prisma migrate` 或 `prisma db push`
|
||||
**瑙e喅鏂规<EFBFBD>**锛?
|
||||
1. 涓嶄娇鐢?`prisma migrate` 鎴?`prisma db push`
|
||||
2. 缂栧啓鎵嬪姩SQL鑴氭湰锛屽彧鎿嶄綔 `asl_schema`
|
||||
3. 鎵ц<E98EB5>锛歚Get-Content xxx.sql | docker exec -i postgres psql ...`
|
||||
4. 楠岃瘉锛歚\dt asl_schema.*`
|
||||
|
||||
**预防措施**:
|
||||
**棰勯槻鎺<EFBFBD>柦**锛?
|
||||
- 鏈<>潵缁х画浣跨敤鎵嬪姩SQL杩佺Щ
|
||||
- 鏄庣‘璁板綍鍦ㄦ枃妗d腑
|
||||
- 提醒其他模块开发者
|
||||
- 鎻愰啋鍏朵粬妯″潡寮€鍙戣€?
|
||||
|
||||
### 闂<><E99782>2锛歅risma Client绫诲瀷鐢熸垚
|
||||
|
||||
**问题**:修改Schema后,Prisma Client类型未更新
|
||||
**闂<EFBFBD><EFBFBD>**锛氫慨鏀筍chema鍚庯紝Prisma Client绫诲瀷鏈<EFBFBD>洿鏂?
|
||||
|
||||
**解决**:
|
||||
**瑙e喅**锛?
|
||||
```bash
|
||||
npx prisma generate
|
||||
```
|
||||
|
||||
**预防措施**:
|
||||
- 每次修改Schema后立即执行
|
||||
**棰勯槻鎺<EFBFBD>柦**锛?
|
||||
- 姣忔<EFBFBD>淇<EFBFBD>敼Schema鍚庣珛鍗虫墽琛?
|
||||
- 鍔犲叆杩佺Щ娴佺▼鏂囨。
|
||||
|
||||
---
|
||||
|
||||
## 馃摎 鐩稿叧鏂囨。
|
||||
|
||||
**本次更新的文档**:
|
||||
1. [数据库迁移状态说明](./2025-11-23_数据库迁移状态说明.md) ← 新建
|
||||
2. [数据库设计文档](../02-技术设计/01-数据库设计.md) ← 更新v3.0
|
||||
3. [模块当前状态与开发指南](../00-模块当前状态与开发指南.md) ← 更新v1.2
|
||||
4. [技术债务清单](../06-技术债务/技术债务清单.md) ← 更新债务7状态
|
||||
5. [全文复筛开发计划](../04-开发计划/04-全文复筛开发计划.md) ← 更新Day 4进度
|
||||
**鏈<EFBFBD><EFBFBD>鏇存柊鐨勬枃妗?*锛?
|
||||
1. [鏁版嵁搴撹縼绉荤姸鎬佽<EFBFBD>鏄嶿(./2025-11-23_鏁版嵁搴撹縼绉荤姸鎬佽<E98EAC>鏄?md) 鈫?鏂板缓
|
||||
2. [鏁版嵁搴撹<EFBFBD>璁℃枃妗<EFBFBD>(../02-鎶€鏈<E282AC><E98F88>璁?01-鏁版嵁搴撹<E690B4>璁?md) 鈫?鏇存柊v3.0
|
||||
3. [妯″潡褰撳墠鐘舵€佷笌寮€鍙戞寚鍗梋(../00-妯″潡褰撳墠鐘舵€佷笌寮€鍙戞寚鍗?md) 鈫?鏇存柊v1.2
|
||||
4. [鎶€鏈<EFBFBD>€哄姟娓呭崟](../06-鎶€鏈<E282AC>€哄姟/鎶€鏈<E282AC>€哄姟娓呭崟.md) 鈫?鏇存柊鍊哄姟7鐘舵€?
|
||||
5. [鍏ㄦ枃澶嶇瓫寮€鍙戣<EFBFBD>鍒抅(../04-寮€鍙戣<E98D99>鍒?04-鍏ㄦ枃澶嶇瓫寮€鍙戣<E98D99>鍒?md) 鈫?鏇存柊Day 4杩涘害
|
||||
|
||||
**参考的规范文档**:
|
||||
1. [云原生开发规范](../../../../04-开发规范/08-云原生开发规范.md)
|
||||
2. [数据库架构说明](../../../../00-系统总体设计/03-数据库架构说明.md)
|
||||
3. [系统当前状态与开发指南](../../../../00-系统总体设计/00-系统当前状态与开发指南.md)
|
||||
**鍙傝€冪殑瑙勮寖鏂囨。**锛?
|
||||
1. [浜戝師鐢熷紑鍙戣<EFBFBD>鑼僝(../../../../04-寮€鍙戣<EFBFBD>鑼?08-浜戝師鐢熷紑鍙戣<E98D99>鑼?md)
|
||||
2. [鏁版嵁搴撴灦鏋勮<EFBFBD>鏄嶿(../../../../00-绯荤粺鎬讳綋璁捐<EFBFBD>/03-鏁版嵁搴撴灦鏋勮<E98F8B>鏄?md)
|
||||
3. [绯荤粺褰撳墠鐘舵€佷笌寮€鍙戞寚鍗梋(../../../../00-绯荤粺鎬讳綋璁捐<E79281>/00-绯荤粺褰撳墠鐘舵€佷笌寮€鍙戞寚鍗?md)
|
||||
|
||||
---
|
||||
|
||||
## 🚀 下一步计划
|
||||
## 馃殌 涓嬩竴姝ヨ<E5A79D>鍒?
|
||||
|
||||
### Day 5锛氬悗绔疉PI寮€鍙戯紙棰勮<E6A3B0>1澶╋級
|
||||
|
||||
**任务清单**:
|
||||
**浠诲姟娓呭崟**锛?
|
||||
1. 鍒涘缓 `FulltextScreeningController.ts`
|
||||
- `createTask()` - 鍒涘缓浠诲姟
|
||||
- `getTaskProgress()` - 鑾峰彇杩涘害
|
||||
@@ -582,50 +582,50 @@ npx prisma generate
|
||||
4. API娴嬭瘯锛圥ostman鎴栭泦鎴愭祴璇曪級
|
||||
5. 閿欒<E996BF>澶勭悊瀹屽杽
|
||||
|
||||
**预计产出**:
|
||||
**棰勮<EFBFBD>浜у嚭**锛?
|
||||
- 5涓狝PI鎺ュ彛
|
||||
- API鏂囨。
|
||||
- 后端完成✅
|
||||
- 鍚庣<EFBFBD>瀹屾垚鉁?
|
||||
|
||||
---
|
||||
|
||||
## 馃帀 鎬荤粨
|
||||
|
||||
**Day 4核心成果**:
|
||||
- ✅ 完成数据库设计(云原生架构)
|
||||
- ✅ 完成数据库迁移(安全执行,无影响其他模块)
|
||||
- ✅ 完成批处理服务开发(700行核心代码)
|
||||
- ✅ 完成集成测试(端到端验证)
|
||||
- ✅ 完成详细文档(5篇文档更新)
|
||||
**Day 4鏍稿績鎴愭灉**锛?
|
||||
- 鉁?瀹屾垚鏁版嵁搴撹<E690B4>璁★紙浜戝師鐢熸灦鏋勶級
|
||||
- 鉁?瀹屾垚鏁版嵁搴撹縼绉伙紙瀹夊叏鎵ц<E98EB5>锛屾棤褰卞搷鍏朵粬妯″潡锛?
|
||||
- 鉁?瀹屾垚鎵瑰<E98EB5>鐞嗘湇鍔″紑鍙戯紙700琛屾牳蹇冧唬鐮侊級
|
||||
- 鉁?瀹屾垚闆嗘垚娴嬭瘯锛堢<E9949B>鍒扮<E98D92>楠岃瘉锛?
|
||||
- 鉁?瀹屾垚璇︾粏鏂囨。锛?绡囨枃妗f洿鏂帮級
|
||||
|
||||
**技术亮点**:
|
||||
- ✅ 云原生存储方案(全文存OSS/Dify)
|
||||
- ✅ 手动SQL迁移策略(安全可控)
|
||||
- ✅ 并发控制(p-queue,提速3倍)
|
||||
- ✅ 容错机制(重试、降级、继续)
|
||||
- ✅ 测试模式(快速验证)
|
||||
**鎶€鏈<EFBFBD>寒鐐?*锛?
|
||||
- 鉁?浜戝師鐢熷瓨鍌ㄦ柟妗堬紙鍏ㄦ枃瀛極SS/Dify锛?
|
||||
- 鉁?鎵嬪姩SQL杩佺Щ绛栫暐锛堝畨鍏ㄥ彲鎺э級
|
||||
- 鉁?骞跺彂鎺у埗锛坧-queue锛屾彁閫?鍊嶏級
|
||||
- 鉁?瀹归敊鏈哄埗锛堥噸璇曘€侀檷绾с€佺户缁<E688B7>級
|
||||
- 鉁?娴嬭瘯妯″紡锛堝揩閫熼獙璇侊級
|
||||
|
||||
**质量保障**:
|
||||
- ✅ Schema隔离100%正确(所有表在asl_schema)
|
||||
- ✅ 代码无Linter错误
|
||||
- ✅ 完整的错误处理和日志
|
||||
- ✅ 详细的文档记录
|
||||
**璐ㄩ噺淇濋殰**锛?
|
||||
- 鉁?Schema闅旂<EFBFBD>100%姝g‘锛堟墍鏈夎〃鍦╝sl_schema锛?
|
||||
- 鉁?浠g爜鏃燣inter閿欒<EFBFBD>
|
||||
- 鉁?瀹屾暣鐨勯敊璇<E6958A><E79287>鐞嗗拰鏃ュ織
|
||||
- 鉁?璇︾粏鐨勬枃妗h<E5A697>褰?
|
||||
|
||||
**开发效率**:
|
||||
**寮€鍙戞晥鐜?*锛?
|
||||
- 鈴憋笍 涓婂崍1h瀹屾垚鏁版嵁搴撹<E690B4>璁′笌杩佺Щ
|
||||
- ⏱️ 下午2h完成批处理服务开发
|
||||
- 鈴憋笍 涓嬪崍2h瀹屾垚鎵瑰<E98EB5>鐞嗘湇鍔″紑鍙?
|
||||
- 鈴憋笍 鍚堣<E98D9A>3h瀹屾垚Day 4鍏ㄩ儴浠诲姟
|
||||
|
||||
**MVP进度**:
|
||||
- Week 1:50% → 75% ✅
|
||||
- Day 1-3:通用能力层完成 ✅
|
||||
- Day 4:批处理服务完成 ✅
|
||||
**MVP杩涘害**锛?
|
||||
- Week 1锛?0% 鈫?75% 鉁?
|
||||
- Day 1-3锛氶€氱敤鑳藉姏灞傚畬鎴?鉁?
|
||||
- Day 4锛氭壒澶勭悊鏈嶅姟瀹屾垚 鉁?
|
||||
- Day 5锛欰PI寮€鍙戯紙涓嬩竴姝ワ級
|
||||
|
||||
---
|
||||
|
||||
**开发人员**:ASL开发团队
|
||||
**文档编写时间**:2025-11-23
|
||||
**寮€鍙戜汉鍛?*锛欰SL寮€鍙戝洟闃?
|
||||
**鏂囨。缂栧啓鏃堕棿**锛?025-11-23
|
||||
**鏂囨。鐗堟湰**锛歷1.0
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user