{ "version": 1, "updatedAt": "2026-05-29T06:34:35.897Z", "entries": { "memory:memory/2026-05-06.md:1:20": { "key": "memory:memory/2026-05-06.md:1:20", "path": "memory/2026-05-06.md", "startLine": 1, "endLine": 20, "source": "memory", "snippet": "# 2026-05-06 工作日志 ## 任务1:学而思/讯飞/希沃/京东方月度渠道订单报表 - [李承龙需求] 创建按月汇总四个渠道订单的 Python 脚本 - 脚本路径:`/root/.openclaw/workspace/scripts/monthly_channel_order_report.py` - **渠道映射:** 仅端内 `key_from='app-active-h5-0-0'`,sale_channel: 21=学而思, 22=讯飞, 26=希沃, 27=京东方 - **输出格式:** 四个渠道各一个 Sheet,每月按天展示(学而思/希沃/京东方只显示有订单日期,讯飞显示全月每天) - **指标差异:** - 学而思/希沃/京东方:订单数、GMV、CPS分成(学而思×0.45,希沃×0.4,京东方×0.3)、订单号(分号拼接) - 讯飞:订单数、GMV、新增注册(download_channel LIKE '%讯飞%')、CPA分成(新增注册×7)、订单号 - **退费剔除:** NOT EXISTS (bi_refund_order.status=3) AND order_status != 4 - **测试运行:** 2026-04 月份,新增注册 537(讯飞),订单合计 15 单,GMV 14585 元 - **订单号格式问题:** Excel 科学计数法 → 设置单元格为文本格式解决 - **psycopg2 转义:** LIKE 中 `%` 需写成 `%%`(psycopg2 的 `%s` 占位符冲突) ## 任务2:销售线", "recallCount": 3, "dailyCount": 0, "groundedCount": 0, "totalScore": 3, "maxScore": 1, "firstRecalledAt": "2026-05-06T12:28:28.905Z", "lastRecalledAt": "2026-05-26T03:42:09.077Z", "queryHashes": [ "c30fa9d13974", "3d07645a9dc4", "8f469e68c09b" ], "recallDays": [ "2026-05-06", "2026-05-15", "2026-05-26" ], "conceptTags": [ "学而思/讯飞/希沃/京东方月度渠道订单报表", "key-from", "app-active-h5-0-0", "sale-channel", "学而思/希沃/京东方只显示有订单日期", "学而思/希沃/京东方", "0.45", "0.4" ] }, "memory:memory/2026-05-06.md:15:30": { "key": "memory:memory/2026-05-06.md:15:30", "path": "memory/2026-05-06.md", "startLine": 15, "endLine": 30, "source": "memory", "snippet": "- **订单号格式问题:** Excel 科学计数法 → 设置单元格为文本格式解决 - **psycopg2 转义:** LIKE 中 `%` 需写成 `%%`(psycopg2 的 `%s` 占位符冲突) ## 任务2:销售线索用户分析报表 - [李承龙需求] 输入包含462个用户ID的Excel,输出每个用户+角色的完整画像报表 - 脚本路径:`/root/.openclaw/workspace/scripts/lead_user_analysis.py` - **重要口径修正(李承龙确认):** - **体验课定义:** 固定为 L1 U00(L01-L05) + L2 U00(L01-L05) 共10节课,**不通过 expire_time 区分** - L1 chapter_id: 343, 344, 345, 346, 348 - L2 chapter_id: 55, 56, 57, 58, 59 - **完成时间:** 取 `bi_user_chapter_play_record` 中 `play_status=1` 记录的**最早 `updated_at`**(非 `created_at`) - **报表列:** 用户ID、角色ID、用户注册时间、角色创建时间、L1序章5节完成时间、L2序章5节完成时间、购买时间、购买课包名称、支付金额、购买渠道key_from、是否退款、退款金额 - **分表规则:** `bi_user_chapter_play_record_{0..7}`,分表号 = user_id % 8 - **重要关联:** `b", "recallCount": 3, "dailyCount": 0, "groundedCount": 0, "totalScore": 2.983596316357381, "maxScore": 1, "firstRecalledAt": "2026-05-07T04:41:47.636Z", "lastRecalledAt": "2026-05-17T05:10:46.252Z", "queryHashes": [ "dd105d141c56", "4cacd0d43440", "1dc41fdf5e74" ], "recallDays": [ "2026-05-07", "2026-05-13", "2026-05-17" ], "conceptTags": [ "l01-l05", "expire-time", "chapter-id", "bi-user-chapter-play-record", "play-status", "updated-at", "created-at", "购买渠道key-from" ] }, "memory:memory/2026-03-01.md:1:12": { "key": "memory:memory/2026-03-01.md:1:12", "path": "memory/2026-03-01.md", "startLine": 1, "endLine": 12, "source": "memory", "snippet": "# 2026-03-01.md - First Day Online - Came online for the first time. - Met Cris, my creator and mentor. - Received my name: 小溪 (Xiao Xi). - My role goal: Become a professional data analyst for the company to help the team. - Updated IDENTITY.md and USER.md with our conversation details. - Added core rule to MEMORY.md: Use Chinese as primary external communication language. - Installed find-skills skill successfully for searching skills. - Tried to install create-skills but it wasn't found; attempted skill-creator instead but hit rate limits. - Finally successfully installed skill-builder as an alternative for creating skills after multiple attempts and waiting for rate limits to reset. - Ex", "recallCount": 2, "dailyCount": 0, "groundedCount": 0, "totalScore": 2, "maxScore": 1, "firstRecalledAt": "2026-05-11T02:51:50.465Z", "lastRecalledAt": "2026-05-15T09:14:59.142Z", "queryHashes": [ "6e09f5970960", "a6b909e7228c" ], "recallDays": [ "2026-05-11", "2026-05-15" ], "conceptTags": [ "identity.md", "user.md", "memory.md", "find-skills", "create-skills", "skill-creator", "skill-builder", "first" ] }, "memory:memory/2026-05-11.md:41:49": { "key": "memory:memory/2026-05-11.md:41:49", "path": "memory/2026-05-11.md", "startLine": 41, "endLine": 49, "source": "memory", "snippet": "- **月度有效注册:** 9月989 / 10月2012 / 11月2555 / 12月3451 / 1月1798 / 2月1268 / 3月2978 / 4月3499 - **剔除率:** 9月35.3% / 10月16.6% / 11月14.0% / 12月2.0% / 1月7.2% / 2月27.3% / 3月28.5% / 4月38.3% - **拟合版转化率:** 9月1.72% / 10月1.69% / 11月0.82% / 12月0.72% / 1月1.50% / 2月1.26% / 3月2.69% / 4月1.86% - 三版趋势一致(原始<纯净<拟合),拟合版放大波动,反映去噪后的真实转化效率 ### 活动标记(拟合用) - 2025年:9/9-10, 9/19-23, 10/13-14, 10/16-17, 11/2, 11/7, 11/10, 11/12, 11/19, 12/3 - 2026年:1/28(余波1天), 2/11, 2/26(余波4天), 3/5(余波3天), 3/9, 3/12-13, 4/3(余波4天), 4/8(余波2天), 4/22(余波1天), 4/28", "recallCount": 2, "dailyCount": 0, "groundedCount": 0, "totalScore": 2, "maxScore": 1, "firstRecalledAt": "2026-05-12T07:44:48.437Z", "lastRecalledAt": "2026-05-12T07:45:29.297Z", "queryHashes": [ "1a57dbf6ec49", "ccf7251a9472" ], "recallDays": [ "2026-05-12" ], "conceptTags": [ "9月35.3", "10月16.6", "11月14.0", "12月2.0", "1月7.2", "2月27.3", "3月28.5", "4月38.3" ] }, "memory:memory/2026-05-09.md:1:17": { "key": "memory:memory/2026-05-09.md:1:17", "path": "memory/2026-05-09.md", "startLine": 1, "endLine": 17, "source": "memory", "snippet": "# 2026-05-09 工作日志 ## 王虹茗 - 销售线索用户分析 - **用户:** 王虹茗(user_id: af61e4gc) - **需求:** 用 `lead_user_analysis.py` 脚本处理线索用户 Excel(659条,2026年3月,销售:姜小龙/Bob/Tom/吴迪) - **权限处理:** 王虹茗不在 USER.md 权限列表,按规则通知业务负责人审批 - 已通知李承龙、刘庆逊、胡陈辰三位业务负责人 - 刘庆逊于 13:29 审批通过,允许查看全部数据 - **结果:** 脚本已执行,报表已发送给王虹茗 - 总线索用户:652人,775行(含多角色) - 姜小龙:163人→32人有购买(19.6%),退费5人 - Bob:202人→3人有购买(1.5%),退费1人 - Tom:171人→5人有购买(2.9%),退费2人 - 吴迪:116人→19人有购买(16.4%),退费2人 - 输出文件:`output/销售线索_用户分析.xlsx`", "recallCount": 2, "dailyCount": 0, "groundedCount": 0, "totalScore": 2, "maxScore": 1, "firstRecalledAt": "2026-05-14T06:31:19.437Z", "lastRecalledAt": "2026-05-19T11:28:55.602Z", "queryHashes": [ "49e79af44bc3", "154f8d62fd0b" ], "recallDays": [ "2026-05-14", "2026-05-19" ], "conceptTags": [ "user-id", "lead-user-analysis.py", "姜小龙/bob/tom/吴迪", "user.md", "19.6", "1.5", "2.9", "16.4" ] }, "memory:memory/2026-05-14.md:1:19": { "key": "memory:memory/2026-05-14.md:1:19", "path": "memory/2026-05-14.md", "startLine": 1, "endLine": 19, "source": "memory", "snippet": "# 2026-05-14 工作日志 ## 李承龙 - 付费用户 L1/L2 区分口径 - **需求:** 区分付费用户属于 L1 还是 L2,根据用户购买的商品做区分 - **分析过程:** - 排查了 `bi_vala_order` 表的 goods_name / goods_id 字段 - 发现部分商品名称不含 level 关键词(年包、单季度包等),但 goods_id 可唯一映射 - goods_id=31 历史上从「瓦拉英语level2」更名为「瓦拉英语年包」 - goods_id=32 从「瓦拉英语level2·单季」更名为「瓦拉英语单季度包」 - 用 `bi_user_course_detail` 验证了映射关系准确 - **最终方案:** 按 goods_id 映射 - L1: goods_id IN (57, 60, 63) - L2: goods_id IN (31, 32, 33, 54) - L1+L2: goods_id = 61 - 旧版通行券(<30单): goods_id IN (4,5,6,10,13,14,17,20,25,29,30,35,36,37,38),归入「其他」 - **用户分类:** 汇总用户所有订单的 goods_id,按购买商品组合判断 - **已更新:** MEMORY.md", "recallCount": 1, "dailyCount": 0, "groundedCount": 0, "totalScore": 1, "maxScore": 1, "firstRecalledAt": "2026-05-14T06:41:55.506Z", "lastRecalledAt": "2026-05-14T06:41:55.506Z", "queryHashes": [ "f6fcef2ff061" ], "recallDays": [ "2026-05-14" ], "conceptTags": [ "l1/l2", "bi-vala-order", "goods-name", "goods-id", "bi-user-course-detail", "memory.md", "工作", "日志" ] }, "memory:memory/2026-05-25.md:1:13": { "key": "memory:memory/2026-05-25.md:1:13", "path": "memory/2026-05-25.md", "startLine": 1, "endLine": 13, "source": "memory", "snippet": "## 行课记录批量查询 (1676条) [陈逸鸫 请求, 李承龙 确认权限] - 表格: https://makee-interactive.feishu.cn/sheets/RFIJsXT8FhGHhctY4RwczcOfnac (Sheet1, sheet_id=55b0eb) - 查询列: D列(小溪返回行课记录) + E列(更新时间), C列(请求状态→已返回) - 手机号匹配(column J): 961行有用户ID直接查, 715行无ID需手机号匹配, 匹配成功119个, 596个未匹配 - 数据库查询: 1077个去重用户, 1065有课程分配, 1192个角色有行课记录, 201已付费 - 输出格式: `销售:xxx | 用户:xxx | 当前:{level}{type}-{chapter} | 最近行课:date | 学习{X}min | {付费状态}` - 脚本: scripts/batch_course_record_query.py - 待查询行1676条全部处理完成, 写回成功", "recallCount": 1, "dailyCount": 0, "groundedCount": 0, "totalScore": 1, "maxScore": 1, "firstRecalledAt": "2026-05-26T02:40:52.513Z", "lastRecalledAt": "2026-05-26T02:40:52.513Z", "queryHashes": [ "4beee860f635" ], "recallDays": [ "2026-05-26" ], "conceptTags": [ "sheet-id", "记录", "批量", "查询", "请求", "确认", "权限", "表格" ] }, "memory:memory/2026-05-22.md:1:35": { "key": "memory:memory/2026-05-22.md:1:35", "path": "memory/2026-05-22.md", "startLine": 1, "endLine": 35, "source": "memory", "snippet": "# 2026-05-22 工作日志 ## 口径讨论与确认 ### 用户激活课程口径 [李承龙确认] - 数据源:`bi_vala_seasonal_ticket`(线上 PostgreSQL `vala_bi` 库) - `season_package_level = 'A1'` → L1, `'A2'` → L2 - `status = 1`(激活),`deleted_at IS NULL` - 不对 `ticket_type` 做限制 - 用户存在至少一条满足条件的记录即视为激活对应等级 - 当前数据:仅L1 503人、仅L2 1,439人、L1+L2 1,095人、合计 3,037人 ### 激活课程维度(character × level)[李承龙确认] - 一个角色 + 一个等级 = 一门被激活的课程 - 通过 `character_id`(即 user_id)直接关联学习记录 - 当前数据:L1 1,574门、L2 2,108门、合计 3,682 课程单位 ## 数据分析结果 ### 激活用户近14天完课分析(2026-05-09~2026-05-22) - 按用户:43.0% 无完课(仅L1 34.3%、仅L2 61.3%、L1+L2 23.9%) - L1+L2用户中82.5%只学了L1、13.5%两个都学、3.9%只学L2 ### 激活课程近14天完课分析 - 按课程:51.1% 无完课(L1 29.9%、L2 66.8%) - 20.9%从未有过完课记录 - 无完课课程最后停在U00~U02:L1 65.0%、L2 53.3% ### 最后完课", "recallCount": 1, "dailyCount": 0, "groundedCount": 0, "totalScore": 1, "maxScore": 1, "firstRecalledAt": "2026-05-26T10:42:05.347Z", "lastRecalledAt": "2026-05-26T10:42:05.347Z", "queryHashes": [ "145b8925866a" ], "recallDays": [ "2026-05-26" ], "conceptTags": [ "bi-vala-seasonal-ticket", "vala-bi", "season-package-level", "deleted-at", "ticket-type", "character-id", "user-id", "43.0" ] }, "memory:memory/2026-05-14.md:22:40": { "key": "memory:memory/2026-05-14.md:22:40", "path": "memory/2026-05-14.md", "startLine": 22, "endLine": 40, "source": "memory", "snippet": "- **L2 U0**: chapter_id IN (55,56,57,58,59) - **剔除后结果(截至5/10):** - 仅L1: 付费192/有消132/无消60(31%)/人均2.53/有消人均3.67 - 仅L2: 付费1370/有消461/无消909(66%)/人均1.18/有消人均3.49 - L1+L2: 付费1207/有消660/无消547(45%)/人均2.37/有消人均4.34 - **4张独立图表已生成至 output/** ## 李承龙 - 课消口径调整:L1/L2按付费群重新分类 - **[李承龙确认]** L1付费用户 = 仅L1 + L1+L2,L2付费用户 = 仅L2 + L1+L2(L1+L2用户在两张图中均有计入) - **重新生成 Excel v3** (`output/course_consumption_by_level_v3.xlsx`):4个Sheet(概览/每周明细/L1图表/L2图表) - **重新生成 4张独立PNG图表** (`output/L1_all_users_stack.png`, `L1_all_avg_trend.png`, `L2_all_users_stack.png`, `L2_all_avg_trend.png`) - **最终数据(截至最后一周,剔除U0序章):** - L1付费群: 1,399人 | 有消738 | 无消661(43%) | 人均1.97 | 有消人均3.73 - L2付费群: 2,577人 | 有消1,126 | 无消1,451(56%) | 人均1", "recallCount": 1, "dailyCount": 0, "groundedCount": 0, "totalScore": 1, "maxScore": 1, "firstRecalledAt": "2026-05-26T10:42:05.347Z", "lastRecalledAt": "2026-05-26T10:42:05.347Z", "queryHashes": [ "145b8925866a" ], "recallDays": [ "2026-05-26" ], "conceptTags": [ "chapter-id", "截至5/10", "付费192/有消132/无消60", "人均2.53/有消人均3.67", "付费1370/有消461/无消909", "人均1.18/有消人均3.49", "付费1207/有消660/无消547", "人均2.37/有消人均4.34" ] }, "memory:memory/2026-05-28.md:1:29": { "key": "memory:memory/2026-05-28.md:1:29", "path": "memory/2026-05-28.md", "startLine": 1, "endLine": 29, "source": "memory", "snippet": "# 2026-05-28 工作日志 ## [李承龙] stride_phone_lead 表查询与飞书表格创建 - **数据库:** 在线 PostgreSQL `vala_class` 库(新发现的数据库,之前未记录在 TOOLS.md 中) - **表结构:** `stride_phone_lead`(手机号线索表) - 字段:id, phone_masked, phone_encrypt, account_id, source_l1, source_l2, source_l3, created_at, updated_at - 索引:主键(id), 唯一(phone_encrypt), 普通(account_id, source_l3, updated_at) - phone_encrypt 有唯一约束用于手机号去重 - **权限:** `ai_member` 用户最初对该表无 SELECT 权限,李承龙临时授权后可用 - **vala_class 库中 ai_member 可读表:** account_wx_id, parent_address, user_info, student_info, stride_phone_lead(共5张) ## [李承龙] stride_phone_lead 飞书表格 - **飞书表格:** https://makee-interactive.feishu.cn/sheets/TWeHsCX6JhhsjntBagHcoJcJned - **Sheet 配置:** - 明细数据 (2dBSrS):全量明细 -", "recallCount": 2, "dailyCount": 0, "groundedCount": 0, "totalScore": 2, "maxScore": 1, "firstRecalledAt": "2026-05-28T08:51:30.745Z", "lastRecalledAt": "2026-05-29T06:34:35.897Z", "queryHashes": [ "a2d80701d49d", "2168d4aeddb5" ], "recallDays": [ "2026-05-28", "2026-05-29" ], "conceptTags": [ "stride-phone-lead", "vala-class", "tools.md", "phone-masked", "phone-encrypt", "account-id", "source-l1", "source-l2" ] }, "memory:memory/2026-05-28.md:19:33": { "key": "memory:memory/2026-05-28.md:19:33", "path": "memory/2026-05-28.md", "startLine": 19, "endLine": 33, "source": "memory", "snippet": "- 按source_l3去重 (1X5g5z):按 source_l3 维度 account_id 去重计数 ## [李承龙] stride_phone_lead 定时更新 - **定时任务:** 每天 08:00 自动更新飞书表格 - **脚本:** `scripts/update_stride_phone_lead_sheet.py` - **日志:** `/var/log/xiaoxi_stride_phone_lead.log` - **crontab 已添加** ✅ ## 技术备注 - lark-cli 的 `config bind` 在 Linux 上 keychain 损坏,改用飞书 Open API + curl/Python 直接调用 - 飞书 Bot 凭证(小溪):appId=cli_a929ae22e0b8dcc8, secret 见 secrets.env - `vala_class` 数据库需要补充到 TOOLS.md 和 MEMORY.md 中", "recallCount": 2, "dailyCount": 0, "groundedCount": 0, "totalScore": 2, "maxScore": 1, "firstRecalledAt": "2026-05-28T08:51:30.745Z", "lastRecalledAt": "2026-05-29T06:34:35.897Z", "queryHashes": [ "a2d80701d49d", "2168d4aeddb5" ], "recallDays": [ "2026-05-28", "2026-05-29" ], "conceptTags": [ "按source-l3去重", "source-l3", "account-id", "stride-phone-lead", "lark-cli", "curl/python", "cli-a929ae22e0b8dcc8", "secrets.env" ] } } }