Penny Lens 系统架构
🏗️ 整体架构
系统组成
Penny Lens 是一个基于复式记账法的家庭财务管理系统,由三个核心组件构成:
1. Penny Lens PC (桌面端)
- 技术栈: Nuxt 4 + Vue 3 + TypeScript + Ant Design Vue + UnoCSS
- 功能: 完整的财务管理功能,包括记账、资产管理、预算控制、统计分析等
- 特点: 功能最全面,适合深度财务管理和数据分析
2. Penny Lens Frontend (移动端)
- 技术栈: UniApp + Vue 3 + TypeScript + wot-design-uni + Pinia
- 功能: 移动端财务管理,支持多平台部署(微信小程序、支付宝小程序、H5、App)
- 特点: 跨平台支持,移动端优化,适合日常记账和快速操作
3. Penny Lens Serverless (服务端)
- 技术栈: 支付宝小程序云 Serverless + TypeScript + MongoDB
- 功能: 统一的后端服务,提供API接口、数据存储、业务逻辑处理
- 特点: 云原生架构,高可用性,自动扩缩容
架构图
┌─────────────────────────────────────────────────────────────────┐│ Penny Lens 系统架构 │├─────────────────────────────────────────────────────────────────┤│ ││ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ││ │ PC 客户端 │ │ 移动端客户端 │ │ 服务端 │ ││ │ │ │ │ │ │ ││ │ Nuxt 4 │ │ UniApp │ │ Serverless │ ││ │ Vue 3 │ │ Vue 3 │ │ TypeScript │ ││ │ TypeScript │ │ TypeScript │ │ MongoDB │ ││ │ Ant Design │ │ wot-design │ │ JWT Auth │ ││ │ UnoCSS │ │ Pinia │ │ Cloud Function │ ││ │ Pinia │ │ Iconify │ │ Scheduled Jobs │ ││ │ ECharts │ │ Multi-Platform│ │ Encryption │ ││ └─────────────────┘ └─────────────────┘ └─────────────────┘ ││ │ │ │ ││ │ │ │ ││ └────────────────────────┼────────────────────────┘ ││ │ ││ ┌─────────────────────────────────────────────────────────────────┐ ││ │ 统一后端 API 服务 │ ││ │ │ ││ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────┐ │ ││ │ │ 用户管理 │ │ 资产管理 │ │ 记账管理 │ │ 统计报表 │ │ ││ │ │ User API │ │ Asset API │ │Accounting API│ │Stats API│ │ ││ │ └─────────────┘ └─────────────┘ └─────────────┘ └─────────┘ │ ││ │ │ ││ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────┐ │ ││ │ │ 预算管理 │ │ 订阅管理 │ │ 储蓄游戏 │ │ 短链接 │ │ ││ │ │ Budget API │ │Subscription │ │ Savings API │ │Short API│ │ ││ │ └─────────────┘ └─────────────┘ └─────────────┘ └─────────┘ │ ││ └─────────────────────────────────────────────────────────────────┘ ││ ││ ┌─────────────────────────────────────────────────────────────────┐ ││ │ 数据存储层 │ ││ │ │ ││ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────┐ │ ││ │ │ 用户数据 │ │ 资产数据 │ │ 记账数据 │ │ 其他数据 │ │ ││ │ │ Users │ │ Assets │ │ Accounting │ │ Others │ │ ││ │ └─────────────┘ └─────────────┘ └─────────────┘ └─────────┘ │ ││ └─────────────────────────────────────────────────────────────────┘ │└─────────────────────────────────────────────────────────────────┘🔄 数据流架构
数据流向
用户操作 → 客户端 → API网关 → 云函数 → 数据库 ↓ ↓ ↓ ↓ ↓ 界面交互 数据验证 路由分发 业务逻辑 数据存储 ↓ ↓ ↓ ↓ ↓ 用户反馈 状态管理 权限验证 数据处理 数据同步数据同步
实时同步
- 用户操作: 用户操作实时同步到数据库
- 状态更新: 客户端状态实时更新
- 数据一致性: 保证数据一致性
批量同步
- 定时任务: 定时同步数据
- 数据备份: 定期数据备份
- 统计分析: 定期统计分析
🔐 认证架构
统一认证
JWT Token 认证
// 认证流程
1. 用户登录 → 验证凭据 → 生成JWT Token
2. 客户端存储Token → 请求时携带Token
3. 服务端验证Token → 返回用户信息
4. Token过期 → 刷新Token或重新登录多端认证
- PC端: 用户名/密码登录
- 移动端: 第三方登录(微信、支付宝)
- 统一用户: 同一用户多端数据同步
权限控制
角色权限
- 普通用户: 基础功能权限
- 高级用户: 高级功能权限
- 管理员: 系统管理权限
功能权限
- 记账权限: 记账功能权限
- 资产管理: 资产管理权限
- 统计分析: 统计分析权限
- 系统设置: 系统设置权限
📊 业务架构
核心业务模块
1. 用户管理模块
- 用户注册: 用户注册和验证
- 用户登录: 用户登录和认证
- 用户信息: 用户信息管理
- 权限控制: 用户权限管理
2. 资产管理模块
- 资产类型: 现金、银行卡、投资等
- 资产操作: 资产增删改查
- 余额管理: 资产余额计算
- 资产统计: 资产统计分析
3. 记账管理模块
- 收入记账: 收入记录管理
- 支出记账: 支出记录管理
- 转账记账: 转账记录管理
- 记账统计: 记账统计分析
4. 预算管理模块
- 预算设置: 预算目标设置
- 预算监控: 预算执行监控
- 预算分析: 预算分析报告
- 预算提醒: 预算超支提醒
5. 统计分析模块
- 收支统计: 收支统计分析
- 资产统计: 资产统计分析
- 趋势分析: 财务趋势分析
- 报表生成: 财务报表生成
6. 订阅管理模块
- 订阅设置: 订阅服务设置
- 订阅监控: 订阅状态监控
- 订阅提醒: 订阅到期提醒
- 订阅统计: 订阅统计分析
7. 储蓄游戏模块
- 虚拟交易: 虚拟股票交易
- 排行榜: 用户排行榜
- 游戏统计: 游戏数据统计
- 奖励系统: 游戏奖励系统
8. 短链接模块
- 链接生成: 短链接生成
- 链接管理: 短链接管理
- 访问统计: 链接访问统计
- 链接分析: 链接效果分析
🔧 技术架构
前端架构
PC端架构
┌─────────────────────────────────────────────────────────────┐│ Penny Lens PC 架构 │├─────────────────────────────────────────────────────────────┤│ ││ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ ││ │ 页面层 │ │ 组件层 │ │ 服务层 │ ││ │ │ │ │ │ │ ││ │ Dashboard │ │ StatCard │ │ User API │ ││ │ Assets │ │ AssetCard │ │ Asset API │ ││ │ Accounting │ │ Transaction │ │ Budget API │ ││ │ Budget │ │ BudgetForm │ │ Stats API │ ││ │ Statistics │ │ Chart │ │ ... │ ││ └─────────────────┘ └─────────────────┘ └─────────────┘ ││ │ │ │ ││ └────────────────────────┼────────────────┘ ││ │ ││ ┌─────────────────────────────────────────────────────────┐ ││ │ 状态管理层 │ ││ │ │ ││ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ ││ │ │ User Store │ │ Asset Store │ │ App Store │ │ ││ │ │ (Pinia) │ │ (Pinia) │ │ (Pinia) │ │ ││ │ └─────────────┘ └─────────────┘ └─────────────┘ │ ││ └─────────────────────────────────────────────────────────┘ │└─────────────────────────────────────────────────────────────┘移动端架构
┌─────────────────────────────────────────────────────────────┐│ Penny Lens Frontend 架构 │├─────────────────────────────────────────────────────────────┤│ ││ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ ││ │ 页面层 │ │ 组件层 │ │ 服务层 │ ││ │ │ │ │ │ │ ││ │ Dashboard │ │ StatCard │ │ User API │ ││ │ Assets │ │ AssetCard │ │ Asset API │ ││ │ Accounting │ │ Transaction │ │ Budget API │ ││ │ Budget │ │ BudgetForm │ │ Stats API │ ││ │ Statistics │ │ Chart │ │ ... │ ││ └─────────────────┘ └─────────────────┘ └─────────────┘ ││ │ │ │ ││ └────────────────────────┼────────────────┘ ││ │ ││ ┌─────────────────────────────────────────────────────────┐ ││ │ 状态管理层 │ ││ │ │ ││ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ ││ │ │ User Store │ │ Asset Store│ │ App Store │ │ ││ │ │ (Pinia) │ │ (Pinia) │ │ (Pinia) │ │ ││ │ └─────────────┘ └─────────────┘ └─────────────┘ │ ││ └─────────────────────────────────────────────────────────┘ │└─────────────────────────────────────────────────────────────┘后端架构
服务端架构
┌─────────────────────────────────────────────────────────────┐│ Penny Lens Serverless 架构 │├─────────────────────────────────────────────────────────────┤│ ││ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ ││ │ 控制器层 │ │ 服务层 │ │ 数据层 │ ││ │ │ │ │ │ │ ││ │ UserController│ │ UserService │ │ MongoDB │ ││ │ AssetController│ │ AssetService │ │ Collections│ ││ │ AccountingCtrl │ │ AccountingSvc │ │ Indexes │ ││ │ BudgetController│ │ BudgetService │ │ Transactions│ ││ │ ... │ │ ... │ │ ... │ ││ └─────────────────┘ └─────────────────┘ └─────────────┘ ││ │ │ │ ││ └────────────────────────┼────────────────┘ ││ │ ││ ┌─────────────────────────────────────────────────────────┐ ││ │ 云函数层 │ ││ │ │ ││ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ ││ │ │ 路由处理 │ │ 权限验证 │ │ 异常处理 │ │ ││ │ │ Router │ │ Auth │ │ Exception │ │ ││ │ └─────────────┘ └─────────────┘ └─────────────┘ │ ││ └─────────────────────────────────────────────────────────┘ │└─────────────────────────────────────────────────────────────┘🔄 集成架构
客户端集成
数据同步
- 实时同步: 用户操作实时同步
- 离线同步: 离线数据同步
- 冲突解决: 数据冲突解决
状态管理
- 统一状态: 多端状态统一
- 状态同步: 状态实时同步
- 状态持久化: 状态本地持久化
服务端集成
API集成
- 统一接口: 统一的API接口
- 版本管理: API版本管理
- 接口文档: 完整的接口文档
数据集成
- 数据模型: 统一的数据模型
- 数据验证: 数据验证和清理
- 数据转换: 数据格式转换
📊 性能架构
性能优化
前端性能
- 代码分割: 按需加载代码
- 缓存策略: 合理的缓存策略
- 资源优化: 资源压缩和优化
- 懒加载: 组件和路由懒加载
后端性能
- 数据库优化: 数据库查询优化
- 缓存机制: 数据缓存机制
- 异步处理: 异步任务处理
- 负载均衡: 负载均衡策略
监控架构
系统监控
- 性能监控: 系统性能监控
- 错误监控: 错误日志监控
- 资源监控: 资源使用监控
- 业务监控: 业务指标监控
告警机制
- 实时告警: 实时告警机制
- 分级告警: 分级告警策略
- 告警处理: 告警处理流程
- 告警恢复: 告警恢复机制
🔒 安全架构
安全策略
数据安全
- 数据加密: 敏感数据加密
- 传输安全: 数据传输安全
- 存储安全: 数据存储安全
- 访问控制: 数据访问控制
系统安全
- 身份认证: 用户身份认证
- 权限控制: 细粒度权限控制
- 安全审计: 安全操作审计
- 漏洞防护: 安全漏洞防护
合规性
数据合规
- 数据保护: 用户数据保护
- 隐私政策: 隐私政策合规
- 数据删除: 数据删除机制
- 数据导出: 数据导出功能
安全合规
- 安全标准: 安全标准合规
- 安全测试: 安全测试验证
- 安全培训: 安全培训教育
- 安全审计: 安全审计检查
🚀 部署架构
部署策略
环境管理
- 开发环境: 开发测试环境
- 测试环境: 功能测试环境
- 预生产环境: 生产环境预演
- 生产环境: 正式生产环境
部署方式
- 蓝绿部署: 零停机部署
- 灰度发布: 逐步发布策略
- 回滚机制: 快速回滚机制
- 监控告警: 部署监控告警
运维架构
运维管理
- 自动化运维: 自动化运维流程
- 监控告警: 全面监控告警
- 日志管理: 日志收集分析
- 备份恢复: 数据备份恢复
运维工具
- 监控工具: 系统监控工具
- 日志工具: 日志分析工具
- 部署工具: 自动化部署工具
- 测试工具: 自动化测试工具
📈 扩展架构
功能扩展
模块化设计
- 插件系统: 可扩展的插件系统
- 模块化: 模块化功能设计
- 接口标准化: 标准化接口设计
- 版本兼容: 版本兼容性管理
第三方集成
- 银行接口: 银行API集成
- 支付接口: 支付服务集成
- 数据源: 外部数据源集成
- 服务集成: 第三方服务集成
技术扩展
技术升级
- 框架升级: 技术框架升级
- 工具升级: 开发工具升级
- 服务升级: 云服务升级
- 安全升级: 安全机制升级
架构演进
- 微服务化: 微服务架构演进
- 容器化: 容器化部署
- 云原生: 云原生架构
- 智能化: AI和机器学习集成
重要提醒:
- 保持架构的一致性和可扩展性
- 确保各组件间的良好协作
- 持续优化系统性能和用户体验
- 建立完善的监控和运维体系
- 关注安全性和合规性要求
