From 490465f9ecd9aa9ac83d852c82222e41e8519316 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Wed, 6 May 2026 21:30:37 +0800 Subject: [PATCH] =?UTF-8?q?06=20fix:=20agency=20afterCommit=20=E6=A1=A5?= =?UTF-8?q?=E6=8E=A5=20mp=20=E7=BC=93=E5=AD=98=E5=8F=8D=E5=90=91=E5=A4=B1?= =?UTF-8?q?=E6=95=88=20(PR=20HL#1764)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.7 (1M context) --- .../06_fix_agency_cache_evict_bridge_to_mp.md | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 changelogs/2026-05/06_fix_agency_cache_evict_bridge_to_mp.md diff --git a/changelogs/2026-05/06_fix_agency_cache_evict_bridge_to_mp.md b/changelogs/2026-05/06_fix_agency_cache_evict_bridge_to_mp.md new file mode 100644 index 0000000..d0acb97 --- /dev/null +++ b/changelogs/2026-05/06_fix_agency_cache_evict_bridge_to_mp.md @@ -0,0 +1,56 @@ +# 修复 agency 写动作未桥接 mp 缓存反向失效 (#1758 follow-up) + +**类型**: BUG 修复(后端单点 / 缓存一致性) +**前端处理者**: mmg(无前端动作) +**日期**: 2026-05-06 +**关联**: PR #1764 (#1758 follow-up of PR #1760) + +--- + +## 现象 + +PR #1760 修复了 `/mp/common/merchant-qualifications` 漏过滤 visible 字段的 BUG, 但部署后 round-trip 发现: +- DB 真值 `hulai-wenlu` visible=0, status=ENABLED +- mp 接口仍返回 3 家公司(包含 hulai-wenlu) + +## 根因 + +`TravelAgencyServiceImpl.afterCommitAuditAndCacheBust` 注释明确「跨服务缓存失效由后续 PR 处理」, 实际只清了本地 Caffeine, **从未调 `DependencyAwareCacheManager.invalidateSource`**。 + +PR #1707 引入 agency 模块以来, admin update/create/delete agency 后: +- 本地 Caffeine 立刻清 +- mp service 的 `@MpCache(deps={"table:travel_agency", "table:travel_agency_qualification"})` 在 redis 反向索引上从未被失效 +- mp 端 1800s TTL 内永远拿旧数据 + +## 修复 + +参照 `ProductHelperService` / `ActivityService` 同模式: + +```java +private final DependencyAwareCacheManager depsManager; +private static final String SRC_TRAVEL_AGENCY = "table:travel_agency"; +private static final String SRC_TRAVEL_AGENCY_QUALIFICATION = "table:travel_agency_qualification"; + +// afterCommit 内追加 +try { + depsManager.invalidateSources(SRC_TRAVEL_AGENCY, SRC_TRAVEL_AGENCY_QUALIFICATION); +} catch (Exception e) { + log.warn("..."); +} +``` + +## 验证 + +测试服 round-trip 双向: +- visible=0 后立即 GET mp → 返回 2 家(hulai, qianshou,无 hulai-wenlu) ✓ +- visible=1 还原后立即 GET mp → 返回 3 家(全部) ✓ +- 缓存即时生效, 不等 1800s TTL ✓ + +## 前端无需改动 + +接口 URL/响应结构无变化, 仅缓存一致性修复, mmg 无需任何动作。 + +## 影响范围 + +- agency 主表 6 个写动作(create/update/disable/enable/delete/setPrimary)经同一 afterCommit 触发,本 PR 一次性桥接全部 +- agency 子表 service (qualifications/payments) 写动作未在本 PR 范围 - 后续 follow-up