diff --git a/doc/手机号码功能详细排查指南.md b/doc/手机号码功能详细排查指南.md new file mode 100644 index 0000000..73db7a8 --- /dev/null +++ b/doc/手机号码功能详细排查指南.md @@ -0,0 +1,237 @@ +# 手机号码功能详细排查指南 + +## ✅ 已确认信息 + +- **表头列名**: `下单电话` (严格匹配) +- **数据字段**: `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 - 增强日志版 +