# -*- coding: utf-8 -*- """ 管理端 — 租户管理员 CRUD Pydantic Schema。 覆盖:管理员列表、创建、编辑、重置密码。 需求: 14.1, 14.2, 14.4, 14.5 """ from __future__ import annotations from datetime import datetime from pydantic import Field from app.schemas.base import CamelModel # ── 管理员列表 ──────────────────────────────────────────── class TenantAdminListItem(CamelModel): """租户管理员列表项。""" id: int username: str display_name: str | None = None tenant_id: int # 所属租户 ID(上游 BIGINT) tenant_name: str | None = None # 所属租户名称(JOIN biz.tenants) admin_type: str = "tenant_admin" # tenant_admin / site_admin managed_site_ids: list[int] = Field(default_factory=list) is_active: bool = True created_at: str | None = None last_login_at: str | None = None # ── 创建管理员 ──────────────────────────────────────────── class TenantAdminCreateRequest(CamelModel): """创建租户管理员请求。""" username: str = Field(..., min_length=1, max_length=100, description="用户名") password: str = Field(..., min_length=1, description="初始密码") display_name: str | None = Field(None, max_length=100, description="显示名称") # tenant_id 从 biz.tenants 选择(GET /api/admin/tenants 获取可选列表) tenant_id: int = Field(..., description="所属租户 ID(来源: biz.tenants)") managed_site_ids: list[int] = Field(..., min_length=1, description="管辖门店 ID 列表") # ── 编辑管理员 ──────────────────────────────────────────── class TenantAdminEditRequest(CamelModel): """编辑租户管理员请求(所有字段可选)。""" username: str | None = Field(None, min_length=1, max_length=100, description="用户名(需全局唯一)") display_name: str | None = Field(None, max_length=100, description="显示名称") managed_site_ids: list[int] | None = Field(None, description="管辖门店 ID 列表") is_active: bool | None = Field(None, description="账号状态") # ── 重置密码 ────────────────────────────────────────────── class ResetPasswordRequest(CamelModel): """重置密码请求。""" new_password: str = Field(..., min_length=1, description="新密码")