# 腾讯文档同步物流使用说明

## 功能概述

系统已配置好腾讯文档开放平台的应用信息，实现了自动获取和管理访问令牌的功能。用户只需完成首次授权，后续系统会自动使用有效的访问令牌。

## 配置信息

应用信息已配置在 `application-dev.yml` 中：
- **应用ID**: `90aa0b70e7704c2abd2a42695d5144a4`
- **应用密钥**: `G8ZdSWcoViIawygo7JSolE86PL32UO0O`

## 首次授权流程

### 1. 获取授权URL

访问接口获取授权URL：
```
GET /jarvis/tendoc/authUrl
```

或者直接在浏览器访问：
```
https://docs.qq.com/oauth/v2/authorize?client_id=90aa0b70e7704c2abd2a42695d5144a4&redirect_uri=YOUR_CALLBACK_URL&response_type=code&scope=all&state=RANDOM_STATE
```

### 2. 完成授权

1. 在授权页面完成授权
2. 授权成功后，腾讯文档会重定向到回调地址
3. **系统会自动保存访问令牌到Redis**，无需手动操作

### 3. 验证授权

访问接口检查token状态：
```
GET /jarvis/tendoc/tokenStatus
```

返回示例：
```json
{
  "code": 200,
  "msg": "访问令牌有效",
  "data": {
    "hasToken": true,
    "token": "90aa0b70e7704c2abd2..."
  }
}
```

## 使用流程

### 1. 在订单列表页面

1. 找到有物流链接的订单
2. 点击"同步物流"按钮
3. 填写文件ID和工作表ID

### 2. 获取文件ID和工作表ID

从腾讯文档URL中获取：
```
https://docs.qq.com/sheet/Dxxxxxxxxxxxxx?tab=BB08J2
```
- `Dxxxxxxxxxxxxx` 是文件ID
- `BB08J2` 是工作表ID

### 3. 开始同步

1. 系统会自动检查后端是否有有效的访问令牌
2. 如果有，直接开始同步
3. 如果没有，会提示需要先完成授权

## Token管理

### 自动刷新

- 系统会自动检查token是否即将过期（提前5分钟）
- 如果即将过期，会自动使用refresh_token刷新
- 刷新后的新token会自动保存

### 手动设置Token（可选）

如果通过其他方式获取了token，可以手动设置：
```
POST /jarvis/tendoc/setToken
{
  "accessToken": "xxx",
  "refreshToken": "xxx",
  "expiresIn": 7200
}
```

### 清除Token

如需清除token，可以调用：
```java
tencentDocTokenService.clearToken()
```

## API接口说明

### 1. 获取授权URL
- **接口**: `GET /jarvis/tendoc/authUrl`
- **说明**: 用于首次授权，获取授权URL

### 2. OAuth回调
- **接口**: `GET /jarvis/tendoc/oauth/callback?code=xxx&state=xxx`
- **说明**: 腾讯文档授权回调，**会自动保存token到后端**

### 3. 检查Token状态
- **接口**: `GET /jarvis/tendoc/tokenStatus`
- **说明**: 检查当前token是否有效

### 4. 手动设置Token
- **接口**: `POST /jarvis/tendoc/setToken`
- **说明**: 手动设置token（可选）

### 5. 同步物流链接
- **接口**: `POST /jarvis/tendoc/fillLogisticsByOrderNo`
- **说明**: 根据单号填充物流链接，**自动使用后端保存的token**
- **参数**: 
  ```json
  {
    "fileId": "文件ID",
    "sheetId": "工作表ID",
    "headerRow": 1,
    "orderNoColumn": null,
    "logisticsLinkColumn": null
  }
  ```

## 注意事项

1. **回调地址配置**：
   - 必须在腾讯文档开放平台配置回调地址
   - 回调地址必须是HTTPS（生产环境）
   - 回调地址：`https://your-domain.com/jarvis/tendoc/oauth/callback`

2. **Token有效期**：
   - Access Token有效期：2小时
   - Refresh Token有效期：30天
   - 系统会自动刷新，无需手动操作

3. **Redis存储**：
   - Token存储在Redis中，key格式：`tendoc:token:{appId}`
   - Refresh Token key格式：`tendoc:refresh_token:{appId}`
   - 过期时间key格式：`tendoc:token_expire:{appId}`

4. **同步逻辑**：
   - 系统会自动从上次处理的最大行数-100开始读取
   - 避免重复处理历史数据
   - 自动识别列位置（单号列和物流链接列）

## 故障排查

### Token无效

如果提示"访问令牌无效"：
1. 检查是否完成首次授权
2. 检查Redis中是否有token
3. 尝试重新授权

### 授权失败

如果授权失败：
1. 检查回调地址是否正确配置
2. 检查回调地址是否在腾讯文档开放平台的白名单中
3. 检查应用ID和应用密钥是否正确

### 同步失败

如果同步失败：
1. 检查文件ID和工作表ID是否正确
2. 检查表格是否有权限访问
3. 查看后端日志获取详细错误信息

