chore(project): rebranded project as 恭学教育 (GongXue Education)
Some checks failed
Deploy to Runner / deploy (push) Failing after 6m7s

- Updated pom.xml project name, description, and URL to 恭学教育.
- Changed LICENSE copyright holder to 恭学教育 (GongXue Education).
- Rebranded README.md with new project title and tagline.
- Replaced @author 芋道源码 with @author 恭学教育 across all Java source files.
- Updated Swagger metadata with 恭学教育 API title and admin@gongxue.com.
- Added Gitea Actions CI pipeline for automated build and deployment.
This commit is contained in:
2026-07-27 15:12:32 +08:00
parent fd54f07889
commit 7426579863
2342 changed files with 2839 additions and 2710 deletions

View File

@@ -15,7 +15,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
@Data
public class AiKnowledgePageReqVO extends PageParam {
@Schema(description = "知识库名称", example = "芋艿")
@Schema(description = "知识库名称", example = "管理员")
private String name;
@Schema(description = "是否启用", example = "1")

View File

@@ -1,4 +1,4 @@
/**
* TODO 芋艿:站位,无特殊作用
* TODO 管理员:站位,无特殊作用
*/
package cn.iocoder.yudao.module.ai.controller.app;

View File

@@ -11,7 +11,7 @@ import lombok.*;
/**
* AI API 秘钥 DO
*
* @author 芋道源码
* @author 恭学教育
*/
@TableName("ai_api_key")
@KeySequence("ai_api_key_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。

View File

@@ -11,7 +11,7 @@ import lombok.*;
/**
* AI 工具 DO
*
* @author 芋道源码
* @author 恭学教育
*/
@TableName("ai_tool")
@KeySequence("ai_tool_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。

View File

@@ -84,7 +84,7 @@ public class AiMusicDO extends BaseDO {
* 枚举 {@link AiPlatformEnum}
*/
private String platform;
// TODO @芋艿modelId
// TODO @管理员modelId
/**
* 模型
*/

View File

@@ -12,7 +12,7 @@ import java.util.List;
/**
* AI 聊天对话 Mapper
*
* @author 芋道源码
* @author 恭学教育
*/
@Mapper
public interface AiChatConversationMapper extends BaseMapperX<AiChatConversationDO> {

View File

@@ -11,7 +11,7 @@ import org.apache.ibatis.annotations.Mapper;
/**
* AI API 密钥 Mapper
*
* @author 芋道源码
* @author 恭学教育
*/
@Mapper
public interface AiApiKeyMapper extends BaseMapperX<AiApiKeyDO> {

View File

@@ -12,7 +12,7 @@ import java.util.List;
/**
* AI 工具 Mapper
*
* @author 芋道源码
* @author 恭学教育
*/
@Mapper
public interface AiToolMapper extends BaseMapperX<AiToolDO> {

View File

@@ -9,7 +9,7 @@ import java.util.Arrays;
/**
* AI 模型类型的枚举
*
* @author 芋道源码
* @author 恭学教育
*/
@Getter
@RequiredArgsConstructor

View File

@@ -60,7 +60,7 @@ import org.springframework.context.annotation.Configuration;
import java.util.List;
/**
* 芋道 AI 自动配置
* 恭学 AI 自动配置
*
* @author fansili
*/

View File

@@ -4,7 +4,7 @@ import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
* 芋道 AI 配置类
* 恭学 AI 配置类
*
* @author fansili
* @since 1.0

View File

@@ -105,7 +105,7 @@ import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.
/**
* AI Model 模型工厂的实现类
*
* @author 芋道源码
* @author 恭学教育
*/
public class AiModelFactoryImpl implements AiModelFactory {

View File

@@ -12,7 +12,7 @@ import reactor.core.publisher.Flux;
/**
* 百川 {@link ChatModel} 实现类
*
* @author 芋道源码
* @author 恭学教育
*/
@Slf4j
@RequiredArgsConstructor

View File

@@ -12,7 +12,7 @@ import reactor.core.publisher.Flux;
/**
* MiniMax {@link ChatModel} 实现类
*
* @author 芋道源码
* @author 恭学教育
*/
@Slf4j
@RequiredArgsConstructor

View File

@@ -12,7 +12,7 @@ import reactor.core.publisher.Flux;
/**
* 月之暗面 {@link ChatModel} 实现类
*
* @author 芋道源码
* @author 恭学教育
*/
@Slf4j
@RequiredArgsConstructor

View File

@@ -12,7 +12,7 @@ import reactor.core.publisher.Flux;
/**
* 阶跃星辰 {@link ChatModel} 实现类
*
* @author 芋道源码
* @author 恭学教育
*/
@Slf4j
@RequiredArgsConstructor

View File

@@ -12,7 +12,7 @@ import reactor.core.publisher.Flux;
/**
* 文心一言 {@link ChatModel} 实现类
*
* @author 芋道源码
* @author 恭学教育
*/
@Slf4j
@RequiredArgsConstructor

View File

@@ -12,7 +12,7 @@ import reactor.core.publisher.Flux;
/**
* 智谱 {@link ChatModel} 实现类
*
* @author 芋道源码
* @author 恭学教育
*/
@Slf4j
@RequiredArgsConstructor

View File

@@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.ai.framework.ai.core.webserch;
/**
* 网络搜索客户端接口
*
* @author 芋道源码
* @author 恭学教育
*/
public interface AiWebSearchClient {

View File

@@ -26,7 +26,7 @@ import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.
*
* @see <a href="https://open.bochaai.com/overview">博查 AI 开放平台</a>
*
* @author 芋道源码
* @author 恭学教育
*/
@Slf4j
public class AiBoChaWebSearchClient implements AiWebSearchClient {

View File

@@ -1,6 +1,6 @@
/**
* 属于 ai 模块的 framework 封装
*
* @author 芋道源码
* @author 恭学教育
*/
package cn.iocoder.yudao.module.ai.framework;

View File

@@ -8,7 +8,7 @@ import org.springframework.context.annotation.Configuration;
/**
* ai 模块的 web 组件的 Configuration
*
* @author 芋道源码
* @author 恭学教育
*/
@Configuration(proxyBeanMethods = false)
public class AiWebConfiguration {

View File

@@ -85,7 +85,7 @@ public class AiChatMessageServiceImpl implements AiChatMessageService {
*/
private static final Integer WEB_SEARCH_COUNT = 10;
// TODO @芋艿:后续优化下对话的 Prompt 整体结构
// TODO @管理员:后续优化下对话的 Prompt 整体结构
/**
* 知识库转 {@link UserMessage} 的内容模版
@@ -339,7 +339,7 @@ public class AiChatMessageServiceImpl implements AiChatMessageService {
if (attachmentUserMessage != null) {
chatMessages.add(attachmentUserMessage);
}
// TODO @芋艿:历史的知识库;历史的搜索,要不要拼接?
// TODO @管理员:历史的知识库;历史的搜索,要不要拼接?
});
// 1.3 当前 user message 新发送消息

View File

@@ -9,7 +9,7 @@ import jakarta.validation.constraints.NotEmpty;
/**
* AI 知识库段落搜索 Request BO
*
* @author 芋道源码
* @author 恭学教育
*/
@Data
public class AiKnowledgeSegmentSearchReqBO {

View File

@@ -5,7 +5,7 @@ import lombok.Data;
/**
* AI 知识库段落搜索 Response BO
*
* @author 芋道源码
* @author 恭学教育
*/
@Data
public class AiKnowledgeSegmentSearchRespBO {

View File

@@ -11,7 +11,7 @@ import java.util.List;
/**
* AI API 密钥 Service 接口
*
* @author 芋道源码
* @author 恭学教育
*/
public interface AiApiKeyService {

View File

@@ -20,7 +20,7 @@ import static cn.iocoder.yudao.module.ai.enums.ErrorCodeConstants.API_KEY_NOT_EX
/**
* AI API 密钥 Service 实现类
*
* @author 芋道源码
* @author 恭学教育
*/
@Service
@Validated

View File

@@ -12,7 +12,7 @@ import java.util.List;
/**
* AI 工具 Service 接口
*
* @author 芋道源码
* @author 恭学教育
*/
public interface AiToolService {

View File

@@ -22,7 +22,7 @@ import static cn.iocoder.yudao.module.ai.enums.ErrorCodeConstants.TOOL_NOT_EXIST
/**
* AI 工具 Service 实现类
*
* @author 芋道源码
* @author 恭学教育
*/
@Service
@Validated

View File

@@ -24,7 +24,7 @@ import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.
/**
* 工具:列出指定目录的文件列表
*
* @author 芋道源码
* @author 恭学教育
*/
@Component("directory_list")
public class DirectoryListToolFunction implements Function<DirectoryListToolFunction.Request, DirectoryListToolFunction.Response> {

View File

@@ -19,7 +19,7 @@ import static cn.hutool.core.date.DatePattern.NORM_DATETIME_PATTERN;
/**
* 工具:查询指定城市的天气信息
*
* @author 芋道源码
* @author 恭学教育
*/
@Component("weather_query")
public class WeatherQueryToolFunction

View File

@@ -29,7 +29,7 @@ import static cn.iocoder.yudao.module.ai.enums.ErrorCodeConstants.API_CONFIG_PLA
/**
* Spring AI 工具类
*
* @author 芋道源码
* @author 恭学教育
*/
public class AiUtils {
@@ -99,7 +99,7 @@ public class AiUtils {
switch (platform) {
case TONG_YI:
return DashScopeChatOptions.builder().model(model).temperature(temperature).maxToken(maxTokens)
.enableThinking(true) // TODO 芋艿:默认都开启 thinking 模式,后续可以让用户配置
.enableThinking(true) // TODO 管理员:默认都开启 thinking 模式,后续可以让用户配置
.multiModel(TONG_YI_MULTI_MODELS.contains(model)) // 是否多模态模型
.toolCallbacks(toolCallbacks).toolContext(toolContext).build();
case DEEP_SEEK:

View File

@@ -7,7 +7,7 @@ import org.apache.tika.Tika;
/**
* 文件类型 Utils
*
* @author 芋道源码
* @author 恭学教育
*/
@Slf4j
public class FileTypeUtils {

View File

@@ -6,7 +6,7 @@ import org.springframework.ai.chat.prompt.ChatOptions;
import java.lang.reflect.Method;
/**
* TODO 芋艿spring-ai-alibaba 2.0.0-M1.1 仍依赖旧的 Spring AI ToolExecutionEligibilityPredicate
* TODO 管理员spring-ai-alibaba 2.0.0-M1.1 仍依赖旧的 Spring AI ToolExecutionEligibilityPredicate
* 临时补齐;升级到兼容 Spring AI 2.0.0 的 spring-ai-alibaba 版本后,删除本包下的 shim。
*/
public class DefaultToolExecutionEligibilityPredicate implements ToolExecutionEligibilityPredicate {

View File

@@ -7,7 +7,7 @@ import org.springframework.util.Assert;
import java.util.function.BiPredicate;
/**
* TODO 芋艿spring-ai-alibaba 2.0.0-M1.1 仍依赖旧的 Spring AI ToolExecutionEligibilityPredicate
* TODO 管理员spring-ai-alibaba 2.0.0-M1.1 仍依赖旧的 Spring AI ToolExecutionEligibilityPredicate
* 临时补齐;升级到兼容 Spring AI 2.0.0 的 spring-ai-alibaba 版本后,删除本包下的 shim。
*/
public interface ToolExecutionEligibilityPredicate extends BiPredicate<ChatOptions, ChatResponse> {

View File

@@ -21,7 +21,7 @@ import static cn.iocoder.yudao.module.ai.util.AiUtils.validateApiKey;
/**
* {@link AnthropicChatModel} 集成测试类
*
* @author 芋道源码
* @author 恭学教育
*/
public class AnthropicChatModelTest {

View File

@@ -21,7 +21,7 @@ import static cn.iocoder.yudao.module.ai.util.AiUtils.validateApiKey;
/**
* Azure OpenAI 集成测试
*
* @author 芋道源码
* @author 恭学教育
*/
public class AzureOpenAIChatModelTests {

View File

@@ -23,7 +23,7 @@ import static cn.iocoder.yudao.module.ai.util.AiUtils.validateApiKey;
/**
* {@link BaiChuanChatModel} 集成测试
*
* @author 芋道源码
* @author 恭学教育
*/
public class BaiChuanChatModelTests {

View File

@@ -18,7 +18,7 @@ import java.util.Objects;
/**
* 基于 {@link OpenAiChatModel} 集成 Coze 测试
*
* @author 芋道源码
* @author 恭学教育
*/
public class CozeChatModelTests {

View File

@@ -22,7 +22,7 @@ import static cn.iocoder.yudao.module.ai.util.AiUtils.validateApiKey;
/**
* {@link DeepSeekChatModel} 集成测试
*
* @author 芋道源码
* @author 恭学教育
*/
public class DeepSeekChatModelTests {

View File

@@ -18,7 +18,7 @@ import java.util.Objects;
/**
* 基于 {@link OpenAiChatModel} 集成 Dify 测试
*
* @author 芋道源码
* @author 恭学教育
*/
public class DifyChatModelTests {

View File

@@ -23,7 +23,7 @@ import static cn.iocoder.yudao.module.ai.util.AiUtils.validateApiKey;
/**
* {@link DouBaoChatModel} 集成测试
*
* @author 芋道源码
* @author 恭学教育
*/
public class DouBaoChatModelTests {

View File

@@ -18,7 +18,7 @@ import java.util.Objects;
/**
* 基于 {@link OpenAiChatModel} 集成 FastGPT 测试
*
* @author 芋道源码
* @author 恭学教育
*/
public class FastGPTChatModelTests {

View File

@@ -24,7 +24,7 @@ import static cn.iocoder.yudao.module.ai.util.AiUtils.validateApiKey;
/**
* {@link GoogleGenAiChatModel} 集成测试
*
* @author 芋道源码
* @author 恭学教育
*/
public class GeminiChatModelTests {

View File

@@ -22,7 +22,7 @@ import static cn.iocoder.yudao.module.ai.util.AiUtils.validateApiKey;
/**
* {@link GrokChatModel} 集成测试
*
* @author 芋道源码
* @author 恭学教育
*/
public class GrokChatModelTests {

View File

@@ -23,7 +23,7 @@ import static cn.iocoder.yudao.module.ai.util.AiUtils.validateApiKey;
/**
* {@link HunYuanChatModel} 集成测试
*
* @author 芋道源码
* @author 恭学教育
*/
public class HunYuanChatModelTests {

View File

@@ -19,7 +19,7 @@ import java.util.List;
/**
* {@link OllamaChatModel} 集成测试
*
* @author 芋道源码
* @author 恭学教育
*/
public class LlamaChatModelTests {

View File

@@ -23,7 +23,7 @@ import static cn.iocoder.yudao.module.ai.util.AiUtils.validateApiKey;
/**
* {@link MiniMaxChatModel} 的集成测试
*
* @author 芋道源码
* @author 恭学教育
*/
public class MiniMaxChatModelTests {

View File

@@ -23,7 +23,7 @@ import static cn.iocoder.yudao.module.ai.util.AiUtils.validateApiKey;
/**
* {@link MoonshotChatModel} 的集成测试
*
* @author 芋道源码
* @author 恭学教育
*/
public class MoonshotChatModelTests {

View File

@@ -18,7 +18,7 @@ import java.util.List;
/**
* {@link OllamaChatModel} 集成测试
*
* @author 芋道源码
* @author 恭学教育
*/
public class OllamaChatModelTests {

View File

@@ -21,7 +21,7 @@ import static cn.iocoder.yudao.module.ai.util.AiUtils.validateApiKey;
/**
* {@link OpenAiChatModel} 集成测试
*
* @author 芋道源码
* @author 恭学教育
*/
public class OpenAIChatModelTests {
@@ -75,7 +75,7 @@ public class OpenAIChatModelTests {
}).then().block();
}
// TODO @芋艿:无法触发思考的字段返回,需要 response apihttps://github.com/spring-projects/spring-ai/issues/2962
// TODO @管理员:无法触发思考的字段返回,需要 response apihttps://github.com/spring-projects/spring-ai/issues/2962
@Test
@Disabled
public void testStream_thinking() {

View File

@@ -24,7 +24,7 @@ import static cn.iocoder.yudao.module.ai.util.AiUtils.validateApiKey;
/**
* {@link SiliconFlowChatModel} 集成测试
*
* @author 芋道源码
* @author 恭学教育
*/
public class SiliconFlowChatModelTests {

View File

@@ -23,7 +23,7 @@ import static cn.iocoder.yudao.module.ai.util.AiUtils.validateApiKey;
/**
* {@link StepFunChatModel} 集成测试
*
* @author 芋道源码
* @author 恭学教育
*/
public class StepFunChatModelTests {

View File

@@ -23,7 +23,7 @@ import static cn.iocoder.yudao.module.ai.util.AiUtils.validateApiKey;
/**
* {@link ZhiPuChatModel} 的集成测试
*
* @author 芋道源码
* @author 恭学教育
*/
public class ZhiPuAiChatModelTests {

View File

@@ -10,7 +10,7 @@ import java.util.List;
/**
* {@link MidjourneyApi} 集成测试
*
* @author 芋道源码
* @author 恭学教育
*/
public class MidjourneyApiTests {

View File

@@ -15,7 +15,7 @@ import static cn.iocoder.yudao.module.ai.util.AiUtils.validateApiKey;
/**
* {@link DashScopeImageModel} 集成测试类
*
* TODO @芋艿spring-ai-alibaba-dashscope1.1.2.2)的 {@code DashScopeImageApi#resolveImagePath} 未给 {@code wan2.7-image} 加路由分支,
* TODO @管理员spring-ai-alibaba-dashscope1.1.2.2)的 {@code DashScopeImageApi#resolveImagePath} 未给 {@code wan2.7-image} 加路由分支,
* 会落到默认的 {@code text2image/image-synthesis} 异步端点 + 旧版 {@code prompt} 入参,
* 而该模型实际要求 {@code multimodal-generation/generation} 同步端点 + {@code messages} 入参,
* 端点、异步头、入参结构全部对不上,所以走 SDK 直接调用必失败。
@@ -36,7 +36,7 @@ public class TongYiImagesModelTest {
.build())
.build();
// TODO @芋艿
// TODO @管理员
@Test
@Disabled
public void imageCallTest() {

View File

@@ -10,7 +10,7 @@ import org.junit.jupiter.api.Test;
/**
* {@link AiBoChaWebSearchClient} 集成测试类
*
* @author 芋道源码
* @author 恭学教育
*/
public class AiBoChaWebSearchClientTest {