Penny Lens 移动端技术架构
🎯 产品定位
Penny Lens 小程序端是一款基于 UniApp 框架开发的跨平台记账应用,专为移动端用户设计,提供便捷的财务管理服务。通过简化的记账流程和直观的用户界面,帮助用户实现个人财务的透明化管理。
✨ 核心价值
1. 快速记账体验
- 简化流程:一键记账,快速记录收支
- 智能分类:自动分类推荐,减少操作步骤
- 批量操作:支持批量记账和编辑
- 离线记账:无网络环境下也能记账
2. 多端同步
- 跨平台支持:微信小程序、支付宝小程序、H5、App
- 数据同步:多端数据实时同步
- 云端备份:数据安全备份和恢复
- 设备切换:无缝切换设备使用
3. 游戏化储蓄
- 存钱罐功能:游戏化的储蓄体验
- 虚拟交易:模拟投资和理财
- 目标管理:设定储蓄目标,激励存钱
- 成就系统:完成目标获得成就感
4. 基础财务管理
- 资产管理:多账户类型支持
- 收支统计:简化的数据统计
- 趋势分析:基础的趋势分析
- 报表生成:简单的财务报表
🏗️ 系统架构
🏗️ 系统架构
Penny Lens 小程序端采用现代化的跨平台技术栈,基于 UniApp + Vue 3 + TypeScript 构建,提供高性能、可扩展的移动端财务管理解决方案。
🛠️ 技术栈
核心框架
- UniApp - 跨平台应用开发框架
- Vue 3 - 渐进式 JavaScript 框架,Composition API
- TypeScript - 类型安全的 JavaScript 超集
UI 与样式
- wot-design-uni - 跨平台 UI 组件库
- UnoCSS - 原子化 CSS 引擎
- Iconify - 统一的图标库
状态管理与工具
开发工具
📁 项目结构
src/├── components/ # 公共组件│ ├── AppProvider/ # 应用提供者组件│ ├── AssetSelector/ # 资产选择器│ ├── Iconify/ # 图标组件│ ├── Keyboard/ # 键盘组件│ └── Prompt/ # 提示组件├── pages/ # 页面目录│ ├── accounting/ # 记账相关页面│ ├── assets/ # 资产管理页面│ ├── auth/ # 认证相关页面│ ├── averageCost/ # 平均成本页面│ ├── mine/ # 个人中心页面│ ├── savings/ # 储蓄页面│ ├── statistics/ # 统计页面│ └── template/ # 模板页面├── store/ # Pinia状态管理│ ├── app.ts # 应用状态│ ├── user.ts # 用户状态│ ├── asset.ts # 资产状态│ ├── accounting.ts # 记账状态│ ├── savings.ts # 储蓄状态│ └── global.ts # 全局状态├── services/ # API服务│ ├── api/ # API接口│ ├── asset.ts # 资产服务│ └── budget.ts # 预算服务├── utils/ # 工具函数│ ├── request.ts # 请求工具│ ├── cache.ts # 缓存工具│ ├── auth.ts # 认证工具│ └── ...├── types/ # TypeScript类型定义│ ├── user.ts # 用户类型│ ├── asset.ts # 资产类型│ ├── accounting.ts # 记账类型│ └── ...├── styles/ # 样式文件│ ├── main.css # 主样式文件│ └── ...├── hooks/ # Vue组合式API钩子│ ├── app/ # 应用钩子│ └── ...├── enums/ # 枚举定义│ ├── cacheEnum.ts # 缓存枚举│ ├── httpEnum.ts # HTTP枚举│ └── savingsEnum.ts # 储蓄枚举├── router/ # 路由配置│ ├── index.ts # 路由入口│ └── guard.ts # 路由守卫└── settings/ # 配置文件 └── encryptionSetting.ts # 加密设置🔧 核心功能模块
1. 认证模块
功能: 用户登录、注册、多平台认证
技术实现:
- JWT Token 认证
- 多平台登录支持(微信、支付宝)
- 自动 Token 刷新
- 本地数据加密
相关文件:
services/api/user.ts- 用户认证 APIstore/user.ts- 用户状态管理router/guard.ts- 路由守卫
2. 记账模块
功能: 快速记账、分类管理、批量操作
技术实现:
- 简化的记账流程
- 智能分类推荐
- 批量操作支持
- 离线记账
相关文件:
services/api/accounting.ts- 记账 APIstore/accounting.ts- 记账状态管理pages/accounting/- 记账相关页面
3. 资产管理模块
功能: 多账户管理、余额跟踪、资产变化
技术实现:
- 多账户类型支持
- 实时余额更新
- 资产变化追踪
- 转账功能
相关文件:
services/api/asset.ts- 资产 APIstore/asset.ts- 资产状态管理pages/assets/- 资产相关页面
4. 存钱罐模块
功能: 游戏化储蓄、虚拟交易、目标管理
技术实现:
- 储蓄目标设定
- 虚拟交易系统
- 成就系统
- 历史记录
相关文件:
services/api/savings.ts- 储蓄 APIstore/savings.ts- 储蓄状态管理pages/savings/- 储蓄相关页面
5. 统计模块
功能: 收支统计、趋势分析、报表生成
技术实现:
- 基础收支统计
- 分类统计
- 趋势分析
- 报表生成
相关文件:
services/api/statistics.ts- 统计 APIstore/statistics.ts- 统计状态管理pages/statistics/- 统计相关页面
🔄 数据流架构
状态管理
// 用户状态管理
export const useUserStore = defineStore('user', () => {
const userInfo = ref<UserInfo | null>(null)
const isLoggedIn = computed(() => !!userInfo.value)
const login = async (credentials: LoginCredentials) => {
// 登录逻辑
}
const logout = () => {
// 登出逻辑
}
return {
userInfo,
isLoggedIn,
login,
logout
}
})API 服务
// API 服务层
export const userApi = {
login: (data: LoginData) => request.post<LoginResponse>('/auth/login', data),
getUserInfo: () => request.get<UserInfo>('/user/info'),
updateUserInfo: (data: UserInfo) => request.put<UserInfo>('/user/info', data)
}组件通信
// 组件间通信
interface Props {
title: string
data: any[]
}
interface Emits {
update: [value: string]
delete: [id: string]
}
const props = defineProps<Props>()
const emit = defineEmits<Emits>()🎨 设计系统集成
主题系统
// 主题配置
export const themeConfig = {
primary: '#ffda44',
success: '#10b981',
warning: '#f59e0b',
error: '#ef4444',
info: '#3b82f6'
}组件规范
<template>
<div class="component-container">
<!-- 组件内容 -->
</div>
</template>
<script setup lang="ts">
// 组件逻辑
</script>
<style scoped>
.component-container {
@apply w-full;
}
</style>🔐 安全架构
数据安全
- 本地加密: 敏感数据 AES 加密存储
- 传输加密: HTTPS 传输
- 访问控制: 基于角色的权限控制
- 数据备份: 云端数据备份
认证安全
- 多平台认证: 微信、支付宝登录
- 会话管理: 安全的会话管理机制
- Token 安全: JWT Token 安全机制
- 权限控制: 细粒度的权限控制
⚡ 性能优化
前端优化
- 代码分割: 按需加载,减少初始包大小
- 缓存策略: 智能缓存,提升用户体验
- 图片优化: 图片压缩和懒加载
- CDN 加速: 静态资源 CDN 分发
构建优化
- Tree Shaking: 移除未使用的代码
- 压缩优化: 代码和资源压缩
- 预加载: 关键资源预加载
- 缓存策略: 长期缓存策略
📱 多端适配
平台特性
微信小程序
// 微信小程序特有功能
export const wechatFeatures = {
// 微信登录
login: () => {
// 微信登录逻辑
},
// 微信支付
payment: () => {
// 微信支付逻辑
},
// 微信分享
share: () => {
// 微信分享逻辑
}
}支付宝小程序
// 支付宝小程序特有功能
export const alipayFeatures = {
// 支付宝登录
login: () => {
// 支付宝登录逻辑
},
// 支付宝支付
payment: () => {
// 支付宝支付逻辑
},
// 支付宝分享
share: () => {
// 支付宝分享逻辑
}
}H5
// H5 特有功能
export const h5Features = {
// PWA 支持
pwa: () => {
// PWA 逻辑
},
// 浏览器兼容
compatibility: () => {
// 浏览器兼容逻辑
}
}App
// App 特有功能
export const appFeatures = {
// 原生功能
native: () => {
// 原生功能逻辑
},
// 推送通知
push: () => {
// 推送通知逻辑
}
}响应式设计
/* 响应式断点 */
@media (max-width: 639px) {
.mobile-only { display: block; }
.desktop-only { display: none; }
}
@media (min-width: 640px) and (max-width: 1023px) {
.tablet-only { display: block; }
}
@media (min-width: 1024px) {
.desktop-only { display: block; }
.mobile-only { display: none; }
}🧪 测试策略
单元测试
- 组件测试: Vue Test Utils
- 工具函数测试: Vitest
- 状态管理测试: Pinia 测试
- API 服务测试: Mock 测试
集成测试
- 页面测试: 端到端测试
- API 集成测试: 真实 API 测试
- 用户流程测试: 完整用户流程测试
性能测试
- 加载性能: 页面加载时间测试
- 渲染性能: 组件渲染性能测试
- 内存使用: 内存泄漏检测
🚀 部署架构
开发环境
- 本地开发: Vite 开发服务器
- 热重载: 实时代码更新
- 调试工具: Vue DevTools
- 代码检查: ESLint + Prettier
生产环境
- 多端构建: 各平台独立构建
- CDN 加速: 全球 CDN 分发
- 缓存策略: 长期缓存策略
- 监控告警: 性能监控和告警
📊 监控和运维
性能监控
- 前端监控: 页面性能、用户体验
- 错误监控: 错误收集和分析
- 用户行为: 用户行为分析
- 业务指标: 业务关键指标
日志管理
- 访问日志: 用户访问记录
- 错误日志: 系统错误和异常
- 业务日志: 业务操作记录
- 性能日志: 性能指标记录
🔄 持续集成
代码管理
- 版本控制: Git 版本控制
- 代码审查: Pull Request 代码审查
- 自动化测试: 单元测试、集成测试
- 代码质量: ESLint、TypeScript 检查
部署流程
- 自动化构建: CI/CD 自动化构建
- 环境管理: 开发、测试、生产环境
- 回滚机制: 快速回滚机制
- 灰度发布: 渐进式发布
📱 平台发布
微信小程序
# 构建微信小程序
pnpm build:mp-weixin
# 上传到微信开发者工具
# 提交审核
# 发布上线支付宝小程序
# 构建支付宝小程序
pnpm build:mp-alipay
# 上传到支付宝开发者工具
# 提交审核
# 发布上线H5
# 构建 H5
pnpm build:h5
# 部署到 CDN
# 配置域名
# 发布上线App
# 构建 App
pnpm build:app
# 打包 APK/IPA
# 上传到应用商店
# 发布上线🎯 目标用户
主要用户群体
-
普通用户
- 需要日常记账的个人用户
- 有基础财务管理需求的用户
- 喜欢移动端操作的用户
-
年轻用户
- 90后、00后用户群体
- 喜欢游戏化体验的用户
- 追求便捷操作的用户
-
多端用户
- 需要在多个平台使用的用户
- 有数据同步需求的用户
- 跨设备使用的用户
📊 竞品分析
主要竞品
-
随手记
- 优势:用户基数大,功能完善
- 劣势:界面老旧,用户体验一般
-
薄荷记账
- 优势:界面美观,用户体验好
- 劣势:功能相对简单,缺乏游戏化
-
记账本
- 优势:功能专业,支持多平台
- 劣势:学习成本高,界面复杂
差异化优势
- 游戏化体验:独特的存钱罐功能
- 跨平台支持:真正的多端同步
- 简化操作:极简的记账流程
- 年轻化设计:符合年轻用户审美
🎨 设计理念
设计原则
- 简洁性:界面简洁,操作简单
- 一致性:多端体验一致
- 易用性:学习成本低,上手快
- 美观性:符合年轻用户审美
视觉风格
- 现代简约:现代简约的设计风格
- 年轻化:符合年轻用户审美
- 色彩丰富:丰富的色彩搭配
- 动效流畅:流畅的动画效果
📈 成功指标
用户指标
- 用户增长:月活跃用户数
- 用户留存:用户留存率
- 用户满意度:用户评分和反馈
- 多端使用率:各平台使用率
产品指标
- 功能使用率:各功能模块使用率
- 数据质量:数据准确性和完整性
- 性能指标:页面加载速度和响应时间
- 稳定性:应用崩溃率和错误率
Penny Lens 移动端 - 让移动端财务管理更简单、更有趣 🚀
