r"""projects.summary (суммаризация заметки для контекста LLM, ТЗ 3.11).
Заодно нормализация ai_proposal: движок раньше сериализовал JSON с
ensure_ascii=True — кириллица лежала \u-эскейпами (агенты через MCP видели
«u0432...» вместо букв). Раунд-трип через jsonb вычищает эскейпы.
Revision ID: a9b8c7d6e5f4
Revises: f1a2b3c4d5e6
Create Date: 2026-09-22
"""
from collections.abc import Sequence
import sqlalchemy as sa
from alembic import op
revision: str = "a9b8c7d6e5f4"
down_revision: str | Sequence[str] | None = "f1a2b3c4d5e6"
branch_labels: str | Sequence[str] | None = None
depends_on: str | Sequence[str] | None = None
def upgrade() -> None:
op.add_column("projects", sa.Column("summary", sa.Text(), nullable=True))
op.execute(
"UPDATE tasks SET ai_proposal = (ai_proposal::text::jsonb)::json"
" WHERE ai_proposal IS NOT NULL"
)
def downgrade() -> None:
op.drop_column("projects", "summary")