Commit Graph

167 Commits

Author SHA1 Message Date
liuwei
aa56a7ca02 移除响应指令管理规则测试功能及接口
1. 删除页面中的规则测试区域,简化管理端交互。

2. 删除前端关联状态与方法,避免无用请求与冗余代码。

3. 删除后端/api/test_match接口,保持蓝图能力与页面一致。
2026-04-23 14:23:35 +08:00
liuwei
37d6c36e2c 修复中文文件名上传wav误判为不支持类型
1. 上传扩展名校验改为基于原始文件名提取,避免secure_filename清洗后丢失点号导致误判。

2. 重建安全文件名时分离basename和扩展名,兼容中文文件名与无效basename场景。

3. 继续保留媒体类型白名单校验,不放宽安全边界。
2026-04-23 13:50:02 +08:00
liuwei
3c7becd94f 响应指令管理支持媒体上传并自动回填路径
1. 新增响应指令管理专用媒体上传接口,按图片语音视频白名单校验并分目录存储。

2. 在动作配置UI中为图片语音视频增加上传按钮,上传成功后自动回填本地绝对路径。

3. 保留结构化动作表单,进一步减少手工维护路径和JSON的场景。
2026-04-23 13:30:17 +08:00
liuwei
d61fb8bc8a 新增趣味指令剧本功能并接入拍一拍事件触发
1. 新增趣味指令规则数据层与服务层,支持应用级缓存+Redis+MySQL三级读取与缓存刷新。

2. 新增 fun_command_play 插件,支持文本/图片/语音/视频/卡片/App 多媒体响应,并接入群权限开关。

3. 新增拍一拍事件识别(PAT)并纳入统一触发模型。

4. 新增后台页面与API:规则增删改查、启停、命中测试。

5. 将趣味指令剧本接入 Dashboard 菜单与蓝图注册,并补充数据库迁移脚本。
2026-04-23 12:31:52 +08:00
liuwei
f438f0f955 后台账号体系改造:接入t_admin_数据库账号与前端改密
变更项:
1. 新增 db/admin_account_db.py,提供 t_admin_accounts 表初始化、PBKDF2口令哈希、登录校验、登录信息回写与密码更新能力。
2. DashboardServer 启动时接入账号数据层,自动建表并把旧配置默认账号迁移为数据库账号种子。
3. 重构 auth 登录逻辑:优先走数据库账号鉴权,保留旧配置账号回退;新增 /api/auth/change_password 接口支持在线修改密码。
4. base.html 增加顶部修改密码入口与弹窗表单,前端可直接提交旧密码与新密码完成改密。
5. login.html 增强小屏适配:允许纵向滚动、768以下隐藏展示侧栏并优化输入区间距与字号,修复移动端登录体验。
6. 新增迁移脚本 db/scripts/migrations/20260423_add_admin_account_table.sql,便于独立数据库升级。
2026-04-23 09:09:19 +08:00
liuwei
055406d207 feat(trendradar): 新增空权限插件并接入webhook群权限校验
- 新建 trendradar_permission 空插件,仅注册 TRENDRADAR_WEBHOOK 功能用于后台群级开关

- webhook 发送前强制校验群权限,未开启群加入 blocked_groups 并拦截

- 更新对接文档,补充权限开关的启用步骤与返回字段说明
2026-04-21 16:37:23 +08:00
liuwei
ace2af7dba feat(webhook): 新增TrendRadar webhook适配入口
- 新增 /webhook/trendradar 接口,支持TrendRadar通用Webhook推送

- 支持 token 校验、默认目标群配置、可选payload覆盖目标群

- 将Webhook蓝图注册到Dashboard服务,并补充配置项

- 新增对接说明文档,提供TrendRadar环境变量模板示例
2026-04-21 16:27:55 +08:00
liuwei
061f2b8084 feat: 重构LLM配置为Provider模板+Dify应用+Scene绑定
变更项:

1. 新增 LLM 目录数据层(t_llm_provider_templates/t_llm_dify_apps/t_llm_backends/t_llm_scenes/t_llm_catalog_meta),支持三层配置管理。

2. Robot 启动接入 llm_catalog_db:自动建表并从旧 llm(backends/scenes) 配置迁移初始化。

3. LLMRegistry 改为优先读取目录模型并按 scene 解析:dify_app 自动合并 Provider 模板与 app_key 差异,降低重复配置。

4. system 蓝图 /api/system/llm_config 改为目录模型读写,新增完整校验(provider引用、app_key、scene目标合法性)。

5. system_llm 页面重构为四块:Provider 模板、Dify 应用、通用 Backend、Scene 绑定,并展示插件依赖拓扑。

6. 保留 YAML 旧结构兜底展示与运行时回退,保证目录表异常时系统仍可运行。
2026-04-20 15:09:24 +08:00
liuwei
1446bf5f39 feat: 将LLM配置主存储迁移到MySQL
变更项: 1) 新增 t_llm_config 数据访问层与建表逻辑。 2) Robot 启动时自动初始化并在空库时从 YAML 导入。 3) 后台 system LLM API 改为读写 MySQL。 4) LLMRegistry 改为优先 MySQL 读取并回退 YAML。 5) DashboardServer 挂载 llm_config_db 提供后台访问。
2026-04-20 14:51:43 +08:00
liuwei
ef49588485 refactor: 移除LLM旧兼容入口并统一scene单路由
变更项:

1. LLMRegistry 仅保留 scene 入口,删除 backend_name/backend_ref/scene_ref 等兼容解析分支,未声明 scene 时仅保留直连配置。

2. Dify/GlobalNews/GameTask 插件初始化改为仅传 scene,不再拼接 backend/provider/url 等旧兼容字段。

3. 清理插件配置冗余:dify/global_news/game_task/douyu 的 config.toml 删除 backend 字段,统一由 scene 映射后端。

4. 后台 system API 调整为严格模式:插件依赖扫描仅采集 scene;scene 保存时必须绑定有效 backend。

5. 后台页面去除拓扑中的配置Backend冗余列,并新增前端校验,禁止提交空场景或未绑定后端。
2026-04-20 14:45:03 +08:00
liuwei
7b6bd19781 feat: 引入LLM场景路由与后台拓扑管理能力
变更项:

1. 新增 llm.scenes 场景路由层,支持 scene->backend 统一映射,并补充默认场景配置。

2. 扩展 LLMRegistry,新增 scene 解析逻辑;当声明 scene 时强制按场景路由结果生效,保持旧 backend 配置兼容。

3. 扩展后台 /api/system/llm_config 读写能力,支持 scenes 配置保存;新增插件 LLM 依赖扫描与拓扑数据输出。

4. 升级 system_llm 页面:新增场景路由管理区、插件依赖拓扑表,支持可视化查看 插件->scene->backend->provider。

5. 迁移核心插件配置到 scene 模式(保留兼容字段):dify/global_news/game_task/message_summary/ai_auto_response/member_context/douyu。

6. 调整部分插件初始化默认 llm_config,补充 scene 字段,确保后台场景切换可直接生效。
2026-04-20 14:36:56 +08:00
liuwei
db08a4a15e 插件群状态弹窗支持按群开启/关闭,复用原有群权限缓存管理逻辑 2026-04-20 14:13:51 +08:00
liuwei
634fb4d67e 插件管理新增群状态按钮与群开关明细弹窗,后端补充按插件查询群启用状态接口 2026-04-20 14:09:00 +08:00
liuwei
00f874665d 限制群级插件配置仅开放群成员变更监控并增加后端白名单校验 2026-04-20 11:28:05 +08:00
liuwei
d4b7cb32f6 feat(群级配置): 新增MySQL+Redis持久缓存并接入进群欢迎差异化配置
新增群级插件配置表与服务层,采用MySQL持久化+Redis长期缓存(TTL=-1);后台新增群级插件配置管理页面与API,支持按群按插件维护JSON配置并在修改后同步回填MySQL和刷新Redis;已将群成员变更监控插件接入该配置,支持欢迎文案与卡片URL等按群差异化。
2026-04-20 10:42:46 +08:00
liuwei
c49f5e509c 新增转图运行时健康监控与手动预热
变更项:\n1. 在 markdown_to_image 增加 get_md2img_health_snapshot 健康快照能力,输出 runtime 线程、事件循环、浏览器连接、启动来源与 PID 状态。\n2. 新增系统接口 GET /api/system/md2img_health,支持后台查询转图运行时健康信息。\n3. 新增系统接口 POST /api/system/md2img_warmup,支持后台手动触发转图预热并返回最新状态。\n4. 在资源监控页面接入转图健康状态条,展示运行时在线状态、浏览器连接状态及关键摘要信息。\n5. 在资源监控页面增加转图预热与状态刷新按钮,便于线上快速自愈与排障。\n6. 补充中文注释与错误提示,保持后端与前端可观测性一致。
2026-04-17 10:04:18 +08:00
liuwei
6b68de7f4e 修复系统定时任务时间显示格式异常
变更项:1) 在 system_jobs 蓝图新增时间归一化方法,统一输出为 yyyy-MM-dd HH:mm:ss。2) 系统任务列表接口对 next_run_at 与 last_run_at 做后端格式化。3) 系统任务日志接口对 triggered_at 做后端格式化,避免出现 Fri, 17 Apr ... 的 RFC 时间串。4) 补充中文注释说明格式化策略。
2026-04-17 09:09:48 +08:00
liuwei
60cfcea1ad 修复插件调度日志时间显示格式异常
变更项:1) 在 plugin_schedules 蓝图新增时间归一化方法,统一输出为 yyyy-MM-dd HH:mm:ss。2) 在调度列表接口对 next_run_at/last_run_at/created_at/updated_at 做后端格式化。3) 在调度日志接口对 triggered_at 做后端格式化,避免返回 Fri, 17 Apr 2026 ... 的 RFC 字符串。4) 补充中文注释,说明时间兼容与格式化意图。
2026-04-17 09:00:22 +08:00
liuwei
09eff21761 通讯录群详情新增手动同步群公告按钮
变更项:1) 新增POST接口用于手动同步群公告,仅在手动触发时调用Group/GetChatRoomInfoDetail。2) 同步逻辑采用基础群信息与Detail信息合并后再落库,确保公告可更新且不破坏原有群资料。3) 群详情页公告区域新增同步按钮和加载态,避免重复点击。4) 同步成功后自动刷新当前群资料。5) 补充中文注释说明手动同步链路。
2026-04-16 17:24:49 +08:00
liuwei
77fc15d1fd 完善通讯录群详情展示:补齐群公告/群主/群管理信息
变更项:
1. 数据层新增群资料聚合查询,直接复用 is_owner/is_admin 字段返回群主与管理员列表。
2. 同步群信息时兼容提取群公告并落库,历史库启动时自动补齐 chat_room_announcement 字段。
3. 新增 /contacts/api/group_profile/<roomid> 接口,统一返回群公告、群主、管理员、成员数。
4. 通讯录群详情弹窗新增群主/群成员数/群管理/群公告展示,并在打开详情时自动加载。
5. 补充群成员精简查询头像字段,更新初始化 SQL 中 t_chatrooms 公告字段定义。
2026-04-16 17:04:55 +08:00
liuwei
1a1306ec71 系统定时任务日志持久化:新增入库与后台查询
- 新增系统任务日志表 t_system_job_logs,持久化记录每次执行结果、摘要、耗时、详情JSON\n- SystemJobLoader 注册任务时增加执行包装器:成功/失败均写入数据库日志,失败后继续抛出保证运行态状态一致\n- 系统任务后台日志接口改为查询数据库日志(不再依赖仅内存的 async_job logs),解决重启后日志丢失问题\n- 保持前端日志字段兼容,接口返回映射为 time/level/message 结构
2026-04-16 16:27:53 +08:00
liuwei
014985ac4a feat(plugin-schedule): add DB-driven plugin scheduler and xiuren scheduled push 2026-04-16 15:24:23 +08:00
liuwei
66a9b7c4a3 feat(schedule): move system jobs to DB-driven config and dashboard management 2026-04-16 14:54:23 +08:00
liuwei
ee5c1ebadc 只用表情 XML 里的 md5 + len/totallen 作为发送参数。
不再用图片文件大小、文件名等回退逻辑去“猜参数”。
发送接口不再“先返回发送中”,而是直接调用 SendEmoji 并等待结果:
成功才返回 表情发送成功
失败直接返回具体错误(不会再假成功)
2026-04-15 11:36:22 +08:00
liuwei
d0fa823557 改动结果:
聊天窗口工具栏新增了“表情”按钮,打开表情库弹窗。
表情库会从历史“已下载落盘的表情消息”里自动聚合。
选中后直接通过 send_emoji_message(wxid, md5, total_length) 发原生表情,不是当普通图片发。
仍保持你现在的发送通道和聊天刷新逻辑。
主要改动文件:

后端接口与发送支持:contacts.py
表情资源查询:message_storage.py
前端表情面板与发送交互:contacts_management.html
新增接口:

GET /contacts/api/emojis:返回聚合后的表情库(md5、total_length、预览图)。
POST /contacts/api/send_message 新增 type=emoji。
我也做了 Python 语法检查,相关后端文件都通过了。
你可以直接在聊天弹窗里点“表情”试一下。如果表情库为空,通常是该群还没落盘到 image_path,让媒体下载功能先抓几条表情就会出现。
2026-04-15 11:29:18 +08:00
liuwei
d326ad164f 改动结果:
聊天窗口工具栏新增了“表情”按钮,打开表情库弹窗。
表情库会从历史“已下载落盘的表情消息”里自动聚合。
选中后直接通过 send_emoji_message(wxid, md5, total_length) 发原生表情,不是当普通图片发。
仍保持你现在的发送通道和聊天刷新逻辑。
主要改动文件:

后端接口与发送支持:contacts.py
表情资源查询:message_storage.py
前端表情面板与发送交互:contacts_management.html
新增接口:

GET /contacts/api/emojis:返回聚合后的表情库(md5、total_length、预览图)。
POST /contacts/api/send_message 新增 type=emoji。
我也做了 Python 语法检查,相关后端文件都通过了。
你可以直接在聊天弹窗里点“表情”试一下。如果表情库为空,通常是该群还没落盘到 image_path,让媒体下载功能先抓几条表情就会出现。
2026-04-15 11:24:46 +08:00
liuwei
47f8bd5717 改动结果:
聊天窗口工具栏新增了“表情”按钮,打开表情库弹窗。
表情库会从历史“已下载落盘的表情消息”里自动聚合。
选中后直接通过 send_emoji_message(wxid, md5, total_length) 发原生表情,不是当普通图片发。
仍保持你现在的发送通道和聊天刷新逻辑。
主要改动文件:

后端接口与发送支持:contacts.py
表情资源查询:message_storage.py
前端表情面板与发送交互:contacts_management.html
新增接口:

GET /contacts/api/emojis:返回聚合后的表情库(md5、total_length、预览图)。
POST /contacts/api/send_message 新增 type=emoji。
我也做了 Python 语法检查,相关后端文件都通过了。
你可以直接在聊天弹窗里点“表情”试一下。如果表情库为空,通常是该群还没落盘到 image_path,让媒体下载功能先抓几条表情就会出现。
2026-04-15 11:21:32 +08:00
liuwei
299a32fa16 feat: add real detail views for stats pages 2026-04-13 17:09:21 +08:00
liuwei
d581b9650e feat: improve system message display in dashboard 2026-04-13 15:30:33 +08:00
liuwei
f7da70e920 chore: drop local emoji test artifacts 2026-04-13 12:22:22 +08:00
liuwei
7ee5ba93ab fix: support spaced emoji media attributes 2026-04-13 12:21:06 +08:00
liuwei
45d97b2989 feat: preview emoji media in message list 2026-04-13 12:10:37 +08:00
liuwei
ada1b656e0 feat: dedupe and schedule emoji media downloads 2026-04-13 12:06:58 +08:00
liuwei
9698f9577f feat: revamp contacts chat workspace 2026-04-13 11:47:34 +08:00
liuwei
e20d57b291 chore: remove legacy robot navigation copy 2026-04-13 11:21:00 +08:00
liuwei
f52ace9487 refactor: merge group permissions into contacts 2026-04-13 11:18:59 +08:00
liuwei
ec6c1308db feat: add group detail dashboard insights 2026-04-13 11:04:20 +08:00
liuwei
772f45cb2f feat: separate global llm settings from monitor page 2026-04-08 14:16:37 +08:00
liuwei
3d671c0da0 feat: improve llm settings ui and douyu daily fallback 2026-04-08 14:09:21 +08:00
liuwei
aecb62cb4d refactor: centralize llm backend configuration 2026-04-08 13:43:41 +08:00
liuwei
1671bea3a3 fix: fallback quoted image lookup by md5 2026-04-07 17:58:34 +08:00
liuwei
d99f1a07d1 fix: only use downloaded media paths for quoted images 2026-04-07 17:50:08 +08:00
liuwei
238e478f52 fix: reuse referenced message media in dashboard quotes 2026-04-07 17:44:15 +08:00
liuwei
e823c1049f fix: proxy quoted media in dashboard messages 2026-04-07 17:40:10 +08:00
liuwei
867f00435c feat: improve quoted message rendering in dashboard 2026-04-07 17:35:03 +08:00
liuwei
61edbbe987 fix: simplify emoji message display in dashboard 2026-04-07 13:29:35 +08:00
liuwei
7cdda82e39 feat: add dashboard restart action and improve text button contrast 2026-04-07 13:14:13 +08:00
liuwei
4423f64272 feat: improve friend circle like state handling 2026-04-07 13:08:12 +08:00
liuwei
dd8c5b1829 feat: improve friend circle media and detail rendering 2026-04-07 13:04:19 +08:00
liuwei
e8ed0d4799 feat: add dashboard friend circle management 2026-04-07 12:50:50 +08:00