ai_member_xiaoxi/skills/refund-user-learning-analysis/SKILL.md

86 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
name: refund-user-learning-analysis
description: |
退费用户U0学习数据分析工具。统计指定时间段内购课并退费的用户在U0阶段的学习表现
包括课程巩固(Review)正确率与用时、单元强化(Summary)参与与完成、单元挑战(Challenge)各维度成绩。
支持自动剔除脏数据、生成Excel多Sheet报表。
**触发场景**:
(1) 统计退费用户的学习数据/学习情况
(2) 分析退费用户在U0阶段的巩固/强化/挑战表现
(3) 退费用户有多少完成了U0课程
(4) 退费用户的学习完成率、正确率统计
(5) 用户提到"退费用户"+"学习数据/巩固/强化/挑战"的组合
---
# 退费用户U0学习数据分析
## 分析流程
### Step 1: 确认参数
向用户确认:
- **时间范围**: 订单付款的起止日期 (默认当月)
- **是否剔除仍有有效订单的用户**: 默认剔除
- **巩固用时异常阈值**: 默认 60 分钟,超过视为脏数据
### Step 2: 执行数据查询
运行查询脚本,传入参数:
```bash
python3 scripts/query_refund_learning.py \
--start 2026-04-01 --end 2026-05-01 \
--output /tmp/refund_learning_report.json \
--pure true --outlier 60
```
脚本自动完成:
1. 筛选时间段内购课且退费(order_status=4 + refund status=3)的用户
2. 可选剔除仍持有有效订单(order_status=3)的用户
3. 关联角色表找到user_id查8张分表判断U0五节课完成情况
4. 统计巩固(Review)用时和正确率(从question_list JSON解析isRight)
5. 统计强化(Summary)进入和各知识模块完成情况
6. 统计挑战(Challenge)四维度参与和Perfect/Good/Oops分布
7. 自动识别并剔除巩固用时异常数据
### Step 3: 生成 Excel 报表
```bash
python3 scripts/generate_excel.py \
--input /tmp/refund_learning_report.json \
--output /tmp/退费用户U0学习数据统计.xlsx
```
生成5个Sheet: 总览、课程巩固、单元强化、单元挑战、剔除的异常数据。
### Step 4: 发送文件
使用 `feishu-send-file` skill 将 Excel 文件发送给用户。
## 数据口径
- **退费用户**: `bi_vala_order.order_status = 4``bi_refund_order.status = 3`,通过 `out_trade_no` 关联
- **纯退费用户**: 上述用户中无任何 `order_status = 3` 的有效订单
- **完成U0**: 用户至少完成 L1-U0 或 L2-U0 的全部5节课 (`play_status = 1`)
- **巩固正确率**: `question_list` JSON 中 `isRight=true` 的数量 / 总题数 × 100
- **强化完成**: 做完该单元所有知识模块 (L1=3个, L2=4个)
- **挑战成绩**: 首次各维度的 `score_text` (Perfect/Good/Oops)
- **测试账号**: 通过 `bi_vala_app_account.status = 1` 过滤
## 扩展到其他单元
修改脚本中的 chapter_id 和 story_id 映射即可统计其他单元。
映射关系详见 `references/data-model.md`
查询 `bi_level_unit_lesson` 表获取任意单元的 chapter_id:
```sql
SELECT * FROM bi_level_unit_lesson WHERE course_unit = 'U01' ORDER BY course_level;
```
查询 story_id:
```sql
SELECT DISTINCT story_id, level FROM bi_user_unit_review_question_result
WHERE chapter_id IN (<target_chapter_ids>) LIMIT 5;
```