Files

459 lines
15 KiB
Markdown
Raw Permalink Normal View History

# 实施计划:真正的 AI 数据分析 Agent
## 概述
本实施计划将设计转化为具体的编码任务。系统采用五阶段流水线架构,每个阶段由 AI 驱动,具有自主决策能力。实施将按照从核心数据结构到各个引擎组件,最后到集成的顺序进行。
## 任务列表
- [x] 1. 搭建项目结构和核心数据模型
- 创建项目目录结构src/models, src/engines, src/tools, tests
- 定义核心数据类DataProfile, ColumnInfo, RequirementSpec, AnalysisObjective, AnalysisPlan, AnalysisTask, AnalysisResult
- 实现数据类的序列化和反序列化方法
- 设置测试框架pytest, hypothesis
- _需求FR-1.1, FR-1.2_
- [x] 2. 实现数据访问层和隐私保护机制
- [x] 2.1 实现 DataAccessLayer 类
- 实现数据加载功能(支持多种编码)
- 实现数据画像生成(不暴露原始数据)
- 实现结果过滤机制sanitize_result
- _需求约束条件5.3_
- [x] 2.2 编写属性测试:数据访问限制
- **属性 18数据访问限制**
- **验证需求约束条件5.3**
- [x] 2.3 编写单元测试
- 测试多种编码的数据加载
- 测试空文件和格式错误的处理
- 测试结果过滤功能
- [x] 3. 实现工具系统基础设施
- [x] 3.1 定义工具接口AnalysisTool 抽象类)
- 定义标准接口name, description, parameters, execute, is_applicable
- 实现工具注册机制
- _需求FR-4.1_
- [x] 3.2 实现基础数据查询工具
- 实现 get_column_distribution 工具
- 实现 get_value_counts 工具
- 实现 get_time_series 工具
- 实现 get_correlation 工具
- 确保所有工具返回聚合数据而非原始数据
- _需求FR-4.1, 约束条件5.3_
- [x] 3.3 实现基础统计分析工具
- 实现 calculate_statistics 工具
- 实现 perform_groupby 工具
- 实现 detect_outliers 工具
- 实现 calculate_trend 工具
- _需求FR-4.1_
- [x] 3.4 编写属性测试:工具接口一致性和输出过滤
- **属性 10工具接口一致性**
- **属性 19工具输出过滤**
- **验证需求FR-4.1, 约束条件5.3**
- [x] 3.5 编写单元测试
- 测试每个工具的基本功能
- 测试工具参数验证
- 测试工具执行错误处理
- [x] 4. 实现可视化工具
- [x] 4.1 实现图表生成工具
- 实现 create_bar_chart 工具
- 实现 create_line_chart 工具
- 实现 create_pie_chart 工具
- 实现 create_heatmap 工具
- 实现 ai_picture 依据数据特性画图工具
- 使用 matplotlib 生成图表并保存为文件
- _需求FR-4.1_
- [x] 4.2 编写单元测试
- 测试图表生成功能
- 测试图表文件保存
- [x] 5. 检查点 - 确保工具系统测试通过
- 确保所有测试通过,如有问题请询问用户
- [x] 6. 实现工具管理器
- [x] 6.1 实现 ToolManager 类
- 实现工具选择逻辑select_tools 方法)
- 根据数据特征启用/禁用工具
- 实现工具适用性判断
- _需求FR-4.2, FR-4.3_
- [x] 6.2 实现动态工具调整策略
- 检查时间字段并启用时间序列工具
- 检查分类字段并启用分布分析工具
- 检查数值字段并启用统计工具
- 检查地理字段并启用地理工具
- _需求FR-4.2, FR-4.3_
- [x] 6.3 编写属性测试:工具选择和适用性
- **属性 9工具选择适配性**
- **属性 11工具适用性判断**
- **属性 12工具需求识别**
- **验证需求FR-4.2, FR-4.3, 工具动态性验收.1, .2, .3**
- [x] 6.4 编写单元测试
- 测试不同数据特征的工具选择
- 测试工具适用性判断
- [x] 7. 实现数据理解引擎
- [x] 7.1 实现基础统计生成
- 实现 generate_basic_stats 函数
- 生成列信息(名称、类型、缺失率、唯一值数量)
- 生成示例值每列最多5个
- _需求FR-1.2, FR-1.3_
- [x] 7.2 实现 AI 驱动的数据理解
- 实现 understand_data 函数
- 调用 LLM 推断数据类型
- 调用 LLM 识别关键字段和业务含义
- 调用 LLM 评估数据质量
- 生成 DataProfile 对象
- _需求FR-1.2, FR-1.3, FR-1.4_
- [x] 7.3 编写属性测试:数据理解
- **属性 1数据类型识别**
- **属性 2数据画像完整性**
- **验证需求场景1验收.1, FR-1.2, FR-1.3, FR-1.4**
- [x] 7.4 编写单元测试
- 测试工单数据识别
- 测试销售数据识别
- 测试数据质量评估
- [x] 8. 实现需求理解引擎
- [x] 8.1 实现用户需求解析
- 实现 understand_requirement 函数
- 调用 LLM 解析自然语言需求
- 将抽象概念转化为具体指标
- 生成 RequirementSpec 对象
- _需求FR-2.1, FR-2.2_
- [x] 8.2 实现模板解析功能
- 实现 parse_template 函数
- 解析模板文件结构
- 提取模板要求的指标和图表
- _需求FR-2.3_
- [x] 8.3 实现数据-需求匹配检查
- 实现 check_data_requirement_match 函数
- 检查数据是否满足需求
- 标记缺失的字段或能力
- _需求FR-2.3_
- [x] 8.4 编写属性测试:需求理解
- **属性 3抽象需求转化**
- **属性 4模板解析**
- **属性 5数据-需求匹配检查**
- **验证需求场景2验收.1, .2, 场景3验收.1, .2, FR-2.1, FR-2.2, FR-2.3**
- [x] 8.5 编写单元测试
- 测试"健康度"需求的理解
- 测试模板解析
- 测试数据不满足需求的情况
- [x] 9. 检查点 - 确保数据和需求理解测试通过
- 确保所有测试通过,如有问题请询问用户
- [x] 10. 实现分析规划引擎
- [x] 10.1 实现 AI 驱动的任务生成
- 实现 plan_analysis 函数
- 调用 LLM 根据数据特征和需求生成任务列表
- 为每个任务分配优先级
- 识别任务依赖关系
- 生成 AnalysisPlan 对象
- _需求FR-3.1, FR-3.2_
- [x] 10.2 实现任务依赖验证
- 实现 validate_task_dependencies 函数
- 检查依赖关系是否形成 DAG
- 检查所有依赖的任务是否存在
- _需求FR-3.1_
- [x] 10.3 编写属性测试:分析规划
- **属性 6动态任务生成**
- **属性 7任务依赖一致性**
- **验证需求场景1验收.2, FR-3.1, FR-3.2**
- [x] 10.4 编写单元测试
- 测试任务生成
- 测试循环依赖检测
- 测试任务优先级排序
- [x] 11. 实现任务执行引擎ReAct 模式)
- [x] 11.1 实现 ReAct 执行循环
- 实现 execute_task 函数
- 实现思考-行动-观察循环
- 调用 LLM 进行思考和决策
- 选择并调用工具
- 记录执行历史
- 实现循环终止条件(完成或达到最大迭代次数)
- _需求FR-5.1_
- [x] 11.2 实现工具调用和结果处理
- 实现 call_tool 函数
- 根据 AI 决策选择工具
- 传递参数并执行工具
- 处理工具执行结果
- _需求FR-5.2_
- [x] 11.3 实现洞察提炼
- 实现 extract_insights 函数
- 从执行历史中提炼关键发现
- 识别异常和趋势
- _需求FR-5.4_
- [x] 11.4 编写属性测试:任务执行
- **属性 13任务执行完整性**
- **属性 14ReAct 循环终止**
- **属性 15异常识别**
- **验证需求场景1验收.3, 场景4验收.1, FR-5.1**
- [x] 11.5 编写单元测试
- 测试 ReAct 循环
- 测试工具选择和调用
- 测试异常数据的识别
- [x] 12. 实现动态计划调整
- [x] 12.1 实现计划调整逻辑
- 实现 adjust_plan 函数
- 分析已完成任务的结果
- 识别关键发现和异常
- 决定是否需要深入分析
- 生成新任务或调整优先级
- _需求FR-3.3, FR-5.4_
- [x] 12.2 编写属性测试:计划调整
- **属性 8计划动态调整**
- **验证需求场景4验收.2, .3, FR-3.3**
- [x] 12.3 编写单元测试
- 测试发现异常后的计划调整
- 测试新任务的生成
- 测试任务跳过逻辑
- [ ] 13. 检查点 - 确保规划和执行引擎测试通过
- 确保所有测试通过,如有问题请询问用户
- [x] 14. 实现报告生成引擎
- [x] 14.1 实现关键发现提炼
- 实现 extract_key_findings 函数
- 从所有分析结果中提炼关键发现
- 识别最重要的异常和趋势
- 排序和优先级排列
- _需求FR-6.1_
- [x] 14.2 实现报告结构组织
- 实现 organize_report_structure 函数
- 根据分析内容组织报告结构
- 如果有模板,参考模板结构
- 如果没有模板,生成合理的结构
- _需求FR-6.2_
- [x] 14.3 实现 AI 驱动的报告生成
- 实现 generate_report 函数
- 调用 LLM 生成报告内容
- 包含执行摘要、详细分析、结论和建议
- 嵌入图表和可视化
- 格式化为 Markdown
- _需求FR-6.1, FR-6.2, FR-6.3_
- [x] 14.4 实现报告追溯性
- 确保报告中的所有发现都能追溯到分析结果
- 说明哪些分析被跳过及原因
- _需求FR-6.1_
- [x] 14.5 编写属性测试:报告生成
- **属性 16报告结构完整性**
- **属性 17报告内容追溯性**
- **验证需求场景3验收.3, .4, 场景4验收.4, FR-6.1, FR-6.2**
- [x] 14.6 编写单元测试
- 测试报告结构生成
- 测试模板结构遵循
- 测试跳过分析的说明
- [x] 15. 实现错误处理机制
- [x] 15.1 实现数据加载错误处理
- 实现 load_data_with_retry 函数
- 支持多种编码尝试
- 处理文件过大的情况(采样)
- 处理格式错误
- _需求NFR-2.1_
- [x] 15.2 实现 AI 调用错误处理
- 实现 call_llm_with_fallback 函数
- 实现重试机制(指数退避)
- 实现降级策略(规则方法)
- _需求NFR-2.1_
- [x] 15.3 实现工具执行错误处理
- 实现 execute_tool_safely 函数
- 验证工具参数
- 捕获执行异常
- 返回错误信息而不是崩溃
- _需求NFR-2.1_
- [x] 15.4 实现任务执行错误处理
- 实现 execute_task_with_recovery 函数
- 检查依赖任务状态
- 处理依赖失败的情况
- 单个任务失败不影响整体流程
- _需求NFR-2.1_
- [x] 15.5 编写单元测试
- 测试各种错误场景
- 测试重试机制
- 测试降级策略
- 测试错误恢复
- [x] 16. 实现主流程编排
- [x] 16.1 实现完整分析流程
- 实现 run_analysis 主函数
- 编排五个阶段的执行顺序
- 处理阶段之间的数据传递
- 实现进度显示
- _需求所有功能需求_
- [x] 16.2 实现命令行接口
- 实现 CLI 参数解析
- 支持指定数据文件
- 支持指定用户需求
- 支持指定模板文件
- 支持指定输出目录
- _需求NFR-3.1_
- [x] 16.3 实现日志和可观察性
- 配置日志系统
- 记录每个阶段的执行状态
- 显示 AI 的思考过程
- 记录错误和警告
- _需求NFR-3.2_
- [x] 16.4 编写集成测试
- 测试端到端分析流程
- 测试基于模板的分析
- 测试错误恢复流程
- [x] 17. 实现配置和环境管理
- [x] 17.1 创建配置文件
- 定义 LLM API 配置
- 定义性能参数(超时、重试次数)
- 定义输出路径配置
- _需求约束条件5.1_
- [x] 17.2 实现环境变量支持
- 支持从环境变量读取 API 密钥
- 支持配置文件覆盖
- _需求约束条件5.1_
- [x] 17.3 编写单元测试
- 测试配置加载
- 测试环境变量读取
- [x] 18. 检查点 - 确保所有测试通过
- 确保所有测试通过,如有问题请询问用户
- [x] 19. 创建测试数据和示例
- [x] 19.1 创建测试数据集
- 创建工单数据示例ticket_sample.csv
- 创建销售数据示例sales_sample.csv
- 创建用户数据示例user_sample.csv
- 创建包含异常的数据集
- _需求验收标准_
- [x] 19.2 创建分析模板
- 创建工单分析模板ticket_analysis.md
- 创建问题分析模板problem_analysis.md
- 创建基于数据特征的分析模板data_analysis.md
- _需求场景3验收_
- [x] 19.3 编写示例脚本
- 创建完全自主分析示例
- 创建指定需求分析示例
- 创建基于模板分析示例
- [x] 20. 编写文档
- [x] 20.1 编写 README
- 项目介绍
- 安装说明
- 使用示例
- 配置说明
- _需求NFR-3.1_
- [x] 20.2 编写 API 文档
- 核心类和函数的文档字符串
- 工具接口文档
- 配置参数文档
- _需求NFR-3.1_
- [x] 20.3 编写开发者指南
- 如何添加新工具
- 如何扩展功能
- 架构说明
- _需求NFR-4.1_
- [x] 21. 性能优化和验证
- [x] 21.1 运行性能测试
- 测试数据理解阶段性能(< 30秒
- 测试完整分析流程性能(< 30分钟
- 测试大数据集处理100万行
- _需求NFR-1.1, NFR-1.2_
- [x] 21.2 优化性能瓶颈
- 优化数据加载
- 优化 AI 调用(批处理、缓存)
- 优化工具执行
- _需求NFR-1.1_
- [x] 21.3 编写性能测试
- 测试各阶段的性能指标
- 测试内存使用
- [x] 22. 最终检查点 - 完整系统验证
- 运行所有测试套件
- 验证所有验收标准
- 运行端到端示例
- 确保所有测试通过,如有问题请询问用户
## 注意事项
- 所有任务都是必需的,确保从一开始就有完整的测试覆盖
- 每个任务都引用了具体的需求以便追溯
- 检查点确保增量验证
- 属性测试验证通用正确性属性
- 单元测试验证特定示例和边缘情况
- 所有属性测试应使用 hypothesis 库,最少运行 100 次迭代
- 每个属性测试必须包含注释标签:`# Feature: true-ai-agent, Property {number}: {property_text}`
## 实施顺序说明
1. **阶段1任务1-5**:搭建基础设施,实现工具系统
2. **阶段2任务6-9**:实现数据理解和需求理解引擎
3. **阶段3任务10-13**:实现分析规划和任务执行引擎
4. **阶段4任务14-15**:实现报告生成和错误处理
5. **阶段5任务16-18**:集成和主流程编排
6. **阶段6任务19-22**:测试数据、文档和性能优化
每个阶段都有检查点,确保在继续之前验证功能正确性。
---
**版本**: v1.0.0
**日期**: 2026-03-06
**状态**: 任务计划完成