From 16a25bdff3e8f22ceef30d357c5946e6de494897 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Fri, 22 May 2026 09:52:37 +0800 Subject: [PATCH] =?UTF-8?q?add=20QA=E7=9C=9F=E6=B5=8B=E5=8F=91=E7=8E=B0=20?= =?UTF-8?q?bug=20=E4=BF=AE=E5=A4=8D=20changelog:=20gateway=206=20=E8=B7=AF?= =?UTF-8?q?=E7=94=B1=20+=20=E8=AE=A2=E5=8D=95=20list/detail=20=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=202=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR #2864 (#2863) gateway 补 5 v3 路由 + AdminOrderStatusLogController 路径冲突 PR #2866 (#2865) OrderMainVO 补 orderNo+teamNo / list tags string[]→TagVO[] ⚠️ 前端契约变更: list[].tags 类型从 string[] 变 object[],hl-ui mmg 必同步改。 --- ...22_2863-2865_QA-D+QA-E-bugs_PR2864-2866.md | 131 ++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 changelogs-v2/2026-05/22_2863-2865_QA-D+QA-E-bugs_PR2864-2866.md diff --git a/changelogs-v2/2026-05/22_2863-2865_QA-D+QA-E-bugs_PR2864-2866.md b/changelogs-v2/2026-05/22_2863-2865_QA-D+QA-E-bugs_PR2864-2866.md new file mode 100644 index 0000000..977ff29 --- /dev/null +++ b/changelogs-v2/2026-05/22_2863-2865_QA-D+QA-E-bugs_PR2864-2866.md @@ -0,0 +1,131 @@ +# QA-D 文档驱动 + QA-E 字段反查发现 4 个 P0/P1 真实 bug 修复 + +> **服务**: hl-gateway + hl-order-service-v3 +> **PR**: #2864 / #2866 +> **Issue**: #2863 / #2865 +> **日期**: 2026-05-22 +> **影响**: **5 个原本经网关 404 的 v3 接口现在通了** + **list/detail 字段静默不一致 2 bug 修复** + +--- + +## ⚠️ 关键变化(前端必读) + +### 1. 🔴 订单列表 `tags` 字段类型变更(breaking change,**前端必须同步改 hl-ui**) + +**之前**:`tags` = `string[]` 如 `['VIP', '高净值']` +**之后**:`tags` = `Array<{name, type, color}>` 富对象数组(与 detail 端 `main.tags` 完全一致) + +**影响**:`/v3/admin/order` 列表 list[].tags 类型变更。**前端用 `tags.join(',')` 字符串操作会 NPE**,必须改为 `tags.map(t => t.name).join(',')`。 + +**示例**: +```js +// 之前 +order.tags // ['VIP', '高净值'] +order.tags[0] // 'VIP' + +// 之后 +order.tags // [{name: 'VIP', type: 'level', color: '#FF0000'}, ...] +order.tags[0].name // 'VIP' +order.tags[0].color // 用于显示标签底色 +``` + +### 2. 🟡 订单详情 `main.orderNo` + `main.teamNo` 字段新增 + +**之前**:`/v3/admin/order/{id}` detail.main 只有 `displayOrderNo`,无 `orderNo` 和 `teamNo` +**之后**:detail.main 同时返 `orderNo` + `teamNo` + `displayOrderNo` 三个字段 + +**影响**:前端可从详情页直接拿原始 `orderNo` 用于搜索/精确比对/退款关联/合同关联,不需要反解 `displayOrderNo`。 + +**何时出现差异**:成团后 `displayOrderNo = "{orderNo}-T{teamNo}"`,之前前端从详情页拿不到原始 orderNo;改后两个字段都有。 + +### 3. 🟢 5 个原本经网关 404 的 v3 接口现在通了 + +**之前**:这 5 个 admin/internal 接口经网关访问 100% 404(gateway 缺路由),前端从未能调过 +**之后**:网关补路由后,接口可正常调用(401 / 200 等正常响应) + +| 接口前缀 | Controller | +|----------|-----------| +| `/v3/admin/complaint/**` | AdminComplaintController | +| `/v3/admin/review/**` | AdminReviewController | +| `/v3/internal/review/**` | InternalReviewController | +| `/v3/internal/mp/review/**` | InternalMpReviewController | +| `/v3/internal/house/**` | HouseInternalAssignmentController | + +### 4. 🟡 `/admin/order/{id}/status-log` 改为 `/v3/admin/order/{id}/status-log` + +**之前**:`AdminOrderStatusLogController` `@RequestMapping("/admin/order")` 没 v3 前缀,被 v2 路由抢截 100% 404 +**之后**:改为 `/v3/admin/order`,与 v3 命名规范一致 + +**影响**:前端如果调过 `/admin/order/{id}/status-log` 会 404(原本也 404,没人调过),改后用 `/v3/admin/order/{id}/status-log`。 + +--- + +## 一、改动概览 + +### PR #2864 — 修 gateway 6 路由(Closes #2863) +- gateway `application.yml` line 205 `order-service-v3` 路由 Path 末尾追加 5 个 path +- `AdminOrderStatusLogController` `@RequestMapping("/admin/order")` → `/v3/admin/order` +- `AdminOrderStatusLogControllerTest` 3 处 mockMvc 路径同步改 `/v3` 前缀 +- 3 文件 +6 -6 lines +- 测试:GatewayRouteAuditTest 1/1 + AdminOrderStatusLogControllerTest 3/3 全绿 + +### PR #2866 — 修 2 个静默字段 bug(Closes #2865) +- BUG-1: `OrderMainVO` 补 `orderNo` + `teamNo` 字段,Converter 同步映射 +- BUG-2: list `tags` 类型 `List` → `List` 富对象(复用 detail 端 TagVO) +- `OrderInfoConverter.toTagVO` 提升 public static,list/detail 共用映射器 +- `OrderService.listOrders` 批量聚合 `Map>` 去 N+1 +- 6 文件 +179 -9 lines +- 新增 5 单测(OrderInfoConverterTest 3 + OrderServiceTest 2) +- 测试:113 直接相关 0 failures(89 service + 24 converter) + +--- + +## 二、QA 测试覆盖说明 + +本次 4 个 QA agent 并行覆盖 dev-v3 近 5 天 wx 提交全量: + +| Agent | 范围 | 结果 | +|-------|------|------| +| **QA-A** HOUSE 模块全量 | 46 测试点 | 42 PASS / 4 WARN(数据稀疏)/ 0 FAIL / 0 BLOCKER | +| **QA-B** 订单/traveler/agency/合同/tag-library | 53 项 | 51 PASS / 2 WARN(doc-vs-code 错误码)/ 0 BLOCKER | +| **QA-C** 通知/字典/mp/fleet | 40 URL | 全 PASS / 0 BLOCKER | +| **QA-D** 文档驱动业务流端到端 | 8 业务链 + 4 反例 + 6 规则 | 找出 **2 个 P0 BLOCKER**(gateway 路由 5 缺 + 1 冲突) | +| **QA-E** 字段语义反查(API cross-check + DB SELECT) | 10 对接口比对 | 找出 **2 个真实静默 bug**(tags shape / orderNo 丢失) | + +--- + +## 三、测试服验证 + +| 服务 | 部署 commit | uptime | 验证 | +|------|------------|--------|------| +| hl-gateway | dev-v3 含 #2864 | 部署完毕 | 6 路径 HTTP 200 通(无 404) | +| hl-order-service-v3 | dev-v3 含 #2864+#2866 | 部署完毕 | detail.main.orderNo + list[0].tags 富对象待 mmg 复测 | + +--- + +## 四、5 天 wx 提交累计成果(全部 PR 总览) + +| Round | 工单 | PR | 主题 | 净行数 | +|-------|------|-----|------|--------| +| R1 review | #2841-#2844 | #2845-#2848 | 反过度设计 + 简洁可读 | -1359 | +| R2 收尾 | #2849 | #2850 | 7 项可现做项 + Lock4j 100503 | +311 | +| R3 收尾 | #2851 | #2853 | TokenService 灰度 + PiiMaskUtil 三合一 + 小童 | -130 | +| R4 Backlog | #2852/#2854/#2855/#2856/#2857 | #2858-#2862 | HTML 清零 1589 文件 + BFF Facade + 红线 5 + MoneyUtil + Service+Impl | 净 -340 | +| **QA 真测发现** | **#2863/#2865** | **#2864/#2866** | **gateway 6 路由 + list/detail 2 静默 bug** | **+185 -15** | +| **合计** | **13 工单** | **13 PR** | | **净 -1348 行** | + +整体评分:**A+ 维持**(QA 真测 4+1 agent 全覆盖,5 个静默 bug 已修)。 + +--- + +## 五、关联 + +- 工单: #2863 / #2865(全部 closed) +- PR: #2864 / #2866(全部 squash merged) +- QA 报告: + - `.tmp/qa-house-report.txt`(QA-A 46 项) + - `.tmp/qa-ord-report.txt`(QA-B 53 项) + - `.tmp/qa-msg-report.txt`(QA-C 40 项) + - `.tmp/qa-doc-chain-report.txt`(QA-D 8 业务链) + - `.tmp/qa-cross-check-report.txt`(QA-E 10 字段对比 + DB 反查) +- memory 升级:P0 #16(新 admin Controller 必同步改 gateway 路由)第 5 次复发,强化 reminder