"""add user.force_onboarding 运营后台「一键开启新手引导」:置 true → 用户下次启动 App 被强制重走引导教程(即便本地已完成), 走完引导(/api/v1/user/onboarding/complete)后端自动清回 false,不无限循环。 见 app/models/user.py force_onboarding 列、admin POST /admin/api/users/{id}/force-onboarding。 Revision ID: user_force_onboarding Revises: onboarding_completion Create Date: 2026-06-10 21:30:00.000000 """ from typing import Sequence, Union from alembic import op import sqlalchemy as sa # revision identifiers, used by Alembic. revision: str = "user_force_onboarding" down_revision: Union[str, Sequence[str], None] = "onboarding_completion" branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: # sa.false() 渲染成 PG 的 false / SQLite 的 0,两端兼容(同 debug_trace_enabled)。 op.add_column( "user", sa.Column( "force_onboarding", sa.Boolean(), nullable=False, server_default=sa.false(), ), ) def downgrade() -> None: op.drop_column("user", "force_onboarding")