feat(content): 发布体系 大/小图 + 公开 + 园区端发布

- 迁移0018:content_items 加 card_mode/is_public/source/tenant_id
- ContentRepository:_to_dict/create/update 含新字段;list 加 public_only/tenant_id 过滤
- /opc/content 仅 published+公开;/opc/content/{id} 非公开→404
- 园区端 POST /park/api/content:发布人强制=园区名、source=carrier、tenant=本园、is_public 默认false(仅大屏)、card_mode默认small
- 园区端 GET /park/api/content:本园区内容(含未公开)供大屏
- schemas 补 card_mode/is_public

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Pine
2026-08-27 15:42:39 +08:00
parent a60f0ed180
commit 89bd7e8390
6 changed files with 100 additions and 6 deletions
+29
View File
@@ -0,0 +1,29 @@
"""资讯发布体系:card_mode/is_public/source/tenant_id
Revision ID: 0018_content_publish
Revises: 0017_content_detail
Create Date: 2026-08-27
"""
from __future__ import annotations
import sqlalchemy as sa
from alembic import op
revision = "0018_content_publish"
down_revision = "0017_content_detail"
branch_labels = None
depends_on = None
def upgrade() -> None:
op.add_column("content_items", sa.Column("card_mode", sa.String(), nullable=False, server_default="big"))
op.add_column("content_items", sa.Column("is_public", sa.Boolean(), nullable=False, server_default="1"))
op.add_column("content_items", sa.Column("source", sa.String(), nullable=False, server_default="operator"))
op.add_column("content_items", sa.Column("tenant_id", sa.String(), nullable=False, server_default=""))
def downgrade() -> None:
op.drop_column("content_items", "tenant_id")
op.drop_column("content_items", "source")
op.drop_column("content_items", "is_public")
op.drop_column("content_items", "card_mode")