diff --git a/.env b/.env new file mode 100644 index 0000000..3e56c67 --- /dev/null +++ b/.env @@ -0,0 +1,19 @@ +# MySQL测试环境 +MYSQL_HOST=bj-cdb-8frbdwju.sql.tencentcdb.com +MYSQL_PORT=25413 +MYSQL_USERNAME=read_only +MYSQL_PASSWORD=fdsfiidier^$*hjfdijjd232 + +# PostgreSQL线上环境 +PG_DB_HOST=bj-postgres-16pob4sg.sql.tencentcdb.com +PG_DB_PORT=28591 +PG_DB_USER=ai_member +PG_DB_PASSWORD=LdfjdjL83h3h3^$&**YGG* +PG_DB_DATABASE=vala + +# Elasticsearch线上环境 +ES_HOST=es-7vd7jcu9.public.tencentelasticsearch.com +ES_PORT=9200 +ES_SCHEME=https +ES_USER=elastic +ES_PASSWORD=F%?QDcWes7N2WTuiYD11 diff --git a/logs/backup.log b/logs/backup.log index a3c136a..88d4c6a 100644 --- a/logs/backup.log +++ b/logs/backup.log @@ -468,3 +468,11 @@ To https://git.valavala.com/ai_member_only/ai_member_xiaoban 338e2f6..d523814 master -> master [2026-05-30 08:10:01] 工作区备份成功:自动备份 2026-05-30 08:10:01 [2026-05-31 08:10:01] 开始备份工作区... +[master 88b4518] 自动备份 2026-05-31 08:10:01 + 2 files changed, 1 insertion(+), 3 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 + d523814..88b4518 master -> master +[2026-05-31 08:10:02] 工作区备份成功:自动备份 2026-05-31 08:10:01 diff --git a/memory/.dreams/events.jsonl b/memory/.dreams/events.jsonl index bc0297f..0ecdeb4 100644 --- a/memory/.dreams/events.jsonl +++ b/memory/.dreams/events.jsonl @@ -29,3 +29,6 @@ {"type":"memory.recall.recorded","timestamp":"2026-05-30T12:39:47.963Z","query":"小红书数据需求群 chat_id oc_ 群ID","resultCount":6,"results":[{"path":"memory/2026-05-28.md","startLine":74,"endLine":100,"score":1},{"path":"memory/2026-05-28.md","startLine":240,"endLine":266,"score":1},{"path":"memory/2026-05-28.md","startLine":432,"endLine":458,"score":1},{"path":"memory/2026-05-28.md","startLine":94,"endLine":127,"score":1},{"path":"memory/2026-05-28.md","startLine":260,"endLine":293,"score":1},{"path":"memory/2026-05-28.md","startLine":452,"endLine":485,"score":1}]} {"type":"memory.recall.recorded","timestamp":"2026-05-30T14:07:53.580Z","query":"竞品 竞争对手 产品对比 市场分析","resultCount":2,"results":[{"path":"memory/2026-05-13.md","startLine":1,"endLine":16,"score":1},{"path":"memory/2026-05-24.md","startLine":66,"endLine":92,"score":1}]} {"type":"memory.recall.recorded","timestamp":"2026-05-30T14:07:53.580Z","query":"competitor rival English learning kids education product","resultCount":1,"results":[{"path":"memory/2026-03-01.md","startLine":1,"endLine":11,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-05-31T23:25:36.480Z","query":"陈逸鸫 任务 进度 2026-05","resultCount":6,"results":[{"path":"memory/2026-05-28.md","startLine":504,"endLine":536,"score":1},{"path":"memory/2026-05-28.md","startLine":337,"endLine":366,"score":1},{"path":"memory/2026-05-28.md","startLine":74,"endLine":100,"score":1},{"path":"memory/2026-05-28.md","startLine":240,"endLine":266,"score":1},{"path":"memory/2026-05-28.md","startLine":432,"endLine":458,"score":1},{"path":"memory/2026-05-28.md","startLine":530,"endLine":557,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-05-31T23:25:36.480Z","query":"pipeline 数据 同步 cron 定时","resultCount":5,"results":[{"path":"memory/2026-05-28.md","startLine":704,"endLine":717,"score":1},{"path":"memory/2026-05-28.md","startLine":596,"endLine":624,"score":1},{"path":"memory/2026-05-28.md","startLine":1,"endLine":36,"score":1},{"path":"memory/2026-05-28.md","startLine":359,"endLine":394,"score":1},{"path":"memory/2026-05-28.md","startLine":122,"endLine":152,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-05-31T23:27:40.582Z","query":"视频 转译 翻译 评论 transcript 进度","resultCount":2,"results":[{"path":"memory/2026-05-28.md","startLine":641,"endLine":671,"score":1},{"path":"memory/2026-05-28.md","startLine":618,"endLine":649,"score":1}]} diff --git a/memory/.dreams/short-term-recall.json b/memory/.dreams/short-term-recall.json index 404979a..2aee190 100644 --- a/memory/.dreams/short-term-recall.json +++ b/memory/.dreams/short-term-recall.json @@ -1,6 +1,6 @@ { "version": 1, - "updatedAt": "2026-05-30T14:07:53.580Z", + "updatedAt": "2026-05-31T23:27:40.582Z", "entries": { "memory:memory/2026-05-24.md:1:30": { "key": "memory:memory/2026-05-24.md:1:30", @@ -476,20 +476,22 @@ "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": 2, + "recallCount": 3, "dailyCount": 0, "groundedCount": 0, - "totalScore": 2, + "totalScore": 3, "maxScore": 1, "firstRecalledAt": "2026-05-28T12:30:30.129Z", - "lastRecalledAt": "2026-05-28T20:57:42.055Z", + "lastRecalledAt": "2026-05-31T23:25:36.480Z", "queryHashes": [ "4596e377d39b", - "f139ebdae100" + "f139ebdae100", + "679cdd7bd3a8" ], "recallDays": [ "2026-05-28", - "2026-05-29" + "2026-05-29", + "2026-06-01" ], "conceptTags": [ "cli-aa898f32d4799bea", @@ -540,21 +542,23 @@ "endLine": 536, "source": "memory", "snippet": "| 2b | 客户主表 → 订单 | ✅ | 公式就绪 | | 3 | 日报 C1HVN2 | ✅ | 四段刷新 | | 3a/3c | 口径审计 | ✅ | 推群全过 | | 4a | 结算月汇总 | ✅ | 公式就绪 | **结论:当前表内所有数据与重拉完全一致,零差异,无需刷写。** ### 18:36 小溪行课触发实跑 - 已推 1920 条到小溪查询表(新 Sheet) - 已 @小溪 到小红书数据需求群,请处理 ~5 条待查询记录 - 表格:`RFIJsXT8FhGHhctY4RwczcOfnac` - 等待小溪回填后跑 `pull_xiaoxi_results.py` 回收结果 ### 18:50 PG 实时行课数据全量覆盖 [陈逸鸫确认] 不用等小溪回填那 5 条,直接用 PG `user_course_detail` 表实时数据覆盖: - 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_mod", - "recallCount": 4, + "recallCount": 5, "dailyCount": 0, "groundedCount": 0, - "totalScore": 4, + "totalScore": 5, "maxScore": 1, "firstRecalledAt": "2026-05-28T20:51:03.908Z", - "lastRecalledAt": "2026-05-29T06:11:40.432Z", + "lastRecalledAt": "2026-05-31T23:25:36.480Z", "queryHashes": [ "f22544a8757c", "2af907cea93d", "d9f1601110da", - "82be33d1f911" + "82be33d1f911", + "cf12fd62a5e5" ], "recallDays": [ - "2026-05-29" + "2026-05-29", + "2026-06-01" ], "conceptTags": [ "3a/3c", @@ -574,20 +578,22 @@ "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": 3, + "recallCount": 4, "dailyCount": 0, "groundedCount": 0, - "totalScore": 3, + "totalScore": 4, "maxScore": 1, "firstRecalledAt": "2026-05-28T20:51:03.908Z", - "lastRecalledAt": "2026-05-29T13:16:08.062Z", + "lastRecalledAt": "2026-05-31T23:25:36.480Z", "queryHashes": [ "f22544a8757c", "2af907cea93d", - "3737f6af1445" + "3737f6af1445", + "cf12fd62a5e5" ], "recallDays": [ - "2026-05-29" + "2026-05-29", + "2026-06-01" ], "conceptTags": [ "gpt", @@ -607,22 +613,24 @@ "endLine": 100, "source": "memory", "snippet": "3. **check_call→run**(`sync_juguang_notes.py` `sheet_write_range`):`subprocess.check_call` 不支持 `input=`, 改用 `subprocess.run(..., check=True, input=...)` 1b 单天验证通过:`sync_juguang_agents.py --start 2026-05-27 --end 2026-05-27` 写入 12 个单元格成功。全量 27 天在子进程跑,结果待出。 ### 17:12 数据服务边界规则部署 [陈逸鸫] **文档位置:** `docs/xiaoban-data-boundary.md`(git@github.com:chenyd11/feishu-database.git — 服务器无 SSH key 无法 pull) **三条核心规则(已写入 MEMORY.md):** 1. cron pipeline 和帮同事查数分轨,不能混用同一流程 2. 同事请求默认只读;写生产表 CYFTsu 必须 @陈逸鸫 确认 3. 查数结果写「输出区」副本,不改主表 **操作黑名单:** `pipeline.py` / `sync_*` / `run_juguang_*` / `sheets +write`(生产表) / `--promote` **待办:** 建「大麦查询输出」专用表(待陈逸鸫提供 token) **待办:** 获取 docs/xiaoban-data-boundary.md §7 Agent 系统提示词(完", - "recallCount": 4, + "recallCount": 5, "dailyCount": 0, "groundedCount": 0, - "totalScore": 4, + "totalScore": 5, "maxScore": 1, "firstRecalledAt": "2026-05-28T20:51:03.908Z", - "lastRecalledAt": "2026-05-30T12:39:47.963Z", + "lastRecalledAt": "2026-05-31T23:25:36.480Z", "queryHashes": [ "f22544a8757c", "c3cb24be8923", "e3108bd5b94c", - "340c1d46da26" + "340c1d46da26", + "cf12fd62a5e5" ], "recallDays": [ "2026-05-29", - "2026-05-30" + "2026-05-30", + "2026-06-01" ], "conceptTags": [ "check-call", @@ -642,22 +650,24 @@ "endLine": 266, "source": "memory", "snippet": "3. **check_call→run**(`sync_juguang_notes.py` `sheet_write_range`):`subprocess.check_call` 不支持 `input=`, 改用 `subprocess.run(..., check=True, input=...)` 1b 单天验证通过:`sync_juguang_agents.py --start 2026-05-27 --end 2026-05-27` 写入 12 个单元格成功。全量 27 天在子进程跑,结果待出。 ### 17:12 数据服务边界规则部署 [陈逸鸫] **文档位置:** `docs/xiaoban-data-boundary.md`(git@github.com:chenyd11/feishu-database.git — 服务器无 SSH key 无法 pull) **三条核心规则(已写入 MEMORY.md):** 1. cron pipeline 和帮同事查数分轨,不能混用同一流程 2. 同事请求默认只读;写生产表 CYFTsu 必须 @陈逸鸫 确认 3. 查数结果写「输出区」副本,不改主表 **操作黑名单:** `pipeline.py` / `sync_*` / `run_juguang_*` / `sheets +write`(生产表) / `--promote` **待办:** 建「大麦查询输出」专用表(待陈逸鸫提供 token) **待办:** 获取 docs/xiaoban-data-boundary.md §7 Agent 系统提示词(完", - "recallCount": 4, + "recallCount": 5, "dailyCount": 0, "groundedCount": 0, - "totalScore": 4, + "totalScore": 5, "maxScore": 1, "firstRecalledAt": "2026-05-28T20:51:03.908Z", - "lastRecalledAt": "2026-05-30T12:39:47.963Z", + "lastRecalledAt": "2026-05-31T23:25:36.480Z", "queryHashes": [ "f22544a8757c", "c3cb24be8923", "e3108bd5b94c", - "340c1d46da26" + "340c1d46da26", + "cf12fd62a5e5" ], "recallDays": [ "2026-05-29", - "2026-05-30" + "2026-05-30", + "2026-06-01" ], "conceptTags": [ "check-call", @@ -677,22 +687,24 @@ "endLine": 458, "source": "memory", "snippet": "3. **check_call→run**(`sync_juguang_notes.py` `sheet_write_range`):`subprocess.check_call` 不支持 `input=`, 改用 `subprocess.run(..., check=True, input=...)` 1b 单天验证通过:`sync_juguang_agents.py --start 2026-05-27 --end 2026-05-27` 写入 12 个单元格成功。全量 27 天在子进程跑,结果待出。 ### 17:12 数据服务边界规则部署 [陈逸鸫] **文档位置:** `docs/xiaoban-data-boundary.md`(git@github.com:chenyd11/feishu-database.git — 服务器无 SSH key 无法 pull) **三条核心规则(已写入 MEMORY.md):** 1. cron pipeline 和帮同事查数分轨,不能混用同一流程 2. 同事请求默认只读;写生产表 CYFTsu 必须 @陈逸鸫 确认 3. 查数结果写「输出区」副本,不改主表 **操作黑名单:** `pipeline.py` / `sync_*` / `run_juguang_*` / `sheets +write`(生产表) / `--promote` **待办:** 建「大麦查询输出」专用表(待陈逸鸫提供 token) **待办:** 获取 docs/xiaoban-data-boundary.md §7 Agent 系统提示词(完", - "recallCount": 4, + "recallCount": 5, "dailyCount": 0, "groundedCount": 0, - "totalScore": 4, + "totalScore": 5, "maxScore": 1, "firstRecalledAt": "2026-05-28T20:51:03.908Z", - "lastRecalledAt": "2026-05-30T12:39:47.963Z", + "lastRecalledAt": "2026-05-31T23:25:36.480Z", "queryHashes": [ "f22544a8757c", "c3cb24be8923", "e3108bd5b94c", - "340c1d46da26" + "340c1d46da26", + "cf12fd62a5e5" ], "recallDays": [ "2026-05-29", - "2026-05-30" + "2026-05-30", + "2026-06-01" ], "conceptTags": [ "check-call", @@ -712,22 +724,24 @@ "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": 5, + "recallCount": 6, "dailyCount": 0, "groundedCount": 0, - "totalScore": 5, + "totalScore": 6, "maxScore": 1, "firstRecalledAt": "2026-05-28T20:51:03.908Z", - "lastRecalledAt": "2026-05-29T13:16:08.062Z", + "lastRecalledAt": "2026-05-31T23:25:36.480Z", "queryHashes": [ "f22544a8757c", "82be33d1f911", "2aa08c6652fb", "f7ae50ae228d", - "3737f6af1445" + "3737f6af1445", + "cf12fd62a5e5" ], "recallDays": [ - "2026-05-29" + "2026-05-29", + "2026-06-01" ], "conceptTags": [ "gpt", @@ -1268,6 +1282,192 @@ "5/5", "5/20" ] + }, + "memory:memory/2026-05-28.md:704:717": { + "key": "memory:memory/2026-05-28.md:704:717", + "path": "memory/2026-05-28.md", + "startLine": 704, + "endLine": 717, + "source": "memory", + "snippet": "**陈逸鸫提到 Cursor 可以写公式** — 待确认他用的是什么工具/API。可能路径:Cursor 用了不同端点(Sheets v3?)、不同 auth 方式、或者直接用 Feishu MCP。 ### ~22:05 日报「公式映射」现状 **事实:** C1HVN2 Section 三当前数字是 `compute_lesson_activation.py` / `pipeline.py step 3` 写入的静态值,不是真正的 Feishu 公式。API 层无法写入公式。 **正确的「公式映射」方案:** 不强求单元格公式,而是 pipeline 脚本作为\"公式\"—从源表取数→计算→写入。Section 一/二的现有自动化就是这样运行的。需验证 pipeline step 3 是否已覆盖新增的当日行课/7天首课行,如果没覆盖就加进去。 ### 当前 C1HVN2 待修复项 1. Row 18(企微新增)TEXT 格式 → 需陈逸鸫手动「清除格式」 2. Section 四(销转情况)Row 26-29 数字也是 text 格式 → 同样需手动清除 3. 当日行课/7天首课数据 → pipeline 脚本需覆盖 Section 三写入", + "recallCount": 1, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 1, + "maxScore": 1, + "firstRecalledAt": "2026-05-31T23:25:36.480Z", + "lastRecalledAt": "2026-05-31T23:25:36.480Z", + "queryHashes": [ + "679cdd7bd3a8" + ], + "recallDays": [ + "2026-06-01" + ], + "conceptTags": [ + "待确认他用的是什么工具/api", + "compute-lesson-activation.py", + "pipeline.py", + "一/二的现有自动化就是这样运行的", + "是否已覆盖新增的当日行课/7天首课行", + "26-29", + "当日行课/7天首课数据", + "提到" + ] + }, + "memory:memory/2026-05-28.md:596:624": { + "key": "memory:memory/2026-05-28.md:596:624", + "path": "memory/2026-05-28.md", + "startLine": 596, + "endLine": 624, + "source": "memory", + "snippet": "6. **build_pipeline 脚本** — 新增 `scripts/compute_lesson_activation.py`(PG→2aNzzy V/W) **关键数据源映射:** 进线=2aNzzy C列日期 → 用户ID=2aNzzy → PG user_course_detail 首课日期 → 比对同天 → 写回 2aNzzy V/W ### 待办汇总 1. 📋 陈逸鸫确认行课转化改动方案 → 一口气改 6 处 2. 📋 王虹茗 user_id 获取(需她发消息或陈逸鸫截图) 3. 📋 数据转发王虹茗 + 写入大麦查询输出表 fd42b8 4. 📋 销售看板 build 挂住问题排查 5. 📋 Image2 生图任务执行 6. ⏳ 全量 pipeline 聚光验证(子进程) ### 20:52 行课转化全量改动完成 [陈逸鸫确认] 行课记录新增指标:当日进线→当天行课 + 7天首课,6处改动已完成4处: | # | 位置 | 改动 | 状态 | |---|------|------|------| | 1 | 2aNzzy | V/W/X 三列(首课日期/当日行课/7日内行课) | ✅ | | 2 | 3PRySY | AE-AH 四列(当日行课/当日行课率/7日内首课/7日内首课率)| ✅ | | 3 | C1HVN2 | 合并 三+五 →「线索→行课转化」| ✅ | | 4 | Base | 行课销售月(4)/5月漏斗(3)/销转销售月(2) 加字段 | ⚠️ bot权限不足,需手动 | | 5 | funnel-daily 看板 |", + "recallCount": 1, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 1, + "maxScore": 1, + "firstRecalledAt": "2026-05-31T23:25:36.480Z", + "lastRecalledAt": "2026-05-31T23:25:36.480Z", + "queryHashes": [ + "679cdd7bd3a8" + ], + "recallDays": [ + "2026-06-01" + ], + "conceptTags": [ + "build-pipeline", + "v/w", + "user-course-detail", + "user-id", + "v/w/x", + "首课日期/当日行课/7日内行课", + "ae-ah", + "当日行课/当日行课率/7日内首课/7日内首课率" + ] + }, + "memory:memory/2026-05-28.md:1:36": { + "key": "memory:memory/2026-05-28.md:1:36", + "path": "memory/2026-05-28.md", + "startLine": 1, + "endLine": 36, + "source": "memory", + "snippet": "# 2026-05-28 工作日志 ## 品牌更名与定位升级 [Cris确认] - 姓名:小斑 → **大麦** - 定位:AI班主任 → **增长营销分析师** - 核心职能:增长数据分析、营销效果评估、转化漏斗分析、商业化洞察 - Emoji:📚 → 🌾 - 已更新文件:IDENTITY.md、AGENTS.md(@规则同步变更)、MEMORY.md - SOUL.md 无需改动(行为方法论为通用框架) ### 16:20 pipeline 非聚光部分验证完成 **lark-cli wrapper v0.3 支持的 action:** | 类别 | action | 状态 | |------|--------|------| | sheets | +read, +write, +append, +info, +meta | ✅ | | sheets | +create-sheet, +delete-sheet | ✅ | | sheets | +batch-set-style (stub) | ✅ | | sheets | +merge-cells, +unmerge-cells | ✅ | | sheets | +update-dimension | ✅ | | bitable | +app, +tables, +records, +create, +update | ✅ | | auth | status | ✅ | | im | +messages-send (stub) | ✅ | **pipeline 试跑结果(--dry-run):** | 步骤", + "recallCount": 1, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 1, + "maxScore": 1, + "firstRecalledAt": "2026-05-31T23:25:36.480Z", + "lastRecalledAt": "2026-05-31T23:25:36.480Z", + "queryHashes": [ + "679cdd7bd3a8" + ], + "recallDays": [ + "2026-06-01" + ], + "conceptTags": [ + "identity.md", + "agents.md", + "memory.md", + "soul.md", + "lark-cli", + "v0.3", + "create-sheet", + "delete-sheet" + ] + }, + "memory:memory/2026-05-28.md:359:394": { + "key": "memory:memory/2026-05-28.md:359:394", + "path": "memory/2026-05-28.md", + "startLine": 359, + "endLine": 394, + "source": "memory", + "snippet": "# 2026-05-28 工作日志 ## 品牌更名与定位升级 [Cris确认] - 姓名:小斑 → **大麦** - 定位:AI班主任 → **增长营销分析师** - 核心职能:增长数据分析、营销效果评估、转化漏斗分析、商业化洞察 - Emoji:📚 → 🌾 - 已更新文件:IDENTITY.md、AGENTS.md(@规则同步变更)、MEMORY.md - SOUL.md 无需改动(行为方法论为通用框架) ### 16:20 pipeline 非聚光部分验证完成 **lark-cli wrapper v0.3 支持的 action:** | 类别 | action | 状态 | |------|--------|------| | sheets | +read, +write, +append, +info, +meta | ✅ | | sheets | +create-sheet, +delete-sheet | ✅ | | sheets | +batch-set-style (stub) | ✅ | | sheets | +merge-cells, +unmerge-cells | ✅ | | sheets | +update-dimension | ✅ | | bitable | +app, +tables, +records, +create, +update | ✅ | | auth | status | ✅ | | im | +messages-send (stub) | ✅ | **pipeline 试跑结果(--dry-run):** | 步骤", + "recallCount": 1, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 1, + "maxScore": 1, + "firstRecalledAt": "2026-05-31T23:25:36.480Z", + "lastRecalledAt": "2026-05-31T23:25:36.480Z", + "queryHashes": [ + "679cdd7bd3a8" + ], + "recallDays": [ + "2026-06-01" + ], + "conceptTags": [ + "identity.md", + "agents.md", + "memory.md", + "soul.md", + "lark-cli", + "v0.3", + "create-sheet", + "delete-sheet" + ] + }, + "memory:memory/2026-05-28.md:641:671": { + "key": "memory:memory/2026-05-28.md:641:671", + "path": "memory/2026-05-28.md", + "startLine": 641, + "endLine": 671, + "source": "memory", + "snippet": "- compute_lesson_activation.py 进 cron 后每日自动刷新 **待办:** Base 字段需陈逸鸫在 UI 手动添加(行课销售月/5月漏斗/销转销售月各加 2-4 个数字字段) ## funnel-daily 看板行课激活指标 — 待修复 (21:49) ### Bug 1: `_read_activations` 未过滤汇总行 `snapshot_funnel_daily.py` 读 2aNzzy O2:X4000 时,只检查 O/P 是否有值,没检查 Q (用户ID),导致汇总行(无 user_id)也被计入。 - **修复**: 加 `if not uid: continue`,只统计有 user_id 的个体小溪记录 ### Bug 2: key 不匹配 `collect_snapshot` 合计用 `\"week_lesson\"`,但 `_read_activations` 存的是 `\"week\"`,导致 合计 wk=0。 - **修复**: 统一用 `\"week\"` key ### Bug 3: X列数据 O列分组失真 X列 (7日内行课) 是基于 B列(进线日期) 计算的,但按 O列(行课月) 聚合会导致跨月用户重复计入。5月 O列=505行但个体记录只有约108条/月。 - **初步方案**: 先按 O列+Q列过滤(过滤汇总行),暂时接受 O列分组。后续可考虑 B列分组。 ### 待执行 (下次回话) ```bash # 1. 修复 snapshot_funnel_daily.py 两处 bug # 2. 重建 sn", + "recallCount": 1, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 1, + "maxScore": 1, + "firstRecalledAt": "2026-05-31T23:27:40.582Z", + "lastRecalledAt": "2026-05-31T23:27:40.582Z", + "queryHashes": [ + "0be022b45645" + ], + "recallDays": [ + "2026-06-01" + ], + "conceptTags": [ + "compute-lesson-activation.py", + "行课销售月/5月漏斗/销转销售月各加", + "2-4", + "funnel-daily", + "read-activations", + "snapshot-funnel-daily.py", + "o/p", + "user-id" + ] + }, + "memory:memory/2026-05-28.md:618:649": { + "key": "memory:memory/2026-05-28.md:618:649", + "path": "memory/2026-05-28.md", + "startLine": 618, + "endLine": 649, + "source": "memory", + "snippet": "| 4 | Base | 行课销售月(4)/5月漏斗(3)/销转销售月(2) 加字段 | ⚠️ bot权限不足,需手动 | | 5 | funnel-daily 看板 | 加行课转化指标 | 📋 待 build 脚本改 | | 6 | build 脚本 | compute_lesson_activation.py | ✅ | **合并后的 C1HVN2 Section 三:** ``` 三、线索→行课转化(5月27日) 指标 小龙 吴迪 Bob Tom 日汇总 企微新增 13 6 14 15 48 当日行课 0 0 0 0 0 当日行课率 0% 0% 0% 0% 0% 7天线索→首课 1 2 2 2 10 7天首课率 7.7% 33.3% 14.3% 13.3% 20.8% ``` **5月全月数据(3PRySY 公式自动计算):** Bob 当日行课率 7.4% > Tom 3.7% > 其余 0%;7天首课率 吴迪 28.6% > 小龙 14.3% **关键实现细节:** - 2aNzzy V: PG chapter_settlement_data 最早日期 - 2aNzzy W: 进线当天有 chapter 活动=1 - 2aNzzy X: 进线 7 天内有 chapter 活动=1 - 3PRySY", + "recallCount": 1, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 1, + "maxScore": 1, + "firstRecalledAt": "2026-05-31T23:27:40.582Z", + "lastRecalledAt": "2026-05-31T23:27:40.582Z", + "queryHashes": [ + "0be022b45645" + ], + "recallDays": [ + "2026-06-01" + ], + "conceptTags": [ + "funnel-daily", + "compute-lesson-activation.py", + "7.7", + "33.3", + "14.3", + "13.3", + "20.8", + "7.4" + ] } } } diff --git a/output/角色id_33943_导出时间_20260531.xlsx b/output/角色id_33943_导出时间_20260531.xlsx new file mode 100644 index 0000000..a7f1d1a Binary files /dev/null and b/output/角色id_33943_导出时间_20260531.xlsx differ diff --git a/output/角色id_35000_导出时间_20260531.xlsx b/output/角色id_35000_导出时间_20260531.xlsx new file mode 100644 index 0000000..be72e3f Binary files /dev/null and b/output/角色id_35000_导出时间_20260531.xlsx differ diff --git a/output/角色id_35946_导出时间_20260531.xlsx b/output/角色id_35946_导出时间_20260531.xlsx new file mode 100644 index 0000000..bb7c881 Binary files /dev/null and b/output/角色id_35946_导出时间_20260531.xlsx differ diff --git a/scripts/upload_server.py b/scripts/upload_server.py new file mode 100644 index 0000000..3510e4b --- /dev/null +++ b/scripts/upload_server.py @@ -0,0 +1,200 @@ +#!/usr/bin/env python3 +"""简易文件上传服务 - 浏览器打开即可拖拽上传""" +import os +import cgi +import html +from http.server import HTTPServer, BaseHTTPRequestHandler + +UPLOAD_DIR = os.path.expanduser("~/.openclaw/workspace-xiaoban/tmp/uploads") +PORT = 18888 + +HTML = r""" + +
+ + +拖拽文件到下方区域 或 点击选择文件
+点击或拖拽文件到此处上传
+上传中...
+ +