diff --git a/pom.xml b/pom.xml
index d4ca694..61a4ec4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -41,6 +41,13 @@
${lombok.version}
+
+
+ cn.hutool
+ hutool-all
+ 5.8.11
+
+
org.postgresql
diff --git a/src/main/java/cn.yinlihupo/common/base/BaseResponse.java b/src/main/java/cn.yinlihupo/common/base/BaseResponse.java
deleted file mode 100644
index 77cea7f..0000000
--- a/src/main/java/cn.yinlihupo/common/base/BaseResponse.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package cn.yinlihupo.common.base;
-
-import cn.yinlihupo.common.enums.ErrorCode;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * 通用返回类
- *
- * @param
- */
-@Data
-public class BaseResponse implements Serializable {
-
- private int code;
-
- private T data;
-
- private String message;
-
- public BaseResponse(int code, T data, String message) {
- this.code = code;
- this.data = data;
- this.message = message;
- }
-
- public BaseResponse(int code, T data) {
- this(code, data, "");
- }
-
- public BaseResponse(ErrorCode errorCode) {
- this(errorCode.getCode(), null, errorCode.getMessage());
- }
-}
diff --git a/src/main/java/cn.yinlihupo/common/base/package-info.java b/src/main/java/cn.yinlihupo/common/base/package-info.java
deleted file mode 100644
index f14add2..0000000
--- a/src/main/java/cn.yinlihupo/common/base/package-info.java
+++ /dev/null
@@ -1,5 +0,0 @@
-/**
- * 基础模块
- * 包含基础实体、基础接口等
- */
-package cn.yinlihupo.ylhpaiprojectmanager.common.base;
diff --git a/src/main/java/cn.yinlihupo/common/exception/BusinessException.java b/src/main/java/cn.yinlihupo/common/exception/BusinessException.java
deleted file mode 100644
index 47bd669..0000000
--- a/src/main/java/cn.yinlihupo/common/exception/BusinessException.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package cn.yinlihupo.common.exception;
-
-import cn.yinlihupo.common.enums.ErrorCode;
-
-/**
- * 自定义异常类
- */
-public class BusinessException extends RuntimeException {
-
- /**
- * 错误码
- */
- private final int code;
-
- public BusinessException(ErrorCode errorCode) {
- super(errorCode.getMessage());
- this.code = errorCode.getCode();
- }
-
- public BusinessException(ErrorCode errorCode, String message) {
- super(message);
- this.code = errorCode.getCode();
- }
-
- public int getCode() {
- return code;
- }
-}
diff --git a/src/main/java/cn.yinlihupo/common/exception/GlobalExceptionHandler.java b/src/main/java/cn.yinlihupo/common/exception/GlobalExceptionHandler.java
deleted file mode 100644
index 01c5758..0000000
--- a/src/main/java/cn.yinlihupo/common/exception/GlobalExceptionHandler.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package cn.yinlihupo.common.exception;
-import cn.yinlihupo.common.base.BaseResponse;
-import cn.yinlihupo.common.enums.ErrorCode;
-import cn.yinlihupo.common.util.ResultUtils;
-import jakarta.validation.ConstraintViolation;
-import jakarta.validation.ConstraintViolationException;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.core.Ordered;
-import org.springframework.core.annotation.Order;
-import org.springframework.validation.BindException;
-import org.springframework.validation.FieldError;
-import org.springframework.web.bind.MethodArgumentNotValidException;
-import org.springframework.web.bind.annotation.ExceptionHandler;
-import org.springframework.web.bind.annotation.RestControllerAdvice;
-
-import java.util.stream.Collectors;
-
-/**
- * 全局异常处理器
- *
- */
-@RestControllerAdvice
-@Slf4j
-@Order(Ordered.LOWEST_PRECEDENCE)
-public class GlobalExceptionHandler {
-
- @ExceptionHandler(BusinessException.class)
- public BaseResponse> businessExceptionHandler(BusinessException e) {
- log.error("BusinessException", e);
- return ResultUtils.error(e.getCode(), e.getMessage());
- }
-
- @ExceptionHandler(OrderException.class)
- public BaseResponse> orderExceptionHandler(OrderException e) {
- log.error("OrderException", e);
- // 如果没有设置错误码,使用默认的业务错误码
- Integer code = e.getCode();
- if (code == null) {
- return ResultUtils.error(ErrorCode.OPERATION_ERROR, e.getMessage());
- }
- return ResultUtils.error(code, e.getMessage());
- }
-
- @ExceptionHandler(ServiceException.class)
- public BaseResponse> serviceExceptionHandler(ServiceException e) {
- log.error("ServiceException", e);
- // 如果没有设置错误码,使用默认的业务错误码
- Integer code = e.getCode();
- if (code == null) {
- return ResultUtils.error(ErrorCode.OPERATION_ERROR, e.getMessage());
- }
- return ResultUtils.error(code, e.getMessage());
- }
-
- @ExceptionHandler(UtilException.class)
- public BaseResponse> utilExceptionHandler(UtilException e) {
- log.error("UtilException", e);
- return ResultUtils.error(ErrorCode.SYSTEM_ERROR, e.getMessage());
- }
-
- @ExceptionHandler(MethodArgumentNotValidException.class)
- public BaseResponse> methodArgumentNotValidExceptionHandler(MethodArgumentNotValidException e) {
- log.error("MethodArgumentNotValidException", e);
- String errorMsg = e.getBindingResult().getFieldErrors().stream()
- .map(FieldError::getDefaultMessage)
- .collect(Collectors.joining("; "));
- return ResultUtils.error(ErrorCode.PARAMS_ERROR, errorMsg);
- }
-
- @ExceptionHandler(BindException.class)
- public BaseResponse> bindExceptionHandler(BindException e) {
- log.error("BindException", e);
- String errorMsg = e.getBindingResult().getFieldErrors().stream()
- .map(FieldError::getDefaultMessage)
- .collect(Collectors.joining("; "));
- return ResultUtils.error(ErrorCode.PARAMS_ERROR, errorMsg);
- }
-
- @ExceptionHandler(ConstraintViolationException.class)
- public BaseResponse> constraintViolationExceptionHandler(ConstraintViolationException e) {
- log.error("ConstraintViolationException", e);
- String errorMsg = e.getConstraintViolations().stream()
- .map(ConstraintViolation::getMessage)
- .collect(Collectors.joining("; "));
- return ResultUtils.error(ErrorCode.PARAMS_ERROR, errorMsg);
- }
-
- @ExceptionHandler(RuntimeException.class)
- public BaseResponse> runtimeExceptionHandler(RuntimeException e) {
- log.error("RuntimeException", e);
- return ResultUtils.error(ErrorCode.SYSTEM_ERROR, "系统错误");
- }
-
-}
diff --git a/src/main/java/cn.yinlihupo/common/util/ResultUtils.java b/src/main/java/cn.yinlihupo/common/util/ResultUtils.java
deleted file mode 100644
index c8b6edc..0000000
--- a/src/main/java/cn.yinlihupo/common/util/ResultUtils.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package cn.yinlihupo.common.util;
-
-
-import cn.yinlihupo.common.base.BaseResponse;
-import cn.yinlihupo.common.enums.ErrorCode;
-
-/**
- * 返回工具类
- *
- */
-public class ResultUtils {
-
- /**
- * 成功
- *
- * @param data
- * @param
- * @return
- */
- public static BaseResponse success(T data) {
- return new BaseResponse<>(200, data, "ok");
- }
-
- /**
- * 失败
- *
- * @param errorCode
- * @return
- */
- public static BaseResponse error(ErrorCode errorCode) {
- return new BaseResponse<>(errorCode);
- }
-
- /**
- * 失败
- *
- * @param code
- * @param message
- * @return
- */
- public static BaseResponse error(int code, String message) {
- return new BaseResponse(code, null, message);
- }
-
- /**
- * 失败
- *
- * @param errorCode
- * @return
- */
- public static BaseResponse error(ErrorCode errorCode, String message) {
- return new BaseResponse(errorCode.getCode(), null, message);
- }
-}
diff --git a/src/main/java/cn.yinlihupo/YlhpAiProjectManagerApplication.java b/src/main/java/cn/yinlihupo/YlhpAiProjectManagerApplication.java
similarity index 100%
rename from src/main/java/cn.yinlihupo/YlhpAiProjectManagerApplication.java
rename to src/main/java/cn/yinlihupo/YlhpAiProjectManagerApplication.java
diff --git a/src/main/java/cn.yinlihupo/common/config/MinioConfig.java b/src/main/java/cn/yinlihupo/common/config/MinioConfig.java
similarity index 100%
rename from src/main/java/cn.yinlihupo/common/config/MinioConfig.java
rename to src/main/java/cn/yinlihupo/common/config/MinioConfig.java
diff --git a/src/main/java/cn.yinlihupo/common/config/SpringAiConfig.java b/src/main/java/cn/yinlihupo/common/config/SpringAiConfig.java
similarity index 100%
rename from src/main/java/cn.yinlihupo/common/config/SpringAiConfig.java
rename to src/main/java/cn/yinlihupo/common/config/SpringAiConfig.java
diff --git a/src/main/java/cn.yinlihupo/common/config/package-info.java b/src/main/java/cn/yinlihupo/common/config/package-info.java
similarity index 100%
rename from src/main/java/cn.yinlihupo/common/config/package-info.java
rename to src/main/java/cn/yinlihupo/common/config/package-info.java
diff --git a/src/main/java/cn.yinlihupo/common/constant/package-info.java b/src/main/java/cn/yinlihupo/common/constant/package-info.java
similarity index 100%
rename from src/main/java/cn.yinlihupo/common/constant/package-info.java
rename to src/main/java/cn/yinlihupo/common/constant/package-info.java
diff --git a/src/main/java/cn.yinlihupo/common/enums/ErrorCode.java b/src/main/java/cn/yinlihupo/common/enums/ErrorCode.java
similarity index 100%
rename from src/main/java/cn.yinlihupo/common/enums/ErrorCode.java
rename to src/main/java/cn/yinlihupo/common/enums/ErrorCode.java
diff --git a/src/main/java/cn.yinlihupo/common/exception/package-info.java b/src/main/java/cn/yinlihupo/common/exception/package-info.java
similarity index 100%
rename from src/main/java/cn.yinlihupo/common/exception/package-info.java
rename to src/main/java/cn/yinlihupo/common/exception/package-info.java
diff --git a/src/main/java/cn.yinlihupo/common/page/PageQuery.java b/src/main/java/cn/yinlihupo/common/page/PageQuery.java
similarity index 100%
rename from src/main/java/cn.yinlihupo/common/page/PageQuery.java
rename to src/main/java/cn/yinlihupo/common/page/PageQuery.java
diff --git a/src/main/java/cn.yinlihupo/common/page/TableDataInfo.java b/src/main/java/cn/yinlihupo/common/page/TableDataInfo.java
similarity index 100%
rename from src/main/java/cn.yinlihupo/common/page/TableDataInfo.java
rename to src/main/java/cn/yinlihupo/common/page/TableDataInfo.java
diff --git a/src/main/java/cn.yinlihupo/common/result/Result.java b/src/main/java/cn/yinlihupo/common/result/Result.java
similarity index 100%
rename from src/main/java/cn.yinlihupo/common/result/Result.java
rename to src/main/java/cn/yinlihupo/common/result/Result.java
diff --git a/src/main/java/cn.yinlihupo/common/result/package-info.java b/src/main/java/cn/yinlihupo/common/result/package-info.java
similarity index 100%
rename from src/main/java/cn.yinlihupo/common/result/package-info.java
rename to src/main/java/cn/yinlihupo/common/result/package-info.java
diff --git a/src/main/java/cn.yinlihupo/common/util/package-info.java b/src/main/java/cn/yinlihupo/common/util/package-info.java
similarity index 100%
rename from src/main/java/cn.yinlihupo/common/util/package-info.java
rename to src/main/java/cn/yinlihupo/common/util/package-info.java
diff --git a/src/main/java/cn/yinlihupo/controller/oss/OssController.java b/src/main/java/cn/yinlihupo/controller/oss/OssController.java
new file mode 100644
index 0000000..4608e8b
--- /dev/null
+++ b/src/main/java/cn/yinlihupo/controller/oss/OssController.java
@@ -0,0 +1,89 @@
+package cn.yinlihupo.controller.oss;
+
+import cn.yinlihupo.common.result.Result;
+import cn.yinlihupo.service.oss.OssService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * OSS文件控制器
+ * 提供文件上传、下载和管理功能
+ */
+@Slf4j
+@RestController
+@RequestMapping("/oss")
+@RequiredArgsConstructor
+public class OssController {
+
+ private final OssService ossService;
+
+ /**
+ * 上传文件到OSS,返回文件URL
+ *
+ * @param file 文件
+ * @return 文件URL
+ */
+ @PostMapping("/upload")
+ public Result uploadFile(@RequestParam("file") MultipartFile file) {
+ log.info("收到文件上传请求, 文件名: {}", file.getOriginalFilename());
+
+ if (file.isEmpty()) {
+ return Result.error("上传文件不能为空");
+ }
+
+ try {
+ String fileUrl = ossService.uploadFile(file, file.getOriginalFilename());
+ return Result.success("文件上传成功", fileUrl);
+ } catch (Exception e) {
+ log.error("文件上传失败: {}", e.getMessage(), e);
+ return Result.error("文件上传失败: " + e.getMessage());
+ }
+ }
+
+ /**
+ * 上传文件到指定存储桶
+ *
+ * @param file 文件
+ * @param bucketName 存储桶名称
+ * @return 文件URL
+ */
+ @PostMapping("/upload/{bucketName}")
+ public Result uploadFileToBucket(
+ @RequestParam("file") MultipartFile file,
+ @PathVariable String bucketName) {
+ log.info("收到文件上传请求, 文件名: {}, 存储桶: {}", file.getOriginalFilename(), bucketName);
+
+ if (file.isEmpty()) {
+ return Result.error("上传文件不能为空");
+ }
+
+ try {
+ String fileUrl = ossService.uploadFile(file, file.getOriginalFilename(), bucketName);
+ return Result.success("文件上传成功", fileUrl);
+ } catch (Exception e) {
+ log.error("文件上传失败: {}", e.getMessage(), e);
+ return Result.error("文件上传失败: " + e.getMessage());
+ }
+ }
+
+ /**
+ * 删除文件
+ *
+ * @param fileUrl 文件URL
+ * @return 操作结果
+ */
+ @DeleteMapping("/delete")
+ public Result deleteFile(@RequestParam("fileUrl") String fileUrl) {
+ log.info("收到文件删除请求, fileUrl: {}", fileUrl);
+
+ try {
+ ossService.deleteFile(fileUrl);
+ return Result.success("文件删除成功", null);
+ } catch (Exception e) {
+ log.error("文件删除失败: {}", e.getMessage(), e);
+ return Result.error("文件删除失败: " + e.getMessage());
+ }
+ }
+}
diff --git a/src/main/java/cn.yinlihupo/controller/ProjectInitController.java b/src/main/java/cn/yinlihupo/controller/project/ProjectController.java
similarity index 51%
rename from src/main/java/cn.yinlihupo/controller/ProjectInitController.java
rename to src/main/java/cn/yinlihupo/controller/project/ProjectController.java
index a1581ef..3090541 100644
--- a/src/main/java/cn.yinlihupo/controller/ProjectInitController.java
+++ b/src/main/java/cn/yinlihupo/controller/project/ProjectController.java
@@ -1,10 +1,10 @@
-package cn.yinlihupo.controller;
+package cn.yinlihupo.controller.project;
import cn.yinlihupo.common.result.Result;
import cn.yinlihupo.domain.dto.ProjectInitRequest;
import cn.yinlihupo.domain.dto.ProjectInitResult;
-import cn.yinlihupo.service.ai.MinioFileService;
-import cn.yinlihupo.service.ai.ProjectInitService;
+import cn.yinlihupo.service.oss.OssService;
+import cn.yinlihupo.service.project.ProjectService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
@@ -16,12 +16,12 @@ import org.springframework.web.multipart.MultipartFile;
*/
@Slf4j
@RestController
-@RequestMapping("/api/v1/project-init")
+@RequestMapping("/project-init")
@RequiredArgsConstructor
-public class ProjectInitController {
+public class ProjectController {
- private final ProjectInitService projectInitService;
- private final MinioFileService minioFileService;
+ private final ProjectService projectService;
+ private final OssService ossService;
/**
* 根据文本内容生成项目初始化数据
@@ -38,7 +38,7 @@ public class ProjectInitController {
}
try {
- ProjectInitResult result = projectInitService.generateProjectFromContent(request.getContent());
+ ProjectInitResult result = projectService.generateProjectFromContent(request.getContent());
return Result.success("项目初始化成功", result);
} catch (Exception e) {
log.error("项目初始化失败: {}", e.getMessage(), e);
@@ -61,13 +61,13 @@ public class ProjectInitController {
}
try {
- // 上传文件到MinIO
- String fileUrl = minioFileService.uploadFile(file, file.getOriginalFilename());
+ // 上传文件到OSS
+ String fileUrl = ossService.uploadFile(file, file.getOriginalFilename());
log.info("文件上传成功,URL: {}", fileUrl);
// 根据文件生成项目初始化数据
String fileType = getFileExtension(file.getOriginalFilename());
- ProjectInitResult result = projectInitService.generateProjectFromFile(fileUrl, fileType);
+ ProjectInitResult result = projectService.generateProjectFromFile(fileUrl, fileType);
return Result.success("项目初始化成功", result);
} catch (Exception e) {
@@ -76,55 +76,6 @@ public class ProjectInitController {
}
}
- /**
- * 根据已上传的文件URL生成项目初始化数据
- *
- * @param request 包含文件URL的请求
- * @return 项目初始化结构化数据
- */
- @PostMapping("/from-url")
- public Result generateFromUrl(@RequestBody ProjectInitRequest request) {
- log.info("收到项目初始化请求(文件URL)");
-
- if (request.getFileUrl() == null || request.getFileUrl().trim().isEmpty()) {
- return Result.error("文件URL不能为空");
- }
-
- try {
- ProjectInitResult result = projectInitService.generateProjectFromFile(
- request.getFileUrl(),
- request.getFileType()
- );
- return Result.success("项目初始化成功", result);
- } catch (Exception e) {
- log.error("项目初始化失败: {}", e.getMessage(), e);
- return Result.error("项目初始化失败: " + e.getMessage());
- }
- }
-
- /**
- * 仅上传文件到MinIO,返回文件URL
- *
- * @param file 文件
- * @return 文件URL
- */
- @PostMapping("/upload")
- public Result uploadFile(@RequestParam("file") MultipartFile file) {
- log.info("收到文件上传请求, 文件名: {}", file.getOriginalFilename());
-
- if (file.isEmpty()) {
- return Result.error("上传文件不能为空");
- }
-
- try {
- String fileUrl = minioFileService.uploadFile(file, file.getOriginalFilename());
- return Result.success("文件上传成功", fileUrl);
- } catch (Exception e) {
- log.error("文件上传失败: {}", e.getMessage(), e);
- return Result.error("文件上传失败: " + e.getMessage());
- }
- }
-
/**
* 获取文件扩展名
*
diff --git a/src/main/java/cn.yinlihupo/domain/dto/ProjectInitRequest.java b/src/main/java/cn/yinlihupo/domain/dto/ProjectInitRequest.java
similarity index 100%
rename from src/main/java/cn.yinlihupo/domain/dto/ProjectInitRequest.java
rename to src/main/java/cn/yinlihupo/domain/dto/ProjectInitRequest.java
diff --git a/src/main/java/cn.yinlihupo/domain/dto/ProjectInitResult.java b/src/main/java/cn/yinlihupo/domain/dto/ProjectInitResult.java
similarity index 100%
rename from src/main/java/cn.yinlihupo/domain/dto/ProjectInitResult.java
rename to src/main/java/cn/yinlihupo/domain/dto/ProjectInitResult.java
diff --git a/src/main/java/cn.yinlihupo/service/ai/MinioFileService.java b/src/main/java/cn/yinlihupo/service/oss/OssService.java
similarity index 89%
rename from src/main/java/cn.yinlihupo/service/ai/MinioFileService.java
rename to src/main/java/cn/yinlihupo/service/oss/OssService.java
index 0184b2c..8fa2dfe 100644
--- a/src/main/java/cn.yinlihupo/service/ai/MinioFileService.java
+++ b/src/main/java/cn/yinlihupo/service/oss/OssService.java
@@ -1,17 +1,17 @@
-package cn.yinlihupo.service.ai;
+package cn.yinlihupo.service.oss;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
/**
- * MinIO文件服务接口
+ * OSS文件服务接口
* 用于文件上传、下载和管理
*/
-public interface MinioFileService {
+public interface OssService {
/**
- * 上传文件到MinIO
+ * 上传文件到OSS
*
* @param file 文件
* @param fileName 文件名
@@ -20,7 +20,7 @@ public interface MinioFileService {
String uploadFile(MultipartFile file, String fileName);
/**
- * 上传文件到MinIO(指定存储桶)
+ * 上传文件到OSS(指定存储桶)
*
* @param file 文件
* @param fileName 文件名
diff --git a/src/main/java/cn.yinlihupo/service/ai/impl/MinioFileServiceImpl.java b/src/main/java/cn/yinlihupo/service/oss/impl/OssServiceImpl.java
similarity index 95%
rename from src/main/java/cn.yinlihupo/service/ai/impl/MinioFileServiceImpl.java
rename to src/main/java/cn/yinlihupo/service/oss/impl/OssServiceImpl.java
index 1aec83d..f8e25f8 100644
--- a/src/main/java/cn.yinlihupo/service/ai/impl/MinioFileServiceImpl.java
+++ b/src/main/java/cn/yinlihupo/service/oss/impl/OssServiceImpl.java
@@ -1,10 +1,9 @@
-package cn.yinlihupo.service.ai.impl;
+package cn.yinlihupo.service.oss.impl;
import cn.yinlihupo.common.config.MinioConfig;
-import cn.yinlihupo.service.ai.MinioFileService;
+import cn.yinlihupo.service.oss.OssService;
import io.minio.*;
import io.minio.errors.*;
-import io.minio.http.Method;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -13,18 +12,15 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.net.URL;
import java.nio.charset.StandardCharsets;
-import java.security.InvalidKeyException;
-import java.security.NoSuchAlgorithmException;
import java.util.UUID;
-import java.util.concurrent.TimeUnit;
/**
- * MinIO文件服务实现类
+ * OSS文件服务实现类(基于MinIO)
*/
@Slf4j
@Service
@RequiredArgsConstructor
-public class MinioFileServiceImpl implements MinioFileService {
+public class OssServiceImpl implements OssService {
private final MinioClient minioClient;
private final MinioConfig minioConfig;
diff --git a/src/main/java/cn.yinlihupo/service/ai/ProjectInitService.java b/src/main/java/cn/yinlihupo/service/project/ProjectService.java
similarity index 79%
rename from src/main/java/cn.yinlihupo/service/ai/ProjectInitService.java
rename to src/main/java/cn/yinlihupo/service/project/ProjectService.java
index 0a21665..ba785f0 100644
--- a/src/main/java/cn.yinlihupo/service/ai/ProjectInitService.java
+++ b/src/main/java/cn/yinlihupo/service/project/ProjectService.java
@@ -1,4 +1,4 @@
-package cn.yinlihupo.service.ai;
+package cn.yinlihupo.service.project;
import cn.yinlihupo.domain.dto.ProjectInitResult;
@@ -6,7 +6,7 @@ import cn.yinlihupo.domain.dto.ProjectInitResult;
* AI项目初始化服务接口
* 使用Spring AI结构化输出能力,从项目文档中提取结构化信息
*/
-public interface ProjectInitService {
+public interface ProjectService {
/**
* 根据项目资料内容生成项目初始化结构化数据
@@ -17,9 +17,9 @@ public interface ProjectInitService {
ProjectInitResult generateProjectFromContent(String content);
/**
- * 根据MinIO文件URL生成项目初始化结构化数据
+ * 根据OSS文件URL生成项目初始化结构化数据
*
- * @param fileUrl MinIO文件URL
+ * @param fileUrl OSS文件URL
* @param fileType 文件类型
* @return 项目初始化结果
*/
diff --git a/src/main/java/cn.yinlihupo/service/ai/impl/ProjectInitServiceImpl.java b/src/main/java/cn/yinlihupo/service/project/impl/ProjectServiceImpl.java
similarity index 92%
rename from src/main/java/cn.yinlihupo/service/ai/impl/ProjectInitServiceImpl.java
rename to src/main/java/cn/yinlihupo/service/project/impl/ProjectServiceImpl.java
index 954f2a3..db31d05 100644
--- a/src/main/java/cn.yinlihupo/service/ai/impl/ProjectInitServiceImpl.java
+++ b/src/main/java/cn/yinlihupo/service/project/impl/ProjectServiceImpl.java
@@ -1,13 +1,12 @@
-package cn.yinlihupo.service.ai.impl;
+package cn.yinlihupo.service.project.impl;
import cn.yinlihupo.domain.dto.ProjectInitResult;
-import cn.yinlihupo.service.ai.ProjectInitService;
-import cn.yinlihupo.service.ai.MinioFileService;
+import cn.yinlihupo.service.oss.OssService;
+import cn.yinlihupo.service.project.ProjectService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.prompt.PromptTemplate;
-import org.springframework.core.io.Resource;
import org.springframework.stereotype.Service;
/**
@@ -17,10 +16,10 @@ import org.springframework.stereotype.Service;
@Slf4j
@Service
@RequiredArgsConstructor
-public class ProjectInitServiceImpl implements ProjectInitService {
+public class ProjectServiceImpl implements ProjectService {
private final ChatClient chatClient;
- private final MinioFileService minioFileService;
+ private final OssService ossService;
/**
* 项目初始化系统提示词模板
@@ -149,7 +148,7 @@ public class ProjectInitServiceImpl implements ProjectInitService {
log.info("开始根据内容生成项目初始化数据");
PromptTemplate promptTemplate = new PromptTemplate(USER_PROMPT_TEMPLATE);
- String userPrompt = promptTemplate.createMessage(java.util.Map.of("content", content)).getContent();
+ String userPrompt = promptTemplate.createMessage(java.util.Map.of("content", content)).toString();
return chatClient.prompt()
.system(PROJECT_INIT_SYSTEM_PROMPT)
@@ -162,8 +161,8 @@ public class ProjectInitServiceImpl implements ProjectInitService {
public ProjectInitResult generateProjectFromFile(String fileUrl, String fileType) {
log.info("开始根据文件生成项目初始化数据, fileUrl: {}, fileType: {}", fileUrl, fileType);
- // 从MinIO下载文件内容
- String content = minioFileService.readFileAsString(fileUrl);
+ // 从OSS下载文件内容
+ String content = ossService.readFileAsString(fileUrl);
if (content == null || content.isEmpty()) {
throw new RuntimeException("无法读取文件内容: " + fileUrl);
diff --git a/src/main/resources/application-dev.yaml b/src/main/resources/application-dev.yaml
index 4595934..f396cb1 100644
--- a/src/main/resources/application-dev.yaml
+++ b/src/main/resources/application-dev.yaml
@@ -6,9 +6,9 @@ spring:
# PostgreSQL 数据库配置
datasource:
- url: jdbc:postgresql://localhost:5432/ylhp_ai_project_manager
- username: ${DB_USERNAME:postgres}
- password: ${DB_PASSWORD:postgres}
+ url: jdbc:postgresql://10.200.8.25:5432/ylhp_ai_project_manager
+ username: postgres
+ password: postgres
driver-class-name: org.postgresql.Driver
hikari:
maximum-pool-size: 10
@@ -33,19 +33,19 @@ spring:
# Spring AI 配置
ai:
openai:
- api-key: ${OPENAI_API_KEY:your-api-key}
- base-url: ${OPENAI_BASE_URL:https://api.openai.com}
+ api-key: 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
+ base-url: https://sg1.proxy.yinlihupo.cc/proxy/https://openrouter.ai/api/v1
chat:
options:
- model: ${OPENAI_MODEL:gpt-4o}
+ model: gpt-4o
temperature: 0.3
# MinIO 对象存储配置
minio:
- endpoint: ${MINIO_ENDPOINT:http://localhost:9000}
- access-key: ${MINIO_ACCESS_KEY:minioadmin}
- secret-key: ${MINIO_SECRET_KEY:minioadmin}
- bucket-name: ${MINIO_BUCKET_NAME:ylhp-files}
+ endpoint: 10.200.8.25:9000
+ access-key: minioadmin
+ secret-key: minioadmin
+ bucket-name: ylhp-files
# 日志配置
logging:
diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml
index 6c1e586..498f474 100644
--- a/src/main/resources/application.yaml
+++ b/src/main/resources/application.yaml
@@ -6,4 +6,6 @@ spring:
# 公共配置
server:
- port: 8080
\ No newline at end of file
+ port: 8080
+ servlet:
+ context-path: /api/v1
\ No newline at end of file