3.2 KiB
3.2 KiB
title, date
| title | date |
|---|---|
| 家庭管理系统 | 2026-06-04 |
一、项目背景
针对家庭信息分散、难以统一管理的问题,设计并实现了一套移动端家庭管理平台,将账单、旅行、健康、纪念日等数据进行集中管理,并通过私有化部署与数据加密保障安全,实现家庭生活的数字化沉淀。
二、系统架构
三、核心模块
四、技术栈
| 层级 | 技术 |
|---|---|
| 前端 | 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 对敏感字段进行加密存储,密钥与应用配置隔离管理,服务端统一加解密。

