finyx_data_ai/下一步开发建议.md
2026-01-11 07:48:19 +08:00

11 KiB
Raw Permalink Blame History

下一步开发工作建议

生成日期: 2026-01-10
基于: 研发进度说明.md 和代码分析


📊 当前状态总结

已完成的工作

根据研发进度说明,所有 7 个核心业务接口已全部完成100%

模块 接口数 完成度
数据盘点智能分析服务 4 个 100%
场景挖掘智能推荐服务 2 个 100%
数据资产盘点报告生成服务 1 个 100%

⚠️ 技术债务与待改进项

根据研发进度说明和代码分析,发现以下待完成的工作:


🎯 优先级排序的开发任务

🔴 高优先级(影响生产环境使用)

1. 补充缺失的单元测试

优先级: 高
工作量: 8-10 人日
状态: 部分完成5/8 接口有测试)

当前测试覆盖情况

接口 测试文件 状态
/api/v1/inventory/ai-analyze test_ai_analyze.py 已测试
/api/v1/inventory/parse-document 缺失 需要补充
/api/v1/inventory/parse-sql-result 缺失 需要补充
/api/v1/inventory/parse-business-tables 缺失 需要补充
/api/v1/value/scenario-recommendation test_scenario_recommendation.py 已测试
/api/v1/value/scenario-optimization test_scenario_optimization.py 已测试
/api/v1/delivery/generate-report test_report_generation.py 已测试
/api/v1/common/* test_common.py 已测试

需要补充的测试文件

  1. tests/test_parse_document.py - 文档解析接口测试

    • 测试 Excel/Word/PDF 文件解析
    • 测试文件类型自动识别
    • 测试错误处理(无效文件、文件损坏等)
    • 测试表结构信息提取
  2. tests/test_parse_sql_result.py - SQL 结果解析接口测试

    • 测试 Excel/CSV 文件解析
    • 测试编码识别UTF-8、GBK等
    • 测试列名映射(中英文)
    • 测试按表名分组
  3. tests/test_parse_business_tables.py - 业务表解析接口测试

    • 测试批量文件上传
    • 测试多 Sheet 解析
    • 测试进度反馈
    • 测试部分文件失败时的处理

建议

  • 参考现有的测试文件(如 test_ai_analyze.py)的测试模式和结构
  • 使用 unittest.mock 模拟文件操作和 LLM 调用
  • 覆盖正常情况和异常情况
  • 确保测试可以独立运行,不依赖外部资源

2. 实现 SSE 流式响应

优先级: 高
工作量: 6-8 人日
状态: 未实现

影响

  • LLM 响应时间较长(报告生成可能需要几分钟)
  • 用户体验差(长时间等待无反馈)
  • 前端无法显示实时进度

需要实现流式响应的接口

  1. /api/v1/inventory/ai-analyze - AI 分析接口

    • 流式返回每个表的分析结果
    • 显示处理进度(已完成 N/M 个表)
  2. /api/v1/delivery/generate-report - 报告生成接口

    • 流式返回报告生成进度(章节一、二、三、四)
    • 显示每个章节的生成状态
    • 最终返回完整报告
  3. /api/v1/value/scenario-recommendation - 场景推荐接口

    • 流式返回推荐场景(逐个返回)
    • 显示推荐进度

技术实现

from fastapi.responses import StreamingResponse
import json

@router.post("/ai-analyze-stream")
async def ai_analyze_stream(request: AIAnalyzeRequest):
    """流式返回 AI 分析结果"""
    async def generate():
        # 处理第一个表
        result1 = await analyze_table(request.tables[0])
        yield f"data: {json.dumps({'table': 1, 'result': result1})}\n\n"
        
        # 处理第二个表
        result2 = await analyze_table(request.tables[1])
        yield f"data: {json.dumps({'table': 2, 'result': result2})}\n\n"
        
        # 完成
        yield f"data: {json.dumps({'status': 'completed'})}\n\n"
    
    return StreamingResponse(
        generate(),
        media_type="text/event-stream"
    )

前端集成

const eventSource = new EventSource('/api/v1/inventory/ai-analyze-stream');

eventSource.onmessage = (event) => {
    const data = JSON.parse(event.data);
    // 更新 UI显示进度
    updateProgress(data);
};

工作量分解

  • LLM 客户端支持流式调用2 人日
  • 报告生成接口流式响应3 人日
  • AI 分析接口流式响应2 人日
  • 场景推荐接口流式响应1 人日

🟡 中优先级(提升系统质量和性能)

3. 性能优化

优先级: 中
工作量: 5-7 人日

优化方向

  1. LLM 调用优化

    • 批量处理(多个表/场景一起分析)
    • 并发处理(使用 asyncio.gather 并行调用)
    • 缓存优化(已实现 Redis 缓存,可进一步优化缓存策略)
  2. 文件处理优化

    • 大文件分块处理
    • 使用内存映射mmap处理大文件
    • 异步文件 I/O
  3. 数据库查询优化(如果引入数据库)

    • 索引优化
    • 查询缓存
    • 分页处理

具体任务

  • 分析当前接口性能瓶颈(使用 time 模块和日志)
  • 优化 AI 分析接口(批量处理表)
  • 优化报告生成接口(并行生成章节)
  • 添加性能监控(响应时间、吞吐量)

4. 数据库集成

优先级: 中
工作量: 10-12 人日
状态: 未开始models 目录为空)

需求分析

当前系统是无状态 API,所有数据都是通过请求传入的。引入数据库可以实现:

  1. 数据持久化

    • 保存项目信息
    • 保存盘点结果
    • 保存报告历史
  2. 数据查询和管理

    • 历史报告查询
    • 项目数据管理
    • 统计分析

技术选型建议

  • ORM: SQLAlchemy 2.0(异步支持)
  • 数据库: PostgreSQL推荐或 MySQL
  • 迁移工具: Alembic

需要实现的模型

  1. 项目模型Project

    - id: UUID
    - name: str
    - industry: str
    - created_at: datetime
    - updated_at: datetime
    
  2. 盘点结果模型InventoryResult

    - id: UUID
    - project_id: UUID
    - tables: JSON (表列表)
    - analysis_result: JSON (AI 分析结果)
    - created_at: datetime
    
  3. 报告模型Report

    - id: UUID
    - project_id: UUID
    - report_content: JSON (报告内容)
    - generated_at: datetime
    

工作量分解

  • 数据库设计和模型定义2 人日
  • ORM 集成和迁移2 人日
  • API 接口改造支持数据持久化4 人日
  • 数据查询接口2 人日
  • 测试和文档2 人日

注意:数据库集成需要修改现有接口,建议:

  • 保持向后兼容(支持无数据库模式)
  • 分阶段实施(先实现数据持久化,再实现查询接口)

🟢 低优先级(可选功能)

5. 其他改进建议

  1. 集成测试

    • 端到端测试
    • API 集成测试
    • 测试覆盖率统计pytest-cov
  2. 文档完善

    • API 使用示例
    • 部署文档
    • 性能调优指南
  3. 监控和运维

    • 健康检查完善
    • 日志聚合ELK 或其他)
    • 告警规则优化
  4. 安全加固

    • API 限流ratelimit
    • 输入验证增强
    • 安全审计日志

📋 推荐开发计划

第一阶段质量保障2-3 周)

目标:补充缺失的测试,确保系统稳定性

  1. 补充缺失的单元测试8-10 人日)

    • 文档解析接口测试3 人日)
    • SQL 结果解析接口测试2 人日)
    • 业务表解析接口测试3 人日)
  2. 完善测试配置1-2 人日)

    • 添加 pytest.ini 配置文件
    • 配置测试覆盖率报告
    • 设置 CI/CD 测试流程(可选)

成果

  • 所有接口都有完整的单元测试
  • 测试覆盖率 > 80%
  • 可以通过 pytest 一键运行所有测试

第二阶段用户体验提升2-3 周)

目标:实现流式响应,提升用户体验

  1. 实现 SSE 流式响应6-8 人日)
    • LLM 客户端支持流式调用2 人日)
    • 报告生成接口流式响应3 人日)
    • AI 分析接口流式响应2 人日)
    • 前端对接示例1 人日)

成果

  • 报告生成接口支持流式返回
  • AI 分析接口支持流式返回
  • 用户体验显著提升(有实时反馈)

第三阶段系统增强3-4 周)

目标:性能优化和数据库集成

  1. 性能优化5-7 人日)

    • LLM 调用并发优化2 人日)
    • 文件处理优化2 人日)
    • 性能监控1 人日)
  2. 数据库集成10-12 人日)

    • 数据库设计和模型定义2 人日)
    • ORM 集成2 人日)
    • API 接口改造4 人日)
    • 数据查询接口2 人日)

成果

  • 接口响应时间减少 30%+
  • 支持数据持久化和历史查询
  • 系统更加完整和可用

📊 工作量总计

阶段 任务 工作量(人日)
第一阶段 补充单元测试 8-10
第二阶段 实现流式响应 6-8
第三阶段 性能优化 5-7
第三阶段 数据库集成 10-12
总计 29-37 人日

预计周期7-10 周(按 1 人开发计算)


🎯 立即开始的任务

根据当前状态,建议立即开始以下任务:

1. 补充缺失的单元测试

为什么优先

  • 测试是代码质量的保障
  • 3 个接口完全没有测试,存在风险
  • 测试编写相对独立,不会影响现有功能

具体步骤

  1. 创建 tests/test_parse_document.py
  2. 创建 tests/test_parse_sql_result.py
  3. 创建 tests/test_parse_business_tables.py
  4. 运行 pytest 确保所有测试通过

2. 实现报告生成接口的流式响应

为什么优先

  • 报告生成是最耗时的操作(可能需要几分钟)
  • 用户体验影响最大
  • 技术实现相对清晰

具体步骤

  1. 改造 LLM 客户端支持流式调用
  2. 修改报告生成服务支持流式返回
  3. 更新 API 路由支持 SSE
  4. 提供前端对接示例

📝 注意事项

  1. 保持向后兼容:新功能不应该破坏现有接口
  2. 分阶段实施:不要一次性改动太多,分阶段迭代
  3. 充分测试:每个功能完成后都要进行充分测试
  4. 更新文档:代码变更后及时更新 API 文档和使用文档

📚 参考资源