From 2205b05d852a9e674bbe3ef4e1a139fb97c5d8ed Mon Sep 17 00:00:00 2001 From: xueqingkun Date: Thu, 20 Feb 2025 12:18:20 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 78 ++++++++++++++----- pom.xml | 17 ++++ .../com/supervision/utils/WordReadUtil.java | 54 +++++++++---- 3 files changed, 115 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index 30cb70e..fb414bd 100644 --- a/README.md +++ b/README.md @@ -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-web:1.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 \ No newline at end of file +- /data/archives/fu-hsi/20240828/dist + diff --git a/pom.xml b/pom.xml index 198ec07..184eed4 100644 --- a/pom.xml +++ b/pom.xml @@ -199,6 +199,23 @@ itext-asian 5.2.0 + + org.apache.poi + poi + 4.1.2 + + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi-scratchpad + 4.1.2 + + diff --git a/src/main/java/com/supervision/utils/WordReadUtil.java b/src/main/java/com/supervision/utils/WordReadUtil.java index 15a5aea..ed3dd10 100644 --- a/src/main/java/com/supervision/utils/WordReadUtil.java +++ b/src/main/java/com/supervision/utils/WordReadUtil.java @@ -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 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 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) {