test_rag_enhanced_check.py 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. """
  4. 测试AI审查引擎的RAG增强检查功能
  5. """
  6. import sys
  7. import os
  8. import asyncio
  9. sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
  10. from core.construction_review.component.ai_review_engine import AIReviewEngine
  11. from foundation.observability.logger.loggering import server_logger as logger
  12. async def test_rag_enhanced_check():
  13. """
  14. 测试RAG增强检查功能
  15. """
  16. try:
  17. print("=" * 80)
  18. print("开始测试AI审查引擎的RAG增强检查功能")
  19. print("=" * 80)
  20. # 初始化AI审查引擎
  21. review_engine = AIReviewEngine()
  22. # 设置milvus集合名称(从test_rag.py中获取)
  23. collection_name = "first_bfp_collection"
  24. review_engine.milvus_collection = collection_name
  25. # 准备测试用的待审查单元内容
  26. # 使用与test_rag.py相同的查询内容进行测试
  27. test_content = """按照《公路钢结构桥梁制造与安装施工规范》(JTG/T3651-2022)的要求,对圆
  28. 柱头焊钉进行了焊接工艺评定试验,试验共计1 组,焊接9 个剪力钉,其中3 个用来
  29. 做弯曲试验,3 个用来做拉伸试验,3 个备用。施焊参数见表4.4.3。
  30. 表4.4.3 焊钉施焊参数
  31. 编号
  32. 焊接方法
  33. 剪力钉直径
  34. (mm)
  35. 伸出长度
  36. (mm)
  37. 提升高度
  38. (mm)
  39. 焊接时间
  40. (s)
  41. 焊接电流
  42. (A)
  43. YJ-J1
  44. 电弧螺柱焊
  45. 22
  46. 6
  47. 3
  48. 1.0
  49. 1900~2200
  50. 焊缝挤出焊脚均匀饱满,外观质量合格。
  51. 4.4.3 圆柱头焊钉焊接工艺评定试验结果
  52. 按规定对焊钉取3 根进行锤击30º弯曲试验,另外取3 根进行拉伸试验,试验结
  53. 果见表4.4.4,接头力学性能满足技术要求。
  54. 鹿寨至钦州港公路郁江特大桥钢箱梁
  55. 焊接工艺评定总结报告
  56. 42
  57. 表4.4.4 焊钉锤击30º弯曲试验和拉伸试验结果
  58. 规格
  59. 锤击30º弯曲试验
  60. 拉伸试验
  61. YJ-J1
  62. Φ22×140+
  63. Q355D-δ18
  64. 编号
  65. 焊缝状况
  66. 编号
  67. 拉力(KN)
  68. 断口
  69. 部位
  70. 评定标准
  71. 1
  72. 完好
  73. 1
  74. 202.05
  75. 母材
  76. 拉力载荷不
  77. 小于
  78. 159.6KN,断
  79. 口不在焊缝
  80. 或热影响区
  81. 2
  82. 完好
  83. 2
  84. 201.50
  85. 母材
  86. 3
  87. 完好
  88. 3
  89. 201.95
  90. 母材
  91. 鹿寨至钦州港公路郁江特大桥钢箱梁
  92. 焊接工艺评定总结报告
  93. 43
  94. 五、焊接工艺评定试验结果分析
  95. 5.1 焊缝强度
  96. 1.1 验收标准:焊缝屈服强度和抗拉强度不低于母材标准值。
  97. 材质
  98. 板厚范围(mm)
  99. ReL(MPa)
  100. Rm(MPa)
  101. A(%)
  102. Q355D
  103. t≤16
  104. ≥355
  105. ≥470
  106. ≥22
  107. 16<t≤40
  108. ≥345
  109. ≥470
  110. ≥22
  111. 1.2 根据表4.1.6 中试验结果整理出各类接头强度散点图如下,所有焊缝的屈服
  112. 强度、抗拉强度均超过了母材标准值。
  113. 5.2 焊缝金属延伸率
  114. 2.1 验收标准:不低于母材标准值。
  115. 2.2 结果分析:根据表4.1.6 中试验结果整理出散点图如下,所有焊缝的延伸率
  116. 均在母材标准要求值之上。
  117. 鹿寨至钦州港公路郁江特大桥钢箱梁
  118. 焊接工艺评定总结报告
  119. 44
  120. 5.3 接头韧性
  121. 3.1 验收标准:根据设计要求,对接接头及熔透角接接头焊缝中心及热影响区焊
  122. 缝V 型缺口低温冲击试验结果的平均值不低于下表的规定值,且任一试验结果不得
  123. 低于0.70 倍的标准值。
  124. 钢材牌号
  125. 试验温度(℃)
  126. 冲击韧性(J)
  127. Q355D
  128. -20
  129. 34
  130. 注:板厚≤20mm 的薄板接头冲击功规定值为27J
  131. 3.2 结果分析:从表4.1.6 中试验数据可以看出:所有试验结果中冲击功最小平均
  132. 值为YJ-D2 试件的焊缝中心冲击功47J,大于验收值;单一试件的冲击功最小值为
  133. YJ-D2(板厚t=18mm)试件的焊缝中心冲击功31J,大于验收值。
  134. 5.4 接头弯曲
  135. 4.1 验收标准:对接接头弯曲180°,试样受拉面上的裂纹总长不大于试样宽度
  136. 的15%,且单个裂纹长度不大于3mm,则判为合格。
  137. 4.2 结果分析:所有对接接头的弯曲试验均完好未产生裂纹。
  138. 5.5 接头硬度
  139. 5.1
  140. 验收标准:不大于HV380。
  141. 5.2
  142. 结果分析:根据表4.1.6 中试验结果整理出接头各区最高硬度曲线图如下,
  143. 所有接头各区的硬度低于HV380。
  144. 鹿寨至钦州港公路郁江特大桥钢箱梁
  145. 焊接工艺评定总结报告
  146. 45
  147. 5.6 接头宏观断面腐蚀
  148. 焊缝均熔合良好,未见焊接缺陷。
  149. 鹿寨至钦州港公路郁江特大桥钢箱梁
  150. 焊接工艺评定总结报告
  151. 46
  152. 六、结论
  153. 从以上试验的焊缝检验和试验结果可以看出:焊缝内、外部质量良好,通过宏观"""
  154. # 构造unit_content格式
  155. unit_content = {
  156. 'content': test_content,
  157. 'review_references': '' # 可以为空或提供参考信息
  158. }
  159. print(f"测试内容长度: {len(test_content)} 字符")
  160. print(f"使用的集合名称: {collection_name}")
  161. # 执行RAG增强检查
  162. print("\n开始执行RAG增强检查...")
  163. start_time = asyncio.get_event_loop().time()
  164. result = review_engine.rag_enhanced_check(unit_content)
  165. end_time = asyncio.get_event_loop().time()
  166. elapsed_time = end_time - start_time
  167. print(f"\nRAG增强检查完成,耗时: {elapsed_time:.2f}秒")
  168. # 分析结果
  169. print("\n" + "=" * 60)
  170. print("检查结果分析:")
  171. print("=" * 60)
  172. if 'vector_search' in result:
  173. vector_search_results = result['vector_search']
  174. print(f"返回结果数量: {len(vector_search_results)}")
  175. for i, search_result in enumerate(vector_search_results):
  176. print(f"\n--- 搜索结果 {i + 1} ---")
  177. if isinstance(search_result, dict):
  178. # 显示文档内容前100字符
  179. text_content = search_result.get('text_content', '')
  180. print(f"文档内容(前100字符): {text_content[:100]}...")
  181. # 显示元数据信息
  182. metadata = search_result.get('metadata', {})
  183. if metadata:
  184. print(f"文件名称: {metadata.get('file_name', 'N/A')}")
  185. print(f"标题: {metadata.get('title', 'N/A')}")
  186. print(f"文件ID: {metadata.get('file_id', 'N/A')}")
  187. print(f"主键: {metadata.get('pk', 'N/A')}")
  188. else:
  189. print("元数据: 无")
  190. else:
  191. print(f"结果格式异常: {type(search_result)} - {search_result}")
  192. else:
  193. print("错误: 结果中未找到'vector_search'字段")
  194. print(f"完整结果: {result}")
  195. print("\n" + "=" * 80)
  196. print("RAG增强检查测试完成")
  197. print("=" * 80)
  198. except Exception as e:
  199. print(f"\n[ERROR] 测试失败: {str(e)}")
  200. import traceback
  201. print("详细错误信息:")
  202. traceback.print_exc()
  203. async def main():
  204. """
  205. 主测试函数
  206. """
  207. await test_rag_enhanced_check()
  208. if __name__ == "__main__":
  209. print("启动RAG增强检查测试...")
  210. asyncio.run(main())