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>
3.6 KiB
3.6 KiB
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
核心数据流
- UI 层通过 ViewModel 发起数据请求
- ViewModel 调用 Repository 获取数据
- Repository 通过 DAO 访问 Room 数据库
- 数据通过 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 中异步处理
- 大量数据导入时使用批量插入优化性能