bookkeeping/CLAUDE.md
yovinchen 026df11933 feat: 实现备份加密功能和预算管理基础架构
1. 备份加密功能
   - 添加 EncryptionUtils 使用 Android Keystore 安全存储密钥
   - 修改导出功能支持 CSV 和 Excel 文件加密
   - 实现加密文件的自动解密导入
   - 在设置页面添加备份加密开关

2. 预算管理基础架构
   - 创建 Budget 数据模型,支持总预算、分类预算和成员预算
   - 创建 BudgetDao 提供数据库操作接口
   - 创建 BudgetRepository 实现预算业务逻辑
   - 更新数据库版本至 v6 并添加迁移

3. 其他改进
   - 创建 CLAUDE.md 文件提供项目指导
   - 修复编译错误和类型安全问题
   - 更新 FilePickerUtil 支持加密文件格式

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-19 22:26:17 +08:00

3.6 KiB
Raw Blame History

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

项目概述

轻记账是一个使用 Kotlin 和 Jetpack Compose 开发的 Android 记账应用,采用 MVVM 架构。项目强调隐私保护,完全离线运行。

常用命令

构建和运行

./gradlew build              # 构建项目
./gradlew assembleDebug      # 构建调试 APK
./gradlew assembleRelease    # 构建发布 APK
./gradlew installDebug       # 安装调试版本到设备
./gradlew clean             # 清理构建产物

测试相关

./gradlew test              # 运行单元测试
./gradlew connectedAndroidTest  # 运行设备测试

架构概览

MVVM 架构分层

  • Model 层: Room 数据库实体 (model/ 目录下的 BookkeepingRecord, Category, Member, Settings)
  • Data 层: DAO 接口和 Repository 模式实现数据访问
  • ViewModel 层: 每个功能模块独立的 ViewModel (HomeViewModel, AnalysisViewModel 等)
  • View 层: Jetpack Compose UI包含 screens、components 和 dialogs

核心数据流

  1. UI 层通过 ViewModel 发起数据请求
  2. ViewModel 调用 Repository 获取数据
  3. Repository 通过 DAO 访问 Room 数据库
  4. 数据通过 Flow/StateFlow 响应式传递回 UI

数据库架构

  • 主数据库: BookkeepingDatabase (当前版本 5)
  • 核心表: bookkeeping_records, categories, members, settings
  • 关键关系: records 通过 memberId 关联 members 表
  • 迁移策略: 使用 Room 的 Migration 机制处理版本升级

导航架构

使用 Jetpack Navigation Compose主要页面

  • HomeScreen: 主页记账列表
  • AnalysisScreen: 数据分析图表
  • AddRecordScreen: 添加/编辑记录
  • CategoryManagementScreen: 分类管理
  • MemberManagementScreen: 成员管理
  • SettingsScreen: 设置页面

关键技术决策

UI 框架

  • 完全使用 Jetpack Compose 构建 UI
  • Material 3 设计系统,支持深色/浅色主题
  • 自定义主题色功能通过 ColorThemeDialog 实现

数据可视化

  • 使用 MPAndroidChart 实现图表功能
  • ChartManager 统一管理图表样式和行为
  • 支持饼图和折线图两种展示方式

文件导入导出

  • Apache POI 处理 Excel 文件
  • OpenCSV 处理 CSV 文件
  • FileUtils 提供统一的文件操作接口

图标系统

  • 所有图标使用 Material Icons 和自定义矢量图标
  • CategoryIcon 和 MemberIcon 枚举管理图标映射
  • 支持动态图标选择和预览

开发注意事项

分支策略

  • master: 稳定主分支
  • develop: 开发分支
  • feature/*: 功能开发
  • release/*: 版本发布
  • hotfix/*: 紧急修复

提交规范

使用约定式提交: <type>: <description>

  • feat: 新功能
  • fix: 修复 bug
  • docs: 文档更新
  • style: 代码格式
  • refactor: 代码重构
  • perf: 性能优化
  • test: 测试相关
  • build: 构建相关

重要功能模块

月度记账开始日期 (Settings 中的 monthStartDay)

  • 支持自定义每月记账的开始日期 (1-31)
  • 影响月度统计和分析的日期范围计算
  • 默认值为 1 (每月 1 日开始)

加密功能 (EncryptionUtils)

  • 预留的备份加密功能接口
  • 使用 AES 加密算法
  • 目前尚未集成到备份功能中

默认数据初始化

  • 首次启动时自动创建默认分类
  • 包含常用的收入和支出分类
  • 可通过 insertDefaultCategories() 查看默认分类列表

性能考虑

  • 使用 Room 的 Flow 实现数据的响应式更新
  • 图表数据计算在 ViewModel 中异步处理
  • 大量数据导入时使用批量插入优化性能