Files
server-core/alembic/versions/0038_task_park_visibility.py
T
Pine 496c006ba0 feat(task): 载体端任务流通——平台级任务下发载体端+可下架/上架(不可编辑)+大屏联动
- 新增 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
2026-09-01 14:44:14 +08:00

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")