# 腾讯文档在线编辑功能说明

## 功能概述

本功能实现了将物流信息直接上传到腾讯文档表格，实现自动发货的功能。系统通过腾讯文档开放平台的API，可以将订单的物流信息自动写入到指定的腾讯文档表格中。

## 功能特性

1. **OAuth2.0授权**：支持腾讯文档的OAuth2.0授权流程
2. **物流信息上传**：支持批量或单个订单的物流信息上传
3. **自动发货**：将物流信息上传到腾讯文档后，自动完成发货流程
4. **表格操作**：支持读取、写入、追加表格数据

## 配置说明

### 1. 申请腾讯文档开放平台应用

1. 访问 [腾讯文档开放平台](https://docs.qq.com/open/document/app/)
2. 注册开发者账号并创建应用
3. 获取 `AppID` 和 `AppSecret`
4. 配置授权回调地址：`http://your-domain/jarvis/tendoc/oauth/callback`

### 2. 配置应用参数

在 `application-dev.yml` 中配置腾讯文档相关参数：

```yaml
tencent:
  doc:
    app-id: your_app_id          # 替换为你的AppID
    app-secret: your_app_secret   # 替换为你的AppSecret
    redirect-uri: http://localhost:30313/jarvis/tendoc/oauth/callback  # 替换为你的回调地址
```

## API接口说明

### 1. 获取授权URL

**接口地址：** `GET /jarvis/tendoc/authUrl`

**返回示例：**
```json
{
  "code": 200,
  "msg": "获取授权URL成功",
  "data": "https://docs.qq.com/oauth/v2/authorize?client_id=xxx&redirect_uri=xxx&response_type=code&scope=file.read_write"
}
```

### 2. OAuth回调

**接口地址：** `GET /jarvis/tendoc/oauth/callback?code=xxx`

**参数说明：**
- `code`: 授权码（由腾讯文档返回）

**返回示例：**
```json
{
  "code": 200,
  "msg": "授权成功",
  "data": {
    "access_token": "xxx",
    "refresh_token": "xxx",
    "expires_in": 7200
  }
}
```

### 3. 刷新访问令牌

**接口地址：** `POST /jarvis/tendoc/refreshToken`

**请求体：**
```json
{
  "refreshToken": "xxx"
}
```

### 4. 上传物流信息（批量）

**接口地址：** `POST /jarvis/tendoc/uploadLogistics`

**请求体：**
```json
{
  "accessToken": "xxx",
  "fileId": "xxx",
  "sheetId": "xxx",
  "orderIds": [1, 2, 3]
}
```

**参数说明：**
- `accessToken`: 访问令牌
- `fileId`: 腾讯文档文件ID（从文档URL中获取）
- `sheetId`: 工作表ID（从文档URL中获取）
- `orderIds`: 订单ID列表

### 5. 追加物流信息（单个）

**接口地址：** `POST /jarvis/tendoc/appendLogistics`

**请求体：**
```json
{
  "accessToken": "xxx",
  "fileId": "xxx",
  "sheetId": "xxx",
  "orderId": 1
}
```

### 6. 自动发货

**接口地址：** `POST /jarvis/tendoc/autoShip`

**请求体：**
```json
{
  "accessToken": "xxx",
  "fileId": "xxx",
  "sheetId": "xxx",
  "orderId": 1
}
```

**功能说明：**
- 检查订单是否有物流链接
- 将物流信息上传到腾讯文档表格
- 完成自动发货流程

### 7. 读取表格数据

**接口地址：** `GET /jarvis/tendoc/readSheet`

**参数：**
- `accessToken`: 访问令牌
- `fileId`: 文件ID
- `sheetId`: 工作表ID
- `range`: 范围（可选，默认：A1:Z100）

### 8. 获取文件信息

**接口地址：** `GET /jarvis/tendoc/fileInfo`

**参数：**
- `accessToken`: 访问令牌
- `fileId`: 文件ID

### 9. 获取工作表列表

**接口地址：** `GET /jarvis/tendoc/sheetList`

**参数：**
- `accessToken`: 访问令牌
- `fileId`: 文件ID

## 使用流程

### 1. 授权流程

1. 调用 `GET /jarvis/tendoc/authUrl` 获取授权URL
2. 用户在浏览器中访问授权URL，完成授权
3. 授权成功后，腾讯文档会重定向到回调地址，并携带 `code` 参数
4. 调用 `GET /jarvis/tendoc/oauth/callback?code=xxx` 获取访问令牌

### 2. 上传物流信息

1. 获取腾讯文档的文件ID和工作表ID
   - 打开腾讯文档，从URL中获取：`https://docs.qq.com/sheet/Dxxxxxxxxxxxxx?tab=BB08J2`
   - `Dxxxxxxxxxxxxx` 为文件ID
   - `BB08J2` 为工作表ID

2. 调用上传接口
   - 批量上传：`POST /jarvis/tendoc/uploadLogistics`
   - 单个追加：`POST /jarvis/tendoc/appendLogistics`
   - 自动发货：`POST /jarvis/tendoc/autoShip`

### 3. 表格格式

上传的数据格式（按列顺序）：
1. 内部单号（remark）
2. 订单号（orderId）
3. 下单时间（orderTime）
4. 型号（modelNumber）
5. 地址（address）
6. 物流链接（logisticsLink）
7. 下单人（buyer）
8. 付款金额（paymentAmount）
9. 后返金额（rebateAmount）
10. 备注/状态（status）

## 注意事项

1. **访问令牌有效期**：访问令牌通常有效期为2小时，过期后需要使用 `refresh_token` 刷新
2. **API调用频率**：腾讯文档API有调用频率限制，请参考[腾讯文档开放平台文档](https://docs.qq.com/open/document/app/)
3. **文件权限**：确保应用有权限访问目标文档
4. **表格格式**：建议在腾讯文档中先创建表头，确保列顺序与系统一致

## 错误处理

- 如果访问令牌过期，系统会返回错误信息，需要重新授权或刷新令牌
- 如果文件ID或工作表ID错误，会返回相应的错误提示
- 如果订单信息不完整（如缺少物流链接），自动发货会失败并提示

## 技术支持

如有问题，请参考：
- [腾讯文档开放平台文档](https://docs.qq.com/open/document/app/)
- 系统日志文件

