"""打通采购申请与采购入库的按单入库链路 Revision ID: a1b2c3d4e5f6 Revises: None (或填当前最新 revision) Create Date: 2026-07-14 变更内容: 1. purchase_request 表新增 base_id (FK → material_base.id) 2. stock_buy 表新增 request_id (FK → purchase_request.id) """ from alembic import op import sqlalchemy as sa # revision identifiers, used by Alembic. revision = 'a1b2c3d4e5f6' down_revision = None # ← 替换为当前最新 revision ID branch_labels = None depends_on = None def upgrade(): # ============================================================ # 1. purchase_request 新增 base_id # ============================================================ with op.batch_alter_table('purchase_request', schema=None) as batch_op: batch_op.add_column( sa.Column('base_id', sa.Integer(), nullable=True, comment='关联基础物料ID') ) batch_op.create_foreign_key( 'fk_purchase_request_base_id', 'material_base', ['base_id'], ['id'], ondelete='SET NULL' ) batch_op.create_index( 'ix_purchase_request_base_id', ['base_id'] ) # ============================================================ # 2. stock_buy 新增 request_id # ============================================================ with op.batch_alter_table('stock_buy', schema=None) as batch_op: batch_op.add_column( sa.Column('request_id', sa.Integer(), nullable=True, comment='关联采购申请单ID') ) batch_op.create_foreign_key( 'fk_stock_buy_request_id', 'purchase_request', ['request_id'], ['id'], ondelete='SET NULL' ) batch_op.create_index( 'ix_stock_buy_request_id', ['request_id'] ) def downgrade(): # ============================================================ # 回滚:stock_buy 删除 request_id # ============================================================ with op.batch_alter_table('stock_buy', schema=None) as batch_op: batch_op.drop_constraint('fk_stock_buy_request_id', type_='foreignkey') batch_op.drop_index('ix_stock_buy_request_id') batch_op.drop_column('request_id') # ============================================================ # 回滚:purchase_request 删除 base_id # ============================================================ with op.batch_alter_table('purchase_request', schema=None) as batch_op: batch_op.drop_constraint('fk_purchase_request_base_id', type_='foreignkey') batch_op.drop_index('ix_purchase_request_base_id') batch_op.drop_column('base_id')