75 lines
4.6 KiB
Markdown
75 lines
4.6 KiB
Markdown
# 2026-05-21 工作记忆
|
||
|
||
## 事件记录
|
||
|
||
### 1. 口语题目句型知识点改写(刘彦江)
|
||
- 多轮 JSON 改写任务,将指定句型知识点嵌入 speaking_qa 题目
|
||
- 句型包括:It's ... now / It's bad for your health to ... / We are ... now / We want to catch ... / Please help me ... / I want to buy ... / I only need ... / We must not ... / I will use it to ... / It was ... / It helped a lot to ... / It tastes like ... / I've decided to ...
|
||
- 规则:知识点必须是答案,每个问题设计确保回答必然触发目标句型
|
||
|
||
### 2. 单元挑战听力拖拽题解析补充(刘彦江)
|
||
- 涉及 ID:010501, 010601, 010701, 010801, 010901
|
||
- 多维表格:App Token `CMHSbUUjka3TrUsaxxEc297ongf`,表 `听力-P7-听力拖拽` (tbly9SvPEa44k3yX)
|
||
- 每个 ID 包含 first 和 second 两组(题组1和题组2),两组都需要补充完整解析
|
||
|
||
### 3. bitable 操作经验教训
|
||
- **Shell 转义陷阱再次确认**:jsonData 中包含大量嵌套 JSON,Shell 变量展开会破坏数据。必须用 Python subprocess + curl 直接构造请求体
|
||
- **`¥¥` 分隔符与 bitable API 不兼容**:原数据中用 `¥¥` 作为解析分隔符,写入 bitable 后会导致 jsonData 损坏。后续改用 `||` 替代
|
||
- **explanation 字段路径**:位于 `questionSet[0].explanation`,而非 section 层级的 `explanation`
|
||
- **operate_bitable.sh 限制**:仅适用于简单字段更新,复杂嵌套 JSON 场景不可用
|
||
|
||
### 4. Python bitable 更新脚本模式
|
||
```python
|
||
import subprocess, json
|
||
|
||
# 获取 token
|
||
# curl GET records 获取数据
|
||
data = json.loads(response)['data']
|
||
record = data['items'][0] # 或 data['item']
|
||
fields = record['fields']
|
||
jd = json.loads(fields['jsonData'])
|
||
|
||
# 修改数据
|
||
jd['first']['questionSet'][0]['explanation'] = '...'
|
||
jd['second']['questionSet'][0]['explanation'] = '...'
|
||
|
||
# 序列化并更新(注意 ensure_ascii=False)
|
||
fields['jsonData'] = json.dumps(jd, ensure_ascii=False)
|
||
body = json.dumps({"fields": fields})
|
||
subprocess.run(['curl', '-X', 'PUT', url, '-H', f'Authorization: Bearer {token}', ...])
|
||
```
|
||
- 关键:读取后立即备份原始数据,写完后回读验证完整性
|
||
|
||
### 5. 解析生成规则
|
||
- 每道题的解析需包含:听力原文引用 → 答案对应 → 关键特征 → 冗余排除/语用推理
|
||
- first 和 second 的解析需分别定制,不可复制模板
|
||
- 干扰抑制类题目:标注冗余信息类型(位置/情绪/动作/大小等)
|
||
- 否定纠错类题目:标注否定信号词和身份替换逻辑
|
||
- 跨句整合类题目:标注需整合的信息来源和推理路径
|
||
### 6. 剧本内嵌 Sheet 组件配置回填(刘彦江)
|
||
- 文档:L1-S2-U17-L5 笨蛋坏蛋?(wiki token `U1zEwHZaaie07TkjmOOchurgnIh`)
|
||
- 内嵌 Sheet `wMQVyV`,剧本表 265 行 × 9 列(A=类型, B=ID, C=配置整理, D=剧情描述, E=角色名, F=英文台词, G=组件配置, H=知识点, I=编剧台词)
|
||
- 共 17 个互动行:对话朗读-配图(6) / 对话朗读(1) / 对话挖空-配图(1) / 对话挖空(4) / 对话选择-配图(1) / 对话选读(2) / 对话组句-配图(1) / 对话组句(1) / 看图说话(1)
|
||
|
||
#### 组件类型 A 列取值与技能映射(新增类型)
|
||
| A列类型 | 对应技能 | 备注 |
|
||
|---------|---------|------|
|
||
| 对话朗读 / 对话朗读-配图 | dialogue-reading-config | -配图需加图片时机和音频载体 |
|
||
| 对话挖空 / 对话挖空-配图 | dialogue-fill-in-blanks-config | 同上 |
|
||
| 对话选择 / 对话选择-配图 | dialogue-choose-config | 同上 |
|
||
| **对话选读** | dialogue-selective-reading-config | 开放表达,无正确选项,每选项必带反馈 |
|
||
| **对话组句** | dialogue-sentence-building-config | 单词排序组句,含答案+辅助信息 |
|
||
| **看图说话** | dialogue-image-description-config | 导览配置+对话配置,含Q&A/通过规则/示例对话 |
|
||
|
||
#### 类型区别关键点
|
||
- **对话选择 vs 对话选读**:前者有对错判断(正确选项标注),后者开放表达(无正确选项,每选项均带反馈)
|
||
- **对话挖空**:`___` 必需三下划线,选项2-3个,反馈角色非 User
|
||
- **对话组句**:选项为独立单词/短语,答案填完整正确句,必须有辅助信息
|
||
- **看图说话 v2.0**:结构最复杂,包含导览配置(任务标题/背景/描述/知识)+ 对话配置(角色/背景/Q&A/通过规则/示例对话)
|
||
- **-配图后缀**:资源配置需添加 `图片时机:互动内容\n互动反馈\n\n音频载体:Pioneer Band`
|
||
|
||
#### 写入脚本模式
|
||
- G 列写入使用 Python subprocess + curl(避免 shell 转义)
|
||
- SST = spreadsheet_token, SID = sheet_id(格式 `SST!G{row}:G{row}`)
|
||
- 写入后必须回读验证内容完整性
|