"""add intent_documents (Спринт 7, часть A — мульти-RAG, подход A) Revision ID: i5c8b3a45f12 Revises: h4b52e9dc0f83 Create Date: 2026-04-27 12:00:00.000000 M:N между ветками (`intents`) и загруженными документами (`documents`). Подписка ветки на конкретные document_id, чтобы при retrieval брать только подписанные чанки. Дефолт пустой подписки — 0 чанков (логика в chat_service, не в схеме). """ from typing import Sequence, Union from alembic import op import sqlalchemy as sa revision: str = 'i5c8b3a45f12' down_revision: Union[str, None] = 'h4b52e9dc0f83' branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: op.create_table( 'intent_documents', sa.Column('intent_id', sa.Integer(), nullable=False), sa.Column('document_id', sa.String(length=36), nullable=False), sa.Column('created_at', sa.DateTime(timezone=True), nullable=False), sa.ForeignKeyConstraint(['intent_id'], ['intents.id'], ondelete='CASCADE'), sa.ForeignKeyConstraint(['document_id'], ['documents.id'], ondelete='CASCADE'), sa.PrimaryKeyConstraint('intent_id', 'document_id'), ) op.create_index( 'ix_intent_documents_document_id', 'intent_documents', ['document_id'], ) def downgrade() -> None: op.drop_index('ix_intent_documents_document_id', table_name='intent_documents') op.drop_table('intent_documents')