Commit Graph
549 Commits
Author SHA1 Message Date
SXP-Simon 43f80d24f8 feat(feishu): 完善日志和健壮性 2026-03-29 01:02:15 +08:00
SXP-Simon bc916e259d Revert "fix: 统一定时分析名单准入并修复白名单绕过问题 (情况如 #133 所述)"
This reverts commit a3d72e43ab.
2026-03-29 00:36:08 +08:00
SXP-Simon 0cba280a82 feat(feishu): 尝试接入飞书 2026-03-29 00:29:37 +08:00
SXP-Simon 6d40745e79 [v4.9.8] - feat(HatsuneMiku): 新增了一个名为 HatsuneMiku 的模板 (#134 @Shiitin) 2026-03-28 22:45:47 +08:00
SXP-Simon d3eb9b51f5 fix(retry): 降低重试重复并强化 OneBot 假超时拦截
- `onebot_adapter.py#L547-L609` 的路径发送失败逻辑改为:遇到 `timeout/1200/网络错误` 不再立即 Base64 回退,而是继续抛错,由上层进入 10+20+30 秒的多轮观察;每轮都通过 `was_image_sent_recently` 确认后台是否真的已发成功,确认后立刻拦截重试,避免 “假超时” 导致连发。
- `retry.py#L20-L210` 中去重注释已全部换成中文,并补全了 `_cleanup_expired_task_keys`、`_build_task_key`、`_mark_task_finished` 等说明,说明当前去重键由 caption TraceToken 或 html hash 构成,维护两个集合 `_active_task_keys`/`_recent_task_key_ts` 防止同一报告短时间再次入队,构造 task_key 后再 enqueue 并在完成后刷新冷却;`max_retries` 也降到 2 次,并且同群任务会 `sleep(5)` 重新排队,链路上最多留存一份 retry 任务。
2026-03-28 22:33:29 +08:00
SXP-Simon a3d72e43ab fix: 统一定时分析名单准入并修复白名单绕过问题 (情况如 #133 所述) 2026-03-28 21:53:01 +08:00
SXP-Simon 4200631f17 fix(HatsuneMiku): 完善 2026-03-28 21:18:50 +08:00
Shiitin ae96ea9c93 新增了一个名为HatsuneMiku的模板 (#134)
* Add HatsuneMiku template with a placeholder file

* Add files via upload

* Delete src/infrastructure/reporting/templates/HatsuneMiku/nothing

* Add files via upload

* 重新替换了所有文件并增加了之前忘记的PDF模板文件

* Add files via upload

* 将Spring Festival模板预览图替换HatsuneMiku模板预览图

* 更改了HatsuneMiku模板的预览图片的引用方式

* 将HatsuneMiku模板的地址替换为国内可以访问的中转
2026-03-28 12:25:19 +08:00
SXP-Simon 03f2f066b3 fix typo 2026-03-27 13:01:27 +08:00
SXP-Simon b29327674f [v4.9.7] - feat(分析配置细粒度化): 引入三层黑白名单机制(基础群分析开关、定时分析、增量分析),支持更细粒度的群级分析控制;修复自动分析生命周期管理情况避免任务被静默跳过 2026-03-26 23:32:32 +08:00
SXP-Simon 3df898ca69 feat(response_validation): 新增 Pydantic 校验层,健壮化处理 LLM 生成内容 2026-03-26 22:58:04 +08:00
SXP-Simon 7e741854a9 feat(response_format): 使用 OpenAI 格式的 response_format 参数约束 json 格式化数据生成,并且兼容旧版本逻辑,等待本体合并相关参数的传入 2026-03-26 22:56:02 +08:00
SXP-Simon 93704a5d4d fix: 统一表情统计口径并修复用户活跃分析类型标注
- 对齐表情统计规则,确保“报告总表情数”与“用户画像表情数”使用同一判定逻辑。
- 针对 OneBot 适配器已引入的 QQ 表情包信号(sub_type=1):
  - 统计时优先使用 raw_data.sub_type == 1 判定图片型表情。
  - 仅在缺少 sub_type 时,回退到 summary 文本匹配(兼容历史数据)。
- 修复用户画像统计偏差:
  - 移除文本正则(Unicode/Discord)额外计数,避免与报告总数口径不一致。
  - 增加 IMAGE 段表情识别,和群组统计保持一致。
- 修复 basedpyright 类型告警:
  - 为用户活跃结构引入 UserActivityStats TypedDict。
  - 将 analyze_user_activity / get_top_users / get_user_activity_pattern 改为显式类型。
  - 将 bot_self_ids 参数标注调整为 list[str] | None。
- 新增并扩展回归测试:
  - 验证群总表情数与用户表情汇总一致。
  - 验证 sub_type 优先级(sub_type=0 不被 summary 误判)。
- 已通过 ruff check 与相关 pytest 用例。
2026-03-26 19:37:33 +08:00
SXP-Simon 9ed4771730 feat: 完善自动分析名单调度与面板配置说明
- 重构自动分析调度流程:以分层名单解析目标群组,统一报告入口,并按群组模式分发传统/增量任务。

- 新增定时名单与增量名单配置能力:补充 scheduled_group_list(_mode)、incremental_group_list(_mode)、incremental_fallback_enabled。

- 优化失败兜底策略:增量最终报告在超时、异常或无有效结果时,可回退至传统全量分析。

- 完善配置与文档说明:在 _conf_schema.json 与 README 中补充面板操作指引、判定顺序与边界场景说明。

- 兼容旧配置行为:保留废弃接口,并在配置管理中统一名单匹配语义(UMO/群号兼容)。
2026-03-26 19:23:49 +08:00
SXP-Simon aa3ae494ce fix(tg): 修复 Telegram 平台自动分析就绪检查失败以及 ID 匹配诊断逻辑
- 优化 BotManager 的 is_ready_for_auto_analysis 逻辑:将其改为非硬性限制。即使未成功提取机器人 ID (bot_self_ids),也允许定时任务继续运行,从而解决了 Telegram 在 Docker 部署下因 ID 获取延迟导致报告被跳过的问题。
- 强化日志诊断:在 Telegram 消息拦截 (save)、平台发现 (discovery) 和消息拉取 (fetch) 的关键路径中增加 platform_id 显式日志,方便排查多账号环境下的 ID 冲突。
- 在 BotManager 就绪检查中加入调试输出,明确告知分析任务被跳过的具体原因。
2026-03-26 13:33:09 +08:00
SXP-Simon 2539063a3e fix(增量分析): 增量分析任务的生命周期检查,与定时分析保持一致 2026-03-26 13:02:44 +08:00
Dongmay a814c09232 fix(scheduler): schedule_jobs 后重置 _terminating 标志位,修复分析任务静默跳过 (#130 @Dongmayyys) 2026-03-26 00:59:17 +08:00
SXP-Simon 90908cefcb [v4.9.6] - fix(provider): 优化 PDF 模板生成情况,基础设施健壮性增强 2026-03-25 17:43:35 +08:00
SXP-Simon d03b3d5b42 fix: 修复插件任务生命周期管理,避免用户困惑的报错行为 (#125)
- 修复 'NoneType' 报错 (Fix #125): 引入插件终止标志位并完善任务生命周期清理逻辑。
- 强化资源清理:重载时主动取消并等待所有运行中的异步任务(包括手动分析、自动调度和依赖安装),移除危险的属性置空操作,彻底消除重载时的属性访问竞态。
2026-03-25 16:49:14 +08:00
SXP-Simon 1ab409a49e fix(tg): 尝试修复 Telegram 平台自动分析就绪检查失败问题 (#128)
- 在 BotManager 中增加对 Telegram 机器人 ID 提取的支持(支持 `bot.id` 属性),解决 Telegram 环境下因无法识别 Bot ID 导致的自动分析任务跳过问题。
2026-03-25 16:31:42 +08:00
SXP-Simon 82c5cc4cef fix: 修复 JSON 解析中正则贪婪匹配导致的数组截断问题 (#126)
- 将解析 JSON 数组的正则模式从非贪婪 `.*?` 改为贪婪匹配 `.*`,防止内容中包含方括号(如 [UID])时导致 JSON 截断。
- 优化话题、称号、金句等分析逻辑中的正则表达式,使用更严谨的模式处理转义双引号和特殊格式。
2026-03-25 16:15:51 +08:00
SXP-Simon 72ead04182 fix(pdf): 优化 PDF 模板生成情况 2026-03-25 16:09:54 +08:00
SXP-Simon 58615d2752 fix(scrapbook): pdf 版本排版调整 2026-03-25 15:46:38 +08:00
lingyun14 664918e28f feat: 新增文本/表情回复模式开关) (#123 @lingyun14beta)
fixes #115
2026-03-24 00:03:29 +08:00
SXP-Simon 74c292b591 fix(assets): scrapbook 模板图 2026-03-23 17:33:36 +08:00
SXP-Simon 2120800abd [v4.9.5] - fix(chat_quality_analysis 模块): 优化增量分析逻辑,优化提示词 2026-03-23 17:28:17 +08:00
SXP-Simon fcffe7d35a fix(quality_summary): 优化增量分析逻辑,优化提示词 2026-03-23 13:38:12 +08:00
SXP-Simon 91692170a0 [v4.9.4] - feat(chat_quality_analysis 模块): 新增群聊质量锐评功能(灵感来源:感谢 @Nagi-ovo) 2026-03-23 00:53:05 +08:00
oculr 7c749c811e amend: generate_image_report上层抽象接口参数名对齐 2026-03-23 00:42:18 +08:00
oculr d56fd216c2 fix: 修复定时群总结时avatar_getter参数名错误导致图片渲染失败 2026-03-23 00:42:18 +08:00
SXP-Simon 5701599a14 feat: 同步更新其他模板 2026-03-23 00:42:18 +08:00
SXP-Simon 09f3517c69 fix(pdf): 活动图表 2026-03-23 00:42:18 +08:00
SXP-Simon c65d26b4ba fix(close): 统一为异步方法以正确清理 aiohttp 会话和 diskcache 缓存 2026-03-23 00:42:18 +08:00
NyaaByte 4ffcb3065f fix: 修改提示词同时添加后端校验,保证总占比不超过 100% (#119 @J621111)
* fix: 修改提示词同时添加后端校验,保证总占比不超过 100%

* fix: 将 ai 返回的占比限制在  [0, 100]
2026-03-23 00:42:18 +08:00
ca104f2503 Feat/chat quality analysis (#117 @Snow-kal)
* style: 更改模板的显示

* style: 修复显示

* fix: 已按评论建议完成最小修改
2026-03-23 00:42:18 +08:00
SXP-Simon 9a35ed9600 feat(chat_quality_analysis): chat_quality_analysis 模块 2026-03-23 00:42:18 +08:00
oculrandSXP-Simon f40243492f refactor: 报告中的群员头像重构为 diskcache 缓存,过期时间3天;优化代码可读性; (#118 @oculr)
* refactor: 报告中的群员头像重构为diskcache缓存,过期时间3天;优化代码可读性;

* refactor: 进一步优化头像处理逻辑与资源管理生命周期

- **头像处理性能优化**:
  - 将 Base64 转换重构为同步方法,消除微型 CPU 计算任务的异步上下文切换开销。
  - 增强图片 MIME 类型识别能力,通过分析文件头支持 WebP 和 JPEG 魔数检测。
  - 改善下载失败处理:移除了失败结果的持久化缓存(Negative Caching),确保在网络波动恢复后能自动重新尝试获取。
- **资源与生命周期管理**:
  - 完善插件终止流程:增加了显式的缓存关闭逻辑,并与插件卸载钩子集成,确保正确释放持久化层的文件句柄。
- **鲁棒性与调试增强**:
  - 加强对第三方头像获取器返回值的 URL 协议校验,并补充了相应的警告日志。
  - 优化了 Base64 转换等环节的异常日志记录格式,增加了对堆栈追踪的支持。
- **代码整洁度**:
  - 统一并清理了重复的模块导入,移除了方法内部冗余的库导入。
  - 全量应用 Ruff 格式化规范,优化了导入顺序及整体代码布局。

---------

Co-authored-by: SXP-Simon <sxp20061207@163.com>
2026-03-22 23:36:28 +08:00
SXP-Simon 51d14dad0b [v4.9.3] - feat(增量分析): 更新增量分析配置,增加安全上限并优化消息拉取逻 2026-03-21 00:54:00 +08:00
SXP-Simon b2101c3a15 fix(assets): 使用 fastly.jsdelivr.net cdn 实现呈现插件文档页面的图片 2026-03-21 00:13:42 +08:00
SXP-Simon 2cc5f3cb67 fix(onebot): 保持正确的旧拉取逻辑 2026-03-21 00:11:38 +08:00
Wayne E c7fb3db5e8 chore: add QQ and TG assets for README (#114 @ywh555hhh) 2026-03-21 00:01:31 +08:00
SXP-Simon cd6a6294e1 feat(增量分析): 更新增量分析配置,增加安全上限并优化消息拉取逻辑 2026-03-20 23:59:24 +08:00
SXP-Simon f3f93a96c4 fix typo 2026-03-20 21:07:03 +08:00
SXP-Simon 3b8e2b85ba [v4.9.2] - feat(reaction): 将文字反馈调整为表情反馈 2026-03-19 15:14:33 +08:00
SXP-Simon 3ec4de1c99 feat(reaction): 将文字反馈调整为表情反馈 2026-03-19 15:12:44 +08:00
SXP-Simon a71a0a34db [v4.9.1] - feat(persona): 添加分析人格设定的配置选项,并更新相关提示词构建逻辑 2026-03-16 23:49:04 +08:00
SXP-Simon 4cae39d153 feat(分析功能): 添加人格设定的配置选项,并更新相关提示词构建逻辑
feat(persona): 自动检测当前群聊激活的对话所绑定的性格
2026-03-16 23:46:03 +08:00
SXP-Simon 35203b7ca2 chore(logger): 增强群相册相关的日志可视情况 2026-03-16 21:10:17 +08:00
SXP-Simon bf78ef2b8a Merge branch 'main' of https://github.com/SXP-Simon/astrbot_plugin_qq_group_daily_analysis 2026-03-16 20:53:52 +08:00
SXP-Simon 4ea4f26727 fix(群相册): 兼容群相册插件上传 API groupid 参数 int 类型,尝试解决 #112 2026-03-16 20:53:45 +08:00