""" 测试数据示例 提供各种测试场景的示例数据 """ # 正常的施工方案内容 NORMAL_REVIEW_CONTENT = """ 第一章 工程概况 1.1 项目基本信息 本工程为四川省会理至禄劝高速公路项目,路线全长约120公里,设计速度80km/h, 路基宽度24.5米,双向四车道。主要工程内容包括路基工程、桥梁工程、隧道工程等。 1.2 施工范围 本标段起讫桩号为K0+000~K30+000,主要包括: - 路基土石方工程约200万立方米 - 桥梁工程5座,总长约2000米 - 涵洞工程20道 - 路面工程约30公里 1.3 工期安排 计划工期:24个月 开工日期:2024年3月1日 竣工日期:2026年2月28日 """ # 带有逻辑问题的内容 LOGIC_ERROR_CONTENT = """ 第二章 施工方案 2.1 施工顺序 本工程采用先上后下的施工顺序,首先进行桥梁上部结构施工,然后进行桥墩基础施工。 (注:这里存在逻辑错误,应该先施工基础再施工上部结构) 2.2 工期安排 本工程计划工期为6个月,但根据施工内容分析,实际需要至少12个月才能完成。 (注:工期安排不合理) """ # 空内容 EMPTY_CONTENT = "" # 超长内容 VERY_LONG_CONTENT = """ 第三章 施工技术方案 """ + "\n".join([f"3.{i} 施工工艺详细说明第{i}条,包含大量技术细节和参数..." * 10 for i in range(1, 1001)]) # 特殊字符内容 SPECIAL_CHARS_CONTENT = """ 特殊字符测试: - 符号:@#$%^&*()_+-={}[]|\\:;"'<>,.?/~` - 数学符号:±×÷≈≠≤≥∞∑∫√ - 单位符号:℃、㎡、㎥、㎏、㎜ - 其他:①②③④⑤⑥⑦⑧⑨⑩ """ # Unicode 多语言内容 UNICODE_CONTENT = """ 多语言测试: - 中文:施工方案审查 - English: Construction Plan Review - 日本語:建設計画レビュー - 한국어: 건설 계획 검토 - Русский: Обзор плана строительства - العربية: مراجعة خطة البناء - Emoji: 🚧🏗️👷‍♂️📋✅❌ """ # 参考标准示例 REFERENCE_STANDARDS = """ 参考标准: 1. 《公路工程技术标准》JTG B01-2014 2. 《公路桥涵施工技术规范》JTG/T 3650-2020 3. 《公路路基施工技术规范》JTG/T 3610-2019 4. 《公路工程质量检验评定标准》JTG F80/1-2017 """ # 审查位置标签示例 REVIEW_LOCATIONS = [ "第一章 工程概况", "第二章 施工方案", "第三章 质量保证措施", "第四章 安全保证措施", "第五章 环境保护措施", ] # Trace ID 示例 TRACE_IDS = [ "semantic_check_001", "semantic_check_002", "semantic_check_003", ] # 模拟的 API 响应 MOCK_API_RESPONSES = { "success": "审查结果:内容逻辑清晰,结构合理,符合规范要求。未发现明显问题。", "with_issues": """ 审查结果:发现以下问题: 1. 施工顺序存在逻辑错误,应先进行基础施工再进行上部结构施工 2. 工期安排不合理,建议调整为12个月 3. 缺少安全措施的详细说明 """, "empty": "内容为空,无法进行审查。", "error": "审查失败:API 连接超时", } # 状态字典示例 def create_mock_state(): """创建模拟的状态字典""" from unittest.mock import AsyncMock mock_progress_manager = AsyncMock() mock_progress_manager.update_stage_progress = AsyncMock() return { "progress_manager": mock_progress_manager, "callback_task_id": "test_callback_task_123", "session_id": "test_session_456", } # 测试场景配置 TEST_SCENARIOS = { "normal": { "content": NORMAL_REVIEW_CONTENT, "references": REFERENCE_STANDARDS, "location": REVIEW_LOCATIONS[0], "expected_success": True, }, "logic_error": { "content": LOGIC_ERROR_CONTENT, "references": REFERENCE_STANDARDS, "location": REVIEW_LOCATIONS[1], "expected_success": True, }, "empty": { "content": EMPTY_CONTENT, "references": "", "location": REVIEW_LOCATIONS[0], "expected_success": True, }, "long": { "content": VERY_LONG_CONTENT, "references": REFERENCE_STANDARDS, "location": REVIEW_LOCATIONS[2], "expected_success": True, }, "special_chars": { "content": SPECIAL_CHARS_CONTENT, "references": "", "location": REVIEW_LOCATIONS[3], "expected_success": True, }, "unicode": { "content": UNICODE_CONTENT, "references": "", "location": REVIEW_LOCATIONS[4], "expected_success": True, }, }