# 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:销售线索用户分析报表 - [李承龙需求] 输入包含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 - **重要关联:** `bi_user_chapter_play_record.user_id` = `bi_vala_app_character.id`(角色ID),非 account_id - **退款条件:** `bi_refund_order.status=3` AND `bi_vala_order.order_status=4` - **结果:** 533行(462个用户 × 533个有效角色),235个完成L1序章,139个完成L2序章,53行有购买,10行有退款 - **踩坑记录:** - 子会话按旧口径执行后被 kill,最终主会话亲自重写脚本 - ALL_CHAPTERS 的值是 `"L1_U00_L01"`,COL_ORDER 是 `"L1_U00_L01_完成时间"`,不匹配导致全部为空,修复后正确 - datetime 写入 Excel 需去掉时区信息 `dt.tz_localize(None)` - play_record 分表查询需遍历 0-7 共 8 个分表