소스 검색

添加终版ppt和说明文档

chenjz776 1 개월 전
부모
커밋
6273a9c69d
1개의 변경된 파일40개의 추가작업 그리고 136개의 파일을 삭제
  1. 40 136
      智能数据分析系统设计开发与实现文档.md

+ 40 - 136
智能数据分析系统设计开发与实现文档.md

@@ -1,18 +1,16 @@
 # 智能数据分析系统设计开发与实现文档
 
-- 基于RBAC的权限管理设计
-- 用户管理设计
-- 图表管理设计
+## 一.项目简介
 
-## 一.开发背景
+### 1.1 项目背景
 
-随着大数据时代的到来,数据分析变得越来越重要。
+随着大数据时代的到来,数据分析变得越来越重要。智能数据分析平台旨在为用户提供一个简单易用、功能强大的数据分析工具,帮助用户从海量数据中提取有价值的信息,并通过图表直观展示,区别于传统 BI,用户只需要导入原始数据集、并输入分析诉求,就能自动生成可视化图表及分析结论,实现数据分析的降本增效。
 
-智能数据分析平台旨在为用户提供一个简单易用、功能强大的数据分析工具,帮助用户从海量数据中提取有价值的信息,并通过图表直观展示。
+### 1.2 项目特点
 
-智能数据分析平台是一个基于Spring Boot和Vue.js的前后端分离应用,旨在为用户提供一个简单易用的数据分析工具
+智能数据分析平台是一个基于Spring Boot后端和Vue.js前端的前后端分离应用,通过JWT实现身份验证,采用RBAC进行权限管理,并提供图表生成和管理功能。项目选题**新颖**,不同于泛滥的管理系统、博客、商城、本项目是结合**AIGC技术+企业BI业务场景**的综合实战,紧跟时代潮流
 
-平台通过JWT实现身份验证,使用RBAC进行权限管理,并提供图表生成和管理功能。
+![img](https://pic.yupi.icu/1/(null)-20231026151931197.(null))
 
 ## 二.需求分析
 
@@ -20,7 +18,7 @@
 
 #### 2.1.1 数据分析接口
 
-- **数据分析**:分析用户上传的数据,得出结论,并将数据可视化
+- **数据分析**分析用户上传的数据,得出结论,并将数据可视化
 - **接口限流**:使用令牌桶算法限制接口访问频率,防止滥用。
 - **异步处理**:通过线程池异步处理数据分析任务,提高系统响应速度。
 
@@ -54,14 +52,27 @@
 
 ## 三.需求设计
 
-### 3.1 架构设计
+### 3.1 技术选型
 
-系统采用B/S架构,前端使用Vue.js构建用户界面,后端使用Spring Boot构建RESTful API
+系统采用B/S架构,前端使用Vue3.js构建用户界面,后端使用Spring Boot构建RESTful API
 
-- **后端**:Spring Boot、Spring Security、MyBatis Plus、Redisson、JWT、hutool等
-- **前端**:Vue.js、Element Plus、ECharts等
-- **数据库**:MySQL
-- **缓存**:Redis
+**前端**
+
+- Vue3.js
+- Element Plus组件库
+- ECharts可视化库
+
+**后端**
+
+- Java Spring Boot
+- Java Spring Security
+- MySQL 数据库
+- MyBatis-Plus 
+- Redis + Redisson 限流
+- JWT令牌校验
+- Easy Excel 表格数据处理
+- Swagger + Knife4j 接口文档生成
+- Hutool、Apache Common Utils 等工具库
 
 ### 3.2 数据库设计
 
@@ -88,8 +99,6 @@ CREATE TABLE  if NOT EXISTS `user` (
 ) COMMENT='用户表';
 ```
 
-
-
 #### 3.2.2 图表表
 
 - **图表ID**:唯一标识。
@@ -115,8 +124,6 @@ CREATE TABLE if NOT EXISTS `chart` (
 ) COMMENT='图表表';
 ```
 
-
-
 ### 3.3 接口设计
 
 使用Swagger文档化API接口。
@@ -141,7 +148,6 @@ CREATE TABLE if NOT EXISTS `chart` (
 
 **请求数据类型**:`application/json`
 
-
 **响应数据类型**:`*/*`
 
 **接口描述**:用户登录
@@ -168,9 +174,6 @@ CREATE TABLE if NOT EXISTS `chart` (
 **请求参数**:
 
 
-**请求参数**:
-
-
 | 参数名称                 | 参数说明 | 请求类型 | 是否必须 | 数据类型          | schema |
 | ------------------------ | -------- | -------- | -------- | ----------------- | ------ |
 | user                     | user     | body     | true     | User              | User   |
@@ -313,22 +316,9 @@ CREATE TABLE if NOT EXISTS `chart` (
 
 **请求数据类型**:`application/x-www-form-urlencoded`
 
-
 **响应数据类型**:`*/*`
 
 
-**接口描述**:
-
-
-**请求参数**:
-
-
-**请求参数**:
-
-
-暂无
-
-
 **响应状态**:
 
 
@@ -374,12 +364,6 @@ CREATE TABLE if NOT EXISTS `chart` (
 **响应数据类型**:`*/*`
 
 
-**接口描述**:
-
-
-**请求参数**:
-
-
 **请求参数**:
 
 
@@ -433,13 +417,9 @@ CREATE TABLE if NOT EXISTS `chart` (
 
 **请求数据类型**:`application/json`
 
-
 **响应数据类型**:`*/*`
 
 
-**接口描述**:
-
-
 **请求示例**:
 
 
@@ -458,9 +438,6 @@ CREATE TABLE if NOT EXISTS `chart` (
 **请求参数**:
 
 
-**请求参数**:
-
-
 | 参数名称                 | 参数说明 | 请求类型 | 是否必须 | 数据类型       | schema  |
 | ------------------------ | -------- | -------- | -------- | -------------- | ------- |
 | userDTO                  | userDTO  | body     | true     | UserDTO        | UserDTO |
@@ -518,9 +495,6 @@ CREATE TABLE if NOT EXISTS `chart` (
 **响应数据类型**:`*/*`
 
 
-**接口描述**:
-
-
 **请求示例**:
 
 
@@ -539,9 +513,6 @@ CREATE TABLE if NOT EXISTS `chart` (
 **请求参数**:
 
 
-**请求参数**:
-
-
 | 参数名称                 | 参数说明 | 请求类型 | 是否必须 | 数据类型       | schema  |
 | ------------------------ | -------- | -------- | -------- | -------------- | ------- |
 | userDTO                  | userDTO  | body     | true     | UserDTO        | UserDTO |
@@ -595,16 +566,9 @@ CREATE TABLE if NOT EXISTS `chart` (
 
 **请求数据类型**:`application/x-www-form-urlencoded`
 
-
 **响应数据类型**:`*/*`
 
 
-**接口描述**:
-
-
-**请求参数**:
-
-
 **请求参数**:
 
 
@@ -654,16 +618,9 @@ CREATE TABLE if NOT EXISTS `chart` (
 
 **请求数据类型**:`application/x-www-form-urlencoded`
 
-
 **响应数据类型**:`*/*`
 
 
-**接口描述**:
-
-
-**请求参数**:
-
-
 **请求参数**:
 
 
@@ -721,16 +678,9 @@ CREATE TABLE if NOT EXISTS `chart` (
 
 **请求数据类型**:`multipart/form-data`
 
-
 **响应数据类型**:`*/*`
 
 
-**接口描述**:
-
-
-**请求参数**:
-
-
 **请求参数**:
 
 
@@ -785,16 +735,9 @@ CREATE TABLE if NOT EXISTS `chart` (
 
 **请求数据类型**:`application/x-www-form-urlencoded`
 
-
 **响应数据类型**:`*/*`
 
 
-**接口描述**:
-
-
-**请求参数**:
-
-
 **请求参数**:
 
 
@@ -843,16 +786,9 @@ CREATE TABLE if NOT EXISTS `chart` (
 
 **请求数据类型**:`application/x-www-form-urlencoded`
 
-
 **响应数据类型**:`*/*`
 
 
-**接口描述**:
-
-
-**请求参数**:
-
-
 **请求参数**:
 
 
@@ -908,9 +844,6 @@ CREATE TABLE if NOT EXISTS `chart` (
 **响应数据类型**:`*/*`
 
 
-**接口描述**:
-
-
 **请求示例**:
 
 
@@ -936,9 +869,6 @@ CREATE TABLE if NOT EXISTS `chart` (
 **请求参数**:
 
 
-**请求参数**:
-
-
 | 参数名称                       | 参数说明 | 请求类型 | 是否必须 | 数据类型          | schema |
 | ------------------------------ | -------- | -------- | -------- | ----------------- | ------ |
 | chart                          | chart    | body     | true     | Chart             | Chart  |
@@ -1003,9 +933,6 @@ CREATE TABLE if NOT EXISTS `chart` (
 **响应数据类型**:`*/*`
 
 
-**接口描述**:
-
-
 **请求示例**:
 
 
@@ -1031,9 +958,6 @@ CREATE TABLE if NOT EXISTS `chart` (
 **请求参数**:
 
 
-**请求参数**:
-
-
 | 参数名称                       | 参数说明 | 请求类型 | 是否必须 | 数据类型          | schema |
 | ------------------------------ | -------- | -------- | -------- | ----------------- | ------ |
 | chart                          | chart    | body     | true     | Chart             | Chart  |
@@ -1093,16 +1017,9 @@ CREATE TABLE if NOT EXISTS `chart` (
 
 **请求数据类型**:`application/x-www-form-urlencoded`
 
-
 **响应数据类型**:`*/*`
 
 
-**接口描述**:
-
-
-**请求参数**:
-
-
 **请求参数**:
 
 
@@ -1220,8 +1137,6 @@ Spring Security和JWT结合使用的用户登录实现。
     }
 ```
 
-
-
 ##### 用户注册(Register)
 
 - **接口**:`POST /user/register`
@@ -2052,9 +1967,6 @@ public class SecurityConfig  extends WebSecurityConfigurerAdapter {
       </script>
       ```
 
-      
-
-  
 
 ##### 用户列表页面
 
@@ -2102,7 +2014,6 @@ public class SecurityConfig  extends WebSecurityConfigurerAdapter {
           </el-table>
       ```
   
-      
   - 新增、编辑、删除按钮。
   
     - ```vue
@@ -2158,7 +2069,6 @@ public class SecurityConfig  extends WebSecurityConfigurerAdapter {
           </el-row>
       ```
   
-      
   - 用户条件搜索,用户角色筛选。
   
     - ```vue
@@ -2245,7 +2155,6 @@ public class SecurityConfig  extends WebSecurityConfigurerAdapter {
           </el-dialog>
       ```
   
-      
   - 保存和取消按钮。
   
   ##### 完整页面代码
@@ -2706,12 +2615,9 @@ public class SecurityConfig  extends WebSecurityConfigurerAdapter {
       10. **保存最终图表状态**:
           - 将更新后的图表实体保存到数据库。
       11. **返回结果**:
-          - 将图表实体转换为`ChartVO`对象,以便将生成的图表数据和结论返回给前端。
-
-      ​		
+          - 将图表实体转换为`ChartVO`对象,以便将生成的图表数据和结论返回给前端
 
     
-
     - ```java
           @Override
           public ChartVO generateChartByAI(ChartDTO chartDTO, MultipartFile file) {
@@ -2774,17 +2680,17 @@ public class SecurityConfig  extends WebSecurityConfigurerAdapter {
               return chartVO;
           }
       ```
-
+    
       
-
+    
   - **异步**
-
+  
   - ![image-20241215212251850](http://tuchuang.anyi.space/imgs/image-20241215212251850.png)
-
+  
     - 创建线程池
-
+  
       - 这个配置类定义了一个自定义的线程池,包括核心线程数、最大线程数、工作队列、线程工厂和拒绝策略。这个线程池可以被应用程序中的其他组件使用,以异步执行任务
-
+  
         - 线程池参数配置:
           - `corePoolSize`:核心线程池的大小为1,表示线程池中始终保持的线程数量。
           - `maximumPoolSize`:最大线程池的大小为2,表示线程池中允许的最大线程数量。
@@ -2792,7 +2698,7 @@ public class SecurityConfig  extends WebSecurityConfigurerAdapter {
           - `unit`:时间单位设置为秒。
           - `workQueue`:工作队列使用`ArrayBlockingQueue`,容量为5,用于存放待执行任务。
           - `threadFactory`:线程工厂,用于创建新线程。这里没有自定义线程名称或其他属性,直接使用默认的线程创建方式。
-
+  
       - ```java
         package space.anyi.BI.config;
         
@@ -2845,11 +2751,11 @@ public class SecurityConfig  extends WebSecurityConfigurerAdapter {
         }
         
         ```
-
+  
     - 使用线程池进行异步优化
-
+  
       - 实现了异步生成图表的流程,包括读取和验证上传的数据、保存初始图表状态、使用线程池异步执行AI请求、解析响应、数据可视化处理和更新数据库。通过异步处理,可以提高应用的性能,避免在生成图表时阻塞主线程。
-
+  
       1. `public long generateChartByAIAsyn(ChartDTO chartDTO, MultipartFile file)`:这是一个公共方法,返回类型是`long`,参数包括一个`ChartDTO`对象和一个`MultipartFile`对象,用于生成图表的异步操作。
       2. 初始化图表实体:
          - 使用`BeanCopyUtil.copyBean`方法将`ChartDTO`对象的属性复制到一个新的`Chart`实体对象中。
@@ -2874,7 +2780,7 @@ public class SecurityConfig  extends WebSecurityConfigurerAdapter {
          - 更新图表状态为“成功”并保存。
       8. 返回结果:
          - 返回生成的图表ID
-
+  
     - ```java
           @Override
           public long generateChartByAIAsyn(ChartDTO chartDTO, MultipartFile file) {
@@ -2940,9 +2846,9 @@ public class SecurityConfig  extends WebSecurityConfigurerAdapter {
               return chartId;
           }
       ```
-
+  
       
-
+  
 - **限流**:使用Redisson实现令牌桶算法,通过RRateLimiterHandler进行接口限流。
 
   - 这个服务类提供了一个简单的限流功能,通过Redisson客户端实现。它允许开发者为特定的请求设置一个限流器,并且根据设定的速率来控制请求的通过。
@@ -3582,5 +3488,3 @@ export default {
     
     ```
 
-    
-