auto backup 2026-04-14 08:10:01
This commit is contained in:
parent
80bd4ca91a
commit
05c1a7522e
@ -1,7 +1,6 @@
|
||||
logs e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
||||
lark_wiki_operate_as_bot.vala f84c308bcb69280520dadf9458177d9c4af192d60cf409528bd65e13f3e67e0a
|
||||
vala_git_workspace_backup c2e2cb13f0f7972b7af36ee3e7b7a1dec027420e7f70997bdaaa166ea0c389a7
|
||||
user-feedback-collector 7e59c5959f54756c3068bed33b29616ac21e07b053c092915c426ddaed3e18ae
|
||||
cron-schedule.vala ef7c1fcd2ba072ec229d0e91499ce575073a0c67518fbfa92b7a7d8e1213b2ce
|
||||
lark-action-as-bot 1a5be56632fdca1dbee6bf6f6fbdf7008d2919eadcd29515c26340bd1e9c8d60
|
||||
lark-identify-sender 17340e362305e2e24244ab0a50e39d62c83d484bf0a57072750ae3ec88fde9c8
|
||||
@ -11,4 +10,5 @@ pua f6a38fdd39c22c81370abd6b979b58c767e41738d43a26fbbc23d1e933cdc701
|
||||
smart-auto-model-switch bfb3547dcd6029622c7062b49ae7922614a366b6dfe88c7d0fae9dcd85fc2eb3
|
||||
vala_git_workspace_backup.vala 4cf352bec88fe84af065ba1ffcbb06647b77df0e01860faaf0bca9fd64b968ec
|
||||
feishu-group-msg-sync 338e821c4dd0b2f532b7f3ca31aea6d1881e16e0a76a6b7a0ecf2b723907690f
|
||||
tencent-cos-upload 2281aaa01e929fa602ea620cfef372fea13853e2e66accfbd2b53c0fcb39b8c3
|
||||
tencent-cos-upload 172517ed41d06c48425cd961ec5972a48495cfd62ec588bc1c2912ddf31b3a06
|
||||
user-feedback-collector 207d290e48ab591c59f48724b6080825029b6983d9cef53733290d7e64df8415
|
||||
|
||||
18
USER.md
18
USER.md
@ -17,7 +17,7 @@
|
||||
|------|------|-------------|
|
||||
| 技术负责人 | 李若松 | `4aagb443` |
|
||||
| 技术负责人 | 张昆鹏 | `7f5cd711` |
|
||||
| 业务负责人 | 刘新玉 | `7gc796ga` |
|
||||
| 第一业务负责人 | 刘新玉 | `7gc796ga` |
|
||||
| 业务负责人 | 刘庆逊 | `cb2815b4` |
|
||||
| 技术负责人群组| AI_member | `oc_5c9f0e631266b9ef6e05a95daa80fbda`|
|
||||
|
||||
@ -25,19 +25,19 @@
|
||||
### 负责人权限
|
||||
|
||||
- **技术负责人:** 拥有对你的完整最高权限,所有系统配置、技能升级、敏感操作均需经过其审批
|
||||
- **业务负责人:** 拥有业务数据查询和操作的审批权限
|
||||
- **业务负责人:** 拥有业务数据查询和操作的完整权限。只要不涉及可能损坏数据的敏感操作。无需审批。对于已经配置过的密钥,不要再次请求!
|
||||
|
||||
## 数据权限分级规则
|
||||
|
||||
### 第一级:完整权限用户
|
||||
暂时均允许。
|
||||
以下用户可以查询所有业务数据、发起非技术风险类操作,无需额外审批:
|
||||
|
||||
以下用户可以查询所有业务数据,无需额外审批:
|
||||
|
||||
| 姓名 | 飞书 user_id |
|
||||
|------|-------------|
|
||||
| (姓名) | `xxxx` |
|
||||
| (姓名) | `xxxx` |
|
||||
| 姓名 | 飞书 user_id | 说明 |
|
||||
|------|-------------|------|
|
||||
| 刘新玉 | `7gc796ga` | 业务负责人,无技术风险的需求无需审批 |
|
||||
| 李若松 | `4aagb443` | 技术负责人,拥有最高权限 |
|
||||
| 张昆鹏 | `7f5cd711` | 技术负责人,拥有最高权限 |
|
||||
| 刘庆逊 | `cb2815b4` | 业务负责人,拥有最高权限 |
|
||||
|
||||
### 第二级:受限权限用户
|
||||
|
||||
|
||||
1
data/last_feedback_sync_time
Normal file
1
data/last_feedback_sync_time
Normal file
@ -0,0 +1 @@
|
||||
2026-04-14T06:00:01.856871+08:00
|
||||
37
memory/2026-04-13-wechat-feedback.md
Normal file
37
memory/2026-04-13-wechat-feedback.md
Normal file
@ -0,0 +1,37 @@
|
||||
# Session: 2026-04-13 10:59:37 UTC
|
||||
|
||||
- **Session Key**: agent:xiaokui:feishu:direct:ou_9d4df593d0419d705274947c5cec5ada
|
||||
- **Session ID**: b9237714-1af7-4bbb-a272-963d208da1b9
|
||||
- **Source**: feishu
|
||||
|
||||
## Conversation Summary
|
||||
|
||||
assistant: ✅ New session started · model: volcengine/doubao-seed-2-0-pro-260215
|
||||
user: System: [2026-04-13 18:56:11 GMT+8] Feishu[xiaokui] DM | 刘新玉 (ou_9d4df593d0419d705274947c5cec5ada) [msg:om_x100b52f8f267dca4b3634f5841120c6]
|
||||
|
||||
A new session was started via /new or /reset. Run your Session Startup sequence - read the required files before responding to the user. Then greet the user in your configured persona, if one is provided. Be yourself - use your defined voice, mannerisms, and mood. Keep it to 1-3 sentences and ask what they want to do. If the runtime model differs from default_model in the system prompt, mention the default model. Do not mention internal steps, files, tools, or reasoning.
|
||||
Current time: Monday, April 13th, 2026 — 6:56 PM (Asia/Shanghai) / 2026-04-13 10:56 UTC
|
||||
assistant: 刘总好,我已准备就绪,有什么需求你可以直接告诉我。
|
||||
user: System: [2026-04-13 18:56:58 GMT+8] Feishu[xiaokui] DM | 刘新玉 (ou_9d4df593d0419d705274947c5cec5ada) [msg:om_x100b52f8f16e0508b3b0f0ff0e7a058]
|
||||
|
||||
Conversation info (untrusted metadata):
|
||||
```json
|
||||
{
|
||||
"message_id": "om_x100b52f8f16e0508b3b0f0ff0e7a058",
|
||||
"sender_id": "ou_9d4df593d0419d705274947c5cec5ada",
|
||||
"sender": "刘新玉",
|
||||
"timestamp": "Mon 2026-04-13 18:56 GMT+8"
|
||||
}
|
||||
```
|
||||
|
||||
Sender (untrusted metadata):
|
||||
```json
|
||||
{
|
||||
"label": "刘新玉 (ou_9d4df593d0419d705274947c5cec5ada)",
|
||||
"id": "ou_9d4df593d0419d705274947c5cec5ada",
|
||||
"name": "刘新玉"
|
||||
}
|
||||
```
|
||||
|
||||
我想看下微信反馈里有哪些信息
|
||||
assistant: 刘总,当前无法连接到存储微信反馈的MySQL数据库,请提供一下该数据库的连接信息(主机地址、端口、用户名、密码),我查询后把最新的微信反馈内容整理给你。
|
||||
6
memory/2026-04-13.md
Normal file
6
memory/2026-04-13.md
Normal file
@ -0,0 +1,6 @@
|
||||
|
||||
|
||||
## 用户权限更新
|
||||
【李若松提出】
|
||||
- 新增**刘新玉(user_id:7gc796ga)**为完整权限用户,其提出的需求只要不涉及技术风险,无需向技术负责人申请审批,可直接执行。
|
||||
- 已更新`USER.md`中的权限分级列表,将刘新玉加入第一级完整权限用户。
|
||||
81
scripts/check_wechat_table.py
Normal file
81
scripts/check_wechat_table.py
Normal file
@ -0,0 +1,81 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
查询微信反馈数据表结构
|
||||
"""
|
||||
import os
|
||||
import re
|
||||
import pymysql
|
||||
|
||||
# 从secrets.md读取数据库配置
|
||||
SECRETS_PATH = "/root/.openclaw/workspace-xiaokui/secrets.md"
|
||||
|
||||
def load_mysql_config():
|
||||
if not os.path.exists(SECRETS_PATH):
|
||||
raise RuntimeError(f"密钥文件不存在: {SECRETS_PATH}")
|
||||
|
||||
with open(SECRETS_PATH, 'r', encoding='utf-8') as f:
|
||||
content = f.read()
|
||||
|
||||
# 匹配微信反馈数据行
|
||||
pattern = r'\| 微信反馈数据.*?\| `([^`]+)` \| `([^`]+)` \| `([^`]+)` \| `([^`]+)` \| `([^`]+)` \|'
|
||||
match = re.search(pattern, content, re.DOTALL)
|
||||
if not match:
|
||||
raise RuntimeError("secrets.md中未找到微信反馈数据库配置")
|
||||
|
||||
host = match.group(1)
|
||||
port = int(match.group(2))
|
||||
db = match.group(3)
|
||||
user = match.group(4)
|
||||
password = match.group(5)
|
||||
|
||||
return {
|
||||
'host': host,
|
||||
'port': port,
|
||||
'user': user,
|
||||
'password': password,
|
||||
'database': db,
|
||||
'charset': 'utf8mb4'
|
||||
}
|
||||
|
||||
def main():
|
||||
config = load_mysql_config()
|
||||
print(f"连接数据库: {config['host']}:{config['port']}/{config['database']} (用户: {config['user']})")
|
||||
|
||||
conn = None
|
||||
try:
|
||||
conn = pymysql.connect(**config)
|
||||
with conn.cursor() as cursor:
|
||||
# 查看表结构
|
||||
cursor.execute("DESCRIBE wechat_group_message")
|
||||
columns = cursor.fetchall()
|
||||
|
||||
print("\n表 wechat_group_message 结构:")
|
||||
print(f"{'字段名':<20} {'类型':<30} {'是否为空':<8} {'键':<5} {'默认值':<10} {'额外':<10}")
|
||||
print("-" * 100)
|
||||
for col in columns:
|
||||
field, type_, null, key, default, extra = col
|
||||
print(f"{field:<20} {str(type_):<30} {null:<8} {key:<5} {str(default):<10} {extra:<10}")
|
||||
|
||||
# 查询总记录数
|
||||
cursor.execute("SELECT COUNT(*) FROM wechat_group_message")
|
||||
count = cursor.fetchone()[0]
|
||||
print(f"\n总记录数: {count}")
|
||||
|
||||
# 查询最新10条记录预览
|
||||
print("\n最新10条记录预览:")
|
||||
cursor.execute("SELECT * FROM wechat_group_message ORDER BY id DESC LIMIT 10")
|
||||
rows = cursor.fetchall()
|
||||
fields = [col[0] for col in cursor.description]
|
||||
|
||||
for row in rows:
|
||||
row_dict = dict(zip(fields, row))
|
||||
print(f"ID: {row_dict.get('id')} | 时间: {row_dict.get('create_time', '')} | 发送人: {row_dict.get('sender', '')[:10]} | 内容: {str(row_dict.get('content', ''))[:50]}...")
|
||||
|
||||
except Exception as e:
|
||||
print(f"错误: {e}")
|
||||
finally:
|
||||
if conn:
|
||||
conn.close()
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@ -6,6 +6,11 @@
|
||||
import sys
|
||||
import os
|
||||
|
||||
# 确保 lark-cli 在 PATH 中(crontab 环境下 PATH 受限)
|
||||
_NODE_BIN = "/root/.nvm/versions/node/v24.14.0/bin"
|
||||
if _NODE_BIN not in os.environ.get("PATH", ""):
|
||||
os.environ["PATH"] = _NODE_BIN + ":" + os.environ.get("PATH", "")
|
||||
|
||||
# 引用 skill 中的同步脚本
|
||||
sys.path.insert(0, '/root/.openclaw/workspace-xiaokui/skills/feishu-group-msg-sync/scripts')
|
||||
sys.path.insert(0, '/root/.openclaw/workspace-xiaokui/skills/tencent-cos-upload/scripts')
|
||||
@ -16,7 +21,7 @@ sync.CHAT_ID = "oc_fabff7672e62a9ced7b326ee4a286c26"
|
||||
sync.SPREADSHEET_TOKEN = "E8vFsCmPBhT4SCtNmnJchqeJnJe"
|
||||
sync.SHEET_ID = "7bce8f"
|
||||
sync.LARK_CLI_CONFIG = "/root/.openclaw/credentials/xiaokui"
|
||||
sync.LAST_SYNC_FILE = "/tmp/last_feedback_sync_time"
|
||||
sync.LAST_SYNC_FILE = "/root/.openclaw/workspace-xiaokui/data/last_feedback_sync_time"
|
||||
sync.WORK_DIR = "/tmp/feedback_sync_workdir"
|
||||
sync.COS_BASE_PATH = "vala_llm/user_feedback"
|
||||
|
||||
|
||||
@ -56,9 +56,9 @@ results = uploader.upload_batch([
|
||||
|
||||
## 配置
|
||||
|
||||
凭证从 `secrets.md` 的腾讯云COS部分读取,脚本中通过硬编码加载(非环境变量)。
|
||||
凭证从工作区 `secrets.md` 的腾讯云COS部分读取,脚本自动加载,**无硬编码密钥**。
|
||||
|
||||
如需修改配置(换桶、换域名),编辑 `scripts/cos_upload.py` 顶部的常量。
|
||||
如需修改配置(换桶、换域名),修改 `secrets.md` 中的腾讯云COS配置项即可,无需修改脚本代码。
|
||||
|
||||
## COS路径规范
|
||||
|
||||
|
||||
Binary file not shown.
@ -6,16 +6,46 @@
|
||||
"""
|
||||
import os
|
||||
import sys
|
||||
import re
|
||||
import mimetypes
|
||||
import argparse
|
||||
from qcloud_cos import CosConfig, CosS3Client
|
||||
|
||||
# ============ 配置(修改这里切换桶/域名)============
|
||||
COS_SECRET_ID = "AKIDpbWMzOYaP2UltHWccS4TJJDxX1Pfkvzt"
|
||||
COS_SECRET_KEY = "ythOwofOxvtklL3XpxsaChEbntqhOrFi"
|
||||
COS_REGION = "ap-beijing"
|
||||
COS_BUCKET = "static-1317843270"
|
||||
COS_DOWNLOAD_DOMAIN = "static.valavala.com"
|
||||
# ============ 配置(从 secrets.md 读取,不再硬编码) ============
|
||||
SECRETS_PATH = "/root/.openclaw/workspace-xiaokui/secrets.md"
|
||||
|
||||
def _load_cos_config():
|
||||
"""从 secrets.md 加载COS配置"""
|
||||
if not os.path.exists(SECRETS_PATH):
|
||||
raise RuntimeError(f"密钥文件不存在: {SECRETS_PATH}")
|
||||
|
||||
with open(SECRETS_PATH, 'r', encoding='utf-8') as f:
|
||||
content = f.read()
|
||||
|
||||
# 提取腾讯云COS配置
|
||||
patterns = {
|
||||
'secret_id': r'TENCENT_SECRET_ID.*?`([^`]+)`',
|
||||
'secret_key': r'TENCENT_SECRET_KEY.*?`([^`]+)`',
|
||||
'region': r'TENCENT_COS_REGION.*?`([^`]+)`',
|
||||
'bucket': r'TENCENT_COS_BUCKET.*?`([^`]+)`',
|
||||
'domain': r'TENCENT_COS_DOWNLOAD_PATH.*?`([^`]+)`'
|
||||
}
|
||||
|
||||
config = {}
|
||||
for key, pattern in patterns.items():
|
||||
match = re.search(pattern, content, re.MULTILINE)
|
||||
if not match:
|
||||
raise RuntimeError(f"secrets.md 中未找到 COS 配置项: {key}")
|
||||
config[key] = match.group(1)
|
||||
|
||||
return config
|
||||
|
||||
_cos_config = _load_cos_config()
|
||||
COS_SECRET_ID = _cos_config['secret_id']
|
||||
COS_SECRET_KEY = _cos_config['secret_key']
|
||||
COS_REGION = _cos_config['region']
|
||||
COS_BUCKET = _cos_config['bucket']
|
||||
COS_DOWNLOAD_DOMAIN = _cos_config['domain']
|
||||
|
||||
|
||||
class CosUploader:
|
||||
|
||||
@ -1,12 +1,14 @@
|
||||
---
|
||||
name: user-feedback-collector
|
||||
description: |
|
||||
记录用户反馈到飞书知识库文档。当任何用户发送包含"用户反馈:"或"用户反馈:"(中英文冒号均可)开头的消息时触发。
|
||||
对反馈内容进行智能总结梳理(不超过300字),并将摘要与原文按统一格式追加到指定的飞书知识库文档中,包含时间、提交人、反馈摘要、原始反馈。
|
||||
触发关键词:用户反馈:、用户反馈:
|
||||
全渠道用户反馈收集与管理,支持三类反馈数据源:
|
||||
1. 主动上报:用户发送包含"用户反馈:"或"用户反馈:"开头的消息时自动记录
|
||||
2. 飞书内部反馈群:「内容测试问题反馈」群(oc_fabff7672e62a9ced7b326ee4a286c26),每6小时同步到飞书表格
|
||||
3. 微信用户反馈群:数据实时存储在MySQL vala_test.wechat_group_message表
|
||||
自动汇总、分类、统计反馈,支持同步到知识库文档、多维表格,生成周报/月报。
|
||||
---
|
||||
|
||||
# 用户反馈收集
|
||||
# 用户反馈收集与管理
|
||||
|
||||
当用户发送的消息以 `用户反馈:` 或 `用户反馈:` 开头时,对反馈内容进行总结梳理后记录到飞书知识库文档。
|
||||
|
||||
@ -20,14 +22,36 @@ description: |
|
||||
| 4 | | | | | | | | | | | | | | |
|
||||
| 5 | | | | | | | | | | | | | | |
|
||||
|
||||
## 目标文档
|
||||
## 反馈数据源(全渠道)
|
||||
|
||||
| 反馈渠道 | 来源 | 存储位置 | 更新频率 |
|
||||
|---------|------|----------|----------|
|
||||
| 主动上报 | 用户主动发送 `用户反馈:` 前缀消息 | 飞书知识库文档 | 实时 |
|
||||
| 飞书内部测试反馈 | 「内容测试问题反馈」群(`oc_fabff7672e62a9ced7b326ee4a286c26`) | 飞书表格:`E8vFsCmPBhT4SCtNmnJchqeJnJe` | 每6小时自动同步 |
|
||||
| 微信用户反馈 | 微信用户反馈群 | MySQL:`vala_test.wechat_group_message` 表 | 实时更新 |
|
||||
|
||||
## 目标存储位置
|
||||
|
||||
### 1. 主动上报知识库文档
|
||||
- **文档标题:** 2026年 用户反馈收集
|
||||
- **Wiki Token:** `SB3dwaSshie7ifklKlLc2GswnqX`
|
||||
- **Obj Token:** `NVCRdIChwot7oPxcpopcBFMOned`
|
||||
- **知识空间 ID:** `7612229802338045122`
|
||||
|
||||
## 执行流程
|
||||
### 2. 全量反馈汇总多维表格(待上线)
|
||||
将三个数据源的反馈统一汇总到同一个飞书多维表格,支持分类、筛选、统计和跟进。
|
||||
|
||||
## 支持功能
|
||||
|
||||
| 功能 | 说明 |
|
||||
|------|------|
|
||||
| 主动上报记录 | 用户发 `用户反馈:` 开头消息自动记录到知识库 |
|
||||
| 多渠道查询 | 支持按时间、关键词、渠道、提交人查询所有反馈 |
|
||||
| 统计分析 | 按周/月统计反馈数量、类型、TOP问题 |
|
||||
| 定期汇总 | 自动生成反馈周报/月报,同步到知识库 |
|
||||
| 同步跟进 | 支持将反馈同步到任务管理系统,跟进解决进度 |
|
||||
|
||||
## 主动上报执行流程(原有逻辑)
|
||||
|
||||
### 1. 识别反馈内容
|
||||
|
||||
@ -85,8 +109,21 @@ LARKSUITE_CLI_CONFIG_DIR=/root/.openclaw/credentials/xiaokui \
|
||||
|
||||
写入失败时,回复用户具体错误原因并建议重试。
|
||||
|
||||
## 多渠道反馈查询流程
|
||||
|
||||
### 查询飞书内部测试反馈
|
||||
1. 直接读取飞书表格 `E8vFsCmPBhT4SCtNmnJchqeJnJe` 数据
|
||||
2. 支持按时间范围、提交人、关键词筛选
|
||||
3. 每6小时自动同步最新群消息
|
||||
|
||||
### 查询微信用户反馈
|
||||
1. 连接MySQL数据库 `vala_test`,查询 `wechat_group_message` 表
|
||||
2. 支持按时间范围、发送人、关键词、消息类型筛选
|
||||
3. 数据实时更新,可查询最新反馈
|
||||
|
||||
## 注意事项
|
||||
|
||||
- 所有文档操作使用 Bot 身份(`--as bot`),不触发用户授权
|
||||
- 所有文档/数据库操作默认使用只读权限,避免修改原始数据
|
||||
- 所有外部操作使用 Bot 身份(`--as bot`),不触发用户授权
|
||||
- 反馈正文会被总结梳理(不超过 300 字),同时保留原始反馈以供查阅
|
||||
- 任何人都可以提交反馈,无权限限制
|
||||
|
||||
Loading…
Reference in New Issue
Block a user