# Proposal: 集成类案与法条推荐API数据展示 ## Change ID `integrate-similar-case-api` ## 概述 修改`SimilarCaseContent.jsx`组件,集成`RecommendAPIService.getComprehensiveRecommendations` API调用,实现真实的类案与法条推荐数据展示。当用户点击"类案与法条推荐"工具时,从`CaseDataContext`获取timeline数据作为请求参数,动态加载并展示推荐结果。 ## 动机 当前"类案与法条推荐"功能使用的是静态mock数据,无法提供真实的推荐服务。需要集成后端API实现: 1. **真实数据展示**:根据当前案件信息获取个性化的类案和法条推荐 2. **动态参数构建**:从timeline缓存中提取案件描述、诉求和ID构建API请求 3. **用户体验优化**:提供Loading状态和错误处理机制 4. **数据驱动决策**:为调解员提供更准确的参考信息 ## 影响范围 ### 修改文件 - `web-app/src/components/tools/SimilarCaseContent.jsx` - 集成API调用和动态数据渲染 ### 新增依赖 - `RecommendAPIService` - 已存在的推荐API服务 - `CaseDataContext` - 已存在的案件数据上下文 ## 用户故事 ### 作为调解员 - **我想要**:点击类案推荐工具时能看到基于当前案件的真实推荐结果 - **以便于**:参考相似案例和相关法条,提高调解质量和效率 ### 作为系统用户 - **我想要**:获得个性化的推荐内容而非固定mock数据 - **以便于**:得到更有针对性的调解参考信息 ## 关键技术决策 ### 1. 数据获取策略 **选择方案**:组件挂载时自动加载 - 在组件`useEffect`中自动调用API - 使用`CaseDataContext`提供的timeline数据构建请求参数 - 避免用户手动触发,提升使用体验 ### 2. 参数构建逻辑 ```javascript const buildRequestParams = (timeline) => { const caseContent = [ timeline.caseDes || '', timeline.case_claim || '' ].filter(Boolean).join('\n'); return { caseId: timeline.case_id, caseContent: caseContent, caseTopK: 3, lawTopK: 10 }; }; ``` ### 3. 错误处理策略 - API调用失败时显示友好的错误提示 - 不保留mock数据作为降级方案,直接显示错误状态 - 控制台输出详细错误信息供调试 ### 4. 性能优化 - 使用`useCallback`优化API调用函数 - 避免不必要的重复请求 - 合理的Loading状态管理 ## 数据流设计 ``` 组件挂载 ↓ 从CaseDataContext获取timeline数据 ↓ 构建API请求参数 ↓ 调用RecommendAPIService.getComprehensiveRecommendations ↓ 获取cases和laws数据 ↓ 格式化数据并更新组件状态 ↓ 动态渲染类案和法条推荐列表 ``` ## 非目标 - 本次不修改现有UI布局和样式 - 本次不添加新的交互功能 - 本次不处理分页或无限滚动 - 本次不实现推荐结果的反馈机制 ## 依赖关系 - ✅ RecommendAPIService.getComprehensiveRecommendations方法已存在 - ✅ CaseDataContext提供timeline数据 - ✅ 现有SimilarCaseContent UI结构可复用 ## 验收标准 1. ✅ 点击"类案与法条推荐"工具时正确调用推荐API 2. ✅ 成功从timeline中提取caseDes、case_claim、case_id构建请求参数 3. ✅ API返回的类案数据正确展示在左侧列表中 4. ✅ API返回的法条数据正确展示在右侧列表中 5. ✅ API调用过程中显示Loading状态 6. ✅ API调用失败时显示错误提示(不使用mock数据降级) 7. ✅ 保持现有UI样式和交互体验不变 ## 风险评估 - **低风险**:主要是数据绑定,不涉及复杂业务逻辑变更 - **测试重点**:API参数构建正确性、数据格式兼容性、错误处理机制 ## 时间估算 - 开发时间:2-3小时 - 测试时间:1小时 - 总计:3-4小时