test_prep_basis_workflow.py 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. """
  4. 测试完整的编制依据审查工作流
  5. """
  6. import asyncio
  7. import sys
  8. import os
  9. # 添加项目根目录到sys.path
  10. current_file = os.path.abspath(__file__)
  11. root_dir = os.path.dirname(os.path.dirname(os.path.dirname(current_file)))
  12. sys.path.append(root_dir)
  13. from core.base.task_models import TaskFileInfo
  14. from core.construction_review.workflows.ai_review_workflow import AIReviewWorkflow
  15. async def test_prep_basis_workflow():
  16. """测试完整的编制依据审查工作流"""
  17. print("开始测试编制依据审查工作流")
  18. # 模拟结构化内容,包含编制依据
  19. structured_content = {
  20. 'file_id': 'test_file_002',
  21. 'file_name': 'construction_plan.doc',
  22. 'prep_basis': '''
  23. (1)《架桥机通用技术条件》(GB/T 26470-2011);
  24. (2)《起重机设计规范》(GB/T 3811-2008);
  25. (3)《起重机械安全规程 第 5 部分:桥式和门式起重机》(GB 6067.5-2014);
  26. (4)《电气装置安装工程 起重机电气装置施工及验收规范》(GB 50256-2014);
  27. (5)《起重设备安装工程施工及验收规范》(GB50278-2010);
  28. (6)《施工现场机械设备检查技术规范》(JGJ 160-2016);
  29. (7)《公路桥涵施工技术规范》(JTG/T 3650-2020);
  30. (8)《建设工程安全生产管理条例》《四川省安全生产条例》(2023);
  31. (9)《重要用途钢丝绳》(GB 8918-2006);
  32. (10)《起重机用钢丝绳》(GB T 34198-2017);
  33. (11)《起重机钢丝绳保养、维护、检验和报废》(GBT5972-2023);
  34. (12)《建筑施工起重吊装工程安全技术规范》(JGJ 276-2012);
  35. (13)《建筑施工高处作业安全技术规范》(JGJ 80-2016);
  36. ''',
  37. 'chunks': [
  38. {
  39. 'section_label': '第一章 编制依据',
  40. 'content': '''第一章 编制依据
  41. 本专项施工方案编制依据如下:
  42. (1)《架桥机通用技术条件》(GB/T 26470-2011);
  43. (2)《起重机设计规范》(GB/T 3811-2008);
  44. (3)《起重机械安全规程 第 5 部分:桥式和门式起重机》(GB 6067.5-2014);
  45. ''',
  46. 'page': '1'
  47. },
  48. {
  49. 'section_label': '第二章 工程概况',
  50. 'content': '''第二章 工程概况
  51. 本工程为某某大桥上部结构施工项目...
  52. ''',
  53. 'page': '2'
  54. }
  55. ],
  56. 'outline': {
  57. 'chapters': [
  58. {'title': '第一章 编制依据', 'page': '1'},
  59. {'title': '第二章 工程概况', 'page': '2'}
  60. ]
  61. }
  62. }
  63. # 创建模拟的TaskFileInfo,包含prep_basis_check配置
  64. file_info_dict = {
  65. 'file_id': "test_file_002",
  66. 'callback_task_id': "test_callback_prep_basis_002",
  67. 'user_id': "test_user_002",
  68. 'review_config': ['completeness_check', 'prep_basis_check'], # 包含编制依据审查
  69. 'project_plan_type': "construction_plan",
  70. 'tendency_review_role': "safety_reviewer",
  71. 'file_name': "test_prep_basis_document.doc",
  72. 'file_type': "doc",
  73. 'launched_at': 1234567890
  74. }
  75. task_info = TaskFileInfo(file_info_dict)
  76. try:
  77. # 创建AI审查工作流实例
  78. workflow = AIReviewWorkflow(
  79. task_file_info=task_info,
  80. structured_content=structured_content,
  81. progress_manager=None, # 简化测试,不使用进度管理器
  82. max_review_units=1, # 只测试一个单元,减少执行时间
  83. review_mode="first"
  84. )
  85. print("工作流创建成功,开始执行...")
  86. # 执行工作流
  87. result = await workflow.execute()
  88. print("工作流执行完成!")
  89. print(f"执行结果:")
  90. print(f" - 文件ID: {result.get('file_id')}")
  91. print(f" - 总单元数: {result.get('total_units')}")
  92. print(f" - 成功单元数: {result.get('successful_units')}")
  93. print(f" - 失败单元数: {result.get('failed_units')}")
  94. print(f" - 状态: {result.get('status')}")
  95. # 检查审查结果中是否包含编制依据审查
  96. review_results = result.get('review_results', [])
  97. if review_results:
  98. print(f" - 审查结果数量: {len(review_results)}")
  99. # 查找编制依据审查结果
  100. prep_basis_result = None
  101. for item in review_results:
  102. if isinstance(item, dict) and 'review_results' in item:
  103. # 这可能是编制依据审查结果
  104. if 'total_basis_items' in item:
  105. prep_basis_result = item
  106. break
  107. if prep_basis_result:
  108. print(f"编制依据审查结果:")
  109. print(f" - 成功状态: {prep_basis_result.get('success', False)}")
  110. print(f" - 总编制依据数: {prep_basis_result.get('total_basis_items', 0)}")
  111. print(f" - 有效项目数: {prep_basis_result.get('valid_items', 0)}")
  112. print(f" - 标准项目数: {prep_basis_result.get('standard_items', 0)}")
  113. print(f" - 执行时间: {prep_basis_result.get('execution_time', 0):.2f}秒")
  114. else:
  115. print("未找到编制依据审查结果")
  116. else:
  117. print("没有审查结果返回")
  118. except Exception as e:
  119. print(f"测试失败: {str(e)}")
  120. import traceback
  121. traceback.print_exc()
  122. if __name__ == "__main__":
  123. asyncio.run(test_prep_basis_workflow())