from pathlib import Path folder=Path(__file__).parent path=folder/'test_review_policy_integration.py' text=path.read_text(encoding='utf-8') needle=' def test_old_judge_callback_cannot_modify_new_turn(self):\n' assert text.count(needle)==1 text=text.replace(needle,''' def test_new_strict_verdict_overrides_old_shadow_config(self): self.state.update(judge_mode='score_only', judge_risk='high') with mock.patch('review_policy.current_judge_mode',return_value='shadow'), \\ mock.patch('ai_config.AI_REVIEW_RULES',[]): self.assertTrue(self.bot._reply_needs_review(self.state,'合成问题','合成草稿')[0]) '''+needle) text+=''' def test_gateway_strict_verdict_overrides_stale_shadow_cache(self): self.bot.generate=self.bot._generate trace={'judge':{'risk':'high'},'judge_mode':'score_only','task_id':'new-gateway-task'} with mock.patch('ai_config.AI_ENABLED',True), \\ mock.patch('review_policy.current_judge_mode',return_value='shadow'), \\ mock.patch('ai_chat.gateway_provider',return_value=object()), \\ mock.patch('ai_chat.get_ai_reply',return_value='合成严格审核草稿'), \\ mock.patch('ai_chat.take_last_gateway_trace',side_effect=[{},trace]): state=self.enqueue() self.assertEqual(state['judge_mode'],'score_only') self.assertTrue(state['awaiting_review']) self.assertFalse(self.sender.calls) ''' for root in (folder,Path('C:/wechat_rpa'),Path('C:/kefu/wechat_rpa')): (root/'test_review_policy_integration.py').write_text(text,encoding='utf-8') p=folder/'TEST_REPORT.md';text=p.read_text(encoding='utf-8').replace('有效后台计划明确切到影子模式后,可重评具有足够来源信息的旧审核任务。','本次模型返回的裁判模式优先于缓存;仅缺少有效模式字段的历史任务,在当前同步计划明确为影子模式且具备来源信息时解除旧高风险标记。') p.write_text(text,encoding='utf-8') log=folder/'app-build.log' if log.exists(): (folder/'interrupted-build.log').write_bytes(log.read_bytes())