chore(amap): mmg 决定前端自改 citylimit, 后端代理接口转备用

这个提交包含在:
API Changelog Bot 2026-05-14 16:01:31 +08:00
父节点 a66279a766
当前提交 9947af26d0
共有 2 个文件被更改,包括 123 次插入2 次删除

查看文件

@ -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.js20 项 — 旧定价模型完全废弃)
| 函数 | 前端 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.js10 项)
| 函数 | 前端 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 | 状态 |
|------|---------|------|
| 节点级 CRUDaddNode/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<Map>` 改具体 VO + 字典段修正 + 部分 Map 入参改 ReqVO。**字段名跟原 Map 一致,前端契约不变**,等你日常联调中如果 mp wiki/review/wish/transport 4 个接口有反序列化异常立刻反馈我。

查看文件

@ -2,14 +2,16 @@
date: 2026-05-14 date: 2026-05-14
type: backend-feature type: backend-feature
module: admin-amap-poi-proxy module: admin-amap-poi-proxy
priority: high priority: low
backend_pr: ["#2253", "#2259", "#2261", "#2264"] backend_pr: ["#2253", "#2259", "#2261", "#2264"]
backend_issue: "#2249" backend_issue: "#2249"
notify: ["@mmg"] 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"] related: ["12_frontend_bug_admin_mappicker-citylimit-blocks-cross-city-search.md"]
--- ---
> ⚠️ **2026-05-14 更新**:mmg 决定**前端继续直连高德, 不切到本接口**, 自行修复 citylimit 锁城 BUG。后端接口**已上线测试服并保留备用**(代码不删, nacos key 不撤), 以备未来需要"统一入口/统一限流/key 收回"时再启用。本 changelog 不再要求 mmg 切接口, 只作技术档案。
# 后端代理高德 POI 搜索接口已就绪 — 前端可切换不再直连高德 # 后端代理高德 POI 搜索接口已就绪 — 前端可切换不再直连高德
## TL;DR ## TL;DR