Skip to content

feat(web): course repo overview — which repos are actually generated (Milestone F5e, Z4)#126

Merged
obcode merged 1 commit into
mainfrom
feat/repo-overview
Jul 19, 2026
Merged

feat(web): course repo overview — which repos are actually generated (Milestone F5e, Z4)#126
obcode merged 1 commit into
mainfrom
feat/repo-overview

Conversation

@obcode

@obcode obcode commented Jul 19, 2026

Copy link
Copy Markdown
Owner

Was

Kurs-weite Übersicht des tatsächlich Generierten: pro Assignment, wie viele Ziel-Repos in GitLab existieren und wer fehlt.

Änderungen

  • gitlab.ExistingRepoNames: listet die Projekte einer Assignment-Gruppe in einem paginierten Call (nicht GetProject pro Studi) → Übersicht kostet 1 Call/Assignment statt Studis×Assignments.
  • app.CourseRepoOverview: löst jedes Assignment konkurrent auf, matcht RepoTargets gegen die existierenden Namen, liefert pro Assignment {targets, existing, repos[for,exists], note}. Fehlende Gruppe (nie generiert) oder abstrakt/nicht-auflösbar → note statt Fehler (eine Lücke bricht die Übersicht nicht). Braucht den hinterlegten GitLab-Token.
  • GraphQL courseRepoOverview(course): [AssignmentRepos]. Der reine Matcher ist unit-getestet; das GitLab-Listing läuft live/über den Report-Pfad.

GUI-Seite folgt im glabs.gui-Gegenstück.

Verifikation

go build/vet (inkl. -tags=integration)/test/golangci-lint — grün.

🤖 Generated with Claude Code

…(Milestone F5e, Z4)

A whole-course view of what has been generated: per assignment, how many of its
target repos exist in GitLab and who is missing.

- gitlab.ExistingRepoNames lists an assignment group's projects in one paginated
  call (not a GetProject per student), so the overview costs one call per
  assignment, not students×assignments.
- app.CourseRepoOverview resolves each assignment concurrently, matches RepoTargets
  against the existing set, and returns per-assignment {targets, existing, repos[for,
  exists], note}. A missing group (never generated) or an abstract/unresolvable
  assignment becomes a note rather than an error, so one gap does not fail the view.
  Needs the caller's stored GitLab token.
- GraphQL courseRepoOverview(course): [AssignmentRepos]. The pure matcher is unit
  tested; the GitLab listing is exercised live/by the report path.

GUI page follows in the glabs.gui counterpart.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@obcode
obcode merged commit ce5e79d into main Jul 19, 2026
8 checks passed
@obcode
obcode deleted the feat/repo-overview branch July 19, 2026 15:48
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.

1 participant