Skip to content

13_School_API

本文档描述学校相关接口,接口实现见 app/api/schools.py

概览

  • 资源:schoolsschool_adminsbranding(Logo)
  • 权限(简要):
    • 平台管理员(platform_admin):可创建/删除学校、管理学校管理员
    • 学校管理员(school_admin):可更新本校信息、读取品牌信息、上传 Logo
    • 登录用户:可通过 /branding/me 获取自己所属学校的品牌信息

1. 学校管理

  • GET /schools

    • 权限:学校管理员(仅本校)/平台管理员(全平台)
    • 查询:q?(名称模糊)、region?page?size?
    • 响应:SchoolOut[]
  • POST /schools(201)

    • 权限:平台管理员
    • 入参:SchoolCreate { name, region? }
    • 响应:SchoolOut
  • PUT /schools/{school_id}

    • 权限:学校管理员(本校)/平台管理员
    • 入参:SchoolUpdate { name?, region?, logo_url? }
    • 响应:SchoolOut
  • DELETE /schools/{school_id}(204)

    • 权限:平台管理员
  • GET /schools/{school_id}/statistics

    • 权限:学校管理员(本校)/平台管理员
    • 响应:{ total_students, total_teachers, total_admins, total_classes }

2. 学校管理员管理

  • GET /schools/{school_id}/admins

    • 权限:平台管理员
    • 响应:UserOut[](学校管理员列表)
  • POST /schools/{school_id}/admins

    • 权限:平台管理员
    • 入参:SchoolAdminAssign { user_id, role="school_admin" }
    • 响应:UserOut
  • DELETE /schools/{school_id}/admins/{user_id}(204)

    • 权限:平台管理员

  • GET /branding/me

    • 权限:登录用户
    • 响应:{ school_id, logo_url }
  • GET /schools/{school_id}/branding

    • 权限:学校管理员(本校)/平台管理员
    • 响应:{ school_id, logo_url }
  • PUT /schools/{school_id}/branding

    • 权限:学校管理员(本校)/平台管理员
    • 入参:{ logo_url }
    • 响应:{ school_id, logo_url }
  • POST /schools/{school_id}/branding/logo

    • 权限:学校管理员(本校)/平台管理员
    • 说明:multipart 上传图片(支持 .png/.jpg/.jpeg/.webp/.gif/.bmp),服务器保存后直接写入 schools.logo_url
    • 响应:{ school_id, logo_url }

4. 数据模型(节选)

  • SchoolOut: id, name, region?, logo_url?, created_at
  • SchoolCreate: name, region?
  • SchoolUpdate: name?, region?, logo_url?
  • UserOut: 学校管理员列表复用通用用户结构

5. 变更说明

  • 09_User_Management_API.md 中的学校相关接口已迁移至本文档;旧文档中保留了迁移提示。