AgentEvalTool/migrations/versions/b3c7d9e1f5a2_add_exploration_config_to_campaigns.py
sinohqb 53afb9b5d1 feat(campaigns): exploration seed set and budget config per campaign
v0.9 ticket 02. Campaigns now carry an exploration seed set (seed
personas × seed goals — the comparability unit for exploratory
evaluation) and an optional budget override, stored as JSON columns
isomorphic to plan. Empty seeds normalize to null, marking the campaign
as opted out of exploration. resolve_budget merges per-field overrides
into platform defaults; enforcement stays server-side. The create form
gains seed lists and budget inputs (minutes → seconds), submitting null
when left empty.
2026-08-03 17:52:25 +08:00

30 lines
932 B
Python

"""add exploration seeds/budget config to campaigns
Revision ID: b3c7d9e1f5a2
Revises: 0e4a7c91d2b3
Create Date: 2026-08-03
"""
from typing import Sequence, Union
import sqlalchemy as sa
import sqlmodel # noqa: F401
from alembic import op
revision: str = "b3c7d9e1f5a2"
down_revision: Union[str, Sequence[str], None] = "0e4a7c91d2b3"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
with op.batch_alter_table("campaigns") as batch_op:
batch_op.add_column(sa.Column("exploration_seeds", sqlmodel.sql.sqltypes.AutoString(), nullable=True))
batch_op.add_column(sa.Column("exploration_budget", sqlmodel.sql.sqltypes.AutoString(), nullable=True))
def downgrade() -> None:
with op.batch_alter_table("campaigns") as batch_op:
batch_op.drop_column("exploration_budget")
batch_op.drop_column("exploration_seeds")