综合设计——多源异构数据采集与融合应用综合实践

综合设计——多源异构数据采集与融合应用综合实践

这个项目属于哪个课程 2024数据采集与融合技术实践
组名 、项目简介 组名:味谱魔方 、项目需求:设计出一个交互友好的多源异构数据的采集与融合的小应用 、项目目标:本系统旨在实现用户将食品加入购物车,生成对应的食谱核心功能、项目开展技术路线:js逆向、java、springboot、ChatGLM-6B模型
团队成员学号 102202156 王贺雯
102202156 高涛
102202157 王党兵
102202119 吴佳辉
032004126 曾祥宝
项目目标 本系统旨在实现用户将食品加入购物车,生成对应的食谱核心功能
其他参考文献 https://www.spkx.net.cn/CN/abstract/abstract58653.shtml
gitee链接 https://gitee.com/jyppx000/data-collection-and-fusion

系统总体技术概述

1.系统架构概述

系统分为后端管理系统、安卓、模型训练及其搭建、爬取数据、调用模型算法接口,部署等多层。

后端管理系统:管理员对安卓端的商家、客户进行管理。

安卓:

  • 用户可以在安卓手机端浏览生鲜品类
  • 商家可以在安卓手机端发布商品

模型训练及搭建

  • 使用开源模型——ChatGLM-6B

爬取数据:核心涉及到js逆向

2 各模块技术实现

2.1 一键生成菜谱功能

目标:根据用户购物车中的食材信息,通过自己部署的 ChatGLM-6B 模型生成个性化的菜谱并展示给用户。

技术方案:

  • 前端技术(安卓):
    • 编程语言:使用 Java 进行安卓应用开发。
    • UI 设计:采用 XML 布局来设计用户界面。
    • 弹框显示:使用 AlertDialog 弹框来展示生成菜谱的过程,以增强用户体验。
    • 接口请求:前端通过 RESTful API 向后端发送请求,传递购物车中的食材数据,并等待生成的菜谱内容。
  • 后端技术:
    • 编程语言:后端使用Java和 Spring Boot 构建 RESTful API。
    • 与 ChatGLM-6B 模型集成
      • API 接口:后端通过 HTTP 请求将食材数据传递给部署的 ChatGLM-6B 模型,模型返回生成的菜谱内容。
    • MySQL 数据存储:使用 MySQL 数据库存储用户数据,以及菜品,名称,价格等。

流程:

  1. 用户选择食材:用户在安卓应用中选择食材并添加到购物车。
  2. 生成推荐食谱:前端通过 RESTful API 向后端发送请求,传递购物车中的食材数据。
  3. 后端请求 ChatGLM-6B 模型:后端接收食材数据后,将其通过 HTTP 请求传递给部署的 ChatGLM-6B 模型接口。使用 HttpURLConnection 发起 HTTP 请求。
  4. ChatGLM-6B 模型生成菜谱:模型根据传入的食材数据,生成详细的食谱内容(包括菜名、食材等)。
  5. 返回生成的食谱:后端收到模型返回的菜谱数据后,将其以 JSON 格式 返回给前端。
  6. 展示菜谱:前端接收到菜谱数据后,展示生成的菜谱内容,弹窗显示展示详细信息。

2.2 ChatGLM-6B 模型集成

目标:生成个性化的菜谱。

技术方案:

  • 后端与模型通信
    • ChatGLM-6B 模型暴露 API 接口供后端调用。
    • 使用 JSON 格式在前后端和模型之间传递数据,保证数据结构一致性。
  • 模型训练与调优
    • 使用爬取的食谱数据,对 ChatGLM-6B 进行了微调训练
  • 集成方式
    • 后端调用 API:后端通过 Java 代码发送 HTTP 请求,将用户购物车数据传给模型。
    • 模型生成菜谱:模型处理请求并生成菜谱后,返回包含菜谱内容的 JSON 数据,后端将该数据转发给前端展示。

流程:

  1. 生成请求:后端将用户的购物车数据转换为模型所需的输入格式(如食材名称、数量、价格等)。
  2. 调用模型接口:后端发起 HTTP 请求,传递数据到 ChatGLM-6B 模型接口,模型根据输入生成菜谱。
  3. 返回生成结果:模型返回的菜谱信息包含菜名、食材、步骤等内容,后端将这些数据包装为 JSON 格式 并传递给前端。
  4. 前端展示菜谱:前端接收到菜谱数据后,展示在界面中。

2.3 异步处理与生成过程

目标:保证菜谱生成过程不阻塞主线程,提升用户体验。

技术方案:

  • 前端异步请求
    • 使用 Coroutines处理后台请求,确保 UI 线程不被阻塞。
    • 使用 OkHttp 发起网络请求,结合协程来处理请求,避免 UI 界面卡顿。
  • 后端异步处理
    • 后端通过 Spring Boot 提供的 @Async 注解实现异步调用,避免请求阻塞。

流程:

  1. 异步请求:前端触发请求后,后台执行异步任务生成菜谱。
  2. 后台生成:后端异步调用 ChatGLM-6B 模型进行菜谱生成。
  3. 结果返回:生成完毕后,后端将菜谱数据通过回调或轮询返回前端,前端更新界面。

自己分工:

这次团队任务中我负责的是android端代码的编写,实现用户的登陆功能,以及页面信息的展示,包括商品的信息、用户的个人信息等,并在android的res文件夹中通过xml文件实现页面的布局

1、登录功能

`MemberUserUtils.getUid(this)` 和 `MemberUserUtils.getName(this)` 负责管理登录状态和用户数据的读取。
// 获取当前用户ID和姓名
params.put("orderUserId", MemberUserUtils.getUid(this));
params.put("orderUserName", MemberUserUtils.getName(this));

// 判断用户是否已登录
if (TextUtils.isEmpty(MemberUserUtils.getUid(this))) {
    ToastUtil.ShowCentre(this, "请先登录");
    return;
}

// 登录成功后的跳转处理
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
finish();

2、商品展示功能

  • mtvNamemtvMsg 分别显示商品的名称和价格,通过 shopModel.getShopName()shopModel.getShopMoney() 获取商品的信息。

  • shopModel 是一个包含商品信息的对象,负责显示商品的详细信息。

    // 从 Intent 中获取商品信息
    shopModel = (ShopModel) this.getIntent().getSerializableExtra("msg");
    if (shopModel != null) {
        mtvName.setText(shopModel.getShopName());  // 显示商品名称
        mtvMsg.setText(shopModel.getShopMoney() + "元");  // 显示商品价格
        Glide.with(this).load(shopModel.getShopImage()).into(mivShopImage);  // 加载商品图片
    } else {
        ToastUtil.ShowCentre(this, "商品信息加载失败");
    }
    

    通过 shopModel 实例获取商品的名称和价格,然后将其显示在相应的视图中。

3、个人信息栏

个人信息通过 MemberUserUtils 获取,以下代码展示了用户信息的显示:

// 显示用户个人信息
private void displayUserInfo() {
    String userName = MemberUserUtils.getName(this);
    String userId = MemberUserUtils.getUid(this);
    mtvUserName.setText(userName != null ? userName : "未登录");
    mtvUserId.setText(userId != null ? "用户ID:" + userId : "未绑定ID");
}

// 更新用户信息
private void updateUserInfo(String newUserName, String newUserId) {
    MemberUserUtils.setName(this, newUserName);
    MemberUserUtils.setUid(this, newUserId);
    ToastUtil.ShowCentre(this, "个人信息已更新");
}

4、支付部分功能

配送地址输入

// 检查配送地址是否为空
if (TextUtils.isEmpty(mtvAddress.getText().toString())) {
    ToastUtil.ShowCentre(this, "请输入配送地址");
    return;
}

Gitee文件夹链接
https://gitee.com/jyppx000/data-collection-and-fusion

心得体会

在这个任务中我学习了多模态数据处理的流程,了解了处理不同模态数据的模型和算法,同时也了解了项目的编写和部署过程,也学习了前端如何与后端交互,数据如何爬取等知识,受益匪浅。

posted @ 2024-12-15 22:27  菜鸟bird  阅读(13)  评论(0编辑  收藏  举报