"""Phase 2 - 模板发布版本化:version字段 + 发布历史表 Revision ID: 047 Revises: 046 Create Date: 2026-07-20 Changes: 1. edit_templates 加 version 字段(INT,默认1,每次发布+1) 2. 新建 edit_template_versions 表存发布历史快照,支持回滚 """ import sqlalchemy as sa from alembic import op revision = "047_template_versioning" down_revision = "046_task_title" branch_labels = None depends_on = None def upgrade() -> None: conn = op.get_bind() # 1. edit_templates 加 version 字段 op.add_column( "edit_templates", sa.Column("version", sa.Integer, nullable=False, server_default="1"), ) # 2. 新建 edit_template_versions 发布历史表 conn.execute(sa.text(""" CREATE TABLE IF NOT EXISTS edit_template_versions ( id VARCHAR(36) PRIMARY KEY, template_id VARCHAR(32) NOT NULL, version INTEGER NOT NULL, name VARCHAR(200) NOT NULL DEFAULT '', editing_mode VARCHAR(30) NOT NULL DEFAULT 'one_take', config JSONB NOT NULL DEFAULT '{}', clip_configs JSONB NOT NULL DEFAULT '[]', change_note VARCHAR(500) NOT NULL DEFAULT '', published_by VARCHAR(36) NOT NULL DEFAULT '', created_at TIMESTAMP NOT NULL DEFAULT NOW() ) """)) conn.execute( sa.text( "CREATE INDEX IF NOT EXISTS ix_edit_template_versions_template_id " "ON edit_template_versions(template_id)" ) ) conn.execute( sa.text( "CREATE UNIQUE INDEX IF NOT EXISTS ix_edit_template_versions_template_version " "ON edit_template_versions(template_id, version)" ) ) def downgrade() -> None: conn = op.get_bind() conn.execute(sa.text("DROP TABLE IF EXISTS edit_template_versions")) op.drop_column("edit_templates", "version")