0021_billing_statements.py 1.1 KB

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