diff --git a/server/services/wechatSubscribeService.ts b/server/services/wechatSubscribeService.ts index c5fa14f..cde6121 100644 --- a/server/services/wechatSubscribeService.ts +++ b/server/services/wechatSubscribeService.ts @@ -61,7 +61,19 @@ export function getSubscribeTemplates(): Record { if (parsed && typeof parsed === 'object') { Object.keys(parsed).forEach((k) => { const conf = parsed[k] - if (conf && conf.id) merged[k] = conf + if (!conf || !conf.id) return + const base = merged[k] + /* + * 环境变量**按键覆盖内置模板**,但只覆盖它给到的部分: + * · 给了 id 但没给 fields → 沿用内置的字段映射(否则会退化成 + * thing1/time2/thing3 的默认映射,发给微信直接 47003); + * · 给了 fields → 用它。 + * 这样"只想换个模板 ID"时不用把 fields 一起抄一遍。 + */ + merged[k] = { + id: conf.id, + fields: conf.fields && typeof conf.fields === 'object' ? conf.fields : base && base.fields + } }) } } catch (err) {