ai_member_xiaoxi/memory/2026-06-08-1608.md
2026-06-09 08:00:01 +08:00

116 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Session: 2026-06-08 16:08:24 GMT+8
- **Session Key**: agent:main:feishu:direct:ou_e63ce6b760ad39382852472f28fbe2a2
- **Session ID**: d4693f57-ecd6-4d66-b7e4-5d69f293dc60
- **Source**: feishu
## Conversation Summary
user: https://makee-interactive.feishu.cn/sheets/NoZqsFi47hIOHEt9j8WcfRtbnug这个表是你创建的你应该具有完整的读和写的权限现在我们要针对sheet“小龙”“吴迪”“成都”“订单汇总”创建一个脚本。
首先对于sheet“小龙”“吴迪”“成都”我需要你读取E列的手机号然后通过XXTEA加密去用户表里面通过加密手机号进行关联匹配然后填上H列到V列的数据第V列为操作更新的时间。
然后将上述三个sheet里面有下单的用户整理到sheet“订单汇总”中。
有任何问题可以向我提。先不要动表格,先生成脚本,并且向我解释表格里面每一列你的理解和计算口径。
assistant: Let我先读取表格结构和现有的加密脚本理解清楚后再动手。
assistant: Let我先读取四个 sheet 的表头和几行数据,理解列结构。
assistant: 现在我对表格结构有了清晰的理解。让我再看看成都 sheet 的数据和现有的 phone_encrypt 依赖。
assistant: 现在我已经完整理解了表格结构和现有逻辑。让我先确认一下 XXTEA 加密依赖是否可用,然后生成脚本。
assistant: 现在我对表格结构、现有逻辑和加密方式都有了完整理解。让我生成脚本。
assistant: 文件被截断了,让我继续完成脚本。
assistant: 脚本被截断了,让我重新完整写入。
assistant: 脚本已生成并通过语法检查。下面是完整的列说明。
---
## 📊 表格列结构说明
四个 sheet 的 A~V 列结构完全一致(共 22 列),订单汇总额外有 W/X 公式列。
### 👤 手填列(销售手动填写,脚本不动)
| 列 | 名称 | 说明 |
|----|------|------|
| **A** | 销售归属 | 销售姓名:小龙 / 吴迪 / Tom / Bob |
| **B** | 微信昵称 | 用户微信昵称 |
| **C** | 进线日期 | 线索进入日期,格式如 `6月7日`,脚本会解析为 `2026-06-07` 用于日期比较 |
| **E** | 手机号 | 11 位明文手机号,**脚本的核心输入** |
| **F** | 用户年级 | 如"大班""一年级" |
| **G** | 课史/跟进 | 课程历史/跟进备注,**脚本不动此列** |
### 🤖 自动列(脚本计算填写)
| 列 | 名称 | 计算口径 |
|----|------|----------|
| **D** | 体验节数 | 从 `bi_user_course_detail` 统计 `expire_time IS NULL`(体验课)的记录数。**只补空,不覆盖已有值** |
| **H** | 用户ID | E 列手机号 → XXTEA 加密 → `bi_vala_app_account.tel_encrypt` 精确匹配 → 取 `id`。查不到留空 |
| **I** | 注册日期 | `bi_vala_app_account.created_at`,格式 `YYYY-MM-DD`。**只补空** |
| **J** | 下载渠道 | `bi_vala_app_account.download_channel`,经中文映射表转换(如 `Apple App Store``苹果`)。**只补空** |
| **K** | 是否下单 | 三个条件同时满足才写"是":①有支付成功订单 ②非全额退清 ③**下单日 ≥ 进线日期**。全额退清则清空 |
| **L** | 下单日期 | 最近一笔订单的 `pay_success_date`,格式 `YYYY-MM-DD` |
| **M** | 成交渠道 | 订单的 `key_from` 原始值(如 `sales-adp-bj-wd-0`、`app-active-h5-0-0` |
| **N** | 产品 | 通过 `goods_id` 映射商品名(如 `瓦拉英语level1+2`、`瓦拉英语年包` |
| **O** | 下单金额(GMV) | 该用户所有订单 `pay_amount_int` 之和 ÷ 100含退费。0 留空 |
| **P** | 退款金额 | 该用户所有退费成功(`status=3`)的 `refund_amount_int` 之和 ÷ 100取整。0 留空 |
| **Q** | 实际收入(GSV) | GMV 退款金额。0 留空 |
| **R** | 激活课程 | 从 `bi_vala_seasonal_ticket``season_package_level`A1→`A1体验课`A2→`A2体验课` |
| **S** | 当前行课进度 | 最近完成的课时,格式 `L1-S0-U00-L03`(从 `bi_level_unit_lesson` 映射) |
| **T** | 最近行课时间 | 最近完成课时的日期,格式 `YYYY-MM-DD` |
| **U** | 累计学习时长(min) | 所有组件 `interval_time` 求和 ÷ 60000分钟 |
| **V** | 更新时间 | 脚本执行时间,格式 `YYYY-MM-DD HH:MM:SS` |
### 订单汇总额外列
| 列 | 名称 | 说明 |
|----|------|------|
| **W** | 渠道归属 | 🔵 公式列,自动判断:销转 / 达人 / 端内 / 直购 |
| **X** | 有效成单 | 🔵 公式列1=计单0=全额退 |
---
## 🔧 脚本核心规则
1. **E→H**XXTEA 精确匹配,查不到留空(不用前三后四模糊匹配)
2. **D/I/J 只补空**:已有值不覆盖
3. **K=是**:有订单 + 非全额退清 + L(下单日) ≥ C(进线日期)
4. **全额退清**GMV = 退款金额 且 > 0 → K/O/P/Q 全部清空
5. **O/P/Q**:值为 0 时留空不写
6. **G 列不动**
## 📁 脚本位置
`scripts/sales_leads_full_refresh.py`
运行方式:
```bash
python3 scripts/sales_leads_full_refresh.py
```
---
有几个问题想确认:
1. **订单汇总的写入方式**:目前设计是**全量覆盖**(每次运行把 A~V 列从第 3 行开始全部重写W/X 公式列不动。这样每次运行后订单汇总就是最新的下单用户列表。这个逻辑对吗?还是需要**追加**(只加新的,不删旧的)?
2. **日期解析**C 列进线日期目前是 `6月7日` 这种格式,脚本按当年解析为 `2026-06-07`。跨年场景(如 12 月→1 月)需要特殊处理吗?
3. **订单汇总中同一用户多行**:如果同一个手机号在三个 sheet 中都出现且都下单了,订单汇总会出现多行(每个销售归属一行)。这是期望行为吗?
user: 1、全部覆盖
2、不需要特殊处理就都按照当年处理
3、是的
assistant: 好的,三点都确认了,脚本逻辑完全对齐。现在可以运行吗?
user: 脚本名字发给我
assistant: `scripts/sales_leads_full_refresh.py`