# 修复 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
