import unittest from app.services.ai_steward import AIStewardService class AIStewardTitleExtractTest(unittest.IsolatedAsyncioTestCase): async def test_extract_title_from_plain_project_create_instruction(self) -> None: title = AIStewardService._extract_project_title_from_instruction("给我新增个项目,openclaw自动化部署。") self.assertEqual(title, "openclaw自动化部署") async def test_extract_title_from_correction_sentence(self) -> None: title = AIStewardService._extract_project_title_from_instruction("不是创建信号,是创建项目名为openclaw自动化部署。") self.assertEqual(title, "openclaw自动化部署") async def test_normalize_project_draft_should_not_use_instruction_sentence_as_title(self) -> None: service = AIStewardService(db=None) # type: ignore[arg-type] normalized = await service._normalize_project_creation_draft( draft={ "analysis": {}, "project": { "title": "不是创建信号,是创建项目名为openclaw自动化部署。", "description": "不是创建信号,是创建项目名为openclaw自动化部署。", }, "tasks": [], }, input_text="不是创建信号,是创建项目名为openclaw自动化部署。", creator_id=1, tenant_id=1, ) self.assertEqual(normalized["project"]["title"], "openclaw自动化部署") self.assertEqual(normalized["project"]["description"], "项目:openclaw自动化部署")