Skip to content

feat: course optimizer extended report - #426

Draft
nsprenkle wants to merge 3 commits into
release-ulmofrom
nsprenkle/course-optimizer-extended-report
Draft

feat: course optimizer extended report#426
nsprenkle wants to merge 3 commits into
release-ulmofrom
nsprenkle/course-optimizer-extended-report

Conversation

@nsprenkle

@nsprenkle nsprenkle commented Aug 13, 2026

Copy link
Copy Markdown
Member

Description

Provides support for the Course Re-Run Assistant / CORA / extended course optimizer report project. Specifically:

  1. Creates a waffle flag contentstore.enable_course_optimizer_extended_report for enabling this feature. Off by default.
  2. Creates 2 new routes:
    1. POST /api/contentstore/v0/course_analysis_report/{course_id} to post course material to our xpert-ai-workflows endpoint for analysis.
    2. GET /api/contentstore/v0/course_analysis_report_status/{course_id} to check the status of a given analysis.
  3. Establishes a shared secret, COURSE_ANALYSIS_WORKFLOW_API_KEY for authentication to the xpert-ai-workflows service.

Supporting information

Tickets:

Supporting PRs:

Testing instructions

  1. Enable the contentstore.enable_course_optimizer_extended_report waffle flag.
  2. Install the course-optimizer-report plugin in frontend-app-learning from the supporting PR.
  3. Run xpert-ai-workflows/content/cora from the supporting PR.
  4. Navigate to course optimizer for an enabled course / user (e.g. http://localhost:2001/course/course-v1:edX+DemoX+Demo_Course/optimizer)
  5. Click the new "scan now" button.
  6. Verify that the report completes.

Deadline

ASAP

Studio proxies both kicking off a Course Optimizer extended-analysis run
(CourseAnalysisReportView, generating the course export server-side via the
existing create_export_tarball) and polling its status
(CourseAnalysisReportStatusView) to the xpert-ai-workflows backend, keyed by
a shared secret -- the browser only ever talks to Studio.
…lows

Reached via Docker's host-gateway alias, since it runs on the host machine
rather than in the devstack docker network.
Gates the Course Optimizer extended-report section in the authoring MFE,
matching enable_course_optimizer's existing CourseWaffleFlag pattern.
Without this, the frontend's default for this flag would apply
unconditionally everywhere, since it's absent from every course waffle
flags API response until a real flag exists to answer for it.
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