# 财务做账模块使用指南

## 功能概述

MRobot 财务做账模块是一个完整的财务管理系统，提供做账、查询、导出三大功能。支持多账户管理、图片附件、本地数据存储等功能。

### 核心特性

- **多账户管理**: 支持创建和管理多个独立的财务账户
- **完整的交易记录**: 每条记录包含日期、金额、交易人、备注和三种类型的图片证明
- **图片管理**: 支持为每条记录关联发票、支付记录、购买记录三张图片
- **本地存储**: 所有数据和图片存储在本地，组织清晰
- **强大的查询**: 支持按日期、金额、交易人多条件查询
- **数据导入导出**: 支持ZIP打包转移、CSV导出、完整备份

## 目录结构

```
assets/Finance_Data/
├── accounts/              # 账户数据目录
│   ├── [账户ID]/         # 每个账户的独立目录
│   │   ├── metadata.json # 账户元数据
│   │   ├── [交易ID]/     # 每条交易记录的目录
│   │   │   ├── data.json # 交易记录数据
│   │   │   ├── invoice/  # 发票图片
│   │   │   ├── payment/  # 支付记录图片
│   │   │   └── purchase/ # 购买记录图片
├── backups/              # 自动备份目录
├── images/              # 临时图片缓存（可选）
└── [其他文件]
```

## 使用指南

### 1. 做账标签页

#### 创建账户
1. 点击"新建账户"按钮
2. 输入账户名称和描述（可选）
3. 点击确定

#### 创建新交易记录
1. 选择账户
2. 点击"新建记录"按钮
3. 填写表单信息：
   - **日期**: 默认为当前日期，可修改
   - **金额**: 必须大于0
   - **交易人**: 必填项，填写交易对象
   - **备注**: 可选，补充说明
   - **图片**: 可选上传发票、支付记录、购买记录三张图片

#### 管理交易记录
- **编辑**: 点击"编辑"按钮修改记录
- **删除**: 点击"删除"按钮删除记录
- **查看**: 点击"查看"按钮查看完整详情和图片预览

#### 统计信息
- 实时显示总金额（人民币）
- 显示记录总数

### 2. 查询标签页

#### 设置查询条件
- **日期范围**: 默认查询最近一个月，可自定义
- **金额范围**: 可设置最小和最大金额
- **交易人**: 支持模糊搜索（不区分大小写）

#### 执行查询
1. 调整过滤条件
2. 点击"查询"按钮
3. 结果列表显示匹配的记录

#### 查看记录详情
- 点击结果列表中的"查看详情"按钮
- 显示完整信息和图片预览

### 3. 导出标签页

#### 导出账户为ZIP包
- 用途: 转移账户给他人使用
- 操作: 点击"导出为ZIP包"，选择保存位置
- 文件名格式: `账户名_账户ID.zip`
- 包含所有交易记录和附加图片

#### 导出为CSV格式
- 用途: 用Excel或其他工具分析
- 操作: 点击"导出CSV"，选择保存位置
- 内容: 日期、金额、交易人、备注、创建时间

#### 导入账户
- 用途: 导入他人共享的账户
- 操作: 点击"导入账户"，选择ZIP文件
- 系统自动提取并加载账户

#### 创建备份
- 用途: 备份所有账户
- 操作: 点击"创建备份"
- 保存位置: `assets/Finance_Data/backups/backup_[时间戳].zip`
- 自动压缩所有账户数据

## 数据模式

### 交易记录数据结构
```json
{
  "id": "唯一ID",
  "date": "2024-01-15",
  "amount": 1500.50,
  "trader": "张三",
  "notes": "购买办公用品",
  "invoice_path": "accounts/xxx/yyy/invoice/receipt.jpg",
  "payment_path": "accounts/xxx/yyy/payment/wechat.jpg",
  "purchase_path": "accounts/xxx/yyy/purchase/order.jpg",
  "created_at": "ISO格式时间戳",
  "updated_at": "ISO格式时间戳"
}
```

### 账户元数据结构
```json
{
  "id": "唯一ID",
  "name": "账户名称",
  "description": "账户描述",
  "created_at": "ISO格式时间戳",
  "updated_at": "ISO格式时间戳"
}
```

## 最佳实践

### 大数据量管理
- **分账户**: 按业务类型或时间周期创建多个账户
- **定期备份**: 定期使用"创建备份"功能
- **及时查询**: 不要一次加载过多数据，使用查询功能精确定位

### 图片管理
- **推荐格式**: PNG、JPG、BMP、JPEG
- **推荐大小**: 不超过2MB
- **文件组织**: 三张图片分别存储，避免重复

### 数据安全
- 所有数据存储在本地，不上传到云端
- 定期备份重要数据
- 谨慎删除账户和记录

## 文件结构详解

### finance_manager.py
核心数据管理模块，包含：
- `TransactionType`: 交易类型枚举
- `Transaction`: 交易记录数据模型
- `Account`: 账户数据模型
- `FinanceManager`: 主要的财务管理类

### finance_interface.py
用户界面模块，包含：
- `CreateTransactionDialog`: 创建/编辑交易对话框
- `RecordViewDialog`: 查看交易详情对话框
- `FinanceInterface`: 主界面和三个标签页

## 常见问题

### Q: 如何转移账户给他人？
A: 使用"导出为ZIP包"功能导出账户，将ZIP文件发送给对方，对方使用"导入账户"导入。

### Q: 删除记录后能恢复吗？
A: 不能。请定期创建备份，以防误删。

### Q: 支持的最大数据量是多少？
A: 理论上不限制，但建议单个账户不超过10000条记录以保持性能。

### Q: 图片能否修改？
A: 不能。如需修改，请删除记录后重新创建。

### Q: 可以合并账户吗？
A: 暂不支持。可以手动导出CSV后粘贴合并。

## 技术细节

### 数据存储方式
- 元数据: JSON格式
- 交易记录: JSON格式
- 图片: 原始格式（JPG、PNG等）

### 查询性能
- 账户级别的内存缓存
- 交易记录按日期倒序排列
- 查询时进行内存过滤

### 文件安全
- 所有写入操作使用原子性操作
- 删除前自动备份（通过备份功能）
- 支持恢复已备份数据

## 更新日志

### v1.0.0
- 初始发布
- 支持基本的做账、查询、导出功能
- 支持多账户管理
- 支持图片附件
- 支持备份和恢复

---

**使用此模块前，请确保 MRobot 已正确安装并配置好依赖环境。**
