From c0286ecfa5fdf6420e1d04858767001b0f1fbce8 Mon Sep 17 00:00:00 2001 From: --git_token Date: Wed, 13 May 2026 08:10:01 +0800 Subject: [PATCH] auto backup 2026-05-13 08:10:01 --- MEMORY.md | 28 ++++---- memory/.dreams/events.jsonl | 1 + memory/.dreams/short-term-recall.json | 64 +++++++++++++++++- .../飞书反馈_2026-05-12.xlsx | Bin 0 -> 12284 bytes 4 files changed, 80 insertions(+), 13 deletions(-) create mode 100644 output/daily_feedback/飞书反馈_2026-05-12.xlsx diff --git a/MEMORY.md b/MEMORY.md index 6b82146..425c6a7 100644 --- a/MEMORY.md +++ b/MEMORY.md @@ -31,19 +31,23 @@ - 定时任务:每4小时自动同步「内容测试问题反馈」群消息到数据库 - 查询示例见:`skills/feishu-group-msg-sync/references/query_examples.md` -### 用户反馈问题优先级规则 -- P0:阻断使用 / 大面积影响 / 严重数据问题,需立刻处理 -- P1:核心流程问题,影响较大,尽快处理 -- P2:一般问题或体验问题,可排期处理 -- P3:建议/优化项,低影响,长期迭代 +### 用户反馈问题优先级规则(动态判定引擎) -#### 现有问题分类优先级映射(已生效) -| 优先级 | 问题分类 | -|--------|----------| -| P0 | 启动/运行异常问题 | -| P1 | 版本/更新问题、声音/音频问题、语音识别/判分问题、关卡/内容问题 | -| P2 | UI显示问题、用户反馈问题、带媒体的问题 | -| P3 | 其他问题 | +**⚠️ 优先级判定以 `skills/feishu-feedback-sync/scripts/priority_classifier.py` 为唯一权威来源。** + +#### 等级定义(人类参考) +- **P0**:阻断使用 / 大面积影响 / 严重数据问题,需 2 小时内处理 +- **P1**:核心流程问题,影响较大,3 天内修复 +- **P2**:一般问题或体验问题,当周排期 +- **P3**:建议/优化项,低影响,不单独排期 + +#### 判定机制(由 priority_classifier.py 执行) +1. **基础优先级** — 基于 ~20 条关键词正则匹配,覆盖崩溃/功能异常/体验瑕疵/细节优化四档 +2. **频率动态调整** — 必现/高概率 → 升级;低概率/偶现 → 降级(最多一级) +3. **范围动态调整** — 影响全部用户 → 升级;极少数用户 → 降级(最多一级) +4. **最终优先级** — 基础优先级 ± 频率调整 ± 范围调整,夹紧到 P0-P3 范围 + +**不要在 MEMORY.md 中维护静态分类映射表,所有规则变更直接修改 priority_classifier.py。** ## 经验教训 diff --git a/memory/.dreams/events.jsonl b/memory/.dreams/events.jsonl index e38914d..a9a7417 100644 --- a/memory/.dreams/events.jsonl +++ b/memory/.dreams/events.jsonl @@ -11,3 +11,4 @@ {"type":"memory.recall.recorded","timestamp":"2026-05-11T10:43:36.686Z","query":"feishu_group_message 表结构 多条转发 message_type","resultCount":5,"results":[{"path":"memory/2026-04-30.md","startLine":95,"endLine":120,"score":1},{"path":"memory/2026-04-23.md","startLine":28,"endLine":55,"score":1},{"path":"memory/2026-04-23.md","startLine":47,"endLine":72,"score":1},{"path":"memory/2026-04-17.md","startLine":1,"endLine":23,"score":1},{"path":"memory/2026-04-10.md","startLine":44,"endLine":68,"score":1}]} {"type":"memory.recall.recorded","timestamp":"2026-05-11T11:26:09.200Z","query":"sort_tag 飞书 API 创建节点 权限","resultCount":2,"results":[{"path":"memory/2026-05-09.md","startLine":46,"endLine":65,"score":1},{"path":"memory/2026-05-09.md","startLine":1,"endLine":19,"score":1}]} {"type":"memory.recall.recorded","timestamp":"2026-05-11T11:26:09.201Z","query":"知识库 sort_tag 空 文档排序","resultCount":3,"results":[{"path":"memory/2026-05-09.md","startLine":46,"endLine":65,"score":1},{"path":"memory/2026-05-09.md","startLine":78,"endLine":95,"score":1},{"path":"memory/2026-05-06.md","startLine":20,"endLine":47,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-05-12T06:08:28.032Z","query":"优先级规则 priority rules","resultCount":2,"results":[{"path":"memory/2026-05-07.md","startLine":23,"endLine":50,"score":1},{"path":"memory/2026-05-07.md","startLine":1,"endLine":28,"score":1}]} diff --git a/memory/.dreams/short-term-recall.json b/memory/.dreams/short-term-recall.json index fd28acf..744a7eb 100644 --- a/memory/.dreams/short-term-recall.json +++ b/memory/.dreams/short-term-recall.json @@ -1,6 +1,6 @@ { "version": 1, - "updatedAt": "2026-05-11T11:26:09.201Z", + "updatedAt": "2026-05-12T06:08:28.032Z", "entries": { "memory:memory/2026-04-18.md:1:5": { "key": "memory:memory/2026-04-18.md:1:5", @@ -600,6 +600,68 @@ "skill.md", "ios端loading超时致数据丢失/无音频" ] + }, + "memory:memory/2026-05-07.md:23:50": { + "key": "memory:memory/2026-05-07.md:23:50", + "path": "memory/2026-05-07.md", + "startLine": 23, + "endLine": 50, + "source": "memory", + "snippet": "- 「小葵小葵」群 chat_id: `oc_4171a2188f2554522a4309f2d7c27753`,小葵Bot已在该群中 - 相关负责人需要往此群发消息时,直接用 Bot 身份向该 chat_id 发送 ### 知识空间信息 - space_id: 7612229802338045122 - 父节点 node_token: RaL6whoYMijyYHkSlWrc7OLLnBy - 父节点 obj_token: J8bKd4dbYoofZixxVsCc06bhnFc (docx) ## 用户反馈问题汇总文档结构调整 [刘新玉] - 2026-05-07 10:45 ### 变更内容 1. 「用户反馈问题汇总」文档改为按日期创建独立子文档,每天一个 2. 子文档标题格式:`YYYY-MM-DD 问题反馈` 3. 父文档(RaL6whoYMijyYHkSlWrc7OLLnBy)改为索引说明页 4. 子文档 obj_token: - 2026-05-06: ISpQdgf6QoIKIyxdZjPcTAa4nEe - 2026-04-28: UusFdRBEioSs4ox9JhPcXGfCnzf ### 脚本修改 - `sync_feishu_feedback.py` 中新增 `update_summary_doc_as_children()` 函数 - 逻辑:先 `list_child_nodes()` 查已有子文档 → 存在则更新、不存在才创建 - **核心规则:每天只新增一个对应日期的子文档,绝不重复创建** ### 同步清理 - 数据库中 s", + "recallCount": 1, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 1, + "maxScore": 1, + "firstRecalledAt": "2026-05-12T06:08:28.032Z", + "lastRecalledAt": "2026-05-12T06:08:28.032Z", + "queryHashes": [ + "5d17890944eb" + ], + "recallDays": [ + "2026-05-12" + ], + "conceptTags": [ + "chat-id", + "space-id", + "node-token", + "obj-token", + "yyyy-mm-dd", + "sync-feishu-feedback.py", + "update-summary-doc-as-children", + "list-child-nodes" + ] + }, + "memory:memory/2026-05-07.md:1:28": { + "key": "memory:memory/2026-05-07.md:1:28", + "path": "memory/2026-05-07.md", + "startLine": 1, + "endLine": 28, + "source": "memory", + "snippet": "## 用户反馈问题汇总文档结构调整 [刘新玉] - 2026-05-07 10:45 ### 变更内容 1. 「用户反馈问题汇总」文档改为按日期创建独立子文档,每天一个 2. 子文档标题格式:`YYYY-MM-DD 问题反馈` 3. 父文档(RaL6whoYMijyYHkSlWrc7OLLnBy)改为索引说明页 4. 子文档 obj_token: - 2026-05-06: ISpQdgf6QoIKIyxdZjPcTAa4nEe - 2026-04-28: UusFdRBEioSs4ox9JhPcXGfCnzf ### 脚本修改 - `sync_feishu_feedback.py` 中新增 `update_summary_doc_as_children()` 函数 - 逻辑:先 `list_child_nodes()` 查已有子文档 → 存在则更新、不存在才创建 - **核心规则:每天只新增一个对应日期的子文档,绝不重复创建** ### 同步清理 - 数据库中 sender_name='未知' 的3条无效记录已删除 - 「内容测试问题反馈」电子表格中也清理了\"未知\"发送者的行 - 该电子表格已从\"飞书问题反馈-近3天\"重命名为\"内容测试问题反馈\" ### 飞书群信息 [李若松确认] - 2026-05-07 11:23 - 「小葵小葵」群 chat_id: `oc_4171a2188f2554522a4309f2d7c27753`,小葵Bot已在该群中 - 相关负责人需要往此群发消息时,直接用 Bot 身份向该 chat_id 发送 ### 知识空间信", + "recallCount": 1, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 1, + "maxScore": 1, + "firstRecalledAt": "2026-05-12T06:08:28.032Z", + "lastRecalledAt": "2026-05-12T06:08:28.032Z", + "queryHashes": [ + "5d17890944eb" + ], + "recallDays": [ + "2026-05-12" + ], + "conceptTags": [ + "yyyy-mm-dd", + "obj-token", + "sync-feishu-feedback.py", + "update-summary-doc-as-children", + "list-child-nodes", + "sender-name", + "飞书问题反馈-近3天", + "chat-id" + ] } } } diff --git a/output/daily_feedback/飞书反馈_2026-05-12.xlsx b/output/daily_feedback/飞书反馈_2026-05-12.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..2f8d292f0e84b901901397dedd07802ec6c3fef3 GIT binary patch literal 12284 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 YQj&!PE`5W5zyO~Dz!YD~@ax