--- title: 家庭管理系统 date: 2026-06-04 --- # 一、项目背景   针对家庭信息分散、难以统一管理的问题,设计并实现了一套移动端家庭管理平台,将账单、旅行、健康、纪念日等数据进行集中管理,并通过私有化部署与数据加密保障安全,实现家庭生活的数字化沉淀。 # 二、系统架构 # 三、核心模块 - **账单记录** ![账单记录](../images/sweethut_bill.jpg) - **美食记录** - **旅行记录** - **物品管理** - **运动健康** - **纪念日管理** - **家庭资产** - **密码管家** - **奖状证书** - **时光手账** # 四、技术栈 | 层级 | 技术 | |---|---| | **前端** | Vue 3、Vant、Vue Router、Pinia、Axios | | **后端** | Spring Boot 3、Spring MVC、Satoken、MyBatis‑Plus | | **中间件** | Express +Sharp(图片缩略图)、Quartz(定时任务) | | **存储** | MySQL 8.0(业务数据)、AList(图片/视频对象存储) | | **视频处理** | Java JAVE2 (FFmpeg 封装,视频压缩转码) | | **安全** | AES 数据加密 | | **移动端** | Flutter(WebView 封装为 Android APK) | | **运维** | Docker、Nginx、Fluent Bit (日志采集)、OpenObserver (日志可视化) | # 五、核心设计 - 基于 **Spring Boot 3 + MyBatis‑Plus** 构建稳定的后端架构,通过 **Sa‑Token** 实现接口级鉴权,保障系统安全与权限可控。 - 所有敏感信息(密码、资产等)均使用 **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 对敏感字段进行加密存储,密钥与应用配置隔离管理,服务端统一加解密。