ai_member_xiaoban/skills/export-user-data/SKILL.md
xiaoban d32cccab38 feat: 新增按组件维度导出学习记录能力
- 新增 export_component_records.py: 按 c_type + c_id 导出组件学习记录
- 新增 export_component_records.sh: wrapper 脚本(含数据库凭证)
- 更新 export-user-data SKILL.md: 增加模式二(按组件导出)文档
- 支持 27 种 mid_* 和 15 种 core_* 组件类型
- 输出字段: user_id, 音频URL, 发音评分, 朗读内容, 判定结果等
- 按 updated_at 倒序排列,支持可选时间范围过滤
2026-06-04 14:57:48 +08:00

6.0 KiB
Raw Blame History

name description
export-user-data 用户数据导出技能,支持两种模式: 1. 按用户维度:导出一个或多个角色的全量行课数据(音频、互动组件、课程巩固、单元挑战、单元总结、汇总统计) 2. 按组件维度导出指定组件的所有用户学习记录用户ID、音频、判定结果等按时间倒序 触发词:导出角色/行课数据、导出用户数据、导出组件记录、export user data。

导出用户数据

前置条件

  • wrapper 脚本已配置数据库凭证
  • 依赖:python3, pymysql, psycopg2, pandas, openpyxl

模式一:按用户维度导出(全量行课数据)

执行方式

cd /root/.openclaw/workspace-xiaoban
./scripts/export_user_data.sh <参数>

参数

参数 说明 示例
--user-id <id> 单个角色ID --user-id 33123
--user-ids <id1,id2> 多个角色ID逗号分隔 --user-ids 33123,33124
--account-ids <id1,id2> 多个账户ID逗号分隔 --account-ids 2148,2149
--output-dir <dir> 输出目录(默认 output/ --output-dir /tmp/

三种模式互斥,只能传一种 ID 参数。

输出

  • 默认输出到 output/ 目录
  • 单角色:角色id_{ID}_导出时间_{YYYYMMDD}.xlsx
  • 账户模式:账户id_{AID}_角色id_{UID}_导出时间_{YYYYMMDD}.xlsx

Excel 包含的 Sheet

  1. 全部音频数据ES user-audio 索引)
  2. 互动组件学习记录PG 8张分表 + MySQL 组件配置)
  3. 课程巩固记录PG user_unit_review_question_result
  4. 单元挑战记录PG user_unit_challenge_question_result
  5. 单元总结记录PG
  6. 汇总统计(组件类型统计 / 知识点统计 / 单元时长统计)

模式二:按组件维度导出(组件学习记录)

执行方式

cd /root/.openclaw/workspace-xiaoban
./scripts/export_component_records.sh --c-type <组件类型> --c-id <组件ID> [可选参数]

参数

参数 说明 示例
--c-type <type> 必填 组件类型 mid_sentence_dialogue
--c-id <id> 必填 组件ID 1112315
--start-date <YYYYMMDD> 可选,起始日期 --start-date 20260101
--end-date <YYYYMMDD> 可选,截止日期 --end-date 20260604
--output-dir <dir> 输出目录(默认 output/ --output-dir /tmp/

支持的组件类型c_type

覆盖 MySQL middle_interaction_componentcore_interaction_component 中所有实际 c_type。

中互动组件mid_*

c_type 组件名称
mid_dialog_choose 对话选择
mid_dialog_express 对话表达
mid_dialog_fillin 对话填空
mid_dialog_repeat 对话跟读
mid_dialog_select 对话选择
mid_dialog_sentence 对话组句
mid_image_choose 图片选择
mid_image_drag 图片拖拽
mid_image_multiple 图片多选
mid_image_sequence 图片排序
mid_message_combine 消息组合
mid_message_fillin 消息填空
mid_message_sentence 消息组句
mid_message_spell 消息拼写
mid_message_trace 消息描红
mid_message_word 消息选词
mid_grammar_cloze 语法挖空
mid_grammar_sentence 语法组句
mid_pron_pron 发音互动
mid_sentence_dialogue 句子对话
mid_sentence_makeSentence 句子造句
mid_sentence_material 句子材料
mid_sentence_voice 句子语音
mid_vocab_fillBlank 词汇填空
mid_vocab_image 词汇图片
mid_vocab_instruction 词汇指令
mid_vocab_item 词汇物品

核心互动组件core_*

c_type 组件名称
core_listening_choose 听力选择
core_listening_drag 听力拖拽
core_listening_order 听力排序
core_reading_imageDrag 阅读图片拖拽
core_reading_order 阅读排序
core_speaking_explore 口语探讨
core_speaking_image 口语图片
core_speaking_inquiry 口语妙问
core_speaking_monologue 口语独白
core_speaking_reply 口语快答
core_writing_imgMakeSentence 写作看图组句
core_writing_imgMakeWord 写作看图组词
core_writing_imgWrite 写作看图撰写
core_writing_questionMakeSentence 写作问题组句
core_writing_questionWrite 写作问题撰写

输出

  • 默认输出到 output/ 目录
  • 文件名:组件_{组件名称}_{c_id}_导出时间_{YYYYMMDD}.xlsx
  • 示例:组件_对话互动-表达_1112315_导出时间_20260604.xlsx

Excel 包含的字段

字段 说明 来源
user_id 用户角色ID PG
session_id 会话ID PG
component_unique_code 组件唯一标识 PG
c_type 组件类型编码 PG
c_id 组件ID PG
组件名称 中文组件名称(对话互动自动追加 -表达/-朗读) MySQL映射
组件标题 组件配置标题 MySQL
mode 模式(表达/朗读,仅对话互动有值) MySQL component_config
参考文本 组件配置中的参考文本 MySQL component_config
play_result 判定结果Perfect/Good/Pass/Oops/Failed PG
发音评分 发音评分 PG user_behavior_info
音频URL 用户录音文件地址 PG user_behavior_info
朗读内容 用户实际朗读内容 PG user_behavior_info
user_behavior_info 原始用户行为数据 JSON PG
updated_at 更新时间(倒序排列) PG

数据来源

  • PG user_component_play_record_0~78张分表主数据源按 c_type + c_id 过滤
  • MySQL middle_interaction_component / core_interaction_component组件配置标题、mode、参考文本

完成后

如果是从飞书对话触发的导出,导出完成后通过 lark-send-message-as-bot 技能将文件发送给请求用户。