Skip to content

feat: add homework stats display - #148

Merged
cyucccx merged 9 commits into
devfrom
fix/homewrok-stats
Dec 28, 2025
Merged

cyucccx merged 9 commits into
devfrom
fix/homewrok-stats

Conversation

@cyucccx

@cyucccx cyucccx commented Dec 28, 2025

Copy link
Copy Markdown
Member

This pull request refactors the homework statistics page to compute the scoreboard directly from submission data rather than relying on precomputed status maps. It introduces a new API method for fetching the scoreboard, rewrites the logic for aggregating and ranking submissions, and improves the clarity and maintainability of the statistics code.

API changes:

  • Added a new getScoreboard method to the homework API, which retrieves the scoreboard data for a specific homework assignment.

Scoreboard computation and data handling:

  • Refactored the scoreboard logic in stats.vue to aggregate submission data per user and problem, determining scores, statuses, and timestamps directly from submissions rather than a precomputed status map. This includes:

    • Fetching all relevant submissions for each problem within the homework time window.
    • Calculating per-user and per-problem scores, solve statuses, and submission times.
    • Handling late submissions and updating scoreboard fields accordingly.
      Code and UI simplification:
  • Simplified the code by removing the unused dayjs import and cleaning up the submissions fetching logic and related computed properties.

  • Made minor formatting improvements to the scoreboard table and chart section for better readability and maintainability.

Copilot AI review requested due to automatic review settings December 28, 2025 22:20
@cyucccx cyucccx linked an issue Dec 28, 2025 that may be closed by this pull request

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request refactors the homework statistics page to compute scoreboard data dynamically from submission records rather than using precomputed status maps. The change introduces more flexible submission filtering with time-based query parameters and removes the dependency on the dayjs library.

  • Adds after, before, and ip_prefix query parameters to the submission list API
  • Implements client-side scoreboard computation by aggregating all submissions per user and problem
  • Adds a new (but unused) getScoreboard API method

Reviewed changes

Copilot reviewed 2 out of 4 changed files in this pull request and generated 10 comments.

File Description
src/types/submission.d.ts Adds new query parameters (after, before, ip_prefix) for time-based and IP-based submission filtering
src/types/scoreboard.d.ts Modifies problems field to support both Record and array types for flexibility
src/api/homework.ts Introduces getScoreboard API method (currently unused in the codebase)
src/pages/courses/[courseId]/homeworks/[id]/stats.vue Major refactor: removes dayjs dependency, implements paginated submission fetching, computes scoreboard client-side from raw submissions, and simplifies template formatting

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/pages/courses/[courseId]/homeworks/[id]/stats.vue Outdated
Comment thread src/pages/courses/[courseId]/homeworks/[id]/stats.vue Outdated
Comment thread src/pages/courses/[courseId]/homeworks/[id]/stats.vue
Comment thread src/pages/courses/[courseId]/homeworks/[id]/stats.vue Outdated
Comment thread src/pages/courses/[courseId]/homeworks/[id]/stats.vue Outdated
Comment thread src/pages/courses/[courseId]/homeworks/[id]/stats.vue Outdated
Comment thread src/api/homework.ts Outdated
Comment thread src/pages/courses/[courseId]/homeworks/[id]/stats.vue
Comment thread src/pages/courses/[courseId]/homeworks/[id]/stats.vue
Comment thread src/pages/courses/[courseId]/homeworks/[id]/stats.vue Outdated
@cyucccx
cyucccx merged commit 89cac0e into dev Dec 28, 2025
1 check passed
@cyucccx
cyucccx deleted the fix/homewrok-stats branch December 28, 2025 23:05
@cyucccx cyucccx mentioned this pull request Dec 28, 2025
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.

Homework state is broken

2 participants