ai_member_xiaoban/memory/2026-05-24.md
2026-05-25 08:00:01 +08:00

6.7 KiB
Raw Permalink Blame History

2026-05-24 工作日志

新建技能: studytime-analysis

[刘庆逊提出] 创建学习时间分析技能,分析角色完课记录的规律。

技能结构

  • skills/studytime-analysis/SKILL.md — 技能定义
  • skills/studytime-analysis/scripts/studytime_analysis.py — Python 分析脚本

分析维度

  1. 一周时间分布排除寒暑假1-2月、7-8月周一~周日各天完课数、时段分布(上午/中午/下午/晚上)、周末是否上课
  2. 跨周学习趋势(包含寒暑假全部数据):总周数、周均完课数、连续性、中断周检测、前后半段趋势对比、突增/骤降检测
  3. 完课记录明细表(全部数据):日期/时间/星期/时段/级别/课程ID

数据源

  • PostgreSQL Onlinevala 库)
  • 核心表:user_chapter_play_record_0~78张分表bi_ 前缀)
  • 筛选:play_status = 1
  • 注意:表在 PostgreSQL 而非 MySQL表名无 bi_ 前缀

寒暑假规则

  • 一周分布分析时排除 1-2 月(寒假)和 7-8 月(暑假)—— 因为寒暑假作息与平时差异大,混在一起会干扰时段分析
  • 跨周趋势和明细表包含全部数据(含寒暑假)
  • 报告中区分标注数据范围

触发方式

用户说「学习时间分析 [角色ID]」即可触发

已测试角色

  • 2343、2344无完课记录play_status=2未完成
  • 2840276条记录秋季集中型用户
  • 25976265条246条在W16周一天完成A2批量疑似系统批量标记
  • 2895188条长期稳定学习型用户36周几乎不间断非寒暑假晚上为主寒暑假上午为主

技术要点

  • psycopg2 的 %(param_name)s 命名参数必须正确匹配UNION ALL 多个子查询需要不同参数名
  • PostgreSQL 返回的 updated_at 是 tz-aware datetime
  • datetime.fromisocalendar(year, week, 1) 获取某周周一的日期

同步

  • 已推送到 SkillHubstudytime-analysis.xiaoban
  • 已 commit 到 Git 远程仓库
  • 已通知 Cris李若松

增强: 报告开头加入角色基本信息 (2026-05-24)

[刘庆逊提出] 在 studytime-analysis 输出中加入角色基本信息,包括:

  • 角色ID、账号ID、角色名字、性别、年龄、账号手机号后4位

数据源(新增)

  • MySQL Online vala_user
  • vala_app_characterid, account_id, nickname, gender(0=女/1=男), birthday(varchar "YYYY-MM-DD")
  • vala_app_accountid, tel(已脱敏如 186****1625)
  • 手机号已脱敏直接取后4位年龄从 birthday 计算

修改文件

  • skills/studytime-analysis/scripts/studytime_analysis.py:新增 MySQL 连接函数 get_mysql_connection()fetch_role_info(role_id),更新 format_report() 输出基本角色信息
  • 已验证 2895 正常运行输出
  • 已同步 SkillHub + Git

Unit 显示修复: 季度名称 → 全局单元编号 (2026-05-24)

[刘庆逊提出] HTML 报告中 Unit 列显示错误——显示的是季度名称(如"小镇时光""钢铁之心"而非单元数字0-48

根因分析

  • vala_game_chapterMySQLunit_index 字段
  • big_map_chapterPostgreSQLunit_index 字段,但仅包含 A1 数据,且与 vala_game_chapter 无直接关联键
  • 两者 ID 空间不重叠big_map: ~1720-2070game_chapter: ~55-399UUID 也不匹配

映射方案

  • 每个 season_package 内,lesson_type=1 的章节按 id 排序,每 5 个连续章节组成一个单元
  • Season 0序章/L1-U0所有章节属于 Unit 0
  • Season 1-4每个 season 有 12 个单元60 个 lesson 章节)
  • 全局 unit_index = base_offset(season_of_quarter) + unit_within_season
    • base_offset: 0→0, 1→1, 2→13, 3→25, 4→37

关键 Bug:初版按 season_of_quarter 分组时 A1 和 A2 混在一起,因为相同季度值合并了。修复:改为按 (level, season_of_quarter) 分组。

验证结果

  • A1: Unit 0-4849 个单元),与 big_map_chapter 的 unit_index 范围一致
  • A2: Unit 0-4950 个单元,比 A1 多 1 个)

已修改文件

  • skills/studytime-analysis/scripts/studytime_analysis.py — 重写 fetch_chapter_info_map(),新增全局 unit_index 计算HTML 模板更新为 Level/Unit/Lesson 三列
  • 已为角色 32009zyl重新生成 HTML 并发送
  • 已同步 Git + SkillHub

新建技能: studycourse-analysis (2026-05-24)

[刘庆逊提出] 创建角色上课情况分析技能,从四维度分析角色学习数据。

技能结构

  • skills/studycourse-analysis/SKILL.md — 技能定义
  • skills/studycourse-analysis/scripts/studycourse_analysis.py — Python 分析脚本

四步分析

  1. 基础信息:角色姓名/年龄/账号ID/手机号后4位/注册时间/购买渠道/设备/首末次完课
  2. 完课耗时:平均值/中位数、异常检测(<10min / >20min)、前后半段趋势
  3. 中互动正确率Perfect/Good/Oops/Pass/Failed 占比和趋势
  4. 知识巩固:完成率、正确率得分分布

数据源

类型 用途
MySQL vala_user vala_app_character 角色信息、purchase_season_package
MySQL vala_user vala_app_account 下载渠道、手机号、注册时间
MySQL vala vala_game_chapter + season_package 章节映射
PostgreSQL vala user_course_detail 课程激活/到期时间
PostgreSQL vala user_login_app_info 设备信息
PostgreSQL vala user_chapter_play_record_0~7 完课记录(play_status=1)
PostgreSQL vala user_component_play_record_0~7 中互动记录(play_result)
PostgreSQL vala user_chapter_settlement_data_0~7 巩固数据(settlement_data JSON)

关键发现

  • 设备信息来自 user_login_app_infodevice_name/model/type/os_info/city
  • 购买渠道来自 vala_app_account.download_channel + key_from
  • 巩固判断settlement_data.practiceSkillPoint > 0 视为已完成(isPractice 字段始终为 false不可靠
  • play_result 六种值Perfect/Good/Oops/Pass/Failed/None其中 Pass/None 不属于用户主动互动结果

技术要点

  • HTML 模板使用 f-string 时CSS 中的 { 必须双写 {{,且不能在 f-string 内做字符串拼接(会打断 f-string
  • 年龄从 birthdayvarchar "YYYY-MM-DD")计算,非 DATE 类型
  • 手机号在 MySQL 已脱敏(如 186****1625直接取后4位

已测试角色

  • 32009 (zyl)26 条完课651 条中互动(Perfect 82.6%、Good 2.9%)26 节巩固全部满分。课程 A2Apple App Store 购买,渠道 newmedia-daren-xhs-宣儿麻麻。设备小课屏E3。学习时间 2026-04-24 ~ 2026-05-24。

同步

  • 已推送到 SkillHubstudycourse-analysis.xiaoban
  • 已 commit 8648b7b 到 Git 远程仓库
  • 已通知 Cris李若松