SuperAPI AI 工具集

iblai-api-studio-unit

编程与开发

查看项目

更新于 10-16 08:48

技能介绍

用途:本技能管理 Open edX 课程中的一个单元(vertical/垂直块),即子章节内一个面向用户的页面。单元承载 html、problem、pdf 等组件;发布在单元或更上层进行。内容本身由 /iblai-api-studio-html、/iblai-api-studio-problem、/iblai-api-studio-pdf 添加。

前提:先做预检 node .claude/skills/iblai-api-studio-auth/scripts/studio-login.mjs --check,需输出两个 ok,否则先运行 /iblai-api-studio-auth;需从 /iblai-api-studio-subsection 获取子章节定位符(或用 /iblai-api-studio-outline 的 GET /api/v1/ibl/course/{COURSE}/units 查看已有单元)。创建组件前建议先规划单元节奏(概览→内容→一个题目块→总结)。

鉴权与约定:Base URL 为 $STUDIO_URL;会话 Cookie 来自 studio.env(值用单引号包裹,bash 会去引号,其他解析器也须去引号,否则 Studio 返回 500)。示例片段:set -a; . ./studio.env; set +a,随后定义 S 数组带 studio_session_id、csrftoken、X-CSRFToken、Origin、Referer 等头。键:parent 为子章节定位符(…+type@sequential+block@…),单元为 …+type@vertical+block@<hex>。所有编辑在 /iblai-api-studio-publish 前均为草稿;DELETE 会删除内部组件,需先向用户确认。

读取:GET /api/contentstore/v1/container/vertical/{unit}/children 按顺序列出组件(唯一以 JSON 列出单元组件的接口);GET /xblock/{unit} 返回 display_name、metadata、published、has_changes、visibility_state、released_to_students、start、graded、format、lms_url、studio_url;GET /xblock/container/{unit} 额外含 ancestor_info.ancestors 和 currently_visible_to_students;GET /xblock/outline/{subsection} 列出某子章节的单元及发布状态。

写入:POST /xblock/ 创建单元,body 为 {parent_locator, category:"vertical", display_name},返回 locator 与 courseKey;POST /xblock/{unit} 可重命名(metadata.display_name)、隐藏(metadata.visible_to_staff_only)、重排组件(children 按新顺序列出全部当前组件 id);PATCH /xblock/ 用 move_source_locator、parent_locator、target_index 移动单元或组件;POST /xblock/ 用 duplicate_source_locator 复制单元及其组件;DELETE /xblock/{unit} 删除(204,需确认);POST /xblock/{unit} {publish:"make_public"} 发布该单元。

限制与提示:组件定位符在创建时返回,建议保留而非每次重新列举。无组件单元可发布但渲染为空,LMS 应用仍会在大纲显示。lms_url 是 LMS 主机的用户深链;用户应用等价地址为 $LMS_APP_URL/platform/<org>/course-content/<course_key>/course?unit_id=<unit>。复制单元会同时复制其中的题目(新题目 id,OLX 相同)。