往期开发(已经完成)

今日后端开发流程

  • AI 数据接口的设计

    • 接口参数的设计

      1
      2
      public BaseResponse<string> genChartByAI(@RequestPart("file") MultipartFile multipartFile,
      GenChartByAiRequest genChartByAiRequest, HttpServletRequest request){}
    • 接口的实现过程

      • 参数的获取和校验

        1
        2
        3
        4
        5
        6
        7
        8
        // 参数获取
        String goal = genChartByAiRequest.getGoal();
        String name = genChartByAiRequest.getName();
        String chartType = genChartByAiRequest.getChartType();
        // 参数校验 throwUtils 异常工具类
        ThrowUtils.throwIf(StringUtils.isEmpty(goal), ErrorCode.PARAMS_ERROR, "目标不能为空");
        ThrowUtils.throwIf(StringUtils.isEmpty(chartType), ErrorCode.PARAMS_ERROR, "类型不能为空");
        ThrowUtils.throwIf(StringUtils.isEmpty(name), ErrorCode.PARAMS_ERROR, "图表名称不能为空");
      • 用户的鉴权

        1
        2
        3
        // 判断是否登录
        User loginUser = userService.getLoginUser(request);
        ThrowUtils.throwIf(Objects.isNull(loginUser), ErrorCode.NOT_LOGIN_ERROR);
      • 用户的 AI 消息拼接

        1
        2
        3
        4
        5
        6
        7
        8
        9
        // 用户消息拼接
        StringBuilder userMessageBuilder = new StringBuilder();
        userMessageBuilder.append("分析需求:").append("\n");
        String newGoal = goal + ",请使用" + chartType;
        userMessageBuilder.append(newGoal).append("\n");
        userMessageBuilder.append("原始数据:").append("\n");
        String dataStr = ExcelUtils.excelToCsv(multipartFile);
        userMessageBuilder.append(dataStr);
        return ResultUtils.success(userMessageBuilder.toString());
    • 最终具体的代码

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34

      /**
      * AI对话分析
      *
      * @param multipartFile
      * @param genChartByAiRequest
      * @param request
      * @return
      */
      @PostMapping("/gen")
      public BaseResponse<string> genChartByAI(@RequestPart("file") MultipartFile multipartFile,
      GenChartByAiRequest genChartByAiRequest, HttpServletRequest request) {
      // 第二天内容
      // 参数获取
      String goal = genChartByAiRequest.getGoal();
      String name = genChartByAiRequest.getName();
      String chartType = genChartByAiRequest.getChartType();
      // 参数校验
      ThrowUtils.throwIf(StringUtils.isEmpty(goal), ErrorCode.PARAMS_ERROR, "目标不能为空");
      ThrowUtils.throwIf(StringUtils.isEmpty(chartType), ErrorCode.PARAMS_ERROR, "类型不能为空");
      ThrowUtils.throwIf(StringUtils.isEmpty(name), ErrorCode.PARAMS_ERROR, "图表名称不能为空");
      // 判断是否登录
      User loginUser = userService.getLoginUser(request);
      ThrowUtils.throwIf(Objects.isNull(loginUser), ErrorCode.NOT_LOGIN_ERROR);
      // 用户消息拼接
      StringBuilder userMessageBuilder = new StringBuilder();
      userMessageBuilder.append("分析需求:").append("\n");
      String newGoal = goal + ",请使用" + chartType;
      userMessageBuilder.append(newGoal).append("\n");
      userMessageBuilder.append("原始数据:").append("\n");
      String dataStr = ExcelUtils.excelToCsv(multipartFile);
      userMessageBuilder.append(dataStr);
      return ResultUtils.success(userMessageBuilder.toString());
      }
  • 今天后端收获

    主要是学习了 AI 如何进行训练,AI 对话的系统预设,AI 的关键字提取,指定 AI 的输入和输出,并要求按照具体的格式进行回答。构建 AI 消息,压缩用户上传的文件信息。

今日前端开发流程

  • 1.用户填写分析目标,制定此次分析的名称,以及生成图表的类型。

  • 2.上传用户的原始数据

  • 3.提交给后端接口

  • 4.使用 ant design 提供的组件库 进行前端页面的构建

    • 构件图如下:

      智能分析

  • 5.今天前端收获
    如何使用 ant design 的组件库,搭建前端的表单信息。初次使用 react 进行构建,通过官方文档来进行一些组件的使用和定制。