xianyu-auto-reply/PAUSE_DURATION_FEATURE.md
2025-08-05 16:11:27 +08:00

186 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 账号自动回复暂停时间配置功能
## 功能概述
为每个账号单独配置自动回复暂停时间,当检测到手动发出消息后,该账号的自动回复会暂停指定的时间长度。
## 功能特性
### 1. 个性化配置
- 每个账号可以单独设置暂停时间1-60分钟
- 默认暂停时间为10分钟
- 支持实时修改,立即生效
### 2. 直观界面
- 在账号管理表格中新增"暂停时间"列
- 点击暂停时间可直接编辑
- 带有说明工具提示,解释功能作用
### 3. 智能验证
- 暂停时间范围限制1-60分钟
- 输入验证和错误提示
- 支持键盘操作Enter保存Escape取消
## 界面展示
### 表格列头
```
账号ID | Cookie值 | 关键词 | 状态 | 默认回复 | AI回复 | 自动确认发货 | 备注 | 暂停时间 | 操作
```
### 暂停时间列
- 显示格式:`🕐 10分钟`
- 工具提示:`检测到手动发出消息后,自动回复暂停的时间长度(分钟)。如果在暂停期间再次手动发出消息,会重新开始计时。`
- 点击可编辑,支持数字输入框
## 技术实现
### 数据库结构
```sql
-- cookies表新增字段
ALTER TABLE cookies ADD COLUMN pause_duration INTEGER DEFAULT 10;
```
### 后端API
#### 1. 更新暂停时间
```http
PUT /cookies/{cid}/pause-duration
Content-Type: application/json
Authorization: Bearer {token}
{
"pause_duration": 15
}
```
**响应**
```json
{
"message": "暂停时间更新成功",
"pause_duration": 15
}
```
#### 2. 获取暂停时间
```http
GET /cookies/{cid}/pause-duration
Authorization: Bearer {token}
```
**响应**
```json
{
"pause_duration": 15,
"message": "获取暂停时间成功"
}
```
### 前端功能
#### 1. 表格显示
- 在账号列表中显示每个账号的暂停时间
- 默认显示为"🕐 10分钟"格式
#### 2. 内联编辑
```javascript
function editPauseDuration(cookieId, currentDuration) {
// 创建数字输入框
// 支持1-60分钟范围
// Enter保存Escape取消
// 实时验证和错误提示
}
```
#### 3. 工具提示
- 使用Bootstrap Tooltip组件
- 自动初始化和重新初始化
### 暂停管理器集成
#### 动态获取暂停时间
```python
def pause_chat(self, chat_id: str, cookie_id: str):
"""暂停指定chat_id的自动回复使用账号特定的暂停时间"""
# 获取账号特定的暂停时间
try:
from db_manager import db_manager
pause_minutes = db_manager.get_cookie_pause_duration(cookie_id)
except Exception as e:
logger.error(f"获取账号 {cookie_id} 暂停时间失败: {e}使用默认10分钟")
pause_minutes = 10
pause_duration_seconds = pause_minutes * 60
pause_until = time.time() + pause_duration_seconds
self.paused_chats[chat_id] = pause_until
# 记录日志
end_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(pause_until))
logger.info(f"【{cookie_id}】检测到手动发出消息chat_id {chat_id} 自动回复暂停{pause_minutes}分钟,恢复时间: {end_time}")
```
## 使用流程
### 1. 查看当前设置
1. 登录系统,进入账号管理页面
2. 在表格中查看"暂停时间"列
3. 鼠标悬停在列头的问号图标上查看功能说明
### 2. 修改暂停时间
1. 点击要修改的账号的暂停时间(如"🕐 10分钟"
2. 输入框出现输入新的暂停时间1-60分钟
3. 按Enter键保存或按Escape键取消
4. 系统显示成功提示
### 3. 验证生效
1. 修改后的设置立即生效
2. 下次该账号检测到手动发出消息时,会使用新的暂停时间
3. 在日志中可以看到使用的暂停时间
## 日志示例
### 使用自定义暂停时间
```
2025-08-05 15:30:15.123 | INFO | XianyuAutoAsync:pause_chat:49 - 【abc123】检测到手动发出消息chat_id chat_456 自动回复暂停15分钟恢复时间: 2025-08-05 15:45:15
```
### 获取暂停时间失败时使用默认值
```
2025-08-05 15:30:15.124 | ERROR | XianyuAutoAsync:pause_chat:42 - 获取账号 abc123 暂停时间失败: Database error使用默认10分钟
2025-08-05 15:30:15.125 | INFO | XianyuAutoAsync:pause_chat:49 - 【abc123】检测到手动发出消息chat_id chat_456 自动回复暂停10分钟恢复时间: 2025-08-05 15:40:15
```
## 配置建议
### 不同场景的推荐设置
1. **高频互动商品**5-10分钟
- 适用于需要快速响应的热门商品
- 减少客户等待时间
2. **普通商品**10-15分钟默认
- 平衡自动化和人工干预
- 适合大多数场景
3. **低频互动商品**20-30分钟
- 适用于不常有咨询的商品
- 给予更多人工处理时间
4. **特殊商品**30-60分钟
- 需要详细沟通的复杂商品
- 避免自动回复干扰深度交流
## 注意事项
1. **范围限制**暂停时间必须在1-60分钟之间
2. **立即生效**:修改后的设置立即生效,无需重启
3. **默认值**新账号默认使用10分钟暂停时间
4. **错误处理**获取暂停时间失败时自动使用默认10分钟
5. **权限控制**:只能修改自己账号的暂停时间设置
## 兼容性
- **向后兼容**现有账号自动获得默认10分钟设置
- **数据迁移**系统启动时自动添加pause_duration字段
- **API兼容**现有API继续正常工作新增字段可选