"""tasks.context_summary 列(§8.8 Phase 2 阈值结构化摘要). Revision ID: 0021 Revises: 0020 Create Date: 2026-07-09 给 tasks 加 context_summary(TEXT NULL):窗口中段折叠后的结构化摘要。 Session.load 时若非空,在 system 之后注入一条仅内存的「前情摘要」消息; 与 context_base_idx(0019)配套 —— 折叠 = 摘要写这列 + base 推进到切点。 原始消息仍全量留 messages 表(边界而非删除),web 端照旧翻完整历史。 NULL = 从未折叠,行为与 0019 之前完全一致。additive,无数据迁移。 """ from typing import Sequence, Union import sqlalchemy as sa from alembic import op revision: str = "0021" down_revision: Union[str, None] = "0020" branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: op.add_column( "tasks", sa.Column("context_summary", sa.Text(), nullable=True), ) def downgrade() -> None: op.drop_column("tasks", "context_summary")