2.8 KiB
2.8 KiB
资源服务接口契约审计修复(下一梯队 P1中/P2:更多状态校验 + 季节引用替换 + 错误码)— 修改接口 — 管理后台
变更类型:⚠️ 行为收紧(更多端点非法状态拒绝)+ 数据一致性修复,无破坏性删除 端类型:管理后台(景区/活动/酒店/餐厅/服务/人员/车型/费用/攻略/素材) 日期:2026-06-18 服务:hl-resource-service PR:wx/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 body(InternalHotel status 类型、Material 权限 no-op、MpScenic seasons、GROUP 车型等)。