当前位置: 首页 > news >正文

山东大学项目实训-创新实训-法律文书专家系统-项目报告(三)

项目简介

法律文书专家系统是一个 Web 应用,提供法律文书摘要提取、法律预测报告生成和法律考试问题答疑三大核心功能。用户需要登录或注册后,进入主页面选择所需功能,进行相应的操作

用户群体

律师:需要快速提取法律文书摘要,提高办案效率。

法务人员:需要根据案件输入生成法律预测报告,辅助决策。

法学生:需要练习法律考试题,获取答案与解析。

进度说明:

法律文书摘要功能,法律文书预测报告的大致功能基本完成.

完成效果:

界面效果:

开发技术:

前端使用了vue+JavaScript的技术,同时还使用了element组件库。后端使用了Java+SpringBoot。前后端交互使用了axios技术。

前后端的交互:

axios:Axios 是一个基于 promise 网络请求库,作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。

我在前端使用axios技术封装了一个request拦截器,可以自发请求发送前对请求做一些处理.

import axios from 'axios'const request = axios.create({baseURL: 'http://localhost:9090',  // 这里是全局统一加上了 '/api' 前缀,也就是说所有接口都会加上'/api'前缀在,页面里面写接口的时候就不要加 '/api'了,否则会出现2个'/api',类似 '/api/api/user'这样的报错,切记!!!timeout: 60000
})// request 拦截器
// 可以自请求发送前对请求做一些处理
// 比如统一加token,对请求参数统一加密
request.interceptors.request.use(config => {//config.headers['Content-Type'] = 'application/json;charset=utf-8';if (!(config.data instanceof FormData)) {config.headers['Content-Type'] = 'application/json;charset=utf-8';}// 设置请求头let jwtToken = localStorage.getItem('jwtToken');if (jwtToken) {config.headers['jwtToken'] = jwtToken;}return config
}, error => {return Promise.reject(error)
});// response 拦截器
// 可以在接口响应后统一处理结果
request.interceptors.response.use(response => {let res = response.data;// 如果是返回的文件if (response.config.responseType === 'blob') {return res}// 兼容服务端返回的字符串数据if (typeof res === 'string') {res = res ? JSON.parse(res) : res}return res;},error => {console.log('err' + error) // for debugreturn Promise.reject(error)}
)export default request

使用时可以直接这么使用:

(文书摘要功能中上传文件的代码)

import request from "@/axios/request";const response = await request.post("/wenshu/upload", formData, {headers: {"Content-Type": "multipart/form-data",},

(法律预测功能中上传的代码) 

import request from "@/axios/request";
const response = await request.post('/yuce/send', this.inputQuestion);
    // 处理文件上传成功的事件handleUploadSuccess(response, files, fileList) {console.log("文件上传成功,后端响应:", response);if (response.code == 200) {this.inputQuestion = response.msg} else {this.$message({type: 'error', message: response.msg})}}

 后端文书摘要功能对应的接收方法:它接收一个文件(txt,pdf,docx)并将其中的文字信息提取,然后与训练好的模型进行交互.

@PostMapping("/upload")public Result handleFileUpload(@RequestParam("file") MultipartFile file) {String filename = file.getOriginalFilename();if (filename == null) {return Result.error("空文件");}try {String textContent = extractTextFromFile(file);// 构建请求ObjectMapper mapper = new ObjectMapper();Map<String, Object> data = new HashMap<>();data.put("document", textContent);String jsonBody = mapper.writeValueAsString(data);HttpRequest request = HttpRequest.newBuilder().uri(URI.create("http://localhost:7860/summarize")).header("Content-Type", "application/json").POST(HttpRequest.BodyPublishers.ofString(jsonBody)).build();// 发送请求并处理响应HttpClient client = HttpClient.newHttpClient();HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());System.out.println("Status code: " + response.statusCode());System.out.println("Response body: " + response.body());//返回结果return Result.success(response.body());} catch (UnsupportedOperationException e) {return Result.error("不支持的文件类型");} catch (Exception e) {e.printStackTrace();return Result.error("文件解析失败");}}

 后端文书摘要功能对应的接收方法:

public class YuceController {@PostMapping("/upload")public Result handleFileUpload(@RequestParam("file") MultipartFile file) {String filename = file.getOriginalFilename();if (filename == null) {return Result.error("空文件");}try {String textContent = extractTextFromFile(file);System.out.println(textContent);return Result.success(textContent);} catch (UnsupportedOperationException e) {return Result.error("不支持的文件类型");} catch (Exception e) {e.printStackTrace();return Result.error("文件解析失败");}}@PostMapping("/send")public Result handleRequest(@RequestBody String requestData) {System.out.println("接收到的字符串: " + requestData);// 构建请求try {ObjectMapper mapper = new ObjectMapper();Map<String, Object> data = new HashMap<>();data.put("fact", requestData);String jsonBody = mapper.writeValueAsString(data);HttpRequest request = HttpRequest.newBuilder().uri(URI.create("http://localhost:7860/prediction")).header("Content-Type", "application/json").POST(HttpRequest.BodyPublishers.ofString(jsonBody)).build();// 发送请求并处理响应HttpClient client = HttpClient.newHttpClient();HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());System.out.println("Status code: " + response.statusCode());System.out.println("Response body: " + response.body());//返回结果return Result.success(response.body());} catch (Exception e) {e.printStackTrace();return Result.error("错误");}}

 其中,第一个方法是接受前端上传的文件,然后将其文字信息提取出来,返回给前端,第二个则是接受前端发送来的信息,与模型交互后返回前端.

http://www.xdnf.cn/news/286831.html

相关文章:

  • 推特逆向算法,推特爬虫,数据分析,推特关键词搜索
  • C# 检查某个点是否存在于圆扇区内(Check whether a point exists in circle sector or not)
  • AI小智本地前后端部署
  • Web Workers 技术详解与最佳实践
  • Kubernetes(k8s)学习笔记(七)--KubeSphere 最小化安装
  • webpack 的工作流程
  • 备忘录模式(Memento Pattern)
  • 56.[前端开发-前端工程化]Day03-webpack构建工具
  • Windows11 VS code 安装 Cline 调用 Github MCP 配置过程坑点汇总
  • 深入探索 51 单片机:从入门到实践的全面指南
  • ctfshow——web入门361~368
  • 电脑怎么分屏操作?
  • Gradio全解20——Streaming:流式传输的多媒体应用(5)——基于WebRTC的摄像头实时目标检测
  • N-Gram 模型
  • 慢sql处理流程和常见案例
  • Webug4.0靶场通关笔记16- 第20关文件上传(截断上传)
  • 数据结构——算法复杂度
  • 部署GM DC Monitor 一体化监控预警平台
  • Python 整理3种查看神经网络结构的方法
  • 3DGS-slam:splatam公式
  • 开源模型应用落地-qwen模型小试-Qwen3-8B-推理加速-vLLM(一)
  • Git 标签管理
  • 【STM32 学习笔记】GPIO输入与输出
  • Scrapy分布式爬虫实战:高效抓取的进阶之旅
  • 【NLP】30. 深入理解 In-Context Learning 的核心机制与策略
  • PrivKV: Key-Value Data Collection with Local Differential Privacy论文阅读
  • vue+element 导航 实现例子
  • HarmonyOS Device Connector(hdc)
  • linux 中inotify与inode的关系是什么?
  • PandasAI:对话式数据分析新时代