智能BI项目第一期

该项目是全程跟着鱼皮,还未进行功能扩展。为了方便日后复习,打算将一些重要的步骤记录下来。

项目概述

BI:即商业智能:Business Intelligence

过去

        需要手动导入数据、选择要分析的字段和图表,并由专业的数据分析师完成分析,最后得出结论。

现在

        用户只需输入想要分析的目标,并上传原始数据,系统将利用 AI 自动生成可视化图表。这样,会比较方便

项目初期架构(后期会逐步完善)

基础流程

客户端输入分析诉求和原始数据,向业务后端发送请求。业务后端利用 AI 服务处理客户端数据,保持到数据库。前端根据AI生产的代码生成可视化图表,最终将结果返回给客户端展示。

问题:

假设一个 AI 服务生成图表和分析结果要等 50 秒,如果有大量用户需要生成图表,每个人都需要等待 50 秒,那么 AI 服务可能无法承受这种压力。为了解决这个问题,可以采用消息队列技术。这些请求会进入队列,AI 服务会依次处理队列中的请求,从而避免了同时处理大量请求造成的压力

优化流程(异步化)

消息队列根据 AI 服务负载情况,定期检查进度,如果 AI 服务还能处理更多的图表生成请求,就向任务处理模块发送消息。

任务处理模块调用 AI 服务处理客户端数据,AI 服务异步生成结果返回给后端并保存到数据库,当后端的 AI 服务生成完毕后,可以通过向前端发送通知的方式,或者通过业务后端监控数据库中图表生成服务的状态,来确定生成结果是否可用。若生成结果可用,前端即可获取并处理相应的数据,最终将结果返回给客户端展示。(在此期间,用户可以去做自己的事情

技术栈

前端:

  1. React

  2. 开发框架 Umi + Ant Design Pro

  3. 可视化开发库(Echarts + HighCharts + AntV) <可视化会涉及到图表的生成>

  4. umi openapi 代码生成(自动生成后端调用代码) <前后联调开发>

后端:

  1. Spring Boot 
  2. MySQL
  3. MyBatis Plus
  4. 消息队列(RabbitMQ)
  5. AI 能力(Open AI接口开发 / 星球提供现成的 AI 接口)
  6. Excel 的上传和数据的解析(Easy Excel)
  7. Swagger + Knife4j 项目接口文档
  8. Hutool 工具库

前端初始化

项目启动

这里的dev命令start:dev命令一样都是启动命令。

start:dev命令中的MOCK=none,是把自动模拟的数据关闭;

dev命令是调用自己定义的后端;

start命令是以模拟数据的方式运行项目。

关于git

  1. 工作区: 在你电脑里看到的目录
  2. 暂存区: 在 .git 文件夹内的 index 中 (二进制记录)
  3. 版本库: 指的整个 .git 文件夹 (也认为是本地仓库)

项目瘦身

如果报错:

1.执行
yarn add eslint-config-prettier --dev yarn add eslint-plugin-unicorn --dev 
2.然后修改node_modules/@umijs/lint/dist/config/eslint/index.js文件注释
// es2022: true可以解决问题
如果启动后找不到菜单栏,把图中文件夹的路由都加上name属性

后端初始化

源码下载百度网盘链接: 百度网盘 请输入提取码 提取码: h4pi

如果pom.xml有报错,找到报错的位置,没有版本号就添加版本号,有版本号就换一个。 maven repository

根据需求,按照readme文件的要求,更改你的配置,比如redis、mysql等等

20240915:今天有些累了,晚上睡不着做点笔记,下次继续,最近两天先学一下项目部署上线,后面再来写笔记


20240916:早上和下午学了服务器部署,构建要好长时间,那就继续做笔记吧

更名

数据库:

连接数据库这个基本操作就不做笔记了,直接在左侧database那里连接即可,自己准备好库 

create table if not exists chart
(
    id          bigint auto_increment comment 'id' primary key,
    `name`      varchar(128)                       null comment '图表名称',
    goal        text                               null comment '分析目标',
    chartData   text                               null comment '图表数据',
    chartType   varchar(128)                       null comment '图表类型',
    genChart    text                               null comment '生成的图表数据',
    genResult   text                               null comment '生成的分析结论',
    status      varchar(128)                       not null default 'wait' comment 'wait running success failed',
    execMessage text                               null comment '执行信息',
    userId      bigint                             null comment '创建用户 id',
    createTime  datetime default CURRENT_TIMESTAMP not null comment '创建时间',
    updateTime  datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
    isDelete    tinyint  default 0                 not null comment '是否删除'
) comment '图表信息表' collate = utf8mb4_unicode_ci;
create table if not exists user
(
    id           bigint auto_increment comment 'id' primary key,
    userAccount  varchar(256)                           not null comment '账号',
    userPassword varchar(512)                           not null comment '密码',
    userName     varchar(256)                           null comment '用户昵称',
    userAvatar   varchar(1024)                          null comment '用户头像',
    userRole     varchar(256) default 'user'            not null comment '用户角色:user/admin',
    createTime   datetime     default CURRENT_TIMESTAMP not null comment '创建时间',
    updateTime   datetime     default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
    isDelete     tinyint      default 0                 not null comment '是否删除',
    index idx_userAccount (userAccount)
) comment '用户' collate = utf8mb4_unicode_ci;

 goal:就是你打算让AI为你分析啥

charData:前端传进来的excel的内容

charType:图表类型,比如折线图什么的

genChart:Ai生成的代码,通过echarts可以转化成对应的图片

genResult:AI生成的结论

status:因为是异步的,生成的过程中会有不同的状态,比如生成失败,正在生成之类的

userId:发起这个请求的用户

为了规范,把表放在sql目录下,新建一个sql文件来存放,然后在这个文件里执行你的sql代码

模拟数据

sql之父

可以用这个网站来自定义生成一些模拟数据,里面的createTime字段会多一个双引号,记得要去掉

代码框架生成

 这个时候在src/main/java/generator 目录下会有一些写好的代码框架,进行迁移即可 

防止爬虫

这两个实体类的主键id加上@TableId(type = IdType.ASSIGN_ID)

假删

这里配置了假删标志

假删的字段上加上@TableLogic,然后代码里的一些跟项目无关的内容可以删掉,比如引入微信模块

基础增删改查

这个项目里集成了一些基础的增删改查,我们直接复制过来改一些名称即可

我们找个简单一些的controller,复制PostController,粘贴到controller包下,改名为ChartController

全局替换post->chart、Post->Chart(记得要区分大小写)

这时候会改错一部分,把ChartMapping->PostMapping


此时大致框架搭好了,一些请求参数还没有创建,我们可以在com/ptu/api/model/dto 下面创建一个chart包,专门放关于图表的请求参数,此时可以用上com/ptu/api/model/dto/post包的内容,把他们的增删改查复制过来

更改对应的类名和内容

这里的字段可以根据需求来,不一定要按照鱼皮的代码

前后端联调

代码自动生成

使用 Ant Design Pro 自带的openAPI工具,根据后端的swagger接口文档数据自动生成对应的请求 service 代码。

打开前端项目,找到config.ts中的openAPI

 然后运行package.json里的openapi按钮运行,就会自动生成后端controller代码的调用,会生成在src/service目录下

修改配置

此时前后端代码就算是调通了 

目录 2 一、 前言 5 1. 定义 5 2. 用途 5 二、 BI项目二期建设目标 5 1. 系统的功能体系结构概述 5 2. 总体功能体系结构说明 6 1) 日常业务报表 8  定制脱机报表 8  联机报表查询 8 2) 业务探索式分析(OLAP) 8 3) KPI指标分析报告 9 3. 系统流程 10 1) 系统总体流程 10 2) 日常业务报表处理流程 11 3) 业务探索式分析(OLAP)处理流程 12 4. 数据说明 12 1) 总体数据说明 12 2) 系统数据来源详细说明 14 3) 日常业务报表分析处理数据说明 14 4) 业务探索式分析OLAP处理数据说明 14 5. 系统界面基本形式 15 三、 某零售集团BI系统运行环境 15 1. 软件环境 15 1) 软件环境配置图 15 2) 软件环境配置说明 16  客户端软件 16  BI应用 16  中间件 16  数据库管理系统 17  操作系统 17 2. 网络与服务器环境 17 1) 网络与服务器配置图 17 2) 网络与服务器配置说明 18  某零售集团信息仓库ODS服务器配置 19  某零售集团信息仓库OLAP服务器配置 20  某零售集团信息仓库Web应用服务器配置 21 四、 某零售集团BI项目需求分析的任务概述 21 1. 对一期需求业务的重新整理、归类、筛选和补充 22 2. 跨业态商流、物流分析 22 3. 决策支持系统 22 4. 数据交换平台 22 五、 某零售集团BI项目需求分析的对象 23 1. 区域/业态 23 1) 中等超市业态子公司主题分析 23  运营分析 23  商品分析 24  合同 24  订货 24  销售 24  旬报 24  供应商 24  品类KPI指标 24  品类组KPI监控 24  品类组业绩监控 24  供应商分析 24  供应商基本查询 24  供应商供应结构分析 24  供应商供货能力分析 24  供应商销售分析 24  供应商库存分析 24  供应商贡献度分析(KPI) 24 2) 加盟店分析 24  进货分析 25  销售分析 25  库存分析 25  要货分析 25 3) 大卖场业态子公司主题分析(将来纳入) 25 4) 便利店业态子公司便利主题分析(将来纳入) 25 5) 江苏分公司主题分析(将来纳入) 25 6) 浙江分公司主题分析(将来纳入) 25 2. 跨业态商品分析 25 1) 定牌商品主题 25  销售主题 25  库存主题 25  定牌商品结构分析 25  定牌商品供货能力分析 25  定牌商品贡献度分析(KPI) 25 2) 联合采购商品主题 25  供应商主题 25  库存主题 25  销售主题 25  联合采购效果评估(KPI) 25 3) 生鲜商品主题 25  销售统计报表 25  销售跟踪报表 25 3. 中仓分析 26 1) 中仓库存分析 26 2) 中仓进发货分析 26 3) 门店向中仓要货统计 26 4. 决策分析 26 六、 日常业务报表分析的详细内容 26 七、 多个业务因素、多角度、随机式探索式分析OLAP 26 1. 探索式分析功能概述 27 2. 探索式分析的形式 27 3. 探索式分析所提供信息内容 28 4. 探索式分析的基本操作 28 八、 决策支持系统 29
鱼皮的Java学习路线是一条全面贴心的自学编程指南,旨在帮助程序员入门并通关大厂。这个学习路线包括了以下内容: 1. 基础框架:包括Java基础、JavaWeb、MySQL等基础知识。 2. 数据库:学习使用MySQL进行数据存储和管理。 3. 中间件:学习使用Maven/Gradle进行项目构建,以及使用Redis进行缓存。 4. 微服务:学习使用Spring Boot和Spring Cloud进行微服务开发。 5. 消息队列:学习使用RabbitMQ进行消息传递和处理。 6. 容器:学习使用Docker和Kubernetes进行容器化部署和管理。 7. 数据结构与算法:学习力扣算法题目,提升编程能力。 8. Linux:学习Linux操作系统的基本知识和使用方法。 9. 网关:学习使用Nginx作为网关进行负载均衡和反向代理。 10. CI/CD:学习使用持续集成/持续交付工具进行自动化部署。 11. 计算机网络和操作系统:学习计算机网络和操作系统的基本原理。 12. 接口文档和接口测试:学习使用Swagger生成接口文档,以及使用Postman进行接口测试。 13. 并发编程:学习并发编程的基本概念和技术。 14. 设计模式:学习常用的设计模式,提高代码的可维护性和可扩展性。 15. 网络编程:学习使用Netty进行网络编程。 16. 分布式和云原生:学习分布式系统的设计和云原生应用的开发。 这个学习路线涵盖了Java开发的各个方面,从基础知识到高级技术都有所涉及,是一个非常全面的学习指南。你可以关注程序员鱼皮并访问他的编程导航网站获取更详细的学习资源和指导。 [2<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [java学习路线](https://blog.csdn.net/weixin_49337333/article/details/121169853)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [java后端学习路线整理](https://blog.csdn.net/weixin_44897349/article/details/128434408)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值