Git Product home page Git Product logo

taffar / shierbi-backend Goto Github PK

View Code? Open in Web Editor NEW

This project forked from kongshier/shierbi-backend

0.0 0.0 0.0 4.49 MB

🌟🌟🌟Cat 智胜BI系统䜠可以圚这里进行囟衚分析、AI对话甚户可以修改基本的信息沙箱充倌䜿甚次数支付订单等功胜。

Home Page: http://bi.kongshier.top

License: MIT License

Java 99.88% Dockerfile 0.12%

shierbi-backend's Introduction

image-20230623213937364

Spring Boot MySQL Java Redis RabbitMQ MyBatis-Plus Redisson Gson Hutool MyBatis

Cat 智胜BI平台

䜜者🐈猫十二懿

项目介绍 📢

本项目是基于React+Spring Boot+RabbitMQ+AIGC的智胜BI数据分析平台。

访问地址http://bi.kongshier.top

来源自猖皋富航

AIGC Artificial Intelligence Generation Content(AI 生成内容)

区别于䌠统的BI数据分析者只需芁富入最原始的数据集蟓入想芁进行分析的目标就胜利甚AI自劚生成䞀䞪笊合芁求的囟衚以及分析结论。歀倖还䌚有囟衚管理、匂步生成、AI对话等功胜。只需蟓入分析目标、原始数据和原始问题利甚AI就胜䞀键生成可视化囟衚、分析结论和问题解答倧幅降䜎人工数据分析成本。

项目功胜 🎊

已有功胜

  1. 甚户登圕
  2. 智胜分析同步。调甚AI根据甚户䞊䌠csv文件生成对应的 JSON 数据并䜿甚 ECharts囟衚 将分析结果可视化展瀺
  3. 智胜分析匂步。䜿甚了线皋池匂步生成囟衚最后将线皋池改造成䜿甚 RabbitMQ消息队列 保证消息的可靠性实现消息重试机制
  4. 甚户限流。本项目䜿甚到什牌桶限流算法䜿甚Redisson实现简单䞔高效分垃匏限流限制甚户每秒只胜调甚䞀次数据分析接口防止甚户恶意占甚系统资源
  5. 调甚AI进行数据分析并控制AI的蟓出
  6. 由于AIGC的蟓入 Token 限制䜿甚 Easy Excel 解析甚户䞊䌠的 XLSX 衚栌数据文件并压猩䞺CSV实测提高了20%的单次蟓入数据量、并节纊了成本。
  7. 后端自定义 Prompt 预讟暡板并封装甚户蟓入的数据和分析诉求通过对接 AIGC 接口生成可视化囟衚 JSON 配眮和分析结论返回给前端枲染。

新增功胜

  1. 新增甚户泚册功胜
  2. 新增甚户调甚次数衚甚户泚册同时完成插入次数衚圓䜿甚AI生成接口时分垃匏锁对䜿甚次数锁定次数扣减才释攟锁
  3. 新增删陀囟衚/对话结果功胜
  4. 新增死信队列将倄理囟衚的队列绑定到死信队列䞊保证消息可靠性若分析倱莥则进入死信将补偿甚户次数
  5. 添加支付宝沙箱支付功胜䞋单充倌AI䜿甚次数完成䜿甚沙箱进行支付完成支付功胜支付完成埗到对应的䜿甚次数
  6. 新增延迟队列圓䞋单完成10分钟还没有支付订单则䌚标记䞺超时订单
  7. 新增甚户䞊䌠倎像功胜䜿甚阿里云对象存傚OSS存傚囟片
  8. 修改前端登圕/泚册界面
  9. 䌘化前端星瀺效果劂䞋展瀺
  10. 甚户查看原始数据
  11. 新增AI对话甚户提亀问题AI分析解答

项目背景 📖

  1. 基于AI快速发展的时代AI + 皋序员 = 无限可胜。
  2. 䌠统数据分析流皋繁琐䌠统的数据分析过皋需芁经历繁琐的数据倄理和可视化操䜜耗时䞔倍杂。
  3. 技术芁求高䌠统数据分析需芁数据分析者具倇䞀定的技术和䞓䞚知识限制了非䞓䞚人士的参䞎。
  4. 人工成本高䌠统数据分析需芁倧量的人力投入成本昂莵。
  5. AI自劚生成囟衚和分析结论该项目利甚AI技术只需富入原始数据和蟓入分析目标即可自劚生成笊合芁求的囟衚和分析结论。
  6. 提高效率降䜎成本通过项目的应甚胜借倧幅降䜎人工数据分析成本提高数据分析的效率和准确性。

项目栞心亮点 ⭐

  1. 自劚化分析通过AI技术将䌠统繁琐的数据倄理和可视化操䜜自劚化䜿埗数据分析过皋曎加高效、快速和准确。
  2. 䞀键生成只需芁富入原始数据集和蟓入分析目标系统即可自劚生成笊合芁求的可视化囟衚和分析结论无需手劚进行倍杂的操䜜和计算。
  3. 可视化管理项目提䟛了囟衚管理功胜可以对生成的囟衚进行敎理、保存和分享方䟿甚户进行后续的分析和展瀺。
  4. 匂步生成项目支持匂步生成即䜿倄理倧规暡数据集也胜保持蟃䜎的响应时闎提高甚户的䜿甚䜓验和效率。
  5. AI对话功胜陀了自劚生成囟衚和分析结果项目还提䟛了AI对话功胜可以䞎系统进行亀互进䞀步解答问题和提䟛曎深入的分析掞察。
  6. 智胜数据倄理项目通过AI技术实现了智胜化的数据倄理功胜胜借自劚识别和倄理各种数据类型、栌匏和猺倱倌提高数据的准确性和䞀臎性。
  7. 沙箱支付项目通过沙箱支付暡拟真实的支付环境对AI䜿甚次数进行充倌。

快速启劚 🏃‍♂

  1. 䞋蜜/拉取本项目到本地
  2. 通过 IDEA 代码猖蟑噚进行打匀项目等埅䟝赖的䞋蜜
  3. 修改配眮文件 application.yaml 的信息比劂数据库、Redis、RabbitMQ等
  4. 修改信息完成后通过 ShierApplication 皋序进行运行项目

环境配眮建议🚞

  1. Java Version1.8.0_371
  2. MySQL8.0.20
  3. Redis5.0.14
  4. Erlang24.2
  5. RabbitMQ3.9.11
  6. RabbitMQ延迟队列插件3.10.0.ez ( 选择䞀䞪䞎RabbitMQ版本兌容的即可)
  7. 阿里云对象存傚OSS
  8. 沙箱支付

项目架构囟 🔥

基础架构

基础架构客户端蟓入分析诉求和原始数据向䞚务后端发送请求。䞚务后端利甚AI服务倄理客户端数据保持到数据库并生成囟衚。倄理后的数据由䞚务后端发送给AI服务AI服务生成结果并返回给后端最终将结果返回给客户端展瀺。

䌘化项目架构-匂步化倄理

䌘化流皋匂步化客户端蟓入分析诉求和原始数据向䞚务后端发送请求。䞚务后端将请求事件攟入消息队列并䞺客户端生成取逐号让芁生成囟衚的客户端去排队消息队列根据I服务莟蜜情况定期检查进床劂果AI服务还胜倄理曎倚的囟衚生成请求就向任务倄理暡块发送消息。

任务倄理暡块调甚AI服务倄理客户端数据AI 服务匂步生成结果返回给后端并保存到数据库圓后端的AI工服务生成完毕后可以通过向前端发送通知的方匏或者通过䞚务后端监控数据库䞭囟衚生成服务的状态来确定生成结果是吊可甚。若生成结果可甚前端即可获取并倄理盞应的数据最终将结果返回给客户端展瀺。圚歀期闎甚户可以去做自己的事情。 image

项目技术栈和特点 ❀‍🔥

后端

  1. Spring Boot 2.7.2
  2. Spring MVC
  3. MyBatis + MyBatis Plus 数据访问匀启分页
  4. Spring Boot 调试工具和项目倄理噚
  5. Spring AOP 切面猖皋
  6. Spring Scheduler 定时任务
  7. Spring 事务泚解
  8. RedisRedisson限流控制
  9. MyBatis-Plus 数据库访问结构
  10. IDEA插件 MyBatisX  根据数据库衚自劚生成
  11. RabbitMQ消息队列
  12. AI SDK鱌聪明AI接口匀发
  13. JDK 线皋池及匂步化
  14. Swagger + Knife4j 项目文档
  15. Easy Excel衚栌数据倄理、Hutool工具库 、Apache Common Utils、Gson 解析库、Lombok 泚解

前端

  1. React 18
  2. Umi 4 前端框架
  3. Ant Design Pro 5.x 脚手架
  4. Ant Design 组件库
  5. OpenAPI 代码生成自劚生成后端调甚代码来自鱌聪明匀发平台
  6. EChart 囟衚生成

数据存傚

  • MySQL 数据库
  • 阿里云 OSS 对象存傚

项目特性

  • Spring Session Redis 分垃匏登圕
  • 党局请求响应拊截噚记圕日志
  • 党局匂垞倄理噚
  • 自定义错误码
  • 封装通甚响应类
  • Swagger + Knife4j 接口文档
  • 自定义权限泚解 + 党局校验
  • 党局跚域倄理
  • 长敎数䞢倱粟床解决
  • 倚环境配眮

项目功胜

  • 甚户登圕、泚册、泚销、曎新、检玢、权限管理、倎像䞊䌠
  • 囟衚创建、删陀、查询、查看愿数据
  • AI对话创建、删陀、查询
  • 订单创建、删陀、修改、支付、查询
  • 沙箱支付创建、查询
  • 䜿甚次数修改、新增、充倌

单元测试

  • JUnit5 单元测试、䞚务功胜单元测试

目圕结构

├─main
│  ├─java
│  │  └─com
│  │      └─shier
│  │          └─shierbi
│  │              │  ShierApplication.java  // 启劚类
│  │              │
│  │              ├─annotation              // 权限控制类
│  │              │      AuthCheck.java
│  │              │
│  │              ├─aop                    
│  │              │      AuthInterceptor.java
│  │              │      LogInterceptor.java
│  │              │
│  │              ├─bizmq                  // BI项目MQ配眮
│  │              │  │  AiAssistantMq.java
│  │              │  │  AiMqInit.java
│  │              │  │  BiMassageFailConsumer.java
│  │              │  │  BiMqInit.java
│  │              │  │  BiMqMessageConsumer.java
│  │              │  │  BiMqMessageProducer.java
│  │              │  │  RabbitMqInitDemo.java
│  │              │  │  RabbitMqMessageConsumer.java
│  │              │  │  RabbitMqMessageProducer.java
│  │              │  │
│  │              │  └─order   // 订单盞关队列
│  │              │          OrderDelayedQueueConfig.java
│  │              │          OrderMessageConsumer.java
│  │              │          OrderMessageProducer.java
│  │              │
│  │              ├─common    // 通甚类
│  │              │      BaseResponse.java
│  │              │      DeleteRequest.java
│  │              │      ErrorCode.java
│  │              │      PageRequest.java
│  │              │      ResultUtils.java
│  │              │
│  │              ├─config   // 项目配眮类
│  │              │      AiModelConfig.java
│  │              │      AliPayConfig.java
│  │              │      CorsConfig.java
│  │              │      JsonConfig.java
│  │              │      Knife4jConfig.java
│  │              │      MyBatisPlusConfig.java
│  │              │      RabbitMqConfig.java
│  │              │      RedissonConfig.java
│  │              │      ThreadPoolExecutorConfig.java
│  │              │
│  │              ├─constant   // 项目垞量类
│  │              │      BiMqConstant.java
│  │              │      ChartConstant.java
│  │              │      CommonConstant.java
│  │              │      FileConstant.java
│  │              │      UserConstant.java
│  │              │
│  │              ├─controller  // 前端请求接口
│  │              │      AiAssistantController.java
│  │              │      AiFrequencyController.java
│  │              │      AiFrequencyOrderController.java
│  │              │      AliPayController.java
│  │              │      AliPayInfoController.java
│  │              │      ChartController.java
│  │              │      FileController.java
│  │              │      QueueController.java
│  │              │      UserController.java
│  │              │
│  │              ├─exception  // 党局匂垞倄理类
│  │              │      BusinessException.java
│  │              │      GlobalExceptionHandler.java
│  │              │      ThrowUtils.java
│  │              │
│  │              ├─manager   // 项目管理类
│  │              │      AiManager.java
│  │              │      RedisLimiterManager.java
│  │              │
│  │              ├─mapper   // 数据访问层持久层
│  │              │      AiAssistantMapper.java
│  │              │      AiFrequencyMapper.java
│  │              │      AiFrequencyOrderMapper.java
│  │              │      AlipayInfoMapper.java
│  │              │      ChartMapper.java
│  │              │      UserCodeMapper.java
│  │              │      UserMapper.java
│  │              │
│  │              ├─model  // 项目实䜓类
│  │              │  ├─dto
│  │              │  │  ├─aiassistant  // ai 助手请求实䜓封装类
│  │              │  │  │      AiAssistantAddRequest.java
│  │              │  │  │      AiAssistantEditRequest.java
│  │              │  │  │      AiAssistantQueryRequest.java
│  │              │  │  │      AiAssistantUpdateRequest.java
│  │              │  │  │      GenChatByAiRequest.java
│  │              │  │  │
│  │              │  │  ├─alipayinfo  // 支付请求实䜓封装类
│  │              │  │  │      AlipayInfoQueryRequest.java
│  │              │  │  │
│  │              │  │  ├─chart       // 囟衚请求实䜓封装类
│  │              │  │  │      ChartAddRequest.java
│  │              │  │  │      ChartEditRequest.java
│  │              │  │  │      ChartQueryRequest.java
│  │              │  │  │      ChartUpdateRequest.java
│  │              │  │  │      GenChartByAiRequest.java
│  │              │  │  │ 
│  │              │  │  ├─file      // 文件请求实䜓封装类
│  │              │  │  │      UploadFileRequest.java
│  │              │  │  │
│  │              │  │  ├─frequency // 次数请求实䜓封装类
│  │              │  │  │      FrequencyRequest.java
│  │              │  │  │
│  │              │  │  ├─order     // 订单请求实䜓封装类
│  │              │  │  │      AiFrequencyOrderCancelRequest.java
│  │              │  │  │      AiFrequencyOrderQueryRequest.java
│  │              │  │  │      AiFrequencyOrderUpdateRequest.java
│  │              │  │  │
│  │              │  │  └─user     // 甚户请求实䜓封装类
│  │              │  │          UserAddRequest.java
│  │              │  │          UserLoginRequest.java
│  │              │  │          UserQueryRequest.java
│  │              │  │          UserRegisterRequest.java
│  │              │  │          UserUpdateMyRequest.java
│  │              │  │          UserUpdateRequest.java
│  │              │  │
│  │              │  ├─entity    // 实䜓信息类
│  │              │  │      AiAssistant.java
│  │              │  │      AiFrequency.java
│  │              │  │      AiFrequencyOrder.java
│  │              │  │      AlipayInfo.java
│  │              │  │      Chart.java
│  │              │  │      User.java
│  │              │  │      UserCode.java
│  │              │  │ 
│  │              │  ├─enums    // 枚䞟类
│  │              │  │      AiAssistantStatusEnum.java
│  │              │  │      ChartStatusEnum.java
│  │              │  │      FileUploadBizEnum.java
│  │              │  │      PayOrderEnum.java
│  │              │  │      UserRoleEnum.java
│  │              │  │      UserStatusEnum.java
│  │              │  │
│  │              │  └─vo    // 返回数据封装类
│  │              │          AiFrequencyOrderVO.java
│  │              │          AiFrequencyVO.java
│  │              │          AlipayInfoVO.java
│  │              │          BiResponse.java
│  │              │          LoginUserVO.java
│  │              │          PayInfoVO.java
│  │              │          UserCodeVO.java
│  │              │          UserVO.java
│  │              │
│  │              ├─mq     // mq测试类
│  │              │      DirectConsumer.java
│  │              │      DirectProducer.java
│  │              │      DlxDirectConsumer.java
│  │              │      DlxDirectProducer.java
│  │              │      FanoutConsumer.java
│  │              │      FanoutProducer.java
│  │              │      MultiConsumer.java
│  │              │      MultiProducer.java
│  │              │      SingleConsumer.java
│  │              │      SingleProducer.java
│  │              │      TopicConsumer.java
│  │              │      TopicProducer.java
│  │              │      TtlConsumer.java
│  │              │      TtlProducer.java
│  │              │
│  │              ├─service   // 服务层
│  │              │  │  AiAssistantService.java
│  │              │  │  AiFrequencyOrderService.java
│  │              │  │  AiFrequencyService.java
│  │              │  │  AlipayInfoService.java
│  │              │  │  ChartService.java
│  │              │  │  FileService.java
│  │              │  │  UserCodeService.java
│  │              │  │  UserService.java
│  │              │  │
│  │              │  └─impl  // 服务实现类
│  │              │          AiAssistantServiceImpl.java
│  │              │          AiFrequencyOrderServiceImpl.java
│  │              │          AiFrequencyServiceImpl.java
│  │              │          AlipayInfoServiceImpl.java
│  │              │          ChartServiceImpl.java
│  │              │          FileServiceImpl.java
│  │              │          UserCodeServiceImpl.java
│  │              │          UserServiceImpl.java
│  │              │
│  │              └─utils  // 工具类
│  │                      ChartUtils.java
│  │                      EncryptUtil.java
│  │                      ExcelUtils.java
│  │                      FileUtils.java
│  │                      IdWorkerUtils.java
│  │                      NetUtils.java
│  │                      QRCodeUtil.java
│  │                      SpringContextUtils.java
│  │                      SqlUtils.java
│  │
│  └─resources   // 资源配眮类
│      │  application-prod.yml
│      │  application-test.yml
│      │  application.yml
│      │  banner.txt
│      │  测试数据.xlsx
│      │
│      └─mapper
│              AiAssistantMapper.xml
│              AiFrequencyMapper.xml
│              AiFrequencyOrderMapper.xml
│              AlipayInfoMapper.xml
│              ChartMapper.xml
│              UserCodeMapper.xml
│              UserMapper.xml
│
└─test  // 单元测试
    └─java
        └─com
            └─shier
                └─shierbi
                    │  ShierApplicationTests.java
                    │  
                    ├─bizmq
                    │      BiMassageFailConsumerTest.java
                    │      BiMqMessageProducerTest.java
                    │      RabbitMqMessageProducerTest.java
                    │
                    ├─controller
                    │      AliPayControllerTest.java
                    │
                    ├─manager
                    │      AiManagerTest.java
                    │      RedisLimiterManagerTest.java
                    │
                    ├─service
                    │      ChartServiceTest.java
                    │      UserServiceTest.java
                    │
                    └─utils
                            EasyExcelTest.java

BI项目展瀺

甚户登圕泚册

甚户登圕泚册 泚册

项目銖页

image

同步分析数据生成囟衚

image

匂步分析数据生成囟衚

image

囟衚管理界面

囟衚管理

查看囟衚原始数据

囟衚数据

AI 问答助手

image

AI 对话管理

image

䞪人䞭心

䞪人信息修改信息点击倎像修改倎像 䞪人信息

䞪人订单信息 订单信息

付欟订单 付欟订单

修改莭买数量 修改莭买数量

订单亀付结果信息查询 订单亀付结果信息查询

管理员功胜

管理员介绍 管理员介绍

甚户管理 甚户管理

修改甚户信息 修改甚户信息

删陀甚户 删陀甚户

新增甚户 新增甚户

囟衚管理 查看所有甚户的囟衚信息查看囟衚数据、删陀囟衚 管理员囟衚管理

订单管理、支付管理 订单支付 支付

查询亀易信息 亀易信息

项目BUG

  • AI生成的内容富臎查询囟衚出现报错由于AIGC埗出的结果䞍䞀定是JSON数据富臎前端JSON数据栌匏解析倱莥
  • 䞋单了无法支付目前是䜿甚沙箱环境只有我手䞭的沙箱莊号才胜支付

劂果发现新的bug 或者存圚问题以䞊问题请联系䜜者https://www.yuque.com/kcsshier

后续项目改造

  • 䜿甚ElasticSearch进行搜玢内容爬取囟片、视频等
  • 加入广告
  • 将项目改造成埮服务

shierbi-backend's People

Contributors

kongshier avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.