Files
blog-press/docs/Practice/Personal/SweetHut.md

65 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 家庭管理系统
date: 2026-06-04
---
# 一、项目背景
  针对家庭信息分散、难以统一管理的问题,设计并实现了一套移动端家庭管理平台,将账单、旅行、健康、纪念日等数据进行集中管理,并通过私有化部署与数据加密保障安全,实现家庭生活的数字化沉淀。
# 二、系统架构
# 三、核心模块
- **账单记录**
![账单记录](../images/sweethut_bill.jpg)
- **美食记录**
- **旅行记录**
- **物品管理**
- **运动健康**
- **纪念日管理**
- **家庭资产**
- **密码管家**
- **奖状证书**
- **时光手账**
# 四、技术栈
| 层级 | 技术 |
|---|---|
| **前端** | Vue 3、Vant、Vue Router、Pinia、Axios |
| **后端** | Spring Boot 3、Spring MVC、Satoken、MyBatisPlus |
| **中间件** | Express +Sharp图片缩略图、Quartz定时任务 |
| **存储** | MySQL 8.0业务数据、AList图片/视频对象存储) |
| **视频处理** | Java JAVE2 (FFmpeg 封装,视频压缩转码) |
| **安全** | AES 数据加密 |
| **移动端** | FlutterWebView 封装为 Android APK |
| **运维** | Docker、Nginx、Fluent Bit (日志采集)、OpenObserver (日志可视化) |
# 五、核心设计
- 基于 **Spring Boot 3 + MyBatisPlus** 构建稳定的后端架构,通过 **SaToken** 实现接口级鉴权,保障系统安全与权限可控。
- 所有敏感信息(密码、资产等)均使用 **AES 对称加密** 存储,防止数据库泄露导致隐私暴露。
- 使用 **Node.js + Sharp** 搭建图片服务,移动端优先加载缩略图,点击后按需加载原图,显著优化首屏性能。
- 视频资源上传后通过 **JAVE2 + FFmpeg** 压缩并转码,在保证清晰度的前提下减小体积。
- 基于 **Quartz** 实现定时任务,用于纪念日提醒等场景。
- 前端基于 **Vue 3 + Element Plus + Vant + Pinia** 开发移动端页面,并使用 **Flutter WebView** 将 Web 应用封装为 Android APK实现一套代码多端使用。
- 使用 **Docker + Nginx** 部署,结合 **Fluent Bit + OpenObserver** 构建统一日志监控体系,提升系统可观测性与运维效率。
# 六、难点 / 亮点
## 6.1 图片资源加载性能优化
- **问题**:手机拍摄的照片体积较大,移动端直接加载原图导致页面卡顿、流量消耗大。
- **方案**:使用 **Node.js + Sharp** 构建图片实时处理服务通过路径参数实时获取压缩图片默认加载缩略图点击后加载原图并配合lazy懒加载优化首屏加载时间。
## 6.2 视频资源压缩与存储
- **问题**:手机视频多为高清录制,体积大、加载慢,直接存储与播放影响用户体验。
- **方案**:使用 **JAVE2 + FFmpeg** 在上传时将视频统一压缩并转码,减少视频空间。
## 6.3 敏感数据加密存储
- **问题**:密码、资产等数据高度敏感,若数据库被攻破将造成严重隐私泄露。
- **方案**:采用 AES 对敏感字段进行加密存储,密钥与应用配置隔离管理,服务端统一加解密。