Files
ruoyi-java/doc/手机号码功能详细排查指南.md
2025-11-06 22:17:57 +08:00

238 lines
8.8 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

# 手机号码功能详细排查指南
## ✅ 已确认信息
- **表头列名**: `下单电话` (严格匹配)
- **数据字段**: `status` 订单的status字段存储手机号码
- **示例数据**: `17703916233`
## 🔍 增强的日志输出
现在代码中已经添加了详细的DEBUG和INFO日志重新编译部署后您会看到以下完整的日志链路
### 1⃣ 表头列识别日志
```log
开始识别表头列,共 26 列
列 0 内容: [日期]
列 1 内容: [公司]
列 2 内容: [单号]
✓ 识别到 '单号' 列:第 3 列索引2
列 3 内容: [型号]
列 4 内容: [数量]
列 5 内容: [姓名]
列 6 内容: [下单电话]
✓ 识别到 '下单电话' 列:第 7 列索引6列名: [下单电话]
...
表头列识别完成
列位置识别完成 - 单号: 2, 物流单号: 12, 是否安排: null, 标记: 14, 下单电话: 6
```
**✅ 关键检查点:**
- 必须看到 `✓ 识别到 '下单电话' 列` 这一行
- 最后一行 `下单电话: 6` **不能是null**
### 2⃣ 手机号提取日志
```log
准备从status字段提取手机号 - 单号: JY202511061595, status内容: [17703916233]
原始文本: [17703916233]
清理后文本: [17703916233]
成功提取手机号码: [17703916233] <- 原文本: [17703916233]
✓ 从status字段提取手机号码 - 单号: JY202511061595, status: [17703916233], 手机号: 17703916233
```
**✅ 关键检查点:**
- 必须看到 `成功提取手机号码` 这一行
- status内容不能为空
### 3⃣ 准备写入日志
```log
✓ 准备写入手机号码 - 单号: JY202511061595, 手机号: 17703916233, 行: 2575, 列: 6
```
### 4⃣ batchUpdate请求体日志
```json
批量更新表格 - 请求体: {
"requests":[
{"updateRangeRequest":{"sheetId":"BB08J2","gridData":{"startRow":2574,"startColumn":12,
"rows":[{"values":[{"cellValue":{"link":{"url":"https://3.cn/xxx","text":"https://3.cn/xxx"}}}]}]}}},
{"updateRangeRequest":{"sheetId":"BB08J2","gridData":{"startRow":2574,"startColumn":6, <-- 手机号列
"rows":[{"values":[{"cellValue":{"text":"17703916233"}}]}]}}},
{"updateRangeRequest":{"sheetId":"BB08J2","gridData":{"startRow":2574,"startColumn":14,
"rows":[{"values":[{"cellValue":{"text":"251106"}}]}]}}}
]
}
```
**✅ 关键检查点:**
- `requests` 数组应该有 **3个元素**(物流、手机号、标记)
- 其中一个 `startColumn` 应该是 **6**如果下单电话在第7列
### 5⃣ 写入成功日志
```log
✓ 写入成功 - 行: 2575, 单号: JY202511061595, 物流链接: https://3.cn/xxx, 手机号: 17703916233
```
## 🎯 部署和测试步骤
### 步骤1: 重新编译后端
```bash
cd d:\code\RuoYi-Vue-master\ruoyi-java
mvn clean package -DskipTests
```
### 步骤2: 重启后端服务
确保服务完全重启,加载了新的代码。
### 步骤3: 启用DEBUG日志可选推荐
如果想看到更详细的日志,修改 `application.yml``logback.xml`
```yaml
logging:
level:
com.ruoyi.web.controller.jarvis.TencentDocController: DEBUG
```
### 步骤4: 执行批量同步
1. 打开订单列表页面
2. 点击"批量同步物流"按钮
3. 确认同步
### 步骤5: 查看日志
查看后端日志,按照上面的 5⃣ 个关键节点逐一检查。
## 🐛 问题排查流程
### 问题A: 没有识别到"下单电话"列
**症状:**
```log
列位置识别完成 - 单号: 2, 物流单号: 12, 是否安排: null, 标记: 14, 下单电话: null
```
**排查:**
1. 查看前面的 `列 X 内容: [XXX]` 日志,找到所有列名
2. 确认是否真的有一列叫 "下单电话"
3. 检查列名是否有额外的空格或特殊字符
4. 如果列名是 "电话" 或 "手机",也应该能识别
**解决:**
- 如果列名不匹配,在腾讯文档中将该列重命名为 "下单电话"
- 或者修改代码,添加更多匹配规则
### 问题B: 识别到列但没有提取到手机号
**症状:**
```log
✓ 识别到 '下单电话' 列:第 7 列索引6列名: [下单电话]
...
phoneColumn为null跳过手机号提取 - 单号: JY202511061595
```
**这个不应该发生!** 如果识别到了列,`phoneColumn` 就不应该是null。
**排查:**
- 检查是否有异常日志
- 可能是代码逻辑问题
### 问题C: status字段为空或不包含手机号
**症状:**
```log
准备从status字段提取手机号 - 单号: JY202511061595, status内容: []
准备从status字段提取手机号 - 单号: JY202511061595, status内容: [其他内容,没有手机号]
未找到匹配的手机号码,文本: [其他内容]
```
**排查:**
1. 确认订单的status字段确实存储了手机号码
2. 检查数据库中该订单的status值
3. 可能某些订单的status字段不包含手机号
**解决:**
- 确保所有需要同步的订单其status字段都包含11位手机号码
- 如果status字段用于其他用途可能需要调整数据结构
### 问题D: 提取成功但请求体中没有手机号字段
**症状:**
```log
✓ 从status字段提取手机号码 - 单号: JY202511061595, status: [17703916233], 手机号: 17703916233
...
批量更新表格 - 请求体: {"requests":[...]} <-- 只有2个updateRangeRequest
```
**排查:**
- 查看 `✓ 准备写入手机号码` 日志是否存在
- 检查代码逻辑update对象是否正确构建
### 问题E: 写入请求发送但腾讯文档没有显示
**症状:**
日志显示写入成功,但腾讯文档中"下单电话"列仍然为空。
**排查:**
1. 检查API响应是否真的返回 `updatedCells: 1`
2. 刷新腾讯文档页面
3. 检查列索引是否正确(可能写到了其他列)
4. 检查该列是否有格式限制或保护
## 📊 完整日志示例(成功场景)
```log
22:03:29.150 [http-nio-30313-exec-10] INFO c.r.w.c.j.TencentDocController - 开始读取表头 - 行号: 2, range: A2:Z2
22:03:29.259 [http-nio-30313-exec-10] INFO c.r.w.c.j.TencentDocController - 开始识别表头列,共 26 列
22:03:29.259 [http-nio-30313-exec-10] DEBUG c.r.w.c.j.TencentDocController - 列 0 内容: [日期]
22:03:29.259 [http-nio-30313-exec-10] DEBUG c.r.w.c.j.TencentDocController - 列 1 内容: [公司]
22:03:29.259 [http-nio-30313-exec-10] DEBUG c.r.w.c.j.TencentDocController - 列 2 内容: [单号]
22:03:29.259 [http-nio-30313-exec-10] INFO c.r.w.c.j.TencentDocController - ✓ 识别到 '单号' 列:第 3 列索引2
22:03:29.259 [http-nio-30313-exec-10] DEBUG c.r.w.c.j.TencentDocController - 列 6 内容: [下单电话]
22:03:29.259 [http-nio-30313-exec-10] INFO c.r.w.c.j.TencentDocController - ✓ 识别到 '下单电话' 列:第 7 列索引6列名: [下单电话]
22:03:29.259 [http-nio-30313-exec-10] INFO c.r.w.c.j.TencentDocController - 表头列识别完成
22:03:29.259 [http-nio-30313-exec-10] INFO c.r.w.c.j.TencentDocController - 列位置识别完成 - 单号: 2, 物流单号: 12, 是否安排: null, 标记: 14, 下单电话: 6
... (读取数据行) ...
22:03:29.500 [http-nio-30313-exec-10] DEBUG c.r.w.c.j.TencentDocController - 准备从status字段提取手机号 - 单号: JY202511061595, status内容: [17703916233]
22:03:29.500 [http-nio-30313-exec-10] DEBUG c.r.w.c.j.TencentDocController - 原始文本: [17703916233]
22:03:29.500 [http-nio-30313-exec-10] DEBUG c.r.w.c.j.TencentDocController - 清理后文本: [17703916233]
22:03:29.500 [http-nio-30313-exec-10] INFO c.r.w.c.j.TencentDocController - 成功提取手机号码: [17703916233] <- 原文本: [17703916233]
22:03:29.500 [http-nio-30313-exec-10] INFO c.r.w.c.j.TencentDocController - ✓ 从status字段提取手机号码 - 单号: JY202511061595, status: [17703916233], 手机号: 17703916233
22:03:29.500 [http-nio-30313-exec-10] INFO c.r.w.c.j.TencentDocController - 找到订单物流链接 - 单号: JY202511061595, 物流链接: https://3.cn/xxx, 手机号: 17703916233, 行号: 2575, 已推送: 否
... (批量写入) ...
22:03:29.700 [http-nio-30313-exec-10] INFO c.r.w.c.j.TencentDocController - ✓ 准备写入手机号码 - 单号: JY202511061595, 手机号: 17703916233, 行: 2575, 列: 6
22:03:29.700 [http-nio-30313-exec-10] DEBUG c.r.j.u.TencentDocApiUtil - 批量更新表格 - 请求体: {"requests":[...3个updateRangeRequest...]}
22:03:30.284 [http-nio-30313-exec-10] INFO c.r.w.c.j.TencentDocController - ✓ 写入成功 - 行: 2575, 单号: JY202511061595, 物流链接: https://3.cn/xxx, 手机号: 17703916233
```
## 🎯 下一步行动
1. **重新编译部署**
2. **执行一次批量同步**
3. **复制完整日志**(从"开始识别表头列"到"写入成功"的所有日志)
4. **提供给我分析**
如果还有问题,请提供:
- ✅ 完整的表头识别日志(包括所有 `列 X 内容` 的DEBUG日志
- ✅ 手机号提取相关的所有日志
- ✅ batchUpdate请求体的完整JSON
- ✅ 腾讯文档表头的截图
---
**最后更新**: 2025-11-06 22:30
**版本**: v2.0 - 增强日志版