From 9947af26d072e55bc05059b9c9c07113368df4ec Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Thu, 14 May 2026 16:01:31 +0800 Subject: [PATCH] =?UTF-8?q?chore(amap):=20mmg=20=E5=86=B3=E5=AE=9A?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=E8=87=AA=E6=94=B9=20citylimit,=20=E5=90=8E?= =?UTF-8?q?=E7=AB=AF=E4=BB=A3=E7=90=86=E6=8E=A5=E5=8F=A3=E8=BD=AC=E5=A4=87?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../13_audit_admin_product_dead_api_calls.md | 119 ++++++++++++++++++ ...poi-proxy-ready-replace-frontend-direct.md | 6 +- 2 files changed, 123 insertions(+), 2 deletions(-) create mode 100644 changelogs/2026-05/13_audit_admin_product_dead_api_calls.md diff --git a/changelogs/2026-05/13_audit_admin_product_dead_api_calls.md b/changelogs/2026-05/13_audit_admin_product_dead_api_calls.md new file mode 100644 index 0000000..bed532d --- /dev/null +++ b/changelogs/2026-05/13_audit_admin_product_dead_api_calls.md @@ -0,0 +1,119 @@ +# 后端核查回执: 管理端产品页 30+ 死 API 调用清单 + +> **服务**: 后端核查(非接口变更) +> **PR**: 无(后端审计) +> **Issue**: 无 +> **日期**: 2026-05-13 +> **影响范围**: hl-ui 管理端 `src/api/pricing.js` + `src/api/core.js` 中调用 product-v2 旧路径的函数 +> **致**: @mmg + +--- + +## ⚠️ 关键变化 + +你列的"前端有、后端完全没有"5 类清单已逐条 grep 核对。**结论:30 个函数确认是死调用(v2 后端无对应路由),可放心删除**;同时有 14 个函数后端 v2 还在用,**别删**。 + +--- + +## 一、背景 + +你前端反馈了 5 类(旧定价 / 旧批次 / 细粒度行程 / 定制师配置 / 废弃 CRUD)函数怀疑后端没有实现。我用 grep 把 `hl-ui` 中每个函数的 axios URL 抓出来,逐条反查 `hl-product-service-v2` 的 Controller @RequestMapping,再核对 gateway 路由是否切到 v2。结果如下。 + +--- + +## 二、A 类「前端可删」(30 项,确认无后端 v2 路由) + +### pricing.js(20 项 — 旧定价模型完全废弃) + +| 函数 | 前端 URL | 后端 v2 状态 | +|------|---------|-------------| +| getProductPricing | `GET /product/item/{id}/pricing` | ❌ 无路由(v2 已换 pricing-calendar 模型) | +| saveProductPricing | `POST /product/item/{id}/pricing` | ❌ 无路由 | +| getProductCostItems | `GET /product/item/{id}/cost-items` | ❌ 无路由 | +| addProductCostItem | `POST /product/item/{id}/cost-item` | ❌ 无路由 | +| updateProductCostItem | `PUT /product/item/{id}/cost-item/{itemId}` | ❌ 无路由 | +| deleteProductCostItem | `DELETE /product/item/{id}/cost-item/{itemId}` | ❌ 无路由 | +| getProductCustomFees | `GET /product/item/{id}/custom-fees` | ❌ 无路由 | +| addProductCustomFee | `POST /product/item/{id}/custom-fee` | ❌ 无路由 | +| updateProductCustomFee | `PUT /product/item/{id}/custom-fee/{feeId}` | ❌ 无路由 | +| deleteProductCustomFee | `DELETE /product/item/{id}/custom-fee/{feeId}` | ❌ 无路由 | +| getProductExtraCosts | `GET /product/item/{id}/extra-costs` | ❌ 无路由(字段嵌入 ProductRouteSaveReqVO,无独立 URL) | +| addProductExtraCost / update / delete | `*/extra-cost*` | ❌ 无路由 | +| getProductSupplies | `GET /product/item/{id}/supplies` | ❌ 无路由(Service 在但 Controller 未暴露) | +| addProductSupply / update / delete | `*/supplies*` | ❌ 无路由 | +| getInsuranceFeePreview | `GET /product/item/{id}/pricing/insurance-fee-preview` | ❌ 无路由 | +| getGroupQuote | `GET /product/item/{id}/group-quote` | ❌ admin 无(v2 仅 `/internal/product/{id}/group-quote` 内部用) | + +### core.js(10 项) + +| 函数 | 前端 URL | 后端 v2 状态 | +|------|---------|-------------| +| addProduct | `POST /product/item` | ❌ v2 用 `/admin/product/basic` 统一 SaveReqVO | +| updateProduct | `PUT /product/item/{id}` | ❌ 同上 | +| generateShareLink | `POST /product/item/{id}/share-link` | ⚠ v2 有路径但是 `POST /admin/product/{id}/share` — 前端 URL 不对 | +| generateRouteMap | `POST /product/item/{id}/generate-route-map` | ⚠ v2 改 `POST /admin/product/{id}/map/generate-by-amap` | +| getProductLogs | `GET /product/item/{id}/logs` | ⚠ v2 改 `GET /admin/product/{id}/operation-logs` | +| getFolderTree | `GET /product/folder/tree` | ❌ 文件夹模型已废弃 | +| addFolder / update / delete | `/product/folder/*` | ❌ 同上 | +| moveProduct | `PUT /product/item/{id}/move` | ❌ 文件夹移动随之废弃 | + +### batch.js 整文件(旧批次模型) + +| 范围 | 后端 v2 状态 | +|------|-------------| +| `/batch/*` 路由全部 | ❌ 整批迁移到 `/admin/product/{id}/schedules` (新 schedule 模型) | +| 关联面板 `BatchManagementPanel.vue` | 可同步删 | + +### itinerary.js 部分函数(细粒度行程) + +| 函数 | 前端 URL | 状态 | +|------|---------|------| +| 节点级 CRUD(addNode/updateNode/deleteNode) | `/itinerary/node/*` | ❌ v2 无独立节点 CRUD | +| 酒店级 CRUD | `/itinerary/hotel/*` | ❌ v2 无独立 CRUD | +| 餐饮级 CRUD | `/itinerary/dining/*` | ❌ v2 无独立 CRUD | + +注:admin v2 只保留 `saveItinerary` 整树保存 + `addItineraryDay` / `deleteItineraryDay`。 + +### custom.js 整文件(定制师配置) + +| 范围 | 状态 | +|------|------| +| family / staff-config 全部接口 | ❌ VO 还在数据模型但无 Controller 端点 | + +--- + +## 三、B 类「前端别删」(14 项,v2 还在用) + +| 函数 | 后端 v2 路径 | +|------|-------------| +| getProductPage / getProductDetail | `GET /admin/product/page` / `/admin/product/{id}` | +| deleteProduct / copyProduct | `DELETE /admin/product/{id}` / `POST /admin/product/{id}/copy` | +| validatePublish / togglePublish | `POST /admin/product/{id}/validate-publish` / `/publish-toggle` | +| completeDesign | `POST /admin/product/{id}/complete-design` | +| saveBasicInfo | `POST /admin/product/basic` | +| saveItinerary / addItineraryDay / deleteItineraryDay | `PUT /admin/product/{id}/itinerary` 等 | +| saveRoute | `PUT /admin/product/{id}/route` | +| saveSupplement | `PUT /admin/product/{id}/supplement` | +| getFeeDeductionPreview | v2 有保留 | + +--- + +## 四、特别说明 + +- **`generateShareLink` / `generateRouteMap` / `getProductLogs`** 是 ⚠ 类(路径变了但功能在)。建议前端把这三个函数的 URL 改成新路径(见上表),保留函数。 +- **文件夹 + 移动产品**功能 v2 整体废弃。但你前端 UI(`FolderPanel.vue` + 列表页"移动产品"按钮)还在用。**建议前端连同 UI 一起删掉**,因为 v2 的产品组织改用 schedule 维度,不再需要文件夹。 +- **batch.js 整文件**直接删(已被 schedule 替代)。`BatchManagementPanel.vue` 一并删。 + +--- + +## 五、为什么后端不补回来这些 API + +- pricing 旧模型:v2 已重构为 pricing-calendar(按日期+档位定价),旧的"成本项/自定义费/额外费/物资"独立 CRUD 模式已废弃,统一进 schedule 保存 +- 文件夹:v2 产品组织维度变了(主题/版本/档位/schedule),文件夹这个老组织维度无意义 +- 细粒度行程:编辑体验改为整树保存(一次 PUT 全部行程),节点级 CRUD 让数据一致性变难 + +如果你前端在做产品列表的"文件夹分组展示"或"批次管理面板"且必须保留 UI,先告诉我,我评估能不能在 v2 加路由;否则按上面清单删即可。 + +--- + +**附:PR #2166 已部署测试服**(commit d49d6013,10:57:45 完成)。改动是 32 处 `Result` 改具体 VO + 字典段修正 + 部分 Map 入参改 ReqVO。**字段名跟原 Map 一致,前端契约不变**,等你日常联调中如果 mp wiki/review/wish/transport 4 个接口有反序列化异常立刻反馈我。 diff --git a/changelogs/2026-05/14_backend_admin_amap-poi-proxy-ready-replace-frontend-direct.md b/changelogs/2026-05/14_backend_admin_amap-poi-proxy-ready-replace-frontend-direct.md index 113af66..bc35711 100644 --- a/changelogs/2026-05/14_backend_admin_amap-poi-proxy-ready-replace-frontend-direct.md +++ b/changelogs/2026-05/14_backend_admin_amap-poi-proxy-ready-replace-frontend-direct.md @@ -2,14 +2,16 @@ date: 2026-05-14 type: backend-feature module: admin-amap-poi-proxy -priority: high +priority: low backend_pr: ["#2253", "#2259", "#2261", "#2264"] backend_issue: "#2249" notify: ["@mmg"] -status: ready-for-frontend +status: backend-ready-but-frontend-chose-self-fix related: ["12_frontend_bug_admin_mappicker-citylimit-blocks-cross-city-search.md"] --- +> ⚠️ **2026-05-14 更新**:mmg 决定**前端继续直连高德, 不切到本接口**, 自行修复 citylimit 锁城 BUG。后端接口**已上线测试服并保留备用**(代码不删, nacos key 不撤), 以备未来需要"统一入口/统一限流/key 收回"时再启用。本 changelog 不再要求 mmg 切接口, 只作技术档案。 + # 后端代理高德 POI 搜索接口已就绪 — 前端可切换不再直连高德 ## TL;DR