"""T4.6 AAR 系统化复盘测试。 测试 AI AAR Agent 的五问复盘和触发条件检测。 """ import pytest from app.services.aar_agent import check_aar_triggers, generate_aar class TestGenerateAAR: """五问复盘测试。""" async def test_returns_dict(self): """返回复盘结果字典。""" result = await generate_aar( "CTO 离职", "原计划 Q3 完成产品 2.0 上线", "产品延期 2 个月,团队士气下降", ) assert isinstance(result, dict) async def test_empty_input(self): """空输入返回字典。""" result = await generate_aar("", "", "") assert isinstance(result, dict) class TestCheckAarTriggers: """AAR 触发条件检测测试。""" async def test_risk_resolved_trigger(self): """风险处理完成触发 AAR。""" events = [{"type": "risk_resolved", "title": "现金流危机解除"}] result = await check_aar_triggers("company-1", events) assert len(result) == 1 assert result[0]["trigger_type"] == "risk_resolved" async def test_funding_completed_trigger(self): """融资完成触发 AAR。""" events = [{"type": "funding_completed", "title": "A 轮融资完成"}] result = await check_aar_triggers("company-1", events) assert len(result) == 1 async def test_no_trigger(self): """无触发事件返回空列表。""" events = [{"type": "routine_update", "title": "常规月报"}] result = await check_aar_triggers("company-1", events) assert result == [] async def test_empty_events(self): """空事件列表返回空。""" result = await check_aar_triggers("company-1", []) assert result == [] async def test_multiple_triggers(self): """多个触发事件全部识别。""" events = [ {"type": "funding_completed", "title": "A 轮完成"}, {"type": "talent_left", "title": "CTO 离职"}, {"type": "routine", "title": "常规更新"}, ] result = await check_aar_triggers("company-1", events) assert len(result) == 2