feat(asl): Implement full-text screening core LLM service and validation system (Day 1-3)

Core Components:
- PDFStorageService with Dify/OSS adapters
- LLM12FieldsService with Nougat-first + dual-model + 3-layer JSON parsing
- PromptBuilder for dynamic prompt assembly
- MedicalLogicValidator with 5 rules + fault tolerance
- EvidenceChainValidator for citation integrity
- ConflictDetectionService for dual-model comparison

Prompt Engineering:
- System Prompt (6601 chars, Section-Aware strategy)
- User Prompt template (PICOS context injection)
- JSON Schema (12 fields constraints)
- Cochrane standards (not loaded in MVP)

Key Innovations:
- 3-layer JSON parsing (JSON.parse + json-repair + code block extraction)
- Promise.allSettled for dual-model fault tolerance
- safeGetFieldValue for robust field extraction
- Mixed CN/EN token calculation

Integration Tests:
- integration-test.ts (full test)
- quick-test.ts (quick test)
- cached-result-test.ts (fault tolerance test)

Documentation Updates:
- Development record (Day 2-3 summary)
- Quality assurance strategy (full-text screening)
- Development plan (progress update)
- Module status (v1.1 update)
- Technical debt (10 new items)

Test Results:
- JSON parsing success rate: 100%
- Medical logic validation: 5/5 passed
- Dual-model parallel processing: OK
- Cost per PDF: CNY 0.10

Files: 238 changed, 14383 insertions(+), 32 deletions(-)
Docs: docs/03-涓氬姟妯″潡/ASL-AI鏅鸿兘鏂囩尞/05-寮€鍙戣褰?2025-11-22_Day2-Day3_LLM鏈嶅姟涓庨獙璇佺郴缁熷紑鍙?md
This commit is contained in:
2025-11-22 22:18:17 +08:00
parent 8eef9e0544
commit beb7f7f559
238 changed files with 20718 additions and 31 deletions

View File

@@ -1,9 +1,9 @@
# AI智能文献模块 - 技术债务清单
> **文档版本:** v1.0
> **文档版本:** v1.1
> **创建日期:** 2025-11-21
> **维护者:** AI智能文献开发团队
> **最后更新:** 2025-11-21
> **最后更新:** 2025-11-22
> **文档目的:** 记录MVP完成后需要优化的技术问题
---
@@ -848,13 +848,230 @@ const estimate = estimateCost(literatures);
---
---
## 🟠 优先级6全文复筛技术债务NEW
> **更新日期**2025-11-22
> **当前状态**Day 1-3已完成通用能力层核心
### 债务1Nougat质量检测机制缺失
**问题描述**
- 当前Nougat提取后质量评分为`undefined`
- 导致所有PDF都降级到PyMuPDF无法充分利用Nougat的结构化优势
**影响**
- 无法获得Markdown格式的结构化全文
- Section-Aware Prompt策略效果打折扣
- 可能影响准确率(结构化信息丢失)
**根本原因**
- Python extraction_service返回的Nougat结果缺少`quality`字段
- 或质量评分逻辑未实现
**解决方案**
1. 检查`extraction_service/services/pdf_processor.py`的Nougat处理逻辑
2. 实现质量评分机制基于识别置信度、Markdown完整性等
3. 测试并调优质量阈值
**优先级**:中
**预计耗时**:半天
**风险**:低
---
### 债务2MVP未实施全文验证Full-text Validation
**问题描述**
- 质量保障策略中设计了"分段提取 + 全文验证"
- MVP采用"一次性全文提取"策略,跳过了全文验证步骤
**影响**
- 可能存在"Lost in the Middle"现象导致的遗漏
- 关键字段的准确率可能未达到92%目标
**建议**
1. MVP上线后收集准确率数据
2. 如果关键字段准确率<90%,实施全文验证
3. 优先针对3个核心字段随机化方法、盲法、结果完整性
**优先级**待MVP测试验证
**预计耗时**2天
**条件触发**:关键字段准确率<90%
---
### 债务3Cochrane标准未加载MVP简化
**问题描述**
- MVP为了减少Prompt长度和成本未加载Cochrane RoB 2.0标准
- 可能影响"质量评估"字段的判断准确性
**影响**
- 质量评估字段可能不够严谨
- 缺少统一的评判标准
**建议**
1. MVP测试后评估准确率
2. 如果"质量评估"字段准确率<85%重新加载Cochrane标准
3. 通过配置开关灵活控制PromptBuilder已支持
**优先级**待MVP测试验证
**预计耗时**:半天(已有代码,仅需配置)
**条件触发**:质量评估字段准确率<85%
---
### 债务4Few-shot Examples被移除
**问题描述**
- 为了优化Prompt长度从74KB降至52KB移除了Few-shot examples
- 可能影响模型对"Lost in the Middle"场景的处理能力
**影响**
- 模型缺少参考案例,面对复杂场景时可能表现不稳定
**建议**
1. MVP测试后分析失败案例
2. 如果发现特定模式的失败案例如信息在中间位置重新添加Few-shot
3. 采用精简版Few-shot1-2个核心案例而非原来的完整案例
**优先级**待MVP测试验证
**预计耗时**1天
**条件触发**:特定场景失败率>30%
---
### 债务5批处理服务未实现Day 4待开发
**问题描述**
- 当前只有单篇PDF的LLM处理服务
- 缺少批量处理、进度跟踪、并发控制
**影响**
- 无法批量处理多篇文献
- 缺少任务队列和进度管理
**解决方案**
- Day 4开发`AsyncTaskService``FulltextScreeningService`
- 集成`p-queue`实现并发控制
- 实现进度回调和失败重试
**优先级**Day 4计划中
**预计耗时**1天
**状态**:计划中
---
### 债务6前端UI未开发Day 5-6待开发
**问题描述**
- 全文复筛的前端UI完全未开发
- 包括设置页、工作台页、结果页、双视图审阅弹窗
**影响**
- 后端服务无法被用户使用
- MVP无法交付
**解决方案**
- Day 5-6开发前端UI
- 参考标题摘要初筛的UI设计
- 适配12字段模板的展示需求
**优先级**Day 5-6计划中
**预计耗时**2天
**状态**:计划中
---
### 债务7数据库表未创建
**问题描述**
- `AslFulltextScreeningTask``AslFulltextScreeningResult`表未创建
- 无法存储全文复筛的任务和结果
**影响**
- 后端服务无法持久化数据
**解决方案**
- Day 4执行Prisma迁移
- 创建两个新表并建立关联
**优先级**Day 4计划中
**预计耗时**:半天
**状态**:计划中
---
### 债务8API端点未实现
**问题描述**
- 全文复筛相关的RESTful API未实现
- 前端无法调用后端服务
**影响**
- 前后端无法集成
**解决方案**
- Day 4开发API控制器
- 实现任务创建、进度查询、结果查询、人工复核等接口
**优先级**Day 4计划中
**预计耗时**:半天
**状态**:计划中
---
### 债务9成本优化空间
**问题描述**
- 单篇PDF处理成本约¥0.10DeepSeek + Qwen
- System Prompt仍有6,601字符有优化空间
**潜在优化**
1. 精简System Prompt保留核心指引移除冗余说明
2. 调整JSON Schema减少description字段
3. 考虑单模型模式仅DeepSeek成本降低75%
**预期效果**
- 成本降低30-50%(双模型)
- 或降低75%(单模型)
**优先级**MVP稳定后
**预计耗时**1-2天
---
### 债务10容错机制待增强
**问题描述**
- 虽然已实现3层JSON解析策略但缺少"LLM重试"层
- 如果3层解析都失败任务直接失败
**建议**
- 在生产环境中监控JSON解析失败率
- 如果失败率>5%实施第4层LLM重试带强化Prompt
**优先级**:低(待生产数据验证)
**预计耗时**1天
**条件触发**JSON解析失败率>5%
---
## 📚 相关文档
**标题摘要初筛**:
- [模块当前状态与开发指南](../00-模块当前状态与开发指南.md) - 已知问题来源
- [任务分解](../04-开发计划/03-任务分解.md) - Week 4任务清单
- [Prompt设计与测试报告](../05-开发记录/2025-11-18-Prompt设计与测试完成报告.md) - 质量问题分析
- [今日工作总结](../05-开发记录/2025-11-18-今日工作总结.md) - 边界问题诊断
**全文复筛**:
- [全文复筛开发计划](../04-开发计划/04-全文复筛开发计划.md) - 开发进度和计划
- [全文复筛质量保障策略](../02-技术设计/08-全文复筛质量保障策略.md) - 质量策略设计
- [Day 2-3开发记录](../05-开发记录/2025-11-22_Day2-Day3_LLM服务与验证系统开发.md) - 已完成工作
---
**文档维护**
@@ -862,6 +1079,7 @@ const estimate = estimateCost(literatures);
- 每次解决技术债务后标记状态
- 定期评估优先级(每月)
**最后更新**2025-11-21
**下次评估**Week 4完成后
**最后更新**2025-11-22v1.1
**本次更新**新增全文复筛技术债务10项
**下次评估**全文复筛MVP完成后