hl-api-changelog/changelogs-v2/2026-06/18_3957_资源服务接口契约审计修复下一梯队-更多状态校验+季节引用替换+错误码-修改接口-管理后台.md

2.8 KiB

资源服务接口契约审计修复(下一梯队 P1中/P2更多状态校验 + 季节引用替换 + 错误码)— 修改接口 — 管理后台

变更类型:⚠️ 行为收紧(更多端点非法状态拒绝)+ 数据一致性修复,无破坏性删除 端类型:管理后台(景区/活动/酒店/餐厅/服务/人员/车型/费用/攻略/素材) 日期2026-06-18 服务hl-resource-service PRwx/HL#3957 承接:高置信 P0/P1 批次 PR #3948见 17_3948_*.md


⚠️ 关键说明

接口契约审计的下一梯队(P2-high/medium + P1-medium,145 条原始发现)对抗复核后修复,承接 #3948。已合并 dev-v3、部署测试服双实例(totalCodes=249)、本地全量 1630 单测零新增回归。对抗复核正确丢弃 46 项假阳性/已修项。

下面只列与前端对接相关的增量(在 #3948 基础上)。


1. 更多状态端点收紧:非法状态值被拒绝(承接 #3948 第 1 节,覆盖更多端点)

价格日历批量改状态 / 标签等端点补齐状态字典白名单校验,传字典外值返业务错误码而非静默落库:

端点 字典
活动 /admin/activity/.../prices/batch-status 价格日历 AVAILABLE/SOLD_OUT/CLOSED
酒店房型 /admin/hotel/room-type/.../prices/batch-status 同上
人员/车型/服务 .../prices/batch-status 同上
价格日历日期 各价格日历端点 日期格式 yyyy-MM-dd 非法拒绝

2. 季节素材引用「替换」语义修复(数据一致性)

DELETE/保存景区季节(saveSeason 编辑场景)此前只新增引用、不清旧引用 → 被移除的素材 material_ref 残留、ref_count 虚高。本次改为先按 biz 解绑旧引用再按本次入参重绑,引用集合如实反映保存后状态。


3. 新增错误码(前端按 Result.code 处理,承接 #3948 共 26 个)

本批新增 11 个(resource 段 3xxxxx)

场景 错误码
价格日历状态非法 320501/310410/350304/360304 等
价格日历日期格式非法 320502/310411
住宿/标签不存在 310407/310409/320303/360305/370706
住宿被产品引用无法删除 310408
批量酒店ID为空 310412
费用变更原因必填 390903
车型价格日历状态非法 340404

4. 其它(前端基本无感)

  • adhoc 标签并发建重名兜底(唯一键);多写补事务;内部裸异常 → IErrorCode;删除被引用守卫
  • *Name/关联字段回填、Map→VO、列表过滤补全(承接 #3948 第 2/3 节)

备注

  • P3 + low 置信发现暂未处理;待产品确认项见 #3948 PR bodyInternalHotel status 类型、Material 权限 no-op、MpScenic seasons、GROUP 车型等)。