feat(project): 实现AI项目初始化及相关实体管理
- 新增通用返回类BaseResponse用于统一接口响应格式 - 新增业务异常BusinessException及全局异常处理GlobalExceptionHandler - 新增OSS文件上传控制器支持文件上传与删除接口 - 添加项目核心实体类Project、ProjectMember、ProjectMilestone、ProjectTimeline和Resource - 实现ProjectService接口及其实现类,使用AI能力从项目文档生成结构化项目数据 - 在ProjectServiceImpl中实现项目数据解析、保存及业务逻辑,包括项目、里程碑、任务、成员、资源、风险等 - 项目初始化控制器ProjectController提供文件上传触发项目初始化功能 - 设计了详细的系统提示词和用户提示词,用于AI模型指导生成严格格式的结构化项目数据 - 设计项目数据持久化流程,确保生成的数据正确保存至数据库,支持事务回滚 - 增强日志记录,便于追踪项目初始化全过程及错误调试
This commit is contained in:
@@ -17,7 +17,7 @@ import java.util.List;
|
||||
@TableName("project")
|
||||
public class Project {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,105 +0,0 @@
|
||||
package cn.yinlihupo.domain.entity;
|
||||
|
||||
import cn.yinlihupo.common.handler.JsonbTypeHandler;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 项目初始化记录实体类
|
||||
* 对应数据库表: project_init_record
|
||||
*/
|
||||
@Data
|
||||
@TableName("project_init_record")
|
||||
public class ProjectInitRecord {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 项目ID
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 上传的文件列表[{name, path, type, size}]
|
||||
*/
|
||||
@TableField(typeHandler = JsonbTypeHandler.class)
|
||||
private List<InputFile> inputFiles;
|
||||
|
||||
/**
|
||||
* 用户输入的项目描述
|
||||
*/
|
||||
private String inputText;
|
||||
|
||||
/**
|
||||
* 状态: pending-待解析, processing-解析中, completed-已完成, failed-失败
|
||||
*/
|
||||
private String parseStatus;
|
||||
|
||||
/**
|
||||
* 解析结果(结构化数据)
|
||||
*/
|
||||
@TableField(typeHandler = JsonbTypeHandler.class)
|
||||
private Object parseResult;
|
||||
|
||||
/**
|
||||
* 生成的里程碑数量
|
||||
*/
|
||||
private Integer generatedMilestones;
|
||||
|
||||
/**
|
||||
* 生成的任务数量
|
||||
*/
|
||||
private Integer generatedTasks;
|
||||
|
||||
/**
|
||||
* 生成的成员数量
|
||||
*/
|
||||
private Integer generatedMembers;
|
||||
|
||||
/**
|
||||
* 生成的资源数量
|
||||
*/
|
||||
private Integer generatedResources;
|
||||
|
||||
/**
|
||||
* 使用的AI模型
|
||||
*/
|
||||
private String model;
|
||||
|
||||
/**
|
||||
* 消耗的Token数
|
||||
*/
|
||||
private Integer tokensUsed;
|
||||
|
||||
/**
|
||||
* 错误信息
|
||||
*/
|
||||
private String errorMessage;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 输入文件信息内部类
|
||||
*/
|
||||
@Data
|
||||
public static class InputFile {
|
||||
private String name;
|
||||
private String path;
|
||||
private String type;
|
||||
private Long size;
|
||||
}
|
||||
}
|
||||
@@ -15,7 +15,7 @@ import java.time.LocalDateTime;
|
||||
@TableName("project_member")
|
||||
public class ProjectMember {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
|
||||
@@ -16,7 +16,7 @@ import java.util.List;
|
||||
@TableName("project_milestone")
|
||||
public class ProjectMilestone {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
|
||||
@@ -16,7 +16,7 @@ import java.util.List;
|
||||
@TableName("project_timeline")
|
||||
public class ProjectTimeline {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
|
||||
@@ -17,7 +17,7 @@ import java.util.List;
|
||||
@TableName("resource")
|
||||
public class Resource {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
|
||||
@@ -17,7 +17,7 @@ import java.util.List;
|
||||
@TableName("risk")
|
||||
public class Risk {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
|
||||
@@ -17,7 +17,7 @@ import java.util.List;
|
||||
@TableName("task")
|
||||
public class Task {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user