"""预置默认审批流程种子数据。""" from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession from app.models.workflow import WorkflowDefinition, WorkflowStep async def seed_default_workflows(db: AsyncSession) -> None: """创建默认审批流程。 创建3种预置流程: 1. 标准审批流: 开发者 → DBA审批 → 管理员终审 2. 简单审批流: 开发者 → DBA审批 3. 紧急审批流: 开发者 → 任一管理员直接审批(超时2h自动通过) """ # 检查是否已有流程 result = await db.execute(select(WorkflowDefinition)) existing = result.scalars().all() if existing: return # 已有流程,不再创建 # 1. 标准审批流 std_workflow = WorkflowDefinition( name="标准审批流", description="标准三级审批:DBA审批 → 管理员终审", is_default=True, ) db.add(std_workflow) await db.flush() std_steps = [ WorkflowStep( workflow_id=std_workflow.id, step_number=1, name="DBA 审批", step_type="serial", approver_role="dba", is_required=True, timeout_hours=24, ), WorkflowStep( workflow_id=std_workflow.id, step_number=2, name="管理员终审", step_type="serial", approver_role="admin", is_required=True, timeout_hours=24, ), ] for step in std_steps: db.add(step) # 2. 简单审批流 simple_workflow = WorkflowDefinition( name="简单审批流", description="仅 DBA 一级审批", is_default=False, ) db.add(simple_workflow) await db.flush() db.add(WorkflowStep( workflow_id=simple_workflow.id, step_number=1, name="DBA 审批", step_type="serial", approver_role="dba", is_required=True, timeout_hours=24, )) # 3. 紧急审批流 emergency_workflow = WorkflowDefinition( name="紧急审批流", description="紧急变更快速通道:任一管理员审批,超时2小时自动通过", is_default=False, ) db.add(emergency_workflow) await db.flush() db.add(WorkflowStep( workflow_id=emergency_workflow.id, step_number=1, name="管理员快速审批", step_type="any_one", approver_role="admin", is_required=True, timeout_hours=2, auto_approve_on_timeout=True, )) await db.commit()