"""add schedule_type, goal_id, goal_config to agent_schedules Revision ID: 014_add_schedule_goal_fields Revises: 013_add_goals_tasks Create Date: 2026-05-08 """ from alembic import op import sqlalchemy as sa from sqlalchemy.dialects.mysql import CHAR revision = "014_add_schedule_goal_fields" down_revision = "013_add_goals_tasks" branch_labels = None depends_on = None def upgrade() -> None: op.add_column("agent_schedules", sa.Column("schedule_type", sa.String(20), default="agent", comment="调度类型: agent / goal")) op.add_column("agent_schedules", sa.Column("goal_id", CHAR(36), sa.ForeignKey("goals.id"), nullable=True, comment="关联 Goal ID")) op.add_column("agent_schedules", sa.Column("goal_config", sa.JSON, nullable=True, comment="Goal 调度配置")) op.create_index("ix_agent_schedules_goal_id", "agent_schedules", ["goal_id"]) op.alter_column("agent_schedules", "agent_id", existing_type=CHAR(36), nullable=True) def downgrade() -> None: op.drop_index("ix_agent_schedules_goal_id", table_name="agent_schedules") op.drop_column("agent_schedules", "goal_config") op.drop_column("agent_schedules", "goal_id") op.drop_column("agent_schedules", "schedule_type") op.alter_column("agent_schedules", "agent_id", existing_type=CHAR(36), nullable=False)