bc3ea2e439
fix: 精准修复BaseNode._add_warning方法返回None导致的NoneType错误
...
- 修改BaseNode._add_warning方法返回状态字典而不是None
- 解决review_structure节点中state = self._add_warning(state, warning_msg)导致的NoneType错误
- 保持最小化代码改动,确保所有现有功能正常工作
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-29 11:35:35 +08:00
c96c3696ca
fix: 修复技术目录生成Agent中的NoneType错误
...
- 修复safe_execute方法中的None返回值处理
- 增强所有NodeStateManager方法的None状态处理
- 确保状态管理方法始终返回有效的字典对象
- 增加错误情况下的降级处理和日志记录
修复了重构过程中引入的'NoneType' object does not support item assignment错误
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-29 11:25:35 +08:00
b5b727a61d
refactor: 消除技术目录生成Agent中的重复代码
...
- 统一条件判断函数,移除analysis.py中的重复别名
- 创建BaseAgentFactory基类,抽取共同的工厂方法
- AnalysisAgent和TocAgent继承工厂基类,移除重复代码
- 增强BaseNode状态更新功能,添加进度和警告辅助方法
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-29 11:05:52 +08:00
692e54ecdd
refactor: 重构目录生成Agent,消除重复代码并统一接口
...
主要优化:
- 统一表格文本提取功能:将重复的_extract_table_text函数合并到parser.py
- 创建通用工作流条件判断:新增workflow_utils.py提供统一的should_continue函数
- 统一LLM调用接口:所有LLM调用统一使用LLMHelper.call_llm_with_retry
- 统一JSON解析逻辑:使用LLMHelper.parse_ai_json_response统一处理AI响应
- 清理冗余导入:移除不再使用的json模块导入
效果:
- 减少约120行重复代码
- 提高代码一致性和可维护性
- 简化调试和问题定位
- 符合DRY原则
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-29 10:52:52 +08:00
0a06aad7f5
refactor: 目录生成Agent重构 - 消除重复代码并优化架构
...
## 重构成果
- 新增统一组件: ChapterFactory, CategoryManager, LLMHelper
- 重构核心节点: 精简代码量30%,消除重复逻辑
- 清理无效代码: 移除残留导入和未使用方法
- 优化导入结构: 解决循环导入风险
## 新增文件
- factories.py: 统一章节创建逻辑
- category_manager.py: 整合类别相关操作
- llm_helper.py: 封装LLM调用和解析
- constants.py: 常量定义
- utils.py: 迁移指引
## 重构节点
- 所有节点使用统一的BaseNode增强方法
- 消除重复的AI响应解析、状态管理、日志记录
- 使用工厂模式统一章节创建
## 代码质量提升
- 代码行数从960行优化到949行
- 清晰的职责分离和模块化设计
- 统一的错误处理和状态管理
- 消除所有重复功能和无效代码
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-29 10:32:35 +08:00
fb3e704bef
refactor: 架构优化 - 移除重复代码并统一工具类模式
...
重大架构改进:
1. 移除重复的TocGeneratorAgent实现(585行),保留模块化的TocAgent
2. 修复LLMService模块级强制初始化问题,采用标准单例模式
3. 统一所有工具类的使用模式,提高架构一致性
具体更改:
- 删除 src/bidmaster/agents/toc_generator.py(完全重复实现)
- 移除 llm.py 中的模块级实例化(llm_service = LLMService())
- 更新 tools/__init__.py 导出LLMService类而非实例
- 更新使用方改为LLMService()调用(generate_sub_chapters.py, review_structure.py)
- 清理agents/__init__.py和analysis.py中的旧版本引用
收益:
- 减少约600行重复代码
- 解决模块导入时的配置加载错误
- 实现惰性加载,配置只在使用时加载
- 提高代码可维护性和架构一致性
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-29 09:59:45 +08:00
c74ae0b418
fix: 修复CLI导入问题并简化交互流程
...
主要修改:
- 修复CLI模块导入:添加__main__.py和正确的包配置
- 修复InteractionHandler调用错误:使用__call__而非.interact()
- 删除重复交互:AnalysisAgent和TocAgent都询问生成模式
- 简化生成方式:删除模板选项,只保留AI生成
- 消除代码重复:BidParser专注解析,TocAgent负责生成
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-28 20:21:10 +08:00
46a60fe00b
refactor: 实现Agent节点抽离架构,支持可配置化交互
...
## 主要改进
### 节点抽离架构
- 创建独立的节点基类 (BaseNode, NodeContext)
- 将TocGenerator的5个节点抽离为独立模块
- 支持节点间的松耦合和可重用设计
### Agent构建器模式
- 实现AgentBuilder基类支持灵活的工作流组装
- 提供TocAgentBuilder用于构建目录生成Agent
- 支持条件边和无条件边的配置
### 多模式交互管理
- 实现InteractionHandler支持三种模式:
- INTERACTIVE: CLI交互模式
- SILENT: 静默模式(使用默认值)
- PROGRAMMATIC: 程序化模式(使用预设值)
- 通过NodeContext实现交互与业务逻辑解耦
### 测试验证
- 所有测试通过,验证架构设计正确性
- 支持AI智能生成和模板生成两种模式
- 完整的错误处理和日志记录
## 技术细节
### 新增文件
- `nodes/base.py`: 节点基础接口
- `nodes/toc/*`: TocGenerator各节点实现
- `agents/base.py`: Agent构建器基类
- `agents/builders/toc_builder.py`: Toc构建器
- `agents/interaction.py`: 交互管理器
### 架构优势
- 节点可独立测试和复用
- 支持不同交互模式的无缝切换
- 遵循开闭原则,易于扩展新节点
- 符合PROJECT_SPEC.md的模块化规范
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-28 17:20:15 +08:00
24880dcb71
refactor: 使用Word原生编号功能替代手动编号
...
- 删除WordProcessor中的手动编号逻辑
- 添加_extract_title_text提取纯文本标题
- 修改TocGeneratorAgent生成不含编号的标题
- 让Word通过Heading样式自动管理编号
- 支持Word原生目录功能
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-27 10:39:53 +08:00
2ff96ea544
refactor: 将目录生成功能抽取为独立的TocGeneratorAgent
...
- 创建独立的TocGeneratorAgent,专门负责目录生成
- 从AnalysisAgent中移除700+行冗余代码
- 添加统一的LLM服务层,避免重复创建客户端实例
- 修复所有违反PROJECT_SPEC.md规范的代码:
- 移除防御编程(copy()方法)
- 实现立即失败原则(异常直接抛出)
- 统一常量定义(CATEGORY_NAMES)
- 规范import语句位置
- 修复私有方法调用问题
- 保持向后兼容性,不改变原有接口
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-27 10:12:44 +08:00
e6103c711f
refactor: 按照PROJECT_SPEC.md规范重构代码
...
修复架构和代码规范违规问题:
架构修复:
- 创建internal目录(内部模块,禁止外部import)
- 恢复ARCHITECTURE.md文档
- 移除未定义的utils目录
- 清理临时测试目录
代码规范修复(严格遵循核心哲学):
- 移除所有try-except,让错误立即暴露
- 移除所有防护编程(不返回bool/错误字符串)
- 简化为MVP版本(每个命令组只保留核心功能)
- 移除所有美化输出,使用简单print
功能实现:
- 实现generate命令(只保留task子命令)
- 实现assemble命令(只保留tables子命令)
- 修复bidmaster/__init__.py导出
- 添加缺失的TableGenerator类
文件精简:
- generate.py: 262行 → 66行
- assemble.py: 293行 → 64行
- 移除所有延迟导入和内部import
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-26 20:02:59 +08:00
a01fa47a00
fix: 修复章节编号错乱问题并优化子标题生成
...
## 主要修复
- 修复子标题编号与父章节编号不匹配的问题
- 从Agent层移除编号处理逻辑,改为在Word生成时动态计算编号
- 优化编号识别算法,支持多级编号格式(1.、1.1、1.1.1等)
## 技术改进
- 在WordProcessor中实现动态章节编号功能
- 使用正则表达式准确提取编号和内容
- 简化Agent工作流,专注于内容生成而非格式化
- 添加original_index字段到ScoringCriteria模型
## 工作流优化
- 调整LangGraph节点执行顺序:生成章节→映射→生成子标题→AI审核→最终确定
- 章节顺序严格遵循招标文件评分表原始顺序
- 职责分离:Agent专注内容,Word处理器专注格式
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-26 09:52:38 +08:00
43f56eeffa
feat: 实现Word标书模板生成功能
...
- 新增WordProcessor类,支持从三级章节结构生成专业Word模板
- 集成Word生成功能到project new命令,实现完整工作流
- 自动生成标题层级结构,支持1-3级标题格式
- 为评分项添加占位符和评分提示,指导用户编写
- 添加目录占位符提示,支持Word自动更新功能
- 项目创建现在输出:JSON解析结果 + 任务清单 + Word模板
- 符合开发规范:解析招标文件,生成任务清单和Word框架
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-25 15:25:00 +08:00
835f4b604c
feat: 实现交互式project new命令
...
- 简化project new命令为交互式体验,移除复杂参数
- 添加友好的文件路径输入引导和验证
- 自动生成带日期的默认项目名称
- 添加目录冲突检测和确认机制
- 创建完整的项目结构(analysis_result.json + tasks.json)
- 生成结构化任务清单,支持后续内容生成
- 显示详细的创建结果和三级目录结构
- 符合开发规范要求的简洁易用设计
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-25 15:17:01 +08:00
f48971cf67
feat: 实现完整三级标题生成功能
...
- 扩展DocumentChapter模型支持嵌套结构和评分值
- 新增智能分组算法,按关键词和前缀对评分项进行分类
- 重写章节生成逻辑,支持一级、二级、三级标题完整结构
- 优化显示系统,支持递归显示和颜色区分
- 增强表格解析能力,处理复杂的合并单元格结构
- 改进AI识别逻辑,更好地识别评分表格类型
- 完善.gitignore文件,添加项目相关忽略规则
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-25 14:33:30 +08:00
47fc26f3f0
feat: 初始化BidMaster-CLI项目
...
- 实现三层架构(CLI/Agent/Tools)
- 完成招标文件解析器(支持Excel/CSV/Word)
- 实现AI智能表格识别和分类
- 支持商务/技术评分项智能分离
- 实现RAG知识库管理
- 完成专业目录结构生成
- 修复编码规范违规问题
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-25 13:50:13 +08:00