|
@@ -0,0 +1,1326 @@
|
|
|
|
|
+# LQAgentPlatform 最终架构设计
|
|
|
|
|
+
|
|
|
|
|
+> **版本**: v3.0
|
|
|
|
|
+> **更新日期**: 2026-04-09
|
|
|
|
|
+> **项目状态**: 核心功能已实现,生产环境运行中
|
|
|
|
|
+> **v2.0→v3.0 变更**: 新增施工方案编写模块、脱敏模块、简化管道、标准匹配、LLM分类器v2、LLM链式客户端框架
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 最终架构设计图
|
|
|
|
|
+
|
|
|
|
|
+```
|
|
|
|
|
+┌─────────────────────────────────────────────────────────────────────────────────────┐
|
|
|
|
|
+│ LQAgentPlatform - 实际架构实现 (v2.0) │
|
|
|
|
|
+├─────────────────────────────────────────────────────────────────────────────────────┤
|
|
|
|
|
+│ │
|
|
|
|
|
+│ ┌───────────────────────────────────────────────────────────────────────────────┐ │
|
|
|
|
|
+│ │ Server Layer (服务器层) │ │
|
|
|
|
|
+│ │ ┌─────────────────────────────────────────────────────────────────────────┐ │ │
|
|
|
|
|
+│ │ │ FastAPI Application (server/app.py) │ │ │
|
|
|
|
|
+│ │ │ • RouteManager - 路由管理 │ │ │
|
|
|
|
|
+│ │ │ • CeleryWorkerManager - 异步任务管理 │ │ │
|
|
|
|
|
+│ │ │ • ApplicationFactory - 应用工厂 │ │ │
|
|
|
|
|
+│ │ └─────────────────────────────────────────────────────────────────────────┘ │ │
|
|
|
|
|
+│ └───────────────────────────────────────────────────────────────────────────────┘ │
|
|
|
|
|
+│ ▲ │
|
|
|
|
|
+│ │ HTTP Request │
|
|
|
|
|
+│ ▼ │
|
|
|
|
|
+│ ┌───────────────────────────────────────────────────────────────────────────────┐ │
|
|
|
|
|
+│ │ Views Layer (视图层) │ │
|
|
|
|
|
+│ │ ┌─────────────────────────────────────────────────────────────────────────┐ │ │
|
|
|
|
|
+│ │ │ construction_review/ - 施工方案审查API ✅ (已实现) │ │ │
|
|
|
|
|
+│ │ │ • file_upload.py - 文档上传接口 │ │ │
|
|
|
|
|
+│ │ │ • launch_review.py - 启动审查接口 │ │ │
|
|
|
|
|
+│ │ │ • review_results.py - 审查结果接口 │ │ │
|
|
|
|
|
+│ │ │ • task_control.py - 任务控制接口 │ │ │
|
|
|
|
|
+│ │ │ • desensitize_api.py - 脱敏API接口 🆕 │ │ │
|
|
|
|
|
+│ │ │ • schemas/error_schemas.py - 错误模式定义 │ │ │
|
|
|
|
|
+│ │ └─────────────────────────────────────────────────────────────────────────┘ │ │
|
|
|
|
|
+│ │ ┌─────────────────────────────────────────────────────────────────────────┐ │ │
|
|
|
|
|
+│ │ │ construction_write/ - 施工方案编写API ✅ (已实现) 🆕 │ │ │
|
|
|
|
|
+│ │ │ • outline_views.py - 大纲生成接口 │ │ │
|
|
|
|
|
+│ │ │ • content_completion.py - 内容补全接口 │ │ │
|
|
|
|
|
+│ │ │ • regenerate_views.py - 重新生成接口 │ │ │
|
|
|
|
|
+│ │ │ • task_cancel_views.py - 任务取消接口 │ │ │
|
|
|
|
|
+│ │ │ • similar_plan_recommend.py - 相似方案推荐接口 │ │ │
|
|
|
|
|
+│ │ └─────────────────────────────────────────────────────────────────────────┘ │ │
|
|
|
|
|
+│ │ ┌─────────────────────────────────────────────────────────────────────────┐ │ │
|
|
|
|
|
+│ │ │ test_views.py - 测试接口 │ │ │
|
|
|
|
|
+│ │ └─────────────────────────────────────────────────────────────────────────┘ │ │
|
|
|
|
|
+│ └───────────────────────────────────────────────────────────────────────────────┘ │
|
|
|
|
|
+│ ▲ │
|
|
|
|
|
+│ │ 调用业务逻辑 │
|
|
|
|
|
+│ ▼ │
|
|
|
|
|
+│ ┌───────────────────────────────────────────────────────────────────────────────┐ │
|
|
|
|
|
+│ │ Core Layer (核心业务层) │ │
|
|
|
|
|
+│ │ ┌─────────────────────────────────────────────────────────────────────────┐ │ │
|
|
|
|
|
+│ │ │ construction_review/ - 施工方案审查模块 ✅ (已实现) │ │ │
|
|
|
|
|
+│ │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │
|
|
|
|
|
+│ │ │ │ workflows/ - 工作流层 │ │ │ │
|
|
|
|
|
+│ │ │ │ • ai_review_workflow.py - AI审查工作流 (54KB, 核心) │ │ │ │
|
|
|
|
|
+│ │ │ │ • document_workflow.py - 文档处理工作流 │ │ │ │
|
|
|
|
|
+│ │ │ │ • report_workflow.py - 报告生成工作流 │ │ │ │
|
|
|
|
|
+│ │ │ │ • core_functions/ - 核心业务函数 🆕 │ │ │ │
|
|
|
|
|
+│ │ │ │ • types/ - 状态类型定义 (AIReviewState, TaskChainState) 🆕 │ │ │ │
|
|
|
|
|
+│ │ │ └─────────────────────────────────────────────────────────────────┘ │ │ │
|
|
|
|
|
+│ │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │
|
|
|
|
|
+│ │ │ │ component/ - 组件层 │ │ │ │
|
|
|
|
|
+│ │ │ │ • ai_review_engine.py - AI审查引擎 (核心引擎) │ │ │ │
|
|
|
|
|
+│ │ │ │ • document_processor.py - 文档处理器 │ │ │ │
|
|
|
|
|
+│ │ │ │ • report_generator.py - 报告生成器 │ │ │ │
|
|
|
|
|
+│ │ │ │ • outline_catalogue_matcher.py - 大纲目录匹配器 🆕 │ │ │ │
|
|
|
|
|
+│ │ │ │ • constants.py - 常量定义 🆕 │ │ │ │
|
|
|
|
|
+│ │ │ │ • check_completeness/ - 完整性检查组件 │ │ │ │
|
|
|
|
|
+│ │ │ │ • desensitize/ - 数据脱敏模块 🆕 │ │ │ │
|
|
|
|
|
+│ │ │ │ - engine.py, validator.py, dict_manager.py │ │ │ │
|
|
|
|
|
+│ │ │ │ - model_client.py, remapper.py │ │ │ │
|
|
|
|
|
+│ │ │ │ - processors/ (pii, geo, biz, financial) │ │ │ │
|
|
|
|
|
+│ │ │ │ • doc_worker/ - 文档处理工作器 │ │ │ │
|
|
|
|
|
+│ │ │ │ - classification/ (chunk, hierarchy, smart_local) 🆕 │ │ │ │
|
|
|
|
|
+│ │ │ │ - pdf_worker/ (html_to_markdown) 🆕 │ │ │ │
|
|
|
|
|
+│ │ │ │ - config/ (StandardCategoryTable.csv, prompt.yaml) │ │ │ │
|
|
|
|
|
+│ │ │ │ • minimal_pipeline/ - 简化处理管道 🆕 │ │ │ │
|
|
|
|
|
+│ │ │ │ - ocr_processor.py, pdf_extractor.py │ │ │ │
|
|
|
|
|
+│ │ │ │ - toc_builder.py, toc_detector.py │ │ │ │
|
|
|
|
|
+│ │ │ │ - simple_processor.py, chunk_assembler.py │ │ │ │
|
|
|
|
|
+│ │ │ │ • standard_matching/ - 标准匹配模块 🆕 │ │ │ │
|
|
|
|
|
+│ │ │ │ - standard_dao.py, standard_service.py │ │ │ │
|
|
|
|
|
+│ │ │ │ • infrastructure/ - 基础设施组件 │ │ │ │
|
|
|
|
|
+│ │ │ │ • reviewers/ - 审查器集合 │ │ │ │
|
|
|
|
|
+│ │ │ │ - base_reviewer.py - 基础审查器 │ │ │ │
|
|
|
|
|
+│ │ │ │ - completeness_reviewer.py - 完整性审查器 │ │ │ │
|
|
|
|
|
+│ │ │ │ - reference_basis_reviewer.py - 参考依据审查器 │ │ │ │
|
|
|
|
|
+│ │ │ │ - standard_timeliness_reviewer.py - 标准时效性审查器 🆕 │ │ │ │
|
|
|
|
|
+│ │ │ │ - timeliness_basis_reviewer.py - 时效性审查器 │ │ │ │
|
|
|
|
|
+│ │ │ │ - timeliness_content_reviewer.py - 时效性内容审查器 🆕 │ │ │ │
|
|
|
|
|
+│ │ │ │ - semantic_logic.py - 语义逻辑审查器 │ │ │ │
|
|
|
|
|
+│ │ │ │ - sensitive_word_check.py - 敏感词检查 🆕 │ │ │ │
|
|
|
|
|
+│ │ │ │ - utils/llm_content_classifier_v2/ - LLM分类器v2 🆕 │ │ │ │
|
|
|
|
|
+│ │ │ │ - utils/llm_chain_client/ - LLM链式客户端框架 🆕 │ │ │ │
|
|
|
|
|
+│ │ │ └─────────────────────────────────────────────────────────────────┘ │ │ │
|
|
|
|
|
+│ │ └─────────────────────────────────────────────────────────────────────────┘ │ │
|
|
|
|
|
+│ │ ┌─────────────────────────────────────────────────────────────────────────┐ │ │
|
|
|
|
|
+│ │ │ construction_write/ - 施工方案编写模块 ✅ (已实现) 🆕 │ │ │
|
|
|
|
|
+│ │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │
|
|
|
|
|
+│ │ │ │ component/ │ │ │ │
|
|
|
|
|
+│ │ │ │ • outline_generator.py - 大纲生成器 │ │ │ │
|
|
|
|
|
+│ │ │ │ • state_models.py - 状态模型 │ │ │ │
|
|
|
|
|
+│ │ │ │ • prompt/ - 提示词配置 │ │ │ │
|
|
|
|
|
+│ │ │ └─────────────────────────────────────────────────────────────────┘ │ │ │
|
|
|
|
|
+│ │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │
|
|
|
|
|
+│ │ │ │ workflows/ │ │ │ │
|
|
|
|
|
+│ │ │ │ • agent.py - 编写智能体 │ │ │ │
|
|
|
|
|
+│ │ │ │ • outline_workflow.py - 大纲工作流 │ │ │ │
|
|
|
|
|
+│ │ │ └─────────────────────────────────────────────────────────────────┘ │ │ │
|
|
|
|
|
+│ │ └─────────────────────────────────────────────────────────────────────────┘ │ │
|
|
|
|
|
+│ │ ┌─────────────────────────────────────────────────────────────────────────┐ │ │
|
|
|
|
|
+│ │ │ base/ - 基础组件 ✅ (已实现) │ │ │
|
|
|
|
|
+│ │ │ • progress_manager.py - 进度管理器 │ │ │
|
|
|
|
|
+│ │ │ • workflow_manager.py - 工作流管理器 │ │ │
|
|
|
|
|
+│ │ │ • sse_manager.py - SSE服务器推送事件管理器 │ │ │
|
|
|
|
|
+│ │ │ • redis_duplicate_checker.py - Redis去重检查器 │ │ │
|
|
|
|
|
+│ │ │ • task_models.py - 任务模型定义 │ │ │
|
|
|
|
|
+│ │ │ • words_detect/ - 敏感词检测模块 │ │ │
|
|
|
|
|
+│ │ └─────────────────────────────────────────────────────────────────────────┘ │ │
|
|
|
|
|
+│ └───────────────────────────────────────────────────────────────────────────────┘ │
|
|
|
|
|
+│ ▲ │
|
|
|
|
|
+│ │ 调用基础设施 │
|
|
|
|
|
+│ ▼ │
|
|
|
|
|
+│ ┌───────────────────────────────────────────────────────────────────────────────┐ │
|
|
|
|
|
+│ │ Foundation Layer (基础设施层) │ │
|
|
|
|
|
+│ │ ┌─────────────────────────────────────────────────────────────────────────┐ │ │
|
|
|
|
|
+│ │ │ ai/ - AI模块 ✅ (已实现) │ │ │
|
|
|
|
|
+│ │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │
|
|
|
|
|
+│ │ │ │ agent/ - AI智能体 │ │ │ │
|
|
|
|
|
+│ │ │ │ • base_agent.py - 智能体基类 │ │ │ │
|
|
|
|
|
+│ │ │ │ • test_agent.py - 测试智能体 │ │ │ │
|
|
|
|
|
+│ │ │ │ • generate/ - 生成模块 │ │ │ │
|
|
|
|
|
+│ │ │ │ • workflow/ - 工作流模块 │ │ │ │
|
|
|
|
|
+│ │ │ └─────────────────────────────────────────────────────────────────┘ │ │ │
|
|
|
|
|
+│ │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │
|
|
|
|
|
+│ │ │ │ models/ - 模型管理 │ │ │ │
|
|
|
|
|
+│ │ │ │ • model_handler.py - 多模型管理器 │ │ │ │
|
|
|
|
|
+│ │ │ │ • rerank_model.py - 重排序模型 │ │ │ │
|
|
|
|
|
+│ │ │ └─────────────────────────────────────────────────────────────────┘ │ │ │
|
|
|
|
|
+│ │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │
|
|
|
|
|
+│ │ │ │ rag/ - RAG检索增强生成 │ │ │ │
|
|
|
|
|
+│ │ │ │ • retrieval/ - 检索模块 │ │ │ │
|
|
|
|
|
+│ │ │ │ • query_rewrite.py - 查询重写 │ │ │ │
|
|
|
|
|
+│ │ │ │ • entities_enhance.py - 实体增强检索 │ │ │ │
|
|
|
|
|
+│ │ │ └─────────────────────────────────────────────────────────────────┘ │ │ │
|
|
|
|
|
+│ │ └─────────────────────────────────────────────────────────────────────────┘ │ │
|
|
|
|
|
+│ │ ┌─────────────────────────────────────────────────────────────────────────┐ │ │
|
|
|
|
|
+│ │ │ database/ - 数据库模块 ✅ (已实现) │ │ │
|
|
|
|
|
+│ │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │
|
|
|
|
|
+│ │ │ │ base/ - 数据库基础层 │ │ │ │
|
|
|
|
|
+│ │ │ │ • kg/ - 知识图谱 (Neo4j) │ │ │ │
|
|
|
|
|
+│ │ │ │ • sql/ - SQL数据库 (MySQL/PostgreSQL) │ │ │ │
|
|
|
|
|
+│ │ │ │ • vector/ - 向量数据库 (Milvus/PG Vector) │ │ │ │
|
|
|
|
|
+│ │ │ └─────────────────────────────────────────────────────────────────┘ │ │ │
|
|
|
|
|
+│ │ │ • models/ - 数据模型定义 │ │ │
|
|
|
|
|
+│ │ │ • repositories/ - 数据访问层 │ │ │
|
|
|
|
|
+│ │ │ • migrations/ - 数据库迁移 │ │ │
|
|
|
|
|
+│ │ └─────────────────────────────────────────────────────────────────────────┘ │ │
|
|
|
|
|
+│ │ ┌─────────────────────────────────────────────────────────────────────────┐ │ │
|
|
|
|
|
+│ │ │ infrastructure/ - 基础设施 ✅ (已实现) │ │ │
|
|
|
|
|
+│ │ │ • cache/ - 缓存管理 (Redis) │ │ │
|
|
|
|
|
+│ │ │ • config/ - 配置管理 (config_handler) │ │ │
|
|
|
|
|
+│ │ │ • messaging/ - 消息队列 (Celery) │ │ │
|
|
|
|
|
+│ │ │ • mysql/ - MySQL连接池 │ │ │
|
|
|
|
|
+│ │ │ • tracing/ - 链路追踪 │ │ │
|
|
|
|
|
+│ │ └─────────────────────────────────────────────────────────────────────────┘ │ │
|
|
|
|
|
+│ │ ┌─────────────────────────────────────────────────────────────────────────┐ │ │
|
|
|
|
|
+│ │ │ observability/ - 可观测性 ✅ (已实现) │ │ │
|
|
|
|
|
+│ │ │ • logger/ - 日志管理 │ │ │
|
|
|
|
|
+│ │ │ • metrics/ - 指标收集 │ │ │
|
|
|
|
|
+│ │ │ • monitoring/ - 监控 (ai_trace_monitor.py, time_statistics.py) │ │ │
|
|
|
|
|
+│ │ │ • monitoring/rag/ - RAG监控 🆕 │ │ │
|
|
|
|
|
+│ │ │ • cachefiles/ - 缓存文件管理 🆕 │ │ │
|
|
|
|
|
+│ │ └─────────────────────────────────────────────────────────────────────────┘ │ │
|
|
|
|
|
+│ │ ┌─────────────────────────────────────────────────────────────────────────┐ │ │
|
|
|
|
|
+│ │ │ schemas/ - 数据模式 ✅ (已实现) │ │ │
|
|
|
|
|
+│ │ │ utils/ - 工具函数 ✅ (已实现) │ │ │
|
|
|
|
|
+│ │ │ • common.py, redis_utils.py, yaml_utils.py, tool_utils.py │ │ │
|
|
|
|
|
+│ │ │ • md5.py - MD5工具 🆕 │ │ │
|
|
|
|
|
+│ │ └─────────────────────────────────────────────────────────────────────────┘ │ │
|
|
|
|
|
+│ └───────────────────────────────────────────────────────────────────────────────┘ │
|
|
|
|
|
+│ ▲ │
|
|
|
|
|
+│ │ 数据处理 │
|
|
|
|
|
+│ ▼ │
|
|
|
|
|
+│ ┌───────────────────────────────────────────────────────────────────────────────┐ │
|
|
|
|
|
+│ │ Data Pipeline Layer (数据管道层) │ │
|
|
|
|
|
+│ │ ┌─────────────────────────────────────────────────────────────────────────┐ │ │
|
|
|
|
|
+│ │ │ document/ - 文档处理 ✅ (部分实现) │ │ │
|
|
|
|
|
+│ │ │ • parsers/ - 文档解析器 (PDF, DOCX, OCR) │ │ │
|
|
|
|
|
+│ │ │ • processors/ - 数据处理器 │ │ │
|
|
|
|
|
+│ │ └─────────────────────────────────────────────────────────────────────────┘ │ │
|
|
|
|
|
+│ │ ┌─────────────────────────────────────────────────────────────────────────┐ │ │
|
|
|
|
|
+│ │ │ RAG_recall/ - RAG检索 ✅ (已实现) │ │ │
|
|
|
|
|
+│ │ │ • rag_miluvs/ - Milvus RAG实现 │ │ │
|
|
|
|
|
+│ │ └─────────────────────────────────────────────────────────────────────────┘ │ │
|
|
|
|
|
+│ │ ┌─────────────────────────────────────────────────────────────────────────┐ │ │
|
|
|
|
|
+│ │ │ milvus_inbound_script/ - Milvus入库脚本 │ │ │
|
|
|
|
|
+│ │ │ training_data/ - 训练数据处理 │ │ │
|
|
|
|
|
+│ │ └─────────────────────────────────────────────────────────────────────────┘ │ │
|
|
|
|
|
+│ └───────────────────────────────────────────────────────────────────────────────┘ │
|
|
|
|
|
+│ ▲ │
|
|
|
|
|
+│ │ 数据存储 │
|
|
|
|
|
+│ ▼ │
|
|
|
|
|
+│ ┌───────────────────────────────────────────────────────────────────────────────┐ │
|
|
|
|
|
+│ │ External Services (外部服务) │ │
|
|
|
|
|
+│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
|
|
|
|
|
+│ │ │ MySQL │ │ Milvus │ │ Redis │ │ Neo4j │ │ │
|
|
|
|
|
+│ │ │ 关系数据库 │ │ 向量数据库 │ │ 缓存 │ │ 知识图谱 │ │ │
|
|
|
|
|
+│ │ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │ │
|
|
|
|
|
+│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
|
|
|
|
|
+│ │ │ AI Models │ │ MinerU │ │ Langfuse │ │ │
|
|
|
|
|
+│ │ │ 本地/云端 │ │ OCR服务 │ │ 监控系统 │ │ │
|
|
|
|
|
+│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
|
|
|
|
|
+│ └───────────────────────────────────────────────────────────────────────────────┘ │
|
|
|
|
|
+│ │
|
|
|
|
|
+└─────────────────────────────────────────────────────────────────────────────────────┘
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 实际目录结构
|
|
|
|
|
+
|
|
|
|
|
+```
|
|
|
|
|
+LQAgentPlatform/
|
|
|
|
|
+├── server/ # 服务器层 ✅
|
|
|
|
|
+│ └── app.py # FastAPI应用入口
|
|
|
|
|
+│
|
|
|
|
|
+├── views/ # 视图层 (API接口) ✅
|
|
|
|
|
+│ ├── __init__.py # Lifespan管理(敏感词初始化、DB连接池)
|
|
|
|
|
+│ ├── construction_review/ # 施工方案审查API ✅
|
|
|
|
|
+│ │ ├── file_upload.py # 文档上传接口
|
|
|
|
|
+│ │ ├── launch_review.py # 启动审查接口
|
|
|
|
|
+│ │ ├── review_results.py # 审查结果接口
|
|
|
|
|
+│ │ ├── task_control.py # 任务控制接口
|
|
|
|
|
+│ │ ├── desensitize_api.py # 脱敏API接口 🆕
|
|
|
|
|
+│ │ └── schemas/
|
|
|
|
|
+│ │ └── error_schemas.py # 错误模式定义
|
|
|
|
|
+│ ├── construction_write/ # 施工方案编写API ✅ 🆕
|
|
|
|
|
+│ │ ├── outline_views.py # 大纲生成接口
|
|
|
|
|
+│ │ ├── content_completion.py # 内容补全接口
|
|
|
|
|
+│ │ ├── regenerate_views.py # 重新生成接口
|
|
|
|
|
+│ │ ├── task_cancel_views.py # 任务取消接口
|
|
|
|
|
+│ │ └── similar_plan_recommend.py # 相似方案推荐接口
|
|
|
|
|
+│ └── test_views.py # 测试接口
|
|
|
|
|
+│
|
|
|
|
|
+├── core/ # 核心业务层 ✅
|
|
|
|
|
+│ ├── base/ # 基础组件 ✅
|
|
|
|
|
+│ │ ├── progress_manager.py # 进度管理器
|
|
|
|
|
+│ │ ├── workflow_manager.py # 工作流管理器
|
|
|
|
|
+│ │ ├── sse_manager.py # SSE推送管理
|
|
|
|
|
+│ │ ├── redis_duplicate_checker.py # Redis去重
|
|
|
|
|
+│ │ ├── task_models.py # 任务模型
|
|
|
|
|
+│ │ └── words_detect/ # 敏感词检测
|
|
|
|
|
+│ │
|
|
|
|
|
+│ ├── construction_review/ # 施工方案审查模块 ✅
|
|
|
|
|
+│ │ ├── workflows/ # 工作流层 ✅
|
|
|
|
|
+│ │ │ ├── ai_review_workflow.py # AI审查工作流 (核心)
|
|
|
|
|
+│ │ │ ├── document_workflow.py # 文档工作流
|
|
|
|
|
+│ │ │ ├── report_workflow.py # 报告工作流
|
|
|
|
|
+│ │ │ ├── core_functions/ # 核心业务函数 🆕
|
|
|
|
|
+│ │ │ │ └── ai_review_core_fun.py # AI审查核心逻辑
|
|
|
|
|
+│ │ │ └── types/ # 状态类型 🆕
|
|
|
|
|
+│ │ │ └── __init__.py # AIReviewState, TaskChainState
|
|
|
|
|
+│ │ │
|
|
|
|
|
+│ │ └── component/ # 组件层 ✅
|
|
|
|
|
+│ │ ├── ai_review_engine.py # AI审查引擎 (核心)
|
|
|
|
|
+│ │ ├── document_processor.py # 文档处理器
|
|
|
|
|
+│ │ ├── report_generator.py # 报告生成器
|
|
|
|
|
+│ │ ├── outline_catalogue_matcher.py # 大纲目录匹配器 🆕
|
|
|
|
|
+│ │ ├── constants.py # 常量定义 🆕
|
|
|
|
|
+│ │ │
|
|
|
|
|
+│ │ ├── desensitize/ # 数据脱敏模块 🆕
|
|
|
|
|
+│ │ │ ├── engine.py # 脱敏引擎核心
|
|
|
|
|
+│ │ │ ├── validator.py # 黑白名单校验
|
|
|
|
|
+│ │ │ ├── dict_manager.py # 脱敏词典管理
|
|
|
|
|
+│ │ │ ├── model_client.py # 本地LLM脱敏客户端
|
|
|
|
|
+│ │ │ ├── remapper.py # 审查结果反向映射
|
|
|
|
|
+│ │ │ └── processors/ # 四维度处理器
|
|
|
|
|
+│ │ │ ├── base_processor.py # 基础处理器
|
|
|
|
|
+│ │ │ ├── pii_processor.py # 个人信息 (姓名/电话/身份证)
|
|
|
|
|
+│ │ │ ├── geo_processor.py # 地理位置 (桩号/位置/高程)
|
|
|
|
|
+│ │ │ ├── biz_processor.py # 业务信息 (公司/项目名称)
|
|
|
|
|
+│ │ │ └── financial_processor.py # 财务信息 (金额/价格)
|
|
|
|
|
+│ │ │
|
|
|
|
|
+│ │ ├── doc_worker/ # 文档处理工作器
|
|
|
|
|
+│ │ │ ├── interfaces.py # 数据接口/契约
|
|
|
|
|
+│ │ │ ├── classification/ # 内容分类 🆕
|
|
|
|
|
+│ │ │ │ ├── chunk_classifier.py # 分块分类器
|
|
|
|
|
+│ │ │ │ ├── hierarchy_classifier.py # 层级分类器
|
|
|
|
|
+│ │ │ │ └── smart_local_classifier.py # 智能本地分类
|
|
|
|
|
+│ │ │ ├── pdf_worker/ # PDF处理 🆕
|
|
|
|
|
+│ │ │ │ └── html_to_markdown.py # HTML转Markdown
|
|
|
|
|
+│ │ │ ├── config/ # 配置
|
|
|
|
|
+│ │ │ │ ├── StandardCategoryTable.csv # 分类标准表
|
|
|
|
|
+│ │ │ │ ├── prompt.yaml # LLM提示词
|
|
|
|
|
+│ │ │ │ └── config.yaml
|
|
|
|
|
+│ │ │ ├── models/ # 数据模型
|
|
|
|
|
+│ │ │ │ ├── document_structure.py # 文档结构模型
|
|
|
|
|
+│ │ │ │ └── converters.py # 模型转换器
|
|
|
|
|
+│ │ │ └── utils/
|
|
|
|
|
+│ │ │ ├── text_split_support.py # 文本切分支持
|
|
|
|
|
+│ │ │ └── prompt_loader.py # 提示词加载
|
|
|
|
|
+│ │ │
|
|
|
|
|
+│ │ ├── minimal_pipeline/ # 简化处理管道 🆕
|
|
|
|
|
+│ │ │ ├── simple_processor.py # 简化处理器
|
|
|
|
|
+│ │ │ ├── ocr_processor.py # OCR处理(解耦模块)
|
|
|
|
|
+│ │ │ ├── pdf_extractor.py # PDF提取
|
|
|
|
|
+│ │ │ ├── chunk_assembler.py # 分块组装器
|
|
|
|
|
+│ │ │ ├── catalog_reviewer.py # 目录审查
|
|
|
|
|
+│ │ │ ├── toc_builder.py # 目录构建器
|
|
|
|
|
+│ │ │ └── toc_detector.py # 目录检测器
|
|
|
|
|
+│ │ │
|
|
|
|
|
+│ │ ├── standard_matching/ # 标准匹配模块 🆕
|
|
|
|
|
+│ │ │ ├── standard_dao.py # 标准数据访问
|
|
|
|
|
+│ │ │ └── standard_service.py # 标准匹配服务
|
|
|
|
|
+│ │ │
|
|
|
|
|
+│ │ ├── infrastructure/ # 基础设施组件
|
|
|
|
|
+│ │ │ ├── milvus.py # Milvus向量库客户端
|
|
|
|
|
+│ │ │ ├── parent_tool.py # 父块工具
|
|
|
|
|
+│ │ │ └── relevance.py # 相关性评分
|
|
|
|
|
+│ │ │
|
|
|
|
|
+│ │ ├── check_completeness/ # 完整性检查
|
|
|
|
|
+│ │ │ └── components/
|
|
|
|
|
+│ │ │ └── result_analyzer.py # 结果分析器
|
|
|
|
|
+│ │ │
|
|
|
|
|
+│ │ ├── report/ # 报告生成
|
|
|
|
|
+│ │ │ └── prompt/
|
|
|
|
|
+│ │ │ └── report_reviewers.yaml
|
|
|
|
|
+│ │ │
|
|
|
|
|
+│ │ └── reviewers/ # 审查器集合 ✅
|
|
|
|
|
+│ │ ├── base_reviewer.py # 基础审查器
|
|
|
|
|
+│ │ ├── completeness_reviewer.py # 完整性审查器
|
|
|
|
|
+│ │ ├── reference_basis_reviewer.py # 参考依据审查
|
|
|
|
|
+│ │ ├── standard_timeliness_reviewer.py # 标准时效性审查 🆕
|
|
|
|
|
+│ │ ├── timeliness_basis_reviewer.py # 时效性审查
|
|
|
|
|
+│ │ ├── timeliness_content_reviewer.py # 时效性内容审查 🆕
|
|
|
|
|
+│ │ ├── semantic_logic.py # 语义逻辑审查
|
|
|
|
|
+│ │ ├── sensitive_word_check.py # 敏感词检查 🆕
|
|
|
|
|
+│ │ ├── check_completeness/
|
|
|
|
|
+│ │ │ └── components/
|
|
|
|
|
+│ │ │ └── result_analyzer.py
|
|
|
|
|
+│ │ ├── prompt/ # 审查器提示词
|
|
|
|
|
+│ │ │ ├── ai_suggestion.yaml
|
|
|
|
|
+│ │ │ ├── basic_reviewers.yaml
|
|
|
|
|
+│ │ │ ├── outline_reviewers.yaml
|
|
|
|
|
+│ │ │ ├── query_extract.yaml
|
|
|
|
|
+│ │ │ ├── rag_reviewers.yaml
|
|
|
|
|
+│ │ │ ├── reference_basis_reviewer.yaml
|
|
|
|
|
+│ │ │ ├── technical_reviewers.yaml
|
|
|
|
|
+│ │ │ └── timeliness_basis_reviewer.yaml
|
|
|
|
|
+│ │ ├── sensitive_words/ # 敏感词词典
|
|
|
|
|
+│ │ └── utils/ # 审查工具函数
|
|
|
|
|
+│ │ ├── ac_automaton.py # AC自动机
|
|
|
|
|
+│ │ ├── directory_extraction.py
|
|
|
|
|
+│ │ ├── llm_content_classifier_v2/ # LLM分类器v2 🆕
|
|
|
|
|
+│ │ │ ├── main_classifier.py # 主入口
|
|
|
|
|
+│ │ │ ├── content_classifier.py # 核心分类逻辑
|
|
|
|
|
+│ │ │ ├── category_loaders.py # 分类加载器
|
|
|
|
|
+│ │ │ ├── chunks_converter.py # 分块转换
|
|
|
|
|
+│ │ │ ├── models.py # 数据模型
|
|
|
|
|
+│ │ │ ├── prompt.py # 分类提示词
|
|
|
|
|
+│ │ │ └── embedding_client.py # Embedding客户端
|
|
|
|
|
+│ │ └── llm_chain_client/ # LLM链式客户端框架 🆕
|
|
|
|
|
+│ │ ├── bootstrap.py # 客户端工厂
|
|
|
|
|
+│ │ ├── interfaces/ # 接口定义
|
|
|
|
|
+│ │ │ ├── chain_executor.py
|
|
|
|
|
+│ │ │ ├── llm_client.py
|
|
|
|
|
+│ │ │ └── prompt_loader.py
|
|
|
|
|
+│ │ ├── implementations/ # 实现
|
|
|
|
|
+│ │ │ ├── chains/async_chain_executor.py
|
|
|
|
|
+│ │ │ ├── clients/ (base, deepseek, doubao, gemini, qwen)
|
|
|
|
|
+│ │ │ └── loaders/yaml_prompt_loader.py
|
|
|
|
|
+│ │ └── orchestration/prompt_chain_processor.py
|
|
|
|
|
+│ │
|
|
|
|
|
+│ └── construction_write/ # 施工方案编写模块 ✅ 🆕
|
|
|
|
|
+│ ├── component/
|
|
|
|
|
+│ │ ├── outline_generator.py # 大纲生成器
|
|
|
|
|
+│ │ ├── state_models.py # 状态模型
|
|
|
|
|
+│ │ └── prompt/
|
|
|
|
|
+│ │ └── keyword_rules_3.json # 关键字规则
|
|
|
|
|
+│ └── workflows/
|
|
|
|
|
+│ ├── agent.py # 编写智能体
|
|
|
|
|
+│ └── outline_workflow.py # 大纲工作流
|
|
|
|
|
+│
|
|
|
|
|
+├── foundation/ # 基础设施层 ✅
|
|
|
|
|
+│ ├── ai/ # AI模块 ✅
|
|
|
|
|
+│ │ ├── agent/ # AI智能体
|
|
|
|
|
+│ │ │ └── generate/ # 生成模块
|
|
|
|
|
+│ │ │ └── model_generate.py
|
|
|
|
|
+│ │ ├── models/ # 模型管理 ✅
|
|
|
|
|
+│ │ │ ├── model_handler.py # 多模型管理器
|
|
|
|
|
+│ │ │ ├── model_config_loader.py # 模型配置加载器 🆕
|
|
|
|
|
+│ │ │ └── rerank_model.py # 重排序模型
|
|
|
|
|
+│ │ └── rag/ # RAG检索增强 ✅
|
|
|
|
|
+│ │ └── retrieval/ # 检索模块
|
|
|
|
|
+│ │ ├── query_rewrite.py # 查询重写
|
|
|
|
|
+│ │ ├── retrieval.py # 检索管理器
|
|
|
|
|
+│ │ └── entities_enhance.py # 实体增强检索
|
|
|
|
|
+│ │
|
|
|
|
|
+│ ├── database/ # 数据库模块 ✅
|
|
|
|
|
+│ │ ├── base/ # 数据库基础层
|
|
|
|
|
+│ │ │ ├── kg/ # 知识图谱 (Neo4j)
|
|
|
|
|
+│ │ │ ├── sql/ # SQL数据库 (MySQL/PostgreSQL)
|
|
|
|
|
+│ │ │ └── vector/ # 向量数据库
|
|
|
|
|
+│ │ ├── models/ # 数据模型定义 ✅
|
|
|
|
|
+│ │ ├── repositories/ # 数据访问层 ✅
|
|
|
|
|
+│ │ └── migrations/ # 数据库迁移
|
|
|
|
|
+│ │
|
|
|
|
|
+│ ├── infrastructure/ # 基础设施 ✅
|
|
|
|
|
+│ │ ├── cache/ # 缓存管理 (Redis)
|
|
|
|
|
+│ │ ├── config/ # 配置管理 ✅
|
|
|
|
|
+│ │ │ └── config.py # config_handler
|
|
|
|
|
+│ │ ├── messaging/ # 消息队列 (Celery) ✅
|
|
|
|
|
+│ │ ├── mysql/ # MySQL连接池 ✅
|
|
|
|
|
+│ │ └── tracing/ # 链路追踪 ✅
|
|
|
|
|
+│ │
|
|
|
|
|
+│ ├── observability/ # 可观测性 ✅
|
|
|
|
|
+│ │ ├── logger/ # 日志管理
|
|
|
|
|
+│ │ ├── metrics/ # 指标收集
|
|
|
|
|
+│ │ ├── monitoring/ # 监控 ✅
|
|
|
|
|
+│ │ │ ├── ai_trace_monitor.py # AI追踪监控
|
|
|
|
|
+│ │ │ ├── time_statistics.py # 时间统计
|
|
|
|
|
+│ │ │ └── rag/ # RAG监控 🆕
|
|
|
|
|
+│ │ └── cachefiles/ # 缓存文件管理 🆕
|
|
|
|
|
+│ │
|
|
|
|
|
+│ ├── schemas/ # 数据模式 ✅
|
|
|
|
|
+│ └── utils/ # 工具函数 ✅
|
|
|
|
|
+│ ├── common.py
|
|
|
|
|
+│ ├── redis_utils.py
|
|
|
|
|
+│ ├── yaml_utils.py
|
|
|
|
|
+│ ├── tool_utils.py
|
|
|
|
|
+│ └── md5.py # MD5工具 🆕
|
|
|
|
|
+│
|
|
|
|
|
+├── data_pipeline/ # 数据管道层 ✅
|
|
|
|
|
+│ ├── document/ # 文档处理
|
|
|
|
|
+│ │ ├── parsers/ # 文档解析器
|
|
|
|
|
+│ │ └── processors/ # 数据处理器
|
|
|
|
|
+│ ├── RAG_recall/ # RAG检索 ✅
|
|
|
|
|
+│ │ └── rag_miluvs/ # Milvus RAG实现
|
|
|
|
|
+│ ├── milvus_inbound_script/ # Milvus入库脚本
|
|
|
|
|
+│ └── training_data/ # 训练数据处理
|
|
|
|
|
+│
|
|
|
|
|
+├── config/ # 配置文件 ✅
|
|
|
|
|
+│ ├── config.ini # 主配置文件 (模型/数据库/Redis)
|
|
|
|
|
+│ ├── config.ini.template # 配置模板
|
|
|
|
|
+│ ├── model_setting.yaml # 模型设置 🆕
|
|
|
|
|
+│ ├── prompt/ # 提示词配置 ✅
|
|
|
|
|
+│ │ ├── system_prompt.yaml
|
|
|
|
|
+│ │ └── intent_prompt.yaml
|
|
|
|
|
+│ ├── sql/ # SQL脚本
|
|
|
|
|
+│ └── yolo/ # YOLO模型 🆕
|
|
|
|
|
+│ └── best.pt
|
|
|
|
|
+│
|
|
|
|
|
+├── utils_test/ # 测试工具集
|
|
|
|
|
+│ ├── AI_Review_Test/ # AI审查测试
|
|
|
|
|
+│ ├── API_key/ # API密钥生成 🆕
|
|
|
|
|
+│ ├── Check_Item/ # 审查项测试 🆕
|
|
|
|
|
+│ ├── Chunk_Split_Test/ # 分块切分测试 🆕
|
|
|
|
|
+│ ├── Completeness_Enhanced_Test/ # 增强完整性测试 🆕
|
|
|
|
|
+│ ├── Completeness_Test/ # 完整性测试 🆕
|
|
|
|
|
+│ ├── Integration_Test/ # 集成测试
|
|
|
|
|
+│ ├── Milvus_Test/ # Milvus测试
|
|
|
|
|
+│ ├── MinerU_Test/ # MinerU测试
|
|
|
|
|
+│ ├── Model_Test/ # 模型测试
|
|
|
|
|
+│ ├── Other_Test/ # 其他测试 🆕
|
|
|
|
|
+│ ├── Prompt_Test/ # 提示词测试 🆕
|
|
|
|
|
+│ ├── RAG_Test/ # RAG测试 🆕
|
|
|
|
|
+│ ├── RE_Rrank_Test/ # 重排序测试 🆕
|
|
|
|
|
+│ ├── Redis/ # Redis哨兵测试 🆕
|
|
|
|
|
+│ ├── Redis_Test/ # Redis测试
|
|
|
|
|
+│ ├── Result_Visual_Observation_Tools/ # 结果可视化 🆕
|
|
|
|
|
+│ ├── Semantic_Logic_Test/ # 语义逻辑测试
|
|
|
|
|
+│ ├── Sensitive_Test/ # 敏感词测试
|
|
|
|
|
+│ ├── standard_new_Test/ # 新标准测试 🆕
|
|
|
|
|
+│ └── Sync_Funcation_Test/ # 同步函数测试
|
|
|
|
|
+│
|
|
|
|
|
+├── docker/ # Docker配置
|
|
|
|
|
+├── .design/ # 设计文档
|
|
|
|
|
+│ ├── 施工方案编写应用/ # 编写应用设计 🆕
|
|
|
|
|
+│ └── 施工方案审查应用/ # 审查应用设计
|
|
|
|
|
+│ ├── base_stage/ # 基础阶段设计
|
|
|
|
|
+│ ├── Iterative_stage/ # 迭代阶段设计
|
|
|
|
|
+│ ├── technical_rehearsal/ # 技术预演
|
|
|
|
|
+│ ├── 基础架构设计/ # 架构设计
|
|
|
|
|
+│ ├── 施工方案审查API架构设计/ # API架构设计
|
|
|
|
|
+│ ├── 完整性审查模块/ # 完整性审查设计
|
|
|
|
|
+│ └── 文档处理模块/ # 文档处理设计
|
|
|
|
|
+│
|
|
|
|
|
+├── .RaD/ # 研发文档 🆕
|
|
|
|
|
+│
|
|
|
|
|
+├── logs/ # 日志目录
|
|
|
|
|
+├── README.md # 项目说明
|
|
|
|
|
+├── README_deploy.md # 部署说明 🆕
|
|
|
|
|
+├── README_test.md # 测试说明 🆕
|
|
|
|
|
+├── requirements.txt # 依赖清单
|
|
|
|
|
+├── gunicorn_config.py # Gunicorn配置
|
|
|
|
|
+├── run.sh # 启动脚本
|
|
|
|
|
+└── Dockerfile # Docker镜像
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 技术栈清单
|
|
|
|
|
+
|
|
|
|
|
+### Web框架
|
|
|
|
|
+- **FastAPI** - 现代化异步Web框架
|
|
|
|
|
+- **Uvicorn** - ASGI服务器
|
|
|
|
|
+
|
|
|
|
|
+### AI框架
|
|
|
|
|
+- **LangChain** - LLM应用开发框架
|
|
|
|
|
+- **LangGraph** - 工作流编排引擎
|
|
|
|
|
+
|
|
|
|
|
+### 数据库
|
|
|
|
|
+- **MySQL** - 关系型数据库 (主存储) (保留基础组件,暂未使用)
|
|
|
|
|
+- **Milvus** - 向量数据库 (RAG检索)
|
|
|
|
|
+- **PostgreSQL** - 备选关系型数据库(保留基础组件,暂未使用)
|
|
|
|
|
+- **Neo4j** - 知识图谱数据库(保留基础组件,暂未使用)
|
|
|
|
|
+
|
|
|
|
|
+### 缓存/消息队列
|
|
|
|
|
+- **Redis** - 缓存 + 分布式锁
|
|
|
|
|
+- **Celery** - 异步任务队列
|
|
|
|
|
+
|
|
|
|
|
+### 模型支持
|
|
|
|
|
+#### 本地模型
|
|
|
|
|
+- **lq_qwen3_8b** - Qwen3-8B (默认模型)
|
|
|
|
|
+- **lq_qwen3_4b** - Qwen3-4B
|
|
|
|
|
+- **lq_qwen3_8b_emd** - Qwen3-8B Embedding
|
|
|
|
|
+- **lq_rerank_model** - Qwen3-Reranker-8B
|
|
|
|
|
+
|
|
|
|
|
+#### 云端模型
|
|
|
|
|
+- **豆包 (Doubao)** - 字节跳动模型
|
|
|
|
|
+- **通义千问 (Qwen)** - 阿里云模型
|
|
|
|
|
+- **DeepSeek** - DeepSeek模型
|
|
|
|
|
+- **Gemini** - Google模型
|
|
|
|
|
+- **SiliconFlow** - 硅基流动模型
|
|
|
|
|
+
|
|
|
|
|
+### OCR服务
|
|
|
|
|
+- **MinerU** - 文档OCR识别 (集成中)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+## API接口清单
|
|
|
|
|
+
|
|
|
|
|
+### 施工方案审查API
|
|
|
|
|
+
|
|
|
|
|
+#### 文档上传
|
|
|
|
|
+- `POST /construction/upload` - 上传待审查文档
|
|
|
|
|
+
|
|
|
|
|
+#### 审查控制
|
|
|
|
|
+- `POST /sgsc/sse/launch_review` - 启动审查任务(SSE流式)
|
|
|
|
|
+- `GET /construction/review/results` - 查询审查结果
|
|
|
|
|
+
|
|
|
|
|
+#### 任务控制
|
|
|
|
|
+- `POST /construction/task/terminate` - 终止审查任务
|
|
|
|
|
+
|
|
|
|
|
+#### 数据脱敏
|
|
|
|
|
+- 脱敏API接口 (desensitize_api.py)
|
|
|
|
|
+
|
|
|
|
|
+### 施工方案编写API 🆕
|
|
|
|
|
+
|
|
|
|
|
+#### 大纲生成
|
|
|
|
|
+- 大纲生成与工作流接口 (outline_views.py)
|
|
|
|
|
+
|
|
|
|
|
+#### 内容编写
|
|
|
|
|
+- 内容补全接口 (content_completion.py)
|
|
|
|
|
+- 重新生成接口 (regenerate_views.py)
|
|
|
|
|
+- 任务取消接口 (task_cancel_views.py)
|
|
|
|
|
+
|
|
|
|
|
+#### 方案推荐
|
|
|
|
|
+- 相似方案推荐接口 (similar_plan_recommend.py)
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 数据流向图
|
|
|
|
|
+
|
|
|
|
|
+```
|
|
|
|
|
+┌──────────────┐
|
|
|
|
|
+│ 用户上传文档 │
|
|
|
|
|
+└──────┬───────┘
|
|
|
|
|
+ ▼
|
|
|
|
|
+┌──────────────────────────────────────────────────────────────┐
|
|
|
|
|
+│ Views Layer (file_upload.py) │
|
|
|
|
|
+│ • 接收文件 │
|
|
|
|
|
+│ • 文件验证 │
|
|
|
|
|
+│ • 创建任务 │
|
|
|
|
|
+└──────┬───────────────────────────────────────────────────────┘
|
|
|
|
|
+ ▼
|
|
|
|
|
+┌──────────────────────────────────────────────────────────────┐
|
|
|
|
|
+│ Core Layer - Document Workflow │
|
|
|
|
|
+│ • 文档解析 (PDF/DOCX) │
|
|
|
|
|
+│ • 结构提取 │
|
|
|
|
|
+│ • 分块处理 │
|
|
|
|
|
+└──────┬───────────────────────────────────────────────────────┘
|
|
|
|
|
+ ▼
|
|
|
|
|
+┌──────────────────────────────────────────────────────────────┐
|
|
|
|
|
+│ Database Layer │
|
|
|
|
|
+│ • Redis - 存储文档元数据 │
|
|
|
|
|
+│ • Milvus - 向量存储 │
|
|
|
|
|
+└──────┬───────────────────────────────────────────────────────┘
|
|
|
|
|
+ ▼
|
|
|
|
|
+┌──────────────────────────────────────────────────────────────┐
|
|
|
|
|
+│ Core Layer - AI Review Workflow │
|
|
|
|
|
+│ • AI审查引擎 (construction_review/ai_review_engine.py) │
|
|
|
|
|
+│ • 多种审查器并行执行 │
|
|
|
|
|
+│ • RAG检索增强 │
|
|
|
|
|
+└──────┬───────────────────────────────────────────────────────┘
|
|
|
|
|
+ ▼
|
|
|
|
|
+┌──────────────────────────────────────────────────────────────┐
|
|
|
|
|
+│ Foundation Layer - AI模块 │
|
|
|
|
|
+│ • 模型调用 (model_handler.py) │
|
|
|
|
|
+│ • RAG检索 (retrieval/) │
|
|
|
|
|
+│ • 查询重写 │
|
|
|
|
|
+└──────┬───────────────────────────────────────────────────────┘
|
|
|
|
|
+ ▼
|
|
|
|
|
+┌──────────────────────────────────────────────────────────────┐
|
|
|
|
|
+│ External Services │
|
|
|
|
|
+│ • AI模型 (本地/云端) │
|
|
|
|
|
+│ • Milvus向量检索 │
|
|
|
|
|
+│ • Redis缓存 │
|
|
|
|
|
+└──────┬───────────────────────────────────────────────────────┘
|
|
|
|
|
+ ▼
|
|
|
|
|
+┌──────────────────────────────────────────────────────────────┐
|
|
|
|
|
+│ 结果处理 │
|
|
|
|
|
+│ • 报告生成 (report_generator.py) │
|
|
|
|
|
+│ • SSE推送进度 │
|
|
|
|
|
+│ • 结果存储 │
|
|
|
|
|
+└──────┬───────────────────────────────────────────────────────┘
|
|
|
|
|
+ ▼
|
|
|
|
|
+┌──────────────────┐
|
|
|
|
|
+│ 返回审查结果 │
|
|
|
|
|
+└──────────────────┘
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 各层职责说明
|
|
|
|
|
+
|
|
|
|
|
+### 1. Server Layer (服务器层)
|
|
|
|
|
+**职责**: FastAPI应用管理、路由配置、Celery任务管理
|
|
|
|
|
+**实现**:
|
|
|
|
|
+- `RouteManager` - 路由配置和中间件
|
|
|
|
|
+- `CeleryWorkerManager` - Celery Worker生命周期管理
|
|
|
|
|
+- `ApplicationFactory` - 应用工厂模式
|
|
|
|
|
+
|
|
|
|
|
+### 2. Views Layer (视图层)
|
|
|
|
|
+**职责**: HTTP API接口、请求处理、响应格式化
|
|
|
|
|
+**实现**:
|
|
|
|
|
+- **construction_review/** - 审查API (上传、审查启动、结果查询、任务控制、脱敏)
|
|
|
|
|
+- **construction_write/** 🆕 - 编写API (大纲生成、内容补全、重新生成、方案推荐)
|
|
|
|
|
+
|
|
|
|
|
+### 3. Core Layer (核心业务层)
|
|
|
|
|
+**职责**: 业务逻辑编排、应用状态管理、工作流协调
|
|
|
|
|
+**实现**:
|
|
|
|
|
+- **construction_review/** - 施工方案审查模块
|
|
|
|
|
+ - **workflows/** - 基于LangGraph的工作流编排
|
|
|
|
|
+ - **workflows/core_functions/** 🆕 - AI审查核心业务函数
|
|
|
|
|
+ - **workflows/types/** 🆕 - 状态类型定义 (AIReviewState, TaskChainState)
|
|
|
|
|
+ - **component/** - 可复用的业务组件
|
|
|
|
|
+ - **component/desensitize/** 🆕 - 四维度数据脱敏 (PII/地理/业务/财务)
|
|
|
|
|
+ - **component/minimal_pipeline/** 🆕 - 简化处理管道 (PDF提取/OCR/目录)
|
|
|
|
|
+ - **component/standard_matching/** 🆕 - 标准规范匹配服务
|
|
|
|
|
+ - **component/doc_worker/classification/** 🆕 - 智能内容分类 (分块/层级/本地)
|
|
|
|
|
+ - **component/reviewers/** - 专门化的审查器集合
|
|
|
|
|
+ - **component/reviewers/utils/llm_content_classifier_v2/** 🆕 - LLM驱动的内容分类器
|
|
|
|
|
+ - **component/reviewers/utils/llm_chain_client/** 🆕 - 多厂商LLM链式调用框架
|
|
|
|
|
+- **construction_write/** 🆕 - 施工方案编写模块
|
|
|
|
|
+ - **component/** - 大纲生成器、状态模型
|
|
|
|
|
+ - **workflows/** - 编写智能体、大纲工作流
|
|
|
|
|
+
|
|
|
|
|
+### 4. Foundation Layer (基础设施层-办公应用智能体可复用的基础组件)
|
|
|
|
|
+**职责**: 基础设施、通用组件、外部服务集成
|
|
|
|
|
+**实现**:
|
|
|
|
|
+- **ai/** - AI模型管理、RAG检索
|
|
|
|
|
+- **database/** - 多数据库支持
|
|
|
|
|
+- **infrastructure/** - 缓存、配置、消息队列
|
|
|
|
|
+- **observability/** - 日志、监控、指标
|
|
|
|
|
+
|
|
|
|
|
+### 5. Data Pipeline Layer (离线数据管道层,不与在线流程集成)
|
|
|
|
|
+**职责**: 数据处理、格式转换、内容解析
|
|
|
|
|
+**实现**: 文档解析器、数据处理器、向量入库
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 配置管理结构
|
|
|
|
|
+
|
|
|
|
|
+### config.ini 主要配置项
|
|
|
|
|
+
|
|
|
|
|
+```ini
|
|
|
|
|
+见源代码中的config/config.ini
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 系统启动流程详解
|
|
|
|
|
+
|
|
|
|
|
+### 1. 应用启动入口 (server/app.py)
|
|
|
|
|
+
|
|
|
|
|
+#### 启动类架构
|
|
|
|
|
+```
|
|
|
|
|
+ApplicationFactory (应用工厂)
|
|
|
|
|
+├── create_app() # 创建FastAPI应用实例
|
|
|
|
|
+├── create_server_config() # 创建服务器配置
|
|
|
|
|
+└── celery_manager # CeleryWorkerManager实例
|
|
|
|
|
+
|
|
|
|
|
+RouteManager (路由管理器)
|
|
|
|
|
+├── _setup_cors() # 配置CORS中间件
|
|
|
|
|
+├── _setup_routes() # 配置所有路由
|
|
|
|
|
+├── _setup_exception_handlers() # 全局异常处理
|
|
|
|
|
+├── _setup_health_checks() # 健康检查接口
|
|
|
|
|
+└── _setup_api_docs() # Swagger API文档
|
|
|
|
|
+
|
|
|
|
|
+CeleryWorkerManager (Celery Worker管理器)
|
|
|
|
|
+├── start_worker() # 启动Celery Worker(后台线程)
|
|
|
|
|
+├── stop_worker() # 优雅停止Worker
|
|
|
|
|
+├── stop_worker_immediately() # 立即停止Worker
|
|
|
|
|
+└── _cleanup_redis_tasks() # 清理Redis任务
|
|
|
|
|
+
|
|
|
|
|
+ServerRunner (服务器运行器)
|
|
|
|
|
+└── run_server() # 运行Uvicorn服务器
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+#### 启动流程
|
|
|
|
|
+```
|
|
|
|
|
+1. python server/app.py (主入口)
|
|
|
|
|
+ ↓
|
|
|
|
|
+2. 创建ApplicationFactory实例
|
|
|
|
|
+ ↓
|
|
|
|
|
+3. 初始化RouteManager配置路由
|
|
|
|
|
+ - 添加CORS中间件
|
|
|
|
|
+ - 注册所有API路由
|
|
|
|
|
+ - 配置全局异常处理
|
|
|
|
|
+ - 设置健康检查接口
|
|
|
|
|
+ ↓
|
|
|
|
|
+4. 启动CeleryWorkerManager(后台线程)
|
|
|
|
|
+ - 清理Redis残留任务
|
|
|
|
|
+ - 在独立线程中运行celery_app.worker_main(['worker'])
|
|
|
|
|
+ - 等待2秒确保启动成功
|
|
|
|
|
+ ↓
|
|
|
|
|
+5. 配置信号处理器
|
|
|
|
|
+ - SIGINT (Ctrl+C)
|
|
|
|
|
+ - SIGTERM (终止信号)
|
|
|
|
|
+ - Windows控制台事件(Ctrl_CLOSE_EVENT等)
|
|
|
|
|
+ ↓
|
|
|
|
|
+6. 启动Uvicorn服务器
|
|
|
|
|
+ - host: 0.0.0.0 (可配置)
|
|
|
|
|
+ - port: 8002 (可配置)
|
|
|
|
|
+ - 加载FastAPI应用
|
|
|
|
|
+ ↓
|
|
|
|
|
+7. 服务运行中...
|
|
|
|
|
+ ↓
|
|
|
|
|
+8. 收到停止信号时
|
|
|
|
|
+ - 停止Celery Worker
|
|
|
|
|
+ - 清理Redis任务
|
|
|
|
|
+ - 关闭事件循环
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+#### 关键配置项
|
|
|
|
|
+```ini
|
|
|
|
|
+[launch]
|
|
|
|
|
+HOST = 0.0.0.0 # 监听地址
|
|
|
|
|
+LAUNCH_PORT = 8002 # 监听端口
|
|
|
|
|
+
|
|
|
|
|
+[redis]
|
|
|
|
|
+REDIS_HOST=127.0.0.1 # Redis主机
|
|
|
|
|
+REDIS_PORT=6379 # Redis端口
|
|
|
|
|
+REDIS_DB=0 # Redis数据库
|
|
|
|
|
+REDIS_PASSWORD=123456 # Redis密码
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 任务提交流程详解
|
|
|
|
|
+
|
|
|
|
|
+### 1. 完整任务流程架构
|
|
|
|
|
+
|
|
|
|
|
+```
|
|
|
|
|
+┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
|
|
|
+│ 任务提交与执行完整流程 │
|
|
|
|
|
+└─────────────────────────────────────────────────────────────────────────────────┘
|
|
|
|
|
+
|
|
|
|
|
+┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
|
|
|
+│ 步骤1: 文件上传 (views/construction_review/file_upload.py) │
|
|
|
|
|
+│ POST /construction/upload │
|
|
|
|
|
+│ • 接收PDF文件上传 │
|
|
|
|
|
+│ • 生成file_id和callback_task_id │
|
|
|
|
|
+│ • 保存文件内容到Redis │
|
|
|
|
|
+│ • 返回callback_task_id给前端 │
|
|
|
|
|
+└─────────────────────────────────────────────────────────────────────────────────┘
|
|
|
|
|
+ ↓
|
|
|
|
|
+┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
|
|
|
+│ 步骤2: 启动审查 (views/construction_review/launch_review.py) │
|
|
|
|
|
+│ POST /sgsc/sse/launch_review │
|
|
|
|
|
+│ • 验证用户权限和参数 │
|
|
|
|
|
+│ • 建立SSE连接 │
|
|
|
|
|
+│ • 调用WorkflowManager.submit_task_processing() │
|
|
|
|
|
+└─────────────────────────────────────────────────────────────────────────────────┘
|
|
|
|
|
+ ↓
|
|
|
|
|
+┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
|
|
|
+│ 步骤3: 提交到Celery (core/base/workflow_manager.py) │
|
|
|
|
|
+│ WorkflowManager.submit_task_processing() │
|
|
|
|
|
+│ • 使用CeleryTraceManager提交任务 │
|
|
|
|
|
+│ • 自动传递trace_id用于链路追踪 │
|
|
|
|
|
+│ • 任务进入Redis队列 │
|
|
|
|
|
+└─────────────────────────────────────────────────────────────────────────────────┘
|
|
|
|
|
+ ↓
|
|
|
|
|
+┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
|
|
|
+│ 步骤4: Celery Worker执行 (foundation/infrastructure/messaging/tasks.py) │
|
|
|
|
|
+│ submit_task_processing_task() │
|
|
|
|
|
+│ • 从队列获取任务 │
|
|
|
|
|
+│ • 恢复trace_id上下文 │
|
|
|
|
|
+│ • 调用WorkflowManager.submit_task_processing_sync() │
|
|
|
|
|
+└─────────────────────────────────────────────────────────────────────────────────┘
|
|
|
|
|
+ ↓
|
|
|
|
|
+┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
|
|
|
+│ 步骤5: LangGraph任务链执行 (core/base/workflow_manager.py) │
|
|
|
|
|
+│ submit_task_processing_sync() │
|
|
|
|
|
+│ • 创建TaskFileInfo对象 │
|
|
|
|
|
+│ • 创建TaskChainState初始状态 │
|
|
|
|
|
+│ • 构建LangGraph任务链工作流图 │
|
|
|
|
|
+│ • 执行ainvoke()运行工作流 │
|
|
|
|
|
+└─────────────────────────────────────────────────────────────────────────────────┘
|
|
|
|
|
+ ↓
|
|
|
|
|
+┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
|
|
|
+│ LangGraph任务链工作流(方案D) │
|
|
|
|
|
+│ ┌─────────────────────────────────────────────────────────────────────────┐ │
|
|
|
|
|
+│ │ start → document_processing → ai_review_subgraph → report_generation → │ │
|
|
|
|
|
+│ │ complete │ │
|
|
|
|
|
+│ └─────────────────────────────────────────────────────────────────────────┘ │
|
|
|
|
|
+│ 每个阶段后检查终止信号: │
|
|
|
|
|
+│ - terminate: 进入终止节点 │
|
|
|
|
|
+│ - error: 进入错误处理节点 │
|
|
|
|
|
+│ - continue: 继续下一阶段 │
|
|
|
|
|
+└─────────────────────────────────────────────────────────────────────────────────┘
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 2. LangGraph任务链节点详解
|
|
|
|
|
+
|
|
|
|
|
+#### 节点1: start (任务链开始)
|
|
|
|
|
+```python
|
|
|
|
|
+async def _start_chain_node(state: TaskChainState) -> TaskChainState:
|
|
|
|
|
+ """
|
|
|
|
|
+ 初始化任务链状态
|
|
|
|
|
+ - current_stage: "start"
|
|
|
|
|
+ - overall_task_status: "processing"
|
|
|
|
|
+ - stage_status: 所有阶段初始化为"pending"
|
|
|
|
|
+ """
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+#### 节点2: document_processing (文档处理)
|
|
|
|
|
+```python
|
|
|
|
|
+async def _document_processing_node(state: TaskChainState) -> TaskChainState:
|
|
|
|
|
+ """
|
|
|
|
|
+ 执行文档处理工作流
|
|
|
|
|
+ - 检查终止信号
|
|
|
|
|
+ - 创建DocumentWorkflow实例
|
|
|
|
|
+ - 调用document_workflow.execute()
|
|
|
|
|
+ - 返回结构化内容
|
|
|
|
|
+ - stage_status["document"]: "completed"/"terminated"/"failed"
|
|
|
|
|
+ """
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+#### 节点3: ai_review_subgraph (AI审查)
|
|
|
|
|
+```python
|
|
|
|
|
+async def _ai_review_subgraph_node(state: TaskChainState) -> TaskChainState:
|
|
|
|
|
+ """
|
|
|
|
|
+ 执行AI审查工作流(嵌套子图)
|
|
|
|
|
+ - 检查终止信号
|
|
|
|
|
+ - 获取文档处理结果中的structured_content
|
|
|
|
|
+ - 创建AIReviewWorkflow实例
|
|
|
|
|
+ - 调用ai_workflow.execute()
|
|
|
|
|
+ - 返回审查结果
|
|
|
|
|
+ - stage_status["ai_review"]: "completed"/"terminated"/"failed"
|
|
|
|
|
+ """
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+#### 节点4: report_generation (报告生成)
|
|
|
|
|
+```python
|
|
|
|
|
+async def _report_generation_node(state: TaskChainState) -> TaskChainState:
|
|
|
|
|
+ """
|
|
|
|
|
+ 生成审查报告
|
|
|
|
|
+ - 检查终止信号
|
|
|
|
|
+ - 获取AI审查结果
|
|
|
|
|
+ - 创建ReportWorkflow实例
|
|
|
|
|
+ - 调用report_workflow.execute()
|
|
|
|
|
+ - 保存完整结果到文件
|
|
|
|
|
+ - stage_status["report"]: "completed"/"terminated"/"failed"
|
|
|
|
|
+ """
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+#### 节点5: complete (任务完成)
|
|
|
|
|
+```python
|
|
|
|
|
+async def _complete_chain_node(state: TaskChainState) -> TaskChainState:
|
|
|
|
|
+ """
|
|
|
|
|
+ 标记整体任务完成
|
|
|
|
|
+ - overall_task_status: "completed" ⚠️ 只有到这里才标记完成
|
|
|
|
|
+ - 清理Redis文件缓存
|
|
|
|
|
+ - 通知SSE连接
|
|
|
|
|
+ """
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+#### 节点6: error_handler (错误处理)
|
|
|
|
|
+```python
|
|
|
|
|
+async def _error_handler_chain_node(state: TaskChainState) -> TaskChainState:
|
|
|
|
|
+ """
|
|
|
|
|
+ 处理任务链错误
|
|
|
|
|
+ - overall_task_status: "failed"
|
|
|
|
|
+ - 清理Redis文件缓存
|
|
|
|
|
+ - 通知SSE连接失败状态
|
|
|
|
|
+ """
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+#### 节点7: terminate (任务终止)
|
|
|
|
|
+```python
|
|
|
|
|
+async def _terminate_chain_node(state: TaskChainState) -> TaskChainState:
|
|
|
|
|
+ """
|
|
|
|
|
+ 处理任务终止
|
|
|
|
|
+ - overall_task_status: "terminated"
|
|
|
|
|
+ - 清理Redis终止信号
|
|
|
|
|
+ - 清理Redis文件缓存
|
|
|
|
|
+ - 通知SSE连接终止状态
|
|
|
|
|
+ """
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 3. 条件边判断逻辑
|
|
|
|
|
+
|
|
|
|
|
+```python
|
|
|
|
|
+def _should_terminate_or_error_chain(state: TaskChainState) -> str:
|
|
|
|
|
+ """
|
|
|
|
|
+ 决定工作流下一步走向
|
|
|
|
|
+ 优先级:terminate > error > continue
|
|
|
|
|
+ """
|
|
|
|
|
+ # 1. 优先检查终止信号
|
|
|
|
|
+ if state.get("overall_task_status") == "terminated":
|
|
|
|
|
+ return "terminate"
|
|
|
|
|
+
|
|
|
|
|
+ # 2. 检查错误状态
|
|
|
|
|
+ if state.get("overall_task_status") == "failed" or state.get("error_message"):
|
|
|
|
|
+ return "error"
|
|
|
|
|
+
|
|
|
|
|
+ # 3. 默认继续执行
|
|
|
|
|
+ return "continue"
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 审查逻辑详解
|
|
|
|
|
+
|
|
|
|
|
+### 1. AI审查引擎架构 (core/construction_review/component/construction_review/ai_review_engine.py)
|
|
|
|
|
+
|
|
|
|
|
+```
|
|
|
|
|
+AIReviewEngine (审查引擎核心)
|
|
|
|
|
+├── 基础合规性检查
|
|
|
|
|
+│ ├── check_grammar() # 词句语法检查
|
|
|
|
|
+│ ├── check_semantic_logic() # 语义逻辑检查
|
|
|
|
|
+│ ├── check_completeness() # 完整性检查
|
|
|
|
|
+│ ├── check_timeliness() # 时效性检查
|
|
|
|
|
+│ └── check_reference() # 规范性检查
|
|
|
|
|
+│
|
|
|
|
|
+├── 技术性合规检查
|
|
|
|
|
+│ ├── check_non_parameter_compliance() # 非参数合规性检查
|
|
|
|
|
+│ └── check_parameter_compliance() # 参数合规性检查
|
|
|
|
|
+│
|
|
|
|
|
+├── RAG增强审查
|
|
|
|
|
+│ ├── vector_search() # 向量检索
|
|
|
|
|
+│ ├── hybrid_search() # 混合检索
|
|
|
|
|
+│ ├── rerank_results() # 重排序结果
|
|
|
|
|
+│ └── generate_enhanced_suggestions() # 生成增强建议
|
|
|
|
|
+│
|
|
|
|
|
+└── 专业性审查
|
|
|
|
|
+ ├── prep_basis_review() # 编制依据审查
|
|
|
|
|
+ ├── outline_review_results_df() # 目录审查
|
|
|
|
|
+ └── catalogues_check() # 章节审查
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 2. 审查配置与模式
|
|
|
|
|
+
|
|
|
|
|
+#### 审查配置参数
|
|
|
|
|
+```python
|
|
|
|
|
+# 方式1: review_config (审查维度枚举值)
|
|
|
|
|
+review_config = [
|
|
|
|
|
+ 'sensitive_word_check', # 词句语法检查
|
|
|
|
|
+ 'semantic_logic_check', # 语义逻辑审查
|
|
|
|
|
+ 'completeness_check', # 条文完整性审查
|
|
|
|
|
+ 'timeliness_check', # 时效性审查
|
|
|
|
|
+ 'reference_check', # 规范性审查
|
|
|
|
|
+ 'sensitive_check', # 敏感词审查
|
|
|
|
|
+ 'non_parameter_compliance_check', # 非参数合规性检查
|
|
|
|
|
+ 'parameter_compliance_check', # 参数合规性检查
|
|
|
|
|
+]
|
|
|
|
|
+
|
|
|
|
|
+# 方式2: review_item_config (章节_审查维度格式)
|
|
|
|
|
+review_item_config = [
|
|
|
|
|
+ 'basis_sensitive_word_check', # 编制依据章节-词句语法检查
|
|
|
|
|
+ 'plan_semantic_logic_check', # 施工计划章节-语义逻辑审查
|
|
|
|
|
+ 'catalogue_completeness_check', # 目录章节-完整性检查(特殊规则)
|
|
|
|
|
+]
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+#### 审查模式配置
|
|
|
|
|
+```ini
|
|
|
|
|
+[ai_review]
|
|
|
|
|
+MAX_REVIEW_UNITS=5 # 最大审查单元数量(0=全部审查)
|
|
|
|
|
+REVIEW_MODE=all # 审查模式: all/random/first
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+#### 工程方案类型
|
|
|
|
|
+```python
|
|
|
|
|
+supported_types = {
|
|
|
|
|
+ '01_pf_Found_Rotary_Drill', # 旋挖钻机、冲击钻机成孔桩
|
|
|
|
|
+ '02_pf_Dig_Manual_Pile', # 人工挖孔桩
|
|
|
|
|
+ '03_bd_Sub_Cyl_Pier', # 圆柱墩、系梁、盖梁
|
|
|
|
|
+ # ... 共13种工程方案类型
|
|
|
|
|
+}
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 3. AI审查工作流 (core/construction_review/component/workflows/ai_review_workflow.py)
|
|
|
|
|
+
|
|
|
|
|
+```
|
|
|
|
|
+AIReviewWorkflow (基于LangGraph的审查工作流)
|
|
|
|
|
+├── 构建审查子图
|
|
|
|
|
+│ ├── 添加审查节点(每种审查类型一个节点)
|
|
|
|
|
+│ ├── 设置节点间转换关系
|
|
|
|
|
+│ └── 编译为可执行图
|
|
|
|
|
+│
|
|
|
|
|
+├── 审查节点类型
|
|
|
|
|
+│ ├── 单元级审查节点
|
|
|
|
|
+│ │ ├── 文档分块
|
|
|
|
|
+│ │ ├── 并发执行各类审查器
|
|
|
|
|
+│ │ ├── 汇总审查结果
|
|
|
|
|
+│ │ └── 计算风险等级
|
|
|
|
|
+│ │
|
|
|
|
|
+│ └── 章节级审查节点
|
|
|
|
|
+│ ├── 提取章节内容
|
|
|
|
|
+│ ├── 执行章节特定审查
|
|
|
|
|
+│ └── 生成章节审查结果
|
|
|
|
|
+│
|
|
|
|
|
+└── 审查器集合 (reviewers/)
|
|
|
|
|
+ ├── base_reviewer.py # 基础审查器
|
|
|
|
|
+ ├── check_completeness/ # 完整性检查组件
|
|
|
|
|
+ ├── catalogues_check/ # 目录审查组件
|
|
|
|
|
+ └── utils/ # 审查工具函数
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 4. RAG检索增强流程
|
|
|
|
|
+
|
|
|
|
|
+```
|
|
|
|
|
+RAG检索增强
|
|
|
|
|
+│
|
|
|
|
|
+├── 1. 查询重写 (query_rewrite_manager)
|
|
|
|
|
+│ └── 优化原始查询以提高检索质量
|
|
|
|
|
+│
|
|
|
|
|
+├── 2. 实体增强 (entity_enhance)
|
|
|
|
|
+│ └── 识别文档实体并增强查询
|
|
|
|
|
+│
|
|
|
|
|
+├── 3. 向量检索 (MilvusManager)
|
|
|
|
|
+│ ├── vector_search() # 纯向量检索
|
|
|
|
|
+│ └── hybrid_search() # 混合检索(向量+关键词)
|
|
|
|
|
+│
|
|
|
|
|
+├── 4. 父块召回 (enhance_with_parent_docs_grouped)
|
|
|
|
|
+│ └── 返回父块上下文信息
|
|
|
|
|
+│
|
|
|
|
|
+└── 5. 重排序 (rerank_results)
|
|
|
|
|
+ └── 使用Rerank模型优化结果排序
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 5. 审查结果数据结构
|
|
|
|
|
+
|
|
|
|
|
+```python
|
|
|
|
|
+{
|
|
|
|
|
+ "callback_task_id": "file_id-timestamp",
|
|
|
|
|
+ "file_id": "original_file_id",
|
|
|
|
|
+ "file_name": "document.pdf",
|
|
|
|
|
+ "user_id": "user-001",
|
|
|
|
|
+ "overall_task_status": "completed", # processing/completed/failed/terminated
|
|
|
|
|
+ "stage_status": {
|
|
|
|
|
+ "document": "completed",
|
|
|
|
|
+ "ai_review": "completed",
|
|
|
|
|
+ "report": "completed"
|
|
|
|
|
+ },
|
|
|
|
|
+ "document_result": {
|
|
|
|
|
+ "structured_content": {...},
|
|
|
|
|
+ "parsed_sections": [...]
|
|
|
|
|
+ },
|
|
|
|
|
+ "ai_review_result": {
|
|
|
|
|
+ "review_results": [
|
|
|
|
|
+ {
|
|
|
|
|
+ "unit_index": 0,
|
|
|
|
|
+ "unit_content": {...},
|
|
|
|
|
+ "review_items": [
|
|
|
|
|
+ {
|
|
|
|
|
+ "check_type": "semantic_logic_check",
|
|
|
|
|
+ "risk_level": "high",
|
|
|
|
|
+ "issues": [...],
|
|
|
|
|
+ "suggestions": [...]
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ }
|
|
|
|
|
+ ],
|
|
|
|
|
+ "summary": {...}
|
|
|
|
|
+ },
|
|
|
|
|
+ "report_result": {
|
|
|
|
|
+ "report_path": "/path/to/report.json",
|
|
|
|
|
+ "summary": "审查报告摘要"
|
|
|
|
|
+ },
|
|
|
|
|
+ "timestamp": "2026-02-03T12:00:00"
|
|
|
|
|
+}
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## SSE实时推送机制
|
|
|
|
|
+
|
|
|
|
|
+### SSE连接管理 (core/base/sse_manager.py)
|
|
|
|
|
+
|
|
|
|
|
+```
|
|
|
|
|
+unified_sse_manager (统一SSE管理器)
|
|
|
|
|
+├── establish_connection() # 建立SSE连接并注册回调
|
|
|
|
|
+├── send_progress() # 发送进度更新
|
|
|
|
|
+├── close_connection() # 关闭SSE连接
|
|
|
|
|
+└── connection_registry # 连接注册表 {callback_task_id: queue}
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### SSE事件类型
|
|
|
|
|
+
|
|
|
|
|
+```python
|
|
|
|
|
+# 连接事件
|
|
|
|
|
+"connected" # SSE连接已建立
|
|
|
|
|
+"connection_closed" # SSE连接已关闭
|
|
|
|
|
+
|
|
|
|
|
+# 进度事件
|
|
|
|
|
+"processing" # 处理中(通用进度更新)
|
|
|
|
|
+"unit_review_update" # 单元审查更新
|
|
|
|
|
+"processing_flag" # 处理标志
|
|
|
|
|
+
|
|
|
|
|
+# 完成事件
|
|
|
|
|
+"submitted" # 任务已提交
|
|
|
|
|
+"completed" # 任务已完成
|
|
|
|
|
+
|
|
|
|
|
+# 错误事件
|
|
|
|
|
+"error" # 发生错误
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 进度推送流程
|
|
|
|
|
+
|
|
|
|
|
+```
|
|
|
|
|
+1. 前端建立SSE连接
|
|
|
|
|
+ POST /sgsc/sse/launch_review
|
|
|
|
|
+ ↓
|
|
|
|
|
+2. 后端建立SSE连接并注册回调
|
|
|
|
|
+ unified_sse_manager.establish_connection(callback_task_id, sse_progress_callback)
|
|
|
|
|
+ ↓
|
|
|
|
|
+3. 返回"connected"事件
|
|
|
|
|
+ yield format_sse_event("connected", connected_data)
|
|
|
|
|
+ ↓
|
|
|
|
|
+4. 提交任务到Celery
|
|
|
|
|
+ workflow_manager.submit_task_processing(file_info)
|
|
|
|
|
+ ↓
|
|
|
|
|
+5. Celery Worker执行任务
|
|
|
|
|
+ ↓
|
|
|
|
|
+6. 各阶段更新进度
|
|
|
|
|
+ progress_manager.update_progress(callback_task_id, stage_data)
|
|
|
|
|
+ ↓
|
|
|
|
|
+7. SSE回调被触发
|
|
|
|
|
+ sse_progress_callback(callback_task_id, current_data)
|
|
|
|
|
+ ↓
|
|
|
|
|
+8. 发送SSE事件到前端
|
|
|
|
|
+ unified_sse_manager.send_progress(callback_task_id, current_data)
|
|
|
|
|
+ ↓
|
|
|
|
|
+9. 前端接收SSE事件并更新UI
|
|
|
|
|
+ ↓
|
|
|
|
|
+10. 任务完成,发送"completed"事件
|
|
|
|
|
+ yield format_sse_event("completed", completion_data)
|
|
|
|
|
+ ↓
|
|
|
|
|
+11. 关闭SSE连接
|
|
|
|
|
+ unified_sse_manager.close_connection(callback_task_id)
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 任务终止机制
|
|
|
|
|
+
|
|
|
|
|
+### 终止信号设置
|
|
|
|
|
+
|
|
|
|
|
+```python
|
|
|
|
|
+async def set_terminate_signal(callback_task_id: str, operator: str) -> Dict:
|
|
|
|
|
+ """
|
|
|
|
|
+ 设置任务终止信号
|
|
|
|
|
+ - 写入Redis: ai_review:terminate_signal:{callback_task_id}
|
|
|
|
|
+ - 存储操作人和终止时间
|
|
|
|
|
+ - 设置2小时过期时间
|
|
|
|
|
+ """
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 终止信号检测
|
|
|
|
|
+
|
|
|
|
|
+```python
|
|
|
|
|
+async def check_terminate_signal(callback_task_id: str) -> bool:
|
|
|
|
|
+ """
|
|
|
|
|
+ 检查是否有终止信号
|
|
|
|
|
+ - 从Redis读取终止信号
|
|
|
|
|
+ - 每个工作流节点执行前调用
|
|
|
|
|
+ - 检测到信号后进入终止流程
|
|
|
|
|
+ """
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 终止流程
|
|
|
|
|
+
|
|
|
|
|
+```
|
|
|
|
|
+1. 用户调用终止接口
|
|
|
|
|
+ POST /construction/task/terminate
|
|
|
|
|
+ ↓
|
|
|
|
|
+2. 设置Redis终止信号
|
|
|
|
|
+ set_terminate_signal(callback_task_id, operator)
|
|
|
|
|
+ ↓
|
|
|
|
|
+3. 工作流节点检测到信号
|
|
|
|
|
+ check_terminate_signal() returns True
|
|
|
|
|
+ ↓
|
|
|
|
|
+4. 条件边判断返回"terminate"
|
|
|
|
|
+ _should_terminate_or_error_chain() returns "terminate"
|
|
|
|
|
+ ↓
|
|
|
|
|
+5. 进入terminate节点
|
|
|
|
|
+ _terminate_chain_node()
|
|
|
|
|
+ ↓
|
|
|
|
|
+6. 清理资源
|
|
|
|
|
+ - 清理Redis终止信号
|
|
|
|
|
+ - 清理Redis文件缓存
|
|
|
|
|
+ - 通知SSE连接
|
|
|
|
|
+ ↓
|
|
|
|
|
+7. 返回终止状态
|
|
|
|
|
+ overall_task_status: "terminated"
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 部署架构
|
|
|
|
|
+
|
|
|
|
|
+### 开发环境
|
|
|
|
|
+```
|
|
|
|
|
+启动命令: python server/app.py
|
|
|
|
|
+
|
|
|
|
|
+启动流程:
|
|
|
|
|
+1. 加载配置文件 (config/config.ini)
|
|
|
|
|
+2. 初始化Redis连接
|
|
|
|
|
+3. 启动Celery Worker(后台线程)
|
|
|
|
|
+4. 启动Uvicorn服务器(端口8002)
|
|
|
|
|
+5. 注册信号处理器(优雅关闭)
|
|
|
|
|
+
|
|
|
|
|
+依赖服务:
|
|
|
|
|
+- Redis (localhost:6379)
|
|
|
|
|
+- Milvus (向量数据库)
|
|
|
|
|
+- 本地AI模型服务 (192.168.91.253:9002)
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 生产环境
|
|
|
|
|
+```
|
|
|
|
|
+部署方式: Docker + Docker Compose
|
|
|
|
|
+
|
|
|
|
|
+启动命令: docker-compose up -d
|
|
|
|
|
+
|
|
|
|
|
+服务组件:
|
|
|
|
|
+- web: FastAPI应用 (Uvicorn)
|
|
|
|
|
+- celery: Celery Worker
|
|
|
|
|
+- redis: Redis缓存
|
|
|
|
|
+- milvus: Milvus向量数据库
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 容器化部署
|
|
|
|
|
+```
|
|
|
|
|
+docker-compose up -d
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## v2.0 → v3.0 变更记录 (2026-04-09)
|
|
|
|
|
+
|
|
|
|
|
+### 新增模块
|
|
|
|
|
+
|
|
|
|
|
+| 模块 | 路径 | 说明 |
|
|
|
|
|
+|------|------|------|
|
|
|
|
|
+| 施工方案编写 | `core/construction_write/` | 大纲生成、内容编写工作流 |
|
|
|
|
|
+| 编写API | `views/construction_write/` | 大纲/补全/重生成/取消/推荐接口 |
|
|
|
|
|
+| 数据脱敏 | `component/desensitize/` | 四维度脱敏(PII/地理/业务/财务)+ 反向映射 |
|
|
|
|
|
+| 简化管道 | `component/minimal_pipeline/` | PDF提取、OCR(解耦)、目录构建/检测 |
|
|
|
|
|
+| 标准匹配 | `component/standard_matching/` | 标准规范DAO与服务层 |
|
|
|
|
|
+| 智能分类 | `doc_worker/classification/` | 分块/层级/本地三种分类策略 |
|
|
|
|
|
+| LLM分类器v2 | `reviewers/utils/llm_content_classifier_v2/` | LLM驱动的内容分类,含补充验证机制 |
|
|
|
|
|
+| LLM链式客户端 | `reviewers/utils/llm_chain_client/` | 多厂商(DeepSeek/豆包/Gemini/Qwen)链式调用框架 |
|
|
|
|
|
+| 核心函数 | `workflows/core_functions/` | AI审查核心业务逻辑抽离 |
|
|
|
|
|
+| 状态类型 | `workflows/types/` | AIReviewState、TaskChainState 定义 |
|
|
|
|
|
+
|
|
|
|
|
+### 新增审查器
|
|
|
|
|
+
|
|
|
|
|
+| 审查器 | 说明 |
|
|
|
|
|
+|--------|------|
|
|
|
|
|
+| `standard_timeliness_reviewer.py` | 标准时效性审查 |
|
|
|
|
|
+| `timeliness_content_reviewer.py` | 时效性内容审查 |
|
|
|
|
|
+| `sensitive_word_check.py` | 敏感词检查 |
|
|
|
|
|
+
|
|
|
|
|
+### 新增基础设施
|
|
|
|
|
+
|
|
|
|
|
+| 组件 | 说明 |
|
|
|
|
|
+|------|------|
|
|
|
|
|
+| `foundation/observability/cachefiles/` | 缓存文件管理 |
|
|
|
|
|
+| `foundation/observability/monitoring/rag/` | RAG管道监控 |
|
|
|
|
|
+| `foundation/ai/models/model_config_loader.py` | 模型配置加载器 |
|
|
|
|
|
+| `foundation/utils/md5.py` | MD5工具 |
|
|
|
|
|
+| `config/model_setting.yaml` | 模型设置配置 |
|
|
|
|
|
+| `config/yolo/` | YOLO模型权重 |
|
|
|
|
|
+
|
|
|
|
|
+### 架构变更要点
|
|
|
|
|
+
|
|
|
|
|
+1. **审查引擎解耦**: `ai_review_engine.py` 核心逻辑部分抽离至 `core_functions/ai_review_core_fun.py`
|
|
|
|
|
+2. **OCR模块独立**: `minimal_pipeline/ocr_processor.py` 从PDF提取中解耦为独立模块
|
|
|
|
|
+3. **分类体系升级**: 从简单分类升级为 `llm_content_classifier_v2`,支持 keywords 关键字扫描 + LLM补充验证
|
|
|
|
|
+4. **多模型支持**: `llm_chain_client` 框架统一 DeepSeek/豆包/Gemini/Qwen 多厂商调用
|
|
|
|
|
+5. **脱敏-审查闭环**: `desensitize/` 模块提供正向脱敏 + `remapper.py` 反向映射,保证审查结果可还原
|
|
|
|
|
+
|
|
|
|
|
+---
|