问题描述
当用户只关注了往期学期的班级、当前学期没有关注班级时,Dashboard 首页会显示当前学期空状态,并隐藏正常的作业/课表概览。空状态只提供“浏览课程 / 按代码匹配”,没有任何历史内容入口,因此很容易被理解成“账号没有课程,历史作业和课表已丢失”。
Bot 的 get_my_dashboard 聚合快照也有同样的误导风险:它会同时返回 subscriptions.totalCount > 0 和 subscriptions.currentSemesterCount = 0,但当前学期明细及 upcoming 为空;缺少历史恢复提示时,调用方容易直接回答“没有课程”。
复现步骤
- 准备两个学期:当前学期 A、往期学期 B。
- 用户仅关注 B 中的一个班级,并让该班级包含历史作业、课表和考试。
- 登录后打开
/。
- 观察首页仅显示“本学期未选择班级”的空状态,无法从该状态进入往期作业或课表。
- 调用 MCP
get_my_dashboard:subscriptions.totalCount = 1、currentSemesterCount = 0,但当前课程详情和 upcoming 均为空。
核查结果
历史数据实际上仍然存在:
GET /api/me/subscriptions/homeworks 默认读取全部已关注学期;
GET /api/me/subscriptions/schedules 默认读取全部已关注学期,可通过日期范围回溯;
- Dashboard 的作业页和关注班级页仍可读取往期内容;
- MCP 的
list_my_subscribed_sections、list_my_homeworks、list_my_schedules、list_my_exams 均可读取往期数据,并可用 semesterId 缩小范围;
- Bot 与 CLI 的普通作业/课表命令没有自行添加“仅当前学期”过滤。
因此问题不是历史数据丢失,而是当前学期空状态与聚合快照缺少历史内容的发现路径。
期望行为
- 仅有往期关注时,首页明确说明往期班级、作业和课表仍然保留;
- 首页提供“查看往期作业 / 往期课表 / 往期班级”的直达入口;
- 往期课表入口固定到最近一个已关注的往期学期;
- MCP server/tool 描述明确:
currentSemesterCount = 0 不代表没有历史课程,省略 semesterId 时默认读取全部已关注学期;
- 用 Web、REST 与 MCP 自动化测试覆盖该场景。
涉及范围
- server:Dashboard 空状态、MCP 描述与契约、回归测试;
- Bot:无需改数据请求逻辑,依赖 server MCP 提示修正聚合回答;
- CLI:无需改动,现有 REST 请求已能读取历史数据。
问题描述
当用户只关注了往期学期的班级、当前学期没有关注班级时,Dashboard 首页会显示当前学期空状态,并隐藏正常的作业/课表概览。空状态只提供“浏览课程 / 按代码匹配”,没有任何历史内容入口,因此很容易被理解成“账号没有课程,历史作业和课表已丢失”。
Bot 的
get_my_dashboard聚合快照也有同样的误导风险:它会同时返回subscriptions.totalCount > 0和subscriptions.currentSemesterCount = 0,但当前学期明细及 upcoming 为空;缺少历史恢复提示时,调用方容易直接回答“没有课程”。复现步骤
/。get_my_dashboard:subscriptions.totalCount = 1、currentSemesterCount = 0,但当前课程详情和 upcoming 均为空。核查结果
历史数据实际上仍然存在:
GET /api/me/subscriptions/homeworks默认读取全部已关注学期;GET /api/me/subscriptions/schedules默认读取全部已关注学期,可通过日期范围回溯;list_my_subscribed_sections、list_my_homeworks、list_my_schedules、list_my_exams均可读取往期数据,并可用semesterId缩小范围;因此问题不是历史数据丢失,而是当前学期空状态与聚合快照缺少历史内容的发现路径。
期望行为
currentSemesterCount = 0不代表没有历史课程,省略semesterId时默认读取全部已关注学期;涉及范围