Complete AI Data Analysis Agent implementation with 95.7% test coverage
This commit is contained in:
1285
.kiro/specs/true-ai-agent/design.md
Normal file
1285
.kiro/specs/true-ai-agent/design.md
Normal file
File diff suppressed because it is too large
Load Diff
447
.kiro/specs/true-ai-agent/requirements.md
Normal file
447
.kiro/specs/true-ai-agent/requirements.md
Normal file
@@ -0,0 +1,447 @@
|
||||
# 真正的 AI 数据分析 Agent - 需求文档
|
||||
|
||||
## 1. 项目背景
|
||||
|
||||
### 1.1 当前问题
|
||||
|
||||
现有系统是"四不像":
|
||||
- 任务规划:基于模板的规则生成(固定90个任务)
|
||||
- 任务执行:AI 驱动的 ReAct 模式
|
||||
- 结果:规则 + AI = 不协调、不灵活
|
||||
|
||||
### 1.2 核心问题
|
||||
|
||||
**用户的真实需求**:
|
||||
> "我有数据,帮我分析一下"
|
||||
> "我想了解工单的健康度"
|
||||
> "按照这个模板分析,但要灵活调整"
|
||||
|
||||
**系统应该做什么**:
|
||||
- 像人类分析师一样理解数据
|
||||
- 自主决定分析什么
|
||||
- 根据发现调整分析计划
|
||||
- 生成有洞察力的报告
|
||||
|
||||
**而不是**:
|
||||
- 机械地执行固定任务
|
||||
- 死板地按模板填空
|
||||
|
||||
## 2. 用户故事
|
||||
|
||||
### 2.1 场景1:完全自主分析
|
||||
|
||||
**作为** 数据分析师
|
||||
**我想要** 上传数据文件,让 AI 自动分析
|
||||
**以便** 快速了解数据的关键信息
|
||||
|
||||
**验收标准**:
|
||||
- AI 能识别数据类型(工单、销售、用户等)
|
||||
- AI 能推断关键字段的业务含义
|
||||
- AI 能自主决定分析维度
|
||||
- AI 能生成合理的分析计划
|
||||
- AI 能执行分析并生成报告
|
||||
- 报告包含关键发现和洞察
|
||||
|
||||
**示例**:
|
||||
```
|
||||
输入:cleaned_data.csv
|
||||
输出:
|
||||
- 数据类型:工单数据
|
||||
- 关键发现:
|
||||
* 待处理工单占比50%(异常高)
|
||||
* 某车型问题占比80%
|
||||
* 平均处理时长超过标准2倍
|
||||
- 建议:优先处理该车型的积压工单
|
||||
```
|
||||
|
||||
### 2.2 场景2:指定分析方向
|
||||
|
||||
**作为** 业务负责人
|
||||
**我想要** 指定分析方向(如"健康度")
|
||||
**以便** 获得针对性的分析结果
|
||||
|
||||
**验收标准**:
|
||||
- AI 能理解"健康度"的业务含义
|
||||
- AI 能将抽象概念转化为具体指标
|
||||
- AI 能根据数据特征选择合适的分析方法
|
||||
- AI 能生成针对性的报告
|
||||
|
||||
**示例**:
|
||||
```
|
||||
输入:
|
||||
- 数据:cleaned_data.csv
|
||||
- 需求:"我想了解工单的健康度"
|
||||
|
||||
AI 理解:
|
||||
- 健康度 = 关闭率 + 处理效率 + 积压情况 + 响应及时性
|
||||
|
||||
AI 分析:
|
||||
- 关闭率:75%(中等)
|
||||
- 平均处理时长:48小时(偏长)
|
||||
- 积压工单:50%(严重)
|
||||
- 健康度评分:60/100(需改进)
|
||||
```
|
||||
|
||||
### 2.3 场景3:参考模板分析
|
||||
|
||||
**作为** 数据分析师
|
||||
**我想要** 使用模板作为参考框架
|
||||
**以便** 保持报告结构的一致性,同时保持灵活性
|
||||
|
||||
**验收标准**:
|
||||
- AI 能理解模板的结构和要求
|
||||
- AI 能检查数据是否满足模板要求
|
||||
- 如果数据缺少某些字段,AI 能灵活调整
|
||||
- AI 能按模板结构组织报告
|
||||
- AI 不会因为数据不完全匹配而失败
|
||||
|
||||
**示例**:
|
||||
```
|
||||
输入:
|
||||
- 数据:cleaned_data.csv
|
||||
- 模板:issue_analysis.md(要求14个图表)
|
||||
|
||||
AI 检查:
|
||||
- 模板要求"严重程度分布",但数据中没有"严重程度"字段
|
||||
- 决策:跳过该分析,在报告中说明
|
||||
|
||||
AI 调整:
|
||||
- 执行其他13个分析
|
||||
- 报告中注明:"数据缺少严重程度字段,无法分析该维度"
|
||||
```
|
||||
|
||||
### 2.4 场景4:迭代深入分析
|
||||
|
||||
**作为** 数据分析师
|
||||
**我想要** AI 能根据发现深入分析
|
||||
**以便** 找到问题的根因
|
||||
|
||||
**验收标准**:
|
||||
- AI 能识别异常或关键发现
|
||||
- AI 能自主决定是否需要深入分析
|
||||
- AI 能动态调整分析计划
|
||||
- AI 能追踪问题的根因
|
||||
|
||||
**示例**:
|
||||
```
|
||||
初步分析:
|
||||
- 发现:待处理工单占比50%(异常高)
|
||||
|
||||
AI 决策:需要深入分析
|
||||
|
||||
深入分析1:
|
||||
- 分析待处理工单的特征
|
||||
- 发现:某车型占80%
|
||||
|
||||
AI 决策:继续深入
|
||||
|
||||
深入分析2:
|
||||
- 分析该车型的问题类型
|
||||
- 发现:都是"远程控制"问题
|
||||
|
||||
AI 决策:继续深入
|
||||
|
||||
深入分析3:
|
||||
- 分析"远程控制"问题的模块分布
|
||||
- 发现:90%是"车门模块"
|
||||
|
||||
结论:车门模块的远程控制功能存在系统性问题
|
||||
```
|
||||
|
||||
## 3. 功能需求
|
||||
|
||||
### 3.1 数据理解(Data Understanding)
|
||||
|
||||
**FR-1.1 数据加载**
|
||||
- 系统应支持 CSV 格式数据
|
||||
- 系统应自动检测编码(UTF-8, GBK等)
|
||||
- 系统应处理常见的数据格式问题
|
||||
|
||||
**FR-1.2 数据类型识别**
|
||||
- AI 应分析列名、数据类型、值分布
|
||||
- AI 应推断数据的业务类型(工单、销售、用户等)
|
||||
- AI 应识别关键字段(时间、状态、分类、数值)
|
||||
|
||||
**FR-1.3 字段含义理解**
|
||||
- AI 应推断每个字段的业务含义
|
||||
- AI 应识别字段之间的关系
|
||||
- AI 应识别可能的分析维度
|
||||
|
||||
**FR-1.4 数据质量评估**
|
||||
- AI 应检查缺失值
|
||||
- AI 应检查异常值
|
||||
- AI 应评估数据质量分数
|
||||
|
||||
### 3.2 需求理解(Requirement Understanding)
|
||||
|
||||
**FR-2.1 自主需求推断**
|
||||
- 当用户未指定需求时,AI 应根据数据类型推断常见分析需求
|
||||
- AI 应生成默认的分析目标
|
||||
|
||||
**FR-2.2 用户需求理解**
|
||||
- AI 应理解用户的自然语言需求
|
||||
- AI 应将抽象概念转化为具体指标
|
||||
- AI 应判断数据是否支持用户需求
|
||||
|
||||
**FR-2.3 模板理解**
|
||||
- AI 应解析模板结构
|
||||
- AI 应理解模板要求的指标和图表
|
||||
- AI 应检查数据是否满足模板要求
|
||||
- AI 应在数据不满足时灵活调整
|
||||
|
||||
### 3.3 分析规划(Analysis Planning)
|
||||
|
||||
**FR-3.1 动态任务生成**
|
||||
- AI 应根据数据特征和需求生成分析任务
|
||||
- 任务应是动态的,不是固定的
|
||||
- 任务应包含优先级和依赖关系
|
||||
|
||||
**FR-3.2 任务优先级**
|
||||
- AI 应根据重要性排序任务
|
||||
- 必需的分析应优先执行
|
||||
- 可选的分析应后执行
|
||||
|
||||
**FR-3.3 计划调整**
|
||||
- AI 应能根据中间结果调整计划
|
||||
- AI 应能增加新的深入分析任务
|
||||
- AI 应能跳过不适用的任务
|
||||
|
||||
### 3.4 工具集管理(Tool Management)
|
||||
|
||||
**FR-4.1 预设工具集**
|
||||
- 系统应提供基础数据分析工具集
|
||||
- 基础工具包括:数据查询、统计分析、可视化、数据清洗
|
||||
- 工具应有标准的接口和描述
|
||||
|
||||
**FR-4.2 动态工具调整**
|
||||
- AI 应根据数据特征决定需要哪些工具
|
||||
- AI 应根据分析需求动态启用/禁用工具
|
||||
- AI 应能识别缺少的工具并请求添加
|
||||
|
||||
**FR-4.3 工具适配**
|
||||
- AI 应根据数据类型调整工具参数
|
||||
- 例如:时间序列数据 → 启用趋势分析工具
|
||||
- 例如:分类数据 → 启用分布分析工具
|
||||
- 例如:地理数据 → 启用地图可视化工具
|
||||
|
||||
**FR-4.4 自定义工具生成**
|
||||
- AI 应能根据特定需求生成临时工具
|
||||
- AI 应能组合现有工具创建新功能
|
||||
- 自定义工具应在分析结束后可选保留
|
||||
|
||||
**示例**:
|
||||
```
|
||||
数据特征:
|
||||
- 包含时间字段(created_at, closed_at)
|
||||
- 包含分类字段(status, type, model)
|
||||
- 包含数值字段(duration)
|
||||
|
||||
AI 决策:
|
||||
- 启用工具:时间序列分析、分类分布、数值统计
|
||||
- 禁用工具:地理分析(无地理字段)
|
||||
- 生成工具:计算处理时长(closed_at - created_at)
|
||||
```
|
||||
|
||||
### 3.5 分析执行(Analysis Execution)
|
||||
|
||||
**FR-5.1 ReAct 执行模式**
|
||||
- 每个任务应使用 ReAct 模式执行
|
||||
- AI 应思考 → 行动 → 观察 → 判断
|
||||
- AI 应能从错误中学习
|
||||
|
||||
**FR-5.2 工具调用**
|
||||
- AI 应从可用工具集中选择合适的工具
|
||||
- AI 应能组合多个工具完成复杂任务
|
||||
- AI 应能处理工具调用失败的情况
|
||||
|
||||
**FR-5.3 结果验证**
|
||||
- AI 应验证每个任务的结果
|
||||
- AI 应识别异常结果
|
||||
- AI 应决定是否需要重试或调整
|
||||
|
||||
**FR-5.4 迭代深入**
|
||||
- AI 应识别关键发现
|
||||
- AI 应决定是否需要深入分析
|
||||
- AI 应动态增加深入分析任务
|
||||
|
||||
### 3.6 报告生成(Report Generation)
|
||||
|
||||
**FR-6.1 关键发现提炼**
|
||||
- AI 应从所有结果中提炼关键发现
|
||||
- AI 应识别异常和趋势
|
||||
- AI 应提供洞察而不是简单罗列数据
|
||||
|
||||
**FR-6.2 报告结构组织**
|
||||
- AI 应根据分析内容组织报告结构
|
||||
- 如果有模板,应参考模板结构
|
||||
- 如果没有模板,应生成合理的结构
|
||||
|
||||
**FR-6.3 结论和建议**
|
||||
- AI 应基于分析结果得出结论
|
||||
- AI 应提供可操作的建议
|
||||
- AI 应说明建议的依据
|
||||
|
||||
**FR-6.4 多格式输出**
|
||||
- 系统应生成 Markdown 格式报告
|
||||
- 系统应支持导出为 Word 文档(可选)
|
||||
- 报告应包含所有生成的图表
|
||||
|
||||
## 4. 非功能需求
|
||||
|
||||
### 4.1 性能需求
|
||||
|
||||
**NFR-1.1 响应时间**
|
||||
- 数据理解阶段:< 30秒
|
||||
- 分析规划阶段:< 60秒
|
||||
- 单个任务执行:< 120秒
|
||||
- 完整分析流程:< 30分钟(取决于数据大小和任务数量)
|
||||
|
||||
**NFR-1.2 数据规模**
|
||||
- 支持最大 100MB 的 CSV 文件
|
||||
- 支持最大 100万行数据
|
||||
- 支持最大 100列
|
||||
|
||||
### 4.2 可靠性需求
|
||||
|
||||
**NFR-2.1 错误处理**
|
||||
- AI 调用失败时应有降级策略
|
||||
- 单个任务失败不应影响整体流程
|
||||
- 系统应记录详细的错误日志
|
||||
|
||||
**NFR-2.2 数据安全**
|
||||
- 数据应在本地处理,不上传到外部服务
|
||||
- 生成的报告应保存在用户指定的目录
|
||||
- 敏感信息应脱敏处理
|
||||
|
||||
### 4.3 可用性需求
|
||||
|
||||
**NFR-3.1 易用性**
|
||||
- 用户只需提供数据文件即可开始分析
|
||||
- 分析过程应显示进度和状态
|
||||
- 错误信息应清晰易懂
|
||||
|
||||
**NFR-3.2 可观察性**
|
||||
- 系统应显示 AI 的思考过程
|
||||
- 系统应显示每个阶段的进度
|
||||
- 系统应记录完整的执行日志
|
||||
|
||||
### 4.4 可扩展性需求
|
||||
|
||||
**NFR-4.1 工具扩展**
|
||||
- 应易于添加新的分析工具
|
||||
- 工具应有标准接口
|
||||
- AI 应能自动发现和使用新工具
|
||||
- 工具应支持热加载,无需重启系统
|
||||
|
||||
**NFR-4.2 工具动态性**
|
||||
- 工具集应根据数据特征动态调整
|
||||
- 工具参数应根据数据类型自适应
|
||||
- 系统应支持运行时生成临时工具
|
||||
|
||||
**NFR-4.3 模型扩展**
|
||||
- 应支持不同的 LLM 提供商
|
||||
- 应支持本地模型和云端模型
|
||||
- 应支持模型切换
|
||||
|
||||
## 5. 约束条件
|
||||
|
||||
### 5.1 技术约束
|
||||
|
||||
- 使用 Python 3.8+
|
||||
- 使用 OpenAI 兼容的 LLM API
|
||||
- 使用 pandas 进行数据处理
|
||||
- 使用 matplotlib 进行可视化
|
||||
|
||||
### 5.2 业务约束
|
||||
|
||||
- 系统应在离线环境下工作(除 LLM 调用外)
|
||||
- 系统不应依赖特定的数据格式或业务领域
|
||||
- 系统应保持通用性,适用于各种数据分析场景
|
||||
|
||||
### 5.3 隐私和安全约束
|
||||
|
||||
**数据隐私保护**:
|
||||
- AI 不能访问完整的原始数据内容
|
||||
- AI 只能读取:
|
||||
- 表头(列名)
|
||||
- 数据类型信息
|
||||
- 基本统计摘要(行数、列数、缺失值比例、数据类型分布)
|
||||
- 工具执行后的聚合结果(如分组统计结果、图表数据)
|
||||
- 所有原始数据处理必须在本地完成,不发送给 LLM
|
||||
- AI 通过调用本地工具来分析数据,工具返回摘要结果而非原始数据
|
||||
|
||||
### 5.3 隐私和安全约束
|
||||
|
||||
**数据隐私保护**:
|
||||
- AI 不能访问完整的原始数据内容
|
||||
- AI 只能读取:
|
||||
- 表头(列名)
|
||||
- 数据类型信息
|
||||
- 基本统计摘要(行数、列数、缺失值比例、数据类型分布)
|
||||
- 工具执行后的聚合结果(如分组统计结果、图表数据)
|
||||
- 所有原始数据处理必须在本地完成,不发送给 LLM
|
||||
- AI 通过调用本地工具来分析数据,工具返回摘要结果而非原始数据
|
||||
|
||||
## 6. 验收标准
|
||||
|
||||
### 6.1 场景1验收
|
||||
|
||||
- [ ] 上传任意 CSV 文件,AI 能识别数据类型
|
||||
- [ ] AI 能自主生成分析计划
|
||||
- [ ] AI 能执行分析并生成报告
|
||||
- [ ] 报告包含关键发现和洞察
|
||||
|
||||
### 6.2 场景2验收
|
||||
|
||||
- [ ] 指定"健康度"等抽象需求,AI 能理解
|
||||
- [ ] AI 能生成相关指标
|
||||
- [ ] AI 能执行针对性分析
|
||||
- [ ] 报告聚焦于用户需求
|
||||
|
||||
### 6.3 场景3验收
|
||||
|
||||
- [ ] 提供模板,AI 能理解模板要求
|
||||
- [ ] 数据缺少字段时,AI 能灵活调整
|
||||
- [ ] 报告按模板结构组织
|
||||
- [ ] 报告说明哪些分析被跳过及原因
|
||||
|
||||
### 6.4 场景4验收
|
||||
|
||||
- [ ] AI 能识别异常发现
|
||||
- [ ] AI 能自主决定深入分析
|
||||
- [ ] AI 能动态调整分析计划
|
||||
- [ ] 报告包含深入分析的结果
|
||||
|
||||
### 6.5 工具动态性验收
|
||||
|
||||
- [ ] 系统根据数据特征自动启用相关工具
|
||||
- [ ] 系统根据数据特征自动禁用无关工具
|
||||
- [ ] AI 能识别需要但缺失的工具
|
||||
- [ ] AI 能生成临时工具满足特定需求
|
||||
- [ ] 工具参数根据数据类型自动调整
|
||||
|
||||
## 7. 成功指标
|
||||
|
||||
### 7.1 功能指标
|
||||
|
||||
- 数据类型识别准确率 > 90%
|
||||
- 字段含义推断准确率 > 80%
|
||||
- 分析计划合理性(人工评估)> 85%
|
||||
- 报告质量(人工评估)> 80%
|
||||
|
||||
### 7.2 性能指标
|
||||
|
||||
- 完整分析流程完成率 > 95%
|
||||
- AI 调用成功率 > 90%
|
||||
|
||||
### 7.3 用户满意度
|
||||
|
||||
- 用户认为分析结果有价值 > 80%
|
||||
- 用户愿意再次使用 > 85%
|
||||
- 用户推荐给他人 > 75%
|
||||
|
||||
---
|
||||
|
||||
**版本**: v3.0.0
|
||||
**日期**: 2026-03-06
|
||||
**状态**: 需求定义完成
|
||||
458
.kiro/specs/true-ai-agent/tasks.md
Normal file
458
.kiro/specs/true-ai-agent/tasks.md
Normal file
@@ -0,0 +1,458 @@
|
||||
# 实施计划:真正的 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:任务执行完整性**
|
||||
- **属性 14:ReAct 循环终止**
|
||||
- **属性 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
|
||||
**状态**: 任务计划完成
|
||||
Reference in New Issue
Block a user