Files
ClassManager/.cospec/plan/changes/fix-admin-multi-issues/proposal.md
2026-04-14 11:35:56 +08:00

3.8 KiB
Raw Blame History

变更:管理端多项功能修复与改版

原因

管理端存在多项问题需要修复跨域配置导致API调用失败、导航栏各页面不一致、作业模块用途不符需求、考勤模块交互需改版、家长手机号需要权限控制。

变更内容

1. 跨域问题修复(确认)

  • 之前的 500 错误已通过添加 PermissionChecker.get_user_class_id 方法修复
  • CORS 中间件配置本身正确(CORSMiddleware 已注册且包含 OPTIONS 方法)
  • AuthMiddleware 虽已导入但未在 main.py 中注册为全局中间件,不影响当前功能(认证由路由层 get_current_user 处理)
  • 后端 .env 文件由服务器单独配置,不在版本控制中,无需添加默认值

2. 统一导航栏

  • 创建 frontend/includes/nav.php 共享模板,所有 admin 页面统一引入
  • 导航项角色条件统一为:操行分管理=班主任/班长,作业管理=班主任/学习委员,考勤管理=班主任/考勤委员,科目管理=班主任/学习委员,管理员管理=班主任
  • 修复 dashboard.php 密码链接拼写错误 passwork.phppassword.php
  • 接受参数:$role$current_page(用于 active 状态)

3. 作业管理改版(仅加减操行分)

  • 移除作业发布功能(创建作业、查看提交记录)
  • 改为类似操行分管理页面的交互:选择学生 + 选择扣分类型(未交作业/迟交作业等)+ 原因 + 提交扣分
  • 前端 homework.php 完全重写:学生列表表格 + 批量加减分模态框,扣分类型为作业相关(未交-2分、迟交-1分
  • 后端保留 add_conduct_points 接口(已有),通过 related_type="homework" 关联
  • 角色权限不变:班主任 + 学习委员

4. 考勤管理改版(学生方格扣分制)

  • 前端 attendance.php 重写UI
    • 顶部日期选择器
    • 主体区域学生方格网格flex-wrap 布局每行7个
    • 每个方格显示学生姓名,点击可选中(高亮变红表示缺勤扣分)
    • 底部工具栏:全选/取消、批量选择状态(缺勤/迟到/请假)、提交按钮
    • 下方保留历史记录表格
  • 后端考勤逻辑不变,新增批量提交支持(或前端循环调用现有单个添加接口)
  • 扣分规则不变:缺勤-5分、迟到-2分、请假-1分

5. 家长手机号权限控制

  • frontend/admin/students.php 表格中 家长手机号 列仅 班主任 角色可见
  • 非班主任角色显示为 *** 或隐藏该列
  • 新增/导入学生表单中的手机号字段保持不变(任何有学生管理权限的角色都能录入)

6. 附带修复

  • 修复 dashboard.php 密码链接 passwork.phppassword.php(如果导航模板方案未覆盖的话)
  • 统一所有角色判断为 学习委员(当前 homework.php 用 科代表

影响

  • 受影响的规范:管理端导航、作业管理、考勤管理、学生管理
  • 受影响的代码
    • frontend/includes/nav.php: 新建 - 统一导航栏模板
    • frontend/admin/dashboard.php: 移除硬编码导航栏,引入 nav.php
    • frontend/admin/students.php: 移除硬编码导航栏,引入 nav.php手机号列增加角色判断
    • frontend/admin/conduct.php: 移除硬编码导航栏,引入 nav.php
    • frontend/admin/homework.php: 完全重写 - 改为加减操行分模式
    • frontend/admin/attendance.php: 完全重写 - 改为学生方格扣分制
    • frontend/admin/history.php: 移除硬编码导航栏,引入 nav.php
    • frontend/admin/subjects.php: 移除硬编码导航栏,引入 nav.php
    • frontend/admin/admins.php: 移除硬编码导航栏,引入 nav.php
    • frontend/admin/password.php: 移除硬编码导航栏,引入 nav.php
    • frontend/assets/css/admin.css: 新增学生方格网格样式