From 50480dc50679a35abe7bf63afbfbcc8706308f7b Mon Sep 17 00:00:00 2001 From: Mark Date: Thu, 8 Jan 2026 15:21:23 +0800 Subject: [PATCH] [add] migration script --- .../versions/a959b201c507_202601081520.py | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 api/migrations/versions/a959b201c507_202601081520.py diff --git a/api/migrations/versions/a959b201c507_202601081520.py b/api/migrations/versions/a959b201c507_202601081520.py new file mode 100644 index 00000000..02331592 --- /dev/null +++ b/api/migrations/versions/a959b201c507_202601081520.py @@ -0,0 +1,48 @@ +"""202601081520 + +Revision ID: a959b201c507 +Revises: c6d4afa27bf0 +Create Date: 2026-01-08 15:20:29.742666 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = 'a959b201c507' +down_revision: Union[str, None] = 'c6d4afa27bf0' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('forgetting_cycle_history', + sa.Column('id', sa.UUID(), nullable=False, comment='主键ID'), + sa.Column('end_user_id', sa.String(length=255), nullable=False, comment='终端用户ID'), + sa.Column('execution_time', sa.DateTime(), nullable=False, comment='执行时间'), + sa.Column('merged_count', sa.Integer(), nullable=True, comment='本次成功融合的节点对数'), + sa.Column('failed_count', sa.Integer(), nullable=True, comment='本次融合失败的节点对数'), + sa.Column('average_activation_value', sa.Float(), nullable=True, comment='平均激活值'), + sa.Column('total_nodes', sa.Integer(), nullable=True, comment='总节点数'), + sa.Column('low_activation_nodes', sa.Integer(), nullable=True, comment='低于遗忘阈值的节点总数(包含已融合、失败和待处理的)'), + sa.Column('duration_seconds', sa.Float(), nullable=True, comment='执行耗时(秒)'), + sa.Column('trigger_type', sa.String(length=50), nullable=True, comment='触发类型: manual/scheduled'), + sa.PrimaryKeyConstraint('id') + ) + op.create_index('idx_end_user_time', 'forgetting_cycle_history', ['end_user_id', 'execution_time'], unique=False) + op.create_index('idx_execution_time', 'forgetting_cycle_history', ['execution_time'], unique=False) + op.create_index(op.f('ix_forgetting_cycle_history_id'), 'forgetting_cycle_history', ['id'], unique=False) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_index(op.f('ix_forgetting_cycle_history_id'), table_name='forgetting_cycle_history') + op.drop_index('idx_execution_time', table_name='forgetting_cycle_history') + op.drop_index('idx_end_user_time', table_name='forgetting_cycle_history') + op.drop_table('forgetting_cycle_history') + # ### end Alembic commands ###