diff --git a/common-agent-agent/pom.xml b/common-agent-agent/pom.xml new file mode 100644 index 0000000..abdf487 --- /dev/null +++ b/common-agent-agent/pom.xml @@ -0,0 +1,60 @@ + + + 4.0.0 + + + com.bruce + common-agent-parent + 0.0.1-SNAPSHOT + + + common-agent-agent + common-agent-agent + + + + com.bruce + common-agent-common + ${project.version} + + + com.bruce + common-agent-rag + ${project.version} + + + com.bruce + common-agent-modelprovider + ${project.version} + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-web + + + com.baomidou + mybatis-plus-spring-boot4-starter + + + org.projectlombok + lombok + true + + + org.postgresql + postgresql + runtime + + + org.springframework.boot + spring-boot-starter-test + test + + + diff --git a/src/main/java/com/bruce/agent/controller/AgentDefinitionController.java b/common-agent-agent/src/main/java/com/bruce/agent/controller/AgentDefinitionController.java similarity index 100% rename from src/main/java/com/bruce/agent/controller/AgentDefinitionController.java rename to common-agent-agent/src/main/java/com/bruce/agent/controller/AgentDefinitionController.java diff --git a/src/main/java/com/bruce/agent/dto/request/AgentChatRequest.java b/common-agent-agent/src/main/java/com/bruce/agent/dto/request/AgentChatRequest.java similarity index 100% rename from src/main/java/com/bruce/agent/dto/request/AgentChatRequest.java rename to common-agent-agent/src/main/java/com/bruce/agent/dto/request/AgentChatRequest.java diff --git a/src/main/java/com/bruce/agent/dto/request/AgentDefinitionQueryRequest.java b/common-agent-agent/src/main/java/com/bruce/agent/dto/request/AgentDefinitionQueryRequest.java similarity index 100% rename from src/main/java/com/bruce/agent/dto/request/AgentDefinitionQueryRequest.java rename to common-agent-agent/src/main/java/com/bruce/agent/dto/request/AgentDefinitionQueryRequest.java diff --git a/src/main/java/com/bruce/agent/dto/request/AgentDefinitionSaveRequest.java b/common-agent-agent/src/main/java/com/bruce/agent/dto/request/AgentDefinitionSaveRequest.java similarity index 100% rename from src/main/java/com/bruce/agent/dto/request/AgentDefinitionSaveRequest.java rename to common-agent-agent/src/main/java/com/bruce/agent/dto/request/AgentDefinitionSaveRequest.java diff --git a/src/main/java/com/bruce/agent/dto/response/AgentChatResponse.java b/common-agent-agent/src/main/java/com/bruce/agent/dto/response/AgentChatResponse.java similarity index 100% rename from src/main/java/com/bruce/agent/dto/response/AgentChatResponse.java rename to common-agent-agent/src/main/java/com/bruce/agent/dto/response/AgentChatResponse.java diff --git a/src/main/java/com/bruce/agent/dto/response/AgentDefinitionResponse.java b/common-agent-agent/src/main/java/com/bruce/agent/dto/response/AgentDefinitionResponse.java similarity index 100% rename from src/main/java/com/bruce/agent/dto/response/AgentDefinitionResponse.java rename to common-agent-agent/src/main/java/com/bruce/agent/dto/response/AgentDefinitionResponse.java diff --git a/src/main/java/com/bruce/agent/entity/AgentDefinition.java b/common-agent-agent/src/main/java/com/bruce/agent/entity/AgentDefinition.java similarity index 100% rename from src/main/java/com/bruce/agent/entity/AgentDefinition.java rename to common-agent-agent/src/main/java/com/bruce/agent/entity/AgentDefinition.java diff --git a/src/main/java/com/bruce/agent/mapper/AgentDefinitionMapper.java b/common-agent-agent/src/main/java/com/bruce/agent/mapper/AgentDefinitionMapper.java similarity index 100% rename from src/main/java/com/bruce/agent/mapper/AgentDefinitionMapper.java rename to common-agent-agent/src/main/java/com/bruce/agent/mapper/AgentDefinitionMapper.java diff --git a/src/main/java/com/bruce/agent/service/IAgentDefinitionService.java b/common-agent-agent/src/main/java/com/bruce/agent/service/IAgentDefinitionService.java similarity index 100% rename from src/main/java/com/bruce/agent/service/IAgentDefinitionService.java rename to common-agent-agent/src/main/java/com/bruce/agent/service/IAgentDefinitionService.java diff --git a/src/main/java/com/bruce/agent/service/impl/AgentDefinitionServiceImpl.java b/common-agent-agent/src/main/java/com/bruce/agent/service/impl/AgentDefinitionServiceImpl.java similarity index 100% rename from src/main/java/com/bruce/agent/service/impl/AgentDefinitionServiceImpl.java rename to common-agent-agent/src/main/java/com/bruce/agent/service/impl/AgentDefinitionServiceImpl.java diff --git a/src/test/java/com/bruce/agent/AgentComponentStructureTests.java b/common-agent-agent/src/test/java/com/bruce/agent/AgentComponentStructureTests.java similarity index 100% rename from src/test/java/com/bruce/agent/AgentComponentStructureTests.java rename to common-agent-agent/src/test/java/com/bruce/agent/AgentComponentStructureTests.java diff --git a/src/test/java/com/bruce/agent/AgentDefinitionServiceImplTests.java b/common-agent-agent/src/test/java/com/bruce/agent/AgentDefinitionServiceImplTests.java similarity index 100% rename from src/test/java/com/bruce/agent/AgentDefinitionServiceImplTests.java rename to common-agent-agent/src/test/java/com/bruce/agent/AgentDefinitionServiceImplTests.java diff --git a/common-agent-boot/pom.xml b/common-agent-boot/pom.xml new file mode 100644 index 0000000..096b6a1 --- /dev/null +++ b/common-agent-boot/pom.xml @@ -0,0 +1,85 @@ + + + 4.0.0 + + + com.bruce + common-agent-parent + 0.0.1-SNAPSHOT + + + common-agent-boot + common-agent-boot + + + + com.bruce + common-agent-common + ${project.version} + + + com.bruce + common-agent-rag + ${project.version} + + + com.bruce + common-agent-modelprovider + ${project.version} + + + com.bruce + common-agent-agent + ${project.version} + + + com.bruce + common-agent-workflow + ${project.version} + + + com.bruce + common-agent-mcp + ${project.version} + + + com.bruce + common-agent-skill + ${project.version} + + + com.bruce + common-agent-observability + ${project.version} + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-web + + + org.projectlombok + lombok + true + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/src/main/java/com/bruce/CommonAgentApplication.java b/common-agent-boot/src/main/java/com/bruce/CommonAgentApplication.java similarity index 52% rename from src/main/java/com/bruce/CommonAgentApplication.java rename to common-agent-boot/src/main/java/com/bruce/CommonAgentApplication.java index 6dc0943..d877521 100644 --- a/src/main/java/com/bruce/CommonAgentApplication.java +++ b/common-agent-boot/src/main/java/com/bruce/CommonAgentApplication.java @@ -1,11 +1,22 @@ package com.bruce; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableAsync; @SpringBootApplication @EnableAsync +@MapperScan(basePackages = { + "com.bruce.common.mapper", + "com.bruce.rag.mapper", + "com.bruce.modelprovider.mapper", + "com.bruce.agent.mapper", + "com.bruce.workflow.mapper", + "com.bruce.mcp.mapper", + "com.bruce.skill.mapper", + "com.bruce.observability.mapper" +}) public class CommonAgentApplication { public static void main(String[] args) { diff --git a/src/main/resources/ai-config.ini b/common-agent-boot/src/main/resources/ai-config.ini similarity index 100% rename from src/main/resources/ai-config.ini rename to common-agent-boot/src/main/resources/ai-config.ini diff --git a/common-agent-boot/src/main/resources/application-dev.yaml b/common-agent-boot/src/main/resources/application-dev.yaml new file mode 100644 index 0000000..8799d4b --- /dev/null +++ b/common-agent-boot/src/main/resources/application-dev.yaml @@ -0,0 +1,15 @@ +spring: + datasource: + driver-class-name: org.postgresql.Driver + url: jdbc:postgresql://110.42.106.130:5431/common_agent?currentSchema=common_agent + username: common_agent + password: common_agent + +mybatis-plus: + mapper-locations: classpath*:/mapper/**/*.xml + configuration: + map-underscore-to-camel-case: true + +common: + attachment: + base-path: /data/common-agent/attachments diff --git a/src/main/resources/application-template.yaml b/common-agent-boot/src/main/resources/application-template.yaml similarity index 100% rename from src/main/resources/application-template.yaml rename to common-agent-boot/src/main/resources/application-template.yaml diff --git a/src/main/resources/application.yaml b/common-agent-boot/src/main/resources/application.yaml similarity index 100% rename from src/main/resources/application.yaml rename to common-agent-boot/src/main/resources/application.yaml diff --git a/src/test/java/com/bruce/CommonAgentApplicationTests.java b/common-agent-boot/src/test/java/com/bruce/CommonAgentApplicationTests.java similarity index 100% rename from src/test/java/com/bruce/CommonAgentApplicationTests.java rename to common-agent-boot/src/test/java/com/bruce/CommonAgentApplicationTests.java diff --git a/src/test/java/com/bruce/common/config/EntityAuditMetaObjectHandlerTests.java b/common-agent-boot/src/test/java/com/bruce/integration/config/EntityAuditMetaObjectHandlerTests.java similarity index 92% rename from src/test/java/com/bruce/common/config/EntityAuditMetaObjectHandlerTests.java rename to common-agent-boot/src/test/java/com/bruce/integration/config/EntityAuditMetaObjectHandlerTests.java index 650774c..1a67aea 100644 --- a/src/test/java/com/bruce/common/config/EntityAuditMetaObjectHandlerTests.java +++ b/common-agent-boot/src/test/java/com/bruce/integration/config/EntityAuditMetaObjectHandlerTests.java @@ -1,5 +1,6 @@ -package com.bruce.common.config; +package com.bruce.integration.config; +import com.bruce.common.config.EntityAuditMetaObjectHandler; import com.bruce.rag.entity.RagStore; import org.apache.ibatis.reflection.SystemMetaObject; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/bruce/common/enumconfig/EnumDefinitionTests.java b/common-agent-boot/src/test/java/com/bruce/integration/enumconfig/EnumDefinitionTests.java similarity index 99% rename from src/test/java/com/bruce/common/enumconfig/EnumDefinitionTests.java rename to common-agent-boot/src/test/java/com/bruce/integration/enumconfig/EnumDefinitionTests.java index 85bd8f7..2445e31 100644 --- a/src/test/java/com/bruce/common/enumconfig/EnumDefinitionTests.java +++ b/common-agent-boot/src/test/java/com/bruce/integration/enumconfig/EnumDefinitionTests.java @@ -1,4 +1,4 @@ -package com.bruce.common.enumconfig; +package com.bruce.integration.enumconfig; import com.bruce.common.enums.CommonStatusEnum; import com.bruce.common.enums.EnableStatusEnum; diff --git a/src/test/java/com/bruce/common/enumconfig/SysEnumDataInitTests.java b/common-agent-boot/src/test/java/com/bruce/integration/enumconfig/SysEnumDataInitTests.java similarity index 98% rename from src/test/java/com/bruce/common/enumconfig/SysEnumDataInitTests.java rename to common-agent-boot/src/test/java/com/bruce/integration/enumconfig/SysEnumDataInitTests.java index a4166d4..1c644e1 100644 --- a/src/test/java/com/bruce/common/enumconfig/SysEnumDataInitTests.java +++ b/common-agent-boot/src/test/java/com/bruce/integration/enumconfig/SysEnumDataInitTests.java @@ -1,4 +1,4 @@ -package com.bruce.common.enumconfig; +package com.bruce.integration.enumconfig; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.bruce.common.domain.entity.SysEnum; diff --git a/common-agent-boot/src/test/java/com/bruce/integration/enumconfig/SysEnumDefinitionSyncSupport.java b/common-agent-boot/src/test/java/com/bruce/integration/enumconfig/SysEnumDefinitionSyncSupport.java new file mode 100644 index 0000000..e60d413 --- /dev/null +++ b/common-agent-boot/src/test/java/com/bruce/integration/enumconfig/SysEnumDefinitionSyncSupport.java @@ -0,0 +1,90 @@ +package com.bruce.integration.enumconfig; + +import com.bruce.common.domain.entity.SysEnum; +import com.bruce.common.enums.PersistableSysEnumDefinition; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +/** + * sys_enum 初始化测试的辅助工具。 + *

+ * 该类只服务于测试入口,用于把代码里的枚举定义组装成可落库的数据结构, + * 并在真正写库前完成组级唯一性校验。 + */ +final class SysEnumDefinitionSyncSupport { + + private SysEnumDefinitionSyncSupport() { + } + + static EnumGroup groupOf(List definitions) { + if (definitions == null || definitions.isEmpty()) { + throw new IllegalArgumentException("枚举定义不能为空"); + } + PersistableSysEnumDefinition first = definitions.getFirst(); + validateGroupMembers(first, definitions); + validateUniqueValuesAndSorts(first, definitions); + return new EnumGroup(first.getCatalog(), first.getType(), List.copyOf(definitions)); + } + + static void validateUniqueGroupKeys(List groups) { + Set keys = new HashSet<>(); + for (EnumGroup group : groups) { + String key = group.catalog() + "/" + group.type(); + if (!keys.add(key)) { + throw new IllegalArgumentException("存在重复的枚举分组: " + key); + } + } + } + + static List toEntities(EnumGroup group) { + return group.definitions().stream() + .map(item -> { + SysEnum sysEnum = new SysEnum(); + sysEnum.setCatalog(group.catalog()); + sysEnum.setType(group.type()); + sysEnum.setName(item.getName()); + sysEnum.setValue(item.getValue()); + sysEnum.setStrvalue(item.getStrvalue()); + sysEnum.setSort(item.getSort()); + sysEnum.setRemark(item.getRemark()); + return sysEnum; + }) + .toList(); + } + + private static void validateGroupMembers( + PersistableSysEnumDefinition first, + List definitions + ) { + for (PersistableSysEnumDefinition item : definitions) { + if (!first.getCatalog().equals(item.getCatalog()) || !first.getType().equals(item.getType())) { + throw new IllegalArgumentException("同一枚举组中的 catalog/type 必须一致"); + } + } + } + + private static void validateUniqueValuesAndSorts( + PersistableSysEnumDefinition first, + List definitions + ) { + Set values = new HashSet<>(); + Set sorts = new HashSet<>(); + for (PersistableSysEnumDefinition item : definitions) { + if (!values.add(item.getValue())) { + throw new IllegalArgumentException("枚举值重复: " + first.getCatalog() + "/" + first.getType() + "/" + item.getValue()); + } + if (!sorts.add(item.getSort())) { + throw new IllegalArgumentException("枚举排序重复: " + first.getCatalog() + "/" + first.getType() + "/" + item.getSort()); + } + } + } + + record EnumGroup( + String catalog, + String type, + List definitions + ) { + } +} diff --git a/src/test/java/com/bruce/common/enumconfig/SysEnumDefinitionSyncSupportTests.java b/common-agent-boot/src/test/java/com/bruce/integration/enumconfig/SysEnumDefinitionSyncSupportTests.java similarity index 98% rename from src/test/java/com/bruce/common/enumconfig/SysEnumDefinitionSyncSupportTests.java rename to common-agent-boot/src/test/java/com/bruce/integration/enumconfig/SysEnumDefinitionSyncSupportTests.java index 9da09ec..8905b48 100644 --- a/src/test/java/com/bruce/common/enumconfig/SysEnumDefinitionSyncSupportTests.java +++ b/common-agent-boot/src/test/java/com/bruce/integration/enumconfig/SysEnumDefinitionSyncSupportTests.java @@ -1,4 +1,4 @@ -package com.bruce.common.enumconfig; +package com.bruce.integration.enumconfig; import com.bruce.common.domain.entity.SysEnum; import com.bruce.common.enums.EnableStatusEnum; diff --git a/common-agent-common/pom.xml b/common-agent-common/pom.xml new file mode 100644 index 0000000..2c27f6c --- /dev/null +++ b/common-agent-common/pom.xml @@ -0,0 +1,61 @@ + + + 4.0.0 + + + com.bruce + common-agent-parent + 0.0.1-SNAPSHOT + + + common-agent-common + common-agent-common + + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-web + + + com.baomidou + mybatis-plus-spring-boot4-starter + + + org.projectlombok + lombok + true + + + org.postgresql + postgresql + runtime + + + com.fasterxml.jackson.core + jackson-annotations + + + org.apache.tika + tika-core + + + org.apache.tika + tika-parsers-standard-package + + + org.springdoc + springdoc-openapi-starter-webmvc-ui + + + org.springframework.boot + spring-boot-starter-test + test + + + diff --git a/src/main/java/com/bruce/common/config/AttachmentProperties.java b/common-agent-common/src/main/java/com/bruce/common/config/AttachmentProperties.java similarity index 100% rename from src/main/java/com/bruce/common/config/AttachmentProperties.java rename to common-agent-common/src/main/java/com/bruce/common/config/AttachmentProperties.java diff --git a/src/main/java/com/bruce/common/config/EntityAuditMetaObjectHandler.java b/common-agent-common/src/main/java/com/bruce/common/config/EntityAuditMetaObjectHandler.java similarity index 100% rename from src/main/java/com/bruce/common/config/EntityAuditMetaObjectHandler.java rename to common-agent-common/src/main/java/com/bruce/common/config/EntityAuditMetaObjectHandler.java diff --git a/src/main/java/com/bruce/common/config/MybatisPlusConfig.java b/common-agent-common/src/main/java/com/bruce/common/config/MybatisPlusConfig.java similarity index 100% rename from src/main/java/com/bruce/common/config/MybatisPlusConfig.java rename to common-agent-common/src/main/java/com/bruce/common/config/MybatisPlusConfig.java diff --git a/src/main/java/com/bruce/common/constant/CommonConsts.java b/common-agent-common/src/main/java/com/bruce/common/constant/CommonConsts.java similarity index 100% rename from src/main/java/com/bruce/common/constant/CommonConsts.java rename to common-agent-common/src/main/java/com/bruce/common/constant/CommonConsts.java diff --git a/src/main/java/com/bruce/common/controller/SysAttachmentController.java b/common-agent-common/src/main/java/com/bruce/common/controller/SysAttachmentController.java similarity index 50% rename from src/main/java/com/bruce/common/controller/SysAttachmentController.java rename to common-agent-common/src/main/java/com/bruce/common/controller/SysAttachmentController.java index 6dfd4de..7734f7e 100644 --- a/src/main/java/com/bruce/common/controller/SysAttachmentController.java +++ b/common-agent-common/src/main/java/com/bruce/common/controller/SysAttachmentController.java @@ -3,26 +3,39 @@ package com.bruce.common.controller; import com.bruce.common.domain.model.RequestResult; import com.bruce.common.dto.request.SysAttachmentUploadRequest; import com.bruce.common.dto.response.SysAttachmentResponse; +import com.bruce.common.factory.SysAttachmentFactory; import com.bruce.common.service.ISysAttachmentService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @Tag(name = "系统附件管理") +@Slf4j @RestController @RequestMapping("/api/attachments") +@RequiredArgsConstructor public class SysAttachmentController { - @Autowired - private ISysAttachmentService sysAttachmentService; + private final ISysAttachmentService sysAttachmentService; + + private final SysAttachmentFactory sysAttachmentFactory; @Operation(summary = "上传附件") @PostMapping("/upload") public RequestResult upload(@ModelAttribute SysAttachmentUploadRequest request) { - return RequestResult.success(SysAttachmentResponse.fromEntity(sysAttachmentService.upload(request))); + log.info("上传附件开始,sourceType={}, sourceId={}", + request == null ? null : request.getSourceType(), + request == null ? null : request.getSourceId()); + SysAttachmentResponse response = sysAttachmentFactory.toResponse(sysAttachmentService.upload(request)); + log.info("上传附件结束,attachmentId={}, sourceType={}, sourceId={}", + response == null ? null : response.getId(), + request == null ? null : request.getSourceType(), + request == null ? null : request.getSourceId()); + return RequestResult.success(response); } } diff --git a/src/main/java/com/bruce/common/controller/SysEnumController.java b/common-agent-common/src/main/java/com/bruce/common/controller/SysEnumController.java similarity index 100% rename from src/main/java/com/bruce/common/controller/SysEnumController.java rename to common-agent-common/src/main/java/com/bruce/common/controller/SysEnumController.java diff --git a/src/main/java/com/bruce/common/document/parse/DocumentParseContext.java b/common-agent-common/src/main/java/com/bruce/common/document/parse/DocumentParseContext.java similarity index 100% rename from src/main/java/com/bruce/common/document/parse/DocumentParseContext.java rename to common-agent-common/src/main/java/com/bruce/common/document/parse/DocumentParseContext.java diff --git a/src/main/java/com/bruce/common/document/parse/DocumentParseException.java b/common-agent-common/src/main/java/com/bruce/common/document/parse/DocumentParseException.java similarity index 100% rename from src/main/java/com/bruce/common/document/parse/DocumentParseException.java rename to common-agent-common/src/main/java/com/bruce/common/document/parse/DocumentParseException.java diff --git a/src/main/java/com/bruce/common/document/parse/DocumentParseResult.java b/common-agent-common/src/main/java/com/bruce/common/document/parse/DocumentParseResult.java similarity index 100% rename from src/main/java/com/bruce/common/document/parse/DocumentParseResult.java rename to common-agent-common/src/main/java/com/bruce/common/document/parse/DocumentParseResult.java diff --git a/src/main/java/com/bruce/common/document/parse/DocumentParser.java b/common-agent-common/src/main/java/com/bruce/common/document/parse/DocumentParser.java similarity index 100% rename from src/main/java/com/bruce/common/document/parse/DocumentParser.java rename to common-agent-common/src/main/java/com/bruce/common/document/parse/DocumentParser.java diff --git a/src/main/java/com/bruce/common/document/parse/DocumentParserFactory.java b/common-agent-common/src/main/java/com/bruce/common/document/parse/DocumentParserFactory.java similarity index 100% rename from src/main/java/com/bruce/common/document/parse/DocumentParserFactory.java rename to common-agent-common/src/main/java/com/bruce/common/document/parse/DocumentParserFactory.java diff --git a/src/main/java/com/bruce/common/document/parse/impl/AbstractTikaDocumentParser.java b/common-agent-common/src/main/java/com/bruce/common/document/parse/impl/AbstractTikaDocumentParser.java similarity index 100% rename from src/main/java/com/bruce/common/document/parse/impl/AbstractTikaDocumentParser.java rename to common-agent-common/src/main/java/com/bruce/common/document/parse/impl/AbstractTikaDocumentParser.java diff --git a/src/main/java/com/bruce/common/document/parse/impl/ExcelDocumentParser.java b/common-agent-common/src/main/java/com/bruce/common/document/parse/impl/ExcelDocumentParser.java similarity index 100% rename from src/main/java/com/bruce/common/document/parse/impl/ExcelDocumentParser.java rename to common-agent-common/src/main/java/com/bruce/common/document/parse/impl/ExcelDocumentParser.java diff --git a/src/main/java/com/bruce/common/document/parse/impl/PdfDocumentParser.java b/common-agent-common/src/main/java/com/bruce/common/document/parse/impl/PdfDocumentParser.java similarity index 100% rename from src/main/java/com/bruce/common/document/parse/impl/PdfDocumentParser.java rename to common-agent-common/src/main/java/com/bruce/common/document/parse/impl/PdfDocumentParser.java diff --git a/src/main/java/com/bruce/common/document/parse/impl/TxtDocumentParser.java b/common-agent-common/src/main/java/com/bruce/common/document/parse/impl/TxtDocumentParser.java similarity index 100% rename from src/main/java/com/bruce/common/document/parse/impl/TxtDocumentParser.java rename to common-agent-common/src/main/java/com/bruce/common/document/parse/impl/TxtDocumentParser.java diff --git a/src/main/java/com/bruce/common/document/parse/impl/WordDocumentParser.java b/common-agent-common/src/main/java/com/bruce/common/document/parse/impl/WordDocumentParser.java similarity index 100% rename from src/main/java/com/bruce/common/document/parse/impl/WordDocumentParser.java rename to common-agent-common/src/main/java/com/bruce/common/document/parse/impl/WordDocumentParser.java diff --git a/src/main/java/com/bruce/common/domain/entity/SysAttachment.java b/common-agent-common/src/main/java/com/bruce/common/domain/entity/SysAttachment.java similarity index 100% rename from src/main/java/com/bruce/common/domain/entity/SysAttachment.java rename to common-agent-common/src/main/java/com/bruce/common/domain/entity/SysAttachment.java diff --git a/src/main/java/com/bruce/common/domain/entity/SysEnum.java b/common-agent-common/src/main/java/com/bruce/common/domain/entity/SysEnum.java similarity index 100% rename from src/main/java/com/bruce/common/domain/entity/SysEnum.java rename to common-agent-common/src/main/java/com/bruce/common/domain/entity/SysEnum.java diff --git a/src/main/java/com/bruce/common/domain/model/BaseEntity.java b/common-agent-common/src/main/java/com/bruce/common/domain/model/BaseEntity.java similarity index 100% rename from src/main/java/com/bruce/common/domain/model/BaseEntity.java rename to common-agent-common/src/main/java/com/bruce/common/domain/model/BaseEntity.java diff --git a/src/main/java/com/bruce/common/domain/model/RequestResult.java b/common-agent-common/src/main/java/com/bruce/common/domain/model/RequestResult.java similarity index 100% rename from src/main/java/com/bruce/common/domain/model/RequestResult.java rename to common-agent-common/src/main/java/com/bruce/common/domain/model/RequestResult.java diff --git a/src/main/java/com/bruce/common/dto/request/SysAttachmentUploadRequest.java b/common-agent-common/src/main/java/com/bruce/common/dto/request/SysAttachmentUploadRequest.java similarity index 100% rename from src/main/java/com/bruce/common/dto/request/SysAttachmentUploadRequest.java rename to common-agent-common/src/main/java/com/bruce/common/dto/request/SysAttachmentUploadRequest.java diff --git a/src/main/java/com/bruce/common/dto/request/SysEnumBatchSaveRequest.java b/common-agent-common/src/main/java/com/bruce/common/dto/request/SysEnumBatchSaveRequest.java similarity index 100% rename from src/main/java/com/bruce/common/dto/request/SysEnumBatchSaveRequest.java rename to common-agent-common/src/main/java/com/bruce/common/dto/request/SysEnumBatchSaveRequest.java diff --git a/src/main/java/com/bruce/common/dto/request/SysEnumManageQueryRequest.java b/common-agent-common/src/main/java/com/bruce/common/dto/request/SysEnumManageQueryRequest.java similarity index 100% rename from src/main/java/com/bruce/common/dto/request/SysEnumManageQueryRequest.java rename to common-agent-common/src/main/java/com/bruce/common/dto/request/SysEnumManageQueryRequest.java diff --git a/src/main/java/com/bruce/common/dto/request/SysEnumQueryRequest.java b/common-agent-common/src/main/java/com/bruce/common/dto/request/SysEnumQueryRequest.java similarity index 100% rename from src/main/java/com/bruce/common/dto/request/SysEnumQueryRequest.java rename to common-agent-common/src/main/java/com/bruce/common/dto/request/SysEnumQueryRequest.java diff --git a/src/main/java/com/bruce/common/dto/request/SysEnumSaveRequest.java b/common-agent-common/src/main/java/com/bruce/common/dto/request/SysEnumSaveRequest.java similarity index 100% rename from src/main/java/com/bruce/common/dto/request/SysEnumSaveRequest.java rename to common-agent-common/src/main/java/com/bruce/common/dto/request/SysEnumSaveRequest.java diff --git a/src/main/java/com/bruce/common/dto/response/SysAttachmentResponse.java b/common-agent-common/src/main/java/com/bruce/common/dto/response/SysAttachmentResponse.java similarity index 72% rename from src/main/java/com/bruce/common/dto/response/SysAttachmentResponse.java rename to common-agent-common/src/main/java/com/bruce/common/dto/response/SysAttachmentResponse.java index d68b76f..1965a10 100644 --- a/src/main/java/com/bruce/common/dto/response/SysAttachmentResponse.java +++ b/common-agent-common/src/main/java/com/bruce/common/dto/response/SysAttachmentResponse.java @@ -1,9 +1,7 @@ package com.bruce.common.dto.response; -import com.bruce.common.domain.entity.SysAttachment; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import org.springframework.beans.BeanUtils; @Data @Schema(description = "系统附件响应") @@ -41,13 +39,4 @@ public class SysAttachmentResponse { @Schema(description = "备注") private String remark; - - public static SysAttachmentResponse fromEntity(SysAttachment entity) { - if (entity == null) { - return null; - } - SysAttachmentResponse response = new SysAttachmentResponse(); - BeanUtils.copyProperties(entity, response); - return response; - } } diff --git a/src/main/java/com/bruce/common/dto/response/SysEnumResponse.java b/common-agent-common/src/main/java/com/bruce/common/dto/response/SysEnumResponse.java similarity index 66% rename from src/main/java/com/bruce/common/dto/response/SysEnumResponse.java rename to common-agent-common/src/main/java/com/bruce/common/dto/response/SysEnumResponse.java index 78f0c0b..7f5197b 100644 --- a/src/main/java/com/bruce/common/dto/response/SysEnumResponse.java +++ b/common-agent-common/src/main/java/com/bruce/common/dto/response/SysEnumResponse.java @@ -1,9 +1,7 @@ package com.bruce.common.dto.response; -import com.bruce.common.domain.entity.SysEnum; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import org.springframework.beans.BeanUtils; @Data @Schema(description = "系统枚举响应") @@ -32,13 +30,4 @@ public class SysEnumResponse { @Schema(description = "备注") private String remark; - - public static SysEnumResponse fromEntity(SysEnum entity) { - if (entity == null) { - return null; - } - SysEnumResponse response = new SysEnumResponse(); - BeanUtils.copyProperties(entity, response); - return response; - } } diff --git a/src/main/java/com/bruce/common/enums/CommonStatusEnum.java b/common-agent-common/src/main/java/com/bruce/common/enums/CommonStatusEnum.java similarity index 100% rename from src/main/java/com/bruce/common/enums/CommonStatusEnum.java rename to common-agent-common/src/main/java/com/bruce/common/enums/CommonStatusEnum.java diff --git a/src/main/java/com/bruce/common/enums/EnableStatusEnum.java b/common-agent-common/src/main/java/com/bruce/common/enums/EnableStatusEnum.java similarity index 100% rename from src/main/java/com/bruce/common/enums/EnableStatusEnum.java rename to common-agent-common/src/main/java/com/bruce/common/enums/EnableStatusEnum.java diff --git a/src/main/java/com/bruce/common/enums/PersistableSysEnumDefinition.java b/common-agent-common/src/main/java/com/bruce/common/enums/PersistableSysEnumDefinition.java similarity index 100% rename from src/main/java/com/bruce/common/enums/PersistableSysEnumDefinition.java rename to common-agent-common/src/main/java/com/bruce/common/enums/PersistableSysEnumDefinition.java diff --git a/common-agent-common/src/main/java/com/bruce/common/factory/SysAttachmentFactory.java b/common-agent-common/src/main/java/com/bruce/common/factory/SysAttachmentFactory.java new file mode 100644 index 0000000..f6da542 --- /dev/null +++ b/common-agent-common/src/main/java/com/bruce/common/factory/SysAttachmentFactory.java @@ -0,0 +1,22 @@ +package com.bruce.common.factory; + +import com.bruce.common.domain.entity.SysAttachment; +import com.bruce.common.dto.response.SysAttachmentResponse; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Component; + +/** + * 系统附件工厂,集中处理附件元数据出参转换。 + */ +@Component +public class SysAttachmentFactory { + + public SysAttachmentResponse toResponse(SysAttachment entity) { + if (entity == null) { + return null; + } + SysAttachmentResponse response = new SysAttachmentResponse(); + BeanUtils.copyProperties(entity, response); + return response; + } +} diff --git a/common-agent-common/src/main/java/com/bruce/common/factory/SysEnumFactory.java b/common-agent-common/src/main/java/com/bruce/common/factory/SysEnumFactory.java new file mode 100644 index 0000000..2954d26 --- /dev/null +++ b/common-agent-common/src/main/java/com/bruce/common/factory/SysEnumFactory.java @@ -0,0 +1,63 @@ +package com.bruce.common.factory; + +import com.bruce.common.domain.entity.SysEnum; +import com.bruce.common.dto.request.SysEnumBatchSaveRequest; +import com.bruce.common.dto.request.SysEnumSaveRequest; +import com.bruce.common.dto.response.SysEnumResponse; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * 系统枚举工厂,统一负责请求对象、实体对象和响应对象之间的转换。 + */ +@Component +public class SysEnumFactory { + + /** + * 将保存请求转换为实体,避免在服务层散落字段拷贝逻辑。 + */ + public SysEnum toEntity(SysEnumSaveRequest request) { + if (request == null) { + return null; + } + SysEnum entity = new SysEnum(); + BeanUtils.copyProperties(request, entity); + return entity; + } + + /** + * 将批量请求中的单个枚举项转换为实体,catalog/type 由外层分组统一提供。 + */ + public SysEnum toEntity(String catalog, String type, SysEnumBatchSaveRequest.Item item) { + if (item == null) { + return null; + } + SysEnum entity = new SysEnum(); + entity.setCatalog(catalog); + entity.setType(type); + entity.setName(item.getName()); + entity.setValue(item.getValue()); + entity.setStrvalue(item.getStrvalue()); + entity.setSort(item.getSort()); + entity.setRemark(item.getRemark()); + return entity; + } + + /** + * 将实体转换为返回对象,保持接口层不直接暴露实体。 + */ + public SysEnumResponse toResponse(SysEnum entity) { + if (entity == null) { + return null; + } + SysEnumResponse response = new SysEnumResponse(); + BeanUtils.copyProperties(entity, response); + return response; + } + + public List toResponses(List entities) { + return entities == null ? List.of() : entities.stream().map(this::toResponse).toList(); + } +} diff --git a/src/main/java/com/bruce/common/handler/GlobalExceptionHandler.java b/common-agent-common/src/main/java/com/bruce/common/handler/GlobalExceptionHandler.java similarity index 100% rename from src/main/java/com/bruce/common/handler/GlobalExceptionHandler.java rename to common-agent-common/src/main/java/com/bruce/common/handler/GlobalExceptionHandler.java diff --git a/src/main/java/com/bruce/common/mapper/SysAttachmentMapper.java b/common-agent-common/src/main/java/com/bruce/common/mapper/SysAttachmentMapper.java similarity index 100% rename from src/main/java/com/bruce/common/mapper/SysAttachmentMapper.java rename to common-agent-common/src/main/java/com/bruce/common/mapper/SysAttachmentMapper.java diff --git a/src/main/java/com/bruce/common/mapper/SysEnumMapper.java b/common-agent-common/src/main/java/com/bruce/common/mapper/SysEnumMapper.java similarity index 100% rename from src/main/java/com/bruce/common/mapper/SysEnumMapper.java rename to common-agent-common/src/main/java/com/bruce/common/mapper/SysEnumMapper.java diff --git a/src/main/java/com/bruce/common/service/ISysAttachmentService.java b/common-agent-common/src/main/java/com/bruce/common/service/ISysAttachmentService.java similarity index 100% rename from src/main/java/com/bruce/common/service/ISysAttachmentService.java rename to common-agent-common/src/main/java/com/bruce/common/service/ISysAttachmentService.java diff --git a/src/main/java/com/bruce/common/service/ISysEnumService.java b/common-agent-common/src/main/java/com/bruce/common/service/ISysEnumService.java similarity index 100% rename from src/main/java/com/bruce/common/service/ISysEnumService.java rename to common-agent-common/src/main/java/com/bruce/common/service/ISysEnumService.java diff --git a/src/main/java/com/bruce/common/service/impl/SysAttachmentServiceImpl.java b/common-agent-common/src/main/java/com/bruce/common/service/impl/SysAttachmentServiceImpl.java similarity index 96% rename from src/main/java/com/bruce/common/service/impl/SysAttachmentServiceImpl.java rename to common-agent-common/src/main/java/com/bruce/common/service/impl/SysAttachmentServiceImpl.java index 407bc6f..829f1fe 100644 --- a/src/main/java/com/bruce/common/service/impl/SysAttachmentServiceImpl.java +++ b/common-agent-common/src/main/java/com/bruce/common/service/impl/SysAttachmentServiceImpl.java @@ -28,6 +28,7 @@ public class SysAttachmentServiceImpl extends ServiceImpl implements ISysEnumService { + private final SysEnumFactory sysEnumFactory; + @Override public List listByCatalogAndType(SysEnumQueryRequest request) { log.info("SysEnumServiceImpl.listByCatalogAndType start, request={}", request); @@ -39,17 +44,19 @@ public class SysEnumServiceImpl extends ServiceImpl impl @Override public List listResponses() { - log.info("SysEnumServiceImpl.listResponses start"); - List responses = toResponses(list()); - log.info("SysEnumServiceImpl.listResponses success, count={}", responses.size()); + log.info("查询系统枚举列表开始"); + List responses = sysEnumFactory.toResponses(list()); + log.info("查询系统枚举列表结束,count={}", responses.size()); return responses; } @Override public List listByCatalogAndTypeResponses(SysEnumQueryRequest request) { - log.info("SysEnumServiceImpl.listByCatalogAndTypeResponses start"); - List responses = toResponses(listByCatalogAndType(request)); - log.info("SysEnumServiceImpl.listByCatalogAndTypeResponses success, count={}", responses.size()); + log.info("按模块和类型查询系统枚举开始,catalog={}, type={}", + request == null ? null : request.getCatalog(), + request == null ? null : request.getType()); + List responses = sysEnumFactory.toResponses(listByCatalogAndType(request)); + log.info("按模块和类型查询系统枚举结束,count={}", responses.size()); return responses; } @@ -58,7 +65,7 @@ public class SysEnumServiceImpl extends ServiceImpl impl log.info("SysEnumServiceImpl.listForManagement start, request={}", request); SysEnumManageQueryRequest queryRequest = request == null ? new SysEnumManageQueryRequest() : request; String keyword = queryRequest.getKeyword(); - List responses = toResponses(lambdaQuery() + List responses = sysEnumFactory.toResponses(lambdaQuery() .eq(StringUtils.hasText(queryRequest.getCatalog()), SysEnum::getCatalog, queryRequest.getCatalog()) .eq(StringUtils.hasText(queryRequest.getType()), SysEnum::getType, queryRequest.getType()) .and(StringUtils.hasText(keyword), wrapper -> wrapper @@ -82,37 +89,35 @@ public class SysEnumServiceImpl extends ServiceImpl impl @Override public SysEnumResponse getResponseById(Long id) { - log.info("SysEnumServiceImpl.getResponseById start, id={}", id); - SysEnumResponse response = SysEnumResponse.fromEntity(getById(id)); - log.info("SysEnumServiceImpl.getResponseById success, id={}, found={}", id, response != null); + log.info("查询系统枚举详情开始,id={}", id); + SysEnumResponse response = sysEnumFactory.toResponse(getById(id)); + log.info("查询系统枚举详情结束,id={}, found={}", id, response != null); return response; } @Override public boolean saveOrUpdate(SysEnumSaveRequest request) { - log.info("SysEnumServiceImpl.saveOrUpdate start, request={}", request); + log.info("保存系统枚举开始,id={}, catalog={}, type={}, value={}", + request == null ? null : request.getId(), + request == null ? null : request.getCatalog(), + request == null ? null : request.getType(), + request == null ? null : request.getValue()); if (request == null) { throw new IllegalArgumentException("保存请求不能为空"); } - SysEnum sysEnum = new SysEnum(); - sysEnum.setId(request.getId()); - sysEnum.setCatalog(request.getCatalog()); - sysEnum.setType(request.getType()); - sysEnum.setName(request.getName()); - sysEnum.setValue(request.getValue()); - sysEnum.setStrvalue(request.getStrvalue()); - sysEnum.setSort(request.getSort()); - sysEnum.setRemark(request.getRemark()); + SysEnum sysEnum = sysEnumFactory.toEntity(request); boolean result = super.saveOrUpdate(sysEnum); - log.info("SysEnumServiceImpl.saveOrUpdate success, id={}, catalog={}, type={}, value={}, result={}", + log.info("保存系统枚举结束,id={}, catalog={}, type={}, value={}, result={}", request.getId(), request.getCatalog(), request.getType(), request.getValue(), result); return result; } @Override public boolean batchSave(SysEnumBatchSaveRequest request) { - log.info("SysEnumServiceImpl.batchSave start, request={}", request); + log.info("批量保存系统枚举开始,catalog={}, type={}", + request == null ? null : request.getCatalog(), + request == null ? null : request.getType()); List existingEnums = lambdaQuery() .eq(request != null && StringUtils.hasText(request.getCatalog()), SysEnum::getCatalog, request == null ? null : request.getCatalog()) .eq(request != null && StringUtils.hasText(request.getType()), SysEnum::getType, request == null ? null : request.getType()) @@ -120,20 +125,10 @@ public class SysEnumServiceImpl extends ServiceImpl impl validateBatchSaveRequest(request, existingEnums); List enums = request.getItems().stream() - .map(item -> { - SysEnum sysEnum = new SysEnum(); - sysEnum.setCatalog(request.getCatalog()); - sysEnum.setType(request.getType()); - sysEnum.setName(item.getName()); - sysEnum.setValue(item.getValue()); - sysEnum.setStrvalue(item.getStrvalue()); - sysEnum.setSort(item.getSort()); - sysEnum.setRemark(item.getRemark()); - return sysEnum; - }) + .map(item -> sysEnumFactory.toEntity(request.getCatalog(), request.getType(), item)) .toList(); boolean result = saveBatch(enums); - log.info("SysEnumServiceImpl.batchSave success, catalog={}, type={}, itemCount={}, result={}", + log.info("批量保存系统枚举结束,catalog={}, type={}, itemCount={}, result={}", request.getCatalog(), request.getType(), enums.size(), result); return result; } @@ -240,9 +235,4 @@ public class SysEnumServiceImpl extends ServiceImpl impl } } - private List toResponses(List enums) { - return enums.stream() - .map(SysEnumResponse::fromEntity) - .toList(); - } } diff --git a/src/main/java/com/bruce/rag/typehandler/PgJsonbStringTypeHandler.java b/common-agent-common/src/main/java/com/bruce/common/typehandler/PgJsonbStringTypeHandler.java similarity index 96% rename from src/main/java/com/bruce/rag/typehandler/PgJsonbStringTypeHandler.java rename to common-agent-common/src/main/java/com/bruce/common/typehandler/PgJsonbStringTypeHandler.java index 456be2c..d5ea97d 100644 --- a/src/main/java/com/bruce/rag/typehandler/PgJsonbStringTypeHandler.java +++ b/common-agent-common/src/main/java/com/bruce/common/typehandler/PgJsonbStringTypeHandler.java @@ -1,4 +1,4 @@ -package com.bruce.rag.typehandler; +package com.bruce.common.typehandler; import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType; diff --git a/src/test/java/com/bruce/common/attachment/SysAttachmentComponentStructureTests.java b/common-agent-common/src/test/java/com/bruce/common/attachment/SysAttachmentComponentStructureTests.java similarity index 93% rename from src/test/java/com/bruce/common/attachment/SysAttachmentComponentStructureTests.java rename to common-agent-common/src/test/java/com/bruce/common/attachment/SysAttachmentComponentStructureTests.java index 07bfdde..f85fb4a 100644 --- a/src/test/java/com/bruce/common/attachment/SysAttachmentComponentStructureTests.java +++ b/common-agent-common/src/test/java/com/bruce/common/attachment/SysAttachmentComponentStructureTests.java @@ -9,6 +9,7 @@ import com.bruce.common.domain.model.RequestResult; import com.bruce.common.dto.request.SysAttachmentUploadRequest; import com.bruce.common.domain.entity.SysAttachment; import com.bruce.common.dto.response.SysAttachmentResponse; +import com.bruce.common.factory.SysAttachmentFactory; import com.bruce.common.mapper.SysAttachmentMapper; import com.bruce.common.service.ISysAttachmentService; import com.bruce.common.service.impl.SysAttachmentServiceImpl; @@ -47,7 +48,7 @@ class SysAttachmentComponentStructureTests { assertEquals(SysAttachment.class, serviceMethod.getReturnType()); assertEquals(RequestResult.class, controllerMethod.getReturnType()); assertTrue(controllerMethod.getGenericReturnType().getTypeName().contains("SysAttachmentResponse")); - assertEquals(SysAttachmentResponse.class, SysAttachmentResponse.class.getMethod("fromEntity", SysAttachment.class).getReturnType()); + assertEquals(SysAttachmentResponse.class, SysAttachmentFactory.class.getMethod("toResponse", SysAttachment.class).getReturnType()); } @Test diff --git a/src/test/java/com/bruce/common/config/MybatisPlusConfigTests.java b/common-agent-common/src/test/java/com/bruce/common/config/MybatisPlusConfigTests.java similarity index 100% rename from src/test/java/com/bruce/common/config/MybatisPlusConfigTests.java rename to common-agent-common/src/test/java/com/bruce/common/config/MybatisPlusConfigTests.java diff --git a/src/test/java/com/bruce/common/constant/CommonConstsStructureTests.java b/common-agent-common/src/test/java/com/bruce/common/constant/CommonConstsStructureTests.java similarity index 100% rename from src/test/java/com/bruce/common/constant/CommonConstsStructureTests.java rename to common-agent-common/src/test/java/com/bruce/common/constant/CommonConstsStructureTests.java diff --git a/src/test/java/com/bruce/common/document/parse/DocumentParserFactoryTests.java b/common-agent-common/src/test/java/com/bruce/common/document/parse/DocumentParserFactoryTests.java similarity index 100% rename from src/test/java/com/bruce/common/document/parse/DocumentParserFactoryTests.java rename to common-agent-common/src/test/java/com/bruce/common/document/parse/DocumentParserFactoryTests.java diff --git a/src/test/java/com/bruce/common/document/parse/TxtDocumentParserTests.java b/common-agent-common/src/test/java/com/bruce/common/document/parse/TxtDocumentParserTests.java similarity index 100% rename from src/test/java/com/bruce/common/document/parse/TxtDocumentParserTests.java rename to common-agent-common/src/test/java/com/bruce/common/document/parse/TxtDocumentParserTests.java diff --git a/src/test/java/com/bruce/common/entity/EntityStructureTests.java b/common-agent-common/src/test/java/com/bruce/common/entity/EntityStructureTests.java similarity index 100% rename from src/test/java/com/bruce/common/entity/EntityStructureTests.java rename to common-agent-common/src/test/java/com/bruce/common/entity/EntityStructureTests.java diff --git a/src/test/java/com/bruce/common/enumconfig/SysEnumBatchSaveValidationTests.java b/common-agent-common/src/test/java/com/bruce/common/enumconfig/SysEnumBatchSaveValidationTests.java similarity index 86% rename from src/test/java/com/bruce/common/enumconfig/SysEnumBatchSaveValidationTests.java rename to common-agent-common/src/test/java/com/bruce/common/enumconfig/SysEnumBatchSaveValidationTests.java index 07d7d8d..ea70b3e 100644 --- a/src/test/java/com/bruce/common/enumconfig/SysEnumBatchSaveValidationTests.java +++ b/common-agent-common/src/test/java/com/bruce/common/enumconfig/SysEnumBatchSaveValidationTests.java @@ -2,6 +2,7 @@ package com.bruce.common.enumconfig; import com.bruce.common.domain.entity.SysEnum; import com.bruce.common.dto.request.SysEnumBatchSaveRequest; +import com.bruce.common.factory.SysEnumFactory; import com.bruce.common.service.impl.SysEnumServiceImpl; import org.junit.jupiter.api.Test; @@ -12,9 +13,11 @@ import static org.junit.jupiter.api.Assertions.assertThrows; class SysEnumBatchSaveValidationTests { + private final SysEnumFactory sysEnumFactory = new SysEnumFactory(); + @Test void batchSaveShouldRejectDuplicateValuesInsideRequest() { - SysEnumServiceImpl service = new SysEnumServiceImpl(); + SysEnumServiceImpl service = new SysEnumServiceImpl(sysEnumFactory); SysEnumBatchSaveRequest request = new SysEnumBatchSaveRequest(); request.setCatalog("common"); request.setType("enable_status"); @@ -28,7 +31,7 @@ class SysEnumBatchSaveValidationTests { @Test void batchSaveShouldRejectDuplicateValuesFromExistingEnums() { - SysEnumServiceImpl service = new SysEnumServiceImpl(); + SysEnumServiceImpl service = new SysEnumServiceImpl(sysEnumFactory); SysEnum existing = new SysEnum(); existing.setCatalog("common"); existing.setType("enable_status"); @@ -47,7 +50,7 @@ class SysEnumBatchSaveValidationTests { @Test void batchSaveShouldAcceptUniqueValues() { - SysEnumServiceImpl service = new SysEnumServiceImpl(); + SysEnumServiceImpl service = new SysEnumServiceImpl(sysEnumFactory); SysEnumBatchSaveRequest request = new SysEnumBatchSaveRequest(); request.setCatalog("common"); request.setType("enable_status"); diff --git a/src/test/java/com/bruce/common/enumconfig/SysEnumComponentStructureTests.java b/common-agent-common/src/test/java/com/bruce/common/enumconfig/SysEnumComponentStructureTests.java similarity index 91% rename from src/test/java/com/bruce/common/enumconfig/SysEnumComponentStructureTests.java rename to common-agent-common/src/test/java/com/bruce/common/enumconfig/SysEnumComponentStructureTests.java index ff55856..fb38d20 100644 --- a/src/test/java/com/bruce/common/enumconfig/SysEnumComponentStructureTests.java +++ b/common-agent-common/src/test/java/com/bruce/common/enumconfig/SysEnumComponentStructureTests.java @@ -11,6 +11,7 @@ import com.bruce.common.dto.request.SysEnumManageQueryRequest; import com.bruce.common.dto.request.SysEnumQueryRequest; import com.bruce.common.dto.request.SysEnumSaveRequest; import com.bruce.common.dto.response.SysEnumResponse; +import com.bruce.common.factory.SysEnumFactory; import com.bruce.common.mapper.SysEnumMapper; import com.bruce.common.service.ISysEnumService; import com.bruce.common.service.impl.SysEnumServiceImpl; @@ -89,7 +90,7 @@ class SysEnumComponentStructureTests { Method manageQueryMethod = SysEnumController.class.getMethod("queryForManagement", SysEnumManageQueryRequest.class); Method detailMethod = SysEnumController.class.getMethod("getById", Long.class); Method serviceListMethod = ISysEnumService.class.getMethod("listResponses"); - Method responseFactory = SysEnumResponse.class.getMethod("fromEntity", SysEnum.class); + Method responseFactory = SysEnumFactory.class.getMethod("toResponse", SysEnum.class); assertTrue(serviceListMethod.getGenericReturnType().getTypeName().contains("SysEnumResponse")); assertTrue(listMethod.getGenericReturnType().getTypeName().contains("SysEnumResponse")); @@ -99,10 +100,12 @@ class SysEnumComponentStructureTests { } @Test - void sysEnumShouldProvideManualInitTestEntry() throws NoSuchMethodException { - Method initMethod = SysEnumDataInitTests.class.getMethod("initDefaultEnums"); + void sysEnumShouldProvideDefinitionSyncSupportEntry() throws NoSuchMethodException { + Method groupMethod = SysEnumDefinitionSyncSupport.class.getDeclaredMethod("groupOf", List.class); + Method uniqueKeyMethod = SysEnumDefinitionSyncSupport.class.getDeclaredMethod("validateUniqueGroupKeys", List.class); - assertNotNull(initMethod); + assertNotNull(groupMethod); + assertNotNull(uniqueKeyMethod); } @Test diff --git a/src/test/java/com/bruce/common/enumconfig/SysEnumDefinitionSyncSupport.java b/common-agent-common/src/test/java/com/bruce/common/enumconfig/SysEnumDefinitionSyncSupport.java similarity index 100% rename from src/test/java/com/bruce/common/enumconfig/SysEnumDefinitionSyncSupport.java rename to common-agent-common/src/test/java/com/bruce/common/enumconfig/SysEnumDefinitionSyncSupport.java diff --git a/common-agent-common/src/test/java/com/bruce/common/factory/SysAttachmentFactoryTests.java b/common-agent-common/src/test/java/com/bruce/common/factory/SysAttachmentFactoryTests.java new file mode 100644 index 0000000..92963c0 --- /dev/null +++ b/common-agent-common/src/test/java/com/bruce/common/factory/SysAttachmentFactoryTests.java @@ -0,0 +1,43 @@ +package com.bruce.common.factory; + +import com.bruce.common.domain.entity.SysAttachment; +import com.bruce.common.dto.response.SysAttachmentResponse; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +class SysAttachmentFactoryTests { + + @Test + void shouldConvertEntityToResponse() { + SysAttachment entity = new SysAttachment(); + entity.setId(3003L); + entity.setSourceType("RAG"); + entity.setSourceId(1001L); + entity.setOriginalName("知识库说明.pdf"); + entity.setFileName("uuid.pdf"); + entity.setFileSuffix("pdf"); + entity.setContentType("application/pdf"); + entity.setFileSize(1024L); + entity.setStorageType("LOCAL"); + entity.setFilePath("20260601/uuid.pdf"); + entity.setFileUrl(null); + entity.setRemark("上传附件"); + + SysAttachmentFactory factory = new SysAttachmentFactory(); + SysAttachmentResponse response = factory.toResponse(entity); + + assertNotNull(response); + assertEquals(3003L, response.getId()); + assertEquals("RAG", response.getSourceType()); + assertEquals(1001L, response.getSourceId()); + assertEquals("知识库说明.pdf", response.getOriginalName()); + assertEquals("uuid.pdf", response.getFileName()); + assertEquals("pdf", response.getFileSuffix()); + assertEquals("application/pdf", response.getContentType()); + assertEquals(1024L, response.getFileSize()); + assertEquals("LOCAL", response.getStorageType()); + assertEquals("上传附件", response.getRemark()); + } +} diff --git a/common-agent-common/src/test/java/com/bruce/common/factory/SysEnumFactoryTests.java b/common-agent-common/src/test/java/com/bruce/common/factory/SysEnumFactoryTests.java new file mode 100644 index 0000000..1df9c98 --- /dev/null +++ b/common-agent-common/src/test/java/com/bruce/common/factory/SysEnumFactoryTests.java @@ -0,0 +1,64 @@ +package com.bruce.common.factory; + +import com.bruce.common.domain.entity.SysEnum; +import com.bruce.common.dto.request.SysEnumSaveRequest; +import com.bruce.common.dto.response.SysEnumResponse; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +class SysEnumFactoryTests { + + @Test + void shouldConvertSaveRequestToEntity() { + SysEnumSaveRequest request = new SysEnumSaveRequest(); + request.setId(1001L); + request.setCatalog("common"); + request.setType("enable_status"); + request.setName("启用"); + request.setValue(1); + request.setStrvalue("ENABLED"); + request.setSort(1); + request.setRemark("启停状态"); + + SysEnumFactory factory = new SysEnumFactory(); + SysEnum entity = factory.toEntity(request); + + assertNotNull(entity); + assertEquals(1001L, entity.getId()); + assertEquals("common", entity.getCatalog()); + assertEquals("enable_status", entity.getType()); + assertEquals("启用", entity.getName()); + assertEquals(1, entity.getValue()); + assertEquals("ENABLED", entity.getStrvalue()); + assertEquals(1, entity.getSort()); + assertEquals("启停状态", entity.getRemark()); + } + + @Test + void shouldConvertEntityToResponse() { + SysEnum entity = new SysEnum(); + entity.setId(2002L); + entity.setCatalog("rag"); + entity.setType("parse_status"); + entity.setName("已解析"); + entity.setValue(2); + entity.setStrvalue("PARSED"); + entity.setSort(2); + entity.setRemark("解析状态"); + + SysEnumFactory factory = new SysEnumFactory(); + SysEnumResponse response = factory.toResponse(entity); + + assertNotNull(response); + assertEquals(2002L, response.getId()); + assertEquals("rag", response.getCatalog()); + assertEquals("parse_status", response.getType()); + assertEquals("已解析", response.getName()); + assertEquals(2, response.getValue()); + assertEquals("PARSED", response.getStrvalue()); + assertEquals(2, response.getSort()); + assertEquals("解析状态", response.getRemark()); + } +} diff --git a/src/test/java/com/bruce/common/handler/GlobalExceptionHandlerTests.java b/common-agent-common/src/test/java/com/bruce/common/handler/GlobalExceptionHandlerTests.java similarity index 100% rename from src/test/java/com/bruce/common/handler/GlobalExceptionHandlerTests.java rename to common-agent-common/src/test/java/com/bruce/common/handler/GlobalExceptionHandlerTests.java diff --git a/src/test/java/com/bruce/common/model/RequestResultStructureTests.java b/common-agent-common/src/test/java/com/bruce/common/model/RequestResultStructureTests.java similarity index 100% rename from src/test/java/com/bruce/common/model/RequestResultStructureTests.java rename to common-agent-common/src/test/java/com/bruce/common/model/RequestResultStructureTests.java diff --git a/common-agent-mcp/pom.xml b/common-agent-mcp/pom.xml new file mode 100644 index 0000000..aa28a62 --- /dev/null +++ b/common-agent-mcp/pom.xml @@ -0,0 +1,50 @@ + + + 4.0.0 + + + com.bruce + common-agent-parent + 0.0.1-SNAPSHOT + + + common-agent-mcp + common-agent-mcp + + + + com.bruce + common-agent-common + ${project.version} + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-web + + + com.baomidou + mybatis-plus-spring-boot4-starter + + + org.projectlombok + lombok + true + + + org.postgresql + postgresql + runtime + + + org.springframework.boot + spring-boot-starter-test + test + + + diff --git a/common-agent-mcp/src/main/java/com/bruce/mcp/entity/McpCapability.java b/common-agent-mcp/src/main/java/com/bruce/mcp/entity/McpCapability.java new file mode 100644 index 0000000..d0c9407 --- /dev/null +++ b/common-agent-mcp/src/main/java/com/bruce/mcp/entity/McpCapability.java @@ -0,0 +1,30 @@ +package com.bruce.mcp.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.bruce.common.domain.model.BaseEntity; +import com.bruce.common.typehandler.PgJsonbStringTypeHandler; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * MCP 能力实体,对应 mcp_capability 表。 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("mcp_capability") +public class McpCapability extends BaseEntity { + + private Long serverId; + + private String capabilityCode; + + private String capabilityName; + + private String capabilityType; + + @TableField(typeHandler = PgJsonbStringTypeHandler.class) + private String schemaJson; + + private Boolean enabled; +} diff --git a/common-agent-mcp/src/main/java/com/bruce/mcp/entity/McpServer.java b/common-agent-mcp/src/main/java/com/bruce/mcp/entity/McpServer.java new file mode 100644 index 0000000..cfca33e --- /dev/null +++ b/common-agent-mcp/src/main/java/com/bruce/mcp/entity/McpServer.java @@ -0,0 +1,38 @@ +package com.bruce.mcp.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.bruce.common.domain.model.BaseEntity; +import com.bruce.common.typehandler.PgJsonbStringTypeHandler; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * MCP 服务实体,对应 mcp_server 表。 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("mcp_server") +public class McpServer extends BaseEntity { + + private String serverCode; + + private String serverName; + + private String importType; + + private String endpointUrl; + + private String packageName; + + @TableField(typeHandler = PgJsonbStringTypeHandler.class) + private String manifestJson; + + private String authType; + + private String secretRef; + + private String healthStatus; + + private Boolean enabled; +} diff --git a/common-agent-mcp/src/main/java/com/bruce/mcp/enums/McpHealthStatusEnum.java b/common-agent-mcp/src/main/java/com/bruce/mcp/enums/McpHealthStatusEnum.java new file mode 100644 index 0000000..159827b --- /dev/null +++ b/common-agent-mcp/src/main/java/com/bruce/mcp/enums/McpHealthStatusEnum.java @@ -0,0 +1,45 @@ +package com.bruce.mcp.enums; + +import com.bruce.common.enums.PersistableSysEnumDefinition; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@Getter +@RequiredArgsConstructor +public enum McpHealthStatusEnum implements PersistableSysEnumDefinition { + + UNKNOWN(1, "未知", "UNKNOWN"), + HEALTHY(2, "健康", "HEALTHY"), + UNHEALTHY(3, "异常", "UNHEALTHY"); + + private final Integer value; + + private final String label; + + private final String strvalue; + + @Override + public String getCatalog() { + return "mcp"; + } + + @Override + public String getType() { + return "health_status"; + } + + @Override + public String getName() { + return label; + } + + @Override + public Integer getSort() { + return value; + } + + @Override + public String getRemark() { + return "MCP健康状态"; + } +} diff --git a/common-agent-modelprovider/pom.xml b/common-agent-modelprovider/pom.xml new file mode 100644 index 0000000..e72bd0e --- /dev/null +++ b/common-agent-modelprovider/pom.xml @@ -0,0 +1,50 @@ + + + 4.0.0 + + + com.bruce + common-agent-parent + 0.0.1-SNAPSHOT + + + common-agent-modelprovider + common-agent-modelprovider + + + + com.bruce + common-agent-common + ${project.version} + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-web + + + com.baomidou + mybatis-plus-spring-boot4-starter + + + org.projectlombok + lombok + true + + + org.postgresql + postgresql + runtime + + + org.springframework.boot + spring-boot-starter-test + test + + + diff --git a/src/main/java/com/bruce/modelprovider/client/OpenAiChatCompletionResult.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/client/OpenAiChatCompletionResult.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/client/OpenAiChatCompletionResult.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/client/OpenAiChatCompletionResult.java diff --git a/src/main/java/com/bruce/modelprovider/client/OpenAiChatMessage.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/client/OpenAiChatMessage.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/client/OpenAiChatMessage.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/client/OpenAiChatMessage.java diff --git a/src/main/java/com/bruce/modelprovider/client/OpenAiCompatibleModelClient.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/client/OpenAiCompatibleModelClient.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/client/OpenAiCompatibleModelClient.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/client/OpenAiCompatibleModelClient.java diff --git a/src/main/java/com/bruce/modelprovider/client/OpenAiCompatibleModelClientImpl.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/client/OpenAiCompatibleModelClientImpl.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/client/OpenAiCompatibleModelClientImpl.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/client/OpenAiCompatibleModelClientImpl.java diff --git a/src/main/java/com/bruce/modelprovider/config/AiConfigFilePropertySourceConfig.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/config/AiConfigFilePropertySourceConfig.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/config/AiConfigFilePropertySourceConfig.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/config/AiConfigFilePropertySourceConfig.java diff --git a/src/main/java/com/bruce/modelprovider/config/AiSecretProperties.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/config/AiSecretProperties.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/config/AiSecretProperties.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/config/AiSecretProperties.java diff --git a/src/main/java/com/bruce/modelprovider/controller/ModelCallLogController.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/controller/ModelCallLogController.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/controller/ModelCallLogController.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/controller/ModelCallLogController.java diff --git a/src/main/java/com/bruce/modelprovider/controller/ModelConfigController.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/controller/ModelConfigController.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/controller/ModelConfigController.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/controller/ModelConfigController.java diff --git a/src/main/java/com/bruce/modelprovider/controller/ModelProviderController.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/controller/ModelProviderController.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/controller/ModelProviderController.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/controller/ModelProviderController.java diff --git a/src/main/java/com/bruce/modelprovider/controller/ModelRouteRuleController.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/controller/ModelRouteRuleController.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/controller/ModelRouteRuleController.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/controller/ModelRouteRuleController.java diff --git a/src/main/java/com/bruce/modelprovider/controller/RagStoreModelConfigController.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/controller/RagStoreModelConfigController.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/controller/RagStoreModelConfigController.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/controller/RagStoreModelConfigController.java diff --git a/src/main/java/com/bruce/modelprovider/dto/request/ModelCallLogQueryRequest.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/dto/request/ModelCallLogQueryRequest.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/dto/request/ModelCallLogQueryRequest.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/dto/request/ModelCallLogQueryRequest.java diff --git a/src/main/java/com/bruce/modelprovider/dto/request/ModelConfigSaveRequest.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/dto/request/ModelConfigSaveRequest.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/dto/request/ModelConfigSaveRequest.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/dto/request/ModelConfigSaveRequest.java diff --git a/src/main/java/com/bruce/modelprovider/dto/request/ModelProviderSaveRequest.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/dto/request/ModelProviderSaveRequest.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/dto/request/ModelProviderSaveRequest.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/dto/request/ModelProviderSaveRequest.java diff --git a/src/main/java/com/bruce/modelprovider/dto/request/ModelRouteRuleSaveRequest.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/dto/request/ModelRouteRuleSaveRequest.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/dto/request/ModelRouteRuleSaveRequest.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/dto/request/ModelRouteRuleSaveRequest.java diff --git a/src/main/java/com/bruce/modelprovider/dto/request/RagStoreModelConfigSaveRequest.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/dto/request/RagStoreModelConfigSaveRequest.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/dto/request/RagStoreModelConfigSaveRequest.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/dto/request/RagStoreModelConfigSaveRequest.java diff --git a/src/main/java/com/bruce/modelprovider/dto/response/ModelCallLogResponse.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/dto/response/ModelCallLogResponse.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/dto/response/ModelCallLogResponse.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/dto/response/ModelCallLogResponse.java diff --git a/src/main/java/com/bruce/modelprovider/dto/response/ModelConfigResponse.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/dto/response/ModelConfigResponse.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/dto/response/ModelConfigResponse.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/dto/response/ModelConfigResponse.java diff --git a/src/main/java/com/bruce/modelprovider/dto/response/ModelProviderResponse.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/dto/response/ModelProviderResponse.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/dto/response/ModelProviderResponse.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/dto/response/ModelProviderResponse.java diff --git a/src/main/java/com/bruce/modelprovider/dto/response/ModelRouteRuleResponse.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/dto/response/ModelRouteRuleResponse.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/dto/response/ModelRouteRuleResponse.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/dto/response/ModelRouteRuleResponse.java diff --git a/src/main/java/com/bruce/modelprovider/dto/response/RagStoreModelConfigResponse.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/dto/response/RagStoreModelConfigResponse.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/dto/response/RagStoreModelConfigResponse.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/dto/response/RagStoreModelConfigResponse.java diff --git a/src/main/java/com/bruce/modelprovider/entity/ModelCallLog.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/entity/ModelCallLog.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/entity/ModelCallLog.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/entity/ModelCallLog.java diff --git a/src/main/java/com/bruce/modelprovider/entity/ModelConfig.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/entity/ModelConfig.java similarity index 98% rename from src/main/java/com/bruce/modelprovider/entity/ModelConfig.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/entity/ModelConfig.java index ce28593..21eb4d3 100644 --- a/src/main/java/com/bruce/modelprovider/entity/ModelConfig.java +++ b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/entity/ModelConfig.java @@ -3,7 +3,7 @@ package com.bruce.modelprovider.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.bruce.common.domain.model.BaseEntity; -import com.bruce.rag.typehandler.PgJsonbStringTypeHandler; +import com.bruce.common.typehandler.PgJsonbStringTypeHandler; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/src/main/java/com/bruce/modelprovider/entity/ModelProvider.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/entity/ModelProvider.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/entity/ModelProvider.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/entity/ModelProvider.java diff --git a/src/main/java/com/bruce/modelprovider/entity/ModelRouteRule.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/entity/ModelRouteRule.java similarity index 97% rename from src/main/java/com/bruce/modelprovider/entity/ModelRouteRule.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/entity/ModelRouteRule.java index b962478..d53e3dd 100644 --- a/src/main/java/com/bruce/modelprovider/entity/ModelRouteRule.java +++ b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/entity/ModelRouteRule.java @@ -3,7 +3,7 @@ package com.bruce.modelprovider.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.bruce.common.domain.model.BaseEntity; -import com.bruce.rag.typehandler.PgJsonbStringTypeHandler; +import com.bruce.common.typehandler.PgJsonbStringTypeHandler; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/src/main/java/com/bruce/modelprovider/entity/RagStoreModelConfig.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/entity/RagStoreModelConfig.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/entity/RagStoreModelConfig.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/entity/RagStoreModelConfig.java diff --git a/src/main/java/com/bruce/modelprovider/enums/ModelCallStatusEnum.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/enums/ModelCallStatusEnum.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/enums/ModelCallStatusEnum.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/enums/ModelCallStatusEnum.java diff --git a/src/main/java/com/bruce/modelprovider/enums/ModelHealthStatusEnum.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/enums/ModelHealthStatusEnum.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/enums/ModelHealthStatusEnum.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/enums/ModelHealthStatusEnum.java diff --git a/src/main/java/com/bruce/modelprovider/enums/ModelProtocolTypeEnum.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/enums/ModelProtocolTypeEnum.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/enums/ModelProtocolTypeEnum.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/enums/ModelProtocolTypeEnum.java diff --git a/src/main/java/com/bruce/modelprovider/enums/ModelProviderTypeEnum.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/enums/ModelProviderTypeEnum.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/enums/ModelProviderTypeEnum.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/enums/ModelProviderTypeEnum.java diff --git a/src/main/java/com/bruce/modelprovider/enums/ModelRouteStrategyEnum.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/enums/ModelRouteStrategyEnum.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/enums/ModelRouteStrategyEnum.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/enums/ModelRouteStrategyEnum.java diff --git a/src/main/java/com/bruce/modelprovider/enums/ModelTaskTypeEnum.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/enums/ModelTaskTypeEnum.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/enums/ModelTaskTypeEnum.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/enums/ModelTaskTypeEnum.java diff --git a/src/main/java/com/bruce/modelprovider/enums/ModelTypeEnum.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/enums/ModelTypeEnum.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/enums/ModelTypeEnum.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/enums/ModelTypeEnum.java diff --git a/src/main/java/com/bruce/modelprovider/gateway/ChatModelGateway.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/gateway/ChatModelGateway.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/gateway/ChatModelGateway.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/gateway/ChatModelGateway.java diff --git a/src/main/java/com/bruce/modelprovider/gateway/ChatModelGatewayImpl.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/gateway/ChatModelGatewayImpl.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/gateway/ChatModelGatewayImpl.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/gateway/ChatModelGatewayImpl.java diff --git a/src/main/java/com/bruce/modelprovider/gateway/ChatRequest.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/gateway/ChatRequest.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/gateway/ChatRequest.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/gateway/ChatRequest.java diff --git a/src/main/java/com/bruce/modelprovider/gateway/ChatResult.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/gateway/ChatResult.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/gateway/ChatResult.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/gateway/ChatResult.java diff --git a/src/main/java/com/bruce/modelprovider/gateway/EmbeddingModelGateway.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/gateway/EmbeddingModelGateway.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/gateway/EmbeddingModelGateway.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/gateway/EmbeddingModelGateway.java diff --git a/src/main/java/com/bruce/modelprovider/gateway/EmbeddingModelGatewayImpl.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/gateway/EmbeddingModelGatewayImpl.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/gateway/EmbeddingModelGatewayImpl.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/gateway/EmbeddingModelGatewayImpl.java diff --git a/src/main/java/com/bruce/modelprovider/gateway/EmbeddingRequest.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/gateway/EmbeddingRequest.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/gateway/EmbeddingRequest.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/gateway/EmbeddingRequest.java diff --git a/src/main/java/com/bruce/modelprovider/gateway/EmbeddingResult.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/gateway/EmbeddingResult.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/gateway/EmbeddingResult.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/gateway/EmbeddingResult.java diff --git a/src/main/java/com/bruce/modelprovider/mapper/ModelCallLogMapper.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/mapper/ModelCallLogMapper.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/mapper/ModelCallLogMapper.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/mapper/ModelCallLogMapper.java diff --git a/src/main/java/com/bruce/modelprovider/mapper/ModelConfigMapper.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/mapper/ModelConfigMapper.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/mapper/ModelConfigMapper.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/mapper/ModelConfigMapper.java diff --git a/src/main/java/com/bruce/modelprovider/mapper/ModelProviderMapper.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/mapper/ModelProviderMapper.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/mapper/ModelProviderMapper.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/mapper/ModelProviderMapper.java diff --git a/src/main/java/com/bruce/modelprovider/mapper/ModelRouteRuleMapper.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/mapper/ModelRouteRuleMapper.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/mapper/ModelRouteRuleMapper.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/mapper/ModelRouteRuleMapper.java diff --git a/src/main/java/com/bruce/modelprovider/mapper/RagStoreModelConfigMapper.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/mapper/RagStoreModelConfigMapper.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/mapper/RagStoreModelConfigMapper.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/mapper/RagStoreModelConfigMapper.java diff --git a/src/main/java/com/bruce/modelprovider/route/ModelRouteContext.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/route/ModelRouteContext.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/route/ModelRouteContext.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/route/ModelRouteContext.java diff --git a/src/main/java/com/bruce/modelprovider/route/ModelRouteDecision.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/route/ModelRouteDecision.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/route/ModelRouteDecision.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/route/ModelRouteDecision.java diff --git a/src/main/java/com/bruce/modelprovider/service/IModelCallLogService.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/service/IModelCallLogService.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/service/IModelCallLogService.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/service/IModelCallLogService.java diff --git a/src/main/java/com/bruce/modelprovider/service/IModelConfigService.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/service/IModelConfigService.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/service/IModelConfigService.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/service/IModelConfigService.java diff --git a/src/main/java/com/bruce/modelprovider/service/IModelProviderService.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/service/IModelProviderService.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/service/IModelProviderService.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/service/IModelProviderService.java diff --git a/src/main/java/com/bruce/modelprovider/service/IModelRouteRuleService.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/service/IModelRouteRuleService.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/service/IModelRouteRuleService.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/service/IModelRouteRuleService.java diff --git a/src/main/java/com/bruce/modelprovider/service/IModelRouteService.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/service/IModelRouteService.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/service/IModelRouteService.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/service/IModelRouteService.java diff --git a/src/main/java/com/bruce/modelprovider/service/IRagStoreModelConfigService.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/service/IRagStoreModelConfigService.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/service/IRagStoreModelConfigService.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/service/IRagStoreModelConfigService.java diff --git a/src/main/java/com/bruce/modelprovider/service/impl/ModelCallLogServiceImpl.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/service/impl/ModelCallLogServiceImpl.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/service/impl/ModelCallLogServiceImpl.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/service/impl/ModelCallLogServiceImpl.java diff --git a/src/main/java/com/bruce/modelprovider/service/impl/ModelConfigServiceImpl.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/service/impl/ModelConfigServiceImpl.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/service/impl/ModelConfigServiceImpl.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/service/impl/ModelConfigServiceImpl.java diff --git a/src/main/java/com/bruce/modelprovider/service/impl/ModelProviderServiceImpl.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/service/impl/ModelProviderServiceImpl.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/service/impl/ModelProviderServiceImpl.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/service/impl/ModelProviderServiceImpl.java diff --git a/src/main/java/com/bruce/modelprovider/service/impl/ModelRouteRuleServiceImpl.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/service/impl/ModelRouteRuleServiceImpl.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/service/impl/ModelRouteRuleServiceImpl.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/service/impl/ModelRouteRuleServiceImpl.java diff --git a/src/main/java/com/bruce/modelprovider/service/impl/ModelRouteServiceImpl.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/service/impl/ModelRouteServiceImpl.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/service/impl/ModelRouteServiceImpl.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/service/impl/ModelRouteServiceImpl.java diff --git a/src/main/java/com/bruce/modelprovider/service/impl/RagStoreModelConfigServiceImpl.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/service/impl/RagStoreModelConfigServiceImpl.java similarity index 100% rename from src/main/java/com/bruce/modelprovider/service/impl/RagStoreModelConfigServiceImpl.java rename to common-agent-modelprovider/src/main/java/com/bruce/modelprovider/service/impl/RagStoreModelConfigServiceImpl.java diff --git a/src/test/java/com/bruce/modelprovider/ModelProviderComponentStructureTests.java b/common-agent-modelprovider/src/test/java/com/bruce/modelprovider/ModelProviderComponentStructureTests.java similarity index 100% rename from src/test/java/com/bruce/modelprovider/ModelProviderComponentStructureTests.java rename to common-agent-modelprovider/src/test/java/com/bruce/modelprovider/ModelProviderComponentStructureTests.java diff --git a/common-agent-observability/pom.xml b/common-agent-observability/pom.xml new file mode 100644 index 0000000..d6fd21d --- /dev/null +++ b/common-agent-observability/pom.xml @@ -0,0 +1,65 @@ + + + 4.0.0 + + + com.bruce + common-agent-parent + 0.0.1-SNAPSHOT + + + common-agent-observability + common-agent-observability + + + + com.bruce + common-agent-common + ${project.version} + + + com.bruce + common-agent-agent + ${project.version} + + + com.bruce + common-agent-modelprovider + ${project.version} + + + com.bruce + common-agent-workflow + ${project.version} + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-web + + + com.baomidou + mybatis-plus-spring-boot4-starter + + + org.projectlombok + lombok + true + + + org.postgresql + postgresql + runtime + + + org.springframework.boot + spring-boot-starter-test + test + + + diff --git a/common-agent-observability/src/main/java/com/bruce/observability/controller/ObservabilityTraceController.java b/common-agent-observability/src/main/java/com/bruce/observability/controller/ObservabilityTraceController.java new file mode 100644 index 0000000..5c1b8f0 --- /dev/null +++ b/common-agent-observability/src/main/java/com/bruce/observability/controller/ObservabilityTraceController.java @@ -0,0 +1,27 @@ +package com.bruce.observability.controller; + +import com.bruce.common.domain.model.RequestResult; +import com.bruce.observability.vo.ObservabilityTraceVO; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 运行观测控制器先提供占位查询接口, + * 后续在 observability 模块完善聚合服务实现。 + */ +@RestController +@RequestMapping("/api/observability") +public class ObservabilityTraceController { + + @GetMapping("/trace") + public RequestResult trace(@RequestParam("requestId") String requestId) { + ObservabilityTraceVO vo = new ObservabilityTraceVO(); + vo.setRequestId(requestId); + vo.setStepSummaries(List.of()); + return RequestResult.success(vo); + } +} diff --git a/common-agent-observability/src/main/java/com/bruce/observability/vo/ObservabilityTraceVO.java b/common-agent-observability/src/main/java/com/bruce/observability/vo/ObservabilityTraceVO.java new file mode 100644 index 0000000..ee63533 --- /dev/null +++ b/common-agent-observability/src/main/java/com/bruce/observability/vo/ObservabilityTraceVO.java @@ -0,0 +1,31 @@ +package com.bruce.observability.vo; + +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * requestId 级别的运行追踪聚合返回对象。 + */ +@Data +public class ObservabilityTraceVO { + + private String requestId; + + private String workflowStatus; + + private String sessionStatus; + + private Integer workflowStepCount; + + private Integer messageCount; + + private Integer modelCallCount; + + private Integer totalDurationMs; + + private BigDecimal estimatedCost; + + private List stepSummaries; +} diff --git a/common-agent-rag/pom.xml b/common-agent-rag/pom.xml new file mode 100644 index 0000000..b6499d8 --- /dev/null +++ b/common-agent-rag/pom.xml @@ -0,0 +1,55 @@ + + + 4.0.0 + + + com.bruce + common-agent-parent + 0.0.1-SNAPSHOT + + + common-agent-rag + common-agent-rag + + + + com.bruce + common-agent-common + ${project.version} + + + com.bruce + common-agent-modelprovider + ${project.version} + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-web + + + com.baomidou + mybatis-plus-spring-boot4-starter + + + org.projectlombok + lombok + true + + + org.postgresql + postgresql + runtime + + + org.springframework.boot + spring-boot-starter-test + test + + + diff --git a/src/main/java/com/bruce/rag/constant/RagSystemConstants.java b/common-agent-rag/src/main/java/com/bruce/rag/constant/RagSystemConstants.java similarity index 100% rename from src/main/java/com/bruce/rag/constant/RagSystemConstants.java rename to common-agent-rag/src/main/java/com/bruce/rag/constant/RagSystemConstants.java diff --git a/src/main/java/com/bruce/rag/controller/RagDocumentController.java b/common-agent-rag/src/main/java/com/bruce/rag/controller/RagDocumentController.java similarity index 100% rename from src/main/java/com/bruce/rag/controller/RagDocumentController.java rename to common-agent-rag/src/main/java/com/bruce/rag/controller/RagDocumentController.java diff --git a/src/main/java/com/bruce/rag/controller/RagStoreController.java b/common-agent-rag/src/main/java/com/bruce/rag/controller/RagStoreController.java similarity index 100% rename from src/main/java/com/bruce/rag/controller/RagStoreController.java rename to common-agent-rag/src/main/java/com/bruce/rag/controller/RagStoreController.java diff --git a/src/main/java/com/bruce/rag/dto/request/RagDocumentBatchUploadRequest.java b/common-agent-rag/src/main/java/com/bruce/rag/dto/request/RagDocumentBatchUploadRequest.java similarity index 100% rename from src/main/java/com/bruce/rag/dto/request/RagDocumentBatchUploadRequest.java rename to common-agent-rag/src/main/java/com/bruce/rag/dto/request/RagDocumentBatchUploadRequest.java diff --git a/src/main/java/com/bruce/rag/dto/request/RagDocumentChunkRequest.java b/common-agent-rag/src/main/java/com/bruce/rag/dto/request/RagDocumentChunkRequest.java similarity index 100% rename from src/main/java/com/bruce/rag/dto/request/RagDocumentChunkRequest.java rename to common-agent-rag/src/main/java/com/bruce/rag/dto/request/RagDocumentChunkRequest.java diff --git a/src/main/java/com/bruce/rag/dto/request/RagDocumentParseRequest.java b/common-agent-rag/src/main/java/com/bruce/rag/dto/request/RagDocumentParseRequest.java similarity index 100% rename from src/main/java/com/bruce/rag/dto/request/RagDocumentParseRequest.java rename to common-agent-rag/src/main/java/com/bruce/rag/dto/request/RagDocumentParseRequest.java diff --git a/src/main/java/com/bruce/rag/dto/request/RagDocumentQueryRequest.java b/common-agent-rag/src/main/java/com/bruce/rag/dto/request/RagDocumentQueryRequest.java similarity index 100% rename from src/main/java/com/bruce/rag/dto/request/RagDocumentQueryRequest.java rename to common-agent-rag/src/main/java/com/bruce/rag/dto/request/RagDocumentQueryRequest.java diff --git a/src/main/java/com/bruce/rag/dto/request/RagDocumentSaveRequest.java b/common-agent-rag/src/main/java/com/bruce/rag/dto/request/RagDocumentSaveRequest.java similarity index 100% rename from src/main/java/com/bruce/rag/dto/request/RagDocumentSaveRequest.java rename to common-agent-rag/src/main/java/com/bruce/rag/dto/request/RagDocumentSaveRequest.java diff --git a/src/main/java/com/bruce/rag/dto/request/RagStoreQueryRequest.java b/common-agent-rag/src/main/java/com/bruce/rag/dto/request/RagStoreQueryRequest.java similarity index 100% rename from src/main/java/com/bruce/rag/dto/request/RagStoreQueryRequest.java rename to common-agent-rag/src/main/java/com/bruce/rag/dto/request/RagStoreQueryRequest.java diff --git a/src/main/java/com/bruce/rag/dto/request/RagStoreSaveRequest.java b/common-agent-rag/src/main/java/com/bruce/rag/dto/request/RagStoreSaveRequest.java similarity index 100% rename from src/main/java/com/bruce/rag/dto/request/RagStoreSaveRequest.java rename to common-agent-rag/src/main/java/com/bruce/rag/dto/request/RagStoreSaveRequest.java diff --git a/src/main/java/com/bruce/rag/dto/response/RagChunkRecallResponse.java b/common-agent-rag/src/main/java/com/bruce/rag/dto/response/RagChunkRecallResponse.java similarity index 100% rename from src/main/java/com/bruce/rag/dto/response/RagChunkRecallResponse.java rename to common-agent-rag/src/main/java/com/bruce/rag/dto/response/RagChunkRecallResponse.java diff --git a/src/main/java/com/bruce/rag/dto/response/RagDocumentParseResponse.java b/common-agent-rag/src/main/java/com/bruce/rag/dto/response/RagDocumentParseResponse.java similarity index 100% rename from src/main/java/com/bruce/rag/dto/response/RagDocumentParseResponse.java rename to common-agent-rag/src/main/java/com/bruce/rag/dto/response/RagDocumentParseResponse.java diff --git a/src/main/java/com/bruce/rag/dto/response/RagDocumentResponse.java b/common-agent-rag/src/main/java/com/bruce/rag/dto/response/RagDocumentResponse.java similarity index 100% rename from src/main/java/com/bruce/rag/dto/response/RagDocumentResponse.java rename to common-agent-rag/src/main/java/com/bruce/rag/dto/response/RagDocumentResponse.java diff --git a/src/main/java/com/bruce/rag/dto/response/RagStoreDocumentOverviewResponse.java b/common-agent-rag/src/main/java/com/bruce/rag/dto/response/RagStoreDocumentOverviewResponse.java similarity index 100% rename from src/main/java/com/bruce/rag/dto/response/RagStoreDocumentOverviewResponse.java rename to common-agent-rag/src/main/java/com/bruce/rag/dto/response/RagStoreDocumentOverviewResponse.java diff --git a/src/main/java/com/bruce/rag/dto/response/RagStoreOverviewResponse.java b/common-agent-rag/src/main/java/com/bruce/rag/dto/response/RagStoreOverviewResponse.java similarity index 100% rename from src/main/java/com/bruce/rag/dto/response/RagStoreOverviewResponse.java rename to common-agent-rag/src/main/java/com/bruce/rag/dto/response/RagStoreOverviewResponse.java diff --git a/src/main/java/com/bruce/rag/dto/response/RagStoreResponse.java b/common-agent-rag/src/main/java/com/bruce/rag/dto/response/RagStoreResponse.java similarity index 100% rename from src/main/java/com/bruce/rag/dto/response/RagStoreResponse.java rename to common-agent-rag/src/main/java/com/bruce/rag/dto/response/RagStoreResponse.java diff --git a/src/main/java/com/bruce/rag/entity/RagChunk.java b/common-agent-rag/src/main/java/com/bruce/rag/entity/RagChunk.java similarity index 96% rename from src/main/java/com/bruce/rag/entity/RagChunk.java rename to common-agent-rag/src/main/java/com/bruce/rag/entity/RagChunk.java index e718b85..8ace62d 100644 --- a/src/main/java/com/bruce/rag/entity/RagChunk.java +++ b/common-agent-rag/src/main/java/com/bruce/rag/entity/RagChunk.java @@ -3,7 +3,7 @@ package com.bruce.rag.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.bruce.common.domain.model.BaseEntity; -import com.bruce.rag.typehandler.PgJsonbStringTypeHandler; +import com.bruce.common.typehandler.PgJsonbStringTypeHandler; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/src/main/java/com/bruce/rag/entity/RagChunkEmbedding.java b/common-agent-rag/src/main/java/com/bruce/rag/entity/RagChunkEmbedding.java similarity index 100% rename from src/main/java/com/bruce/rag/entity/RagChunkEmbedding.java rename to common-agent-rag/src/main/java/com/bruce/rag/entity/RagChunkEmbedding.java diff --git a/src/main/java/com/bruce/rag/entity/RagDocument.java b/common-agent-rag/src/main/java/com/bruce/rag/entity/RagDocument.java similarity index 100% rename from src/main/java/com/bruce/rag/entity/RagDocument.java rename to common-agent-rag/src/main/java/com/bruce/rag/entity/RagDocument.java diff --git a/src/main/java/com/bruce/rag/entity/RagDocumentParseResult.java b/common-agent-rag/src/main/java/com/bruce/rag/entity/RagDocumentParseResult.java similarity index 96% rename from src/main/java/com/bruce/rag/entity/RagDocumentParseResult.java rename to common-agent-rag/src/main/java/com/bruce/rag/entity/RagDocumentParseResult.java index e5b24e0..62520ec 100644 --- a/src/main/java/com/bruce/rag/entity/RagDocumentParseResult.java +++ b/common-agent-rag/src/main/java/com/bruce/rag/entity/RagDocumentParseResult.java @@ -3,7 +3,7 @@ package com.bruce.rag.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.bruce.common.domain.model.BaseEntity; -import com.bruce.rag.typehandler.PgJsonbStringTypeHandler; +import com.bruce.common.typehandler.PgJsonbStringTypeHandler; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/src/main/java/com/bruce/rag/entity/RagStore.java b/common-agent-rag/src/main/java/com/bruce/rag/entity/RagStore.java similarity index 100% rename from src/main/java/com/bruce/rag/entity/RagStore.java rename to common-agent-rag/src/main/java/com/bruce/rag/entity/RagStore.java diff --git a/src/main/java/com/bruce/rag/enums/RagChunkStrategyEnum.java b/common-agent-rag/src/main/java/com/bruce/rag/enums/RagChunkStrategyEnum.java similarity index 100% rename from src/main/java/com/bruce/rag/enums/RagChunkStrategyEnum.java rename to common-agent-rag/src/main/java/com/bruce/rag/enums/RagChunkStrategyEnum.java diff --git a/src/main/java/com/bruce/rag/enums/RagIndexStatusEnum.java b/common-agent-rag/src/main/java/com/bruce/rag/enums/RagIndexStatusEnum.java similarity index 100% rename from src/main/java/com/bruce/rag/enums/RagIndexStatusEnum.java rename to common-agent-rag/src/main/java/com/bruce/rag/enums/RagIndexStatusEnum.java diff --git a/src/main/java/com/bruce/rag/enums/RagParseStatusEnum.java b/common-agent-rag/src/main/java/com/bruce/rag/enums/RagParseStatusEnum.java similarity index 100% rename from src/main/java/com/bruce/rag/enums/RagParseStatusEnum.java rename to common-agent-rag/src/main/java/com/bruce/rag/enums/RagParseStatusEnum.java diff --git a/src/main/java/com/bruce/rag/mapper/RagChunkEmbeddingMapper.java b/common-agent-rag/src/main/java/com/bruce/rag/mapper/RagChunkEmbeddingMapper.java similarity index 100% rename from src/main/java/com/bruce/rag/mapper/RagChunkEmbeddingMapper.java rename to common-agent-rag/src/main/java/com/bruce/rag/mapper/RagChunkEmbeddingMapper.java diff --git a/src/main/java/com/bruce/rag/mapper/RagChunkMapper.java b/common-agent-rag/src/main/java/com/bruce/rag/mapper/RagChunkMapper.java similarity index 100% rename from src/main/java/com/bruce/rag/mapper/RagChunkMapper.java rename to common-agent-rag/src/main/java/com/bruce/rag/mapper/RagChunkMapper.java diff --git a/src/main/java/com/bruce/rag/mapper/RagDocumentMapper.java b/common-agent-rag/src/main/java/com/bruce/rag/mapper/RagDocumentMapper.java similarity index 100% rename from src/main/java/com/bruce/rag/mapper/RagDocumentMapper.java rename to common-agent-rag/src/main/java/com/bruce/rag/mapper/RagDocumentMapper.java diff --git a/src/main/java/com/bruce/rag/mapper/RagDocumentParseResultMapper.java b/common-agent-rag/src/main/java/com/bruce/rag/mapper/RagDocumentParseResultMapper.java similarity index 100% rename from src/main/java/com/bruce/rag/mapper/RagDocumentParseResultMapper.java rename to common-agent-rag/src/main/java/com/bruce/rag/mapper/RagDocumentParseResultMapper.java diff --git a/src/main/java/com/bruce/rag/mapper/RagStoreMapper.java b/common-agent-rag/src/main/java/com/bruce/rag/mapper/RagStoreMapper.java similarity index 100% rename from src/main/java/com/bruce/rag/mapper/RagStoreMapper.java rename to common-agent-rag/src/main/java/com/bruce/rag/mapper/RagStoreMapper.java diff --git a/src/main/java/com/bruce/rag/parse/Chunker.java b/common-agent-rag/src/main/java/com/bruce/rag/parse/Chunker.java similarity index 100% rename from src/main/java/com/bruce/rag/parse/Chunker.java rename to common-agent-rag/src/main/java/com/bruce/rag/parse/Chunker.java diff --git a/src/main/java/com/bruce/rag/parse/ChunkerFactory.java b/common-agent-rag/src/main/java/com/bruce/rag/parse/ChunkerFactory.java similarity index 100% rename from src/main/java/com/bruce/rag/parse/ChunkerFactory.java rename to common-agent-rag/src/main/java/com/bruce/rag/parse/ChunkerFactory.java diff --git a/src/main/java/com/bruce/rag/parse/RagChunkCommand.java b/common-agent-rag/src/main/java/com/bruce/rag/parse/RagChunkCommand.java similarity index 100% rename from src/main/java/com/bruce/rag/parse/RagChunkCommand.java rename to common-agent-rag/src/main/java/com/bruce/rag/parse/RagChunkCommand.java diff --git a/src/main/java/com/bruce/rag/parse/impl/DelimiterChunker.java b/common-agent-rag/src/main/java/com/bruce/rag/parse/impl/DelimiterChunker.java similarity index 100% rename from src/main/java/com/bruce/rag/parse/impl/DelimiterChunker.java rename to common-agent-rag/src/main/java/com/bruce/rag/parse/impl/DelimiterChunker.java diff --git a/src/main/java/com/bruce/rag/parse/impl/FixedLengthChunker.java b/common-agent-rag/src/main/java/com/bruce/rag/parse/impl/FixedLengthChunker.java similarity index 100% rename from src/main/java/com/bruce/rag/parse/impl/FixedLengthChunker.java rename to common-agent-rag/src/main/java/com/bruce/rag/parse/impl/FixedLengthChunker.java diff --git a/src/main/java/com/bruce/rag/service/IRagChunkEmbeddingService.java b/common-agent-rag/src/main/java/com/bruce/rag/service/IRagChunkEmbeddingService.java similarity index 100% rename from src/main/java/com/bruce/rag/service/IRagChunkEmbeddingService.java rename to common-agent-rag/src/main/java/com/bruce/rag/service/IRagChunkEmbeddingService.java diff --git a/src/main/java/com/bruce/rag/service/IRagChunkService.java b/common-agent-rag/src/main/java/com/bruce/rag/service/IRagChunkService.java similarity index 100% rename from src/main/java/com/bruce/rag/service/IRagChunkService.java rename to common-agent-rag/src/main/java/com/bruce/rag/service/IRagChunkService.java diff --git a/src/main/java/com/bruce/rag/service/IRagDocumentAutoParseService.java b/common-agent-rag/src/main/java/com/bruce/rag/service/IRagDocumentAutoParseService.java similarity index 100% rename from src/main/java/com/bruce/rag/service/IRagDocumentAutoParseService.java rename to common-agent-rag/src/main/java/com/bruce/rag/service/IRagDocumentAutoParseService.java diff --git a/src/main/java/com/bruce/rag/service/IRagDocumentChunkService.java b/common-agent-rag/src/main/java/com/bruce/rag/service/IRagDocumentChunkService.java similarity index 100% rename from src/main/java/com/bruce/rag/service/IRagDocumentChunkService.java rename to common-agent-rag/src/main/java/com/bruce/rag/service/IRagDocumentChunkService.java diff --git a/src/main/java/com/bruce/rag/service/IRagDocumentParseResultService.java b/common-agent-rag/src/main/java/com/bruce/rag/service/IRagDocumentParseResultService.java similarity index 100% rename from src/main/java/com/bruce/rag/service/IRagDocumentParseResultService.java rename to common-agent-rag/src/main/java/com/bruce/rag/service/IRagDocumentParseResultService.java diff --git a/src/main/java/com/bruce/rag/service/IRagDocumentParseService.java b/common-agent-rag/src/main/java/com/bruce/rag/service/IRagDocumentParseService.java similarity index 100% rename from src/main/java/com/bruce/rag/service/IRagDocumentParseService.java rename to common-agent-rag/src/main/java/com/bruce/rag/service/IRagDocumentParseService.java diff --git a/src/main/java/com/bruce/rag/service/IRagDocumentService.java b/common-agent-rag/src/main/java/com/bruce/rag/service/IRagDocumentService.java similarity index 100% rename from src/main/java/com/bruce/rag/service/IRagDocumentService.java rename to common-agent-rag/src/main/java/com/bruce/rag/service/IRagDocumentService.java diff --git a/src/main/java/com/bruce/rag/service/IRagStoreService.java b/common-agent-rag/src/main/java/com/bruce/rag/service/IRagStoreService.java similarity index 100% rename from src/main/java/com/bruce/rag/service/IRagStoreService.java rename to common-agent-rag/src/main/java/com/bruce/rag/service/IRagStoreService.java diff --git a/src/main/java/com/bruce/rag/service/impl/RagChunkEmbeddingServiceImpl.java b/common-agent-rag/src/main/java/com/bruce/rag/service/impl/RagChunkEmbeddingServiceImpl.java similarity index 100% rename from src/main/java/com/bruce/rag/service/impl/RagChunkEmbeddingServiceImpl.java rename to common-agent-rag/src/main/java/com/bruce/rag/service/impl/RagChunkEmbeddingServiceImpl.java diff --git a/src/main/java/com/bruce/rag/service/impl/RagChunkServiceImpl.java b/common-agent-rag/src/main/java/com/bruce/rag/service/impl/RagChunkServiceImpl.java similarity index 100% rename from src/main/java/com/bruce/rag/service/impl/RagChunkServiceImpl.java rename to common-agent-rag/src/main/java/com/bruce/rag/service/impl/RagChunkServiceImpl.java diff --git a/src/main/java/com/bruce/rag/service/impl/RagDocumentAutoParseServiceImpl.java b/common-agent-rag/src/main/java/com/bruce/rag/service/impl/RagDocumentAutoParseServiceImpl.java similarity index 100% rename from src/main/java/com/bruce/rag/service/impl/RagDocumentAutoParseServiceImpl.java rename to common-agent-rag/src/main/java/com/bruce/rag/service/impl/RagDocumentAutoParseServiceImpl.java diff --git a/src/main/java/com/bruce/rag/service/impl/RagDocumentChunkServiceImpl.java b/common-agent-rag/src/main/java/com/bruce/rag/service/impl/RagDocumentChunkServiceImpl.java similarity index 100% rename from src/main/java/com/bruce/rag/service/impl/RagDocumentChunkServiceImpl.java rename to common-agent-rag/src/main/java/com/bruce/rag/service/impl/RagDocumentChunkServiceImpl.java diff --git a/src/main/java/com/bruce/rag/service/impl/RagDocumentParseResultServiceImpl.java b/common-agent-rag/src/main/java/com/bruce/rag/service/impl/RagDocumentParseResultServiceImpl.java similarity index 100% rename from src/main/java/com/bruce/rag/service/impl/RagDocumentParseResultServiceImpl.java rename to common-agent-rag/src/main/java/com/bruce/rag/service/impl/RagDocumentParseResultServiceImpl.java diff --git a/src/main/java/com/bruce/rag/service/impl/RagDocumentParseServiceImpl.java b/common-agent-rag/src/main/java/com/bruce/rag/service/impl/RagDocumentParseServiceImpl.java similarity index 100% rename from src/main/java/com/bruce/rag/service/impl/RagDocumentParseServiceImpl.java rename to common-agent-rag/src/main/java/com/bruce/rag/service/impl/RagDocumentParseServiceImpl.java diff --git a/src/main/java/com/bruce/rag/service/impl/RagDocumentServiceImpl.java b/common-agent-rag/src/main/java/com/bruce/rag/service/impl/RagDocumentServiceImpl.java similarity index 100% rename from src/main/java/com/bruce/rag/service/impl/RagDocumentServiceImpl.java rename to common-agent-rag/src/main/java/com/bruce/rag/service/impl/RagDocumentServiceImpl.java diff --git a/src/main/java/com/bruce/rag/service/impl/RagStoreServiceImpl.java b/common-agent-rag/src/main/java/com/bruce/rag/service/impl/RagStoreServiceImpl.java similarity index 100% rename from src/main/java/com/bruce/rag/service/impl/RagStoreServiceImpl.java rename to common-agent-rag/src/main/java/com/bruce/rag/service/impl/RagStoreServiceImpl.java diff --git a/src/test/java/com/bruce/rag/RagComponentStructureTests.java b/common-agent-rag/src/test/java/com/bruce/rag/RagComponentStructureTests.java similarity index 99% rename from src/test/java/com/bruce/rag/RagComponentStructureTests.java rename to common-agent-rag/src/test/java/com/bruce/rag/RagComponentStructureTests.java index a839ee1..26c83d4 100644 --- a/src/test/java/com/bruce/rag/RagComponentStructureTests.java +++ b/common-agent-rag/src/test/java/com/bruce/rag/RagComponentStructureTests.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import com.bruce.common.typehandler.PgJsonbStringTypeHandler; import com.bruce.common.domain.model.RequestResult; import com.bruce.rag.constant.RagSystemConstants; import com.bruce.rag.controller.RagDocumentController; @@ -39,7 +40,6 @@ import com.bruce.rag.service.impl.RagChunkServiceImpl; import com.bruce.rag.service.impl.RagDocumentParseResultServiceImpl; import com.bruce.rag.service.impl.RagDocumentServiceImpl; import com.bruce.rag.service.impl.RagStoreServiceImpl; -import com.bruce.rag.typehandler.PgJsonbStringTypeHandler; import org.junit.jupiter.api.Test; import org.springframework.web.bind.annotation.PostMapping; diff --git a/src/test/java/com/bruce/rag/RagDocumentParseServiceImplTests.java b/common-agent-rag/src/test/java/com/bruce/rag/RagDocumentParseServiceImplTests.java similarity index 100% rename from src/test/java/com/bruce/rag/RagDocumentParseServiceImplTests.java rename to common-agent-rag/src/test/java/com/bruce/rag/RagDocumentParseServiceImplTests.java diff --git a/src/test/java/com/bruce/rag/RagDocumentServiceImplTests.java b/common-agent-rag/src/test/java/com/bruce/rag/RagDocumentServiceImplTests.java similarity index 100% rename from src/test/java/com/bruce/rag/RagDocumentServiceImplTests.java rename to common-agent-rag/src/test/java/com/bruce/rag/RagDocumentServiceImplTests.java diff --git a/src/test/java/com/bruce/rag/RagStoreOverviewServiceTests.java b/common-agent-rag/src/test/java/com/bruce/rag/RagStoreOverviewServiceTests.java similarity index 100% rename from src/test/java/com/bruce/rag/RagStoreOverviewServiceTests.java rename to common-agent-rag/src/test/java/com/bruce/rag/RagStoreOverviewServiceTests.java diff --git a/src/test/java/com/bruce/rag/RagStoreResponseSerializationTests.java b/common-agent-rag/src/test/java/com/bruce/rag/RagStoreResponseSerializationTests.java similarity index 100% rename from src/test/java/com/bruce/rag/RagStoreResponseSerializationTests.java rename to common-agent-rag/src/test/java/com/bruce/rag/RagStoreResponseSerializationTests.java diff --git a/src/test/java/com/bruce/rag/RagStoreSaveValidationTests.java b/common-agent-rag/src/test/java/com/bruce/rag/RagStoreSaveValidationTests.java similarity index 100% rename from src/test/java/com/bruce/rag/RagStoreSaveValidationTests.java rename to common-agent-rag/src/test/java/com/bruce/rag/RagStoreSaveValidationTests.java diff --git a/src/test/java/com/bruce/rag/parse/ChunkerFactoryTests.java b/common-agent-rag/src/test/java/com/bruce/rag/parse/ChunkerFactoryTests.java similarity index 100% rename from src/test/java/com/bruce/rag/parse/ChunkerFactoryTests.java rename to common-agent-rag/src/test/java/com/bruce/rag/parse/ChunkerFactoryTests.java diff --git a/src/test/java/com/bruce/rag/parse/DelimiterChunkerTests.java b/common-agent-rag/src/test/java/com/bruce/rag/parse/DelimiterChunkerTests.java similarity index 100% rename from src/test/java/com/bruce/rag/parse/DelimiterChunkerTests.java rename to common-agent-rag/src/test/java/com/bruce/rag/parse/DelimiterChunkerTests.java diff --git a/src/test/java/com/bruce/rag/parse/FixedLengthChunkerTests.java b/common-agent-rag/src/test/java/com/bruce/rag/parse/FixedLengthChunkerTests.java similarity index 100% rename from src/test/java/com/bruce/rag/parse/FixedLengthChunkerTests.java rename to common-agent-rag/src/test/java/com/bruce/rag/parse/FixedLengthChunkerTests.java diff --git a/common-agent-skill/pom.xml b/common-agent-skill/pom.xml new file mode 100644 index 0000000..ad9e4e9 --- /dev/null +++ b/common-agent-skill/pom.xml @@ -0,0 +1,50 @@ + + + 4.0.0 + + + com.bruce + common-agent-parent + 0.0.1-SNAPSHOT + + + common-agent-skill + common-agent-skill + + + + com.bruce + common-agent-common + ${project.version} + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-web + + + com.baomidou + mybatis-plus-spring-boot4-starter + + + org.projectlombok + lombok + true + + + org.postgresql + postgresql + runtime + + + org.springframework.boot + spring-boot-starter-test + test + + + diff --git a/common-agent-skill/src/main/java/com/bruce/skill/entity/SkillDefinition.java b/common-agent-skill/src/main/java/com/bruce/skill/entity/SkillDefinition.java new file mode 100644 index 0000000..4758219 --- /dev/null +++ b/common-agent-skill/src/main/java/com/bruce/skill/entity/SkillDefinition.java @@ -0,0 +1,25 @@ +package com.bruce.skill.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.bruce.common.domain.model.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * Skill 定义实体,对应 skill_definition 表。 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("skill_definition") +public class SkillDefinition extends BaseEntity { + + private String skillCode; + + private String skillName; + + private String skillType; + + private String description; + + private String status; +} diff --git a/common-agent-skill/src/main/java/com/bruce/skill/entity/SkillVersion.java b/common-agent-skill/src/main/java/com/bruce/skill/entity/SkillVersion.java new file mode 100644 index 0000000..2065a00 --- /dev/null +++ b/common-agent-skill/src/main/java/com/bruce/skill/entity/SkillVersion.java @@ -0,0 +1,38 @@ +package com.bruce.skill.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.bruce.common.domain.model.BaseEntity; +import com.bruce.common.typehandler.PgJsonbStringTypeHandler; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * Skill 版本实体,用于保存 Prompt、Code、配置和测试结果。 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("skill_version") +public class SkillVersion extends BaseEntity { + + private Long skillId; + + private Integer versionNo; + + private String promptText; + + private String codeText; + + @TableField(typeHandler = PgJsonbStringTypeHandler.class) + private String configJson; + + @TableField(typeHandler = PgJsonbStringTypeHandler.class) + private String variableSchemaJson; + + @TableField(typeHandler = PgJsonbStringTypeHandler.class) + private String testResultJson; + + private String publishStatus; + + private java.time.LocalDateTime publishedTime; +} diff --git a/common-agent-workflow/pom.xml b/common-agent-workflow/pom.xml new file mode 100644 index 0000000..ee394b0 --- /dev/null +++ b/common-agent-workflow/pom.xml @@ -0,0 +1,75 @@ + + + 4.0.0 + + + com.bruce + common-agent-parent + 0.0.1-SNAPSHOT + + + common-agent-workflow + common-agent-workflow + + + + com.bruce + common-agent-common + ${project.version} + + + com.bruce + common-agent-agent + ${project.version} + + + com.bruce + common-agent-rag + ${project.version} + + + com.bruce + common-agent-modelprovider + ${project.version} + + + com.bruce + common-agent-mcp + ${project.version} + + + com.bruce + common-agent-skill + ${project.version} + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-web + + + com.baomidou + mybatis-plus-spring-boot4-starter + + + org.projectlombok + lombok + true + + + org.postgresql + postgresql + runtime + + + org.springframework.boot + spring-boot-starter-test + test + + + diff --git a/common-agent-workflow/src/main/java/com/bruce/workflow/controller/WorkflowDefinitionController.java b/common-agent-workflow/src/main/java/com/bruce/workflow/controller/WorkflowDefinitionController.java new file mode 100644 index 0000000..275bf4b --- /dev/null +++ b/common-agent-workflow/src/main/java/com/bruce/workflow/controller/WorkflowDefinitionController.java @@ -0,0 +1,38 @@ +package com.bruce.workflow.controller; + +import com.bruce.common.domain.model.RequestResult; +import com.bruce.workflow.dto.WorkflowDefinitionSaveDTO; +import com.bruce.workflow.service.IWorkflowDefinitionService; +import com.bruce.workflow.vo.WorkflowDefinitionVO; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequestMapping("/api/workflows") +@RequiredArgsConstructor +public class WorkflowDefinitionController { + + private final IWorkflowDefinitionService workflowDefinitionService; + + @GetMapping("/definitions") + public RequestResult> list() { + return RequestResult.success(workflowDefinitionService.listDefinitions()); + } + + @GetMapping("/definition/detail") + public RequestResult detail(@RequestParam("id") Long id) { + return RequestResult.success(workflowDefinitionService.getDefinition(id)); + } + + @PostMapping("/definition/save") + public RequestResult save(@RequestBody WorkflowDefinitionSaveDTO request) { + return RequestResult.success(workflowDefinitionService.saveDefinition(request)); + } +} diff --git a/common-agent-workflow/src/main/java/com/bruce/workflow/dto/WorkflowDefinitionSaveDTO.java b/common-agent-workflow/src/main/java/com/bruce/workflow/dto/WorkflowDefinitionSaveDTO.java new file mode 100644 index 0000000..888f77f --- /dev/null +++ b/common-agent-workflow/src/main/java/com/bruce/workflow/dto/WorkflowDefinitionSaveDTO.java @@ -0,0 +1,26 @@ +package com.bruce.workflow.dto; + +import lombok.Data; + +/** + * Workflow 定义保存请求。 + */ +@Data +public class WorkflowDefinitionSaveDTO { + + private Long id; + + private Long projectId; + + private String workflowCode; + + private String workflowName; + + private String description; + + private Long boundAgentId; + + private String status; + + private String remark; +} diff --git a/common-agent-workflow/src/main/java/com/bruce/workflow/entity/StudioProject.java b/common-agent-workflow/src/main/java/com/bruce/workflow/entity/StudioProject.java new file mode 100644 index 0000000..07f5618 --- /dev/null +++ b/common-agent-workflow/src/main/java/com/bruce/workflow/entity/StudioProject.java @@ -0,0 +1,27 @@ +package com.bruce.workflow.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.bruce.common.domain.model.BaseEntity; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * Studio 项目空间实体,严格映射 studio_project 表。 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("studio_project") +@Schema(description = "Studio项目空间") +public class StudioProject extends BaseEntity { + + private String projectCode; + + private String projectName; + + private String environment; + + private String publishStatus; + + private String currentVersion; +} diff --git a/common-agent-workflow/src/main/java/com/bruce/workflow/entity/WorkflowDefinition.java b/common-agent-workflow/src/main/java/com/bruce/workflow/entity/WorkflowDefinition.java new file mode 100644 index 0000000..d41523f --- /dev/null +++ b/common-agent-workflow/src/main/java/com/bruce/workflow/entity/WorkflowDefinition.java @@ -0,0 +1,27 @@ +package com.bruce.workflow.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.bruce.common.domain.model.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * Workflow 定义实体,对应 workflow_definition 表。 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("workflow_definition") +public class WorkflowDefinition extends BaseEntity { + + private Long projectId; + + private String workflowCode; + + private String workflowName; + + private String description; + + private Long boundAgentId; + + private String status; +} diff --git a/common-agent-workflow/src/main/java/com/bruce/workflow/entity/WorkflowRun.java b/common-agent-workflow/src/main/java/com/bruce/workflow/entity/WorkflowRun.java new file mode 100644 index 0000000..28deb21 --- /dev/null +++ b/common-agent-workflow/src/main/java/com/bruce/workflow/entity/WorkflowRun.java @@ -0,0 +1,41 @@ +package com.bruce.workflow.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.bruce.common.domain.model.BaseEntity; +import com.bruce.common.typehandler.PgJsonbStringTypeHandler; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * Workflow 运行记录实体,对应 workflow_run 表。 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("workflow_run") +public class WorkflowRun extends BaseEntity { + + private String requestId; + + private Long workflowId; + + private Long workflowVersionId; + + private Long agentId; + + private String runSource; + + private String status; + + @TableField(typeHandler = PgJsonbStringTypeHandler.class) + private String inputJson; + + @TableField(typeHandler = PgJsonbStringTypeHandler.class) + private String outputJson; + + private Integer durationMs; + + private BigDecimal estimatedCost; +} diff --git a/common-agent-workflow/src/main/java/com/bruce/workflow/entity/WorkflowRunStep.java b/common-agent-workflow/src/main/java/com/bruce/workflow/entity/WorkflowRunStep.java new file mode 100644 index 0000000..f2e7634 --- /dev/null +++ b/common-agent-workflow/src/main/java/com/bruce/workflow/entity/WorkflowRunStep.java @@ -0,0 +1,37 @@ +package com.bruce.workflow.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.bruce.common.domain.model.BaseEntity; +import com.bruce.common.typehandler.PgJsonbStringTypeHandler; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * Workflow 步骤日志实体,用于观测与调试。 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("workflow_run_step") +public class WorkflowRunStep extends BaseEntity { + + private Long runId; + + private String nodeId; + + private String nodeType; + + private String nodeName; + + private String status; + + @TableField(typeHandler = PgJsonbStringTypeHandler.class) + private String inputJson; + + @TableField(typeHandler = PgJsonbStringTypeHandler.class) + private String outputJson; + + private Integer durationMs; + + private String errorMessage; +} diff --git a/common-agent-workflow/src/main/java/com/bruce/workflow/entity/WorkflowVersion.java b/common-agent-workflow/src/main/java/com/bruce/workflow/entity/WorkflowVersion.java new file mode 100644 index 0000000..2aed67b --- /dev/null +++ b/common-agent-workflow/src/main/java/com/bruce/workflow/entity/WorkflowVersion.java @@ -0,0 +1,30 @@ +package com.bruce.workflow.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableField; +import com.bruce.common.domain.model.BaseEntity; +import com.bruce.common.typehandler.PgJsonbStringTypeHandler; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * Workflow 版本快照实体,用于持久化画布结构。 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("workflow_version") +public class WorkflowVersion extends BaseEntity { + + private Long workflowId; + + private Integer versionNo; + + private String snapshotName; + + @TableField(typeHandler = PgJsonbStringTypeHandler.class) + private String graphJson; + + private String publishStatus; + + private java.time.LocalDateTime publishedTime; +} diff --git a/common-agent-workflow/src/main/java/com/bruce/workflow/factory/WorkflowDefinitionFactory.java b/common-agent-workflow/src/main/java/com/bruce/workflow/factory/WorkflowDefinitionFactory.java new file mode 100644 index 0000000..64d9871 --- /dev/null +++ b/common-agent-workflow/src/main/java/com/bruce/workflow/factory/WorkflowDefinitionFactory.java @@ -0,0 +1,44 @@ +package com.bruce.workflow.factory; + +import com.bruce.workflow.dto.WorkflowDefinitionSaveDTO; +import com.bruce.workflow.entity.WorkflowDefinition; +import com.bruce.workflow.vo.WorkflowDefinitionVO; +import org.springframework.stereotype.Component; + +/** + * WorkflowDefinitionFactory 统一处理 DTO、Entity、VO 转换, + * 避免控制层和服务层分散手写字段映射。 + */ +@Component +public class WorkflowDefinitionFactory { + + public WorkflowDefinition toEntity(WorkflowDefinitionSaveDTO dto) { + if (dto == null) { + return null; + } + WorkflowDefinition entity = new WorkflowDefinition(); + entity.setId(dto.getId()); + entity.setProjectId(dto.getProjectId()); + entity.setWorkflowCode(dto.getWorkflowCode()); + entity.setWorkflowName(dto.getWorkflowName()); + entity.setDescription(dto.getDescription()); + entity.setBoundAgentId(dto.getBoundAgentId()); + entity.setStatus(dto.getStatus()); + return entity; + } + + public WorkflowDefinitionVO toVO(WorkflowDefinition entity) { + if (entity == null) { + return null; + } + WorkflowDefinitionVO vo = new WorkflowDefinitionVO(); + vo.setId(entity.getId()); + vo.setWorkflowCode(entity.getWorkflowCode()); + vo.setWorkflowName(entity.getWorkflowName()); + vo.setProjectId(entity.getProjectId()); + vo.setBoundAgentId(entity.getBoundAgentId()); + vo.setStatus(entity.getStatus()); + vo.setDescription(entity.getDescription()); + return vo; + } +} diff --git a/common-agent-workflow/src/main/java/com/bruce/workflow/mapper/StudioProjectMapper.java b/common-agent-workflow/src/main/java/com/bruce/workflow/mapper/StudioProjectMapper.java new file mode 100644 index 0000000..75fd6eb --- /dev/null +++ b/common-agent-workflow/src/main/java/com/bruce/workflow/mapper/StudioProjectMapper.java @@ -0,0 +1,7 @@ +package com.bruce.workflow.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.bruce.workflow.entity.StudioProject; + +public interface StudioProjectMapper extends BaseMapper { +} diff --git a/common-agent-workflow/src/main/java/com/bruce/workflow/mapper/WorkflowDefinitionMapper.java b/common-agent-workflow/src/main/java/com/bruce/workflow/mapper/WorkflowDefinitionMapper.java new file mode 100644 index 0000000..9a62661 --- /dev/null +++ b/common-agent-workflow/src/main/java/com/bruce/workflow/mapper/WorkflowDefinitionMapper.java @@ -0,0 +1,7 @@ +package com.bruce.workflow.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.bruce.workflow.entity.WorkflowDefinition; + +public interface WorkflowDefinitionMapper extends BaseMapper { +} diff --git a/common-agent-workflow/src/main/java/com/bruce/workflow/mapper/WorkflowRunMapper.java b/common-agent-workflow/src/main/java/com/bruce/workflow/mapper/WorkflowRunMapper.java new file mode 100644 index 0000000..b68dbf0 --- /dev/null +++ b/common-agent-workflow/src/main/java/com/bruce/workflow/mapper/WorkflowRunMapper.java @@ -0,0 +1,7 @@ +package com.bruce.workflow.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.bruce.workflow.entity.WorkflowRun; + +public interface WorkflowRunMapper extends BaseMapper { +} diff --git a/common-agent-workflow/src/main/java/com/bruce/workflow/mapper/WorkflowRunStepMapper.java b/common-agent-workflow/src/main/java/com/bruce/workflow/mapper/WorkflowRunStepMapper.java new file mode 100644 index 0000000..b362053 --- /dev/null +++ b/common-agent-workflow/src/main/java/com/bruce/workflow/mapper/WorkflowRunStepMapper.java @@ -0,0 +1,7 @@ +package com.bruce.workflow.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.bruce.workflow.entity.WorkflowRunStep; + +public interface WorkflowRunStepMapper extends BaseMapper { +} diff --git a/common-agent-workflow/src/main/java/com/bruce/workflow/mapper/WorkflowVersionMapper.java b/common-agent-workflow/src/main/java/com/bruce/workflow/mapper/WorkflowVersionMapper.java new file mode 100644 index 0000000..5bc156b --- /dev/null +++ b/common-agent-workflow/src/main/java/com/bruce/workflow/mapper/WorkflowVersionMapper.java @@ -0,0 +1,7 @@ +package com.bruce.workflow.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.bruce.workflow.entity.WorkflowVersion; + +public interface WorkflowVersionMapper extends BaseMapper { +} diff --git a/common-agent-workflow/src/main/java/com/bruce/workflow/service/IWorkflowDefinitionService.java b/common-agent-workflow/src/main/java/com/bruce/workflow/service/IWorkflowDefinitionService.java new file mode 100644 index 0000000..7d5e373 --- /dev/null +++ b/common-agent-workflow/src/main/java/com/bruce/workflow/service/IWorkflowDefinitionService.java @@ -0,0 +1,17 @@ +package com.bruce.workflow.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.bruce.workflow.dto.WorkflowDefinitionSaveDTO; +import com.bruce.workflow.entity.WorkflowDefinition; +import com.bruce.workflow.vo.WorkflowDefinitionVO; + +import java.util.List; + +public interface IWorkflowDefinitionService extends IService { + + List listDefinitions(); + + WorkflowDefinitionVO getDefinition(Long id); + + boolean saveDefinition(WorkflowDefinitionSaveDTO request); +} diff --git a/common-agent-workflow/src/main/java/com/bruce/workflow/service/impl/WorkflowDefinitionServiceImpl.java b/common-agent-workflow/src/main/java/com/bruce/workflow/service/impl/WorkflowDefinitionServiceImpl.java new file mode 100644 index 0000000..88c29a2 --- /dev/null +++ b/common-agent-workflow/src/main/java/com/bruce/workflow/service/impl/WorkflowDefinitionServiceImpl.java @@ -0,0 +1,55 @@ +package com.bruce.workflow.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bruce.workflow.dto.WorkflowDefinitionSaveDTO; +import com.bruce.workflow.entity.WorkflowDefinition; +import com.bruce.workflow.factory.WorkflowDefinitionFactory; +import com.bruce.workflow.mapper.WorkflowDefinitionMapper; +import com.bruce.workflow.service.IWorkflowDefinitionService; +import com.bruce.workflow.vo.WorkflowDefinitionVO; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * Workflow 定义服务当前先提供主数据能力, + * 后续运行器与版本发布能力会在此基础上继续扩展。 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class WorkflowDefinitionServiceImpl extends ServiceImpl + implements IWorkflowDefinitionService { + + private final WorkflowDefinitionFactory workflowDefinitionFactory; + + @Override + public List listDefinitions() { + log.info("查询Workflow定义列表开始"); + List result = list().stream().map(workflowDefinitionFactory::toVO).toList(); + log.info("查询Workflow定义列表结束,count={}", result.size()); + return result; + } + + @Override + public WorkflowDefinitionVO getDefinition(Long id) { + log.info("查询Workflow定义详情开始,workflowId={}", id); + WorkflowDefinitionVO result = workflowDefinitionFactory.toVO(getById(id)); + log.info("查询Workflow定义详情结束,workflowId={}, found={}", id, result != null); + return result; + } + + @Override + public boolean saveDefinition(WorkflowDefinitionSaveDTO request) { + log.info("保存Workflow定义开始,workflowId={}, workflowCode={}", request == null ? null : request.getId(), + request == null ? null : request.getWorkflowCode()); + boolean result = saveOrUpdate(workflowDefinitionFactory.toEntity(request)); + log.info("保存Workflow定义结束,workflowId={}, workflowCode={}, result={}", + request == null ? null : request.getId(), + request == null ? null : request.getWorkflowCode(), + result); + return result; + } +} diff --git a/common-agent-workflow/src/main/java/com/bruce/workflow/vo/WorkflowDefinitionVO.java b/common-agent-workflow/src/main/java/com/bruce/workflow/vo/WorkflowDefinitionVO.java new file mode 100644 index 0000000..afc5cbf --- /dev/null +++ b/common-agent-workflow/src/main/java/com/bruce/workflow/vo/WorkflowDefinitionVO.java @@ -0,0 +1,24 @@ +package com.bruce.workflow.vo; + +import lombok.Data; + +/** + * Workflow 定义详情返回对象。 + */ +@Data +public class WorkflowDefinitionVO { + + private Long id; + + private String workflowCode; + + private String workflowName; + + private Long projectId; + + private Long boundAgentId; + + private String status; + + private String description; +} diff --git a/frontend/src/api/__tests__/attachments.spec.ts b/frontend/src/api/__tests__/attachments.spec.ts new file mode 100644 index 0000000..1dd182e --- /dev/null +++ b/frontend/src/api/__tests__/attachments.spec.ts @@ -0,0 +1,30 @@ +import { describe, expect, it, vi } from 'vitest'; + +import { uploadAttachment } from '../attachments'; +import { post } from '../request'; + +vi.mock('../request', () => ({ + post: vi.fn(), +})); + +describe('attachments api', () => { + it('uploads attachment with multipart form data', () => { + const file = new File(['hello'], 'note.txt', { type: 'text/plain' }); + uploadAttachment({ + file, + sourceType: 'RAG', + sourceId: '1001', + }); + + const [url, body] = vi.mocked(post).mock.calls[0]; + expect(url).toBe('/attachments/upload'); + expect(body).toBeInstanceOf(FormData); + + const entries = Array.from((body as FormData).entries()); + expect(entries).toEqual([ + ['file', file], + ['sourceType', 'RAG'], + ['sourceId', '1001'], + ]); + }); +}); diff --git a/frontend/src/api/attachments.ts b/frontend/src/api/attachments.ts new file mode 100644 index 0000000..54a21b6 --- /dev/null +++ b/frontend/src/api/attachments.ts @@ -0,0 +1,31 @@ +import { post } from './request'; + +export interface AttachmentUploadRequest { + file: File; + sourceType: string; + sourceId?: string; +} + +export interface AttachmentResponse { + id: string; + sourceType: string; + sourceId?: string | null; + originalName: string; + fileName: string; + fileSuffix?: string | null; + contentType?: string | null; + fileSize: number; + storageType: string; + fileUrl?: string | null; + remark?: string | null; +} + +export function uploadAttachment(data: AttachmentUploadRequest) { + const formData = new FormData(); + formData.append('file', data.file); + formData.append('sourceType', data.sourceType); + if (data.sourceId) { + formData.append('sourceId', data.sourceId); + } + return post('/attachments/upload', formData); +} diff --git a/pom.xml b/pom.xml index 59fc07c..51adaaf 100644 --- a/pom.xml +++ b/pom.xml @@ -1,110 +1,83 @@ - 4.0.0 + org.springframework.boot spring-boot-starter-parent 4.0.6 - + + com.bruce - common_agent + common-agent-parent 0.0.1-SNAPSHOT - common_agent - common_agent - - - - - - - - - - - - - + pom + common-agent-parent + Common Agent Studio parent project + 21 3.5.16 3.2.3 + 2.8.13 - - - org.springframework.boot - spring-boot-starter - - - org.springframework.boot - spring-boot-starter-web - + + common-agent-boot + common-agent-common + common-agent-rag + common-agent-modelprovider + common-agent-agent + common-agent-workflow + common-agent-mcp + common-agent-skill + common-agent-observability + - - com.baomidou - mybatis-plus-spring-boot4-starter - ${mybatis-plus.version} - - - - org.projectlombok - lombok - true - - - - org.postgresql - postgresql - runtime - - - - com.fasterxml.jackson.core - jackson-annotations - - - - org.apache.tika - tika-core - ${tika.version} - - - - org.apache.tika - tika-parsers-standard-package - ${tika.version} - - - - org.springdoc - springdoc-openapi-starter-webmvc-ui - 2.8.13 - - - - org.springframework.boot - spring-boot-starter-test - test - - + + + + com.baomidou + mybatis-plus-spring-boot4-starter + ${mybatis-plus.version} + + + org.apache.tika + tika-core + ${tika.version} + + + org.apache.tika + tika-parsers-standard-package + ${tika.version} + + + org.springdoc + springdoc-openapi-starter-webmvc-ui + ${springdoc.version} + + + - - - org.springframework.boot - spring-boot-maven-plugin - - - - org.projectlombok - lombok - - - - - + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.projectlombok + lombok + + + + + + -