Files
Neo-ZQYY/apps/backend/app/schemas/admin_tenant_admins.py
Neo 6f8f12314f feat: 累积功能变更 — 聊天集成、租户管理、小程序更新、ETL 增强、迁移脚本
包含多个会话的累积代码变更:
- backend: AI 聊天服务、触发器调度、认证增强、WebSocket、调度器最小间隔
- admin-web: ETL 状态页、任务管理、调度配置、登录优化
- miniprogram: 看板页面、聊天集成、UI 组件、导航更新
- etl: DWS 新任务(finance_area_daily/board_cache)、连接器增强
- tenant-admin: 项目初始化
- db: 19 个迁移脚本(etl_feiqiu 11 + zqyy_app 8)
- packages/shared: 枚举和工具函数更新
- tools: 数据库工具、报表生成、健康检查
- docs: PRD/架构/部署/合约文档更新

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 00:03:48 +08:00

66 lines
2.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- 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="新密码")