"""persistent user memory table Revision ID: 005_persistent_user_memory Revises: 004_add_tools_table Create Date: 2026-04-06 """ from alembic import op import sqlalchemy as sa from sqlalchemy.dialects.mysql import CHAR, JSON revision = "005_persistent_user_memory" down_revision = "004_add_tools_table" branch_labels = None depends_on = None def upgrade() -> None: op.create_table( "persistent_user_memories", sa.Column("id", CHAR(36), nullable=False, comment="主键"), sa.Column("scope_kind", sa.String(16), nullable=False, comment="agent 或 workflow"), sa.Column("scope_id", CHAR(36), nullable=False, comment="Agent ID 或 Workflow ID"), sa.Column("session_key", sa.String(512), nullable=False, comment="会话键 user_id"), sa.Column("payload", JSON(), nullable=False, comment="记忆 JSON"), sa.Column( "updated_at", sa.DateTime(), server_default=sa.text("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"), nullable=True, comment="更新时间", ), sa.PrimaryKeyConstraint("id"), sa.UniqueConstraint("scope_kind", "scope_id", "session_key", name="uq_persistent_mem_scope_session"), mysql_charset="utf8mb4", mysql_collate="utf8mb4_unicode_ci", ) op.create_index( "ix_persistent_mem_lookup", "persistent_user_memories", ["scope_kind", "scope_id", "session_key"], unique=False, ) def downgrade() -> None: op.drop_index("ix_persistent_mem_lookup", table_name="persistent_user_memories") op.drop_table("persistent_user_memories")