feat(opc): OPC认证/入园/转园 端点 + 园区端方案B审核 + 迁移0013
- rbac_opc.py: /opc/certification/apply|mine、/opc/park-transfer/apply|mine - rbac_admin.py: platform operator 兜底 list/review (opc-certifications/park-admissions/park-transfers),通过回填 users.set_classification - park/routers.py: carrier 角色凭 operator_user_id 定位本园区,/park/api park-admissions|transfers view+review - park/tenants.py: bind_admin 写 operator_user_id + find_by_operator_user_id - 迁移 0013: opc_certifications + park_transfers + park_tenants.operator_user_id
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
"""opc_certifications + park_transfers + park_tenants 归属列
|
||||
|
||||
Revision ID: 0013_opc_cert_park_transfer
|
||||
Revises: 0012_park_admissions
|
||||
Create Date: 2026-08-26
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import sqlalchemy as sa
|
||||
from alembic import op
|
||||
|
||||
revision = "0013_opc_cert_park_transfer"
|
||||
down_revision = "0012_park_admissions"
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
# OPC 认证申请表(用户提交资料 → 运营方审核)
|
||||
op.create_table(
|
||||
"opc_certifications",
|
||||
sa.Column("id", sa.String(), primary_key=True),
|
||||
sa.Column("user_id", sa.String(), default="", index=True),
|
||||
sa.Column("username", sa.String(), default=""),
|
||||
sa.Column("real_name", sa.String(), default=""),
|
||||
sa.Column("gender", sa.String(), default=""),
|
||||
sa.Column("address", sa.String(), default=""),
|
||||
sa.Column("industry", sa.String(), default=""),
|
||||
sa.Column("ability", sa.Text(), default=""),
|
||||
sa.Column("phone", sa.String(), default=""),
|
||||
sa.Column("docs_json", sa.Text(), default="{}"),
|
||||
sa.Column("status", sa.String(), default="pending"),
|
||||
sa.Column("review_comment", sa.String(), default=""),
|
||||
sa.Column("reviewed_by", sa.String(), default=""),
|
||||
sa.Column("reviewed_at", sa.String(), default=""),
|
||||
sa.Column("created_at", sa.String(), default=""),
|
||||
sa.Column("updated_at", sa.String(), default=""),
|
||||
)
|
||||
|
||||
# OPC 转园申请表(园区 OPC 发起 → 园区/平台审核)
|
||||
op.create_table(
|
||||
"park_transfers",
|
||||
sa.Column("id", sa.String(), primary_key=True),
|
||||
sa.Column("user_id", sa.String(), default="", index=True),
|
||||
sa.Column("username", sa.String(), default=""),
|
||||
sa.Column("from_park_id", sa.String(), default=""),
|
||||
sa.Column("from_park_name", sa.String(), default=""),
|
||||
sa.Column("to_park_id", sa.String(), default=""),
|
||||
sa.Column("to_park_name", sa.String(), default=""),
|
||||
sa.Column("reason", sa.Text(), default=""),
|
||||
sa.Column("status", sa.String(), default="pending"),
|
||||
sa.Column("review_comment", sa.String(), default=""),
|
||||
sa.Column("reviewed_by", sa.String(), default=""),
|
||||
sa.Column("reviewed_at", sa.String(), default=""),
|
||||
sa.Column("created_at", sa.String(), default=""),
|
||||
sa.Column("updated_at", sa.String(), default=""),
|
||||
)
|
||||
|
||||
# 园区→载体归属:园区端据此只审本园区
|
||||
op.add_column("park_tenants", sa.Column("operator_user_id", sa.String(), default=""))
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
op.drop_column("park_tenants", "operator_user_id")
|
||||
op.drop_table("park_transfers")
|
||||
op.drop_table("opc_certifications")
|
||||
Reference in New Issue
Block a user