| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- """分类扁平模式:一级分类新增 flat_mode 标记。
- Revision ID: 0005_category_flat_mode
- Revises: 0004_organization_user_maintenance
- Create Date: 2026-08-13
- 变更要点:
- 1. doc_category 新增 flat_mode TINYINT(1) NOT NULL DEFAULT 0,
- 仅一级分类(parent_id IS NULL)字段在业务上有意义;二级及以下恒为 0。
- 2. 语义:flat_mode=true 时,挂在该分类(直接或间接)下的主案
- 在前端不展示"挂载子方案"与"挂载配套资料"入口;
- 后端挂载接口不强制拒绝(弱约束)。
- 3. 切换保护:update_category 在 false→true 切换前会校验
- 该一级分类下是否已存在 SUB_PLAN 子方案或配套资料挂载,
- 若有则拒绝切换并返回 CATEGORY_FLAT_MODE_CONFLICT。
- """
- from __future__ import annotations
- from collections.abc import Sequence
- from alembic import op
- import sqlalchemy as sa
- revision: str = "0005_category_flat_mode"
- down_revision: str | None = "0004_organization_user_maintenance"
- branch_labels: str | Sequence[str] | None = None
- depends_on: str | Sequence[str] | None = None
- def upgrade() -> None:
- op.add_column(
- "doc_category",
- sa.Column(
- "flat_mode",
- sa.Boolean(),
- nullable=False,
- server_default=sa.text("0"),
- ),
- )
- def downgrade() -> None:
- op.drop_column("doc_category", "flat_mode")
|