fix: auto-publish log showing unpublished, merge changelog, version to 1.0.0-beta.2
This commit is contained in:
+1
-1
@@ -5,7 +5,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group 'top.nxxy335.commentaiautopilot'
|
group 'top.nxxy335.commentaiautopilot'
|
||||||
version '1.0.0-beta.2-r8k4n2'
|
version '1.0.0-beta.2'
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
|||||||
+13
-54
@@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
### Bug 修复
|
### Bug 修复
|
||||||
|
|
||||||
|
- **修复自动发布后日志显示未发布**:`generateAndPublish` 中 `Mono<Void>` 的 empty 信号触发 `switchIfEmpty` 导致 `publishReply` 被调用两次,第二次覆盖 `published=false`
|
||||||
- **修复 RateLimitService 线程泄漏**:清理线程未在插件停止时关闭,实现 `DisposableBean` 正确释放资源
|
- **修复 RateLimitService 线程泄漏**:清理线程未在插件停止时关闭,实现 `DisposableBean` 正确释放资源
|
||||||
- **修复 ReviewService 提示词不匹配**:审核提示词要求"重新生成"但代码未使用重新生成的内容,移除误导性指令
|
- **修复 ReviewService 提示词不匹配**:审核提示词要求"重新生成"但代码未使用重新生成的内容,移除误导性指令
|
||||||
- **修复设置页面按钮图标文字对齐**:通过 `:deep(.btn-content)` 设置 inline-flex 布局,图标和文字并排显示
|
- **修复设置页面按钮图标文字对齐**:通过 `:deep(.btn-content)` 设置 inline-flex 布局,图标和文字并排显示
|
||||||
@@ -33,15 +34,24 @@
|
|||||||
|
|
||||||
## v1.0.0-beta.1
|
## v1.0.0-beta.1
|
||||||
|
|
||||||
> 2026-06-16
|
> 2026-06-05
|
||||||
|
|
||||||
### 新功能
|
### 新功能
|
||||||
|
|
||||||
- **AI Foundation 反射集成**:通过运行时反射调用 AI Foundation 插件的 `AiModelService`,无需 `pluginDependencies`,彻底解决跨 ClassLoader 类加载问题
|
- **自动回复**:监听新评论,自动调用 AI 生成回复
|
||||||
|
- **多语言适配**:根据评论语言自动用对应语言回复
|
||||||
|
- **情感分析**:分析评论情感倾向,根据情感调整回复语气
|
||||||
- **草稿模式**:关闭"自动发布"后,AI 回复将保存为草稿,需站长审核后才发布
|
- **草稿模式**:关闭"自动发布"后,AI 回复将保存为草稿,需站长审核后才发布
|
||||||
- **多 AI 角色支持**:支持配置多个 AI 虚拟角色,每个角色有独立的提示词、头像和模型
|
- **多 AI 角色支持**:支持配置多个 AI 虚拟角色,每个角色有独立的提示词、头像和模型
|
||||||
- **提示词预设**:内置多种回复风格预设(专业型、幽默型、简洁型等),可自由组合
|
- **提示词预设**:内置多种回复风格预设(专业型、幽默型、简洁型等),可自由组合
|
||||||
- **每日回复趋势图**:首页新增每日回复数量柱状图,支持 7 天/30 天/全部切换
|
- **文章/页面级开关**:在文章编辑器中直接控制是否启用 AI 回复
|
||||||
|
- **评论者黑名单**:屏蔽指定评论者,不触发 AI 回复
|
||||||
|
- **安全审核**:AI 生成的内容经过安全审核,不合规内容自动拒绝
|
||||||
|
- **Prompt 模板**:支持自定义 Prompt 模板,提供多种模板变量
|
||||||
|
- **仪表盘统计**:显示回复数等统计信息
|
||||||
|
- **日志筛选搜索**:按状态、情感筛选,关键词搜索
|
||||||
|
- **数据清理**:自动清理超过指定天数的旧记录
|
||||||
|
- **AI Foundation 集成**:使用 AI Foundation 插件提供的 AI 模型能力
|
||||||
- **对话历史查看**:支持查看 AI 回复的完整对话上下文
|
- **对话历史查看**:支持查看 AI 回复的完整对话上下文
|
||||||
|
|
||||||
### Bug 修复
|
### Bug 修复
|
||||||
@@ -57,54 +67,3 @@
|
|||||||
- 审批逻辑优化:先查找已有 Reply 扩展再决定创建或更新
|
- 审批逻辑优化:先查找已有 Reply 扩展再决定创建或更新
|
||||||
- 移除不必要的 `AiFoundationConfiguration` 配置类
|
- 移除不必要的 `AiFoundationConfiguration` 配置类
|
||||||
- 前端 UI 优化:移除编辑功能、简化角色排序逻辑、清理无用代码
|
- 前端 UI 优化:移除编辑功能、简化角色排序逻辑、清理无用代码
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## v0.0.3
|
|
||||||
|
|
||||||
> 2026-06-15
|
|
||||||
|
|
||||||
### 新功能
|
|
||||||
|
|
||||||
- 多 AI 角色支持:支持创建多个 AI 角色,每个角色有独立的昵称、人格提示词和 Gravatar 头像
|
|
||||||
- 草稿模式初步实现:AI 回复可先存为草稿,管理员审核后再发布
|
|
||||||
- 提示词预设:内置友好型、专业型、幽默型、简洁型预设风格
|
|
||||||
|
|
||||||
### 改进
|
|
||||||
|
|
||||||
- 增强插件可靠性与可用性
|
|
||||||
- 文档全面更新
|
|
||||||
- 前端 UI 优化
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## v0.0.2
|
|
||||||
|
|
||||||
> 2026-06-10
|
|
||||||
|
|
||||||
### 新功能
|
|
||||||
|
|
||||||
- 自动回复:监听新评论,自动调用 AI 生成回复
|
|
||||||
- 多语言适配:根据评论语言自动用对应语言回复
|
|
||||||
- 情感分析:分析评论情感倾向,根据情感调整回复语气
|
|
||||||
- 文章/页面级开关:在文章编辑器中直接控制是否启用 AI 回复
|
|
||||||
- 评论者黑名单:屏蔽指定评论者,不触发 AI 回复
|
|
||||||
- 手动触发:在评论管理页面对历史评论手动触发 AI 回复
|
|
||||||
- 安全审核:AI 生成的内容经过安全审核,不合规内容自动拒绝
|
|
||||||
- Prompt 模板:支持自定义 Prompt 模板,提供多种模板变量
|
|
||||||
- 仪表盘统计:显示回复数、情感分布等图表
|
|
||||||
- 日志筛选搜索:按状态、情感筛选,关键词搜索
|
|
||||||
- 数据清理:自动清理超过指定天数的旧记录
|
|
||||||
- AI Foundation 集成:使用 AI Foundation 插件提供的 AI 模型能力
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## v0.0.1
|
|
||||||
|
|
||||||
> 2026-06-05
|
|
||||||
|
|
||||||
### 初始版本
|
|
||||||
|
|
||||||
- 基础插件框架搭建
|
|
||||||
- 基本评论监听功能
|
|
||||||
- AI 回复生成核心逻辑
|
|
||||||
|
|||||||
@@ -231,12 +231,13 @@ public class AiReplyOrchestrator {
|
|||||||
}
|
}
|
||||||
return publishReply(context, aiReply, replyRecord, reviewResult.score(), personaName);
|
return publishReply(context, aiReply, replyRecord, reviewResult.score(), personaName);
|
||||||
})
|
})
|
||||||
.switchIfEmpty(
|
|
||||||
publishReply(context, aiReply, replyRecord, 100, personaName)
|
|
||||||
)
|
|
||||||
.onErrorResume(e -> {
|
.onErrorResume(e -> {
|
||||||
log.warn("[Orchestrator] Review error, auto-passing: {}", e.getMessage());
|
// review() already handles errors internally (returns PASS),
|
||||||
return publishReply(context, aiReply, replyRecord, 100, personaName);
|
// so this only fires for errors from publishReply/updateRecord.
|
||||||
|
// Do NOT re-call publishReply to avoid double-publish / overwriting published=false.
|
||||||
|
log.error("[Orchestrator] Error during review/publish for {}: {}",
|
||||||
|
context.commentId(), e.getMessage(), e);
|
||||||
|
return Mono.empty();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,4 +30,4 @@ spec:
|
|||||||
url: "https://github.com/sunny-335/plugin-comment-ai-autopilot/blob/main/LICENSE"
|
url: "https://github.com/sunny-335/plugin-comment-ai-autopilot/blob/main/LICENSE"
|
||||||
settingName: "comment-ai-autopilot-settings"
|
settingName: "comment-ai-autopilot-settings"
|
||||||
configMapName: "comment-ai-autopilot-configmap"
|
configMapName: "comment-ai-autopilot-configmap"
|
||||||
version: "1.0.0-beta.2-r8k4n2"
|
version: "1.0.0-beta.2"
|
||||||
|
|||||||
Reference in New Issue
Block a user