"""A pre-v2 task: a plain ``tasks`` row with no ``task_pipeline_state``. Every task made since the engine owns direct tasks gets a pipeline state, so HTTP ``POST /tasks`` and MCP ``tasks_create`` no longer create one of these (decision D-D). Tasks created before that have no state and still run through the legacy one-shot path (``WorkforceService.start_run``). Tests of that path create their task with this helper. """ from __future__ import annotations from sqlalchemy.ext.asyncio import async_sessionmaker from app.infrastructure.db.models import TaskRow async def legacy_task( session_factory: async_sessionmaker, organization_id: str, created_by_user_id: str, *, title: str = "کار قدیمی", project_id: str | None = None, assigned_employee_id: str | None = None, ) -> str: """Insert one task with no pipeline state and return its id.""" async with session_factory() as session: row = TaskRow( organization_id=organization_id, project_id=project_id, title=title, assigned_employee_id=assigned_employee_id, created_by_user_id=created_by_user_id, ) session.add(row) await session.commit() return row.id