test_prep_basis_review.py 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. """
  4. 测试prep_basis_review方法的简单脚本
  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.component.ai_review_engine import AIReviewEngine
  15. async def test_prep_basis_review():
  16. """测试编制依据审查方法"""
  17. print("🚀 开始测试 prep_basis_review 方法")
  18. # 模拟编制依据文本内容
  19. test_content = """
  20. (1)《架桥机通用技术条件》(GB/T 26470-2011);
  21. (2)《起重机设计规范》(GB/T 3811-2008);
  22. (3)《起重机械安全规程 第 5 部分:桥式和门式起重机》(GB 6067.5-2014);
  23. (4)《电气装置安装工程 起重机电气装置施工及验收规范》(GB 50256-2014);
  24. (5)《起重设备安装工程施工及验收规范》(GB50278-2010);
  25. (6)《施工现场机械设备检查技术规范》(JGJ 160-2016);
  26. (7)《公路桥涵施工技术规范》(JTG/T 3650-2020);
  27. (8)《建设工程安全生产管理条例》《四川省安全生产条例》(2023);
  28. (9)《重要用途钢丝绳》(GB 8918-2006);
  29. (10)《起重机用钢丝绳》(GB T 34198-2017);
  30. """
  31. # 创建模拟的TaskFileInfo
  32. file_info_dict = {
  33. 'file_id': "test_file_001",
  34. 'callback_task_id': "test_callback_001",
  35. 'user_id': "test_user_001",
  36. 'review_config': [],
  37. 'project_plan_type': "construction_plan",
  38. 'tendency_review_role': "safety_reviewer",
  39. 'file_name': "test_document.doc",
  40. 'file_type': "doc",
  41. 'launched_at': 1234567890
  42. }
  43. task_info = TaskFileInfo(file_info_dict)
  44. # 创建AIReviewEngine实例
  45. ai_engine = AIReviewEngine(task_info, max_concurrent_reviews=4)
  46. # 准备审查数据
  47. review_data = {
  48. 'content': test_content.strip(),
  49. 'max_concurrent': 4
  50. }
  51. # 执行编制依据审查
  52. try:
  53. result = await ai_engine.prep_basis_review(
  54. review_data=review_data,
  55. trace_id="test_prep_basis_001",
  56. state={"test": True},
  57. stage_name="编制依据审查测试"
  58. )
  59. print("✅ 编制依据审查成功完成!")
  60. print(f"📊 审查结果统计:")
  61. print(f" - 成功状态: {result.get('success', False)}")
  62. print(f" - 执行时间: {result.get('execution_time', 0):.2f}秒")
  63. print(f" - 总编制依据数: {result.get('total_basis_items', 0)}")
  64. print(f" - 有效项目数: {result.get('valid_items', 0)}")
  65. print(f" - 标准项目数: {result.get('standard_items', 0)}")
  66. # 显示部分审查结果详情
  67. review_results = result.get('review_results', [])
  68. if review_results:
  69. print(f"📋 审查结果详情 (前2个批次):")
  70. for i, batch in enumerate(review_results[:2]):
  71. print(f" 批次 {i+1}: {len(batch)} 条编制依据")
  72. for j, item in enumerate(batch[:3]): # 每批次显示前3条
  73. name = item.get('name', 'Unknown')[:30] + "..." if len(item.get('name', '')) > 30 else item.get('name', 'Unknown')
  74. status = item.get('status', 'Unknown')
  75. is_standard = item.get('is_standard', False)
  76. print(f" {j+1}. {name}: {status} ({'标准' if is_standard else '非标准'})")
  77. else:
  78. print("⚠️ 没有返回审查结果")
  79. except Exception as e:
  80. print(f"❌ 测试失败: {str(e)}")
  81. import traceback
  82. traceback.print_exc()
  83. if __name__ == "__main__":
  84. asyncio.run(test_prep_basis_review())