Appearance
智萃课程预览
GET /api/admin/course/essence/{courseId}/preview
权限 ADMIN_COURSE_MANAGE
预览已智萃课程,返回课程信息及分段视频、概要、知识点、试题。
路径参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| courseId | number | 是 | 课程 ID |
查询参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| language | string | 否 | 语言标识,不传时使用首个已存在语言版本 |
响应
| 字段 | 类型 | 说明 |
|---|---|---|
| courseInfo | object | 课程信息 |
| courseInfo.courseName | string | 课程名称 |
| courseInfo.updatedTime | number | 更新时间(秒) |
| courseInfo.selectedLanguage | string | 当前选择语言 |
| courseInfo.canPublish | boolean | 是否有发布课程权限 |
| essencePreviewData | object | 智萃内容预览数据 |
| essencePreviewData.segments | array | 分段列表 |
| essencePreviewData.segmentVideo | object | 分段视频信息(全段共用同一视频,各分段通过 startAt/endAt 标识时间范围) |
| essencePreviewData.segmentVideo.fileId | number | 视频文件 ID |
| essencePreviewData.segmentVideo.globalId | string | 视频文件全局 ID |
| essencePreviewData.segmentVideo.convertStatus | string | 文件转换状态:success(可播放)/ waiting、doing(转码中)/ none(无需转码)/ error(转码失败) |
segments 元素结构
| 字段 | 类型 | 说明 |
|---|---|---|
| id | number | 分段 ID(essence_segment.id) |
| seq | number | 分段序号 |
| title | string | 分段标题 |
| startAt | number | 起始时间(毫秒) |
| endAt | number | 结束时间(毫秒) |
| summary | string | 段落摘要 |
| knowledgePoints | array | 知识点列表,每项为 { title, content } |
| questions | array | 试题列表 |
questions 元素结构
待定
questions 的返回结构可能随需求调整,如有变更以接口实际返回为准。
| 字段 | 类型 | 说明 |
|---|---|---|
| type | string | 题型:single(单选)、multi(多选)、judge(判断) |
| stem | string | 题干 |
| options | array | 单选题/多选题:带正确标记的选项列表,每项含 key、label、isCorrect |
| answer | boolean / string / array | 答案:judge 为 boolean;single 为 string(如 "A");multi 为 string[](如 ["A","C"]) |
| analysis | string | 题目解析 |
options 元素结构(单选/多选)
| 字段 | 类型 | 说明 |
|---|---|---|
| key | string | 选项标识,如 A、B、C |
| label | string | 选项内容 |
| isCorrect | boolean | 是否为正确答案 |
请求示例
http
GET /api/admin/course/essence/1001/preview?language=zh_CN
Authorization: Bearer <token>响应示例
json
{
"courseInfo": {
"courseName": "AI 智萃微课",
"updatedTime": 1710000000,
"selectedLanguage": "zh_CN",
"canPublish": true
},
"essencePreviewData": {
"segments": [
{
"id": 101,
"seq": 1,
"title": "第一章 引言",
"startAt": 0,
"endAt": 60000,
"summary": "本章介绍课程背景与目标。",
"knowledgePoints": [
{ "title": "知识点一", "content": "知识点一的详细内容。" },
{ "title": "知识点二", "content": "知识点二的详细内容。" }
],
"questions": [
{
"type": "single",
"stem": "以下哪项是正确的?",
"options": [
{ "key": "A", "label": "选项 A", "isCorrect": false },
{ "key": "B", "label": "选项 B", "isCorrect": true }
],
"answer": "B",
"analysis": "选项 B 为正确答案,因为..."
},
{
"type": "multi",
"stem": "以下哪些属于智萃功能?(多选)",
"options": [
{ "key": "A", "label": "视频分段", "isCorrect": true },
{ "key": "B", "label": "AI 生成试题", "isCorrect": true },
{ "key": "C", "label": "实时翻译", "isCorrect": false }
],
"answer": ["A", "B"],
"analysis": "智萃支持视频分段与 AI 生成试题,实时翻译为后续规划。"
},
{
"type": "judge",
"stem": "本课程适合初学者。",
"options": null,
"answer": true,
"analysis": null
}
]
}
],
"segmentVideo": {
"fileId": 12345,
"globalId": "abc123",
"convertStatus": "success"
}
}
}异常
| 错误码 | HTTP | 说明 | 触发条件 |
|---|---|---|---|
COURSE_NOT_FOUND | 404 | 课程不存在 | 课程 ID 无效或课程已删除 |
COURSE_NOT_ESSENCE | 403 | 当前课程不是智萃课程 | 课程未绑定智萃视频,或智萃关联记录不存在 |
ESSENCE_FILE_NOT_FOUND | 404 | 智萃视频记录不存在 | 智萃视频记录已被删除或数据异常 |
ESSENCE_NOT_PROCESSED | 400 | 智萃尚未完成,无法预览 | 智萃视频仍在处理中(processing)或处理失败 |
ESSENCE_VERSION_NOT_FOUND | 404 | 指定语言版本不存在或未生成 | 传入了不存在的 language;或该智萃尚无任何语言版本;或指定语言的内容版本未生成 |
FILE_NOT_FOUND | 404 | 文件不存在 | segmentVideo 关联的视频文件已被删除或不存在 |
MENU_PERMISSION_DENIED | 403 | 权限不足 | 无课程管理权限(ADMIN_COURSE_MANAGE) |