54 lines
2.6 KiB
Python
54 lines
2.6 KiB
Python
"""银行账户与定时任务
|
|
|
|
Revision ID: 20260813_bank_scheduled
|
|
Revises: 20260813_split_device_type
|
|
Create Date: 2026-08-13 16:00:00.000000
|
|
"""
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
|
|
# revision identifiers, used by Alembic.
|
|
revision = '20260813_bank_scheduled'
|
|
down_revision = '20260813_split_device_type'
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
|
|
def upgrade():
|
|
# 创建银行账户表
|
|
op.create_table(
|
|
'bank_accounts',
|
|
sa.Column('id', sa.String(32), primary_key=True),
|
|
sa.Column('account_name', sa.String(128), nullable=False, comment='账户名称'),
|
|
sa.Column('bank_name', sa.String(128), nullable=False, comment='开户银行'),
|
|
sa.Column('account_no', sa.String(64), unique=True, nullable=False, comment='银行账号'),
|
|
sa.Column('is_active', sa.Boolean, default=True, comment='是否启用'),
|
|
sa.Column('is_default', sa.Boolean, default=False, comment='是否默认账户'),
|
|
sa.Column('description', sa.String(256), nullable=True, comment='备注'),
|
|
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.func.now(), comment='创建时间'),
|
|
sa.Column('updated_at', sa.DateTime(timezone=True), server_default=sa.func.now(), onupdate=sa.func.now(), comment='更新时间'),
|
|
)
|
|
|
|
# 创建定时任务表
|
|
op.create_table(
|
|
'scheduled_tasks',
|
|
sa.Column('id', sa.String(32), primary_key=True),
|
|
sa.Column('name', sa.String(128), nullable=False, comment='任务名称'),
|
|
sa.Column('task_type', sa.String(32), nullable=False, comment='类型: external_api / internal_method'),
|
|
sa.Column('schedule', sa.String(128), nullable=False, comment='Cron 表达式或间隔秒数'),
|
|
sa.Column('config', sa.Text, nullable=True, comment='任务配置 JSON'),
|
|
sa.Column('is_active', sa.Boolean, default=True, comment='是否启用'),
|
|
sa.Column('last_run_at', sa.String(64), nullable=True, comment='最后执行时间 ISO'),
|
|
sa.Column('last_status', sa.String(16), nullable=True, comment='最后执行状态'),
|
|
sa.Column('last_error', sa.Text, nullable=True, comment='最后执行错误信息'),
|
|
sa.Column('created_by', sa.String(32), nullable=True, comment='创建者管理员 ID'),
|
|
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.func.now(), comment='创建时间'),
|
|
sa.Column('updated_at', sa.DateTime(timezone=True), server_default=sa.func.now(), onupdate=sa.func.now(), comment='更新时间'),
|
|
)
|
|
|
|
|
|
def downgrade():
|
|
# 删除新表
|
|
op.drop_table('scheduled_tasks')
|
|
op.drop_table('bank_accounts')
|