# 中互动组件 — jsonData 字段结构参考

> 本文档是中互动 27 种组件的 **jsonData 字段结构指南**，用于内容生产和审校。
> cType 映射和 bitable_token 参见 `component_registry.md`。

## 通用规则

- 所有中互动组件结构统一：`jsonData`（主 JSON）+ `kpInfo`（知识点绑定）+ 辅助文本字段
- `jsonData` 通过 `json.loads()` 可直接解析为 dict
- 公共字段（所有组件都有）：`cType`, `cId`, `title`

## 分类汇总

| 分类 | 数量 | 组件列表 |
|------|:---:|---------|
| 🗨 对话类 | 7 | 对话互动、朗读、表达、选择、选读、挖空、组句 |
| 📋 信息类 | 6 | 信息描写、拼词、组句、补词、填词、填句 |
| 📦 词汇类 | 2 | 物品互动、图片互动 |
| 🖼 图片选择类 | 4 | 图片单选、多选、有序、拖拽 |
| 📝 语法类 | 3 | 材料互动、挖空互动、组句互动 |
| 🔧 其他 | 5 | 指令互动、填词互动、语音互动、造句互动、发音互动 |

---

## 🗨 对话类（7 种）

**公共字段：** `cType`, `cId`, `title`, `resourceMapping`

### 对话互动 `mid_sentence_dialogue`

```
jsonData:
  cType            str     "mid_sentence_dialogue"
  cId              str     任务ID
  title            str     中文标题
  asrPrompt        str     ASR语音识别提示
  preDialog        list    前置对话 [{type,content}]
  question         dict    问题配置 {mode, hint, desc}
  postDialog       list    后置对话 [{type,content}]
  meaning          str     能力维度标签
  resourceMapping  list    NPC角色映射 [name,...]
```

### 对话朗读互动 `mid_dialog_repeat`

```
jsonData:
  cType              str     "mid_dialog_repeat"
  cId                str
  title              str
  resourceMapping    list    NPC映射
  preDialog          list    前置对话 [{type,content}]
  imgShowTimingList  list    图片展示时机
  img                dict    配图信息
  question           dict    朗读问题 {sentence,...}
  postDialog         list    后置对话
```

### 对话表达互动 `mid_dialog_express`

```
jsonData:
  cType              str     "mid_dialog_express"
  cId, title         str
  asrPrompt          str     ASR提示（中文场景描述）
  resourceMapping    list
  preDialog          list    前置对话 [{type,content}]
  imgShowTimingList  list    图片展示时机
  img                dict    配图
```

### 对话选择互动 `mid_dialog_choose`

```
jsonData:
  cType              str     "mid_dialog_choose"
  cId, title         str
  resourceMapping    list
  preDialog          list    前置对话
  imgShowTimingList  list
  img                dict
  optionList         list    选项 [{option: "选项文本"},...]
  answer             list    正确答案索引 [0]
  corFeedback        dict    正确反馈 {type,npcName,content}
  errFeedback        dict    错误反馈
  postDialog         list    后置对话
```

### 对话选读互动 `mid_dialog_select`

```
jsonData:
  cType              str     "mid_dialog_select"
  cId, title         str
  resourceMapping    list
  preDialog          list
  imgShowTimingList  list
  optionList         list    可选读句列表
  postDialog         list
```

### 对话挖空互动 `mid_dialog_fillin`

```
jsonData:
  cType              str     "mid_dialog_fillin"
  cId, title         str
  resourceMapping    list
  preDialog          list    前置对话（含挖空位置标记）
  imgShowTimingList  list
```

### 对话组句互动 `mid_dialog_sentence`

```
jsonData:
  cType              str     "mid_dialog_sentence"
  cId, title         str
  resourceMapping    list
  preDialog          list    前置对话（含组句片段）
  imgShowTimingList  list
```

---

## 📋 信息类（6 种）

**公共字段：** `cType`, `cId`, `title`, `cDesc`, `question`

### 信息描写 `mid_message_trace`

```
jsonData:
  cType      str     "mid_message_trace"
  cId, title str
  cDesc      str     中文产出描述
  question   dict    问题 {desc, ...}
  trace      dict    描红/标注配置
```

### 信息拼词 `mid_message_spell`

```
jsonData:
  cType      str     "mid_message_spell"
  cId, title str
  cDesc      str
  question   dict    拼词问题 {desc, wordList, ...}
  tip        str     提示文本
```

### 信息组句 `mid_message_combine`

```
jsonData:
  cType      str     "mid_message_combine"
  cId, title str
  cDesc      str
  question   dict    组句问题 {desc, wordList, ...}
  tip        str
```

### 信息补词 `mid_message_fillin`

```
jsonData:
  cType      str     "mid_message_fillin"
  cId, title str
  cDesc      str
  question   dict    补词问题 {desc, stem, optionList, ...}
  tip        str
```

### 信息填词 `mid_message_word`

```
jsonData:
  cType      str     "mid_message_word"
  cId, title str
  cDesc      str
  question   dict    填词问题 {desc, inputConfig, ...}
  tip        str
```

### 信息填句 `mid_message_sentence`

```
jsonData:
  cType      str     "mid_message_sentence"
  cId, title str
  cDesc      str
  question   dict    填句问题 {desc, inputConfig, ...}
  tip        str
```

---

## 📦 词汇类（2 种）

### 物品互动 `mid_vocab_item`

```
jsonData:
  cType      str     "mid_vocab_item"
  cId, title str
  question   dict    问题 {desc}
  optionList list    选项 [{option, note},...]
  answer     list    正确答案 [0]
  cDesc      str     产出描述
  meaning    str     能力维度
```

### 图片互动 `mid_vocab_image`

```
jsonData:
  cType      str     "mid_vocab_image"
  cId, title str
  preDialog  list    前置对话 [{type,content}]
  img        dict    图片信息
  question   dict    问题 {desc}
  answer     list    答案
  tip        str     提示
```

---

## 🖼 图片选择类（4 种）

**公共字段：** `cType`, `cId`, `title`, `meaning`, `resourceMapping`, `question`, `imageInfo`, `optionList`

### 图片单选 `mid_image_choose`

```
jsonData:
  cType           str     "mid_image_choose"
  cId, title      str
  meaning         str     能力维度
  resourceMapping dict    NPC映射
  question        dict    问题 {desc, content}
  imageInfo       dict    图片信息 {questionImg, answerImg}
  optionList      list    选项 [{option},...]
```

### 图片多选 `mid_image_multiple`

```
jsonData:
  cType       str     "mid_image_multiple"
  ...同图片单选（公共字段）
  optionList  选项更多（多选型）
```

### 图片有序 `mid_image_sequence`

```
jsonData:
  cType       str     "mid_image_sequence"
  ...同图片单选（公共字段）
  optionList  选项需按序排列
```

### 图片拖拽 `mid_image_drag`

```
jsonData:
  cType       str     "mid_image_drag"
  ...同图片单选（公共字段）
  optionList  拖拽目标区配置
```

---

## 📝 语法类（3 种）

**公共字段：** `cType`, `cId`, `title`, `preDialog`, `question`, `optionList`, `answer`

### 材料互动 `mid_sentence_material`

```
jsonData:
  cType      str     "mid_sentence_material"
  cId, title str
  preDialog  list    前置对话 [{type,content}]
  img        dict    配图
  question   dict    问题 {type, content}
  optionList list    选项 [{option, feedback},...]
  answer     list    正确答案
```

### 挖空互动 `mid_grammar_cloze`

```
jsonData:
  cType      str     "mid_grammar_cloze"
  cId, title str
  preDialog  list    前置对话
  question   dict    问题 {type, desc, content}（含挖空标记）
  optionList list    选项 [{option, feedback},...]
  answer     list    答案
  postDialog list    后置对话
```

### 组句互动 `mid_grammar_sentence`

```
jsonData:
  cType      str     "mid_grammar_sentence"
  cId, title str
  preDialog  list    前置对话 [{type,npcName,content}]
  question   dict    问题 {desc, content}
  optionList list    选项 [{option},...]
  answer     list    答案
  tip        str     提示
```

---

## 🔧 其他（5 种）

### 指令互动 `mid_vocab_instruction`

```
jsonData:
  cType        str     "mid_vocab_instruction"
  cId, title   str
  preDialog    list    前置对话 [{type,npcName,content}]
  question     dict    主问题 {type,npcName,content,mode}
  questionList list    子问题 [{desc,optionList,answer},...]
  corFeedback  dict    正确反馈 {type,npcName,content}
  errFeedback  dict    错误反馈
```

### 填词互动 `mid_vocab_fillBlank`

```
jsonData:
  cType          str     "mid_vocab_fillBlank"
  cId, title     str
  itemName       str     物品/词汇名称
  question       dict    问题 {desc}
  inputConfig    list    输入配置 [{stem,value},...]
  tip            str     提示
  inputConfigExt list    扩展输入配置
```

### 语音互动 `mid_sentence_voice`

```
jsonData:
  cType      str     "mid_sentence_voice"
  cId, title str
  audioFile  str     音频文件标识
  preDialog  list    前置对话
  itemName   str     物品名
  question   dict    问题 {desc,type,npcName,content}
  optionList list    选项 [{option,feedback},...]
```

### 造句互动 `mid_sentence_makeSentence`

```
jsonData:
  cType      str     "mid_sentence_makeSentence"
  cId, title str
  preDialog  list    前置对话 [{type,npcName,content}]
  itemName   str     物品名
  question   dict    问题 {desc,mode,hint}
  tip        str     提示
  corFeedbackdict    正确反馈 {type,npcName,content}
```

### 发音互动 `mid_pron_pron`

```
jsonData:
  cType      str     "mid_pron_pron"
  cId, title str
  itemName   str     单词名
  question   dict    问题 {desc,mode,type,content}
  cDesc      str     产出描述
  meaning    str     能力维度
```

---

## 审校清单（中互动通用）

```
- [ ] jsonData 可正确 json.loads 解析
- [ ] jsonData.cType 正确（与组件注册表一致）
- [ ] jsonData.cId 非空
- [ ] kpInfo.cType == jsonData.cType
- [ ] kpInfo.cId == jsonData.cId
- [ ] optionList 有 option 时，answer 索引在范围内
- [ ] preDialog/postDialog 每项的 type/content 非空
- [ ] 对话类：resourceMapping 不为空
- [ ] 图片选择类：imageInfo 非空
- [ ] 语法类：optionList 每项有 feedback（如结构支持）
```

---

## 与核心互动的对比

| 维度 | 核心互动 | 中互动 |
|------|---------|--------|
| JSON 结构 | 多个独立 JSON 字段（taskData, textData, learningData,...） | 统一 `jsonData` + `kpInfo` |
| 记录数 | 少（1-21 条/表） | 多（1-135 条/表） |
| 使用场景 | 独立任务级 | 剧本内嵌组件 |
| 知识库表 | S0-S3, LV1, Level 2 | S0-S3, LV1, L1-Demo, L2 |
| 共字段 | ID, dataStatus, kpStatus, kpInfo | kpInfo |
