auto backup 2026-05-27 08:10:02

This commit is contained in:
--git_token 2026-05-27 08:10:02 +08:00
parent 14d7a4ac63
commit 179c6d95e4
13 changed files with 201 additions and 29 deletions

View File

@ -14,4 +14,4 @@ user-feedback-collector c0320451bf7ea0ce3d8ceaa603ae0a7b55c373c048363a5142258a4c
user-feedback-data-source a95eb9142f3019fd193c46f89147dc7e0bf01dfe250202565a86f8bc52f37b13
user-feedback-processor 61783a8e9f03a973c187b359a87749ad1993dc71f8364b0a853d8b3ff64c75e8
feishu-group-msg-sync 1b581de76d419e6a33db0836125efc16ef2c972013fcae6f08c03aa7e2276445
feishu-feedback-sync f00631ca2f9ed68c139b6dd0b08992bc937576db27c001aac72a3edb3a2e108e
feishu-feedback-sync 9c9ca1f0c42a289e037289cd394299b7debf7e240d3b30429899da42b601d953

View File

@ -1 +1 @@
1647
1674

View File

@ -19,3 +19,5 @@
{"type":"memory.recall.recorded","timestamp":"2026-05-25T02:22:57.258Z","query":"小葵小葵群 问题反馈 发送消息 定时任务 5月23日","resultCount":1,"results":[{"path":"memory/2026-04-18.md","startLine":1,"endLine":5,"score":1}]}
{"type":"memory.recall.recorded","timestamp":"2026-05-25T02:22:57.259Z","query":"crontab 定时 上午10点 反馈 群发","resultCount":5,"results":[{"path":"memory/2026-05-21.md","startLine":58,"endLine":77,"score":1},{"path":"memory/2026-05-09.md","startLine":17,"endLine":37,"score":1},{"path":"memory/2026-05-21.md","startLine":35,"endLine":64,"score":1},{"path":"memory/2026-05-21.md","startLine":1,"endLine":26,"score":1},{"path":"memory/2026-05-21.md","startLine":22,"endLine":42,"score":1}]}
{"type":"memory.recall.recorded","timestamp":"2026-05-25T07:11:25.527Z","query":"微信反馈 全链路 cron 采集 整理 归纳 分发","resultCount":3,"results":[{"path":"memory/2026-05-25.md","startLine":21,"endLine":42,"score":1},{"path":"memory/2026-05-25.md","startLine":38,"endLine":44,"score":1},{"path":"memory/2026-05-22.md","startLine":129,"endLine":158,"score":1}]}
{"type":"memory.recall.recorded","timestamp":"2026-05-26T03:40:13.634Z","query":"微信飞书问题汇总 小葵小葵群 发送汇总","resultCount":3,"results":[{"path":"memory/2026-05-25.md","startLine":21,"endLine":42,"score":1},{"path":"memory/2026-05-25.md","startLine":38,"endLine":44,"score":1},{"path":"memory/2026-05-22.md","startLine":129,"endLine":158,"score":1}]}
{"type":"memory.recall.recorded","timestamp":"2026-05-26T03:40:24.708Z","query":"小葵小葵群 chat_id 分发消息群","resultCount":1,"results":[{"path":"memory/2026-04-18.md","startLine":1,"endLine":5,"score":1}]}

View File

@ -1,6 +1,6 @@
{
"version": 1,
"updatedAt": "2026-05-25T07:11:25.527Z",
"updatedAt": "2026-05-26T03:40:24.708Z",
"entries": {
"memory:memory/2026-04-18.md:1:5": {
"key": "memory:memory/2026-04-18.md:1:5",
@ -9,26 +9,28 @@
"endLine": 5,
"source": "memory",
"snippet": "# 2026-04-18 工作日志 ## 术语共识 [李若松确认] 术语「飞书反馈消息数据库」默认指代用户反馈收集技能中的飞书内部测试反馈MySQL数据表 `vala_test.lark_group_message`存储「内容测试问题反馈」群oc_fabff7672e62a9ced7b326ee4a286c26的同步消息数据。",
"recallCount": 6,
"recallCount": 7,
"dailyCount": 0,
"groundedCount": 0,
"totalScore": 6,
"totalScore": 7,
"maxScore": 1,
"firstRecalledAt": "2026-04-30T03:47:21.989Z",
"lastRecalledAt": "2026-05-25T02:22:57.258Z",
"lastRecalledAt": "2026-05-26T03:40:24.708Z",
"queryHashes": [
"353f9765c086",
"a6b740c99377",
"9625ed0029fd",
"f865295b9ac7",
"42fe8210f22c",
"81f7a2647922"
"81f7a2647922",
"261597c52d5b"
],
"recallDays": [
"2026-04-30",
"2026-05-06",
"2026-05-07",
"2026-05-25"
"2026-05-25",
"2026-05-26"
],
"conceptTags": [
"vala-test.lark-group-message",
@ -887,18 +889,20 @@
"endLine": 42,
"source": "memory",
"snippet": "- `update_summary_doc_as_children()` 默认 title_prefix 从 `\"\"` 改为 `\"飞书-\"` - `create_child_doc()` 日期提取兼容 `飞书-` / `微信-` 前缀 - `dispatch_summary_to_chat()` 消息标题和链接同步更新 - `get_today_doc_obj_token()`、`--apply-ai` 路径、步骤7分发 的标题格式全部更新 ### 补跑历史数据 - 飞书 5/223条、5/231条AI归纳回写成功 + 自动分发到群聊 - 飞书 5/24当天无飞书群新数据跳过 - 微信 5/2223条、5/2313条、5/2429条AI归纳回写成功 + 自动分发 ### 知识库文档重命名 - 13个飞书历史文档5/6-5/23从 `{date} 问题反馈` 重命名为 `飞书-{date} 用户反馈问题归纳` ## 新增逻辑:飞书/微信文档标题渠道区分 - [刘新玉需求] 飞书文档标题加 `飞书-` 前缀以便与微信区分 - 飞书格式:`飞书-{date} 用户反馈问题归纳` - 微信格式:保持 `微信-{date} 问题反馈`(由 `sync_wechat_feedback.py` 传入 `title_prefix=\"微信-\"` - `update_summary_doc_as_children()` 默认 `title_prefix=\"飞书-\"`,微信调用时显式覆盖为 `\"微信-\"` - `create_child_doc()` 日期提取已兼",
"recallCount": 1,
"recallCount": 2,
"dailyCount": 0,
"groundedCount": 0,
"totalScore": 1,
"totalScore": 2,
"maxScore": 1,
"firstRecalledAt": "2026-05-25T07:11:25.527Z",
"lastRecalledAt": "2026-05-25T07:11:25.527Z",
"lastRecalledAt": "2026-05-26T03:40:13.634Z",
"queryHashes": [
"1e9d4a024a31"
"1e9d4a024a31",
"442660038a9b"
],
"recallDays": [
"2026-05-25"
"2026-05-25",
"2026-05-26"
],
"conceptTags": [
"update-summary-doc-as-children",
@ -918,18 +922,20 @@
"endLine": 44,
"source": "memory",
"snippet": "- `update_summary_doc_as_children()` 默认 `title_prefix=\"飞书-\"`,微信调用时显式覆盖为 `\"微信-\"` - `create_child_doc()` 日期提取已兼容两种前缀strip `飞书-` 或 `微信-` 再解析) ## 注意事项 - 今天5/25的反馈数据将在明天 10:00 正常走全流程 - `ai_summarize_feedback.py` 中 `apply_descriptions` 修复后需注意:微信渠道需要 `--date` 参数,飞书渠道 `--date` 可选",
"recallCount": 1,
"recallCount": 2,
"dailyCount": 0,
"groundedCount": 0,
"totalScore": 1,
"totalScore": 2,
"maxScore": 1,
"firstRecalledAt": "2026-05-25T07:11:25.527Z",
"lastRecalledAt": "2026-05-25T07:11:25.527Z",
"lastRecalledAt": "2026-05-26T03:40:13.634Z",
"queryHashes": [
"1e9d4a024a31"
"1e9d4a024a31",
"442660038a9b"
],
"recallDays": [
"2026-05-25"
"2026-05-25",
"2026-05-26"
],
"conceptTags": [
"update-summary-doc-as-children",
@ -949,18 +955,20 @@
"endLine": 158,
"source": "memory",
"snippet": "- 步骤2姓氏 + 1个中文字符模式匹配排除内容词白名单文件/资源/游戏/动画/设计等50+词) - 替换为\"相关人员\" ### 修复效果(簇 #7 | 修复前 | 修复后 | |--------|--------| | \"角色江涛的spine动画中眼睛设计应为睁开但实际显示为闭眼。\" | \"Spine动画中角色眼睛呈现闭眼状态与设计不符。\" | ## 刘新玉 - 反馈流程完整概览5/22 12:00 ### 全链路三层架构 ``` 采集层 → 每5分钟(飞书群同步) / 每分钟(微信群导出+P0检测) 汇总层 → 每天 10:00(飞书) 10:02(微信) 聚类+归纳+写入知识库 AI层 → 每天 10:05(飞书) 10:07(微信) DeepSeek生成描述+回写+分发群聊 ``` ### 时间线 | 时间 | 飞书 | 微信 | |------|------|------| | 10:00 | sync_feishu_feedback (占位符,不分发) | — | | 10:02 | — | sync_wechat_feedback (占位符,不分发) | | 10:05 | ai_summarize_feedback (回写+分发) | — | | 10:07 | — | ai_summarize_feedback --channel wechat (回写+分发) | ## 刘新玉 - 微信反馈同步系统搭建5/22 下午) ### 背景 刘新玉要求微信用户反馈流程与飞书一致(收集→整理→归纳→分发),之前微信只有 M",
"recallCount": 1,
"recallCount": 2,
"dailyCount": 0,
"groundedCount": 0,
"totalScore": 1,
"totalScore": 2,
"maxScore": 1,
"firstRecalledAt": "2026-05-25T07:11:25.527Z",
"lastRecalledAt": "2026-05-25T07:11:25.527Z",
"lastRecalledAt": "2026-05-26T03:40:13.634Z",
"queryHashes": [
"1e9d4a024a31"
"1e9d4a024a31",
"442660038a9b"
],
"recallDays": [
"2026-05-25"
"2026-05-25",
"2026-05-26"
],
"conceptTags": [
"文件/资源/游戏/动画/设计等50",

40
memory/2026-05-26.md Normal file
View File

@ -0,0 +1,40 @@
# 2026-05-26 工作日志
## 刘新玉 - 微信/飞书问题汇总分发排查与修复
### 问题
刘新玉询问是否向"小葵小葵"群发送了昨天5/25的问题汇总。
### 排查结果
- **飞书 5/25**:「内容测试问题反馈」群昨天无新消息,飞书 crontab 10:00 输出 `✅ 无新数据,无需同步`,无需分发
- **微信 5/25**:数据库有 17 条消息,但大部分是单条消息,仅 1 个有效簇≥2条AI 归纳为"无明确问题",属于无效反馈
### 修复的 Bug均在本次会话中修复
**Bug 1`sync_wechat_feedback.py` 文档标题不匹配**
- 文件:`scripts/sync_wechat_feedback.py`
- 问题:`--apply-ai` 路径搜索子文档时标题为 `微信-{date} 问题反馈`,但实际创建的是 `微信-{date} 用户反馈问题归纳`,导致创建后找不到文档
- 修复:两处标题改为 `微信-{date} 用户反馈问题归纳`apply-ai 路径 + 步骤7分发路径
**Bug 2`dispatch_summary_to_chat` 标题前缀**
- 文件:`skills/feishu-feedback-sync/scripts/sync_feishu_feedback.py`
- 问题title 硬编码 `飞书-{day_label}`,微信调用时 day_label 已含 `微信-` 前缀,导致出现 `飞书-微信-{date}` 双重前缀
- 修复:检测 day_label 是否已含前缀,已含则复用,否则加 `飞书-`
**Bug 3姓名脱敏正则误伤**
- 文件:`scripts/ai_summarize_feedback.py`
- 问题:`strip_names()` 中 `[姓][一-鿿]` 匹配过于宽泛,致 `程序`→`相关人员`、`常完`→`相关人员`,破坏正常描述
- 修复content_words 排除词扩充(程序、方式、正常、完成、加载、原生等)
**Bug 4过滤后空消息仍发送**
- 文件:`skills/feishu-feedback-sync/scripts/sync_feishu_feedback.py`
- 问题:`dispatch_summary_to_chat` 过滤 `- 无明确问题` 后,若只剩标题无实质条目,仍会发送空消息
- 修复:增加 `has_items` 检查,无 `- ` 开头的内容行则不发送
### 操作记录
- 手动补跑微信 5/25 apply-ai 回写知识库
- 撤回小葵小葵群中两条无效消息(`om_x100b6e653633aca4b268daf5d0579e7`、`om_x100b6e65e7cb90b8b3d97c2a9fc5f07`
### 刘新玉指令12:03
- 确认记住今天的变动
- 明确规则:微信反馈中"无明确问题"的簇不分发到小葵小葵群

View File

@ -0,0 +1,9 @@
{
"date": "2026-05-25",
"descriptions": [
{
"index": 1,
"description": "无明确问题"
}
]
}

View File

@ -0,0 +1,69 @@
{
"date": "2026-05-25",
"descriptions": [
{
"index": 1,
"description": "APP端磨耳朵功能存在较多适配问题。"
},
{
"index": 2,
"description": "无明确问题"
},
{
"index": 3,
"description": "在L2S2U14第五节课知识巩固环节从第一题开始持续播放警报声。"
},
{
"index": 4,
"description": "用户反馈进入关卡时出现闪退。"
},
{
"index": 5,
"description": "无明确问题"
},
{
"index": 6,
"description": "无明确问题"
},
{
"index": 7,
"description": "无明确问题"
},
{
"index": 8,
"description": "学而思平板在第四单元第四节中,孩子回答正确后系统仍持续提示重新做,无法正常完成。"
},
{
"index": 9,
"description": "无明确问题"
},
{
"index": 10,
"description": "无明确问题"
},
{
"index": 11,
"description": "小程序熏听播放时声音断断续续"
},
{
"index": 12,
"description": "无明确问题"
},
{
"index": 13,
"description": "H5端无法调用小程序原生音频API和后台托管能力"
},
{
"index": 14,
"description": "无明确问题"
},
{
"index": 15,
"description": "采用webview加载方式导致内存消耗大"
},
{
"index": 16,
"description": "无明确问题"
}
]
}

View File

@ -0,0 +1,36 @@
{
"date": "2026-05-25",
"total_clusters": 1,
"clusters": [
{
"index": 1,
"cluster_id": "7499191672818531430",
"location": {
"端": "未知",
"环节": "未知",
"课程": "",
"角色/组件": ""
},
"priority": "P2",
"priority_detail": "",
"category": "其他问题",
"conclusion": "**当前问题排查结论:** 暂无结论排查中",
"messages": [
{
"sender": "一_FVision",
"content": "[表情]",
"msg_type": "sticker",
"media_url": "",
"time": "2026-05-25 19:40:10"
},
{
"sender": "瓦拉英语-露露班班早10晚7",
"content": "[表情]",
"msg_type": "sticker",
"media_url": "",
"time": "2026-05-25 19:40:24"
}
]
}
]
}

Binary file not shown.

View File

@ -175,6 +175,10 @@ def strip_names(text, cluster=None):
'注册','打开','关闭','更新','调试','运行','启动','停止',
'通过','失败','成功','完成','开始','结束','使用','操作',
'调整','优化','修改','增加','删除','添加','移除','切换',
'程序','方式','相关','进入','平板','第四','单元','原生',
'声音','断断','续续','后台','托管','无法','熏听','加载',
'消耗','容器','时候','较多','知识','巩固','环节','第一',
'播放','警报','正确','系统','操作','权限','人员','内核',
}
def _replace(m):
name = m.group(0)

View File

@ -187,7 +187,7 @@ def main():
print(f" 🔄 微信 #{old_idx}→#{new_idx}: {placeholder}{desc[:50]}...")
# 回写知识库子文档
title = f"微信-{date_str} 问题反馈"
title = f"微信-{date_str} 用户反馈问题归纳"
nodes = fsf.list_child_nodes()
node_info = nodes.get(title, {})
obj_token = node_info.get("obj_token")
@ -287,7 +287,7 @@ def main():
if do_summary and not args.skip_dispatch and not args.ai_placeholders:
print(f"\n📨 微信步骤7问题分发...")
child_nodes = fsf.list_child_nodes()
child_title = f"微信-{date_str} 问题反馈"
child_title = f"微信-{date_str} 用户反馈问题归纳"
child_info = child_nodes.get(child_title, {})
child_nt = child_info.get("node_token", fsf.SUMMARY_PARENT_NODE)
child_url = f"https://makee-interactive.feishu.cn/wiki/{child_nt}"

View File

@ -1434,8 +1434,10 @@ def dispatch_summary_to_chat(day_label, summary_text, p0_only=False, doc_url=Non
归纳_lines.append(line)
归纳_content = "\n".join(归纳_lines).strip()
if not 归纳_content:
print(" ⚠️ 无归纳内容可分发")
# 检查是否有实质问题描述(非纯标题/空段落)
has_items = any(line.strip().startswith("- ") for line in 归纳_lines)
if not 归纳_content or not has_items:
print(" ⚠️ 无归纳内容可分发(已过滤无明确问题条目)")
return False
# 检查是否有 P0 问题
@ -1453,7 +1455,9 @@ def dispatch_summary_to_chat(day_label, summary_text, p0_only=False, doc_url=Non
# 构建富文本消息post 格式)
# P0 @跟在标题行后面,不放单独段落
title = f"📋 飞书-{day_label} 用户反馈问题归纳"
# day_label 可能已含前缀(如 "微信-2026-05-25"),避免重复前缀
label_prefix = "" if day_label.startswith(("微信-", "飞书-")) else "飞书-"
title = f"📋 {label_prefix}{day_label} 用户反馈问题归纳"
# 飞书 post 消息不支持 HTML 标签的 at需要用富文本 tag
# 把归纳内容按 P0/P1/P2/P3 段落拆分P0 标题行后追加 at tag
@ -1486,7 +1490,7 @@ def dispatch_summary_to_chat(day_label, summary_text, p0_only=False, doc_url=Non
summary_doc_url = doc_url or f"https://makee-interactive.feishu.cn/wiki/{SUMMARY_PARENT_NODE}"
content_parts.append([
{"tag": "text", "text": "\n📄 详细文档:"},
{"tag": "a", "text": f"飞书-{day_label} 用户反馈问题归纳", "href": summary_doc_url}
{"tag": "a", "text": f"{label_prefix}{day_label} 用户反馈问题归纳", "href": summary_doc_url}
])
post_content = json.dumps({