logo
Public
0
0
WeChat Login

K-XYZ 智能餐盒后端

基于 Golang 的智能餐盒 IoT + AI 营养管理系统后端服务

项目简介

K-XYZ 智能餐盒系统通过 ESP32 硬件设备采集用户进食数据,结合 AI 大模型提供个性化营养建议,并支持社区化健康数据共享。

核心功能

  • IoT 数据采集:ESP32 设备实时上报各分格重量数据,状态机智能识别就餐行为
  • AI 营养引擎:基于大模型的菜品识别、卡路里计算与个性化营养点评
  • 社区健康看板:用户圈子管理、社区级饮食数据聚合与可视化大屏
  • 数据可视化:个人饮食图表、就餐时序轨迹回放、增量查询与降采样

技术栈

  • 语言: Go 1.22
  • Web 框架: Gin
  • ORM: GORM
  • 数据库: MySQL 8.0
  • 缓存: Redis 7
  • 认证: JWT (golang-jwt/jwt)

快速开始

前置要求

  • Go 1.22+
  • Docker & Docker Compose

1. 启动基础设施

# 拉取镜像 docker pull mysql:8.0 docker pull redis:7-alpine # 启动 MySQL(请自定义密码) docker run -d --name kxyz-mysql \ -e MYSQL_ROOT_PASSWORD=your-mysql-password \ -e MYSQL_DATABASE=kxyz \ -p 3306:3306 mysql:8.0 # 启动 Redis docker run -d --name kxyz-redis \ -p 6379:6379 redis:7-alpine # 若容器已存在,直接启动 docker start kxyz-mysql kxyz-redis

2. 配置环境变量

PowerShell:

$env:HTTP_PORT="8080" $env:MYSQL_DSN="root:your-mysql-password@tcp(127.0.0.1:3306)/kxyz?charset=utf8mb4&parseTime=True&loc=Local" $env:REDIS_ADDR="127.0.0.1:6379" $env:REDIS_PASSWORD="" $env:REDIS_DB="0" $env:JWT_SECRET="your-jwt-secret" # 请自定义 $env:AI_BASE_URL="https://api.openai.com/v1" $env:AI_MODEL="gpt-4" $env:AI_API_KEY="your-ai-api-key" # 请自定义 $env:AI_TEMPERATURE="0.7"

Linux/macOS:

export HTTP_PORT="8080" export MYSQL_DSN="root:your-mysql-password@tcp(127.0.0.1:3306)/kxyz?charset=utf8mb4&parseTime=True&loc=Local" export REDIS_ADDR="127.0.0.1:6379" export REDIS_PASSWORD="" export REDIS_DB="0" export JWT_SECRET="your-jwt-secret" # 请自定义 export AI_BASE_URL="https://api.openai.com/v1" export AI_MODEL="gpt-4" export AI_API_KEY="your-ai-api-key" # 请自定义 export AI_TEMPERATURE="0.7"

3. 启动服务

go run ./cmd/server

4. 健康检查

curl http://127.0.0.1:8080/api/v1/ping

预期响应:

{ "message": "pong", "timestamp": "2026-03-20T09:10:37Z" }

项目结构

. ├── cmd/server/ # 应用入口 ├── internal/ │ ├── api/ # HTTP 处理器 │ ├── config/ # 配置加载 │ ├── middleware/ # 中间件(JWT 认证等) │ ├── model/ # 数据模型 │ ├── server/ # 路由配置 │ ├── service/ # 业务逻辑层 │ └── store/ # 数据访问层 └── scripts/ # 部署脚本

API 概览

认证相关

  • POST /api/v1/auth/register - 用户注册
  • POST /api/v1/auth/login - 用户登录

设备管理

  • POST /api/v1/devices/bind - 绑定设备
  • GET /api/v1/devices - 查询已绑定设备
  • DELETE /api/v1/devices/{device_id} - 解绑设备

硬件数据

  • POST /api/v1/hardware/telemetry - 遥测数据上报(ESP32)

就餐数据

  • GET /api/v1/meals - 历史用餐列表
  • GET /api/v1/meals/{meal_id} - 用餐详情
  • PUT /api/v1/meals/{meal_id}/foods - 上传菜品信息
  • GET /api/v1/meals/{meal_id}/trajectory - 就餐轨迹数据
  • GET /api/v1/users/me/statistics/charts - 个人饮食图表

AI 服务

  • GET /api/v1/users/me/ai-advice - 获取 AI 营养建议

社区功能

  • POST /api/v1/communities/create - 创建社区
  • POST /api/v1/communities/{community_id}/join - 加入社区
  • GET /api/v1/communities - 我的社区列表
  • GET /api/v1/communities/{community_id}/dashboard - 社区大屏数据

测试

go test ./...

License

MIT

About

K-XYZ团队的后端API服务器

Language
Go94.3%
Shell0.2%
Dockerfile0.2%
Others5.3%