SuperAPI AI 工具集

iblai-vibe-course-access

编程与开发

查看项目

更新于 10-15 22:16

技能介绍

用途:在 Next.js 应用中接入完整的 edX 课程内容体验,包括层级课程大纲侧边栏、可折叠的模块/课/子课与进度指示、顶部标签条(Course、Progress、Dates、Discussion、Instructor)、面包屑与进度条头部、内嵌学习 MFE/LMS iframe(JWT postMessage 握手)、上一/下一单元导航、限时考试守卫,以及基于组织的访问控制。课程元数据、大纲、完成度与评分数据通过 data-layer 的 RTK Query hooks 获取。

前置条件:需先完成认证(/iblai-vibe-auth);配置 MCP 服务器与技能(.mcp.json 中的 @iblai/mcp);需要有效的 edX 课程 id(如 course-v1:org+course+run),且用户组织内已有已发布课程。

使用方式:课程内容以 SDK 组件形式提供,无 CLI 生成器,需自行接线页面。在 app/(app)/course-content/[course_id]/ 下创建 layout.tsx 与各标签页 page.tsx。框架无关组件(CourseOutline、CourseOutlineDrawer、CourseAccessGuard、CourseContentLoading、TimedExam、上下文、hooks、类型)从 @iblai/iblai-js/web-containers 导入;Next 专用组件(CourseContentLayout、CourseContentTabPage、EdxIframe)从 @iblai/iblai-js/web-containers/next 导入。数据 hooks 从 @iblai/iblai-js/data-layer 导入。

环境:项目根目录需有 iblai.env,包含 PLATFORM、DOMAIN、TOKEN。URL 由 lib/iblai/config.ts 从托管默认值推导;自托管部署可在 .env.local 中通过 NEXT_PUBLIC_LEGACY_LMS_URL、NEXT_PUBLIC_MFE_URL 覆盖。

限制与注意:Instructor 页面默认不自守卫,直接访问 URL 仍会渲染,需要硬性限制需自行包裹管理员守卫;onUnauthorized/onNotFound 需用 useCallback 稳定,否则会重复触发;dmUrl 为 Stripe 结账 success_url 所必需;platform_key 为 "main" 的课程始终放行;自定义 localStorage 键需通过 edxTokenKey 传入;mentor_hidden 为 true 时 onCourseMentorChange 不会触发;useCourseDetail 为内部使用,不应在页面中重复调用。Redux store 必须包含 mentorReducer 与 mentorMiddleware,否则 hooks 静默返回 undefined。完成后运行 /iblai-vibe-ops-test 验证,pnpm build 与 pnpm test 需通过。