from bidmaster.utils.validation import ContentValidationError, ContentValidator def test_content_validator_rejects_cross_chapter_phrase() -> None: validator = ContentValidator() chapter = {"id": "chapter_1", "title": "服务方案"} content = ( "经认真研读招标文件要求,结合我司实际情况,现就商务和技术方面存在的偏差说明如下:\n" "商务条款响应情况\n我司完全响应……" ) try: validator.validate(chapter, content) except ContentValidationError as exc: assert "跨章节模板" in str(exc) else: raise AssertionError("内容校验应当失败") def test_content_validator_accepts_normal_content() -> None: validator = ContentValidator() chapter = {"id": "chapter_2", "title": "技术路线"} content = ( "我们以矿山智慧化平台为核心,构建“实时感知—风险预警—指挥调度”闭环。\n" "- 通过多源感知网络实现危险场景秒级采集;\n" "- 以知识图谱关联隐患并生成操作工序清单。" ) validator.validate(chapter, content) def test_content_validator_allows_legitimate_intro() -> None: validator = ContentValidator() chapter = {"id": "chapter_a", "title": "商务和技术偏差表"} content = ( "在本次投标过程中,我们对招标文件进行了全面分析,并结合我司情况编制偏差说明。\n" "我们将在响应表中逐条列出商务及技术条款的差异与说明。" ) validator.validate(chapter, content)