Commit Graph

173 Commits

Author SHA1 Message Date
liuwei
81ea198aa2 去除无效sql 2026-05-07 13:38:26 +08:00
liuwei
825aa612ed 修复首页健康摘要兼容旧版数据库连接管理器 2026-05-06 09:01:59 +08:00
Liu
17264f91e6 Revert "完善后台任务中心历史摘要视图"
This reverts commit 1db8681636.
2026-05-01 12:45:40 +08:00
Liu
024624126e Revert "完善数据层慢SQL观测与消息查询优化"
This reverts commit b2d900070c.
2026-05-01 12:45:40 +08:00
Liu
22c871105a Revert "修复后台弱密码提示误判并恢复server.py编码"
This reverts commit 342b4c0065.
2026-05-01 12:45:35 +08:00
Liu
342b4c0065 修复后台弱密码提示误判并恢复server.py编码
1. 修复数据库账号存在时仍回退 config.toml 判断,导致每次登录重复提示弱密码的问题。
2. 补齐默认管理员密码从旧配置迁移到数据库的同步逻辑,兼容历史部署。
3. 恢复 server.py 为可读 UTF-8 中文版本,并补充后台登录与弱密码判定的回归测试。
2026-05-01 10:49:38 +08:00
liuwei
b2d900070c 完善数据层慢SQL观测与消息查询优化
- 为数据库公共层增加慢 SQL 阈值配置与统一耗时日志记录

- 为消息表补充群成员回溯、群类型过滤和待处理媒体扫描等关键索引

- 将多处按日期查询改为时间范围查询,减少 DATE(timestamp) 导致的索引失效

- 修正消息存储层重复定义的日期范围方法,并更新工程优化文档中的 7.4 当前进展
2026-04-30 16:32:34 +08:00
liuwei
1db8681636 完善后台任务中心历史摘要视图
- 为系统任务和插件调度补充批量历史摘要查询,支持最近成功时间、最近失败原因与累计成功失败次数

- 任务列表接口合并内存运行态与数据库日志态,服务重启后后台仍可回看最近执行结果

- 系统任务页与插件调度页新增健康状态、历史执行摘要与插件调度快捷启停入口

- 更新工程优化文档,记录 7.3 第一阶段当前进展
2026-04-30 16:21:29 +08:00
liuwei
cb99e94493 增强后台登录安全与密码策略 2026-04-30 15:32:41 +08:00
liuwei
23b5d5bef0 优化群管理详情页展示与群成员统计口径
1. 群成员列表仅展示仍在群内的成员,排除已退群用户,避免僵尸成员与成员明细口径不一致。

2. 群成员列表按最后发言时间倒序排序,最近活跃成员优先展示,未发言成员排在后面。

3. 群详情启用功能区域的最后消息改为紧凑预览,图片、视频、链接、表情、XML、系统消息统一显示标记,不再直接展示原始内容。

4. 群功能权限区域默认折叠,需手动展开后再查看和操作,降低详情弹窗的信息噪音。

5. 进群欢迎配置区域默认折叠,需手动展开后再查看和编辑群级差异化欢迎配置。
2026-04-30 14:12:01 +08:00
liuwei
955c2f2797 为积分通胀策略增加Redis日缓存
1. 新增群积分通胀统计的Redis缓存键与按天过期策略,减少重复聚合查询。

2. 新增带缓存的群插件积分消耗统计方法,Redis异常时自动回退实时查询。

3. 调整积分消耗注解优先读取缓存版统计,降低高频群聊场景下的数据库压力。
2026-04-27 13:40:27 +08:00
liuwei
66ac0a7e89 新增群积分通货膨胀策略
1. 新增群聊插件积分真实消耗统计,区分成员持有积分与 SYSTEM 沉淀积分。

2. 为 plugin_points_cost 注解接入按群动态倍率,积分消耗偏低时自动提高实际扣费。

3. 优化积分不足与扣费成功提示,展示基础价、实际价与当前通胀倍率。
2026-04-27 13:35:13 +08:00
liuwei
62e6f67836 持久化表情中文语义资产\n\n- 新增 t_emoji_assets 表及迁移脚本,持久化保存表情发送参数、中文语义与预览图路径\n- 在消息归档与媒体补偿流程中自动回填表情资产,实现收到表情即落语义、补图后回填预览\n- 后台表情库与自动回复优先读取持久化表情资产,仅在空表场景下小范围回补历史数据 2026-04-27 11:52:31 +08:00
liuwei
623ca505d4 打通自动回复与表情语义库联动\n\n- 新增表情语义解析与表情资产查询模块,支持从历史表情中提取可读中文语义\n- 为 ai_auto_response 增加短回复表情匹配器,命中语义时优先发送表情并支持失败回退文本\n- 调整自动回复提示词与配置项,强化短情绪回复场景的表情替换能力 2026-04-27 11:40:44 +08:00
liuwei
19411d19c8 修复后台聊天表情发送易卡住问题\n\n- 将后台表情发送改为异步提交,避免请求线程同步等待导致卡住\n- 增加按 md5 反查历史表情 total_length 的兜底逻辑\n- 为 SendEmoji 增加超时与详细日志,便于定位接口无响应问题 2026-04-27 11:21:11 +08:00
liuwei
fa9dc44bbe 为自动回复增加群画像数据库快照缓存 2026-04-24 16:21:00 +08:00
liuwei
d0480691c3 修复最近上下文只取到当前消息的问题 2026-04-24 15:37:37 +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
fc8af8ff75 fix(schedule): 任务页上次执行时间改为日志兜底
- 新增批量查询接口 get_latest_logs_map,从 t_plugin_schedule_logs 获取各任务最新执行记录

- 插件任务列表拼装时优先用运行时数据,缺失则回填数据库最新日志

- 修复重启后任务页 last_run_at/last_status 显示为空的问题
2026-04-22 09:49:15 +08:00
liuwei
d64d11a384 将@关系批处理业务迁移到 value_rank 插件
- 从 MessageStorageDB 移除@抽取与社交图写入逻辑,消息层仅保留归档职责

- 从系统级任务移除 process_pending_mentions,取消 message_to_db 中对应入口

- 在 value_rank 插件新增定时动作 value_rank_mentions_extract(每10分钟)

- 在插件内实现窗口化批处理(默认10~20分钟前)、@提取、幂等写入明细/边表/日汇总及 unique_interactors 回填

- 新增插件侧可配置参数 mention_batch_size / mention_window_start_minutes / mention_window_end_minutes
2026-04-21 14:10:25 +08:00
liuwei
78adab65b2 增强@批处理执行日志,提升可观测性
- 增加定时@抽取任务开始/结束日志,输出窗口参数、处理条数与耗时

- 在DB批处理层记录查询命中、前3条样本明细、失败样本ID,便于快速排障

- 增加窗口参数异常修正日志,避免误配置导致行为不可见

- 在社交图增量写入处增加跳过/完成日志,明确是否产生新增@关系
2026-04-21 13:58:16 +08:00
liuwei
1ddc1dcf18 优化@批处理窗口:每10分钟仅处理10-20分钟前消息
- 调整待抽取@查询逻辑:默认仅扫描 timestamp 在 [NOW-20m, NOW-10m) 的消息

- 保留 mentioned_user_ids 为空才处理的条件,处理过自动跳过

- 更新 MessageStorage 与系统任务调用参数,统一使用窗口化批处理配置

- 增加窗口参数兜底修正,避免错误配置导致全量扫描
2026-04-21 13:54:41 +08:00
liuwei
906f0905df 将@抽取与社交图写入改为定时批处理
- 精简 archive_message 主链路:仅做消息归档,不再同步执行@解析与社交统计

- 新增 MessageStorageDB.process_pending_mentions 批处理能力,按批次回填 mentioned_user_ids 并写入社交图

- 新增系统任务 process_pending_mentions,每10分钟执行一次(every_seconds=600)

- 增加幂等保护:基于 t_message_mentions 已有记录过滤新增@关系,避免重复累加社交边和热度

- 保留详细中文注释,说明性能优化目标与批处理策略
2026-04-21 13:51:56 +08:00
liuwei
0dc55297bb 增强社交统计并扩展 value_rank 社交榜单命令
- 在消息入库增量链路中回填 unique_interactors,实现去重互动人数实时更新

- 新增社交热度榜命令:社交热度榜 [名次],按互动分/被@/主动@展示

- 新增搭子榜命令:搭子榜 [名次],按无向关系边聚合展示成员组合

- 扩展 ValueRankDB 查询接口,支持社交热度与搭子关系窗口聚合

- 同步更新 value_rank 配置命令列表与帮助文案
2026-04-21 13:45:44 +08:00
liuwei
d4d290fec8 实现 value_rank 首版插件并接入定时重算
- 新增 ValueRank 插件入口、配置与主逻辑(我的身价/身价排行/身价说明/重算身价)

- 新增每日 04:00 调度动作,支持按群批量重算并写入快照

- 实现积分/发言/活跃/社交四维打分与潜水惩罚,采用95分位截断与归一化

- 新增 t_value_rank_snapshot 建表迁移脚本,并同步更新 init.sql

- 代码中补充详细中文注释,说明算法意图、边界处理与稳定性策略
2026-04-21 13:42:57 +08:00
liuwei
32c9f3f035 接通 @ 社交图增量写入链路
- 在消息归档后自动写入 t_message_mentions 明细表(INSERT IGNORE 防重复)

- 在消息归档后自动写入 t_social_edges_daily 日边表(ON DUPLICATE KEY 累加)

- 同步更新 t_value_rank_social_daily 的被@次数与主动@次数,供 value_rank 直接消费

- 优化 @ 提取函数:返回去重列表,并统一过滤 @所有人 与自己@自己

- 保持主链路稳定:社交图写入失败不影响消息归档成功
2026-04-21 13:37:15 +08:00
liuwei
2730595a88 完善 value_rank 社交图设计并落地 @ 结构化存储
- messages 表新增 mentioned_user_ids 字段设计,使用 JSON 数组字符串存储被@用户清单

- 新增社交图相关表设计:t_message_mentions、t_social_edges_daily、t_value_rank_social_daily

- 增加迁移脚本 20260421_add_mentions_and_social_graph_tables.sql,支持现网平滑升级

- 改造 MessageStorageDB 入库流程:解析 msg_source.atuserlist 并写入 mentioned_user_ids

- 更新 value_rank README:补充社交图数据链路、可产出图表及实现说明
2026-04-21 13:34:19 +08:00
liuwei
dfa17c5f95 为 messages 表增加 raw_payload 并落盘完整原始消息
- 在 messages 表结构中新增 raw_payload LONGTEXT 字段(init.sql)

- 新增数据库迁移脚本 20260421_add_raw_payload_to_messages.sql,支持现网平滑加列

- 改造 MessageStorageDB.archive_message:优先写入 raw_payload,若旧库未加列自动回退旧 SQL

- 新增 _serialize_raw_payload 序列化逻辑,按要求保存完整消息信息且不做脱敏

- 增加详细中文注释,说明设计目的与兼容策略
2026-04-21 13:26:57 +08:00
liuwei
08ded8baee refactor: 移除t_llm_config相关代码依赖
变更项:

1. 删除废弃数据层文件 db/llm_config_db.py。

2. Robot 启动流程移除 llm_config_db 初始化与导入逻辑。

3. DashboardServer 移除 llm_config_db 挂载引用。

4. 复查确认代码中已无 t_llm_config/llm_config_db/LLMConfigDBOperator 运行时依赖。
2026-04-20 15:15:38 +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
64e7e82712 优化积分流水写入为昵称优先并覆盖打劫/保释场景 2026-04-20 11:44:26 +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
3226fabcec 新增定时任务重启漏执行补偿机制
变更项:1) 系统任务与插件调度重载后基于应执行时间和执行日志对账,判定是否漏执行。2) 仅在应执行时间已过且日志未覆盖时补跑一次,避免重复补偿。3) system_job_db 与 plugin_schedule_db 新增 get_latest_log_time 查询。4) 增加容差窗口与中文注释,降低误判概率。
2026-04-17 09:38:15 +08:00
liuwei
da1cf5bd02 修复老库群公告字段缺失导致群详情报错
变更项:
1. 新增字段探测与补列逻辑:启动时通过 information_schema 检查 t_chatrooms.chat_room_announcement,不依赖 ADD COLUMN IF NOT EXISTS。
2. save_chatroom_info 改为字段存在才写入群公告,避免 Unknown column。
3. get_chatroom_profile 增加降级查询:字段不存在时返回空公告,不再直接引用缺失列。
4. 增加字段可用性缓存与中文注释,降低重复探测开销。
2026-04-16 17:09:34 +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
9652c2594e 系统业务任务插件化迁移:下沉7项非刚需任务并接入平滑迁移
- 系统任务保留刚需三项:登录巡检、消息计数入库、媒体补偿处理;移除新闻/Epic/排行/PDF/秀人维护等业务型系统任务定义\n- 新增 daily_news、epic_free、daily_ranking、sehuatang_push 四个插件,将原系统业务任务改为插件可调度动作\n- 扩展 xiuren_image 插件调度动作,新增秀人下载、绅士R15下载、图片缓存更新三项维护任务\n- 新增系统任务到插件任务的幂等迁移逻辑:按旧 job_key 映射到插件 action,同步 trigger_type/trigger_config/enabled,并通过 payload 标记防止反复覆盖\n- 在 Robot 启动流程中接入迁移执行与重载,并清理已迁移的历史系统任务记录,避免后台双份维护\n- 扩展插件调度数据库操作:支持按 plugin_name + action_key 精确查询,便于迁移与对账
2026-04-16 16:05:59 +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
d9ce3ce33e 修复仪表盘摘要接口Decimal类型计算报错
变更项:

1. 修复 /api/dashboard_summary 中 success_rate 为 Decimal 与 float 混算导致的异常。

2. 将 success_rate 与 avg_response_time 统一转换为 float,避免后续健康分计算类型冲突。

3. 恢复首页热门信息接口返回,避免因接口失败导致榜单空白。
2026-04-15 17:28:55 +08:00
liuwei
fd21ebf681 修复首页热门信息为空问题并增加历史兜底
变更项:

1. 保留热门用户/热门群组/热门插件逻辑,未移除任何热门模块。

2. 为热门数据增加兜底策略:最近N天无数据时自动回退到全量历史Top5。

3. 覆盖插件、用户、群组三类热门榜单,避免首页出现整块空表。
2026-04-15 17:25:19 +08:00
liuwei
d472b1523b 优化首页指标展示并修复群唯一用户统计
变更项:

1. 修复首页卡片等高问题,统一用户信息与右侧指标区高度,统一热门用户/群组/插件卡片高度。

2. 首页新增三个分析指标:新增用户数、群渗透率、群健康分,并完成前端数据绑定。

3. 优化仪表盘摘要接口,新增 new_users、avg_group_penetration、group_health_score 返回字段。

4. 修复 t_group_stats.unique_users 统计口径,改为按 group_id+plugin_name+command+user_id 去重统计,避免跨群串数据。

5. 新增 t_group_command_user_stats 表结构及索引,并补充到 init.sql。
2026-04-15 17:19:38 +08:00
liuwei
ee5c1ebadc 只用表情 XML 里的 md5 + len/totallen 作为发送参数。
不再用图片文件大小、文件名等回退逻辑去“猜参数”。
发送接口不再“先返回发送中”,而是直接调用 SendEmoji 并等待结果:
成功才返回 表情发送成功
失败直接返回具体错误(不会再假成功)
2026-04-15 11:36:22 +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
4cf5a05088 这次实际改的是按钮背后的同步逻辑,不是页面文案本身。现在 /contacts/api/update 触发后会:
个人联系人、公众号:已存在就跳过,不存在才写入。
群:不再删库重建,已有群保留;新群会写入。
群成员:已存在就跳过,不存在就写入。
如果成员这次不在群里了,会把 db/contacts_db.py 里的 status 标成 2,前端会显示“已退群”。
如果整个群查不到了,也不再删除群资料,只把该群历史成员标记为“已退群”。
改动在:

robot.py
db/contacts_db.py
我还做了语法校验,py_compile 通过。需要的话我也可以继续帮你把“更新通讯录”按钮的成功提示改成更明确,比如“已完成增量同步,未删除历史数据”。
2026-04-15 09:28:44 +08:00
liuwei
299a32fa16 feat: add real detail views for stats pages 2026-04-13 17:09:21 +08:00
liuwei
7df4bd216f feat: gate media downloads by group and retry douyu checks 2026-04-13 15:53:34 +08:00
liuwei
ada1b656e0 feat: dedupe and schedule emoji media downloads 2026-04-13 12:06:58 +08:00