立项背景与目标
HarmonyOS 原生生态里的记账应用已经不少,但真正好用的不多——普遍存在记账链路长、功能割裂、重"记录"而轻"管理"的问题,用户用两天就弃了。本项目目标是在纯血鸿蒙上从零构建一款完整、可长期使用的记账应用(倾心记账,已上架华为应用市场,当前已迭代至 V1.2.1),把单笔记录的操作成本压缩到 3 秒以内,覆盖收支记录、资产管理、信用账户、退款报销、统计分析与数据迁移全链路,并利用鸿蒙特性(桌面服务卡片、周期账单、系统级提醒)解决记账类产品最核心的痛点——用户嫌麻烦、坚持不下来。
软件功能与核心模块
1. 极速记账:自研数字键盘,金额 → 账户/分类/标签 → 保存,单手即可完成;快捷组把"午餐·餐饮·微信"这类高频组合固化为一键录入;支持标签、优惠、备注与标记。
2. 账单管理:日/周/月/年多级时间视图,按类型(支出/收入/转账)、账户、标签、标记多维组合筛选与搜索,支持编辑、删除、批量操作。
3. 资产与账户:支持储蓄、信用、投资、负债等多账户类型;账户余额、负债与溢缴款计算;信用账户按"本期待还 + 未出账单 = 总欠款"口径核算;账户间转账自动生成双边流水。
4. 退款与报销:账单可关联退款/报销,按原账单回冲金额并跟踪处理状态,避免重复入账。
5. 统计报表:收支趋势、分类占比、账户变动、预算执行情况,图表由原始流水实时聚合,支持从分类排名下钻到明细。
6. 数据安全:账单数据本地加密存储;自研 .fhbak 加密容器导入导出,含中文语义文件名与完整性校验,换机恢复不依赖云端。
7. 鸿蒙特色能力:桌面服务卡片"快记卡",无需打开应用即可完成一笔记账;周期账单(常记)自动生成固定支出;系统级账单提醒。
8. 个性化:自定义分类与图标、首页布局、金额万/亿显示格式、深色模式。
业务流程与功能路径
- 主链路:启动 → 首页数据概览 → 点击「记一笔」→ 键盘输入金额 → 选择账户/分类/标签 → 保存 → 数据落库 → 首页与统计实时刷新。
- 卡片链路:桌面添加「快记卡」→ 卡片内直接输入金额并选择分类 → 保存即完成落库,全程不进入应用。
- 统计链路:统计页选择时间范围 → 从流水表聚合计算 → 展示图表与分类排名 → 点击分类下钻对应账单列表。
整体架构与设计思路
采用 MVVM 分层 + HSP 模块化:1 个 HAP 入口 + 14 个 HSP 共享包(公共库、数据层、业务组件层、功能层 home/statistics/assets/mine)。依赖严格单向、禁止循环依赖;数据层独立收口,页面不直接接触 SQL,只向上暴露 Model / ViewModel。
技术栈
ArkTS + ArkUI 声明式 UI;状态管理用 ArkTS V2(@ComponentV2 / @ObservedV2 / @Trace / @Computed / @Local / @Param);Navigation + NavDestination 路由;bindSheet 半模态;RDB(SQLite,15 张数据表 / 版本 44)+ Preferences 持久化;EventBus + 单例跨模块通信;DevEco Studio + hvigor 构建。约 335 个 .ets、6.8 万行代码。
我负责的模块与结果
个人独立开发,从架构到上架 100% 负责:模块划分与依赖治理、数据库表结构及全部增量迁移脚本(v37→v44)、全部已上线页面与公共组件、数字键盘与快捷录入、统计图表、.fhbak 加密导入导出、桌面服务卡片、签名打包与上架。应用已上架华为应用市场(已迭代至 V1.2.1),跨版本升级零数据丢失,冷启动数据加载异常等线上问题已闭环。
难点与解决方案
1. HSP 循环依赖:抽公共库下沉类型与工具、事件总线替代直接调用,逐条拆环建成单向依赖红线。
2. ArkTS 严格模式:禁用 any/unknown、number 不可直转 enum、不可展开 Set、@Builder 内禁声明变量——用显式类型断言、工厂方法、带类型 Record 字面量替换,并固化为编码规范。
3. 状态管理失效:@Trace / @Param 三层嵌套观测不到——改"不可变数据 + 整体替换 + @Computed 派生"。
4. 非激活 Tab 的 onAppear 不触发:改 aboutToAppear 首加载 + 全局版本号监听驱动刷新。
5. 冷启动偶发加载失败(错误码 14800021):定位为 DB 初始化并发,改单例串行初始化 + 重试。
6. 底部安全区适配:抽 SafeAreaState 统一缓存安全区高度,屏蔽设备差异。