--- 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 () LIMIT 5; ```