1. 修复bug

master
xueqingkun 2 months ago
parent c9a90e7bcd
commit 2205b05d85

@ -2,19 +2,37 @@
宁夏刑侦大模型后台服务
# Release Notes
# 发布时间 2025-02-20
## 新特性
- 增加多模型接入的能力
## 变更
- 调整原子指标、指标的详情展示样式
## 更新步骤
- 备份mysql数据库
- 执行变更sql脚本
- 替换后端服务包(fu-hsi-service-1.0.0.jar)
- 替换前端包(dist)
- 重启后端服务,并查看服务是否正常启动
- 重启前端服务,并查看服务是否正常启动
- 验证更新内容
# Release Notes
# 发布时间 2024-12-26
## 新特性
- 页面确保在不同尺寸宽度的屏幕上均能正常显示,并支持用户通过滚动查看完整内容。
- 案件列表添加鼠标悬停效果,悬停行背景颜色加深
- 证据图像上传加载页面时,增加骨架屏效果优化用户体验。
- 模型分析功能按钮增加防抖限制,避免短时间内重复触发导致的性能问题
## 变更
- 指标结果-原子指标结果显示“存在/不存在”
- 统计案件状态:未分析、已分析、正在分析
- 证据列表删除分页、指标结果删除分页
@ -23,43 +41,47 @@
# 发布时间 2024-12-13
## 新特性
- 上线dify服务
- 数字民警对话功能改造,支持精确、模糊意图识别,知识检索,历史记录,关联证据文件下载等
- 存量案件同步到dify知识库
- Http请求、响应日志审计功能
## 变更
- 下线langChain-Chatchat服务
- 数字民警UI交互改造独立tab页展示支持快捷操作功能
## 更新步骤
0. 备份fu-hsi-mysql数据库中的所有数据
1. 导入fu-hsi-web1.1.0镜像 (docker load -i fu-hsi-web.1.1.0.tar.gz)
2. 修改docker-compose.yml配置文件
- 在services.fu-hsi-web.command配置下添加以下参数
--dify.server.url=${DIFY_SERVER_URL}
--dify.dataset.auth=${DIFY_DATASET_AUTH}
--dify.app.auth=${DIFY_APP_AUTH}
- 修改services.fu-hsi-web.image为fu-hsi-web:1.1.0
- 在services.fu-hsi-web.command配置下添加以下参数
--dify.server.url=${DIFY_SERVER_URL}
--dify.dataset.auth=${DIFY_DATASET_AUTH}
--dify.app.auth=${DIFY_APP_AUTH}
- 修改services.fu-hsi-web.image为fu-hsi-web:1.1.0
3. 修改.env配置文件追加参数(注意Bearer后面的空格前面需要添加转移符号):
DIFY_SERVER_URL=http://192.168.10.137/v1
DIFY_DATASET_AUTH="Bearer\ dataset-g3RctoaHdvXAAQjUVNMuUWCY"
DIFY_APP_AUTH="Bearer\ app-YrNuU7Puxr3ko8ftUdWtDKhz"
DIFY_SERVER_URL=http://192.168.10.137/v1
DIFY_DATASET_AUTH="Bearer\ dataset-g3RctoaHdvXAAQjUVNMuUWCY"
DIFY_APP_AUTH="Bearer\ app-YrNuU7Puxr3ko8ftUdWtDKhz"
4. 执行变更sql(migration_2.1.sql)
5. 安装dify服务
6. 启动服务(docker compose up -d)
7. 迁移案件数据到dify知识库调用接口 GET /modelCase/migrateRecordKnowledgeBase
8. 验证更新内容
# 发布时间 2024-12-03
## 变更
- 案件图谱优化,支持多种节点颜色样式,引力布局调整,交互体验优化
# 发布时间 2024-11-21
## 变更
- 案件图谱展示优化,支持搜索,全屏,节点/关系过滤等
- 原子指标-图谱查询支持在线调试
@ -84,9 +106,9 @@
1. 加载镜像如果docker可以访问外网直接下载否则需要先上传到服务器
- docker load -i xxl-job-admin:2.4.1.tar.gz
2. 修改.env中的xxl-job中对应的配置
- XXl_JOB_PASSWORD=sT7SSTiX8s
- XXL_JOB_PORT_HTTP=8081
- SPRING_DATASOURCE_URL=jdbc:mysql://fu-hsi-mysql:3306/xxl-job?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
- XXl_JOB_PASSWORD=sT7SSTiX8s
- XXL_JOB_PORT_HTTP=8081
- SPRING_DATASOURCE_URL=jdbc:mysql://fu-hsi-mysql:3306/xxl-job?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
3. 替换docker-compose-base.yml、docker-compose.yml配置文件
4. 备份mysql数据库
5. 执行数据初始化脚本(在文档末尾处)
@ -95,45 +117,53 @@
8. 调用案件证据归档刷新接口完成历史案件证据归档整理(get ip:port/caseEvidence/fresh)、初始化指标计算规则数据
9. 验证更新内容
# 发布时间 2024-09-20
# 变更
- 修复编辑ocr识别证据异常问题
- 优化前端等待展示样式
# 安装包
- /data/archives/fu-hsi/20240920/fu-hsi-service-1.0.0.tar.gz
- /data/archives/fu-hsi/20240920/dist
# 发布时间 2024-09-19
## 新特性
- 增加笔录和证据上传OCR识别功能
- 首页数据统计接口
- 日志输出规范配置
## 变更
- 案件查询列表查询条件变更
- 增加过滤条件已分析、未分析、全部
- 增加按照分数排序的规则
## 优化
- 数据库提示词优化
## 安装步骤
1. 修改.env 和docker-compose-base.yml 文件
2. 加载镜像 paddleocr:v2.1
3. 备份mysql所有数据文件
4. 重新启动服务 docker-compose up -d
# 安装包
- /data/archives/fu-hsi/20240919/fu-hsi-service-1.0.0.tar.gz
- /data/archives/fu-hsi/20240919/dist
- /data/archives/fu-hsi/20240919/paddleocr:v2.1.tar.gz
# 发布时间 2024-09-12
# 变更记录
- 调整提示词后,笔录列表增加“笔录提取”功能,并显示更新标签
- 指标结果各项标题显示总分
- 首页统计项7项案件数量、行为数、月新增、较上月、模型分析<70
@ -141,34 +171,44 @@
- 经侦案件列表根据模型分析状态进行分类,分别在“全部”、“已分析”、“未分析”三个标签下展示对应案件。
# 安装包
- /data/archives/fu-hsi/20240912/fu-hsi-service-1.0.0.tar.gz
- /data/archives/fu-hsi/20240912/dist
# 发布时间 2024-09-05
# 变更记录
- 修复案件证据分页失效问题
- 修复经侦模型指标数据只展示部分数据问题
# 安装包
- /data/archives/fu-hsi/20240905/dist
# 发布时间 2024-09-03
# 变更记录
- 修复三元组提取进度问题不准确的问题
- 解除首页页面限制
- 优化原子指标提示
- 解除模型分析需要有数据变动校验限制
# 安装包
- /data/archives/fu-hsi/20240903/fu-hsi-service-1.0.0.tar.gz
- /data/archives/fu-hsi/20240903/dist
# 发布时间 2024-08-29
# 变更记录
- 案件笔录列表调整,仅展示子列表
- 字典值配置生效
- 案件笔录列表调整,仅展示子列表
- 字典值配置生效
# 安装包
- /data/archives/fu-hsi/20240828/fu-hsi-service-1.0.0.tar.gz
- /data/archives/fu-hsi/20240828/dist
- /data/archives/fu-hsi/20240828/dist

@ -199,6 +199,23 @@
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>4.1.2</version>
</dependency>
</dependencies>

@ -1,14 +1,15 @@
package com.supervision.utils;
import com.supervision.minio.domain.MinioFile;
import com.supervision.minio.service.MinioService;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;
import org.apache.poi.poifs.filesystem.FileMagic;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.springframework.web.multipart.MultipartFile;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.*;
import java.util.List;
@Slf4j
@ -57,20 +58,43 @@ public class WordReadUtil {
}
public static String readWord(InputStream inputStream) {
StringBuilder stringBuilder = new StringBuilder();
try (inputStream) {
// 创建 XWPFDocument 对象
XWPFDocument document = new XWPFDocument(inputStream);
// 获取所有段落
List<XWPFParagraph> paragraphs = document.getParagraphs();
// 遍历所有段落并打印文本
for (XWPFParagraph paragraph : paragraphs) {
stringBuilder.append(paragraph.getText()).append("\n");
byte[] fileBytes;
try {
fileBytes = inputStream.readAllBytes();
} catch (IOException e) {
throw new RuntimeException(e);
}
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(fileBytes);
try (InputStream is = FileMagic.prepareToCheckMagic(byteArrayInputStream)) {
FileMagic fm = FileMagic.valueOf(is);
// 判断文件类型 docx
if (FileMagic.OOXML == fm) {
try (byteArrayInputStream) {
XWPFDocument document = new XWPFDocument(byteArrayInputStream);
List<XWPFParagraph> paragraphs = document.getParagraphs();
StringBuilder stringBuilder = new StringBuilder();
for (XWPFParagraph paragraph : paragraphs) {
stringBuilder.append(paragraph.getText()).append("\n");
}
return stringBuilder.toString();
} catch (Exception e) {
throw new RuntimeException("获取笔录内容失败", e);
}
} else if (FileMagic.OLE2 == fm) {
// 判断文件类型 doc
try (byteArrayInputStream) {
HWPFDocument document = new HWPFDocument(byteArrayInputStream);
WordExtractor extractor = new WordExtractor(document);
return extractor.getText();
} catch (Exception e) {
throw new RuntimeException("获取笔录内容失败", e);
}
} else {
throw new RuntimeException("不支持的文件类型");
}
} catch (Exception e) {
log.error("获取笔录内容失败",e);
} catch (IOException e) {
throw new RuntimeException(e);
}
return stringBuilder.toString();
}
public static String readWordInMinio(MinioService minioService, String fileId) {

Loading…
Cancel
Save