| 12345678910111213141516171819202122232425262728 |
- import sqlalchemy as sa
- from alembic import op
- from sqlalchemy.dialects import mysql
- revision = "0021_billing_statements"
- down_revision = "0020_knowledge_source_text"
- branch_labels = None
- depends_on = None
- def upgrade():
- # 账单原文按批次保留;租户和来源唯一约束防止更换请求 UUID 后重复导入。
- op.create_table(
- "billing_statements",
- sa.Column("id", mysql.BINARY(16), primary_key=True),
- sa.Column("tenant_id", mysql.BINARY(16), nullable=False),
- sa.Column("applicant_id", mysql.BINARY(16), nullable=False),
- sa.Column("source_key", mysql.BINARY(32), nullable=False),
- sa.Column("payload", sa.JSON(), nullable=False),
- sa.Column("created_at", mysql.DATETIME(fsp=6), nullable=False),
- sa.ForeignKeyConstraint(["tenant_id"], ["tenants.id"], ondelete="CASCADE"),
- sa.UniqueConstraint("tenant_id", "source_key", name="uq_billing_statement_source"),
- )
- op.create_index("ix_billing_statements_tenant_id", "billing_statements", ["tenant_id", "id"])
- def downgrade():
- op.drop_table("billing_statements")
|