# SKILL_REGISTRY.md — Skill 与脚本溯源登记表

> 规则：所有新建 skill 和脚本必须在此登记。需求不清晰时先确认再动手。
> 每次修改时在对应条目下追加变更记录。

---

## Skills（`~/.openclaw/workspace/skills/`）

### phone-chapter-query
- **创建来源：** 李承龙（`ou_e63ce6b760ad39382852472f28fbe2a2`）
- **需求描述：** 通过手机号文件批量查询用户课时完成记录，匹配瓦拉账号，输出报表并自动发送到指定飞书群
- **功能说明：** 从 Excel/CSV 提取手机号 → 脱敏匹配 account_id → 查询课时完成记录（含耗时）→ 生成 xlsx → 发送到群
- **创建时间：** 2026-04-20
- **变更记录：**
  - 2026-04-20 | 新增「自动发送到群 oc_616882799f1910b85a248b74f44c3be5」功能 | 李承龙

### vala-order-amortization-stat
- **创建来源：** 李承龙（`ou_e63ce6b760ad39382852472f28fbe2a2`）
- **需求描述：** 统计指定账期内的订单均摊收入、退费冲销，按天计算均摊金额，支持部分退费场景
- **功能说明：** 订单均摊结算统计，含 summary 和 detail 两个维度，支持跨月退费计税
- **创建时间：** 2026-05-06
- **变更记录：**
  - 2026-05-28 | 计税时机改为「下单即计税」、退后订单历史累计摊销仅统计账期内退费订单 | 李承龙
  - 2026-06-18 | 退费规则更新：同时按 out_trade_no 和 trade_no 关联退费表、退费金额 SUM 累加、order_status=4 直接视为退费、order_status=3 需退费表有记录才视为退费 | 李承龙

### welfare-user-list
- **创建来源：** 李承龙（`ou_e63ce6b760ad39382852472f28fbe2a2`）
- **需求描述：** 统计拥有两个年包课包的福利品发放用户，关联收货地址
- **功能说明：** 三步流程（SQL查询→地址查询→合并Excel），输出三个 Sheet（用户名单/统计汇总/地址汇总）
- **创建时间：** 2026-05-19

### refund-user-learning-analysis
- **创建来源：** 来源不可追溯（创建于 2026-04-15 之前）
- **需求描述：** 统计退费用户在 U0 阶段的学习表现
- **功能说明：** 分析退费用户的 Review 正确率/用时、Summary 参与/完成、Challenge 各维度成绩，生成多 Sheet Excel
- **创建时间：** 约 2026-04

### vala-component-practice-stat
- **创建来源：** 来源不可追溯（创建于 2026-04-13 之前）
- **需求描述：** 统计组件练习的 Oops 率和退出率
- **功能说明：** 自动剔除测试账号、分 L1/L2 等级、样本量不足自动补充历史记录、导出多 Sheet Excel
- **创建时间：** 约 2026-04

### feishu-file-sender
- **创建来源：** 小溪自主创建（通用工具）
- **需求描述：** 通过飞书 API 发送本地文件，绕过内置 message 工具附件限制
- **功能说明：** 支持最大 30MB 文件传输，支持 Excel/PDF/Word/PPT/Markdown/图片/音视频
- **创建时间：** 约 2026-03

### feishu-wiki-access
- **创建来源：** 小溪自主创建（通用工具）
- **需求描述：** 飞书知识库接入配置
- **功能说明：** 帮助配置飞书知识库只读访问权限
- **创建时间：** 约 2026-03

### feishu-wiki-content-reader
- **创建来源：** 小溪自主创建（通用工具）
- **需求描述：** 批量读取知识库文档内容
- **功能说明：** 读取指定文档及其所有子文档内容，支持结构化提取
- **创建时间：** 约 2026-03

### find-skills
- **创建来源：** 小溪自主创建（通用工具）
- **需求描述：** 搜索和安装社区技能包
- **功能说明：** 通过 `npx skills` 查找和安装技能
- **创建时间：** 约 2026-03

### self-improving-agent
- **创建来源：** 小溪自主创建（自我改进）
- **需求描述：** 记录错误和经验，持续优化
- **功能说明：** 分类记录错误/修正/功能请求/最佳实践，支持复盘和知识沉淀
- **创建时间：** 约 2026-03

### skill-builder
- **创建来源：** 小溪自主创建（技能构建模板）
- **需求描述：** 创建高质量技能的模板和规范
- **功能说明：** 提供技能目录结构、SKILL.md 模板、安全规范等
- **创建时间：** 约 2026-03

### timed-reminder
- **创建来源：** 小溪自主创建（通用工具）
- **需求描述：** 定时提醒功能
- **功能说明：** 创建和管理定时提醒
- **创建时间：** 约 2026-03

---

## Scripts（`~/.openclaw/workspace/scripts/`）

### 行课查询/自动回填（已废弃，2026-06-04 陈逸鸫确认删除）
| 脚本 | 创建来源 | 需求描述 | 创建时间 | 状态 |
|------|---------|---------|---------|------|
| `auto_xingke_query.py` | 陈逸鸫确认流程，李承龙确认匹配规则 | 定时巡检飞书表格，手机号→ID匹配→课时记录→回填 | 2026-05-29 | ❌ 已删除 |
| `auto_xingke_query_v2.py` | 同上 | V2 版本优化 | 2026-06-01 | ❌ 已删除 |
| `batch_course_records.py` | 同上 | 批量课程记录（简化版） | 2026-05-27 | ❌ 已删除 |
| `write_course_results.py` | 行课回填流程 | 写入课程查询结果到飞书表格 | 2026-05-27 | ❌ 已删除 |
| `write_id_results.py` | 行课回填流程 | 写入 ID 匹配结果到飞书表格 | 2026-05-27 | ❌ 已删除 |
| `batch_course_record_query.py` | 同上 | 批量课程记录查询 | 2026-06-01 |
| `batch_phone_to_id.py` | 李承龙 | 批量手机号转 account_id | 2026-06-01 |
| `phone_encrypt.py` | 李承龙 | 手机号 XXTEA 加密/解密/MD5，用于匹配 tel_encrypt 字段 | 2026-06-01 |
| `export_phone_md5.py` | 李承龙 | 导出 tel_encrypt → 明文 → MD5 映射 CSV，支持全量/按ID导出，可被其他 skill 调用 | 2026-06-03 |
| `phone_match_userid.py` | 李承龙 | 手机号匹配用户 ID | 2026-06-01 |

### 退费分析
| 脚本 | 创建来源 | 需求描述 | 创建时间 |
|------|---------|---------|---------|
| `april_refund_analysis.py` | 来源不可追溯 | 4月退费分析 | 约 2026-04 |
| `channel_lead_refund_analysis.py` | 李承龙 | 渠道线索退费分析 | 约 2026-05 |
| `channel_lead_refund_analysis_v2.py` | 李承龙 | 渠道线索退费分析 V2 | 2026-05-19 |
| `channel_role_refund_analysis.py` | 来源不可追溯 | 渠道角色退费分析 | 2026-05-20 |
| `course_progress_refund_analysis.py` | 李承龙 | 课程进度退费分析 | 2026-06-01 |
| `course_progress_refund_v2.py` | 李承龙 | 课程进度退费分析 V2 | 2026-06-01 |
| `laolang_refund_analysis.py` | 李承龙 | 老狼退费分析 | 2026-06-01 |
| `laolang_lvxing_analysis.py` | 李承龙 | 老狼履约分析 | 2026-06-01 |
| `laolang_per_lesson.py` | 李承龙 | 老狼每课分析 | 2026-06-01 |
| `find_202602_order_202603_refund.py` | 来源不可追溯 | 查找2月订单3月退费 | 2026-04-22 |
| `find_history_order_202603_refund.py` | 来源不可追溯 | 查找历史订单3月退费 | 2026-04-22 |
| `query_order_all_refund.py` | 来源不可追溯 | 查询订单全部退费 | 2026-04-22 |
| `query_order_refund_time.py` | 来源不可追溯 | 查询订单退费时间 | 2026-04-22 |

### 学习数据分析
| 脚本 | 创建来源 | 需求描述 | 创建时间 |
|------|---------|---------|---------|
| `course_consumption_v2.py` | 来源不可追溯 | 课程消费分析 | 约 2026-05 |
| `course_consumption_by_level.py` | 来源不可追溯 | 按等级课程消费分析 | 2026-05-14 |
| `course_consumption_weekly.py` | 来源不可追溯 | 周课程消费分析 | 2026-05-13 |
| `activated_users_study_14d.py` | 李承龙 | 激活用户14天学习分析 | 2026-05-22 |
| `activated_courses_study_14d.py` | 李承龙 | 激活课程14天学习分析 | 2026-05-22 |
| `dual_activation_progress.py` | 李承龙 | 双激活进度分析 | 2026-05-27 |
| `dual_progress_cross.py` | 李承龙 | 双进度交叉分析 | 2026-05-27 |
| `popup_analysis.py` | 李承龙 | 弹窗分析 | 2026-05-28 |
| `analyze_course_records.py` | 来源不可追溯 | 课程记录分析 | 2026-05-22 |
| `channel_completion_diff.py` | 来源不可追溯 | 渠道完课差异分析 | 2026-05-22 |
| `channel_frequency_diff.py` | 来源不可追溯 | 渠道频次差异分析 | 2026-05-22 |
| `export_chapter_completion.py` | 来源不可追溯 | 导出章节完成数据 | 2026-05-22 |
| `last_completion_unit_dist.py` | 来源不可追溯 | 最后完成单元分布 | 2026-05-22 |
| `last_study_lesson_distribution.py` | 来源不可追溯 | 最后学习课时分布 | 2026-05-22 |
| `last_study_unit_distribution.py` | 来源不可追溯 | 最后学习单元分布 | 2026-05-22 |
| `learning_progress_30days.py` | 来源不可追溯 | 30天学习进度 | 2026-05-27 |
| `l1_retention_analysis.py` | 来源不可追溯 | L1留存分析 | 2026-05-11 |
| `l2_pass_time.py` / `.sh` / `.sql` | 来源不可追溯 | L2通关时间分析 | 2026-05-06 |
| `repeat_learn_trend.py` | 来源不可追溯 | 重复学习趋势 | 2026-05-28 |
| `repeat_distribution_chart.py` | 来源不可追溯 | 重复学习分布图 | 2026-05-28 |
| `repeat_duration_chart.py` | 来源不可追溯 | 重复学习时长图 | 2026-05-28 |
| `repeat_duration_l1l2.py` | 来源不可追溯 | 重复学习时长 L1/L2 | 2026-05-28 |
| `repeat_l1_l2_chart.py` | 来源不可追溯 | 重复学习 L1/L2 图 | 2026-05-28 |
| `single_duration_chart.py` | 来源不可追溯 | 单次学习时长图 | 2026-05-28 |

### 转化率分析
| 脚本 | 创建来源 | 需求描述 | 创建时间 |
|------|---------|---------|---------|
| `conversion_rate_analysis.py` | 李承龙 | 端内注册转付费转化率（含纯净版） | 2026-05-12 |
| `fitted_registration.py` | 李承龙 | 拟合版注册人数（LOESS+星期因子） | 2026-06-01 |

### 渠道分析
| 脚本 | 创建来源 | 需求描述 | 创建时间 |
|------|---------|---------|---------|
| `monthly_channel_order_report.py` | 来源不可追溯 | 月度渠道订单报告 | 2026-05-06 |
| `weekly_channel_order_report.sh` | 来源不可追溯 | 周渠道订单报告 | 2026-05-21 |
| `xueersi_weekly_report.sh` | 来源不可追溯 | 学而思周报 | 2026-04-20 |

### 达人分析
| 脚本 | 创建来源 | 需求描述 | 创建时间 |
|------|---------|---------|---------|
| `daren_deep_analysis.py` | 李承龙 | 达人直播深度分析 | 2026-05-26 |
| `daren_deep_analysis_v2.py` | 李承龙 | 达人直播深度分析 V2 | 2026-05-26 |
| `daren_dim_charts.py` | 李承龙 | 达人维度图表 | 2026-05-26 |
| `daren_report_chart.py` | 李承龙 | 达人报告图表 | 2026-05-26 |

### 销售分析
| 脚本 | 创建来源 | 需求描述 | 创建时间 |
|------|---------|---------|---------|
| `sales_conversion_stats.py` | 李承龙 | 销售转化统计 | 2026-06-02 |
| `sales_daily_report.py` | 李承龙 | 销售日报 | 2026-06-02 |
| `endor_purchase_analysis.py` / `_v2.py` / `_v3.py` | 李承龙 | 背书购买分析 | 2026-05-25 |
| `lead_user_analysis.py` | 李承龙 | 线索用户分析（Excel→订单关联） | 2026-05-07 |
| `sales_lead_auto_fill.py` | 李承龙 | 销售线索自动填充 | 2026-06-01 |
| `migrate_old_leads.py` | 李承龙 | 迁移旧线索 | 2026-06-01 |
| `update_stride_phone_lead_sheet.py` | 来源不可追溯 | 更新 stride 手机线索表 | 2026-05-29 |

### 收入预测
| 脚本 | 创建来源 | 需求描述 | 创建时间 |
|------|---------|---------|---------|
| `revenue_forecast_2025.py` | 李承龙 | 2025年收入预测 | 2026-05-26 |
| `june_revenue_forecast.py` | 李承龙 | 6月收入预测 | 2026-06-01 |
| `june_revenue_forecast_fitted.py` | 李承龙 | 6月收入预测（拟合版） | 2026-06-01 |

### 报表生成
| 脚本 | 创建来源 | 需求描述 | 创建时间 |
|------|---------|---------|---------|
| `generate_report.py` | 来源不可追溯 | 通用报表生成 | 约 2026-04 |
| `generate_excel.py` | 来源不可追溯 | Excel 报表生成 | 2026-05-14 |
| `generate_charts.py` / `_v3.py` | 来源不可追溯 | 图表生成 | 2026-05-14 |
| `course_excel_v3.py` | 来源不可追溯 | 课程 Excel V3 | 2026-05-14 |
| `excel_v4.py` | 来源不可追溯 | Excel V4 | 2026-05-14 |
| `charts_v4.py` | 来源不可追溯 | 图表 V4 | 2026-05-14 |
| `course_analysis_v4.py` | 来源不可追溯 | 课程分析 V4 | 2026-05-14 |
| `build_xhs_learning_report.py` | 来源不可追溯 | 小红书学习报告 | 2026-06-01 |

### 福利品
| 脚本 | 创建来源 | 需求描述 | 创建时间 |
|------|---------|---------|---------|
| `welfare_query.sql` | 李承龙 | 福利品查询 SQL | 2026-05-19 |
| `welfare_step1.sql` / `_v2.sql` | 李承龙 | 福利品第一步 SQL | 2026-05-19 |
| `welfare_merge.py` | 李承龙 | 福利品合并脚本 | 2026-05-19 |
| `welfare_merge_final.py` | 李承龙 | 福利品最终合并 | 2026-05-19 |
| `welfare_excluded_export.py` | 李承龙 | 福利品排除导出 | 2026-05-19 |

### 数据刷新/修复
| 脚本 | 创建来源 | 需求描述 | 创建时间 |
|------|---------|---------|---------|
| `refresh_may_course_data.py` | 来源不可追溯 | 刷新5月课程数据 | 2026-05-23 |
| `refresh_may_v2.py` | 来源不可追溯 | 刷新5月 V2 | 2026-05-23 |
| `refresh_xhs_user_table.py` | 来源不可追溯 | 刷新小红书用户表 | 2026-05-29 |
| `may230_refresh.py` | 来源不可追溯 | 5月23日刷新 | 2026-06-01 |
| `fix_process_data.py` | 来源不可追溯 | 修复处理数据 | 2026-06-02 |
| `fix_process_data_v2.py` | 来源不可追溯 | 修复处理数据 V2 | 2026-06-02 |
| `fix_all_sheets.py` | 来源不可追溯 | 修复所有 Sheet | 2026-06-02 |
| `rewrite_daily_report_formulas.py` | 来源不可追溯 | 重写日报公式 | 2026-06-02 |
| `style_sheets.py` | 来源不可追溯 | 样式 Sheet | 2026-06-01 |
| `batch_update_sheet.py` | 来源不可追溯 | 批量更新 Sheet | 2026-05-23 |
| `finance_orders_refresh.py` | 李承龙（`ou_e63ce6b760ad39382852472f28fbe2a2`） | 财务口径订单刷新，从订单汇总 2smjwA 出发，逐行匹配全量订单并写入财务 tab 2hSLSg | 2026-06-05 |
| **变更记录：** | | | |
| 2026-06-18 | 退费规则更新：同时按 trade_no 和 out_trade_no 匹配退费表、退费金额 SUM 累加、order_status=4 直接视为退费 | 李承龙 | | |

### 定时/备份/运维
| 脚本 | 创建来源 | 需求描述 | 创建时间 |
|------|---------|---------|---------|
| `daily_backup.sh` | 小溪自主（系统运维） | 每日备份 | 2026-04-15 |
| `daily_midnight_task.sh` | 小溪自主（系统运维） | 每日凌晨任务 | 约 2026-03 |
| `sync_skills.sh` | 小溪自主（系统运维） | 技能同步推送 | 2026-04-03 |
| `update_business_knowledge.sh` | 小溪自主（系统运维） | 业务知识库更新 | 2026-04-15 |
| `run_component_practice_stat_daily.sh` | 来源不可追溯 | 组件练习统计每日运行 | 2026-04-20 |
| `run_user_course_stat.sh` | 来源不可追溯 | 用户课程统计运行 | 2026-05-21 |

### 工具/辅助
| 脚本 | 创建来源 | 需求描述 | 创建时间 |
|------|---------|---------|---------|
| `check_wechat_binding.py` | 李承龙 | 加微判断验证 | 2026-06-01 |
| `check_account_userid.py` | 来源不可追溯 | 检查账户用户ID | 2026-05-25 |
| `check_seasonal_ticket_fields.py` | 来源不可追溯 | 检查季票字段 | 2026-04-22 |
| `check_tables.py` | 来源不可追溯 | 检查表结构 | 2026-04-22 |
| `test_db_connections.py` | 小溪自主（环境测试） | 数据库连接测试 | 约 2026-03 |
| `test_mysql_pg.py` | 小溪自主（环境测试） | MySQL/PG 连接测试 | 约 2026-03 |
| `test_docx_api.py` | 来源不可追溯 | 测试 Docx API | 2026-05-07 |
| `write_md_to_feishu_docx.py` | 小溪自主（通用工具） | Markdown 转飞书 Docx | 2026-05-07 |
| `parse_table.py` | 来源不可追溯 | 解析表格 | 2026-03-18 |
| `process_order.py` | 来源不可追溯 | 处理订单 | 2026-03-24 |
| `regenerate_report.py` | 来源不可追溯 | 重新生成报告 | 2026-03-24 |
| `read_excel.py` | 来源不可追溯 | 读取 Excel | 约 2026-03 |
| `query_user_info.py` | 来源不可追溯 | 查询用户信息 | 约 2026-03 |
| `export_user_id_data.py` | 来源不可追溯 | 导出用户ID数据 | 约 2026-03 |
| `export_tel_encrypt_no_gsv.py` | 来源不可追溯 | 导出加密手机号（无GSV） | 2026-05-29 |
| `send_file.sh` | 来源不可追溯 | 发送文件 | 2026-04-01 |
| `find_optimal_x.py` | 来源不可追溯 | 寻找最优 X | 2026-05-11 |
| `device_category_analysis.py` | 来源不可追溯 | 设备分类分析 | 2026-05-26 |
| `unit_reinforcement_tasks.py` | 来源不可追溯 | 单元强化任务 | 2026-06-01 |
| `vala_order_amortization_stat_202603.py` | 来源不可追溯 | 订单均摊统计 2026-03 | 2026-04-23 |

### SQL 模板
| 脚本 | 创建来源 | 需求描述 | 创建时间 |
|------|---------|---------|---------|
| `goods_id_distribution.sql` | 来源不可追溯 | goods_id 分布查询 | 2026-05-22 |
| `l1l2_users_study_breakdown.sql` | 来源不可追溯 | L1/L2 用户学习拆分 | 2026-05-17 |
| `last_done_unit.sql` | 来源不可追溯 | 最后完成单元 | 2026-05-22 |
| `learning_progress_30days.sql` | 来源不可追溯 | 30天学习进度 SQL | 2026-05-27 |
| `no_done_paying_users.sql` | 来源不可追溯 | 无完课付费用户 | 2026-05-22 |
| `u00_lesson_dist.sql` | 来源不可追溯 | U00 课时分布 | 2026-05-22 |
| `weekly_active_paying_users.sql` | 来源不可追溯 | 周活跃付费用户 | 2026-05-17 |
| `用户购课完课统计.sql` | 来源不可追溯 | 用户购课完课统计 | 2026-05-21 |

---

## 全局 Skills（`~/.openclaw/skills/`）

以下为瓦拉团队自建技能（非 lark-cli 官方 symlink）：

| 技能 | 创建来源 | 需求描述 | 创建时间 |
|------|---------|---------|---------|
| `cloudsways-search` | 技术负责人（李若松/张昆鹏） | 小宿 SmartSearch 搜索 API | 约 2026-05 |
| `cron-schedule.vala` | 小溪自主（系统基础设施） | 定时任务管理 | 约 2026-04 |
| `feishu-chat-troubleshooting` | 小溪自主（系统运维） | 飞书群消息故障排查 | 约 2026-05 |
| `gpt-image-2-generator` | 小溪自主（通用工具） | GPT Image 2 图片生成 | 约 2026-05 |
| `knowledge-mastery-calculator` | 来源不可追溯 | 知识点掌握度计算 | 约 2026-04 |
| `lark-99991668-pitfall` | 小溪自主（系统运维） | 99991668 错误排查补丁 | 约 2026-05 |
| `lark-action-as-bot` | 小溪自主（系统基础设施） | Bot 身份操作指南 | 约 2026-03 |
| `lark-identify-sender` | 小溪自主（系统基础设施） | 识别飞书消息发送者身份 | 约 2026-04 |
| `lark-send-message-as-bot` | 小溪自主（系统基础设施） | Bot 身份发送飞书消息 | 约 2026-04 |
| `lark-send-message-as-bot-local` | 小溪自主（系统运维） | Bot 消息发送本地补丁 | 约 2026-05 |
| `lark_wiki_operate_as_bot` | 小溪自主（系统基础设施） | 知识库 Bot 身份操作 | 约 2026-04 |
| `model-usage-stats` | 小溪自主（系统运维） | Token 用量统计 | 约 2026-05 |
| `multi-model-assistant` | 技术负责人（李若松/张昆鹏） | 外部多模型调用 | 约 2026-05 |
| `pua` | 小溪自主（实验性） | PUA 模式 | 约 2026-04 |
| `use_vala_skillhub` | 小溪自主（系统基础设施） | SkillHub 技能推送/同步 | 约 2026-05 |
| `vala_git_workspace_backup.vala` | 小溪自主（系统运维） | workspace Git 备份 | 约 2026-04 |
| `vala_knowledgebase` | 小溪自主（知识管理） | 瓦拉知识库 | 约 2026-05 |

---

### fill_leads_sheet.py
- **创建来源：** 李承龙（`ou_e63ce6b760ad39382852472f28fbe2a2`）
- **需求描述：** 从「端内析出leads数据」飞书表格读取曲慧萌/吴迪填写的手-机号 → XXTEA加密匹配 account_id → 查询注册日期、端内转化、退费、U0体验课完成日期 → 自动回填表格
- **功能说明：** 支持 dry-run 预览，自动匹配 bi_vala_app_account.tel_encrypt，查询端内渠道（含 app-sales-bj-wd-0）的转化/退费状态，以及 L1-U0 和 L2-U0 共10节体验课的完成日期
- **创建时间：** 2026-06-03

### sync_sales_lesson_status.py
- **创建来源：** 陈逸鸫（`8315a98e`）
- **需求描述：** 每30分钟自动从销售表（小龙/吴迪）读取UID → 查DB课时完成数 → 回填D列体验节数 → 汇总写入行课漏斗M/P/S/V/Y列（≥1/≥2/≥3/≥4/≥5节人数）
- **功能说明：** 替代旧的查询表回填流程，直接查DB写销售表+行课漏斗，实现行课数据全自动更新
- **创建时间：** 2026-06-03
- **Cron：** `*/30 * * * *` `/etc/cron.d/xiaoxi_sales_lesson_sync`

### feishu_sheet_utils.py
- **创建来源：** 李承龙（`ou_e63ce6b760ad39382852472f28fbe2a2`）
- **需求描述：** 飞书表格写入因 API 单次 5000 格上限导致数据丢失，需要统一的写入工具
- **功能说明：** 封装飞书表格安全分批写入/清空逻辑，自动计算批大小确保 ≤ 4400 格/批（留 12% 安全余量），所有脚本统一使用此工具避免超标
- **创建时间：** 2026-06-13

### bot_sales_step2_refresh
- **创建来源：** 陈逸鸫（`ou_0f343a045f793af4eabe6da807fddbf7`）
- **需求描述：** Bot 销转看板 S2 刷新，对销售三表（小龙/吴迪/成都）做全量数据填充
- **功能说明：** E列手机号 → XXTEA 加密 → PG tel_encrypt 精确匹配 → H列UID；H→D/I/J 只补空；K–V 订单/金额/行课数据全覆盖；不写订单汇总
- **创建时间：** 2026-06-06
- **变更记录：**
  - 2026-06-06 | v2: D/I/J 只补空、L≥C 才 K=是、全额退清 K/O/P/Q | 陈逸鸫

### full_refresh_sales.py
- **创建来源：** 李承龙（`ou_e63ce6b760ad39382852472f28fbe2a2`）
- **需求描述：** 销售三表全量刷新，手机号→UID→订单数据→回填，含订单汇总写入
- **功能说明：** 读取销售三表（吴迪/小龙/成都）→ XXTEA 匹配 UID → 查询订单/退费/行课 → 回填各列 → 写入订单汇总
- **创建时间：** 2026-06-02
- **变更记录：**
  - 2026-06-16 | 销售三表读取范围 A:V→A:Z、订单汇总筛选 K=是+O>0→Y=1、写入范围 A-V→A-X、排序列 L→K | 来源待确认（会话已过期）
  - 2026-06-16 | 新增 `classify_sales_channel()` 函数，将 key_from 归为四类（端内/销转/达人/直购），规则从 MEMORY.md 迁移 | 李承龙

### sales_leads_full_refresh.py
- **创建来源：** 李承龙（`ou_e63ce6b760ad39382852472f28fbe2a2`）
- **需求描述：** 销售线索全量刷新，从销售三表读取→匹配订单→写入订单汇总
- **功能说明：** 读取销售三表 → XXTEA 匹配 UID → 查询订单/退费 → 筛选有效订单 → 全量覆盖订单汇总
- **创建时间：** 2026-06-08
- **变更记录：**
  - 2026-06-16 | 修复 parse_date_str 支持带时间的日期格式（`6月12日 10:23:48`） | 群聊上下文触发（非授权人），已违规

### refresh_order_summary.py
- **创建来源：** 李承龙（`ou_e63ce6b760ad39382852472f28fbe2a2`）
- **需求描述：** 订单汇总刷新，从直购表+销售三表合并写入订单汇总
- **功能说明：** 读取直购表+销售三表 → 合并去重 → 全量覆盖订单汇总
- **创建时间：** 约 2026-06
- **变更记录：**
  - 2026-06-15 | 去掉直购表合并逻辑（停直购口径变更） | 陈逸鸫（群聊「数据更新V2」）

> **最后更新：** 2026-06-16 | 李承龙要求强化审批规则，补登记缺失条目
> **标记说明：** 「来源不可追溯」= 创建于登记规则生效之前，原始需求来源已无法从记忆/会话中确认
