496c006ba0
- 新增 task_park_visibility 表(task_id+park_id+visible,唯一约束),alembic 0038 迁移
- TaskParkVisibilityRepository:get/set(幂等 upsert)/hidden_ids
- rbac_portals 新增载体端任务管理:GET /carrier/tasks(平台级任务+本载体下架状态)、POST /carrier/tasks/{id}/hide|unhide(不可编辑,无 update 端点)
- 大屏 /park/api/tasks 过滤升级:本园专属 ∪ 平台级任务(受载体下架控制)
- seed:u_car_01 幂等绑定默认园区 T001
43 lines
1.6 KiB
Python
43 lines
1.6 KiB
Python
"""载体端任务展示开关(task_park_visibility)。
|
|
|
|
平台级任务自动下发到各载体;载体端任务管理中可对本园区下架/上架(visible),
|
|
不影响任务内容与其他端展示。缺省无行 = 可见。
|
|
|
|
Revision ID: 0038_task_park_visibility
|
|
Revises: 0037_market
|
|
Create Date: 2026-09-01
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
import sqlalchemy as sa
|
|
from alembic import op
|
|
|
|
revision = "0038_task_park_visibility"
|
|
down_revision = "02d10eccb1f9"
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
S = sa.String
|
|
|
|
|
|
def upgrade() -> None:
|
|
op.create_table(
|
|
"task_park_visibility",
|
|
sa.Column("id", S(), primary_key=True),
|
|
sa.Column("task_id", S(), nullable=False),
|
|
sa.Column("park_id", S(), nullable=False, server_default=""),
|
|
sa.Column("visible", sa.Boolean(), nullable=False, server_default=sa.true()),
|
|
sa.Column("updated_by", S(), nullable=False, server_default=""),
|
|
sa.Column("updated_at", S(), nullable=False, server_default=""),
|
|
sa.Column("created_at", S(), nullable=False, server_default=""),
|
|
sa.UniqueConstraint("task_id", "park_id", name="uq_task_park_vis"),
|
|
)
|
|
op.create_index("ix_task_park_visibility_task_id", "task_park_visibility", ["task_id"])
|
|
op.create_index("ix_task_park_visibility_park_id", "task_park_visibility", ["park_id"])
|
|
|
|
|
|
def downgrade() -> None:
|
|
op.drop_index("ix_task_park_visibility_park_id", table_name="task_park_visibility")
|
|
op.drop_index("ix_task_park_visibility_task_id", table_name="task_park_visibility")
|
|
op.drop_table("task_park_visibility")
|