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>
117 lines
3.6 KiB
Markdown
117 lines
3.6 KiB
Markdown
# CLAUDE.md
|
||
|
||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||
|
||
## 项目概述
|
||
|
||
轻记账是一个使用 Kotlin 和 Jetpack Compose 开发的 Android 记账应用,采用 MVVM 架构。项目强调隐私保护,完全离线运行。
|
||
|
||
## 常用命令
|
||
|
||
### 构建和运行
|
||
```bash
|
||
./gradlew build # 构建项目
|
||
./gradlew assembleDebug # 构建调试 APK
|
||
./gradlew assembleRelease # 构建发布 APK
|
||
./gradlew installDebug # 安装调试版本到设备
|
||
./gradlew clean # 清理构建产物
|
||
```
|
||
|
||
### 测试相关
|
||
```bash
|
||
./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 中异步处理
|
||
- 大量数据导入时使用批量插入优化性能 |