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 0000000..14b03ac Binary files /dev/null and b/output/角色id_35936_导出时间_20260603.xlsx differ diff --git a/output/角色id_36525_导出时间_20260603.xlsx b/output/角色id_36525_导出时间_20260603.xlsx new file mode 100644 index 0000000..e174640 Binary files /dev/null and b/output/角色id_36525_导出时间_20260603.xlsx differ diff --git a/output/角色id_36715_导出时间_20260603.xlsx b/output/角色id_36715_导出时间_20260603.xlsx new file mode 100644 index 0000000..123733a Binary files /dev/null and b/output/角色id_36715_导出时间_20260603.xlsx differ diff --git a/scripts/extract_course_outline.py b/scripts/extract_course_outline.py new file mode 100644 index 0000000..7f16b3c --- /dev/null +++ b/scripts/extract_course_outline.py @@ -0,0 +1,95 @@ +#!/usr/bin/env python3 +"""Extract course outline (core words, sentence patterns) from vala_bak database.""" +import json +import pymysql +import re + +conn = pymysql.connect( + host='bj-cdb-8frbdwju.sql.tencentcdb.com', + port=25413, + user='read_only', + password='fdsfiidier^$*hjfdijjd232', + database='vala_bak', + charset='utf8mb4' +) + +# L2-S1 chapters: game_ids 12,10,16,18,19,20,21,22,23,24,25,26 +# L2-S2 chapters: game_ids 27-38 +# L2-S3 chapters: game_ids 39-43 + +all_game_ids = [12,10,16,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43] + +cursor = conn.cursor() + +# Get chapters +placeholders = ','.join(['%s'] * len(all_game_ids)) +cursor.execute(f""" +SELECT gi.id as game_id, gi.cn_name as unit_name, gi.game_code, + gc.id as chapter_id, gc.cn_name as lesson_name, gc.index as lesson_idx +FROM vala_game_info gi +JOIN vala_game_chapter gc ON gc.game_id = gi.id +WHERE gi.id IN ({placeholders}) AND gc.lesson_type = 1 +ORDER BY gi.id, gc.index +""", all_game_ids) + +chapters = cursor.fetchall() + +# Get text_parse for all chapters +chapter_ids = [c[3] for c in chapters] +if chapter_ids: + placeholders2 = ','.join(['%s'] * len(chapter_ids)) + cursor.execute(f""" + SELECT chapter_id, text_parse FROM unit_chapter_text_parse WHERE chapter_id IN ({placeholders2}) + """, chapter_ids) + text_parses = {row[0]: row[1] for row in cursor.fetchall()} + +def extract_from_text_parse(tp_str): + """Extract core words and sentence patterns from text_parse JSON.""" + if not tp_str: + return [], [] + + words = {} # word -> 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转化链路优化