Skip to content

新增教师介绍展示与后台管理#5

Open
ElysiaFollower wants to merge 18 commits into
ZJUCSA:mainfrom
ElysiaFollower:feature/mentors-roster
Open

新增教师介绍展示与后台管理#5
ElysiaFollower wants to merge 18 commits into
ZJUCSA:mainfrom
ElysiaFollower:feature/mentors-roster

Conversation

@ElysiaFollower

Copy link
Copy Markdown
Contributor

背景

本 PR 为官网新增「教师介绍」公开展示与后台维护入口,用于集中展示协会当前重点对接教师的公开资料、研究方向、联系方式和外部主页,并为维护者提供教师资料编辑、同步建议审核和发布工作流。

配套后端 PR:ZJUCSA/csa-backend#2

主要变更

公开教师介绍页

  • 新增 /mentors 教师介绍列表页:
    • 通过 /teachers/list 读取后端公开教师数据。
    • 展示教师头像、姓名、职称、研究方向、单位、简介摘要和资料更新时间。
    • 支持加载态、空数据态、错误态和头像加载失败后的首字 fallback。
    • 保持响应式布局,兼容桌面和移动端访问。
  • 新增 /mentors/:id 教师详情页:
    • 通过 /teachers/detail?id=... 读取单个教师详情。
    • 展示身份摘要、邮箱、资料更新时间、简介、研究方向、外部主页和来源入口。
    • 根据教师姓名更新页面标题,详情不存在或接口失败时提供明确的错误态和返回入口。
  • 在主导航加入 Mentors 入口,并将列表页和详情页纳入 active 状态判断。

后台教师介绍管理

  • 新增 /admin/mentors 教师介绍管理页,并接入后台侧边栏「教师介绍管理」入口。
  • 支持后台维护者读取完整教师记录,包括启用状态、排序、公开字段、来源配置、字段来源和同步草稿。
  • 支持新增、编辑、删除教师资料:
    • 基础字段:姓名、职称、所属单位、邮箱、头像、研究方向、摘要、简介。
    • 来源配置:标准浙大个人主页 URL、外部主页链接。
    • 状态字段:启用状态、排序。
  • 前端增加保存前校验:
    • 姓名必填。
    • 排序值必须为正整数且不能冲突。
    • 邮箱必须符合公开邮箱格式。
    • 头像 URL 必须是 http(s) 地址或站内资源路径。
    • 标准浙大个人主页必须符合 https://person.zju.edu.cn/<slug> 格式。
    • 外部链接必须是 http(s) URL,且去除尾斜杠后不能重复。
  • 支持对单个教师或全量教师发起同步,读取后端生成的同步草稿状态。
  • 支持审核同步建议:
    • 按字段勾选发布同步草稿。
    • 可忽略同步草稿并保留当前已发布资料。
    • 区分 pending、no_change、no_source、unsupported、failed 等同步状态,避免维护者误判同步结果。

工程清理

  • 停止跟踪前端 dist/ 构建产物,并将 dist 加入 .gitignore
  • 移除了本阶段临时规划文档和未使用的前端 seed 数据,避免将开发过程资料带入 main。
  • 本 PR 最终不新增 docs/ 跟踪文件,教师展示数据以配套后端 API 为准。

影响范围

  • 新增面向用户的教师介绍入口,不改变现有首页、新闻、活动、招新、用户后台等页面路由语义。
  • 管理后台新增一个数据管理子页面,仍沿用现有后台登录与管理员路由保护。
  • 前端运行依赖配套后端 PR 提供的 /teachers/list/teachers/detail/teachers/admin/* 接口;后端未部署时页面会进入错误态,不会静默展示过期本地数据。
  • 合并和部署时建议后端迁移/API 先于前端发布,或在同一发布窗口内完成。

验证

已在本地执行:

pnpm build
git diff --check upstream/main...HEAD

结果:

  • pnpm build 构建成功。
  • git diff --check upstream/main...HEAD 无 whitespace/error 输出。

构建过程中仍有现有工具链提示:

  • Browserslist caniuse-lite 数据较旧。
  • 部分 chunk 在压缩后超过 500 kB。

这些提示未阻断构建,本 PR 未专门处理前端分包和 Browserslist 数据更新问题。

后续注意

  • 教师资料内容由后台 API 提供,前端不再维护临时 seed 数据。
  • 同步建议的审核发布逻辑在后端完成,前端只负责呈现草稿差异和提交维护者选择。
  • 头像使用远端 URL,前端提供加载失败 fallback;后续如需改为站内资产或对象存储统一管理,应在数据层配置中调整。

@ElysiaFollower ElysiaFollower changed the title [codex] 新增教师介绍展示与后台管理 新增教师介绍展示与后台管理 May 3, 2026
@ElysiaFollower
ElysiaFollower marked this pull request as ready for review May 3, 2026 14:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant