用户反馈
在模拟排课界面点击张小凡老师的形势与政策3课程(课号540101)会显示这门课的所有老师的点评。体育课也有类似的问题。
意图判断
- 类型: bug_report
- 相关仓库: YourTJCourse-Serverless
- 相关模块: backend (API), scheduler (frontend)
- 标签: bug, area:backend, area:scheduler
去重检查
未发现语义重复的 open issue。Issue #79 仅涉及移动端评价弹窗样式,不涉及教师过滤逻辑。
代码静态扫描结果
根因 1: courses 表按 courseCode 聚合, 不区分教师
迁移 backend/migrations/010_materialize_courses_from_pk.sql 中的逻辑: courses 表对于形势与政策3 (540101)、体育课等多教师公共课只有一条记录, teacher_id 指向随机一名教师(MIN 聚合结果)。所有教师的教学班共享同一个 course_id。
根因 2: reviews 表缺少教师字段
backend/schema.sql 中 reviews 表只有 course_id, 没有 teacher_id / teacher_name。不同教师的教学班点评全部混入同一个 course_id 下。
根因 3: 后端 by-code 接口的教师过滤在回退逻辑中失效
backend/src/routes/public.ts 的 GET /course/by-code/:code 端点:
- 当 hasTeacherFilter = true 时, 先尝试 pkNamedRow / preferredRow 按 code + teacher 联合查找 courseId
- 如果联合查找无结果 -> 回退到仅按 code 查找(无教师过滤), 见 aliasRow / directRow 分支
- 构建 matchedIds 时, sameNameTeacherRows 查询只找到同一个 courseId(因为 courses 表只有一条记录)
- 最终 reviews 的 WHERE 子句: course_id IN (?) -> 仅查询这一个 course_id -> 返回该课号下所有教师的全部点评
Proposed Fix
推荐方案: 为 reviews 表添加 teacher_name 并升级 API 过滤逻辑
- Schema migration: 向 reviews 表添加 teacher_name TEXT DEFAULT 列
- Review 提交接口: 修改 POST /review 接收可选的 teacher_name 参数并存储
- by-code API: 当 hasTeacherFilter 为 true 时, 在 review 查询 WHERE 子句中增加 AND teacher_name = ? 或模糊匹配条件
- 回填策略: 对于已有 reviews, teacher_name 为空时不同步回填, 但新提交的 review 包含教师信息后可以逐步积累教师粒度的点评数据
补充措施
- 前端(CourseReviewDrawer.vue)在提交点评时也应传递当前查看的 teacherName / teacherCode, 确保新点评能关联到具体教师
- 在 POST /review 或其他评论提交路径中也对齐此逻辑
Reporter: wendaining (QQ: 2215589975)
来源: QQ 反馈群
用户反馈
意图判断
去重检查
未发现语义重复的 open issue。Issue #79 仅涉及移动端评价弹窗样式,不涉及教师过滤逻辑。
代码静态扫描结果
根因 1: courses 表按 courseCode 聚合, 不区分教师
迁移 backend/migrations/010_materialize_courses_from_pk.sql 中的逻辑: courses 表对于形势与政策3 (540101)、体育课等多教师公共课只有一条记录, teacher_id 指向随机一名教师(MIN 聚合结果)。所有教师的教学班共享同一个 course_id。
根因 2: reviews 表缺少教师字段
backend/schema.sql 中 reviews 表只有 course_id, 没有 teacher_id / teacher_name。不同教师的教学班点评全部混入同一个 course_id 下。
根因 3: 后端 by-code 接口的教师过滤在回退逻辑中失效
backend/src/routes/public.ts 的 GET /course/by-code/:code 端点:
Proposed Fix
推荐方案: 为 reviews 表添加 teacher_name 并升级 API 过滤逻辑
补充措施
Reporter: wendaining (QQ: 2215589975)
来源: QQ 反馈群