"""create fission_tasks table

Revision ID: 010
Revises: 009
Create Date: 2026-06-13

第11环裂变引擎：1爆款→N套完整笔记包（非只换文案）。
fission_tasks 是裂变任务主表，挂载在工作台内呈现。
reference_level: low/mid/high（参考程度）
"""
from alembic import op
import sqlalchemy as sa

revision = "010"
down_revision = "009"
branch_labels = None
depends_on = None


def upgrade():
    op.create_table(
        "fission_tasks",
        sa.Column("id", sa.BigInteger, primary_key=True, autoincrement=True),
        sa.Column(
            "workspace_id",
            sa.BigInteger,
            sa.ForeignKey("workspaces.id", ondelete="CASCADE"),
            nullable=False,
            comment="多租户隔离",
        ),
        sa.Column(
            "source_note",
            sa.Text,
            nullable=True,
            comment="爆款源笔记内容（文案+图描述，JSON存储）",
        ),
        sa.Column(
            "reference_level",
            sa.String(10),
            nullable=False,
            server_default="mid",
            comment="参考程度: low/mid/high",
        ),
        sa.Column(
            "fanout_count",
            sa.Integer,
            nullable=False,
            server_default="3",
            comment="裂变套数（默认3套）",
        ),
        sa.Column(
            "status",
            sa.String(20),
            nullable=False,
            server_default="pending",
            comment="状态: pending/generating/done/failed",
        ),
        sa.Column(
            "created_at",
            sa.DateTime,
            server_default=sa.func.now(),
            nullable=False,
        ),
    )
    op.create_index("idx_fission_tasks_workspace_id", "fission_tasks", ["workspace_id"])


def downgrade():
    op.drop_index("idx_fission_tasks_workspace_id", table_name="fission_tasks")
    op.drop_table("fission_tasks")
