## 规则条件 JSON 格式

- **DDS-Section**: 8.2 规则匹配条件
- **DDS-Lines**: L938-L967

### Extract

#### 条件匹配维度

| 条件类型 | 字段 | 说明 | 示例 |
|----------|------|------|------|
| 平台过滤 | `platform` | 指定生效平台 | `"alipay"` |
| 原始分类 | `category_raw` | 原始分类匹配 | `"餐饮美食"` |
| 关键词 | `keywords` | 商品/商户名关键词 | `["美团", "外卖"]` |
| 正则 | `regex` | 正则表达式匹配 | `"^滴滴.*出行$"` |
| 金额范围 | `amount_range` | [min, max] | `[0, 50]` |
| 方向 | `direction` | 收支方向 | `"expense"` |
| 对手方 | `counterparty` | 对手方包含 | `"支付宝"` |

#### JSON 结构示例

```json
{
  "platform": "wechat",
  "conditions": {
    "category_raw": "商户消费",
    "keywords": ["美团", "外卖", "饿了么"],
    "direction": "expense"
  },
  "actions": {
    "category_mapped": "餐饮美食",
    "merchant_normalized": "外卖平台"
  }
}
```

#### Rule 数据模型

```go
type Rule struct {
    ID             string    // UUID
    RuleType       string    // 规则类型枚举
    Priority       int       // 优先级（越小越高）
    PlatformScope  string    // 平台范围：all / alipay / wechat
    ConditionsJSON string    // 条件 JSON
    ActionsJSON    string    // 动作 JSON
    Enabled        bool      // 是否启用
    Description    string    // 规则描述
    CreatedAt      time.Time
    UpdatedAt      time.Time
}
```

#### RuleType 枚举

| 类型 | 说明 |
|------|------|
| `COUNTERPARTY_NORMALIZE` | 对手方归一化 |
| `MERCHANT_NORMALIZE` | 商户名归一化 |
| `CATEGORY_MAPPING` | 分类映射 |
| `ACCOUNT_MAPPING` | 账户映射 |
| `TAG_MAPPING` | 标签映射 |
| `FIREFLY_FIELD_MAPPING` | Firefly 字段映射 |
