Skip to content

feat: add course lookup, ratings, and moderated comments #61

Description

@SebastianBoehler

Summary

Add course lookup and community ratings to StudyOS Agent. Students can search the shared StudyPlanner catalog by title or course number, use their locally loaded ALMA registrations as search shortcuts, and submit a 1–5 star rating with an optional moderated comment.

This rates courses—not the StudyOS agent or aggregated services.

Product behavior

  • Add a dedicated Course ratings screen outside Settings.
  • Search the public StudyPlanner catalog and show course number, title, term, and ECTS where available.
  • Show locally derived “My courses” shortcuts; the enrollment list itself stays on-device.
  • Group ratings longitudinally by normalized course number across semesters.
  • Show average and count separately, plus published comments only.
  • Let an installation create/update/delete one rating per course and report published comments.
  • Clearly label ratings as pseudonymous community feedback, not verified enrollment reviews.

Architecture

  • Flutter calls the containerized ratings API.
  • The ratings API proxies public, read-only StudyPlanner catalog search because the current catalog endpoint does not expose browser CORS headers.
  • Catalog responses are typed, size-limited, rate-limited, and held in a bounded five-minute in-memory cache.
  • Search returns a server-issued normalized course rating ID and registers that course before ratings are accepted.
  • SQLite stores registered courses, pseudonymous installation credentials, ratings/comments, reports, and moderation audit records.
  • ALMA credentials, cookies, profiles, timetables, and enrollment lists are never sent to the hosted ratings service.

Moderation and operations

  • Star ratings count immediately; optional comments start pending.
  • Moderators can publish, reject, or remove comments with audited reasons.
  • User reports feed the moderation queue.
  • No third-party semantic moderation or per-comment API billing is required initially.
  • Production still needs HTTPS, reverse-proxy limits, a moderation owner, retention/privacy notices, and tested backups.

Acceptance criteria

  • Users can look up catalog courses and select one to rate.
  • Local registered-course titles can start a catalog lookup without uploading the enrollment list.
  • Ratings are stored per registered normalized course identity, not against the StudyOS agent.
  • Users can create/update/delete a 1–5 rating with an optional bounded comment.
  • Public reads include count, average, and published comments only.
  • Users can report comments; moderators can review and audit actions.
  • API validation, ownership, isolation, pagination, rate limits, cache bounds, migration behavior, and moderation are tested.
  • SQLite/Compose backup, privacy, retention, and deployment guidance is documented.
  • Human reviewers approve the UI and deployment policy before merge/release.

Out of scope

  • verified enrollment/completion badges
  • replies, threads, reactions, or rich text
  • automated third-party moderation
  • routing university credentials through the ratings service

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions