"""息壤记忆域:三级记忆表重建与触发/实录,退役旧记忆表 Revision ID: 004 Revises: 003 Create Date: 2026-08-22 旧 memories/memory_links 随旧记忆管线退役整体删除(开发数据丢弃语义,data-model §9), 新表按 app/models/xirang.py 重建。 """ from typing import Sequence, Union from alembic import op import sqlalchemy as sa revision: str = '004' down_revision: Union[str, Sequence[str], None] = '003' branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: op.drop_table('memory_links') op.drop_table('memories') op.create_table('memories', sa.Column('id', sa.String(length=80), nullable=False), sa.Column('character_id', sa.String(length=80), nullable=False), sa.Column('tier', sa.String(length=20), nullable=False), sa.Column('type', sa.String(length=40), nullable=False), sa.Column('status', sa.String(length=20), nullable=False), sa.Column('source', sa.String(length=20), nullable=False), sa.Column('content', sa.Text(), nullable=False), sa.Column('source_refs_json', sa.Text(), nullable=False), sa.Column('sensitivity', sa.String(length=20), nullable=False), sa.Column('priority', sa.Integer(), nullable=False), sa.Column('confidence', sa.Float(), nullable=False), sa.Column('vitality', sa.Float(), nullable=False), sa.Column('valid_until', sa.DateTime(timezone=True), nullable=True), sa.Column('realm', sa.String(length=40), nullable=False), sa.Column('prev_version_id', sa.String(length=80), nullable=True), sa.Column('recall_count', sa.Integer(), nullable=False), sa.Column('last_recalled_at', sa.DateTime(timezone=True), nullable=True), sa.Column('created_at', sa.DateTime(timezone=True), nullable=False), sa.Column('updated_at', sa.DateTime(timezone=True), nullable=False), sa.PrimaryKeyConstraint('id') ) op.create_index(op.f('ix_memories_character_id'), 'memories', ['character_id'], unique=False) op.create_index(op.f('ix_memories_tier'), 'memories', ['tier'], unique=False) op.create_index(op.f('ix_memories_type'), 'memories', ['type'], unique=False) op.create_index(op.f('ix_memories_status'), 'memories', ['status'], unique=False) op.create_index(op.f('ix_memories_prev_version_id'), 'memories', ['prev_version_id'], unique=False) op.create_table('memory_triggers', sa.Column('id', sa.String(length=80), nullable=False), sa.Column('memory_id', sa.String(length=80), nullable=False), sa.Column('kind', sa.String(length=20), nullable=False), sa.Column('pattern', sa.String(length=200), nullable=False), sa.Column('created_at', sa.DateTime(timezone=True), nullable=False), sa.ForeignKeyConstraint(['memory_id'], ['memories.id'], ), sa.PrimaryKeyConstraint('id') ) op.create_table('factual_records', sa.Column('id', sa.String(length=80), nullable=False), sa.Column('character_id', sa.String(length=80), nullable=False), sa.Column('canonization_id', sa.String(length=80), nullable=False), sa.Column('evidence_json', sa.Text(), nullable=False), sa.Column('summary', sa.Text(), nullable=False), sa.Column('occurred_at', sa.DateTime(timezone=True), nullable=False), sa.PrimaryKeyConstraint('id') ) def downgrade() -> None: op.drop_table('factual_records') op.drop_table('memory_triggers') op.drop_table('memories') op.create_table('memories', sa.Column('id', sa.String(length=80), nullable=False), sa.Column('character_id', sa.String(length=80), nullable=False), sa.Column('title', sa.String(length=200), nullable=True), sa.Column('content', sa.Text(), nullable=False), sa.Column('source', sa.String(length=40), nullable=False), sa.Column('importance', sa.Float(), nullable=False), sa.Column('sensitivity', sa.String(length=20), nullable=False), sa.Column('temporal_context_json', sa.Text(), nullable=False), sa.Column('evidence_ids_json', sa.Text(), nullable=False), sa.Column('expires_at', sa.DateTime(timezone=True), nullable=True), sa.Column('deleted_at', sa.DateTime(timezone=True), nullable=True), sa.Column('created_at', sa.DateTime(timezone=True), nullable=False), sa.Column('updated_at', sa.DateTime(timezone=True), nullable=False), sa.ForeignKeyConstraint(['character_id'], ['characters.id'], ), sa.PrimaryKeyConstraint('id') ) op.create_table('memory_links', sa.Column('id', sa.String(length=80), nullable=False), sa.Column('from_memory_id', sa.String(length=80), nullable=False), sa.Column('to_memory_id', sa.String(length=80), nullable=False), sa.Column('relation', sa.String(length=40), nullable=False), sa.Column('created_at', sa.DateTime(timezone=True), nullable=False), sa.ForeignKeyConstraint(['from_memory_id'], ['memories.id'], ), sa.ForeignKeyConstraint(['to_memory_id'], ['memories.id'], ), sa.PrimaryKeyConstraint('id') )