kindergarten_java/docs/test-logs/school/2026-03-22-report-date-range.md
En c1f5b5085e feat: 学校端数据报告功能实现
主要变更:
1. 新建 ReportMapper - 数据报告统计查询
   - getOverviewStats: 概览统计(教师/学生/班级总数、本月授课次数)
   - getTeacherReports: 教师教学数据统计
   - getCourseReports: 课程使用排行统计
   - getStudentReports: 学生学习数据统计

2. 新建 SchoolReportService - 数据报告服务层
   - 4 个报告查询接口实现

3. 修改 SchoolStatsController - 调整统计接口参数
   - getLessonTrend 改为支持 startDate 和 endDate 参数

4. 前端更新 ReportView.vue
   - 对接 4 个报告接口
   - 优化图表展示和数据表格
   - 支持日期范围筛选

5. 更新开发日志和测试记录

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 09:46:08 +08:00

4.1 KiB
Raw Permalink Blame History

测试记录 2026-03-22 - 学校端数据报告日期范围筛选功能

测试背景

学校端数据中心 - 数据报告页面的时间范围筛选器之前不影响"课程使用趋势"和"教师活跃度"图表数据。本次修复实现了这两个图表根据日期范围筛选器动态加载数据的功能。

修改内容

后端修改

  1. SchoolStatsController.java

    • getLessonTrend() - 添加 startDateendDate 参数
    • getActiveTeachers() - 添加 startDateendDate 参数
    • 添加 @Parameter 注解导入
  2. SchoolStatsService.java

    • 更新 getLessonTrend() 方法签名,使用日期范围参数
    • 更新 getActiveTeachers() 方法签名,使用日期范围参数
  3. SchoolStatsServiceImpl.java

    • 重写 getLessonTrend() 方法,支持日期范围遍历统计
    • 重写 getActiveTeachers() 方法,使用日期范围过滤
  4. LessonMapper.java

    • 更新 getTeacherActivityRank() 方法,添加 endTime 参数
    • 更新 SQL 查询,添加 l.end_datetime <= #{endTime} 条件

前端修改

  1. src/api/school.ts

    • getLessonTrend() - 改为接受 startDateendDate 参数
    • getTeacherStats() - 添加 startDateendDate 参数
  2. src/views/school/ReportView.vue

    • loadData() 函数 - 传递日期范围参数给图表 API

测试验证

1. 后端编译测试

export JAVA_HOME="/f/Java/jdk-17"
cd reading-platform-java
mvn clean compile -DskipTests

结果: 编译成功

2. API 接口测试

课程趋势 API带日期参数

curl "http://localhost:8481/api/v1/school/stats/lesson-trend?startDate=2026-03-01&endDate=2026-03-22"

响应:

{
  "code": 200,
  "data": [
    {"date": "03-01", "lessonCount": 0, "studentCount": 0},
    {"date": "03-02", "lessonCount": 0, "studentCount": 0},
    ...
    {"date": "03-16", "lessonCount": 2, "studentCount": 5},
    ...
    {"date": "03-21", "lessonCount": 0, "studentCount": 0}
  ]
}

结果: 返回指定日期范围内的数据

教师活跃度 API带日期参数

curl "http://localhost:8481/api/v1/school/stats/teachers?startDate=2026-03-01&endDate=2026-03-22&limit=10"

响应:

{
  "code": 200,
  "data": [
    {
      "teacherId": "1",
      "teacherName": "李老师",
      "classNames": "小一班",
      "lessonCount": 2,
      "courseCount": 2,
      "lastActiveAt": "2026-03-16T00:00:00",
      "activityLevelCode": "LOW",
      "activityLevelDesc": "低频"
    }
  ]
}

结果: 返回指定日期范围内的数据

默认参数测试

# 课程趋势(默认最近 7 天)
curl "http://localhost:8481/api/v1/school/stats/lesson-trend"

# 教师活跃度(默认本月 1 号至今)
curl "http://localhost:8481/api/v1/school/stats/teachers?limit=10"

结果: 两个接口在不传参数时都使用默认值

3. 前端编译测试

cd reading-platform-frontend
npm run build

结果: ReportView.vue 无编译错误

4. 前端服务测试

功能验证清单

测试项 状态 说明
后端编译 无编译错误
课程趋势 API 支持日期范围参数
教师活跃度 API 支持日期范围参数
默认参数 不传参数时使用默认值
前端编译 ReportView.vue 无错误
前端服务 正常运行

已知问题

测试结论

测试通过 - 日期范围筛选功能已正确实现,课程使用趋势和教师活跃度图表现在会根据用户选择的日期范围动态加载数据。

后续建议

  1. 可以在日期选择器旁边添加"快捷选项",如"最近 7 天"、"最近 30 天"、"本月"等
  2. 考虑添加数据导出功能,允许用户导出选定日期范围内的报告数据

测试人员: AI Assistant 测试日期: 2026-03-22 测试环境: Windows 10, JDK 17, Node.js