test_data.py 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. """
  2. 测试数据示例
  3. 提供各种测试场景的示例数据
  4. """
  5. # 正常的施工方案内容
  6. NORMAL_REVIEW_CONTENT = """
  7. 第一章 工程概况
  8. 1.1 项目基本信息
  9. 本工程为四川省会理至禄劝高速公路项目,路线全长约120公里,设计速度80km/h,
  10. 路基宽度24.5米,双向四车道。主要工程内容包括路基工程、桥梁工程、隧道工程等。
  11. 1.2 施工范围
  12. 本标段起讫桩号为K0+000~K30+000,主要包括:
  13. - 路基土石方工程约200万立方米
  14. - 桥梁工程5座,总长约2000米
  15. - 涵洞工程20道
  16. - 路面工程约30公里
  17. 1.3 工期安排
  18. 计划工期:24个月
  19. 开工日期:2024年3月1日
  20. 竣工日期:2026年2月28日
  21. """
  22. # 带有逻辑问题的内容
  23. LOGIC_ERROR_CONTENT = """
  24. 第二章 施工方案
  25. 2.1 施工顺序
  26. 本工程采用先上后下的施工顺序,首先进行桥梁上部结构施工,然后进行桥墩基础施工。
  27. (注:这里存在逻辑错误,应该先施工基础再施工上部结构)
  28. 2.2 工期安排
  29. 本工程计划工期为6个月,但根据施工内容分析,实际需要至少12个月才能完成。
  30. (注:工期安排不合理)
  31. """
  32. # 空内容
  33. EMPTY_CONTENT = ""
  34. # 超长内容
  35. VERY_LONG_CONTENT = """
  36. 第三章 施工技术方案
  37. """ + "\n".join([f"3.{i} 施工工艺详细说明第{i}条,包含大量技术细节和参数..." * 10 for i in range(1, 1001)])
  38. # 特殊字符内容
  39. SPECIAL_CHARS_CONTENT = """
  40. 特殊字符测试:
  41. - 符号:@#$%^&*()_+-={}[]|\\:;"'<>,.?/~`
  42. - 数学符号:±×÷≈≠≤≥∞∑∫√
  43. - 单位符号:℃、㎡、㎥、㎏、㎜
  44. - 其他:①②③④⑤⑥⑦⑧⑨⑩
  45. """
  46. # Unicode 多语言内容
  47. UNICODE_CONTENT = """
  48. 多语言测试:
  49. - 中文:施工方案审查
  50. - English: Construction Plan Review
  51. - 日本語:建設計画レビュー
  52. - 한국어: 건설 계획 검토
  53. - Русский: Обзор плана строительства
  54. - العربية: مراجعة خطة البناء
  55. - Emoji: 🚧🏗️👷‍♂️📋✅❌
  56. """
  57. # 参考标准示例
  58. REFERENCE_STANDARDS = """
  59. 参考标准:
  60. 1. 《公路工程技术标准》JTG B01-2014
  61. 2. 《公路桥涵施工技术规范》JTG/T 3650-2020
  62. 3. 《公路路基施工技术规范》JTG/T 3610-2019
  63. 4. 《公路工程质量检验评定标准》JTG F80/1-2017
  64. """
  65. # 审查位置标签示例
  66. REVIEW_LOCATIONS = [
  67. "第一章 工程概况",
  68. "第二章 施工方案",
  69. "第三章 质量保证措施",
  70. "第四章 安全保证措施",
  71. "第五章 环境保护措施",
  72. ]
  73. # Trace ID 示例
  74. TRACE_IDS = [
  75. "semantic_check_001",
  76. "semantic_check_002",
  77. "semantic_check_003",
  78. ]
  79. # 模拟的 API 响应
  80. MOCK_API_RESPONSES = {
  81. "success": "审查结果:内容逻辑清晰,结构合理,符合规范要求。未发现明显问题。",
  82. "with_issues": """
  83. 审查结果:发现以下问题:
  84. 1. 施工顺序存在逻辑错误,应先进行基础施工再进行上部结构施工
  85. 2. 工期安排不合理,建议调整为12个月
  86. 3. 缺少安全措施的详细说明
  87. """,
  88. "empty": "内容为空,无法进行审查。",
  89. "error": "审查失败:API 连接超时",
  90. }
  91. # 状态字典示例
  92. def create_mock_state():
  93. """创建模拟的状态字典"""
  94. from unittest.mock import AsyncMock
  95. mock_progress_manager = AsyncMock()
  96. mock_progress_manager.update_stage_progress = AsyncMock()
  97. return {
  98. "progress_manager": mock_progress_manager,
  99. "callback_task_id": "test_callback_task_123",
  100. "session_id": "test_session_456",
  101. }
  102. # 测试场景配置
  103. TEST_SCENARIOS = {
  104. "normal": {
  105. "content": NORMAL_REVIEW_CONTENT,
  106. "references": REFERENCE_STANDARDS,
  107. "location": REVIEW_LOCATIONS[0],
  108. "expected_success": True,
  109. },
  110. "logic_error": {
  111. "content": LOGIC_ERROR_CONTENT,
  112. "references": REFERENCE_STANDARDS,
  113. "location": REVIEW_LOCATIONS[1],
  114. "expected_success": True,
  115. },
  116. "empty": {
  117. "content": EMPTY_CONTENT,
  118. "references": "",
  119. "location": REVIEW_LOCATIONS[0],
  120. "expected_success": True,
  121. },
  122. "long": {
  123. "content": VERY_LONG_CONTENT,
  124. "references": REFERENCE_STANDARDS,
  125. "location": REVIEW_LOCATIONS[2],
  126. "expected_success": True,
  127. },
  128. "special_chars": {
  129. "content": SPECIAL_CHARS_CONTENT,
  130. "references": "",
  131. "location": REVIEW_LOCATIONS[3],
  132. "expected_success": True,
  133. },
  134. "unicode": {
  135. "content": UNICODE_CONTENT,
  136. "references": "",
  137. "location": REVIEW_LOCATIONS[4],
  138. "expected_success": True,
  139. },
  140. }