Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DreamYou Backend

梦友 / 梦貘儿童睡眠监护灯后端服务。
这是我在 2025 年 3 月 - 4 月 完成的软硬件结合产品 Demo 后端,用于支持一款面向家长的儿童睡眠监护灯:设备采集睡眠环境与人体状态数据,后端负责数据接入、用户与设备管理、睡眠记录查询、异常事件模拟,以及结合儿童睡眠数据和医学资料的 AI 问答。

项目定位:课程产品 Demo / 后端原型,不是医疗诊断系统。

项目简介

梦友是一款以中国神兽“梦貘”为概念的儿童床头灯产品。它在白天作为普通床头灯使用,夜间进入睡眠呵护模式,通过声光引导孩子入睡,并结合温湿度、噪声、红外、雷达、振动、触摸等传感器数据,辅助判断孩子的睡眠阶段和异常情况。

后端主要服务于 App 与硬件设备:

  • 接收 ESP32 设备通过 MQTT 上报的传感器数据
  • 为 App 提供用户认证、设备绑定、实时数据、睡眠记录等 RESTful API
  • 支持睡眠模式演示模拟,包括浅睡、深睡、REM、异常警报等状态
  • 提供儿童睡眠知识 AI 问答:结合用户睡眠数据、PubMed 检索结果与 DeepSeek 模型生成回答

技术栈

分类 技术
后端框架 Spring Boot 3.4.4
语言与构建 Java 17, Maven
数据访问 Spring Data JPA, Hibernate
数据库 MySQL
认证 Spring Security, JWT, BCrypt
设备通信 Spring Integration MQTT, Eclipse Paho
AI 接入 WebClient, SSE, SiliconFlow + DeepSeek
外部知识 MCP PubMed 服务
API 文档 springdoc-openapi / Swagger UI
其他 Lombok, Bean Validation, 全局异常处理

后端架构

项目采用典型的 Spring Boot 分层架构:

App / Web Client
    |
    | REST API / SSE
    v
Controller 层
    | 处理请求、参数校验、统一响应
    v
Service 层
    | 核心业务逻辑:认证、模拟、AI 问答、设备数据处理
    v
Repository 层
    | Spring Data JPA 数据访问
    v
MySQL

ESP32 Device
    |
    | MQTT: devices/{deviceUuid}/sensors
    v
MqttConfig -> MqttService -> SensorDataRepository

主要包结构:

src/main/java/com/dreamyou
├── config        # Security、MQTT、OpenAPI、WebClient、CORS 等配置
├── controller    # REST API 与 SSE 接口
├── service       # 业务接口
├── service/impl  # 业务实现
├── repository    # JPA Repository
├── entity        # 用户、传感器、睡眠记录、AI 会话等实体
├── dto           # 请求与响应 DTO
├── security      # JWT 过滤器与用户认证适配
├── exception     # 业务异常与全局异常处理
└── enums         # 睡眠状态、事件类型、异常类型枚举

核心功能

用户与认证

  • 用户注册、登录、临时用户创建
  • JWT 无状态认证
  • 当前用户信息查询
  • 儿童信息、设备绑定、睡眠呵护时间段等用户设置管理

设备与传感器数据

  • 订阅 MQTT 主题 devices/{deviceUuid}/sensors
  • 解析设备上报的温度、湿度、噪声等数据并持久化
  • 提供指定设备的最新传感器数据查询接口

睡眠记录与事件

  • 查询当前用户的历史睡眠记录
  • 查询最近 N 天睡眠数据
  • 查询指定日期的睡眠记录
  • 查询睡眠过程中的状态变化和异常事件

演示模拟

  • 开始 / 结束睡眠模式模拟
  • 更新当前睡眠状态
  • 触发轻度或重度睡眠异常警报
  • 返回睡眠时长、阶段占比、异常摘要、环境数据等演示结果

AI 儿童睡眠问答

  • 创建和查询 AI 会话
  • 分页获取历史消息
  • 通过 SSE 流式返回 AI 回答进度与内容
  • 问答流程会读取用户近 7 天睡眠记录,调用 PubMed MCP 服务检索资料,再调用 DeepSeek 模型生成回答

API 概览

模块 方法与路径 说明
健康检查 GET /api/test/health 服务健康检查
认证 POST /api/auth/register 用户注册
认证 POST /api/auth/login 用户登录并返回 JWT
认证 POST /api/auth/registerTemporary 创建演示用临时用户
用户 GET /api/users/me 获取当前用户信息
用户 PUT /api/users/profile 更新用户资料
用户 PUT /api/users/settings 更新设备绑定和睡眠模式设置
设备 GET /api/device/latestSensorData/{deviceUuid} 获取设备最新传感器数据
睡眠记录 GET /api/sleep-records 分页查询睡眠记录
睡眠记录 GET /api/sleep-records/date/{date} 查询指定日期记录
睡眠记录 GET /api/sleep-records/recent?days=7 查询最近 N 天记录
睡眠事件 GET /api/sleep-events/user/{userId} 查询某天睡眠事件
睡眠事件 GET /api/sleep-events/user/{userId}/type/{eventType} 按事件类型查询
模拟 POST /api/simulation/start/{userId} 开始睡眠模拟
模拟 POST /api/simulation/end/{userId} 结束睡眠模拟并生成总结
模拟 POST /api/simulation/updateState/{userId} 更新模拟睡眠状态
模拟 POST /api/simulation/triggerAlert/{userId}/{alertType} 触发异常警报
模拟 GET /api/simulation/status/{userId} 获取当前模拟状态
AI 会话 POST /api/ai/conversations 创建新会话
AI 会话 GET /api/ai/conversations 查询当前用户会话列表
AI 会话 GET /api/ai/conversations/{conversationUuid}/messages 分页查询会话消息
AI 聊天 GET /api/ai/chat/stream/{conversationUuid}?userInput=... SSE 流式 AI 问答

本地运行

1. 准备环境

  • JDK 17+
  • MySQL 8+
  • Maven Wrapper 已包含在项目中
  • 可选:本地 MQTT Broker,例如 Mosquitto
  • 可选:PubMed MCP 服务与 SiliconFlow API Key,用于 AI 问答链路

2. 创建数据库

CREATE DATABASE IF NOT EXISTS mengmo_db
  DEFAULT CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

启动后,JPA 会根据实体配置更新本地数据库表结构。

3. 配置环境变量

项目默认读取环境变量,避免把密钥提交到仓库:

DB_URL=jdbc:mysql://localhost:3306/mengmo_db?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf-8&createDatabaseIfNotExist=true
DB_USERNAME=root
DB_PASSWORD=your_mysql_password
JWT_SECRET=replace-with-your-own-secret
MQTT_BROKER_URL=tcp://localhost:1883
MCP_URL=http://localhost:8005
SILICONFLOW_API_KEY=your_siliconflow_api_key

4. 启动服务

./mvnw spring-boot:run

Windows:

.\mvnw.cmd spring-boot:run

默认端口:8082

Swagger UI:

http://localhost:8082/swagger-ui/index.html

项目状态

这是 2025 年 3 月 - 4 月完成的产品 Demo 后端,重点是验证“硬件采集 + App 展示 + 睡眠记录 + AI 科普问答”的完整链路。当前代码适合作为作品集项目展示,也可以作为后续继续完善真实设备接入、算法判断和移动端体验的基础。

About

DreamYou / 梦貘儿童睡眠监护灯 Spring Boot 后端 Demo

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages