# 财务管理模块 - 分类功能使用指南

## 功能概览

财务模块现已支持完整的分类功能，用户可以：

1. **新建分类** - 在做账标签页左侧点击"新建分类"按钮
2. **选择分类** - 在创建/编辑交易时选择或输入分类
3. **按分类查询** - 在查询标签页通过分类进行筛选

## 功能详细说明

### 1. 新建分类

**操作步骤：**
1. 打开财务模块，进入"做账"标签页
2. 点击左上方"新建分类"按钮
3. 在弹出对话框中输入分类名称（如"工作支出"、"投资收益"等）
4. 点击"创建"按钮

**注意：**
- 系统默认提供10个基础分类：其他、工资、奖金、投资、生活、交通、饮食、娱乐、医疗、教育
- 无法删除默认分类，但可以添加自定义分类
- 同一账户不能有重复的分类名称

### 2. 创建/编辑交易记录

**创建新交易：**
1. 点击"新建记录"按钮
2. 填写交易信息：
   - **交易类型**：选择"入账"或"支出"
   - **分类**：从下拉框中选择或确认分类
   - **日期**：选择交易日期
   - **金额**：输入交易金额（正数）
   - **交易人**：输入交易对方名称
   - **备注**：添加备注说明（可选）
   - **相关文件**：上传发票、支付记录、购买记录等（可选）
3. 点击"保存"按钮

**编辑现有交易：**
1. 在记录表中选择要编辑的交易
2. 点击"编辑"按钮
3. 修改任意字段（包括分类）
4. 点击"保存"按钮

### 3. 按分类查询

**操作步骤：**
1. 进入"查询"标签页
2. 设置查询条件：
   - **日期范围**：选择起始和结束日期
   - **交易类型**：选择"全部"、"收入(正数)"或"支出(负数)"
   - **分类**：从下拉框选择要查询的分类（"全部"表示不按分类筛选）
   - **金额范围**：输入最小和最大金额范围
   - **交易人**：输入交易人名称（支持模糊匹配）
3. 点击"查询"按钮

**查询结果显示：**
- 表格列包括：日期、交易人、**分类**、金额、备注
- 结果按日期倒序排列（最新的在上）

## 数据持久化

所有分类信息被保存到：
```
assets/Finance_Data/accounts/{account_id}/metadata.json
```

交易记录（包括分类）被保存到：
```
assets/Finance_Data/accounts/{account_id}/{transaction_id}/data.json
```

## 导出与导入

### 导出为CSV
- 打开"导出"标签页
- 点击"导出CSV"按钮
- 选择保存位置
- CSV文件将包含：日期、金额、交易人、**分类**、备注、创建时间

### 导出/导入账户
- 支持完整的账户数据迁移（包括所有分类和交易记录）
- 导出为ZIP包后可在其他地方导入

## API 接口

如果需要在代码中直接使用分类功能：

```python
from app.tools.finance_manager import FinanceManager

fm = FinanceManager()

# 添加分类
fm.add_category(account_id, "新分类名称")

# 删除自定义分类
fm.delete_category(account_id, "分类名称")

# 获取所有分类
categories = fm.get_categories(account_id)

# 按分类查询交易
results = fm.query_transactions(
    account_id,
    category="工资"  # 指定分类
)
```

## 常见问题

**Q: 为什么我新建的分类不显示在"新建记录"对话框中？**
A: 确保已点击"创建"按钮完成分类创建，然后再打开新建记录对话框。系统会自动从账户中读取最新的分类列表。

**Q: 能否修改分类名称？**
A: 目前不支持修改分类名称。建议先新建一个新分类，然后为已有交易重新分配分类。

**Q: 删除交易记录后，其分类会被删除吗？**
A: 不会。分类是账户级别的属性，删除交易不会影响分类列表。

**Q: 如何导入包含分类的交易数据？**
A: 使用"导出"标签页的"导入账户"功能，选择之前导出的ZIP包即可恢复所有分类和交易记录。
