import { useEffect } from "react"; import { replaceDesensitizeMap } from "@/lib/desensitize"; import { useSensitiveWords, wordsToMap } from "@/strategy-components/api/sensitive-words"; /** * 启动时把后台「敏感词管理」配置加载进运行时脱敏映射表。 * * - 后台返回**非空**时:用其中「启用」的词条整体替换运行时映射 * ({@link replaceDesensitizeMap}),后台即唯一真源,被删除的词不再生效。 * - 后台为空(全新部署还没配置)或拉取失败:什么都不做,保持使用 * `src/lib/desensitize.ts` 内置的种子映射。 * * 渲染 `null`;挂在 `AppProviders` 里(QueryClientProvider 之内)。与「敏感词管理」 * 页共享同一份 React Query 缓存,保存后会自动刷新并回灌运行时映射。 */ export function DesensitizeWordsLoader() { const { data } = useSensitiveWords(); useEffect(() => { if (data && data.length > 0) { replaceDesensitizeMap(wordsToMap(data)); } }, [data]); return null; }