# YUDO V12 数据字典

## 账本状态

| 字段 | 含义 | 规则 |
|---|---|---|
| `schemaVersion` | 数据结构版本 | 当前固定为 `1`，不匹配时不盲目读取 |
| `revision` | 本地修订号 | 每次成功持久化递增 |
| `transactions` | 正式流水 | 只有通过校验且不重复的记录进入 |
| `accounts` | 账户 | 包含类型、币种与启停状态 |
| `categories` | 分类 | 收入与支出分类分开管理 |
| `importBatches` | 导入批次 | 文件名、来源、总行数、写入/重复/错误数、撤销状态 |
| `quarantine` | 隔离数据 | 损坏或重复的存量数据，不参与任何统计 |
| `closedMonths` | 月结结果 | 月份、收入、支出、余度、笔数、可信度与完成时间 |
| `savedRoutes` | 未来路线 | 情景、周期、假设、预测结果、基线与可信度 |
| `auditLog` | 审计日志 | 动作、时间、对象和必要的前后差异 |

## 流水字段

| 字段 | 类型 | 说明 |
|---|---|---|
| `id` | string | 应用生成的永久唯一标识 |
| `occurredAt` | ISO datetime | 实际交易时间 |
| `kind` | income / expense / exclude | 收入、支出或月结排除项 |
| `amount` | number | 绝对金额，0.01–1,000,000,000，最多两位小数 |
| `title` | string | 商户、对象或交易名称，不能为空 |
| `category` | string | 与收支方向一致的分类 |
| `accountId` | string | 关联账户；未知账户回落到“其他账户” |
| `source` | string | manual、wechat、alipay、bank、file 等 |
| `sourceLabel` | string | 用户可读来源名称 |
| `sourceRef` | string | 平台订单号、交易号或银行流水号 |
| `status` | verified / pending / excluded | 已核对、待确认、已排除 |
| `confidence` | 0–1 | 分类及来源可信度，预测和质量评分可见 |
| `note` | string | 用户补充说明，可被搜索 |
| `importBatchId` | string / null | 关联导入批次，支持整批撤销 |
| `fingerprint` | string | 去重指纹；优先使用来源参考号，否则组合时间、方向、金额、名称和账户 |
| `createdAt` / `updatedAt` | ISO datetime | 创建和最近修改时间 |

## 统计口径

- 收入和支出不包含 `exclude` 或 `excluded` 流水。
- 可信度为当前范围中 `verified` 笔数占有效流水笔数的比例。
- 月结只有待确认数为 0 时才能完成。
- 未来预测优先使用最近的已月结月份；没有月结时，只使用本月 `verified` 现金流。
- 删除流水会移出统计，但删除动作和被删除数据摘要仍保留在审计日志。
