From e603621af7721227bcfce098747fc4cf9992d150 Mon Sep 17 00:00:00 2001 From: --git_token Date: Fri, 12 Jun 2026 08:10:01 +0800 Subject: [PATCH] auto backup 2026-06-12 08:10:01 --- .vala_skill_hashes | 2 +- .../ai_descriptions_feishu_2026-06-10.json | 9 + .../ai_descriptions_wechat_2026-06-10.json | 17 + .../cluster_context_2026-06-06.json | 12 +- .../cluster_context_2026-06-08.json | 376 +++++------ .../cluster_context_2026-06-10.json | 37 ++ .../wechat_cluster_context_2026-06-06.json | 608 ++++++++++++++++++ .../wechat_cluster_context_2026-06-08.json | 550 ++++++++++++++++ .../wechat_cluster_context_2026-06-09.json | 448 +++++++++++++ .../wechat_cluster_context_2026-06-10.json | 70 ++ .../飞书反馈_2026-06-11.xlsx | Bin 0 -> 8745 bytes scripts/ai_summarize_feedback.py | 71 +- scripts/refix_priority_and_summary.py | 284 ++++++++ scripts/sync_wechat_feedback.py | 34 +- .../priority_classifier.cpython-312.pyc | Bin 10662 -> 11120 bytes .../sync_feishu_feedback.cpython-312.pyc | Bin 85315 -> 86400 bytes .../scripts/priority_classifier.py | 4 +- .../scripts/sync_feishu_feedback.py | 20 +- 18 files changed, 2326 insertions(+), 216 deletions(-) create mode 100644 output/daily_feedback/ai_descriptions_feishu_2026-06-10.json create mode 100644 output/daily_feedback/ai_descriptions_wechat_2026-06-10.json create mode 100644 output/daily_feedback/cluster_context_2026-06-10.json create mode 100644 output/daily_feedback/wechat_cluster_context_2026-06-06.json create mode 100644 output/daily_feedback/wechat_cluster_context_2026-06-08.json create mode 100644 output/daily_feedback/wechat_cluster_context_2026-06-09.json create mode 100644 output/daily_feedback/wechat_cluster_context_2026-06-10.json create mode 100644 output/daily_feedback/飞书反馈_2026-06-11.xlsx create mode 100644 scripts/refix_priority_and_summary.py diff --git a/.vala_skill_hashes b/.vala_skill_hashes index f5bf551..6be43dd 100644 --- a/.vala_skill_hashes +++ b/.vala_skill_hashes @@ -14,4 +14,4 @@ user-feedback-data-source a95eb9142f3019fd193c46f89147dc7e0bf01dfe250202565a86f8 user-feedback-processor 61783a8e9f03a973c187b359a87749ad1993dc71f8364b0a853d8b3ff64c75e8 feishu-group-msg-sync 953534cc3d1cf4489060afe1cf10cad75faedd3f2d699ffa7478d178d528dc51 tencent-cos-upload 2505dbc8c7acdaf95f2228598ae12010e09599a25df4319587c4a3109d828053 -feishu-feedback-sync a02609ee2654a4e336aff015261c128c8ebebdcd330bad4b0f0e9fbaf86a0634 +feishu-feedback-sync 13a63f1bbef2804f53c08e2ce59a83909e128a38f2a48216b5ceba09d9e59156 diff --git a/output/daily_feedback/ai_descriptions_feishu_2026-06-10.json b/output/daily_feedback/ai_descriptions_feishu_2026-06-10.json new file mode 100644 index 0000000..2a58097 --- /dev/null +++ b/output/daily_feedback/ai_descriptions_feishu_2026-06-10.json @@ -0,0 +1,9 @@ +{ + "date": "2026-06-10", + "descriptions": [ + { + "index": 1, + "description": "望远鲸端用户语音音量过小导致无法被识别。" + } + ] +} \ No newline at end of file diff --git a/output/daily_feedback/ai_descriptions_wechat_2026-06-10.json b/output/daily_feedback/ai_descriptions_wechat_2026-06-10.json new file mode 100644 index 0000000..39aaa44 --- /dev/null +++ b/output/daily_feedback/ai_descriptions_wechat_2026-06-10.json @@ -0,0 +1,17 @@ +{ + "date": "2026-06-10", + "descriptions": [ + { + "index": 1, + "description": "无明确问题" + }, + { + "index": 2, + "description": "在望远鲸端,用户声音非相关人员导致语音无法被识别出来。" + }, + { + "index": 3, + "description": "无明确问题" + } + ] +} \ No newline at end of file diff --git a/output/daily_feedback/cluster_context_2026-06-06.json b/output/daily_feedback/cluster_context_2026-06-06.json index 5c6fa18..e27f66b 100644 --- a/output/daily_feedback/cluster_context_2026-06-06.json +++ b/output/daily_feedback/cluster_context_2026-06-06.json @@ -21,7 +21,7 @@ "sender": "瓦拉英语-露露班班(早10晚7)", "content": "[图片] fb97abe5012fec2f1f5d64a5c80341a2", "msg_type": "image", - "media_url": "", + "media_url": "https://static.valavala.com/vala_llm/user_feedback/wechat/image/2026-06/54674ee99bd3dc3efa1dd3e367e42788.jpg", "time": "2026-06-06 12:16:45" }, { @@ -43,7 +43,7 @@ "课程": "", "角色/组件": "" }, - "priority": "P2", + "priority": "P1", "priority_detail": "", "category": "语音识别/判分类", "conclusion": "**当前问题排查结论:** 暂无结论排查中", @@ -59,7 +59,7 @@ "sender": "瓦拉英语-益达老师", "content": "[视频] 23秒 size:2480032", "msg_type": "video", - "media_url": "", + "media_url": "https://static.valavala.com/vala_llm/user_feedback/wechat/video/2026-06/b7079ffd30c100811cd5de14a99ba676.mp4", "time": "2026-06-06 12:19:13" }, { @@ -88,7 +88,7 @@ "课程": "", "角色/组件": "" }, - "priority": "P2", + "priority": "P0", "priority_detail": "", "category": "语音识别/判分类", "conclusion": "**当前问题排查结论:** 暂无结论排查中", @@ -156,7 +156,7 @@ "sender": "瓦拉英语-露露班班(早10晚7)", "content": "[图片] d1d7ad847e2294882231fb5aa1bcb184", "msg_type": "image", - "media_url": "", + "media_url": "https://static.valavala.com/vala_llm/user_feedback/wechat/image/2026-06/b177a0683df22fd81a2398476335a548.jpg", "time": "2026-06-06 12:34:03" }, { @@ -184,7 +184,7 @@ "sender": "瓦拉英语-露露班班(早10晚7)", "content": "[图片] dd75e7324335a09bd0eb1c0417331999", "msg_type": "image", - "media_url": "", + "media_url": "https://static.valavala.com/vala_llm/user_feedback/wechat/image/2026-06/4418edee6e6e5fa8ca6610e2c4eb3cd6.jpg", "time": "2026-06-06 12:37:56" }, { diff --git a/output/daily_feedback/cluster_context_2026-06-08.json b/output/daily_feedback/cluster_context_2026-06-08.json index 351bda6..95eceb4 100644 --- a/output/daily_feedback/cluster_context_2026-06-08.json +++ b/output/daily_feedback/cluster_context_2026-06-08.json @@ -5,193 +5,6 @@ { "index": 1, "_idx": 1, - "cluster_id": "4265551721015433998", - "location": { - "端": "iPad", - "环节": "未知", - "课程": "", - "角色/组件": "" - }, - "priority": "P2", - "priority_detail": "", - "category": "其他问题", - "conclusion": "**当前问题排查结论:** 暂无结论排查中", - "messages": [ - { - "sender": "瓦拉英语-尼克老师", - "content": "苹果平板,用户更新完一直卡在这动不了", - "msg_type": "text", - "media_url": "", - "time": "2026-06-08 12:06:11" - }, - { - "sender": "嘿哈", - "content": "@瓦拉英语-尼克老师 这个用户的设备信息发一下吧,是ipad 几,我这边后台没有看到他登录成功过\n ↳ 回复 瓦拉英语-尼克老师: 苹果平板,用户更新完一直卡在这动不了", - "msg_type": "link", - "media_url": "", - "time": "2026-06-08 16:48:27" - }, - { - "sender": "瓦拉英语-尼克老师", - "content": "[视频] 15秒 size:3237246", - "msg_type": "video", - "media_url": "", - "time": "2026-06-08 12:06:11" - }, - { - "sender": ".oO(王_计)Oo.", - "content": "重启应用还是这样么?\n提供一下用户 手机号", - "msg_type": "text", - "media_url": "", - "time": "2026-06-08 12:21:14" - }, - { - "sender": "瓦拉英语-尼克老师", - "content": "@.oO(王_计)Oo. 重启还是这样的老师\n ↳ 回复 .oO(王_计)Oo.: 重启应用还是这样么?\n提供一下用户 手机号", - "msg_type": "link", - "media_url": "", - "time": "2026-06-08 16:37:29" - }, - { - "sender": ".oO(王_计)Oo.", - "content": "@瓦拉英语-尼克老师 让用户删包重装一下吧~", - "msg_type": "text", - "media_url": "", - "time": "2026-06-08 16:48:22" - }, - { - "sender": "嘿哈", - "content": "@kevin  @.oO(王_计)Oo. 两位大佬看一下有没有什么方案解决一下", - "msg_type": "text", - "media_url": "", - "time": "2026-06-08 17:24:35" - }, - { - "sender": "瓦拉英语-尼克老师", - "content": "13726743667", - "msg_type": "text", - "media_url": "", - "time": "2026-06-08 12:32:38" - }, - { - "sender": "嘿哈", - "content": "这个用户我这看貌似不是一个付费用户吧?\n ↳ 回复 瓦拉英语-尼克老师: 13726743667", - "msg_type": "link", - "media_url": "", - "time": "2026-06-08 16:51:57" - } - ] - }, - { - "index": 2, - "_idx": 2, - "cluster_id": "213601797745063364", - "location": { - "端": "未知", - "环节": "未知", - "课程": "", - "角色/组件": "" - }, - "priority": "P2", - "priority_detail": "", - "category": "其他问题", - "conclusion": "**当前问题排查结论:** 暂无结论排查中", - "messages": [ - { - "sender": "加一车香菜", - "content": "[图片] a640ca6f95fbad4cf792f9aee32a427f size:70248", - "msg_type": "image", - "media_url": "", - "time": "2026-06-08 16:24:20" - }, - { - "sender": "加一车香菜", - "content": "然后到这个页面就退不出去了 只能删后台\n ↳ 回复 加一车香菜: @八哥-16619720408 哥,昨天那个家长反馈望远鲸还是收音困难5700...", + "msg_type": "link", + "media_url": "", + "time": "2026-06-10 19:19:44" + } + ] + } + ] +} \ No newline at end of file diff --git a/output/daily_feedback/wechat_cluster_context_2026-06-06.json b/output/daily_feedback/wechat_cluster_context_2026-06-06.json new file mode 100644 index 0000000..ca6beac --- /dev/null +++ b/output/daily_feedback/wechat_cluster_context_2026-06-06.json @@ -0,0 +1,608 @@ +{ + "date": "2026-06-06", + "clusters": [ + { + "index": 1, + "_idx": 1, + "cluster_id": "6841879350545390880", + "message_count": 2, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "瓦拉英语-露露班班(早10晚7)", + "content": "[图片] fb97abe5012fec2f1f5d64a5c80341a2", + "msg_type": "image", + "time": "2026-06-06 12:16:45", + "message_id": "6841879350545390880", + "quote_message_id": "" + }, + { + "sender": "瓦拉英语-露露班班(早10晚7)", + "content": "18518728785辛苦老师帮忙看看这个用户解锁不了u13", + "msg_type": "text", + "time": "2026-06-06 12:16:58", + "message_id": "8053567666566645294", + "quote_message_id": "" + } + ] + }, + { + "index": 2, + "_idx": 2, + "cluster_id": "9201696014569973388", + "message_count": 4, + "priority": "P1", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2);出现频率: 必现;影响范围: 部分用户;动态调整: 升级 1 级", + "category": "语音识别/判分类", + "messages": [ + { + "sender": "嘿哈", + "content": "辛苦让用户截图一下前一个u的状态", + "msg_type": "text", + "time": "2026-06-06 12:19:02", + "message_id": "9201696014569973388", + "quote_message_id": "" + }, + { + "sender": "瓦拉英语-益达老师", + "content": "[视频] 23秒 size:2480032", + "msg_type": "video", + "time": "2026-06-06 12:19:13", + "message_id": "3404358814076367525", + "quote_message_id": "" + }, + { + "sender": "瓦拉英语-益达老师", + "content": "家长反馈经常到读句子的时候就识别不到,要不然就卡住了,辛苦老师帮忙看下,手机号:13635280153", + "msg_type": "text", + "time": "2026-06-06 12:19:36", + "message_id": "7016370731148216079", + "quote_message_id": "" + }, + { + "sender": "嘿哈", + "content": "这个让用户上传一下日志吧,然后确认一下是每次都会识别还是概率性的?\n ↳ 回复 瓦拉英语-益达老师: 家长反馈经常到读句子的时候就识别不到,要不然就卡住了,辛苦老师帮忙看下,手机号:13635280153", + "msg_type": "link", + "time": "2026-06-06 12:20:31", + "message_id": "7077955870958495425", + "quote_message_id": "7016370731148216079" + } + ] + }, + { + "index": 3, + "_idx": 3, + "cluster_id": "2962732773857517573", + "message_count": 3, + "priority": "P0", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2);出现频率: 必现;影响范围: 极少数用户;动态调整: 升级 2 级", + "category": "语音识别/判分类", + "messages": [ + { + "sender": "瓦拉英语-益达老师", + "content": "概率的,有的句子就会遇到这个问题", + "msg_type": "text", + "time": "2026-06-06 12:21:08", + "message_id": "2962732773857517573", + "quote_message_id": "" + }, + { + "sender": "瓦拉英语-益达老师", + "content": "昨晚21:39左右上传过日志了,需要重新上传吗?\n ↳ 回复 嘿哈: 这个让用户上传一下日志吧,然后确认一下是每次都会识别还是概率性的?", + "msg_type": "link", + "time": "2026-06-06 12:22:18", + "message_id": "8754168677508109301", + "quote_message_id": "7077955870958495425" + }, + { + "sender": "嘿哈", + "content": "这个视频之后穿的是吧?", + "msg_type": "text", + "time": "2026-06-06 12:22:52", + "message_id": "6148970854347190291", + "quote_message_id": "" + } + ] + }, + { + "index": 4, + "_idx": 4, + "cluster_id": "9010776978357264927", + "message_count": 9, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "瓦拉英语-益达老师", + "content": "嗯嗯对的~", + "msg_type": "text", + "time": "2026-06-06 12:23:48", + "message_id": "9010776978357264927", + "quote_message_id": "" + }, + { + "sender": "嘿哈", + "content": "这个我周一找研发老师看一下", + "msg_type": "text", + "time": "2026-06-06 12:24:20", + "message_id": "7974284589472489660", + "quote_message_id": "" + }, + { + "sender": "瓦拉英语-益达老师", + "content": "好的,谢啦", + "msg_type": "text", + "time": "2026-06-06 12:25:52", + "message_id": "5483649905854674103", + "quote_message_id": "" + }, + { + "sender": "瓦拉英语-露露班班(早10晚7)", + "content": "[图片] d1d7ad847e2294882231fb5aa1bcb184", + "msg_type": "image", + "time": "2026-06-06 12:34:03", + "message_id": "892344773104079394", + "quote_message_id": "" + }, + { + "sender": "瓦拉英语-露露班班(早10晚7)", + "content": "@八哥-16619720408这个~\n ↳ 回复 嘿哈: 辛苦让用户截图一下前一个u的状态", + "msg_type": "link", + "time": "2026-06-06 12:34:27", + "message_id": "1083014713424507059", + "quote_message_id": "9201696014569973388" + }, + { + "sender": "嘿哈", + "content": "好,我看一下", + "msg_type": "text", + "time": "2026-06-06 12:34:44", + "message_id": "3180544079168658739", + "quote_message_id": "" + }, + { + "sender": "嘿哈", + "content": "让用户上传一下日志吧", + "msg_type": "text", + "time": "2026-06-06 12:34:55", + "message_id": "6191378332971442158", + "quote_message_id": "" + }, + { + "sender": "瓦拉英语-露露班班(早10晚7)", + "content": "[图片] dd75e7324335a09bd0eb1c0417331999", + "msg_type": "image", + "time": "2026-06-06 12:37:56", + "message_id": "8336686056952925061", + "quote_message_id": "" + }, + { + "sender": "嘿哈", + "content": "好的,我看一下", + "msg_type": "text", + "time": "2026-06-06 12:38:14", + "message_id": "606345934089627441", + "quote_message_id": "" + } + ] + }, + { + "index": 5, + "_idx": 5, + "cluster_id": "9076562614958911360", + "message_count": 2, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "瓦拉英语-露露班班(早10晚7)", + "content": "老师这个是什么情况呀,用户来催了[大哭]", + "msg_type": "text", + "time": "2026-06-06 14:54:50", + "message_id": "9076562614958911360", + "quote_message_id": "" + }, + { + "sender": "嘿哈", + "content": "@瓦拉英语-露露班班(早10晚7) 这个辛苦和用户联系一下,我们这边需要使用一下用户的账号是否方便,让她暂时先不登录", + "msg_type": "text", + "time": "2026-06-06 15:30:11", + "message_id": "7757810635494504794", + "quote_message_id": "9076562614958911360" + } + ] + }, + { + "index": 6, + "_idx": 6, + "cluster_id": "3482371375902109558", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "嘿哈", + "content": "我刚吃完饭回来,我看一下", + "msg_type": "text", + "time": "2026-06-06 15:06:23", + "message_id": "3482371375902109558", + "quote_message_id": "" + } + ] + }, + { + "index": 7, + "_idx": 7, + "cluster_id": "1922846048069673936", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "kevin", + "content": "@八哥-16619720408 拿到日志了么?", + "msg_type": "text", + "time": "2026-06-06 15:22:47", + "message_id": "1922846048069673936", + "quote_message_id": "" + } + ] + }, + { + "index": 8, + "_idx": 8, + "cluster_id": "8918145492697920973", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "kevin", + "content": "丢我一个", + "msg_type": "text", + "time": "2026-06-06 15:22:51", + "message_id": "8918145492697920973", + "quote_message_id": "" + } + ] + }, + { + "index": 9, + "_idx": 9, + "cluster_id": "4406253246209008277", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "嘿哈", + "content": "我飞书圈你了,就是S1和S2买的时间不是一个时间", + "msg_type": "text", + "time": "2026-06-06 15:23:53", + "message_id": "4406253246209008277", + "quote_message_id": "" + } + ] + }, + { + "index": 10, + "_idx": 10, + "cluster_id": "400322442666705962", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "瓦拉英语-露露班班(早10晚7)", + "content": "好的收到", + "msg_type": "text", + "time": "2026-06-06 15:30:24", + "message_id": "400322442666705962", + "quote_message_id": "" + } + ] + }, + { + "index": 11, + "_idx": 11, + "cluster_id": "4462709876885370657", + "message_count": 2, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "瓦拉英语-露露班班(早10晚7)", + "content": "可以老师,18518728785", + "msg_type": "text", + "time": "2026-06-06 15:32:20", + "message_id": "4462709876885370657", + "quote_message_id": "" + }, + { + "sender": "嘿哈", + "content": "@瓦拉英语-露露班班(早10晚7) 可以引导用户更新看一下了\n ↳ 回复 瓦拉英语-露露班主任(早10晚7): 可以老师,18518728785", + "msg_type": "link", + "time": "2026-06-06 16:09:50", + "message_id": "8287775898376325659", + "quote_message_id": "4462709876885370657" + } + ] + }, + { + "index": 12, + "_idx": 12, + "cluster_id": "1951649298363616996", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "瓦拉英语-露露班班(早10晚7)", + "content": "[表情]", + "msg_type": "sticker", + "time": "2026-06-06 16:22:26", + "message_id": "1951649298363616996", + "quote_message_id": "" + } + ] + }, + { + "index": 13, + "_idx": 13, + "cluster_id": "4240151344347763903", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "瓦拉英语-益达老师", + "content": "[视频] 18秒 size:6424258", + "msg_type": "video", + "time": "2026-06-06 19:33:09", + "message_id": "4240151344347763903", + "quote_message_id": "" + } + ] + }, + { + "index": 14, + "_idx": 14, + "cluster_id": "2539401746969882855", + "message_count": 1, + "priority": "P0", + "priority_detail": "基础优先级: P0(匹配P0规则:crash);影响范围: 部分用户", + "category": "启动/运行异常", + "messages": [ + { + "sender": "瓦拉英语-益达老师", + "content": "设备:iPad air 5。用户反馈,登陆课程闪退,内存剩余100多G,手机号:13216180212", + "msg_type": "text", + "time": "2026-06-06 19:33:53", + "message_id": "2539401746969882855", + "quote_message_id": "" + } + ] + }, + { + "index": 15, + "_idx": 15, + "cluster_id": "7037632439254151658", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "瓦拉英语-益达老师", + "content": "辛苦老师帮忙看下~", + "msg_type": "text", + "time": "2026-06-06 19:34:08", + "message_id": "7037632439254151658", + "quote_message_id": "" + } + ] + }, + { + "index": 16, + "_idx": 16, + "cluster_id": "7287666320942252485", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "kevin", + "content": "重新开始试一下呢", + "msg_type": "text", + "time": "2026-06-06 19:38:28", + "message_id": "7287666320942252485", + "quote_message_id": "" + } + ] + }, + { + "index": 17, + "_idx": 17, + "cluster_id": "906677724076916770", + "message_count": 1, + "priority": "P0", + "priority_detail": "基础优先级: P0(匹配P0规则:crash)", + "category": "启动/运行异常", + "messages": [ + { + "sender": "瓦拉英语-益达老师", + "content": "家长用两个平板都试了,都闪退", + "msg_type": "text", + "time": "2026-06-06 19:40:10", + "message_id": "906677724076916770", + "quote_message_id": "" + } + ] + }, + { + "index": 18, + "_idx": 18, + "cluster_id": "5801621079400398034", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "关卡/内容类", + "messages": [ + { + "sender": "kevin", + "content": "进课程时的 点重新开始,不是点继续, 是这样操作的么?", + "msg_type": "text", + "time": "2026-06-06 19:41:31", + "message_id": "5801621079400398034", + "quote_message_id": "" + } + ] + }, + { + "index": 19, + "_idx": 19, + "cluster_id": "1094577539044626051", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "瓦拉英语-益达老师", + "content": "等再让家长试试吧,谢谢", + "msg_type": "text", + "time": "2026-06-06 19:49:00", + "message_id": "1094577539044626051", + "quote_message_id": "" + } + ] + }, + { + "index": 20, + "_idx": 20, + "cluster_id": "4337829696378840785", + "message_count": 1, + "priority": "P1", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2);出现频率: 必现;动态调整: 升级 1 级", + "category": "关卡/内容类", + "messages": [ + { + "sender": "瓦拉英语-花花班班(早10晚7-周末休息)", + "content": "[聊天记录] 💤 迦 南 💄 ❕和瓦拉英语-花花班主任(早10晚7)\n💤 迦 南 💄 ❕: 老师今天晚上我们进入APP总是会直接跳出怎么回事呀\n💤 迦 南 💄 ❕: 我们查看题目解析就会直接退出。\n瓦拉英语-花花班主任(早10晚7): 退出账号,重新登录一下试试,应该是卡住了\n💤 迦 南 💄 ❕: [视频]\n💤 迦 南 💄 ❕: 你看\n瓦拉英语-花花班主任(早10晚7): 进课程时的 点重新开始可以吗\n💤 迦 南 💄 ❕: 不可以\n💤 迦 南 💄 ❕: 已经这样退了四次了每次都是这个地方就会返回\n瓦拉英语-花花班主任(早10晚7): 使用的是什么设备呢\n💤 迦 南 💄 ❕: 望远鲸", + "msg_type": "link", + "time": "2026-06-06 21:01:08", + "message_id": "4337829696378840785", + "quote_message_id": "" + } + ] + }, + { + "index": 21, + "_idx": 21, + "cluster_id": "1400378673050587214", + "message_count": 1, + "priority": "P0", + "priority_detail": "基础优先级: P0(匹配P0规则:crash)", + "category": "启动/运行异常", + "messages": [ + { + "sender": "瓦拉英语-花花班班(早10晚7-周末休息)", + "content": "18551313281用户进入课程闪退,辛苦老师看下", + "msg_type": "text", + "time": "2026-06-06 21:01:38", + "message_id": "1400378673050587214", + "quote_message_id": "" + } + ] + }, + { + "index": 22, + "_idx": 22, + "cluster_id": "5322047526289089770", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "瓦拉英语-花花班班(早10晚7-周末休息)", + "content": "使用的望远鲸", + "msg_type": "text", + "time": "2026-06-06 21:02:11", + "message_id": "5322047526289089770", + "quote_message_id": "" + } + ] + }, + { + "index": 23, + "_idx": 23, + "cluster_id": "1975355060901815136", + "message_count": 1, + "priority": "P0", + "priority_detail": "基础优先级: P0(匹配P0规则:crash)", + "category": "启动/运行异常", + "messages": [ + { + "sender": ".oO(王_计)Oo.", + "content": "确认一下是进入课程闪退还是查看题目解析闪退", + "msg_type": "text", + "time": "2026-06-06 21:07:23", + "message_id": "1975355060901815136", + "quote_message_id": "" + } + ] + }, + { + "index": 24, + "_idx": 24, + "cluster_id": "5947424438964656732", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "关卡/内容类", + "messages": [ + { + "sender": ".oO(王_计)Oo.", + "content": "看用户的描述,并没有提到进入课程", + "msg_type": "text", + "time": "2026-06-06 21:07:29", + "message_id": "5947424438964656732", + "quote_message_id": "" + } + ] + }, + { + "index": 25, + "_idx": 25, + "cluster_id": "4061694192395495798", + "message_count": 1, + "priority": "P0", + "priority_detail": "基础优先级: P0(匹配P0规则:crash)", + "category": "启动/运行异常", + "messages": [ + { + "sender": "瓦拉英语-花花班班(早10晚7-周末休息)", + "content": "题目解析时候闪退", + "msg_type": "text", + "time": "2026-06-06 21:08:38", + "message_id": "4061694192395495798", + "quote_message_id": "" + } + ] + } + ] +} \ No newline at end of file diff --git a/output/daily_feedback/wechat_cluster_context_2026-06-08.json b/output/daily_feedback/wechat_cluster_context_2026-06-08.json new file mode 100644 index 0000000..a9e1385 --- /dev/null +++ b/output/daily_feedback/wechat_cluster_context_2026-06-08.json @@ -0,0 +1,550 @@ +{ + "date": "2026-06-08", + "clusters": [ + { + "index": 1, + "_idx": 1, + "cluster_id": "4265551721015433998", + "message_count": 9, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2);影响范围: 部分用户", + "category": "其他问题", + "messages": [ + { + "sender": ".oO(王_计)Oo.", + "content": "重启应用还是这样么?\n提供一下用户 手机号", + "msg_type": "text", + "time": "2026-06-08 12:21:14", + "message_id": "4265551721015433998", + "quote_message_id": "" + }, + { + "sender": "瓦拉英语-尼克老师", + "content": "@.oO(王_计)Oo. 重启还是这样的老师\n ↳ 回复 .oO(王_计)Oo.: 重启应用还是这样么?\n提供一下用户 手机号", + "msg_type": "link", + "time": "2026-06-08 16:37:29", + "message_id": "2885857696955699167", + "quote_message_id": "4265551721015433998" + }, + { + "sender": ".oO(王_计)Oo.", + "content": "@瓦拉英语-尼克老师 让用户删包重装一下吧~", + "msg_type": "text", + "time": "2026-06-08 16:48:22", + "message_id": "3590248864201573253", + "quote_message_id": "2885857696955699167" + }, + { + "sender": "嘿哈", + "content": "@kevin  @.oO(王_计)Oo. 两位大佬看一下有没有什么方案解决一下", + "msg_type": "text", + "time": "2026-06-08 17:24:35", + "message_id": "7884919684060089811", + "quote_message_id": "3590248864201573253" + }, + { + "sender": "瓦拉英语-尼克老师", + "content": "苹果平板,用户更新完一直卡在这动不了", + "msg_type": "text", + "time": "2026-06-08 12:06:11", + "message_id": "7998500656577084718", + "quote_message_id": "" + }, + { + "sender": "嘿哈", + "content": "@瓦拉英语-尼克老师 这个用户的设备信息发一下吧,是ipad 几,我这边后台没有看到他登录成功过\n ↳ 回复 瓦拉英语-尼克老师: 苹果平板,用户更新完一直卡在这动不了", + "msg_type": "link", + "time": "2026-06-08 16:48:27", + "message_id": "2194926443167340800", + "quote_message_id": "7998500656577084718" + }, + { + "sender": "瓦拉英语-尼克老师", + "content": "[视频] 15秒 size:3237246", + "msg_type": "video", + "time": "2026-06-08 12:06:11", + "message_id": "4097519456453411491", + "quote_message_id": "" + }, + { + "sender": "瓦拉英语-尼克老师", + "content": "13726743667", + "msg_type": "text", + "time": "2026-06-08 12:32:38", + "message_id": "5718901670781076274", + "quote_message_id": "" + }, + { + "sender": "嘿哈", + "content": "这个用户我这看貌似不是一个付费用户吧?\n ↳ 回复 瓦拉英语-尼克老师: 13726743667", + "msg_type": "link", + "time": "2026-06-08 16:51:57", + "message_id": "6605979934451267275", + "quote_message_id": "5718901670781076274" + } + ] + }, + { + "index": 2, + "_idx": 2, + "cluster_id": "8920222502361906957", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "瓦拉英语-花花班班(早10晚7-周末休息)", + "content": "[聊天记录] 💤 迦 南 💄 ❕和瓦拉英语-花花班主任(早10晚7)\n💤 迦 南 💄 ❕: 望远鲸\n💤 迦 南 💄 ❕: [视频]\n💤 迦 南 💄 ❕: 又卡着不动了\n💤 迦 南 💄 ❕: 不是的就正常时候卡住", + "msg_type": "link", + "time": "2026-06-08 13:05:52", + "message_id": "8920222502361906957", + "quote_message_id": "" + } + ] + }, + { + "index": 3, + "_idx": 3, + "cluster_id": "4625370691983208127", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "关卡/内容类", + "messages": [ + { + "sender": "瓦拉英语-花花班班(早10晚7-周末休息)", + "content": "18551313281用户进入课程卡着不动了,用的望远鲸设备", + "msg_type": "text", + "time": "2026-06-08 13:06:54", + "message_id": "4625370691983208127", + "quote_message_id": "" + } + ] + }, + { + "index": 4, + "_idx": 4, + "cluster_id": "5637860028185295234", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "嘿哈", + "content": "辛苦让用户上传一下日志吧", + "msg_type": "text", + "time": "2026-06-08 13:07:39", + "message_id": "5637860028185295234", + "quote_message_id": "" + } + ] + }, + { + "index": 5, + "_idx": 5, + "cluster_id": "2169564596789754019", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "瓦拉英语-花花班班(早10晚7-周末休息)", + "content": "嗯嗯上传了", + "msg_type": "text", + "time": "2026-06-08 13:11:49", + "message_id": "2169564596789754019", + "quote_message_id": "" + } + ] + }, + { + "index": 6, + "_idx": 6, + "cluster_id": "213601797745063364", + "message_count": 2, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "加一车香菜", + "content": "[图片] a640ca6f95fbad4cf792f9aee32a427f size:70248", + "msg_type": "image", + "time": "2026-06-08 16:24:20", + "message_id": "213601797745063364", + "quote_message_id": "" + }, + { + "sender": "加一车香菜", + "content": "然后到这个页面就退不出去了 只能删后台\n ↳ 回复 加一车香菜: 用户不想点重新开始,不想重新学,老师 @八哥-166197204085700<...", + "msg_type": "link", + "time": "2026-06-08 17:27:08", + "message_id": "602532221128854854", + "quote_message_id": "8173034983938703595" + }, + { + "sender": "瓦拉英语-尼克老师", + "content": "@八哥-16619720408 哥,AIR2\n ↳ 回复 嘿哈: 我看视频的最后两秒还是一个闪退的效果,不是单纯的卡住了,辛苦发一下用户的设备具体的型号吧", + "msg_type": "link", + "time": "2026-06-08 17:33:21", + "message_id": "8915777147494881233", + "quote_message_id": "4140605784945485412" + }, + { + "sender": "丹咪尼🌹", + "content": "13898429304, @.oO(王_计)Oo. 手机号来啦 辛苦您看看\n ↳ 回复 丹咪尼🌹: 王欢与六六妈🍭(私信回复慢)的聊天记录六六妈🍭(私信回复慢): [视频]\n六六妈🍭(私信回复慢): 我重新下载也不好用19...", + "msg_type": "link", + "time": "2026-06-08 17:45:45", + "message_id": "7530613475621685644", + "quote_message_id": "1536763205012230760" + } + ] + }, + { + "index": 13, + "_idx": 13, + "cluster_id": "6575464244739738846", + "message_count": 1, + "priority": "P0", + "priority_detail": "基础优先级: P0(匹配P0规则:crash)", + "category": "启动/运行异常", + "messages": [ + { + "sender": "瓦拉英语-尼克老师", + "content": "不是付费的哥,他之前就说一直闪退,后来卸了重新下载就是卡在封面了", + "msg_type": "text", + "time": "2026-06-08 16:55:26", + "message_id": "6575464244739738846", + "quote_message_id": "" + } + ] + }, + { + "index": 14, + "_idx": 14, + "cluster_id": "6675937884271744367", + "message_count": 2, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "嘿哈", + "content": "这个?", + "msg_type": "text", + "time": "2026-06-08 17:36:11", + "message_id": "6675937884271744367", + "quote_message_id": "" + }, + { + "sender": "瓦拉英语-尼克老师", + "content": "@八哥-16619720408 对,哥\n ↳ 回复 嘿哈: 这个?", + "msg_type": "link", + "time": "2026-06-08 18:12:45", + "message_id": "8207264785535952575", + "quote_message_id": "6675937884271744367" + } + ] + }, + { + "index": 15, + "_idx": 15, + "cluster_id": "1020302598073286683", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "嘿哈", + "content": "[图片] ace5f1743805f93578676060dc08ccd0 size:43785", + "msg_type": "image", + "time": "2026-06-08 17:36:11", + "message_id": "1020302598073286683", + "quote_message_id": "" + } + ] + }, + { + "index": 16, + "_idx": 16, + "cluster_id": "2886982476628941189", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "瓦拉英语-花花班班(早10晚7-周末休息)", + "content": "[聊天记录] 难得糊涂和瓦拉英语-花花班主任(早10晚7)\n难得糊涂: [图片]\n难得糊涂: 画画老师,最近系统是在升级吗?从昨天一直打转到现在一直进不进去是怎么回事?\n难得糊涂: [图片]\n难得糊涂: 卸载重新又下载,然后试了好几次,还是不行,就在这里卡住,一直上不了\n难得糊涂: 用的学而思学习机", + "msg_type": "link", + "time": "2026-06-08 19:14:17", + "message_id": "2886982476628941189", + "quote_message_id": "" + } + ] + }, + { + "index": 17, + "_idx": 17, + "cluster_id": "475830585061679556", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "关卡/内容类", + "messages": [ + { + "sender": "瓦拉英语-花花班班(早10晚7-周末休息)", + "content": "15112562217老师用户进入课程后一直卡住,卸载重装也不行", + "msg_type": "text", + "time": "2026-06-08 19:15:34", + "message_id": "475830585061679556", + "quote_message_id": "" + } + ] + }, + { + "index": 18, + "_idx": 18, + "cluster_id": "6643786494540801941", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "嘿哈", + "content": "辛苦让用户上传一下日志吧", + "msg_type": "text", + "time": "2026-06-08 19:16:20", + "message_id": "6643786494540801941", + "quote_message_id": "" + } + ] + }, + { + "index": 19, + "_idx": 19, + "cluster_id": "3983657815550425778", + "message_count": 1, + "priority": "P0", + "priority_detail": "基础优先级: P0(匹配P0规则:crash)", + "category": "启动/运行异常", + "messages": [ + { + "sender": "嘿哈", + "content": "是所有关卡都无法进入么?还是只有最新的课程有这个问题", + "msg_type": "text", + "time": "2026-06-08 19:16:38", + "message_id": "3983657815550425778", + "quote_message_id": "" + } + ] + } + ] +} \ No newline at end of file diff --git a/output/daily_feedback/wechat_cluster_context_2026-06-09.json b/output/daily_feedback/wechat_cluster_context_2026-06-09.json new file mode 100644 index 0000000..d64e868 --- /dev/null +++ b/output/daily_feedback/wechat_cluster_context_2026-06-09.json @@ -0,0 +1,448 @@ +{ + "date": "2026-06-09", + "clusters": [ + { + "index": 1, + "_idx": 1, + "cluster_id": "7500198552293295236", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2);影响范围: 部分用户", + "category": "其他问题", + "messages": [ + { + "sender": "丹咪尼🌹", + "content": "13898429304, @.oO(王_计)Oo. 手机号来啦 辛苦您看看\n ↳ 回复 丹咪尼🌹: 王欢与六六妈🍭(私信回复慢)的聊天记录六六妈🍭(私信回复慢): [视频]\n六六妈🍭(私信回复慢): 我重新下载也不好用19...", + "msg_type": "link", + "time": "2026-06-09 10:47:16", + "message_id": "7500198552293295236", + "quote_message_id": "1536763205012230760" + } + ] + }, + { + "index": 2, + "_idx": 2, + "cluster_id": "830630320515903310", + "message_count": 2, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": ".oO(王_计)Oo.", + "content": "今天热更新会解决 ", + "msg_type": "text", + "time": "2026-06-09 10:49:44", + "message_id": "830630320515903310", + "quote_message_id": "" + }, + { + "sender": "丹咪尼🌹", + "content": "@.oO(王_计)Oo. 老师 大概几点开始热更,", + "msg_type": "text", + "time": "2026-06-09 11:01:23", + "message_id": "1007957328600543289", + "quote_message_id": "830630320515903310" + } + ] + }, + { + "index": 3, + "_idx": 3, + "cluster_id": "7956239697732863531", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "丹咪尼🌹", + "content": "收到", + "msg_type": "text", + "time": "2026-06-09 10:51:59", + "message_id": "7956239697732863531", + "quote_message_id": "" + } + ] + }, + { + "index": 4, + "_idx": 4, + "cluster_id": "5913951513658193054", + "message_count": 1, + "priority": "P0", + "priority_detail": "基础优先级: P0(匹配P0规则:crash)", + "category": "启动/运行异常", + "messages": [ + { + "sender": ".oO(王_计)Oo.", + "content": "今天下班前。\n只能保证新的存档没有问题。旧存档不崩溃,但是表现效果不一定对。", + "msg_type": "text", + "time": "2026-06-09 11:03:13", + "message_id": "5913951513658193054", + "quote_message_id": "" + } + ] + }, + { + "index": 5, + "_idx": 5, + "cluster_id": "5062632732617722615", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "丹咪尼🌹", + "content": "好的。", + "msg_type": "text", + "time": "2026-06-09 11:04:19", + "message_id": "5062632732617722615", + "quote_message_id": "" + } + ] + }, + { + "index": 6, + "_idx": 6, + "cluster_id": "5135228576289567607", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "瓦拉英语-萌萌老师(早10晚7)", + "content": "[视频] 23秒 size:5178017", + "msg_type": "video", + "time": "2026-06-09 11:06:41", + "message_id": "5135228576289567607", + "quote_message_id": "" + } + ] + }, + { + "index": 7, + "_idx": 7, + "cluster_id": "8715920448041791887", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "瓦拉英语-萌萌老师(早10晚7)", + "content": "看一下是发音问题还是收音问题呀", + "msg_type": "text", + "time": "2026-06-09 11:06:41", + "message_id": "8715920448041791887", + "quote_message_id": "" + } + ] + }, + { + "index": 8, + "_idx": 8, + "cluster_id": "8936196149559388058", + "message_count": 2, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": ".oO(王_计)Oo.", + "content": "引导用户上传一下日志,用户录制视频的时间。", + "msg_type": "text", + "time": "2026-06-09 11:22:29", + "message_id": "8936196149559388058", + "quote_message_id": "" + }, + { + "sender": "瓦拉英语-萌萌老师(早10晚7)", + "content": "@.oO(王_计)Oo. 已经上传日志了 就是我发是哦的时间 就是\n ↳ 回复 .oO(王_计)Oo.: 引导用户上传一下日志,用户录制视频的时间。", + "msg_type": "link", + "time": "2026-06-09 15:31:09", + "message_id": "669895486243901938", + "quote_message_id": "8936196149559388058" + } + ] + }, + { + "index": 9, + "_idx": 9, + "cluster_id": "7012130702640438474", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "瓦拉英语-萌萌老师(早10晚7)", + "content": "13850883867", + "msg_type": "text", + "time": "2026-06-09 15:31:22", + "message_id": "7012130702640438474", + "quote_message_id": "" + } + ] + }, + { + "index": 10, + "_idx": 10, + "cluster_id": "4420497692241383282", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2);影响范围: 部分用户", + "category": "其他问题", + "messages": [ + { + "sender": "瓦拉英语-萌萌老师(早10晚7)", + "content": "手机号", + "msg_type": "text", + "time": "2026-06-09 15:31:25", + "message_id": "4420497692241383282", + "quote_message_id": "" + } + ] + }, + { + "index": 11, + "_idx": 11, + "cluster_id": "2278089936442741196", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "瓦拉英语-萌萌老师(早10晚7)", + "content": "[图片] 870a50d531fa3b0160bc990b7c85c243", + "msg_type": "image", + "time": "2026-06-09 15:31:48", + "message_id": "2278089936442741196", + "quote_message_id": "" + } + ] + }, + { + "index": 12, + "_idx": 12, + "cluster_id": "7805766819588809551", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "瓦拉英语-萌萌老师(早10晚7)", + "content": "设备", + "msg_type": "text", + "time": "2026-06-09 15:31:50", + "message_id": "7805766819588809551", + "quote_message_id": "" + } + ] + }, + { + "index": 13, + "_idx": 13, + "cluster_id": "6830434790458518923", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "声音/音频类", + "messages": [ + { + "sender": "跃馬點煋", + "content": "https://static.valavala.com/vala_user_audio/22027_60315abd-9ca8-4d6d-86c5-1a90ff5e7721_32f1313409224d27a4b36634dd310599.wav\n这是2026-05-20 13:55:08 的语音,能识别出来\n\nhttps://static.valavala.com/vala_user_audio/22027_511387d6-a479-4f98-8fc6-1e573f4c9770_7f2d81621a9d4dff88d1dc497ad2363e.wav\n这是2026-06-09 11:04:30的音频,都是水流声。", + "msg_type": "text", + "time": "2026-06-09 15:42:35", + "message_id": "6830434790458518923", + "quote_message_id": "" + } + ] + }, + { + "index": 14, + "_idx": 14, + "cluster_id": "5977738313475504207", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": ".oO(王_计)Oo.", + "content": "老师,让用户凑近录音口说话试试看,或者试试看把保护套摘下试试看,还有一种可能把充电线扒了也试试看。", + "msg_type": "text", + "time": "2026-06-09 15:44:42", + "message_id": "5977738313475504207", + "quote_message_id": "" + } + ] + }, + { + "index": 15, + "_idx": 15, + "cluster_id": "6603424424017844873", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2);影响范围: 部分用户", + "category": "语音识别/判分类", + "messages": [ + { + "sender": "瓦拉英语-尼克老师", + "content": "用户反馈望远鲸录不上长句子,短句子和单词可以识别,手机号:18970899982,已经引导客户上传日志", + "msg_type": "text", + "time": "2026-06-09 17:48:06", + "message_id": "6603424424017844873", + "quote_message_id": "" + } + ] + }, + { + "index": 16, + "_idx": 16, + "cluster_id": "59270402779708137", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "瓦拉英语-尼克老师", + "content": "[聊天记录] 瓦拉英语-尼克老师和#胡亚丽&Chrissy\n#胡亚丽&Chrissy: [视频]\n瓦拉英语-尼克老师: 您先看看语音的权限有没有打开\n#胡亚丽&Chrissy: 打开了\n#胡亚丽&Chrissy: [视频]", + "msg_type": "link", + "time": "2026-06-09 17:48:06", + "message_id": "59270402779708137", + "quote_message_id": "" + } + ] + }, + { + "index": 17, + "_idx": 17, + "cluster_id": "5923426948551818268", + "message_count": 14, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "语音识别/判分类", + "messages": [ + { + "sender": "瓦拉英语-萌萌老师(早10晚7)", + "content": "[聊天记录]  大大福和瓦拉英语-萌萌班主任(早10晚7)\n 大大福: 请问一下口语回答问题的时候不能连读吗?\n 大大福: 识别系统不太灵敏啊\n瓦拉英语-萌萌班主任(早10晚7): 连读是?\n 大大福: 比如,I'm\n 大大福: Hit it\n 大大福: \"Hit it\"\n------\n今天这个连上读就识别不了,后来孩子分开读的\n瓦拉英语-萌萌班主任(早10晚7): 哦哦\n瓦拉英语-萌萌班主任(早10晚7): 明白了", + "msg_type": "link", + "time": "2026-06-09 18:18:03", + "message_id": "5923426948551818268", + "quote_message_id": "" + }, + { + "sender": "嘿哈", + "content": "@Sarah (关卡学习组件) 俞老师辛苦关注一下这个问题吧\n ↳ 回复 瓦拉英语-萌萌班主任(早10晚7):  大大福和瓦拉英语-萌萌班主任(早10晚7)1900 大大福和瓦拉英语-萌萌班主任(早10晚7)1900@八哥-16619720408 哥,昨天那个家长反馈望远鲸还是收音困难5700...", + "msg_type": "link", + "time": "2026-06-10 19:19:44", + "message_id": "6360065480843395764", + "quote_message_id": "2014357899891255028" + } + ] + }, + { + "index": 3, + "_idx": 3, + "cluster_id": "4627466935697850692", + "message_count": 1, + "priority": "P2", + "priority_detail": "基础优先级: P2(无法精确匹配,默认归为P2)", + "category": "其他问题", + "messages": [ + { + "sender": "瓦拉英语-尼克老师", + "content": "好嘞~", + "msg_type": "text", + "time": "2026-06-10 19:20:46", + "message_id": "4627466935697850692", + "quote_message_id": "" + } + ] + } + ] +} \ No newline at end of file diff --git a/output/daily_feedback/飞书反馈_2026-06-11.xlsx b/output/daily_feedback/飞书反馈_2026-06-11.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..8fe28734c4b33bf12e47edc3037c70c6ebad7bb1 GIT binary patch literal 8745 zcmZ`<1ymdBwhr#@PO+BaR-`z^odU(3;t*VlyB90&S{zDncPGVNiaP`f6o2VG>)vxu z-+RfLnKfDS?b-hSYkyIZhl9rl0077Uqs~!1sX;}VFVMSj=z$GA%p6QroE(78Y{oz! ztB0MfB3KcvhaDYpqf^bTF)fm^5c8c-WOf^v)itDn(JuJz>;zuK-qUl4ET1)khM^%< z62iJ|$Hh5_Av#BUCpM?6D$CL^WP?zIyjmCwqZP>+q#z>J=D6{PcIF zp68Q{>Ddruu>&mEcVElPV8RNcX%M(-kkR6Y=PdJRUtd51dA+*BzzgQ7ll~L}$BZy+ z{OtV7=zFy`KM+%mgC~p5VADfV%l%B8krwFr8CnZNjbDXnOenqudMw)+UbKXq;FTI| z{bbS>+w&)L%X(<>@>mh!(Ei~1UR|;KHoLn2&OrUa$L;ZlJD%IxLeS&jzz4C#p6b>( z!+$y_O)rxc8xa7=dW1J)?wqyvxGauYfNJ{VR^LbvLvYPCN zh9_Nk7%j3b&$TwPt!;eZq{9(oCn>2u??Nq7FsRqD0`&6v4CCSUt^`IQ%X{FD&gpIF zlCsgx9fFouHG{2e^N6L*jC>53Ek(bptLiuyQiFD=xPB3gs>hfYz~FrlV`vTsUEJFC zKP;^Yn}ZJoC^!S`*~zr1{U#hrwv}|kf2jBLby-`8Xxa=;PRaNO4*Mh_w8&l;OcNk; zV!Rc|(wcDdzV188i5^*U;kF~)*n)WQHH=P00mwyjPyS@mW90u*^h_(N&(dabKN|jTor>?t#$(Q4Z^^iWn&W?s8vEX<&VI58t8|gvzj7F=9Y5G zibKEz@b*nAsCZY4HAHUoBuweW&4C%~RY;N3hXSso17Gy7R6ky&v5 z^CUL9JGuDJR&}%`E)3)QT%_Gn)nu+=mQ#XWPYAb}JgDUHWE8L#WOY(6f~{K5DXZyX z(<^&$n8bxmNZyb-)e{CZIF<$*>EI4bdMHhSa2~WPcoKz;hK|SMT_@(^F>w+Mc%jcu zM8)BBQik%$rJv+GYQaBd8}!O{?+1>4d~EU!o#nD+j=hndA(Gq1Vki+g;N(UsNY_Sb z57xBKDGTEk{z}P-iU4V*6yEXjK;=yyXj7>Q`~>qnxy0L3{wuJH-;dP?Ty)m_Qz&n$ zk(buTqI)_@cTLJ(x9`4+V`-k7^_A%dr}3dd_3A{%1^%3_<3~&3Y{<#oB3*EGx;6_f zVVrzGofuuyL)6Im>pqlyGhKR=QT1ta-bmbRaWeaZ_g8XX=69-_Uo{EpZXZq>zDR}O$_1(5EIrQEh^m~wQ@-MLRX2g<<6jZGWd!eRb#GyL?#}t?E ztq?7_58O-9Gu)a?*jg?&ueYyebSJT+QRDBiO2xA%A6YZ6?be_GYv^9obXW_42$aB2 z+Lc2&=r~G*Xt*+_NkqkR`IjW`JNB4l`!x7ECAk`KQ;6HPb_X4m-Z$a8HDJMVHn;MZ zdYN-r6kn{fprbJBhHK+)D(aui?qy_FdC|DtrMPz+T|5GZrLlJ2?iv2nm#Ff+UfsI0 zPkbw*km=cv1LGnIOZ$Z!k&uXUTjew%4iOJ#JZbpdIc%U=F}Z*09a{SZdNU)zM5Qpl zpCofosFJ}HJuZG^4LZULBB!mhvqWq6==nS50J~syPP18}5s8RyAucD01$Fw%swD=r zkmXJF@mA6f1|#`iFZ(Q(m(R-vGeRIDA*suPv<=F-Fy{=frXIHk~dWX zqG`15Pj17{_$HObwUq-)9O$0@T9@c~ANkh9B-2T`W}_rMI(pry-RE;G_j)kQmeZu-+vu>w>w2C{36r$el{h`w ziE1pw)F@&juTaRg*k*uOL4cH>EkLM_O@t!0Ge>y)))R7T{OsZ7dilfKw?&^-`5^4! z1%ErA;LhjbLOyb;gt}V~?@mD>ic7k>FO=8vfpJ>GbghFK^K2*XXR+0Wl-c0>Rnw=_ zCO#n%LApVaj`5o?S`36L6nq&4&k{6h8siHMWr|Tdc74QLOUgS&SA&Ns-+s5nrFBGh5TB%O3}J z2AQ3sH=k(ZR+tlhw%w<8a;3DlEK*MF^-5^l&j`M>xYTeIe0b>xvfI61(X&bNJk&o9 zRu>-?eri?wReYdas(#~Bc}w=T=3{QdFyr%S&GR7ZTR#ui0((Mj13K{iC0m%X$j+=0 zM9si!A?NrxO8HdBu}&sOSt_lpN_E5dX5SzYJWK3eRq{$LK%F4`15CLLf{sS6sjiU* z!fvA|4S|P7z-K!#b%MSH)Nf_fgPJND2s{meRj(~Or)yEo1M0{x%FZpn3@miiZ)sRN zo35|X=@h-;yJoR3{#Yny=XAU*xF%=k!n>Yg-=phrE6o2A>SL@N!odqK+G=l8{fXwA z@{Cne*=$3w^!paBtBL9l>z#VpF_{(Z}s-d*%)!uR=!k6#<%81pA`@PI+PFO zPu{UmsA)ozd7w;?Vc*gWR0-4_R-3AE6VZD)>a7ggjcI@xb`Tv#C9>~d^ zcW9qfkt3=t{z_134mGL&RoyqxoLT1B6$tWrFAR4|C(xMuTbH3&gba$lT&@BFeH#LO zl3Wrlw&cZWqv0B2ux+thG;;KaSV81#0<|ND8pc-KF^kwzOxZinK5W%;JX&J778VRA z($l!mw|#HKZ1Kz=E+ITbn>!b#DO{^Ich=-n_cV)yA@~W~fph}nT+KWyL(a+A^lCKX z8zh8>8S8CwETiD03|Ik$xPfLGp@6Z(Do`zuhsh;WE{z%O#R#th zTBhajYn^YDnvhIC;V^OvavHi7Y)2~=IbtUd8bmL*eL8o_@Q6=53~#Cf@xs^w@SU#c zoea80(|Y2%+&)s9w+C5Af8m1JbEh~fZ7WW;@Kr!Q8sgxJL)|M0*9JKrED`7gZ>LdF zEMw*;lka*N-}kPd+qEajl&AD*Y3^Wt7#h0md2P1hal<-HcorMhAKF~~bCqa4>8a~P zIWz5qxOq+0t?`vScePLmgqp8_a1DJqlA5MNYSSi~2!7ScGfD;7->2BfN+CC#U7xAk z<>2D-7elSp8Q}p;)nup*cNfp8W6VT%y>Xs15MzJ9RWGQ8BiqK`OTWr7leDUcaiUK% zQIEEmGekn~a(vl|Mdw>&az&Vi_fVZaE-ablVbrez`0%;8?IGf;Q@6>J?WnNc!MJkF zM%7c7%#ljWx|#JNHerVQ!iO6gAwlL*-kbZ!-izBLs@Rc6`ZnVG3@q1u%4Uo_TdE#T`W|DVT9yE*T@c0r1f)Uo+SP1j!%Poh!wEDH0 z;4pELf6;i0ePq>*dQHSYZQYwG;LV=b4$Q&nKqfjoFGLMP*SB2|EKDql$i%OGLB_ zM;Ddij>CZ&vc%#v!5l(I%Yx$+<*havf(_?`NG@b69VyeOQCi%V-?)#}XDm*h zGH!X*xzuA*;k~|ch}Ccdcm*AQ29f6-VR zXeyV8&1=?+vA7rdQ|C!@qC4hydcr}|vm0e52GWg^YY;|Os*+htr%0kazM@%?+w@(q z4+9!y-hW4V-vG(d+Nio=--PAHohXq zd<#v7FoYI}H@NOyp*mU}fL-LvtHc3`gi6ibXR{1^&g~i_-rS&CUVj~Z=^d0rX0eZH z`KakCcwZCpkp~_-v~{Ip{*@=j&c<4nV}oHf81}5}^ef%0@vDk~0z)rJo0Cu(I8Kf| z?xsr@UD!?SO2~M`B&7}7zp|sAqxQ`PRJd_OY^b>q5uu{-V&Uht_bVa`t4i2~N)OV) z#CDaO{o?T!j|!Jnggx*6nx~xhZN3-l>fG6JGG~BF^pG47DB!e;3BM9Qsf!&Ks89H! zR#B@bx=OOR@s%RpB`NBb-!VyZh-#Z9k7UZ^Q92Jb&p-iAVv&Go{LBd>^1E^&g*8N~ z$M$e9a9$9>Y`;P?Z=k>@>~Ttq7%sL2$4_L32$EU7FHz(zwgdiJ^doVYPWtJFoG zR5z+GMw@Y=Y%01ptIoOC=cT0OUe6z7$fj{KET&?`TCvnmd*Kry`O_9~T4S_?5u%)3 zC6Ni7F1~`5s>q31@AS#L3UjobpoWAE8<*A@;qDK)GBMTAZl!3(1yXRElRN8VBN=NJ zlDrWU?SYpKO8ptL(rpH^Bw*8lvzF3E(#^EA8Mc0|UzFy_OK34l5r6Y;a|SZFh4}(? zw%M%$FES+Ust# zdpuJ&f~y&969A!g12>5jm{wmrfx{!O9FZjcu-_kNmNd76cdZd8jMrxB`*(`IQCR2jeOF48zs$q8V+gGu*VzVCY_EId8T;|37f z)EcPF-4oQ6-)envMh+^c4YYNt((c5uI%c|OEu9irJ2I^Sbmb~l9hzPa z)*&DI`o&j@C7Zs8Fis$<1e~Cb=5FTwl|!IXbC{dU-k^Banrk24F~XzgBDZAl(t1m> z9MYnov#OW!1ufRmL1U{@?qQ48QsaGcd8==Fhu^zhSj;i|(vF=4LjoK#a6@_+@ZGiB zC;5WA`(3>WNru!U3nejw{zQ*}yrcY}zB&)MTwq%Qw+pNYG?t%<8Y9~H;)cr~6buCA zU$arW5*h>yw|#)19uIjK#3=1)ykbjLPp~Wf$e;Hb578hM!IJ>I7eiDzaK!log8e)3 zKJ?BOGsjfvr@80@JWvBj}q_RbMsxh6Ae5*p~YFF@}q zG9kxWmF6#1jdQfqIfXewj<*?GqIXZAkuqNa*8ed5dWd-v)%9}!C#2$I?qkPuNS1K&Jadre z_%vwo=ir&=cn!;V7GXKl5&c- zrcM$l+7g(Yzp&w%999~=ujQ4021BCls>Z(!(9P&&3CottjHyiBesGTBcYZQY39CX{ z5E_Wb-9_v^3&@=r_b{!lLRK)NTYQ;4jG;jG*=JIsL5sB!-GWic8Xv%FmDnsxou+#` zykeGYW)E%WT_FNaI|Yxqu?ijy>-+H5A^e*Him4Ib#<-Qx=-K6+aAEDiLo7gO!g)-R zs$3ob1=gi=E_n6kaRWJKd;kWI50ev+WaA8(UEvz-CW%LD+N=zKtc1Vp+HDgyO3N@G}ln!atDEe1yzKT7&rFeCq zDXd25?I$_hKRlV_OdLp&RKFc>>6F&c48p^KHCS09>oTGIl#g{ERb-y={l!mECu5A7 zk+$p-$QD;-RMXduHjSQzEKUIJybE+}L!;0{TR^KI)6IJRYCy7i_H!xDfn(&w#6~0S2YM9*!d4u@EBObgxXrLtbsg+Fx83sj+J( zl!{(WF85ENGd`YT9es5r0ji{N zzIA*pot7KInOMr#V&kXEuNNArF6c%-?;sSn@sUqlg`kgs{kQoy!l zW6_}5N1*=u*tOnD9_HvvS>Ju#Uf+4_%2M2$kDR~I2bhM)29*Z~_Sp#dt9Yp%GbnV1 zwJ~3ex|BYgo=!8g!=+cl*nah5ujO<0>K-cyu>yg7~hLaZr(awT)r+{h>Ac|^kYXX^FB*^J&q|qN+p^8a_I?~GOqYp zWCpLM;TfI;pTwN!W+9+M7&l`*p3j}VY1-1$TO)lYG$lgg(~j1d_lu>C^T0LMxLX|e z7$adqXIg(_M|OnN&sRO056ZW;litjsR?7nMEQfWHJ{2iwvSC<+gC}?yqghtuVaE8z zZ_|sF5EvUARN)PI$%-)qYxuAa>^{YOAUlhjzXy~b*iZzTN4nD_Gj`1TH{D@rZZMJTSDmVM|V3$Q&^(wK)_Hl%YvbB8Tj*MH4*x0JVa+B*}k6lGJvPUou ze*q+QgnthpWv4?AyV>Z!f5q2c5_k*ldt&?NY%C?RmAngD0eH}AK!aWloy={W*;s#{ zvl5!^p`4SbU;p=PcBJnw!nw>Lgz&d8n)z4@xCoJwS)J8OMUHW3B%VToxGR)aq9=TX z4N;}UkJxHfIfttR5dt7e!fdBUbd-z}R;)aWn^i?Wh@Y-~3pEO9RU5Uw|$ zRV1{`rYz>*UoD{EC~hSq&xLtDKIO-GbBWF)xg$sWMVHiLdgsY)Lv}KcMvE|Aa(FtQ zqR5Y8@H%e#pxTrMu9Nt8oOdjAMI!Ydg2Kj#ya)|{L|3y%U?I%!vFwmP(z`! zz~3y=?;)UxgM-cQqK{D>mFpG7fBeEuWu!J4SadLuPxvnC%W285qVs`ZPgaKJJ%W8C zQ=@$_Yk%c)LC8}`Vz5znOnI8~>CPCx#T}D;R9b!1h8WY9Njw)(JG+Z4rcMj3u0JGk zEFt;$#kj-=?4g+*K!t_}x#X&fJh#brhx!40O4!jjcAc%^$W)q&m9w_MZd{59l@}rd z`5jEy0a8Jv^Kk<-xB;UlhaPgi00GM$^hklIz|c#PsEp zd3K`@JGQGH$)7o*_%@5tFQciWb0?vvn2o}Yw}nFs*ACT&Im>5zVhI!C$`v?t%)i&wL=lxrrNEs6JE85 zEpVA-pQhz!3O-4=xUO1x^F4m!JI7*g)88+ZG-H$_Al+8zv21wLt+qL;kevUOlO*zW zGEj$lbC}xBO4FxCSqZe~NyK|2Sv9_eQnii_^l*9lW72FM=b1nPH4qH<7geb%;b8A# zZtr5K?g=z^*8iPom5GW&$iOS(&wRi^+`8^noy@%B1B_i55Cj%UnuJa=Ew! zA&M0qYi;1{l!~>_I5qoOR|`oLs^0jp8c0ee6f_=HpcnkI59tjwa`lP2*f*m)K`PyN z9%ZjSB^}Ljft(ylJq|p{6wejYx=geMV|vD{+Z1!ky>*7QAN7SJaMN}OAT6n*~EZX5!4KrF9v*K!x7vHXq@5PjKgF52Jw;s{0 zc((&gw06P2J`E5(lTAQydQLkfirO z^8bnclTrT*3jp}T^!_*c-~9TY@IN`{zu_Cu*Z&_3^q&I$n*USIpM~_doG3~F;QuHq6?p{cUjzUE6zEqN+Tv%ae&78M-KghH literal 0 HcmV?d00001 diff --git a/scripts/ai_summarize_feedback.py b/scripts/ai_summarize_feedback.py index 3e20147..1ae182b 100644 --- a/scripts/ai_summarize_feedback.py +++ b/scripts/ai_summarize_feedback.py @@ -262,10 +262,10 @@ def apply_descriptions(date_str, descriptions, channel="feishu"): ) # 从 stdout 提取替换后的 summary_md(用于后续分发) - summary_md = "" if "AI 描述已应用" in result.stdout or "✅" in result.stdout: print(f" ✅ AI 描述已回写到知识库文档") - # 回写成功后清理上下文文件,避免心跳重复处理 + # 先构建 summary_md(依赖 context 文件),再清理 + summary_md = build_summary_from_context(date_str, descriptions, channel) ctx_prefix = "wechat_cluster_context" if channel == "wechat" else "cluster_context" context_path = os.path.join(CONTEXT_DIR, f"{ctx_prefix}_{date_str}.json") if os.path.exists(context_path): @@ -282,7 +282,10 @@ def apply_descriptions(date_str, descriptions, channel="feishu"): def build_summary_from_context(date_str, descriptions, channel="feishu"): - """从 cluster_context + AI 描述构建 summary markdown(用于分发到群聊)。""" + """从 cluster_context + AI 描述构建 summary markdown(用于分发到群聊)。 + + 按 优先级 → 分类 两级分组,与 SKILL.md 步骤 7.2 格式一致。 + """ ctx_prefix = "wechat_cluster_context" if channel == "wechat" else "cluster_context" context_path = os.path.join(CONTEXT_DIR, f"{ctx_prefix}_{date_str}.json") if not os.path.exists(context_path): @@ -295,13 +298,18 @@ def build_summary_from_context(date_str, descriptions, channel="feishu"): lines = ["## 今日问题归纳", ""] - # 按优先级分组 - grouped = {"P0": [], "P1": [], "P2": [], "P3": []} + # 按优先级 → 分类 两级分组 + grouped = {"P0": {}, "P1": {}, "P2": {}, "P3": {}} # {priority: {category: [descriptions]}} for c in ctx["clusters"]: idx = c.get("_idx") or c.get("index", 0) desc = desc_map.get(idx, f"[问题{idx}]") + if desc in ("无明确问题", ""): + continue priority = c.get("priority", "P2") - grouped[priority].append(desc) + category = c.get("category", "其他问题") + if category not in grouped[priority]: + grouped[priority][category] = [] + grouped[priority][category].append(desc) headers = { "P0": "⚠️ P0级核心问题(需优先处理)", @@ -310,22 +318,35 @@ def build_summary_from_context(date_str, descriptions, channel="feishu"): "P3": "📝 P3级低优先级", } + has_any = False for p_level in ["P0", "P1", "P2", "P3"]: - items = grouped[p_level] - if not items: + cat_map = grouped[p_level] + if not cat_map: continue + has_any = True lines.append(f"**{headers[p_level]}**") - for item in items: - lines.append(f"- {item}") + cat_num = 1 + for cat_name, descs in cat_map.items(): + lines.append(f"{cat_num}. {cat_name}") + for desc in descs: + lines.append(f" - {desc}") + cat_num += 1 lines.append("") + if not has_any: + return "" + return "\n".join(lines) def dispatch_summary_to_group(date_str, summary_md, channel="feishu"): - """将归纳摘要发送到「小葵小葵」群聊。使用 Python 直接调飞书 API。""" + """将归纳摘要发送到「小葵小葵」群聊。使用 Python 直接调飞书 API。 + + P0 问题时自动 @ 负责人。 + """ DISPATCH_CHAT_ID = "oc_4171a2188f2554522a4309f2d7c27753" SUMMARY_PARENT_NODE = "MpBNdkCxOobSNQxeJJDcWg9ZnRI" + P0_NOTIFY_USERS = ["eggbg21g"] # 毋益飞 if not summary_md: print(" ⚠️ 无归纳内容可分发") @@ -351,6 +372,9 @@ def dispatch_summary_to_group(date_str, summary_md, channel="feishu"): print(" ⚠️ 无归纳内容可分发(已过滤无明确问题条目)") return False + # 检测是否有 P0 问题 + has_p0 = "⚠️ P0级" in 归纳_content + # 获取 token config = json.load(open("/root/.openclaw/credentials/xiaokui/config.json")) app_id = config["apps"][0]["appId"] @@ -367,8 +391,29 @@ def dispatch_summary_to_group(date_str, summary_md, channel="feishu"): title = f"📋 {label_prefix}{date_str} 用户反馈问题归纳" content_parts = [] - for line in 归纳_content.split("\n"): - content_parts.append([{"tag": "text", "text": line + "\n"}]) + + # P0 @通知:飞书 post 消息需要用富文本 at tag,不能用内联文本 + if has_p0 and P0_NOTIFY_USERS: + p0_header = "⚠️ P0级核心问题(需优先处理)" + if p0_header in 归纳_content: + parts_before = 归纳_content.split(p0_header, 1) + before_p0 = parts_before[0].strip() + after_p0 = parts_before[1].lstrip() + + if before_p0: + content_parts.append([{"tag": "text", "text": before_p0 + "\n"}]) + + # P0 标题行 + @ tag + 后续内容 + p0_line = [{"tag": "text", "text": p0_header + " "}] + for uid in P0_NOTIFY_USERS: + p0_line.append({"tag": "at", "user_id": uid}) + p0_line.append({"tag": "text", "text": " "}) + p0_line.append({"tag": "text", "text": "\n" + after_p0}) + content_parts.append(p0_line) + else: + # 无 P0,直接按行构建 + for line in 归纳_content.split("\n"): + content_parts.append([{"tag": "text", "text": line + "\n"}]) doc_url = f"https://makee-interactive.feishu.cn/wiki/{SUMMARY_PARENT_NODE}" content_parts.append([ diff --git a/scripts/refix_priority_and_summary.py b/scripts/refix_priority_and_summary.py new file mode 100644 index 0000000..0067cdb --- /dev/null +++ b/scripts/refix_priority_and_summary.py @@ -0,0 +1,284 @@ +#!/usr/bin/env python3 +""" +重新跑优先级判定 + AI 归纳 + 回写知识库文档(修复版)。 +基于已有的 cluster_context JSON 文件,复用 update_summary_doc_as_children。 + +用法: + python3 refix_priority_and_summary.py --channel feishu --date 2026-06-06 + python3 refix_priority_and_summary.py --channel wechat --date 2026-06-07 + python3 refix_priority_and_summary.py --channel all --start 2026-06-06 --end 2026-06-10 +""" + +import sys, os, json, argparse, urllib.request, time +from datetime import datetime, timedelta + +SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) +SKILL_SCRIPT_DIR = os.path.join(SCRIPT_DIR, "..", "skills", "feishu-feedback-sync", "scripts") +sys.path.insert(0, SKILL_SCRIPT_DIR) +import sync_feishu_feedback as fsf +import priority_classifier as pc + +CONTEXT_DIR = os.path.join(SCRIPT_DIR, "..", "output", "daily_feedback") + +DEEPSEEK_API_KEY = "sk-7cf94305fb12473b956fd2ed2a6db05b" +DEEPSEEK_BASE_URL = "https://api.deepseek.com/v1" +DEEPSEEK_MODEL = "deepseek-v4-pro" + +SYSTEM_PROMPT = """你是一个游戏产品的问题归纳助手。你的任务是: +阅读一段来自测试群的多人对话(可能包含多个发言人、多轮讨论), +从中提炼出他们正在讨论的「具体问题是什么」,用一句中文描述清楚。 + +要求: +1. 只描述问题本身,不要评价或建议 +2. 包含关键要素:在哪个端、哪个环节、什么表现 +3. 如果对话中有多种说法,优先采用最后确认的描述 +4. 输出仅一句中文,不要加任何前缀、编号、引号或换行 +5. 如果对话全是无实质内容的闲聊(如"好的""收到"),输出"无明确问题" +6. **严禁**在问题描述中出现任何员工姓名(如江涛、张骜等),人名用"相关人员"替代 + +输出格式(严格):直接输出问题描述,无任何额外文字。""" + + +def load_context(date_str, channel="feishu"): + prefix = "wechat_cluster_context" if channel == "wechat" else "cluster_context" + path = os.path.join(CONTEXT_DIR, f"{prefix}_{date_str}.json") + if not os.path.exists(path): + return None + with open(path, "r", encoding="utf-8") as f: + return json.load(f) + + +def call_deepseek(system_prompt, user_prompt, max_retries=2): + body = json.dumps({ + "model": DEEPSEEK_MODEL, + "messages": [ + {"role": "system", "content": system_prompt}, + {"role": "user", "content": user_prompt}, + ], + "temperature": 0.3, + "max_tokens": 1024, + }).encode() + for attempt in range(max_retries + 1): + try: + req = urllib.request.Request( + f"{DEEPSEEK_BASE_URL}/chat/completions", + data=body, + headers={"Authorization": f"Bearer {DEEPSEEK_API_KEY}", "Content-Type": "application/json"}, + method="POST", + ) + resp = urllib.request.urlopen(req, timeout=30) + data = json.loads(resp.read()) + content = data["choices"][0]["message"]["content"].strip() + return content.strip('"\'""'' \n') + except Exception as e: + if attempt < max_retries: + print(f" ⚠️ API 重试 {attempt + 1}: {e}") + time.sleep(2) + else: + raise + + +def build_user_prompt(cluster): + lines = [f"优先级: {cluster.get('priority', '?')}", f"分类: {cluster.get('category', '?')}", + f"当前排查结论: {cluster.get('conclusion', '无')}", "", "--- 对话记录 ---"] + for msg in cluster.get("messages", []): + sender = msg.get("sender", "?") + content = msg.get("content", "") + mtype = msg.get("msg_type", "text") + t = msg.get("time", "") + if mtype in ("image", "post_image", "media", "file", "sticker") and not content.strip(): + continue + if not content.strip(): + continue + if len(content) > 200: + content = content[:197] + "..." + lines.append(f"[{t}] {sender}: {content}") + return "\n".join(lines) + + +def strip_names(text, cluster=None): + import re + if not text: + return text + if cluster: + for m in cluster.get("messages", []): + name = m.get("sender", "").strip() + if name and len(name) >= 2: + text = text.replace(name, '相关人员') + surnames = '李王张刘陈杨赵黄周吴徐孙胡朱高林何郭马罗梁宋郑谢韩唐冯于董萧程曹袁邓许傅沈曾彭吕苏卢蒋蔡贾丁魏薛叶阎余潘杜戴夏钟汪田任姜范方石姚谭廖邹熊金陆郝孔白崔康毛邱秦江史顾侯邵孟龙万段雷钱汤尹黎易常武乔贺赖龚文' + pattern = '[' + surnames + '][一-鿿]' + content_words = { + '文件','资源','存在','动画','角色','设计','问题','音频','显示','界面','关卡','课程','内容','配置','重点','引导','模型', + '测试','环境','部署','灰度','版本','组件','数据','命名','图片','视频','格式','选项','处理','结果','玩家','游戏', + '开发','项目','报告','任务','状态','进度','确认','反馈','功能','系统','后台','前端','服务','需要','可能','正常', + '异常','错误','修复','解决','检查','查看','说明','登录','注册','打开','关闭','更新','调试','运行','启动','停止', + '通过','失败','成功','完成','开始','结束','使用','操作','调整','优化','修改','增加','删除','添加','移除','切换', + '程序','方式','相关','进入','平板','第四','单元','原生','声音','断断','续续','后台','托管','无法','熏听','加载', + '消耗','容器','时候','较多','知识','巩固','环节','第一','播放','警报','正确','系统','操作','权限','人员','内核', + } + def _replace(m): + name = m.group(0) + return '相关人员' if name not in content_words else name + return re.sub(pattern, _replace, text) + + +def convert_to_db_rows(cluster): + return [( + m.get("message_id", ""), m.get("sender", ""), m.get("msg_type", "text"), + m.get("content", ""), m.get("media_url", ""), m.get("quote_message_id", ""), + m.get("time", ""), 0, + ) for m in cluster.get("messages", [])] + + +def regenerate_priority_and_descriptions(context_data): + clusters = context_data.get("clusters", []) + results = [] + for cluster in clusters: + idx = cluster.get("index", 0) + db_rows = convert_to_db_rows(cluster) + priority_info = pc.compute_final_priority(db_rows) + cluster["priority"] = priority_info["priority"] + cluster["priority_info"] = priority_info + print(f" #{idx} → {priority_info['emoji']} {priority_info['priority']} ({priority_info['reasoning'][:80]})") + + user_prompt = build_user_prompt(cluster) + try: + description = call_deepseek(SYSTEM_PROMPT, user_prompt) + except Exception as e: + print(f" ❌ #{idx} API 失败: {e}") + description = f"[API调用失败: {str(e)[:50]}]" + + if not description or not description.strip(): + location = fsf.extract_location_elements(db_rows) + root_text = db_rows[0][3] if db_rows else "" + description = fsf.generate_problem_description(db_rows, location, root_text, ai_placeholder=False, placeholder_idx=idx) + print(f" ⚠️ AI 空,回退: {description[:50]}") + else: + print(f" 📝 {description[:80]}") + + description = strip_names(description, cluster=cluster) + results.append({"index": idx, "description": description, "priority": priority_info["priority"]}) + return results + + +def build_summary_md(context_data, results): + clusters = context_data.get("clusters", []) + desc_map = {r["index"]: r for r in results} + + lines = ["## 今日问题归纳", ""] + grouped = {"P0": {}, "P1": {}, "P2": {}, "P3": {}} + + for c in clusters: + idx = c.get("index", 0) + info = desc_map.get(idx, {}) + desc = info.get("description", f"[问题{idx}]") + if desc in ("无明确问题", ""): + continue + priority = info.get("priority", c.get("priority", "P2")) + category = c.get("category", "其他问题") + grouped[priority].setdefault(category, []).append(desc) + + headers = { + "P0": "⚠️ P0级核心问题(需优先处理)", + "P1": "⚡ P1级重要问题", + "P2": "📌 P2级一般问题", + "P3": "📝 P3级低优先级", + } + + for p_level in ["P0", "P1", "P2", "P3"]: + cat_map = grouped[p_level] + if not cat_map: + continue + lines.append(f"**{headers[p_level]}**") + cat_num = 1 + for cat_name, descs in cat_map.items(): + lines.append(f"{cat_num}. {cat_name}") + for desc in descs: + lines.append(f" - {desc}") + cat_num += 1 + lines.append("") + + lines.append("## 今日问题拆解") + lines.append("") + + for c in clusters: + idx = c.get("index", 0) + info = desc_map.get(idx, {}) + desc = info.get("description", f"[问题{idx}]") + priority = info.get("priority", c.get("priority", "P2")) + + lines.append(f"### 【{priority}】") + lines.append(f"**{idx},问题描述:** {desc}") + lines.append(f"**当前问题排查结论:** {c.get('conclusion', '暂无结论排查中')}") + lines.append("") + + msgs = c.get("messages", []) + if msgs: + lines.append(f'') + lines.append(" 发言人对话信息") + for m in msgs: + sender = m.get("sender", "?").replace("&", "&").replace("<", "<").replace(">", ">") + content = m.get("content", "").replace("&", "&").replace("<", "<").replace(">", ">") + if len(content) > 500: + content = content[:497] + "..." + lines.append(f" {sender}{content}") + lines.append("") + lines.append("") + + return "\n".join(lines) + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("--channel", default="feishu", choices=["feishu", "wechat", "all"]) + parser.add_argument("--date", help="单日 YYYY-MM-DD") + parser.add_argument("--start", help="起始日期") + parser.add_argument("--end", help="结束日期") + args = parser.parse_args() + + channels = ["feishu", "wechat"] if args.channel == "all" else [args.channel] + + if args.date: + dates = [args.date] + elif args.start and args.end: + start = datetime.strptime(args.start, "%Y-%m-%d") + end = datetime.strptime(args.end, "%Y-%m-%d") + dates = [(start + timedelta(days=i)).strftime("%Y-%m-%d") for i in range((end-start).days + 1)] + else: + print("请指定 --date 或 --start/--end") + sys.exit(1) + + for ch in channels: + label = "微信" if ch == "wechat" else "飞书" + title_prefix = "微信-" if ch == "wechat" else "飞书-" + + # Set parent node + if ch == "wechat": + fsf.SUMMARY_PARENT_NODE = "XhtGwjitFizzCNkw8Xzc2IXsnuf" + else: + fsf.SUMMARY_PARENT_NODE = "RaL6whoYMijyYHkSlWrc7OLLnBy" + + day_summaries = {} + for d in dates: + print(f"\n{'='*60}") + print(f"📋 [{label}] {d}") + + ctx = load_context(d, channel=ch) + if not ctx or not ctx.get("clusters"): + print(f" ⚠️ 无数据,跳过") + continue + + print(f" 🔄 重新判定优先级 + AI 归纳 ({len(ctx['clusters'])} 个簇)...") + results = regenerate_priority_and_descriptions(ctx) + summary_md = build_summary_md(ctx, results) + day_summaries[d] = summary_md + + if day_summaries: + print(f"\n📄 写入知识库...") + fsf.update_summary_doc_as_children(day_summaries, title_prefix=title_prefix) + + print(f"\n🎉 完成") + + +if __name__ == "__main__": + main() diff --git a/scripts/sync_wechat_feedback.py b/scripts/sync_wechat_feedback.py index 32221d1..330e998 100755 --- a/scripts/sync_wechat_feedback.py +++ b/scripts/sync_wechat_feedback.py @@ -29,6 +29,9 @@ import sync_feishu_feedback as fsf # 微信知识库父文档 fsf.SUMMARY_PARENT_NODE = "XhtGwjitFizzCNkw8Xzc2IXsnuf" # 微信用户反馈问题汇总 +# 微信原始数据表格(与飞书 AHtnsehwShUVyDtjasSciIvgn7b 对应) +fsf.SPREADSHEET_TOKEN = "RUXfsytPzhJO5kt2uwCcvdIgnLg" + # ── 数据库 ── DB_CONFIG = { "host": "bj-cdb-8frbdwju.sql.tencentcdb.com", @@ -79,13 +82,15 @@ def fetch_wechat_data(date_str): def gen_context_json(date_str, clusters, cluster_order): - """保存簇上下文 JSON 供 AI 使用,包含 _idx 和优先级信息""" + """保存簇上下文 JSON 供 AI 使用,包含 _idx、优先级和分类信息""" os.makedirs(CONTEXT_DIR, exist_ok=True) ctx = {"date": date_str, "clusters": []} for idx, cid in enumerate(cluster_order): cmsgs = clusters[cid] # 计算优先级 priority_info = fsf.compute_final_priority(cmsgs) + # 计算分类 + category = fsf.classify_problem(cmsgs) ctx["clusters"].append({ "index": idx + 1, "_idx": idx + 1, # 占位符编号 @@ -93,6 +98,7 @@ def gen_context_json(date_str, clusters, cluster_order): "message_count": len(cmsgs), "priority": priority_info.get("priority", "P2"), "priority_detail": priority_info.get("reasoning", ""), + "category": category, "messages": [ {"sender": m[1], "content": m[3], "msg_type": m[2], "time": m[6], "message_id": m[0], "quote_message_id": m[5]} @@ -254,13 +260,31 @@ def main(): return print(f" 📋 共 {len(rows)} 条消息") - - do_summary = int(args.steps.split("-")[-1]) >= 3 total = len(rows) + # ── 步骤 2-3:排序 + 写入原始数据表格(与飞书逻辑一致,按天分 sheet)── + sorted_rows, clusters, cluster_order = fsf.sort_threads(rows) + + if not args.dry_run: + existing = fsf.get_existing_sheets() + print(f" 📑 现有 sheet:{list(existing.keys())}") + if date_str in existing: + sheet_id = existing[date_str] + print(f" 🔄 [{date_str}] 已有 sheet {sheet_id},覆盖写入") + else: + print(f" ➕ [{date_str}] 创建 sheet") + sheet_id = fsf.create_sheet(date_str) + print(f" 新建 sheet_id = {sheet_id}") + + success = fsf.write_sheet(sheet_id, sorted_rows) + if success: + print(f" ✅ 写入 {len(sorted_rows)} 条到表格") + else: + print(f" ❌ 写入表格失败") + + do_summary = int(args.steps.split("-")[-1]) >= 3 + if do_summary: - # 步骤 3:聚类(直接复用飞书 sort_threads) - sorted_rows, clusters, cluster_order = fsf.sort_threads(rows) if not cluster_order: print(f" 无有效问题簇(需要≥2条消息)") return diff --git a/skills/feishu-feedback-sync/scripts/__pycache__/priority_classifier.cpython-312.pyc b/skills/feishu-feedback-sync/scripts/__pycache__/priority_classifier.cpython-312.pyc index 1802ac66f29be53208d96a84e3acf7fa30a27983..fdecda27faaff28bff21bcdffaedbbd489d6a498 100644 GIT binary patch delta 538 zcmZ8eK}y3w6b)%n6w)gQf(Q|E0aqTtmEcYny3=(9VW81c6T}cPi78aUSkPK1S`$Q5 zLszamfEUQ0B)I7j{K+JdHkOSqs{^_QzWJ}<1(sR{hru{9dnuJf&>KZ7=4XdfvCyW{tc&FK9$n2z$CpGL z2F`n|jxv+gFw_Zr`k=mHbIVQa0Rg>_b0f{HuIbqLTUp?gi073;m`~Uy| delta 77 zcmewmwk(+MG%qg~0}yNhb0gnTW{EB!_vQ3eFB=+ao^DzBY*%y5)82*8*6yDC hiMfoaw0p7|Tj}OSY%xmg(M%th7yD zgy@o;fHV&TLwYjq%|W__%SLGJB6n!`mBSWtGDkE3zjt^VX!-E)EUAXm^4|@cL5D`P z|F(WIr(^UdsrxDP9{Qe}5LN&sN8x}dgWh6^Vag?yN04V<8h_+obA>fo$ zG|Au5IMoVbf?mK;DEj~Fg`D!AdaI<60HT&S2pwN-m(~*7pm?gc2E|Jr4UO#TxOynW zlebO0a`amJO7s-j0t|IXXIl^?GM{epGX*1($E^W&$^=@ID9@pBG zrPuVAdfYJY0&={kNLgpA%?#sGDn*%j| zE?5(zXARP&F}gG?kLvpA`95V_K?m%Y71KhwQQhU@sv)ITq{_qY@S1ZEiz}WLpR5&i zbpy&(ag$?UNv-Ip6YHGfI=AR-6dT*yMB|IT#Y41NX!ExPD?*Qo1!ev8+(FtNqwUz; z5jW-vP5!1qV@b?d5_%?D884g}Di6&Nr> zqz4CN<#C1jxAA2FWOgD`d8b*24&lR@OXd*gr!JJDzc1!UmdumZ1Ak0G^_{z_m6Gfx zbToa5pC18|L)G0r%e4|+1}@oceNWsy0c01d^F9EOXyB8GOam%_Zb7ewTIh~6YN1jB z!N@y$mL&2ao z5~zSy2^p4uwYn?{hq_H2E*%^bK+_phE;fYQD~_G z3y8v-RZs&R!nak>0=)3ld}M!Eh|Pz^;1_bLArJNm71iJ{jiFTuMg4{bH?ubN)v{si z6BUGN*g%35-2oBV0vJ(PzQ_D^9P4@9E)^z$IebyDuL>DUVV?$HiR>v1doY|7dX~aj mBmS<~)M2Ieh7W)RsnD_vrbAYwYZ*ELvJx~mS_I8VymLWhY5!-pp0w#;ZtXC>3G zl{^p)A7b>seP*8WNkMg<@M67H!#^+cNOhsc34vRZB@9amn%Ev)vB&F@eZ}FF1w4h;Bp=B9XU9dzrZ$8jT??*zyUzi;fYsx13*$-{{>A=q7ND*(<;g zZR|}2j7ZoD{lRBMPqMyBSX+7u1qUWOifF_wHW4xHt+&_hmYw`BRa5GvRD=F+82XC6 ztpppKX6aSX0T*b!Z)DyXs&deh7s- sh(5$^HeUy$$@r9Lbehqou_?MrSlAA^0BXd}M