# 自动回复

## 📋 业务与功能

### 1.1 核心目标
> 通过规则化自动回复提升客服响应效率，支持关键词、超时、固定话术三种策略的配置与管理。

### 1.2 功能清单
- **规则列表**：展示策略名称、ID、规则类型、创建人、状态、时间信息
- **查询筛选**：支持按规则ID、类型、创建人、创建时间筛选
- **规则管理**：
  - 新增/编辑规则
  - 删除规则（需二次确认）
- **规则编辑**：
  - **关键词回复**：配置启用时间、周几/时段、频率限制
  - **固定话术回复**：配置启用时间、回复内容
  - **超时回复**：配置响应时长阈值、回复内容
  - **适用范围**：选择部门或人员（多选）
- **优先级逻辑**：关键词 > 固定话术 > 超时回复

### 1.3 交互要点
- 列表页支持多条件查询
- 删除操作触发二次确认弹窗
- 新增/编辑打开模态框或抽屉
- 规则类型开关控制对应配置项的显隐

---

## 📊 内容规划

### 2.1 信息架构
```
自动回复
├── 顶部筛选栏（ID、类型、创建人、时间）
├── 规则列表表格
└── 规则编辑弹窗
    ├── 基础信息（名称、适用范围）
    ├── 关键词回复配置
    ├── 固定话术配置
    └── 超时回复配置
```

### 2.2 数据来源
- **数据类型**：规则列表
- **数据源**：模拟数据
- **关键字段**：
  - `id`: 策略ID
  - `name`: 策略名称
  - `types`: 包含的规则类型（数组）
  - `creator`: 创建人
  - `status`: 状态 (enabled/disabled)
  - `created_at`: 创建时间
  - `updated_at`: 编辑时间
  - `scope`: 适用范围（部门/人员列表）
  - `config`: 详细配置（关键词、固定、超时）

### 2.3 内容示例
- 策略名称：“晚间自动托管”
- 规则类型：关键词、超时
- 适用范围：客服一部、张三

---

## 🎨 布局与结构

### 3.1 整体布局
- **布局模式**：标准后台管理布局（筛选栏 + 表格）
- **容器宽度**：流式

### 3.2 响应式适配
- **移动端**：表格转为卡片列表，筛选栏折叠

---

## ⚙️ Axure API 说明

### 5.1 事件列表（eventList）
| 事件名称 | Payload 类型 | 触发时机 | 说明 |
|---------|-------------|---------|------|
| `on_create` | `string` | 点击新建 | payload 为 "create" |
| `on_edit` | `string` | 点击编辑 | payload 为规则 ID |
| `on_delete` | `string` | 点击删除 | payload 为规则 ID |
| `on_save` | `string` | 保存规则 | payload 为规则 JSON |

### 5.2 动作列表（actionList）
| 动作名称 | Params 类型 | 参数说明 | 功能描述 |
|---------|------------|---------|---------|
| `refresh_list` | `null` | 无 | 刷新列表 |

### 5.3 变量列表（varList）
| 变量名称 | 类型 | 默认值 | 说明 |
|---------|-----|-------|------|
| `active_rule_id` | `string` | 空 | 当前编辑的规则 ID |

### 5.4 配置项列表（configList）
| 配置项名称 | 类型 | 默认值 | 说明 |
|----------|-----|-------|------|
| `page_size` | `number` | `10` | 表格分页大小 |

### 5.5 数据项列表（dataList）
**数据结构**：
```typescript
{
  rules: {
    id: string;
    name: string;
    types: ('keyword' | 'fixed' | 'timeout')[];
    creator: string;
    status: 'enabled' | 'disabled';
    created_at: string;
    updated_at: string;
    scope: { type: 'dept' | 'user'; id: string; name: string }[];
    config: {
      keyword?: {
        enabled: boolean;
        time_range: string[]; // ['09:00', '18:00']
        week_days: number[]; // [1,2,3,4,5]
        frequency: number;
      };
      fixed?: {
        enabled: boolean;
        time_range: string[];
        content: string;
      };
      timeout?: {
        enabled: boolean;
        threshold: number; // minutes
        content: string;
      };
    };
  }[];
}
```
