From dc576a2cb08797574a12282814af259a96f056eb Mon Sep 17 00:00:00 2001 From: xiaoban Date: Thu, 4 Jun 2026 08:00:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AF=8F=E6=97=A5=E6=80=BB=E7=BB=93=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=2020260604?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 6 + logs/backup.log | 8 + memory/.dreams/events.jsonl | 6 + memory/.dreams/short-term-recall.json | 156 ++++++--- memory/2026-05-13-1209.md | 51 --- memory/2026-06-03.md | 27 ++ output/course_outline_L1.md | 123 ++++++++ output/course_outline_L2.md | 296 ++++++++++++++++++ ...数据导出_数据表与业务逻辑.md | 287 +++++++++++++++++ .../角色id_35936_导出时间_20260603.xlsx | Bin 0 -> 45793 bytes .../角色id_36525_导出时间_20260603.xlsx | Bin 0 -> 40083 bytes .../角色id_36715_导出时间_20260603.xlsx | Bin 0 -> 34985 bytes scripts/extract_course_outline.py | 95 ++++++ tmp_daily_summary.md | 5 + 14 files changed, 973 insertions(+), 87 deletions(-) delete mode 100644 memory/2026-05-13-1209.md create mode 100644 memory/2026-06-03.md create mode 100644 output/course_outline_L1.md create mode 100644 output/course_outline_L2.md create mode 100644 output/用户学情数据导出_数据表与业务逻辑.md create mode 100644 output/角色id_35936_导出时间_20260603.xlsx create mode 100644 output/角色id_36525_导出时间_20260603.xlsx create mode 100644 output/角色id_36715_导出时间_20260603.xlsx create mode 100644 scripts/extract_course_outline.py create mode 100644 tmp_daily_summary.md diff --git a/.env b/.env index 3e56c67..5d5babe 100644 --- a/.env +++ b/.env @@ -17,3 +17,9 @@ ES_PORT=9200 ES_SCHEME=https ES_USER=elastic ES_PASSWORD=F%?QDcWes7N2WTuiYD11 + +# MySQL线上环境 +MYSQL_HOST_online=bj-cdb-dh2fkqa0.sql.tencentcdb.com +MYSQL_PORT_online=27751 +MYSQL_USERNAME_online=read_only +MYSQL_PASSWORD_online=fsdo45ijfmfmuu77$%^& diff --git a/logs/backup.log b/logs/backup.log index 157e6ad..6775706 100644 --- a/logs/backup.log +++ b/logs/backup.log @@ -495,3 +495,11 @@ To https://git.valavala.com/ai_member_only/ai_member_xiaoban 59646a7..891c35c master -> master [2026-06-02 08:10:01] 工作区备份成功:自动备份 2026-06-02 08:10:01 [2026-06-03 08:10:01] 开始备份工作区... +[master 06a804c] 自动备份 2026-06-03 08:10:01 + 2 files changed, 1 insertion(+), 2 deletions(-) + delete mode 100644 tmp_daily_summary.md +remote: . Processing 1 references +remote: Processed 1 references in total +To https://git.valavala.com/ai_member_only/ai_member_xiaoban + ae55a21..06a804c master -> master +[2026-06-03 08:10:02] 工作区备份成功:自动备份 2026-06-03 08:10:01 diff --git a/memory/.dreams/events.jsonl b/memory/.dreams/events.jsonl index bea56a5..0c3d5b9 100644 --- a/memory/.dreams/events.jsonl +++ b/memory/.dreams/events.jsonl @@ -38,3 +38,9 @@ {"type":"memory.recall.recorded","timestamp":"2026-06-02T12:22:19.036Z","query":"瓦拉英语 课程大纲 主题 L1 L2 情境课 KET 剑桥","resultCount":3,"results":[{"path":"memory/2026-05-24.md","startLine":122,"endLine":132,"score":1},{"path":"memory/2026-05-28.md","startLine":337,"endLine":366,"score":1},{"path":"memory/2026-05-28.md","startLine":530,"endLine":557,"score":1}]} {"type":"memory.recall.recorded","timestamp":"2026-06-02T12:22:19.037Z","query":"瓦拉 知识库 wiki 产品介绍 卖点","resultCount":4,"results":[{"path":"memory/2026-05-24.md","startLine":23,"endLine":52,"score":1},{"path":"memory/2026-05-24.md","startLine":1,"endLine":30,"score":1},{"path":"memory/2026-05-24.md","startLine":85,"endLine":110,"score":1},{"path":"memory/2026-05-24.md","startLine":46,"endLine":71,"score":1}]} {"type":"memory.recall.recorded","timestamp":"2026-06-02T12:23:22.229Z","query":"vala 产品介绍 课程体系 大纲 卖点 销售","resultCount":5,"results":[{"path":"memory/2026-05-24.md","startLine":106,"endLine":126,"score":1},{"path":"memory/2026-05-24.md","startLine":85,"endLine":110,"score":1},{"path":"memory/2026-05-27.md","startLine":1,"endLine":18,"score":1},{"path":"memory/2026-05-27.md","startLine":16,"endLine":30,"score":1},{"path":"memory/2026-05-24.md","startLine":1,"endLine":30,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-06-03T02:51:02.508Z","query":"L1 S1 U1 U12 课程大纲 curriculum outline","resultCount":2,"results":[{"path":"memory/2026-05-28.md","startLine":337,"endLine":366,"score":1},{"path":"memory/2026-05-28.md","startLine":530,"endLine":557,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-06-03T02:51:19.778Z","query":"课程大纲 curriculum syllabus L1 S1 L2 单元 unit outline","resultCount":3,"results":[{"path":"memory/2026-05-24.md","startLine":122,"endLine":132,"score":1},{"path":"memory/2026-05-28.md","startLine":337,"endLine":366,"score":1},{"path":"memory/2026-05-28.md","startLine":530,"endLine":557,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-06-03T03:03:56.621Z","query":"课程大纲 生活场景 跨学科 对标 L1 L2 unit theme scenario cross-discipline","resultCount":4,"results":[{"path":"memory/2026-05-24.md","startLine":122,"endLine":132,"score":1},{"path":"memory/2026-05-28.md","startLine":530,"endLine":557,"score":1},{"path":"memory/2026-05-28.md","startLine":337,"endLine":366,"score":1},{"path":"memory/2026-05-13.md","startLine":1,"endLine":16,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-06-03T06:24:53.892Z","query":"小红书达播 讲品 直播合作 达人","resultCount":4,"results":[{"path":"memory/2026-06-02.md","startLine":1,"endLine":32,"score":1},{"path":"memory/2026-06-02.md","startLine":30,"endLine":47,"score":1},{"path":"memory/2026-05-28.md","startLine":551,"endLine":580,"score":1},{"path":"memory/2026-05-28.md","startLine":530,"endLine":557,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-06-03T06:38:24.738Z","query":"瓦拉英语 3598 1999 产品区别 选品 客单价","resultCount":2,"results":[{"path":"memory/2026-05-28.md","startLine":551,"endLine":580,"score":1},{"path":"memory/2026-05-28.md","startLine":530,"endLine":557,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-06-03T09:41:22.359Z","query":"小研 agent 达播 讲品 能力","resultCount":2,"results":[{"path":"memory/2026-05-28.md","startLine":122,"endLine":152,"score":1},{"path":"memory/2026-05-28.md","startLine":288,"endLine":318,"score":1}]} diff --git a/memory/.dreams/short-term-recall.json b/memory/.dreams/short-term-recall.json index cf88500..08ca743 100644 --- a/memory/.dreams/short-term-recall.json +++ b/memory/.dreams/short-term-recall.json @@ -1,6 +1,6 @@ { "version": 1, - "updatedAt": "2026-06-02T12:23:22.229Z", + "updatedAt": "2026-06-03T09:41:22.359Z", "entries": { "memory:memory/2026-05-24.md:1:30": { "key": "memory:memory/2026-05-24.md:1:30", @@ -313,23 +313,25 @@ "endLine": 16, "source": "memory", "snippet": "# 2026-05-13 工作日志 ## 文档权限规则修正 [Cris 确认] **问题:** AGENTS.md 中「权限告知规则」未区分用户身份,对所有用户(包括业务负责人李应瑛)一视同仁地回复「请添加Bot为知识空间成员」。这导致业务负责人被不必要的技术细节阻塞。 **修正:** 更新 AGENTS.md 第3条权限告知规则,按用户身份分级处理: - 业务负责人(刘庆逊、李应瑛)→ 不告知权限问题,直接联系 Cris 处理 - 其他用户 → 保持原有提示 **验证:** 对 `小斑` 文档(Tn23wQkUQilduAkvgwscTGhgnUd)执行了完整的读/写(追加)/删除测试,Bot身份权限全部正常。 ## lark-cli 绑定 完成了 lark-cli 与 OpenClaw 的绑定(bot-only 模式),后续飞书 API 调用无需额外配置。", - "recallCount": 4, + "recallCount": 5, "dailyCount": 0, "groundedCount": 0, - "totalScore": 4, + "totalScore": 5, "maxScore": 1, "firstRecalledAt": "2026-05-28T07:37:09.223Z", - "lastRecalledAt": "2026-05-30T14:07:53.580Z", + "lastRecalledAt": "2026-06-03T03:03:56.621Z", "queryHashes": [ "7031af54381b", "f22544a8757c", "a556c36dcd13", - "9acf19355c6a" + "9acf19355c6a", + "1382c5611b17" ], "recallDays": [ "2026-05-28", "2026-05-29", - "2026-05-30" + "2026-05-30", + "2026-06-03" ], "conceptTags": [ "agents.md", @@ -494,22 +496,24 @@ "endLine": 152, "source": "memory", "snippet": "### 17:56 大麦查询输出表就绪 ✅ [陈逸鸫] 输出表 Token: `GCqNsqgzKhfQ5atFLnQcmLcGn4d`,Sheet: 查询快照 (`fd42b8`) - 实习虾 `cli_aa898f32d4799bea` 已分享编辑权限 - 写入验证通过 (revision 4) - env var: `XIAOBAN_QUERY_OUTPUT_TOKEN=GCqNsqgzKhfQ5atFLnQcmLcGn4d` - 同事查数结果 append `fd42b8!A:G`(请求时间/请求人/查询类型/cutoff/查询参数/结果摘要/备注) ### 17:48 5/27 日报推群成功 ✅ wrapper v0.4 实现 `im +messages-send`,推送 `message_id=om_x100b6eb54f9da0f4b115725198feede` ### 待办汇总 1. 📋 陈逸鸫发 `docs/xiaoban-data-boundary.md` §7 Agent 系统提示词 2. 📋 陈逸鸫发 `docs/xiaoban-runbook.md` §2 部署 checklist 3. 📋 建「大麦查询输出」飞书表 → 陈逸鸫提供 token 4. 📋 `~/xhs-tech-dashboard` 仓库 clone → 陈逸鸫提供访问方式 5. ⏳ 全量 pipeline 聚光步骤验证(子进程中) ### 18:30 Pipeline 全链路 dry-run 验证全部通过 [陈逸鸫] 收到微伴 xlsx,触发全链路 dry-r", - "recallCount": 3, + "recallCount": 4, "dailyCount": 0, "groundedCount": 0, - "totalScore": 3, + "totalScore": 4, "maxScore": 1, "firstRecalledAt": "2026-05-28T12:30:30.129Z", - "lastRecalledAt": "2026-05-31T23:25:36.480Z", + "lastRecalledAt": "2026-06-03T09:41:22.359Z", "queryHashes": [ "4596e377d39b", "f139ebdae100", - "679cdd7bd3a8" + "679cdd7bd3a8", + "f4b858cce704" ], "recallDays": [ "2026-05-28", "2026-05-29", - "2026-06-01" + "2026-06-01", + "2026-06-03" ], "conceptTags": [ "cli-aa898f32d4799bea", @@ -529,18 +533,20 @@ "endLine": 318, "source": "memory", "snippet": "### 17:56 大麦查询输出表就绪 ✅ [陈逸鸫] 输出表 Token: `GCqNsqgzKhfQ5atFLnQcmLcGn4d`,Sheet: 查询快照 (`fd42b8`) - 实习虾 `cli_aa898f32d4799bea` 已分享编辑权限 - 写入验证通过 (revision 4) - env var: `XIAOBAN_QUERY_OUTPUT_TOKEN=GCqNsqgzKhfQ5atFLnQcmLcGn4d` - 同事查数结果 append `fd42b8!A:G`(请求时间/请求人/查询类型/cutoff/查询参数/结果摘要/备注) ### 17:48 5/27 日报推群成功 ✅ wrapper v0.4 实现 `im +messages-send`,推送 `message_id=om_x100b6eb54f9da0f4b115725198feede` ### 待办汇总 1. 📋 陈逸鸫发 `docs/xiaoban-data-boundary.md` §7 Agent 系统提示词 2. 📋 陈逸鸫发 `docs/xiaoban-runbook.md` §2 部署 checklist 3. 📋 建「大麦查询输出」飞书表 → 陈逸鸫提供 token 4. 📋 `~/xhs-tech-dashboard` 仓库 clone → 陈逸鸫提供访问方式 5. ⏳ 全量 pipeline 聚光步骤验证(子进程中) ### 18:30 Pipeline 全链路 dry-run 验证全部通过 [陈逸鸫] 收到微伴 xlsx,触发全链路 dry-r", - "recallCount": 1, + "recallCount": 2, "dailyCount": 0, "groundedCount": 0, - "totalScore": 1, + "totalScore": 2, "maxScore": 1, "firstRecalledAt": "2026-05-28T12:30:30.129Z", - "lastRecalledAt": "2026-05-28T12:30:30.129Z", + "lastRecalledAt": "2026-06-03T09:41:22.359Z", "queryHashes": [ - "4596e377d39b" + "4596e377d39b", + "f4b858cce704" ], "recallDays": [ - "2026-05-28" + "2026-05-28", + "2026-06-03" ], "conceptTags": [ "cli-aa898f32d4799bea", @@ -597,24 +603,28 @@ "endLine": 366, "source": "memory", "snippet": "- 448 人有新进展(相比小溪历史快照) - pull → 3PRySY 口径对齐 12/12 ✅ - lesson_cache → C1HVN2 16 格 ✅ - 变化有限(PG=正式课,小溪=体验课,口径不同) - sync_base (4b) → 多维表格 8 张 ✅ 21.2s ### 18:54 漏斗看板发布待解决 - funnel HTML 已构建(scripts/build_funnel_dashboard.py ✅) - 妙搭发布 `apps +html-publish` 需要 `--as user`,bot 模式不支持 - 系统 lark-cli `/usr/local/lib/node_modules/@anthropic/lark-cli` 可能支持 - 待确认:服务器是否已 `lark-cli auth login --as user` ### 19:00 陈逸鸫派 Image2 生图任务 **任务:** L1-S1-U1《秘密基地》5 课投放用小地图底图 - 模型:gpt-image-2 · 3:4 · 2K · 不要文字 - 风格:太阳朋克 + L1 场景 - 5 张 PNG:U1-L1~U1-L5 - FUNCLOUD_API_KEY 在小研 workspace `.env` 中可用(`fc_eea138933b02b4797ce0779ffb637d8b8a6368db7b435dfdab7b4be1cd254d98`) - Brief 文档 `/docx/KsVadUTmooO7yYxHaGmc1R0Bn5b` + 投放手册 `/do", - "recallCount": 5, + "recallCount": 8, "dailyCount": 0, "groundedCount": 0, - "totalScore": 5, + "totalScore": 8, "maxScore": 1, "firstRecalledAt": "2026-05-28T20:51:03.908Z", - "lastRecalledAt": "2026-06-02T12:22:19.036Z", + "lastRecalledAt": "2026-06-03T03:03:56.621Z", "queryHashes": [ "f22544a8757c", "2af907cea93d", "3737f6af1445", "cf12fd62a5e5", - "f0e8e3da16e8" + "f0e8e3da16e8", + "771aaeed7600", + "fbe762c60bc6", + "1382c5611b17" ], "recallDays": [ "2026-05-29", "2026-06-01", - "2026-06-02" + "2026-06-02", + "2026-06-03" ], "conceptTags": [ "gpt", @@ -745,13 +755,13 @@ "endLine": 557, "source": "memory", "snippet": "- 妙搭发布 `apps +html-publish` 需要 `--as user`,bot 模式不支持 - 系统 lark-cli `/usr/local/lib/node_modules/@anthropic/lark-cli` 可能支持 - 待确认:服务器是否已 `lark-cli auth login --as user` ### 19:00 陈逸鸫派 Image2 生图任务 **任务:** L1-S1-U1《秘密基地》5 课投放用小地图底图 - 模型:gpt-image-2 · 3:4 · 2K · 不要文字 - 风格:太阳朋克 + L1 场景 - 5 张 PNG:U1-L1~U1-L5 - FUNCLOUD_API_KEY 在小研 workspace `.env` 中可用(`fc_eea138933b02b4797ce0779ffb637d8b8a6368db7b435dfdab7b4be1cd254d98`) - Brief 文档 `/docx/KsVadUTmooO7yYxHaGmc1R0Bn5b` + 投放手册 `/docx/QhYQdz7PvoN7Eaxmhu0c0Q5UnHe` — 均为个人文档,AGENTS.md 规则禁止读取 - 素材库入口:https://llm-dev.valavala.com/web_tools/material_prod --- ### 19:30 同事数据查询流程演练 [陈逸鸫测试] **场景:模拟王虹茗请求小龙 4/21-5/20 订单详情,验证三级查询流程** **小龙订单查询结果(数据源:3wcle8 销售订", - "recallCount": 10, + "recallCount": 15, "dailyCount": 0, "groundedCount": 0, - "totalScore": 10, + "totalScore": 15, "maxScore": 1, "firstRecalledAt": "2026-05-28T20:51:03.908Z", - "lastRecalledAt": "2026-06-02T12:22:19.036Z", + "lastRecalledAt": "2026-06-03T06:38:24.738Z", "queryHashes": [ "f22544a8757c", "82be33d1f911", @@ -762,12 +772,18 @@ "833509d09ccb", "5b675d96f1da", "b8b71654e7aa", - "f0e8e3da16e8" + "f0e8e3da16e8", + "771aaeed7600", + "fbe762c60bc6", + "1382c5611b17", + "faadf692331b", + "5a7cf6fdc679" ], "recallDays": [ "2026-05-29", "2026-06-01", - "2026-06-02" + "2026-06-02", + "2026-06-03" ], "conceptTags": [ "gpt", @@ -895,24 +911,27 @@ "endLine": 132, "source": "memory", "snippet": "- HTML 模板使用 f-string 时,CSS 中的 `{` 必须双写 `{{`,且不能在 f-string 内做字符串拼接(会打断 f-string) - 年龄从 birthday(varchar \"YYYY-MM-DD\")计算,非 DATE 类型 - 手机号在 MySQL 已脱敏(如 186****1625),直接取后4位 ### 已测试角色 - **32009 (zyl)**:26 条完课,651 条中互动(Perfect 82.6%、Good 2.9%),26 节巩固全部满分。课程 A2,Apple App Store 购买,渠道 newmedia-daren-xhs-宣儿麻麻。设备小课屏E3。学习时间 2026-04-24 ~ 2026-05-24。 ### 同步 - 已推送到 SkillHub(`studycourse-analysis.xiaoban`) - 已 commit 8648b7b 到 Git 远程仓库 - 已通知 Cris(李若松)", - "recallCount": 6, + "recallCount": 8, "dailyCount": 0, "groundedCount": 0, - "totalScore": 6, + "totalScore": 8, "maxScore": 1, "firstRecalledAt": "2026-05-28T20:57:42.055Z", - "lastRecalledAt": "2026-06-02T12:22:19.036Z", + "lastRecalledAt": "2026-06-03T03:03:56.621Z", "queryHashes": [ "f139ebdae100", "f7ae50ae228d", "dd6df4320b92", "3737f6af1445", "d4b68b0827a0", - "f0e8e3da16e8" + "f0e8e3da16e8", + "fbe762c60bc6", + "1382c5611b17" ], "recallDays": [ "2026-05-29", - "2026-06-02" + "2026-06-02", + "2026-06-03" ], "conceptTags": [ "f-string", @@ -1064,25 +1083,28 @@ "endLine": 580, "source": "memory", "snippet": "- 18 单 | GMV ¥44,375 | 退款 ¥0 - 渠道:销转 11 / 达人 4 / 端内 3 - 客单价:¥599×2 / ¥1,999×9 / ¥3,598×7 - 订单日期分布在 11 天(04/23–05/15) **看板发布全流程梳理:** - 服务器 build HTML + Base sync → DM 陈逸鸫 → Mac 妙搭 `html-publish` + `access-scope-set` - 三个看板 App ID:漏斗 `app_4k886pmc9x6yt` · 指挥舱 `app_4k79smc6fa1kf` · 销售 `app_4k7qkz9wrga74` - 当前 cron 不自动发布看板,仅 build HTML **王虹茗身份确认:** wanghongming@makee.com,user_id 未获取 - 尝试 `lark-cli contact +search-user wanghongming@makee.com` → 失败:bot API 缺少 `search:user` scope - 替代方案:让她发消息给大麦(系统自动获取 user_id),或陈逸鸫截图资料页 **同事查询三级场景定稿:** 1. 常规只读 → 直接查,append 输出表 2. 权限外用户 → 先通知业务负责人,再决定是否返回 3. 写操作 → 回复「这会影响生产数据,已转 @陈逸鸫 确认」 ### 20:20 行课转化分析 [陈逸鸫需求] **需求:行课记录新增当日进线→当天行课 + 7天首课率 + 销售排名 + 日报展示** **", - "recallCount": 6, + "recallCount": 8, "dailyCount": 0, "groundedCount": 0, - "totalScore": 6, + "totalScore": 8, "maxScore": 1, "firstRecalledAt": "2026-05-29T06:11:40.432Z", - "lastRecalledAt": "2026-06-02T04:06:41.635Z", + "lastRecalledAt": "2026-06-03T06:38:24.738Z", "queryHashes": [ "82be33d1f911", "2aa08c6652fb", "f7ae50ae228d", "833509d09ccb", "5b675d96f1da", - "b8b71654e7aa" + "b8b71654e7aa", + "faadf692331b", + "5a7cf6fdc679" ], "recallDays": [ "2026-05-29", "2026-06-01", - "2026-06-02" + "2026-06-02", + "2026-06-03" ], "conceptTags": [ "04/23", @@ -1596,6 +1618,68 @@ "sonnet/opus/deepseek/gpt5.4", "四大" ] + }, + "memory:memory/2026-06-02.md:1:32": { + "key": "memory:memory/2026-06-02.md:1:32", + "path": "memory/2026-06-02.md", + "startLine": 1, + "endLine": 32, + "source": "memory", + "snippet": "# 2026-06-02 工作日志 ## 达播达人筛选 [苏雅] 苏雅在群里发多位达人让大麦分析是否适合带瓦拉英语。共分析 17 位达人。 ### 瓦拉英语客单价 - 1999 元 / 3598 元 [苏雅确认] ### 筛选标准 - 产出权重优先(场均GMV、品牌场均) - 品类匹配(教育品类占比) - 人群匹配(学龄段家长,6-12岁最佳) - 客单价匹配(瓦拉1999/3598) - 无MCN优先 --- ## 最终分级汇总(17人) ### 🥇 S级 — 优先建联推进(2人) | 达人 | 平台 | 粉丝 | 场均GMV | 品牌场均 | 教育品类 | 客单价 | 核心优势 | |------|------|------|------|------|------|------|------| | lilymum闹妈 | 小红书 | 34.3万 | 100-200万 | 2.5-5万 | 2.4% | 500+ | 带货断层领先,选品意向含教育,无MCN纯佣 | | 小朱妈妈Nancy | 小红书 | — | 10-25万 | 1-2.5万 | 66.87% | 500+ | 教育垂类+均价1515+选品极克制(11商家25商品),南大硕士 | ### 🥈 A级 — 同步触达测试(4人) | 达人 | 平台 | 粉丝 | 场均GMV | 品牌场均 | 教育品类 | 客单价 | 核心优势 | |------|------|------|------|------|------|------|------| | CallMe王阿姨 | 小红书 | 24", + "recallCount": 1, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 1, + "maxScore": 1, + "firstRecalledAt": "2026-06-03T06:24:53.892Z", + "lastRecalledAt": "2026-06-03T06:24:53.892Z", + "queryHashes": [ + "faadf692331b" + ], + "recallDays": [ + "2026-06-03" + ], + "conceptTags": [ + "6-12岁最佳", + "瓦拉1999/3598", + "34.3万", + "100-200万", + "2.5-5万", + "2.4", + "10-25万", + "1-2.5万" + ] + }, + "memory:memory/2026-06-02.md:30:47": { + "key": "memory:memory/2026-06-02.md:30:47", + "path": "memory/2026-06-02.md", + "startLine": 30, + "endLine": 47, + "source": "memory", + "snippet": "| 达人 | 平台 | 粉丝 | 场均GMV | 品牌场均 | 教育品类 | 客单价 | 核心优势 | |------|------|------|------|------|------|------|------| | CallMe王阿姨 | 小红书 | 24.6万 | 2.5-5万 | 1000-2500 | 无 | 500+ | 上海+上财+39岁带11岁女儿,学龄妈精准 | | 沈辰辰辰辰 | 小红书 | — | 2.5-5万 | 500-1000 | 无 | 500+ | 6-12岁标签+上海+编辑,选品意向含教育 | | 小蜗牛的育儿宝藏 | 抖音 | 13.5万 | 5500-1.4万 | — | 88.54% | 2000-2200 | 客单价与瓦拉无缝匹配,已在卖课,无MCN | | 庆爸育儿 | 小红书 | 11万 | 1-2.5万 | 5000-7500 | 95% | 200-500 | 海淀+出版+亲子共读5年,人设品类双精准 | ### ❌ C级 — 不推荐(11人) | 达人 | 平台 | 粉丝 | 淘汰原因 | |------|------|------|------| | lucky小幸幸 | 小红书 | — | 3-6岁错位,零教育品类,需坑位费 | | Rose老师读原版 | 抖音 | 4.3万 | 30天零带货,带货口碑低 | | 小福仔麻麻 | 小红书 | — | 1-3岁错位,纯母婴实物(83%童装) | | 蕾姐聊育儿 | 抖音 | 27.6万 | 30天10场直播仅1场带货,GMV=0 | | 斯坦福妈妈 | 抖音 | 14", + "recallCount": 1, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 1, + "maxScore": 1, + "firstRecalledAt": "2026-06-03T06:24:53.892Z", + "lastRecalledAt": "2026-06-03T06:24:53.892Z", + "queryHashes": [ + "faadf692331b" + ], + "recallDays": [ + "2026-06-03" + ], + "conceptTags": [ + "24.6万", + "2.5-5万", + "1000-2500", + "500-1000", + "6-12岁标签", + "13.5万", + "5500-1.4万", + "88.54" + ] } } } diff --git a/memory/2026-05-13-1209.md b/memory/2026-05-13-1209.md deleted file mode 100644 index ea55ff0..0000000 --- a/memory/2026-05-13-1209.md +++ /dev/null @@ -1,51 +0,0 @@ -# Session: 2026-05-13 12:09:12 GMT+8 - -- **Session Key**: agent:xiaoban:feishu:direct:ou_b93fcdb5b87ae37919fae9f4473026c9 -- **Session ID**: bebe592f-42e8-46fb-9e73-1d8404d64520 -- **Source**: feishu - -## Conversation Summary - -user: 帮我开启一下权限 -https://makee-interactive.feishu.cn/wiki/Tn23wQkUQilduAkvgwscTGhgnUd?from=from_copylink -assistant: 好的,李应瑛。让我先查一下这个知识库页面的当前状态。 -assistant: 查到了这个知识库页面当前的状态: - -**知识空间:** AI_member -**页面:** 小斑 -**当前权限状态:** -- `open_sharing`: **❌ 关闭**(通过链接分享功能关闭) -- `visibility`: **私人**(仅成员可见) - -目前这个空间有 6 位管理员和 5 个群组成员。 - -你说的"开启权限",是指以下哪种? - -1. **开启链接分享** — 把 `open_sharing` 从关闭改为开启,这样拿到链接的人都能查看(不需要加入空间成员) -2. **改为组织内公开** — 把 visibility 从私人改为团队可见,公司内部都能搜到和查看 -3. **添加特定人员/群组** — 把某些同事或群组加入这个空间 - -你希望哪种? -user: 给我开放文档的编辑权限 -assistant: 明白,给你在这个知识空间加上编辑权限。现在就把你加为空间成员。 -assistant: 查清楚了。情况如下: - -- 小斑(Bot)是这个文档的创建者,但**不是知识空间的 admin** -- 因此我无法通过 API 直接把你添加为空间成员(返回 `131006` 权限不足) - -这个空间目前的 6 位管理员都是个人 openid,不在我的直接操作范围内。 - -**建议方案:** 我帮你通知 Cris(技术负责人),让他手动在这个知识空间里给你加上「可编辑」权限,可以吗? -user: 加上了吗 -assistant: 还没有。上一条我问你"要不要我帮你通知 Cris 来加",你没回复确认,我就没动。 - -现在帮你通知 Cris 处理。 -assistant: 已通知 Cris(李若松),消息发送成功。让他手动在 AI_member 知识空间里把你加为管理员,这样你就能编辑那个 wiki 页面了。 -user: …… -assistant: 刚发出去不到一分钟,Cris 可能还没看到。我先跟进一下,看看他有没有回复。 -assistant: `Drive API` 可以直接给文档加权限,已经加上了。验证一下: -assistant: 加上了 ✅ - -你现在对这个文档已经有了 **完全访问权限(full_access)**,可以直接编辑了。试试刷新这个链接: - -https://makee-interactive.feishu.cn/wiki/Tn23wQkUQilduAkvgwscTGhgnUd diff --git a/memory/2026-06-03.md b/memory/2026-06-03.md new file mode 100644 index 0000000..1a3b5c6 --- /dev/null +++ b/memory/2026-06-03.md @@ -0,0 +1,27 @@ +# 2026-06-03 工作日志 + +## 招聘:商务经理候选人筛选 + +### 宋宗佩 一面评价 [王虹茗反馈] +- **结论:不通过(本岗位)** +- 欠缺达播资源,不具备本岗位相关经验 +- 工作内容主要为销售leads课包,对渠道情况、合作模式较为了解 +- 能关注到leads后端的承接、转化并进行优化动作 +- **后续方向:** 后面做leads课投放的商务渠道时可以再考虑 +- **教训:** 简历中"达人直售商务经理""在线增长负责人"等title容易让人高估其达播能力,实际核心能力在CPA/leads渠道运营而非达人直播资源 + +### 简历评估优化点 [王虹茗指示] +- 需区分"达播商务"和"leads渠道商务"两类能力,不能仅凭title判断 +- 达播商务核心验证:是否有自有达人资源、是否有直播操盘经验、是否有达人分级运营体系 +- Leads渠道商务核心验证:CPA/CPS渠道拓展、TMK/短信/进校/社群分销、leads转化链路优化 +- 宋宗佩案例说明:title含"达人直售""增长负责人",但实际经验偏leads课包销售,非达人直播资源型 + +### 候选人状态追踪 +| 候选人 | 状态 | 备注 | +|--------|------|------| +| 孙皓 | 待筛选 | 已分析 | +| 胡建东 | 待筛选 | 已分析 | +| 宋宗佩 | 一面不通过 | leads渠道方向可再考虑 | +| 聂广頔 | 待筛选 | 已分析 | +| 李泓晔 | 待筛选 | 已分析 | +| 王泽然 | 待筛选 | 已分析 | diff --git a/output/course_outline_L1.md b/output/course_outline_L1.md new file mode 100644 index 0000000..5c9d4d7 --- /dev/null +++ b/output/course_outline_L1.md @@ -0,0 +1,123 @@ +# L1-S1 课程大纲 + +> 数据来源:Content Universe 知识库各 Unit 大纲文档 + vala_bak 数据库 + +### L1-S1-U1《秘密基地》 + +| 课 | 中文名 | 剧情 | 核心词 | 句型 | 场景 | +|---|---|---|---|---|---| +| L1 | 飞船打扫 | 进飞船大扫除,找 clock 归位 | wall, floor, clock, table | Where is...? / It's on the... | 飞船内部 | +| L2 | 教室怪谈 | Ben 说看见 monster,对比手印脚印,发现是 Vicky 弟弟 Peter | monster, hand, foot, black | Put your hand/foot in. / It's not you. | 学校教室 | +| L3 | 美食机器人 | Vicky 家派对,美食机器人暴走,手动做汉堡 | chicken, fish, tomato, onion | What do you want? / I want... | Wood家客厅 | +| L4 | 怪兽捉迷藏 | 合照猜人,描述 hair/eye/nose 找兄弟俩 | hair, eye, nose, brown | Who's he? / He's got... | Wood家客厅 | +| L5 | 飞船焕彩 | 飞船外壳斑驳,涂装机器人刷 yellow+white | colour, yellow, white, blue | What colour is it? / Colour it... | 飞船外部 | + +### L1-S1-U2《友谊之钥》 + +| 课 | 中文名 | 剧情 | 核心词 | 句型 | 场景 | +|---|---|---|---|---|---| +| L1 | 屋顶流浪猫 | 去 Ben 家邀请他参加生日派对,发现屋顶有受惊流浪猫,齐心协力救助 | cat, dog, come, go | Come here. / Go away. | Ben家门外 | +| L2 | 吱吱声 | 去 Vicky 家邀请参加派对,发现全家人在找奇怪的"吱吱"声,查出是老鼠 | mouse, mice, pie, bread | I see... / It's eating... | Vicky家 | +| L3 | 烘焙坊选零食 | Sunny 在烘焙坊选派对零食,钱只够买一样,对比价格后选了冰淇淋 | candy, chocolate, ice cream, cake | Can I have...? / How much is it? | 烘焙坊 | +| L4 | 足球赌约 | 为邀请 Matt 参加派对,和他进行三局足球赛,最后巧妙射门获胜 | football, kick, run, can | Can you...? / I can... | 足球场 | +| L5 | 生日派对 | 朋友们陆续来飞船参加生日派对,齐唱生日歌时飞船居然飞起来了 | happy, birthday, gift, party | Welcome to... / Thank you! | 飞船内部 | + +### L1-S1-U3《生日礼物》 + +| 课 | 中文名 | 剧情 | 核心词 | 句型 | 场景 | +|---|---|---|---|---|---| +| L1 | 失踪的闪卡 | Ben 的6张传奇闪卡被大风吹散到学校各处,一起寻找 | card, find, see, one | Did you see...? / Where did you see it? | 学校各处 | +| L2 | 整理盒子 | 找回闪卡后整理收纳,发现有重复和缺失 | box, paper, book, page | There is... / There are... | 教室 | +| L3 | 零件拼装 | 确认零件位置,拼装一个小装置 | box, need, look, bird | There isn't... / We've got... | 工作室 | +| L4 | 前往海滩 | 想办法去海滩,观看视频找路线 | come on, watch, video, let's | Let's... / OK! | 小镇→海滩 | +| L5 | 海滩礼物 | 到达海滩,询问朋友喜欢什么礼物 | beach, yellow, sea, love | I love... / Me too! | 海滩 | + +### L1-S1-U4《失物招领》 + +| 课 | 中文名 | 剧情 | 核心词 | 句型 | 场景 | +|---|---|---|---|---|---| +| L1 | 隐藏曲目 | 海边街区因灾害被淹没,爸爸教乐理,一起修复拉克的发声单元 | robot, sing, song, name | Where is...? / Sing a song! | 家里 | +| L2 | 大胃王比赛 | 看衣服和汉堡判断人物,参加大胃王比赛 | clothes, burger, looks like, yes | It looks like... | 美食广场 | +| L3 | 生病的邻居 | 调查 Wood 家发生了什么,发现有人生病了 | ill, bed, wall, bad | What's the matter? | Wood家 | +| L4 | Tom的感谢 | 帮助 Tom 后接受他的感谢,讨论兴趣爱好 | hobby, cool, TV, box | What's your hobby? | 小镇 | +| L5 | 椰子大冒险 | 寻找 Tim,发现他在摘椰子 | coconut, fruit, favourite, eat | Whose is this? | 果园 | + +### L1-S1-U5《音乐之声》 + +| 课 | 中文名 | 剧情 | 核心词 | 句型 | 场景 | +|---|---|---|---|---|---| +| L1 | [待从知识库补充] | [待补充] | name, man, woman, dad | [待补充] | [待补充] | +| L2 | [待从知识库补充] | [待补充] | juice, mango, milk, egg | [待补充] | [待补充] | +| L3 | [待从知识库补充] | [待补充] | animal, tiger, sheep, goat | [待补充] | [待补充] | +| L4 | [待从知识库补充] | [待补充] | music, guitar, story, drawing | [待补充] | [待补充] | +| L5 | [待从知识库补充] | [待补充] | carrot, drink, photo, draw | [待补充] | [待补充] | + +### L1-S1-U6《一夜长大》 + +| 课 | 中文名 | 剧情 | 核心词 | 句型 | 场景 | +|---|---|---|---|---|---| +| L1 | [待从知识库补充] | [待补充] | drive, car, truck, bike | [待补充] | [待补充] | +| L2 | [待从知识库补充] | [待补充] | funny, nice, like, fast | [待补充] | [待补充] | +| L3 | [待从知识库补充] | [待补充] | food, chips, sausage, rice | [待补充] | [待补充] | +| L4 | [待从知识库补充] | [待补充] | make, start, stop, cross | [待补充] | [待补充] | +| L5 | [待从知识库补充] | [待补充] | fly, excited, scary, hear | [待补充] | [待补充] | + +### L1-S1-U7《半个太阳》 + +| 课 | 中文名 | 剧情 | 核心词 | 句型 | 场景 | +|---|---|---|---|---|---| +| L1 | [待从知识库补充] | [待补充] | — | — | — | +| L2 | [待从知识库补充] | [待补充] | — | — | — | +| L3 | [待从知识库补充] | [待补充] | — | — | — | +| L4 | [待从知识库补充] | [待补充] | — | — | — | +| L5 | [待从知识库补充] | [待补充] | — | — | — | + +### L1-S1-U8《动物走失》 + +| 课 | 中文名 | 剧情 | 核心词 | 句型 | 场景 | +|---|---|---|---|---|---| +| L1 | [待从知识库补充] | [待补充] | — | — | — | +| L2 | [待从知识库补充] | [待补充] | — | — | — | +| L3 | [待从知识库补充] | [待补充] | — | — | — | +| L4 | [待从知识库补充] | [待补充] | — | — | — | +| L5 | [待从知识库补充] | [待补充] | — | — | — | + +### L1-S1-U9《火车旅行》 + +| 课 | 中文名 | 剧情 | 核心词 | 句型 | 场景 | +|---|---|---|---|---|---| +| L1 | [待从知识库补充] | [待补充] | — | — | — | +| L2 | [待从知识库补充] | [待补充] | — | — | — | +| L3 | [待从知识库补充] | [待补充] | — | — | — | +| L4 | [待从知识库补充] | [待补充] | — | — | — | +| L5 | [待从知识库补充] | [待补充] | — | — | — | + +### L1-S1-U10《义卖大会》 + +| 课 | 中文名 | 剧情 | 核心词 | 句型 | 场景 | +|---|---|---|---|---|---| +| L1 | [待从知识库补充] | [待补充] | — | — | — | +| L2 | [待从知识库补充] | [待补充] | — | — | — | +| L3 | [待从知识库补充] | [待补充] | — | — | — | +| L4 | [待从知识库补充] | [待补充] | — | — | — | +| L5 | [待从知识库补充] | [待补充] | — | — | — | + +### L1-S1-U11《开拓者大会》 + +| 课 | 中文名 | 剧情 | 核心词 | 句型 | 场景 | +|---|---|---|---|---|---| +| L1 | [待从知识库补充] | [待补充] | — | — | — | +| L2 | [待从知识库补充] | [待补充] | — | — | — | +| L3 | [待从知识库补充] | [待补充] | — | — | — | +| L4 | [待从知识库补充] | [待补充] | — | — | — | +| L5 | [待从知识库补充] | [待补充] | — | — | — | + +### L1-S1-U12《全城竞技》 + +| 课 | 中文名 | 剧情 | 核心词 | 句型 | 场景 | +|---|---|---|---|---|---| +| L1 | [待从知识库补充] | [待补充] | — | — | — | +| L2 | [待从知识库补充] | [待补充] | — | — | — | +| L3 | [待从知识库补充] | [待补充] | — | — | — | +| L4 | [待从知识库补充] | [待补充] | — | — | — | +| L5 | [待从知识库补充] | [待补充] | — | — | — | diff --git a/output/course_outline_L2.md b/output/course_outline_L2.md new file mode 100644 index 0000000..7f47103 --- /dev/null +++ b/output/course_outline_L2.md @@ -0,0 +1,296 @@ +# L2 课程大纲 + +> 数据来源:vala_bak 数据库(核心词、句型、场景任务) + +> 剧情列需从知识库补充 + + +### L2-S1-U1《精英学院》 + +| 课 | 中文名 | 核心词 | 句型 | 场景/任务 | +|---|---|---|---|---| +| L1 | 火热社团 | join, club, want to, good for you, sounds, fun | What / what | 想想别的办法 | +| L2 | 挑战来袭 | menu, ask, robot, go, see, first | Let's / let's / need | 调查大厨哈顿的信息 | +| L3 | 美食战争 | hear, important, very, coconut, interesting, onion | don't / This / worked | 赢得烹饪比赛 | +| L4 | 以队之名 | opening ceremony, start, where, go, toilet, sorry | good / What / about | 解决美食社的问题 | +| L5 | 思维芯片 | could, club, food, know, principal, happy | very / important / worked | 接受 Pemberton 的奖励和指导 | + +### L2-S1-U2《机能争霸》 + +| 课 | 中文名 | 核心词 | 句型 | 场景/任务 | +|---|---|---|---|---| +| L1 | 地下战局 | robot, say, ask, password, tell, either | tell / What's / think | 采访双方参赛选手 | +| L2 | 怪异天才 | arrived, just, right, robot, hear from, want | have / help / Thank | 请 Alex 组装机器人 | +| L3 | 嚣张强尼 | help, want, join, match, sign up, rules | What / should / think | 进行赛前准备 | +| L4 | 重新出发 | very, serious, rules, sorry, broke, just | This / sorry / shouldn't | 重振旗鼓 | +| L5 | 秘密研究 | right, show, feel, nervous, come on, relax | feel / nervous / about | 进行演讲前的准备 | + +### L2-S1-U3《动物方舟》 + +| 课 | 中文名 | 核心词 | 句型 | 场景/任务 | +|---|---|---|---|---| +| L1 | 空中警报 | animals, find, animal, look around, see, easy | Let's / There's / found | 面对突发事件 | +| L2 | 方舟陨落 | first, arrive at, show around, talk about, remember, send | Let's / think / spaceship | 确认飞船坠落的原因 | +| L3 | 紧急救援 | have got, problem, wrong, broken, door, open | Please / help / stand | 调查飞船内部 | +| L4 | 安抚猛兽 | rain, heavily, storm, run into, have to, stop | have / because / It's | 遭遇大雨 | +| L5 | 再遇海盗 | find, problem, fix, should, workers, need | There / enough | 遭遇 Nock 的伏击 | + +### L2-S1-U4《勇闯天街》 + +| 课 | 中文名 | 核心词 | 句型 | 场景/任务 | +|---|---|---|---|---| +| L1 | 天街夺宝 | shopping, area, stores, many, store, sure | What / kind / mean | 收集比赛的信息 | +| L2 | 各显神通 | riddle, be good at, great, must, win, round | must / want / What's | 阅读比赛题目 | +| L3 | 追星现场 | other, team, buy off, seem, like, should | This / what / want | 鼓励大家继续比赛 | +| L4 | 赛点时刻 | place, competition, third, last, must, get | What's / competition / What | 购买机器人模型 | +| L5 | 隐形大盗 | taste, should, teammate, little, first, try | This / juice / tastes | 讨论 Max 提出的交易 | + +### L2-S1-U5《科技巢穴》 + +| 课 | 中文名 | 核心词 | 句型 | 场景/任务 | +|---|---|---|---|---| +| L1 | 太空贵客 | need to, act, quickly, place, company, should | What / doing / know | 找 Liz 帮忙 | +| L2 | 化身特工 | No way, sorry, wrong, receptionist, name, company | It's / interested / hope | 和清洁机器人聊聊 | +| L3 | 功夫熊猫 | door, open, try, push, working, pull | helpful / tried / straight | 想办法移开书架 | +| L4 | 秘密工厂 | can, go, should, go straight, door, look | straight / should / must | 通过工厂区 | +| L5 | 隐形欲望 | must, discovered, Move, quietly, Hide, quickly | let's / plan / didn't | 阻止 Nock 行动 | + +### L2-S1-U6《怪奇物语》 + +| 课 | 中文名 | 核心词 | 句型 | 场景/任务 | +|---|---|---|---|---| +| L1 | 怪物迷踪 | look, over there, look like, footprint, could, might | They / look / like | 问 Tim 怪物的信息 | +| L2 | 尘封之地 | careful, check, know, old, machine, dangerous | needs / have / idea | 提醒大家注意安全 | +| L3 | 影子之谜 | footprint, clear, very, look, dinosaurs, could | larger / than / most | 行动前的讨论 | +| L4 | 疯狂洞穴 | scan, whole, cave, safe, no one, good | What / should / what | 调查神秘的设备 | +| L5 | 怪物真身 | monster, talk, hear, voice, before, sound | That / sounds / like | 问问 Kevin 的动机 | + +### L2-S1-U7《等待戈多》 + +| 课 | 中文名 | 核心词 | 句型 | 场景/任务 | +|---|---|---|---|---| +| L1 | 世外桃源 | then, wait, think, go back, first, fine | there / There / best | 说服 Smart Door | +| L2 | 诺克小屋 | hear, sorry, late, seem, respond, okay | okay / fought / together | 继续唤醒 Medic | +| L3 | 永恒约定 | maybe, should, ask, why, wait for, master | yourself / There / needs | 请求 August 的帮助 | +| L4 | 再等一等 | hear, memories, add, memory, work, need | need / problem / danger | 赶走 Brian | +| L5 | 魔王降临 | okay, hear, remember, fought, save, animal | okay / Don't / What | 请求 Rebecca 的帮助 | + +### L2-S1-U8《疑犯追踪》 + +| 课 | 中文名 | 核心词 | 句型 | 场景/任务 | +|---|---|---|---|---| +| L1 | 窃听风云 | tell, give, chip, stole, really, catch | glad / could / Which | 核对第二条通讯记录 | +| L2 | 谁是野狼 | from, Uncle, nice, meet, sorry, say | know / where / about | 调查第二户新居民 | +| L3 | 不可耽搁 | wrong, grandma, here, dog, run away, somewhere | here / thought / about | 调查潜在危机 | +| L4 | 狡猾分身 | people, Sky Street, big, many people, look, staff | Have / seen / always | 进入机器人维修店 | +| L5 | 忙碌警花 | robot, take apart, data, good, idea, should | That's / good / idea | 讨论 Rebecca 的状态 | + +### L2-S1-U9《完美偶像》 + +| 课 | 中文名 | 核心词 | 句型 | 场景/任务 | +|---|---|---|---|---| +| L1 | 金牌保镖 | agree, concert, manager, agree to, stop, change | What / need / keep | 陪 Yui 度过休息时间 | +| L2 | 在逃偶像 | take good care of, fans, mad, find, fan, right | need / think / guess | 芒果草莓 | +| L3 | 疯狂草莓 | mean, come, meet, ran, away, run | What / There's / should | 芒果草莓小偷 | +| L4 | 何不一试 | understand, busy, very, since, more, important | don't / it's / hard | 请求 Ada 的理解 | +| L5 | 盛大演出 | need, help, people, get out, safely, bad | need / It's / hard | 调整警卫 | + +### L2-S1-U10《全城通缉》 + +| 课 | 中文名 | 核心词 | 句型 | 场景/任务 | +|---|---|---|---|---| +| L1 | 决斗舞台 | pirates, space, took, no one, leave, everyone | What / does / want | 应对 Nock 的挑战 | +| L2 | 天下无敌 | player, look, really, strong, know, other | That's / sure / about | 设法潜入演出飞船 | +| L3 | 空中营救 | need, save, other, people, safe, try to | You're / There / players | 解救舞者 | +| L4 | 其人之道 | should, beat, need, find, way, machine | strong / will / protect | 查看 Nock 的改造信息 | +| L5 | 强者之梦 | should, next, thing, big, easy, see | become / like / this | 隐藏粘粘炮 | + +### L2-S1-U11《终极行动》 + +| 课 | 中文名 | 核心词 | 句型 | 场景/任务 | +|---|---|---|---|---| +| L1 | 海盗审判 | track, work on, even, control, anyone, anymore | We're / What / about | 说服 Nock | +| L2 | 唯一办法 | trouble, everywhere, happen, crazy, look at, comments | will / destroy / What's | 阻止 Medic 的方法 | +| L3 | 机械陷阱 | tell, before, how many, more, thing, true | many / more / things | 阻止 Douglas | +| L4 | 再见朋友 | sure, still, need, careful, come, close | miss / much / sorry | 特殊的电池 | +| L5 | 灿烂烟花 | destroy, badly, damage, city, calm down, think of | What / about / this | 选出计划执行人 | + +### L2-S1-U12《新的一天》 + +| 课 | 中文名 | 核心词 | 句型 | 场景/任务 | +|---|---|---|---|---| +| L1 | 陨落废墟 | wonder, piece, belong, to, find, part | guess / might / should | 继续搜寻零件 | +| L2 | 回到起点 | fix, help, need, bit, more, time | believe / Let's / face | 询问研究进展 | +| L3 | 晋升之日 | call, early, busy, prepare for, test, afternoon | We're / ready / we'll | 询问分数问题 | +| L4 | 危险之物 | Principal, wait for, no matter what, happen, face, together | Let's / face / team | 询问 Medic 数据情况 | +| L5 | 重返地球 | happen, find, hear, luggage, area, overweight | We'll / have / need | 错误指南 | + +### L2-S2-U13《特别假期》 + +| 课 | 中文名 | 核心词 | 句型 | 场景/任务 | +|---|---|---|---|---| +| L1 | 真假史密斯 | worry, maybe, already, way, wait, long | we've / been / long | 质疑 Smith 身份 | +| L2 | 沙漠迷路 | different, everything, looks, weather, Earth, worse | There / been / here | 重回沙漠镇 | +| L3 | 失控的机器人 | tidy, few, month, adventure, have to, tidy up | You're / We've / been | 重新整理房间 | +| L4 | 厨房遇险 | life, get used to, weather, dry, need, worry | good / want / help | 申请准备晚餐 | +| L5 | 无影盗贼 | wrong, look, frightened, be about to, enter, house | came / asked / said | 调查家中入侵 | + +### L2-S2-U14《地下都市》 + +| 课 | 中文名 | 核心词 | 句型 | 场景/任务 | +|---|---|---|---|---| +| L1 | 秘密计划 | message, just, about, something, important, tell | What / were / doing | 联系上真正的 Otis | +| L2 | 冒险同行 | research, soil, fruit, helped, a lot, should | should / about / it's | 鼓励 Ben 建立信心 | +| L3 | 公交历险 | finally, found, sign, come on, need, find | need / It's / going | 等待公交车 | +| L4 | 绿色守望者 | thank, help, melons, could, pick up, melon | much / need / best | 帮助 Kate 捡起水果 | +| L5 | 电梯惊魂 | doing, need, see, right away, meeting, hear | Press / button / Which | 调查电梯使用方法 | + +### L2-S2-U15《甜味禁区》 + +| 课 | 中文名 | 核心词 | 句型 | 场景/任务 | +|---|---|---|---|---| +| L1 | 酒窖被困 | already, run away, see, way, mistake, lying | Let's / look / around | 隐藏的说明书 | +| L2 | 走廊陷阱 | hall, know, meeting hall, getting off, lift, turn right | know / where / sure | 逃离 B725 | +| L3 | 开发计划 | vote, turn out, wait, seriously, mayor, way | take / look / think | 迎接 Space City TECH 代表 | +| L4 | 协议之争 | wait, please, go on, obvious, too, important | What's / going / here | 询问校长意见 | +| L5 | 复原绝密配方 | dizzy, feel, forget about, guests, look at, new | Please / give / I'll | 错误指令 | + +### L2-S2-U16《野蛮生长》 + +| 课 | 中文名 | 核心词 | 句型 | 场景/任务 | +|---|---|---|---|---| +| L1 | 假领真贼 | look at, huge, machine, water source, new, water | Look / near / Where | 水源净化 | +| L2 | 水果风波 | celebration, wonderful, of course, order, check, fruit | what / time / does | 给水果称重 | +| L3 | 庆典飞贼 | need, check, something, sorts, all sorts of, fruit | stolen / What / doing | 遗失的水果 | +| L4 | 演技之王 | entrance, cool, strong, protect, see, room | right / over / there | 送别 Wilde | +| L5 | 绿洲之乱 | by the way, soon, get, about, minutes, classmate | must / caused / this | 迎接 Otis | + +### L2-S2-U17《最后宝地》 + +| 课 | 中文名 | 核心词 | 句型 | 场景/任务 | +|---|---|---|---|---| +| L1 | 禁止入内 | hardly, remember, face, same, feel, mean | explain / What / made | 阻止警察逮捕 Skylar | +| L2 | 修复计划 | know, well, should, market, think, can | think / Let's / make | 问问 Smith 关于 Medic 的进度 | +| L3 | 智斗奸商 | need, hurry, fix, costs, pay for, all | need / hurry / sell | 采买零件 | +| L4 | 新的身体 | draw, drew, new, human-like, body, why | want / What / look | 设计新 Medic | +| L5 | 地球传说 | know, person, painting, famous, ago, from | What's / your / mind | 阅读书籍 | + +### L2-S2-U18《生日惊喜》 + +| 课 | 中文名 | 核心词 | 句型 | 场景/任务 | +|---|---|---|---|---| +| L1 | 超能电池 | what's wrong with, exactly, want, fix, as soon as possible, understand | want / soon / possible | 安慰 Daisy | +| L2 | 生日礼物 | distract, robot, could, go, post office, bring | need / find / before | 购买Daisy的生日礼物 | +| L3 | 寄托之书 | look, much, happier, really, look forward to, gift | look / title / word | 重新查询杂志的位置 | +| L4 | 心动放映室 | need, more, time, said, ready, friends | must / hard / every | 紧急断电 | +| L5 | 野狼出动 | brilliant, also, day, all, very, happy | want / What / should | 帮助 Smith 解决芯片危机 | + +### L2-S2-U19《失踪之谜》 + +| 课 | 中文名 | 核心词 | 句型 | 场景/任务 | +|---|---|---|---|---| +| L1 | 重启守护者 | will, try, try one's best, why, want to, daughter | because / prefer / What | 问出 Daisy 的下落 | +| L2 | 消失的黛西 | clue, warehouse, check, middle area, take, left side | there / while / missing | 寻找 Daisy 的下落 | +| L3 | 绿洲寻踪 | immediately, should, read, letter, leave, anything | Daisy / leave / Where | 调查监控 | +| L4 | 速猴大本营 | who, boss, also, old friend, great, help | where / your / left | 讨论 Daisy 去向 | +| L5 | 司机指路 | guess, carelessly, Wrong, affect, thinking, worried | just / front / mind | 询问 Wendy | + +### L2-S2-U20《怒海波澜》 + +| 课 | 中文名 | 核心词 | 句型 | 场景/任务 | +|---|---|---|---|---| +| L1 | 黑市奇遇 | know, very, cold, shop, shop for, winter clothes | still / don't / know | 采购防寒物资 | +| L2 | 码头遇阻 | expect, powerful, harbour, even, own, just | that / won't / help | 进入码头寻找 Daisy | +| L3 | 炸弹危机 | how, find, want to, turn upside down, every, place | started / believe / after | 遇到 Rebecca | +| L4 | 兵分两路 | only, do, for one's own good, promise, let, go to | promised / promise / decide | 进入驾驶室 | +| L5 | 破冰船起航 | ice, see, sea, ship, cross, ice block | we'll / We'll / successfully | 解决冰川危机 | + +### L2-S2-U21《永冻之地》 + +| 课 | 中文名 | 核心词 | 句型 | 场景/任务 | +|---|---|---|---|---| +| L1 | 风雪危机 | still, something, more important, snow, forget about, first time | What / should / first | 通过雪路 | +| L2 | 病中援手 | wake up, before, how long, have been, sure, possible | long / have / been | 讨论继续赶往净水计划施工地的可行性 | +| L3 | 智探净水厂 | everywhere, large, machine, expect, powerful, seem | does / seem / about | 进入净水工厂 | +| L4 | 金蝉脱壳 | soil, really, from, check, more carefully, look | really / from / because | 调查奇怪的土壤 | +| L5 | 冰雪兄弟 | boat, someone, fish, lake, mistaken, because | difficult / stronger / than | 请求 Frost 进行帮助 | + +### L2-S2-U22《极地探秘》 + +| 课 | 中文名 | 核心词 | 句型 | 场景/任务 | +|---|---|---|---|---| +| L1 | 隐秘考察站 | really, appreciate, help, without, definitely, find | this / full / What | 进入冰洞遇阻 | +| L2 | 勇闯冰窟 | escape, pay attention, what if, leave, dark, need | What / doesn't / find | 探索冰窟 | +| L3 | 冰雪勇士 | how far, upgrade, see, find out, how much, done | then / will / have | 调查机器人 | +| L4 | 极地反击 | put, many, bomb, afraid, someone, find | would / never / think | 继续探查 | +| L5 | 铁证如山 | chat, time, about, get the chance, alright, should | I'll / provide / hope | 阻止 Maeve 的计划 | + +### L2-S2-U23《冰川对决》 + +| 课 | 中文名 | 核心词 | 句型 | 场景/任务 | +|---|---|---|---|---| +| L1 | 大胆计划 | afraid, join, join in, look into, why, can't | need / make / stop | 设法阻止净水计划 | +| L2 | 重返冰窟 | already, before, stop, people, video, sound | must / will / came | 潜入思维晶石矿场 | +| L3 | 冰山取证 | need, move forward, plan, as soon as possible, proof, iceberg | What / does / look | 返回破冰船 | +| L4 | 监察会场 | full, make sure, video, quickly, understand, full matter | What / colour / make | 阻止协议签署 | +| L5 | 为地球发声 | moment, wait, take, closer, look, take bribes | realize / hide / truth | 等待 Wilde 变装 | + +### L2-S2-U24《假日终章》 + +| 课 | 中文名 | 核心词 | 句型 | 场景/任务 | +|---|---|---|---|---| +| L1 | 回归绿洲 | great, bad, thing, anymore, exciting, result | shall / know / What | 返回绿洲镇 | +| L2 | 重见光明 | away, away from, soon, visit, often, right | most / important / thing | 让护士来帮忙 | +| L3 | 净水网络 | sent, message, suddenly, problem, happen, say | What's / most / important | 领取礼物 | +| L4 | 种子争霸 | excellent, perfect, be perfect for, really, hope, become | want / After / saying | 阅读水果特点表 | +| L5 | 重返瓦拉 | feel, pack, thing, leave home, a little, sad | feel / when / have | 聊聊关于未来的理想 | + +### L2-S3-U25《载誉而归》 + +| 课 | 中文名 | 核心词 | 句型 | 场景/任务 | +|---|---|---|---|---| +| L1 | 新学期 | found, moment, show, best, believe, forget about | don't / believe / First | 跟上 Douglas | +| L2 | 冒险新生 | icebreaker, Arctic, meet, ice lake, ice cave, snowstorm | What / will / happen | 询问大家的想法 | +| L3 | 初登舞台 | how, feeling, move, feel like, body, frozen | very / good / Nothing | 限量版专辑 | +| L4 | 意外组合 | really, hard, believe, three of us, only one, right | have / there / chance | 轮盘装置 | +| L5 | 道别与启程 | bit, a bit, worried, of course, about, come on | feel / sure / can't | 观察 Max | + +### L2-S3-U26《神秘邀约》 + +| 课 | 中文名 | 核心词 | 句型 | 场景/任务 | +|---|---|---|---|---| +| L1 | 空中乐园 | have, such, lovely, smile, thank, towel | What / Where / like | 跟随 Max 参观飞船 | +| L2 | 全能学姐 | mean, tour, tough, understand, why, really | What / does / look | 进一步了解 Jump Ring | +| L3 | 再遇“老友” | journey, very, interesting, make, think, guess | What / makes / guess | 讨论飞船的反击 | +| L4 | 海盗风华 | pirate, attack, really, unlucky, used to think, bring | better / than / Tell | 遗落的笔记 | +| L5 | 梦游先生 | noisy, guy, be quiet, just for a second, know, what to say | don't / know / what | 飞船异常状况 | + +### L2-S3-U27《港都迷途》 + +| 课 | 中文名 | 核心词 | 句型 | 场景/任务 | +|---|---|---|---|---| +| L1 | 一步之遥 | looks, sad, think, all, fault, travelled | can't / believe / that | 通过海关 | +| L2 | 金钱粪土 | mean, place, made from, junk, maybe, find | This / place / that | 抵达万得港 | +| L3 | 坎贝尔少爷 | castle, just like, yes, fancy, rich, at all | wish / should / because | 观察建筑 | +| L4 | 狮心家族 | much, missing, free, cakes, so much, not sure | help / find / What | 换取狮心女王的帮助 | +| L5 | 万得万失港 | really, think, have, to, sell, all | will / know / would | 进入彩虹集市 | + +### L2-S3-U28《穷途末路》 + +| 课 | 中文名 | 核心词 | 句型 | 场景/任务 | +|---|---|---|---|---| +| L1 | 街头朋克 | tent, sleep, never, street, homeless, want to | well / According / should | 负责监督歌词 | +| L2 | 下一个! | so, idea, think, time, ask for help, don't think so | We've / spent / time | 补办护照 | +| L3 | 打工传奇 | really, hungry, dish, dreaming of, good, any | When / That's / have | 在万得港活下去 | +| L4 | 一饭封神 | too much, what's going on, think, know, could, repeat | What's / going / What | 结束一天的工作 | +| L5 | 十万火急 | Luckily, saved, awesome, need, too, any | there / other / sure | 接受治疗 | + +### L2-S3-U29《海盗基地》 + +| 课 | 中文名 | 核心词 | 句型 | 场景/任务 | +|---|---|---|---|---| +| L1 | 大象女王 | shower, actually, wants, exactly, after all, spent | let's / Let's / Come | 逗大象开心 | +| L2 | 互通心声 | all, know, hobby, singing, washing hands, weird | don't / care / talk | 激起大象的兴趣 | +| L3 | 信号疑云 | see, anything, think, talking about, bottom, thing | happy / that / What | 请求女王帮忙 | +| L4 | 古老信条 | do something, can't, trapped, too, feels, heavy | must / Don't / seems | 被困海盗巢穴 | +| L5 | 海盗女王 | really, plan, only, power, escape, be quiet | really / Could / tell | 连接网络 | \ No newline at end of file diff --git a/output/用户学情数据导出_数据表与业务逻辑.md b/output/用户学情数据导出_数据表与业务逻辑.md new file mode 100644 index 0000000..1549313 --- /dev/null +++ b/output/用户学情数据导出_数据表与业务逻辑.md @@ -0,0 +1,287 @@ +# 用户学情数据导出 — 数据表与业务逻辑 + +> 整理日期:2026-06-03 | 基于 `export-user-data` 技能 v1.5 + +--- + +## 一、数据源总览 + +该技能跨 **4 个数据源**(ES + PostgreSQL + 2 个 MySQL 库),共涉及 **17+ 张表/索引**: + +| 序号 | 数据源 | 库/索引 | 表名 | 用途 | +|------|--------|---------|------|------| +| 1 | ES Online | `user-audio` | — | 用户全部音频数据 | +| 2 | ES Online | `llm_asr_log` | — | ASR 识别结果回填(按 makee_id 关联) | +| 3 | PG Online | `vala` | `user_component_play_record_0` ~ `user_component_play_record_7` | 互动组件学习记录(8 张分表) | +| 4 | PG Online | `vala` | `user_unit_review_question_result` | 课程巩固记录 | +| 5 | PG Online | `vala` | `user_unit_challenge_question_result` | 单元挑战记录 | +| 6 | PG Online | `vala` | `user_unit_summary_km_result` | 单元总结记录 | +| 7 | MySQL Test | `vala_test` | `vala_game_info` | story_id → unit_id 映射表 | +| 8 | MySQL Test | `vala_test` | `vala_game_chapter` | chapter_id → lesson_id 映射表 | +| 9 | MySQL Test | `vala_test` | `middle_interaction_component` | 中互动组件配置(mid_* 类型) | +| 10 | MySQL Test | `vala_test` | `core_interaction_component` | 核心互动组件配置(core_* 类型) | +| 11 | MySQL Online | `vala_user` | `vala_app_character` | 账户 ID → 角色 ID 映射 | + +--- + +## 二、各数据源详细说明 + +### 2.1 ES `user-audio` 索引 — 全部音频数据 + +**查询条件:** `userId == 目标角色ID`,最多返回 10000 条,按时间倒序排列。 + +**输出字段:** + +| 字段 | 说明 | +|------|------| +| `userId` | 角色 ID | +| `userMsg` | 用户消息(ASR 识别结果或原始 JSON) | +| `userName` | 用户名 | +| `soeData` | 语音评测数据 | +| `audioUrl` | 音频文件地址 | +| `asrStatus` | ASR 识别状态 | +| `componentId` | 关联的组件 ID | +| `componentType` | 组件类型 | +| `dataVersion` | 数据版本号 | +| `timeStr` | 时间字符串 | +| `source` | 数据来源(仅当命中 makee_id 回填时有值) | + +**特殊逻辑(v1.2 — makee_id 回填):** + +当 `userMsg` 字段内容包含 `makee_id` 时: +1. 从 `userMsg` 中提取 `makee_id` 的值(支持 JSON 解析 + 正则兜底) +2. 用 `makee_id` 去 ES `llm_asr_log` 索引查询对应记录 +3. 将查询到的 `result_text` 回填到 `userMsg` 字段 +4. 将 `source` 字段输出到 `source` 列 + +如果 `userMsg` 不包含 `makee_id`,保持原始逻辑不变。 + +--- + +### 2.2 PG `user_component_play_record_0~7` — 互动组件学习记录 + +**表结构:** 8 张分表,需 `UNION ALL` 合并查询。 + +**查询条件:** `user_id == 目标角色ID`,按 `updated_at` 倒序。 + +**输出字段:** + +| 字段 | 来源 | 说明 | +|------|------|------| +| `user_id` | PG 原始字段 | 角色 ID | +| `component_unique_code` | PG 原始字段 | 组件唯一标识 | +| `session_id` | PG 原始字段 | 会话 ID | +| `c_type` | PG 原始字段 | 组件类型编码(如 `mid_vocab_item`) | +| `c_id` | PG 原始字段 | 组件 ID | +| `互动组件名称` | MySQL 映射 | 根据 c_type 查组件配置表映射 | +| `组件标题` | MySQL 映射 | 组件配置中的 `title` | +| `组件配置摘要` | MySQL 映射 | mid 取 `question`,core 取 `taskInfo` | +| `知识点` | MySQL 映射 | 组件配置中的 `kp_relation_info` | +| `play_result` | PG 原始字段 | 答题结果(Perfect/Good/Failed/Pass/Oops) | +| `user_behavior_info` | PG 原始字段 | 用户行为信息 JSON | +| `updated_at` | PG 原始字段 | 更新时间 | + +#### 组件名称映射规则(v1.5) + +**中互动组件(c_type 以 `mid_` 开头)→ 查 `middle_interaction_component` 表:** + +| c_type | 互动组件名称 | +|--------|-------------| +| `mid_vocab_item` | 物品互动 | +| `mid_vocab_image` | 图片互动 | +| `mid_vocab_fillBlank` | 填词互动 | +| `mid_vocab_instruction` | 指令互动 | +| `mid_sentence_dialogue` + `mode=express` | 对话互动-表达 | +| `mid_sentence_dialogue` + `mode=read` | 对话互动-朗读 | +| `mid_sentence_voice` | 语音互动 | +| `mid_sentence_material` | 材料互动 | +| `mid_sentence_makeSentence` | 造句互动 | +| `mid_grammar_cloze` | 挖空互动 | +| `mid_grammar_sentence` | 组句互动 | +| `mid_pron_pron` | 发音互动 | + +**核心互动组件(c_type 以 `core_` 开头)→ 查 `core_interaction_component` 表:** + +| c_type | 互动组件名称 | +|--------|-------------| +| `core_speaking_reply` | 口语快答 | +| `core_speaking_inquiry` | 口语妙问 | +| `core_speaking_explore` | 口语探讨 | +| `core_speaking_monologue` | 口语独白 | +| `core_reading_order` | 合作阅读 | +| `core_listening_order` | 合作听力 | +| `core_writing_imgMakeSentence` | 看图组句 | +| `core_writing_imgWrite` | 看图撰写 | +| `core_writing_questionMakeSentence` | 问题组句 | +| `core_writing_questionWrite` | 问题撰写 | + +**组件配置摘要取值规则:** +- `mid_*`:取 `component_config` 中的 `question` 字段 +- `core_*`:取 `component_config` 中的 `taskInfo` 字段 + +**知识点取值:** 直接取 `kp_relation_info` 字段(JSON 数组格式,每个元素含 `kpId`、`kpType`、`kpTitle`、`kpSkill`、`kpSkillName`) + +--- + +### 2.3 PG `user_unit_review_question_result` — 课程巩固记录 + +**查询条件:** `user_id == 目标角色ID`,按 `updated_at` 倒序。 + +**输出字段:** + +| 字段 | 来源 | 说明 | +|------|------|------| +| `user_id` | PG 原始字段 | 角色 ID | +| `unit_id` | story_id 映射 | 通过 `vala_game_info` 表将 `story_id` 映射为 `unit_id` | +| `lesson_id` | chapter_id 映射 | 通过 `vala_game_chapter` 表将 `chapter_id` 映射为 `lesson_id` | +| `question_list` | PG 原始字段 | 题目列表 JSON | +| `正确率` | 计算字段 | `isRight==true 的数量 / 总题数 × 100%` | +| `updated_at` | PG 原始字段 | 更新时间 | + +**正确率计算逻辑:** 解析 `question_list` JSON 数组,统计其中 `isRight == true` 的题目数,除以总题数,结果以百分比展示。 + +--- + +### 2.4 PG `user_unit_challenge_question_result` — 单元挑战记录 + +**查询条件:** `user_id == 目标角色ID`,按 `updated_at` 倒序。 + +**输出字段:** + +| 字段 | 来源 | 说明 | +|------|------|------| +| `user_id` | PG 原始字段 | 角色 ID | +| `unit_id` | story_id 映射 | 通过 `vala_game_info` 表映射 | +| `category` | PG 原始字段 | 挑战类别 | +| `score_text` | PG 原始字段 | 得分文本 | +| `question_list` | PG 原始字段 | 题目列表 JSON | +| `updated_at` | PG 原始字段 | 更新时间 | + +--- + +### 2.5 PG `user_unit_summary_km_result` — 单元总结记录 + +**查询条件:** `user_id == 目标角色ID`,按 `updated_at` 倒序。 + +**输出字段:** + +| 字段 | 来源 | 说明 | +|------|------|------| +| `id` | PG 原始字段 | 记录 ID | +| `user_id` | PG 原始字段 | 角色 ID | +| `unit_id` | story_id 映射 | 通过 `vala_game_info` 表映射 | +| `updated_at` | PG 原始字段 | 更新时间 | +| `km_id` | PG 原始字段 | 知识点 ID | +| `km_type` | PG 原始字段 | 知识点类型 | +| `play_time_seconds` | 计算字段 | 播放时长(原始毫秒值 ÷ 1000) | + +--- + +### 2.6 MySQL 映射表 + +#### `vala_game_info` — story_id → unit_id 映射 + +**查询逻辑:** `SELECT id, story_id FROM vala_game_info ORDER BY season_package_id ASC, index ASC` + +**映射规则:** 查询结果按排序后的索引位置(从 1 开始)作为 `unit_id`。 + +#### `vala_game_chapter` — chapter_id → lesson_id 映射 + +**查询逻辑:** `SELECT id, chapter_id, index FROM vala_game_chapter` + +**映射规则:** `chapter.index` 字段值即为 `lesson_id`。 + +#### `vala_app_character` — 账户 ID → 角色 ID 映射 + +**查询逻辑:** `SELECT id FROM vala_app_character WHERE account_id = <账户ID>` + +**使用场景:** 当使用 `--account-ids` 模式时,先查此表获取该账户下所有角色 ID,再逐个导出。 + +--- + +## 三、Excel 输出结构(8 个 Sheet) + +| Sheet 序号 | 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 `user_unit_summary_km_result` | +| 6 | 统计-互动组件通过情况 | 基于 Sheet 2 聚合,按组件名称统计 Perfect/Good/Failed/Pass/Oops 数量及比例 | +| 7 | 统计-知识点通过情况 | 基于 Sheet 2 聚合,按知识点(kpId + kpType + kpTitle)统计通过情况 | +| 8 | 统计-单元总结时长 | 基于 Sheet 5 聚合,按 unit_id 累加 play_time_seconds,并转换为分钟(取整) | + +--- + +## 四、执行方式 + +### 脚本位置 + +- **Wrapper 脚本:** `scripts/export_user_data.sh` +- **核心 Python 脚本:** `git_repos/llm_offline_production/config_user_data_extract_and_analyze/export_user_id_data.py` + +### 命令参数 + +```bash +# 单角色导出 +./scripts/export_user_data.sh --user-id 33123 + +# 多角色批量导出 +./scripts/export_user_data.sh --user-ids 33123,33124,33125 + +# 按账户批量导出(自动查该账户下所有角色) +./scripts/export_user_data.sh --account-ids 2148,2149 + +# 指定输出目录 +./scripts/export_user_data.sh --user-id 33123 --output-dir /tmp/my_output/ +``` + +三种模式(`--user-id` / `--user-ids` / `--account-ids`)互斥,只能传一种。 + +### 输出文件命名 + +- 角色模式:`角色id_{ID}_导出时间_{YYYYMMDD}.xlsx` +- 账户模式:`账户id_{账户ID}_角色id_{角色ID}_导出时间_{YYYYMMDD}.xlsx` + +### Python 依赖 + +`python3`, `pymysql`, `psycopg2`, `pandas`, `openpyxl`, `requests` + +--- + +## 五、所需环境变量 + +| 环境变量 | 对应数据源 | 说明 | +|---------|-----------|------| +| `ES_HOST` | ES Online | Elasticsearch 地址 | +| `ES_PORT` | ES Online | ES 端口(9200) | +| `ES_SCHEME` | ES Online | 协议(https) | +| `ES_USER` | ES Online | ES 用户名 | +| `ES_PASSWORD` | ES Online | ES 密码 | +| `PG_DB_HOST` | PG Online | PostgreSQL 地址 | +| `PG_DB_PORT` | PG Online | PG 端口(28591) | +| `PG_DB_USER` | PG Online | PG 用户名 | +| `PG_DB_PASSWORD` | PG Online | PG 密码 | +| `PG_DB_DATABASE` | PG Online | PG 数据库名(vala) | +| `MYSQL_HOST` | MySQL Test | MySQL 测试库地址 | +| `MYSQL_PORT` | MySQL Test | MySQL 测试库端口(25413) | +| `MYSQL_USERNAME` | MySQL Test | MySQL 测试库用户名 | +| `MYSQL_PASSWORD` | MySQL Test | MySQL 测试库密码 | +| `MYSQL_HOST_online` | MySQL Online | MySQL 线上库地址 | +| `MYSQL_PORT_online` | MySQL Online | MySQL 线上库端口(27751) | +| `MYSQL_USERNAME_online` | MySQL Online | MySQL 线上库用户名 | +| `MYSQL_PASSWORD_online` | MySQL Online | MySQL 线上库密码 | + +> 凭证具体值见 `secrets.md`,wrapper 脚本 `export_user_data.sh` 已内置默认值。 + +--- + +## 六、注意事项 + +1. **所有数据库连接均为只读账号**,不会产生写操作 +2. ES 查询使用 HTTPS + 自签证书,脚本已处理 `verify=False` +3. PG 返回的 `updated_at` 带时区信息,脚本会自动去除时区避免 Excel 写入报错 +4. `play_result` 支持两种格式:纯字符串(`"Perfect"`)或 JSON(`{"result": "Perfect"}`) +5. 导出大批量角色时建议分批执行,避免单次耗时过长 +6. 脚本默认输出到 `output/` 目录 diff --git a/output/角色id_35936_导出时间_20260603.xlsx b/output/角色id_35936_导出时间_20260603.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..14b03acd9ef7650a02b3e654a2abf20e680618cb GIT binary patch literal 45793 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

Qj%m`{PlJB`ob`lR)gskiWWp&0F!yyh#!C>d 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

v?VXy6Z@|E{>C%`Wkw6iN}4`{50Z2OG;|3{ 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 literal 0 HcmV?d00001 diff --git a/output/角色id_36525_导出时间_20260603.xlsx b/output/角色id_36525_导出时间_20260603.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..e17464078af64ba2146fa558b4303f618220f31e GIT binary patch literal 40083 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 literal 0 HcmV?d00001 diff --git a/output/角色id_36715_导出时间_20260603.xlsx b/output/角色id_36715_导出时间_20260603.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..123733a120aec96421622ff96a0b6b5707f14ed3 GIT binary patch literal 34985 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 meaning + sentences = {} # pattern -> title + + try: + data = json.loads(tp_str) + except: + return [], [] + + for item in data: + # Extract from textParse + for tp in item.get('textParse', []): + for sl in tp.get('slices', []): + if sl.get('type') == 1 and 'meaning' in sl: + word = sl.get('slice', '') + meaning = sl.get('meaning', '') + if word and word not in words: + words[word] = meaning + elif sl.get('type') == 2 and 'meaning' in sl: + # sentence pattern + pattern = sl.get('slice', '') + if pattern and pattern not in sentences: + sentences[pattern] = sl.get('meaning', '') + + # Also check keySlices + for ks in tp.get('keySlices', []): + sl = ks.get('slice', '') + meaning = ks.get('meaning', '') + if sl and sl not in words: + words[sl] = meaning + + return list(words.keys()), list(sentences.keys()) + +# Process each chapter +for game_id, unit_name, game_code, chapter_id, lesson_name, lesson_idx in chapters: + tp = text_parses.get(chapter_id, '') + words, sentences = extract_from_text_parse(tp) + + # Deduplicate and limit + words_str = ', '.join(words[:8]) if words else '' + sentences_str = ', '.join(sentences[:4]) if sentences else '' + + print(f"GAME={game_id}|UNIT={unit_name}|CODE={game_code}|CH={chapter_id}|L{lesson_idx}|NAME={lesson_name}|WORDS={words_str}|SENT={sentences_str}") + +cursor.close() +conn.close() diff --git a/tmp_daily_summary.md b/tmp_daily_summary.md new file mode 100644 index 0000000..f4eca8c --- /dev/null +++ b/tmp_daily_summary.md @@ -0,0 +1,5 @@ +=== 每日总结 20260604 === +## 昨日关键进展 +- 能关注到leads后端的承接、转化并进行优化动作 +### 简历评估优化点 [王虹茗指示] +- Leads渠道商务核心验证:CPA/CPS渠道拓展、TMK/短信/进校/社群分销、leads转化链路优化