@yaoxiu/marketing-dsl 1.5.0 → 1.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -68,7 +68,7 @@ import { createRuntime } from '@yaoxiu/marketing-dsl';
68
68
  const runtime = createRuntime(dsl, {
69
69
  user: { shopName: '麦爆了旗舰店', version: '专业版' },
70
70
  sources: { listRenewTiers: params => api.getTiers(params) },
71
- handlers: { setNeverRemind: () => localStorage.setItem('never', '1') },
71
+ handlers: { openRecharge: () => showRechargeModal() },
72
72
  emit: (event, payload) => console.log(event, payload),
73
73
  });
74
74
 
@@ -135,6 +135,34 @@ unsubscribe();
135
135
  | 不能打任意接口 | 数据源用注册名引用,配置里写不了 URL |
136
136
  | 不能调任意方法 | `call` 只能调宿主注册在 `handlers` 里的方法 |
137
137
 
138
+ ## `call` 的适用边界
139
+
140
+ `call` 是「**让宿主去做一件事**」,不是「记一笔账」。
141
+
142
+ | ✅ 该用 `call` | ❌ 不该用 `call` |
143
+ | ---------------------------------------------------------- | --------------------------------------------- |
144
+ | 唤起充值弹窗、打开客服会话、复制到剪贴板、跳转应用内特定页 | 记录用户意图、写本地存储(`localStorage` 等) |
145
+
146
+ 判断标准只有一条:**这件事后端需不需要知道**。
147
+
148
+ - 需要 → 走**上报**:`close` 的 `reason`,或 `track` 动作。
149
+ - 纯粹是宿主的本地动作、后端不关心 → 才用 `call`。
150
+
151
+ 典型反例是「不再提醒」。曾经的写法是 `close` 之外再配一条 `call` 让宿主写 `localStorage`,这是错的:
152
+
153
+ 1. **频控职责分裂**。「这条还要不要出」由后端算,前端存一份频控依据后端看不见,两边依据不一致,规则就是假的。
154
+ 2. **换设备、清缓存就失效**。这是用户的长期意图,该跟着账号走,不该跟着浏览器走。
155
+ 3. **每个宿主各写一份**。`handlers` 由宿主注册,前台一份、调试台一份、将来 Vue3 宿主再一份,行为迟早分叉。
156
+
157
+ 正确写法不需要任何新增代码,`close` 带上 `reason` 即可:
158
+
159
+ ```jsonc
160
+ { "type": "close", "reason": "user-dismiss" }
161
+ ```
162
+
163
+ 上报出去就是 `{ "id": "...", "event": "close", "reason": "user-dismiss" }`,后端看到这个 `reason`
164
+ 就永久压制这条物料。注意这个信息走 **`close` 的 `reason`**,不走 `extra`——`extra` 只属于 `click`。
165
+
138
166
  ## 完整 DSL 语法
139
167
 
140
168
  见调试台的「开发文档」页,或从那里导出 markdown / AI 提示词。
@@ -144,7 +144,11 @@ var actionRows = [
144
144
  ["closeAll", "\u2014", "\u4E0D\u7BA1\u51E0\u5C42\uFF0C\u5168\u90E8\u5173\u6389"],
145
145
  ["setState", "`key`\u3001`value`", "\u6539\u5C40\u90E8\u72B6\u6001\uFF0C\u7528\u6765\u505A\u9009\u4E2D\u5207\u6362"],
146
146
  ["track", "`event`\u3001`params`", "\u57CB\u70B9\u4E0A\u62A5\u3002`event` \u6709\u547D\u540D\u89C4\u8303\uFF0C\u89C1\u4E0B"],
147
- ["call", "`name`\u3001`params`", "\u8C03\u7528\u5BBF\u4E3B\u6CE8\u518C\u7684\u65B9\u6CD5\uFF08\u5982\u9886\u5238\uFF09\uFF0C`name` \u662F\u767D\u540D\u5355"],
147
+ [
148
+ "call",
149
+ "`name`\u3001`params`",
150
+ "\u8BA9\u5BBF\u4E3B\u53BB\u505A\u4E00\u4EF6\u4E8B\uFF08\u5982\u5524\u8D77\u5145\u503C\uFF09\uFF0C`name` \u662F\u767D\u540D\u5355\uFF0C\u8FB9\u754C\u89C1\u4E0B"
151
+ ],
148
152
  ["sequence", "`actions`", "\u4F9D\u6B21\u6267\u884C\u591A\u4E2A\u52A8\u4F5C"]
149
153
  ];
150
154
  var sections = [
@@ -257,12 +261,45 @@ countdown_end // \u5012\u8BA1\u65F6\u5F52\u96F6`
257
261
  {
258
262
  t: "note",
259
263
  tone: "info",
260
- text: '`close` \u7684 `reason` \u4F1A\u4E00\u8D77\u4F20\u7ED9\u5BBF\u4E3B\uFF0C\u5BBF\u4E3B\u636E\u6B64\u51B3\u5B9A\u540E\u7EED\u884C\u4E3A\u2014\u2014\u6BD4\u5982 `reason: "user-dismiss"` \u65F6\u8BB0\u4F4F\u300C\u4ECA\u5929\u4E0D\u518D\u663E\u793A\u300D\u3002\u4E0D\u5199 `reason` \u9ED8\u8BA4\u662F `action`\u3002'
264
+ text: "`close` \u7684 `reason` \u4F1A\u4E00\u8D77\u4F20\u7ED9\u5BBF\u4E3B\uFF0C\u5BBF\u4E3B\u636E\u6B64\u51B3\u5B9A\u540E\u7EED\u884C\u4E3A\uFF0C\u5E76\u539F\u6837\u4E0A\u62A5\u7ED9\u540E\u7AEF\u3002\u4E0D\u5199 `reason` \u9ED8\u8BA4\u662F `action`\u3002"
265
+ },
266
+ { t: "h3", text: "\u300C\u4E0D\u518D\u63D0\u9192\u300D\u5C31\u5199 close \u7684 reason\uFF0C\u4E0D\u8981\u914D call" },
267
+ {
268
+ t: "p",
269
+ text: "\u60F3\u8BA9\u7269\u6599\u300C\u5173\u4E86\u5C31\u522B\u518D\u51FA\u73B0\u300D\uFF0C\u4E00\u6761 `close` \u5C31\u591F\u4E86\uFF0C\u628A\u7528\u6237\u7684\u610F\u56FE\u5199\u8FDB `reason`\uFF1A"
270
+ },
271
+ {
272
+ t: "code",
273
+ code: `{ "type": "close", "reason": "user-dismiss" }`
274
+ },
275
+ {
276
+ t: "p",
277
+ text: '\u4E0A\u62A5\u51FA\u53BB\u5C31\u662F `{ "id": "...", "event": "close", "reason": "user-dismiss" }`\uFF0C\u540E\u7AEF\u770B\u5230\u8FD9\u4E2A `reason` \u5C31\u6C38\u4E45\u538B\u5236\u8FD9\u6761\u7269\u6599\u3002\u8FD9\u4E2A\u4FE1\u606F\u8D70 `close` \u7684 `reason`\uFF0C\u4E0D\u8D70 `extra`\u2014\u2014`extra` \u53EA\u5C5E\u4E8E `click`\u3002'
261
278
  },
262
279
  {
263
280
  t: "note",
264
281
  tone: "warn",
265
- text: "\u60F3\u8BA9\u5F39\u7A97\u300C\u5173\u4E86\u5C31\u522B\u518D\u51FA\u73B0\u300D\uFF0C\u5149\u9760 `close` \u4E0D\u591F\u2014\u2014\u5B83\u53EA\u7BA1\u8FD9\u4E00\u6B21\u3002\u8981\u914D\u4E00\u6761 `call` \u8BA9\u5BBF\u4E3B\u8BB0\u4E0B\u6765\uFF08\u89C1\u793A\u4F8B \u2461 \u548C \u2464 \u7684\u300C\u4E0D\u518D\u63D0\u9192\u300D\uFF09\u3002"
282
+ text: "**\u4E0D\u8981**\u518D\u914D\u4E00\u6761 `call` \u8BA9\u5BBF\u4E3B\u5199 `localStorage` \u8BB0\u4F4F\u3002\u9891\u63A7\u7531\u540E\u7AEF\u7B97\uFF0C\u524D\u7AEF\u5B58\u4E00\u4EFD\u540E\u7AEF\u770B\u4E0D\u89C1\u7684\u4F9D\u636E\uFF0C\u4E24\u8FB9\u5C31\u5BF9\u4E0D\u4E0A\uFF1B\u800C\u4E14\u6362\u8BBE\u5907\u3001\u6E05\u7F13\u5B58\u5C31\u5931\u6548\u2014\u2014\u7528\u6237\u7684\u957F\u671F\u610F\u56FE\u8BE5\u8DDF\u7740\u8D26\u53F7\u8D70\uFF0C\u4E0D\u8BE5\u8DDF\u7740\u6D4F\u89C8\u5668\u8D70\uFF1B`call` \u7684\u65B9\u6CD5\u8FD8\u662F\u5404\u4E2A\u5BBF\u4E3B\u5404\u6CE8\u518C\u4E00\u4EFD\u7684\uFF0C\u884C\u4E3A\u8FDF\u65E9\u5206\u53C9\u3002"
283
+ },
284
+ { t: "h3", text: "call \u7684\u9002\u7528\u8FB9\u754C" },
285
+ {
286
+ t: "p",
287
+ text: "`call` \u662F\u300C**\u8BA9\u5BBF\u4E3B\u53BB\u505A\u4E00\u4EF6\u4E8B**\u300D\uFF0C\u4E0D\u662F\u300C\u8BB0\u4E00\u7B14\u8D26\u300D\u3002"
288
+ },
289
+ {
290
+ t: "table",
291
+ head: ["\u2705 \u8BE5\u7528 call", "\u274C \u4E0D\u8BE5\u7528 call"],
292
+ rows: [
293
+ [
294
+ "\u5524\u8D77\u5145\u503C\u5F39\u7A97\u3001\u6253\u5F00\u5BA2\u670D\u4F1A\u8BDD\u3001\u590D\u5236\u5230\u526A\u8D34\u677F\u3001\u8DF3\u8F6C\u5E94\u7528\u5185\u7279\u5B9A\u9875\u9762",
295
+ "\u8BB0\u5F55\u7528\u6237\u610F\u56FE\u3001\u5199\u672C\u5730\u5B58\u50A8"
296
+ ]
297
+ ]
298
+ },
299
+ {
300
+ t: "note",
301
+ tone: "info",
302
+ text: "\u5224\u65AD\u6807\u51C6\u53EA\u6709\u4E00\u6761\uFF1A**\u8FD9\u4EF6\u4E8B\u540E\u7AEF\u9700\u4E0D\u9700\u8981\u77E5\u9053**\u3002\u9700\u8981 \u2192 \u8D70\u4E0A\u62A5\uFF08`close` \u7684 `reason`\uFF0C\u6216 `track`\uFF09\uFF1B\u7EAF\u7CB9\u662F\u5BBF\u4E3B\u7684\u672C\u5730\u52A8\u4F5C\u3001\u540E\u7AEF\u4E0D\u5173\u5FC3 \u2192 \u624D\u7528 `call`\u3002"
266
303
  },
267
304
  { t: "h3", text: "\u66DD\u5149\u548C\u5173\u95ED\u4E5F\u8981\u57CB\u70B9\uFF1Astage.onShow / stage.onClose" },
268
305
  {
@@ -289,7 +326,7 @@ countdown_end // \u5012\u8BA1\u65F6\u5F52\u96F6`
289
326
  ["`close-button`", "\u70B9\u4E86\u5173\u95ED\u6309\u94AE"],
290
327
  ["`mask`", "\u70B9\u4E86\u906E\u7F69\uFF08\u9700\u8981 `maskClosable: true`\uFF09"],
291
328
  ["`replace`", "\u88AB `open` \u7684 `replace` \u6A21\u5F0F\u9876\u6389"],
292
- ["\u81EA\u5B9A\u4E49\u503C", '`close` \u52A8\u4F5C\u91CC\u81EA\u5DF1\u5199\u7684 `reason`\uFF0C\u5982 `"never-remind"`'],
329
+ ["\u81EA\u5B9A\u4E49\u503C", '`close` \u52A8\u4F5C\u91CC\u81EA\u5DF1\u5199\u7684 `reason`\uFF0C\u5982 `"user-dismiss"`'],
293
330
  ["`action`", "`close` \u52A8\u4F5C\u6CA1\u5199 `reason` \u65F6\u7684\u9ED8\u8BA4\u503C"]
294
331
  ]
295
332
  },
@@ -310,14 +347,13 @@ countdown_end // \u5012\u8BA1\u65F6\u5F52\u96F6`
310
347
  "textAlign": "center", "lineHeight": 22, "cursor": "pointer" },
311
348
  "action": { "type": "sequence", "actions": [
312
349
  { "type": "track", "event": "notice_close" },
313
- { "type": "call", "name": "setNeverRemind" }, // \u8BB0\u4F4F\u522B\u518D\u51FA
314
- { "type": "close", "reason": "user-dismiss" }
350
+ { "type": "close", "reason": "user-dismiss" } // reason \u4E0A\u62A5\u7ED9\u540E\u7AEF\uFF0C\u636E\u6B64\u4E0D\u518D\u4E0B\u53D1
315
351
  ] } }`
316
352
  },
317
353
  {
318
354
  t: "note",
319
355
  tone: "info",
320
- text: "`close` \u53EA\u662F\u901A\u77E5\u5BBF\u4E3B\u300C\u7528\u6237\u5173\u6389\u4E86\u300D\uFF0C**\u5173\u6389\u4E4B\u540E\u8981\u4E0D\u8981\u518D\u51FA\u3001\u9694\u591A\u4E45\u518D\u51FA\u7531\u5BBF\u4E3B\u51B3\u5B9A**\u3002\u60F3\u8BA9\u5B83\u522B\u518D\u51FA\u73B0\uFF0C\u914D\u4E00\u6761 `call` \u8BA9\u5BBF\u4E3B\u8BB0\u4E0B\u6765\u3002"
356
+ text: '`close` \u53EA\u662F\u901A\u77E5\u5BBF\u4E3B\u300C\u7528\u6237\u5173\u6389\u4E86\u300D\uFF0C**\u8FD9\u4E00\u6B21\u5173\u4E0D\u5173\u7531\u5BBF\u4E3B\u51B3\u5B9A**\uFF1B\u800C\u300C\u4EE5\u540E\u8FD8\u51FA\u4E0D\u51FA\u300D\u7531\u540E\u7AEF\u6839\u636E\u4E0A\u62A5\u7684 `reason` \u51B3\u5B9A\uFF0C\u6240\u4EE5\u60F3\u8BA9\u5B83\u522B\u518D\u51FA\u73B0\uFF0C\u5199 `reason: "user-dismiss"` \u5373\u53EF\uFF0C\u4E0D\u9700\u8981\u518D\u914D `call`\u3002'
321
357
  },
322
358
  {
323
359
  t: "note",
@@ -2301,13 +2337,7 @@ var noticeToPopup = {
2301
2337
  fontSize: 13,
2302
2338
  cursor: "pointer"
2303
2339
  },
2304
- action: {
2305
- type: "sequence",
2306
- actions: [
2307
- { type: "call", name: "setNeverRemind" },
2308
- { type: "close", reason: "user-dismiss" }
2309
- ]
2310
- }
2340
+ action: { type: "close", reason: "user-dismiss" }
2311
2341
  }
2312
2342
  ]
2313
2343
  }
@@ -2673,13 +2703,13 @@ var confirmAndSwitch = {
2673
2703
  background: ORANGE3,
2674
2704
  cursor: "pointer"
2675
2705
  },
2676
- // 确认后整个关掉,两层一起消失
2706
+ // 确认后整个关掉,两层一起消失。
2707
+ // 「不再提醒」的意图靠 reason 上报给后端,不配 call 写本地存储
2677
2708
  action: {
2678
2709
  type: "sequence",
2679
2710
  actions: [
2680
2711
  { type: "track", event: "popup_never_remind_confirm" },
2681
- { type: "call", name: "setNeverRemind" },
2682
- { type: "closeAll" }
2712
+ { type: "closeAll", reason: "user-dismiss" }
2683
2713
  ]
2684
2714
  },
2685
2715
  children: [
@@ -2926,7 +2956,6 @@ var imageBanner = {
2926
2956
  height: "auto",
2927
2957
  layout: "flow",
2928
2958
  style: { radius: 8, maxWidth: 1200, overflow: "hidden" },
2929
- onShow: { type: "track", event: "banner_show", params: { banner: "autumn" } },
2930
2959
  onClose: {
2931
2960
  type: "track",
2932
2961
  event: "banner_dismiss",
@@ -2993,13 +3022,8 @@ var imageBanner = {
2993
3022
  fontSize: 13,
2994
3023
  cursor: "pointer"
2995
3024
  },
2996
- action: {
2997
- type: "sequence",
2998
- actions: [
2999
- { type: "call", name: "setNeverRemind" },
3000
- { type: "close", reason: "user-dismiss" }
3001
- ]
3002
- }
3025
+ // 「不再提醒」写在 close 的 reason 上,上报给后端即可,不配 call 写本地存储
3026
+ action: { type: "close", reason: "user-dismiss" }
3003
3027
  }
3004
3028
  ]
3005
3029
  }
@@ -3130,16 +3154,11 @@ var imageHotspot = {
3130
3154
  {
3131
3155
  id: "hotspot-never",
3132
3156
  type: "box",
3133
- // 最底部「不再提醒」,动作是关弹窗而不是跳转
3157
+ // 最底部「不再提醒」,动作是关弹窗而不是跳转。
3158
+ // reason 上报给后端,后端据此不再下发这条物料——不需要写本地存储
3134
3159
  rect: ["30%", 478, "40%", 26],
3135
3160
  style: { radius: 13, background: HOTSPOT_BG, cursor: "pointer" },
3136
- action: {
3137
- type: "sequence",
3138
- actions: [
3139
- { type: "call", name: "setNeverRemind" },
3140
- { type: "close", reason: "never-remind" }
3141
- ]
3142
- }
3161
+ action: { type: "close", reason: "user-dismiss" }
3143
3162
  }
3144
3163
  ]
3145
3164
  };
@@ -3217,7 +3236,6 @@ var noticeBar = {
3217
3236
  type: "sequence",
3218
3237
  actions: [
3219
3238
  { type: "track", event: "notice_close", params: { notice: "guide" } },
3220
- { type: "call", name: "setNeverRemind" },
3221
3239
  { type: "close", reason: "user-dismiss" }
3222
3240
  ]
3223
3241
  }
@@ -3417,6 +3435,7 @@ function checklistSection() {
3417
3435
  \u6709\u4E00\u4E2A\u4E0D\u5408\u89C4\uFF0C\u6574\u4EFD\u914D\u7F6E\u5C31\u5B58\u4E0D\u4E0A
3418
3436
  - [ ] \u6BCF\u4E2A\u89C6\u56FE\u7684 \`stage\` \u90FD\u6709 \`onShow\` \u66DD\u5149\u57CB\u70B9\u548C \`onClose\` \u5173\u95ED\u57CB\u70B9\uFF0C\`onClose\` \u7684 params \u91CC\u5E26\u4E0A \`"reason": "{{ closeReason }}"\`
3419
3437
  - [ ] \u5173\u95ED\u6309\u94AE\u6CA1\u6709\u591A\u4F59\u7684 \`icon\`\uFF08\u9ED8\u8BA4\u7684\u5185\u7F6E\u77E2\u91CF\u56FE\u6807\u5C31\u662F\u5BF9\u7684\uFF09
3438
+ - [ ] \u6CA1\u6709\u7528 \`call\` \u53BB\u8BB0\u5F55\u7528\u6237\u610F\u56FE\u6216\u5199\u672C\u5730\u5B58\u50A8\uFF08\`call\` \u53EA\u7528\u6765\u8BA9\u5BBF\u4E3B\u505A\u4E00\u4EF6\u4E8B\uFF0C\u5982\u5524\u8D77\u5145\u503C / \u6253\u5F00\u5BA2\u670D / \u590D\u5236\u5230\u526A\u8D34\u677F\uFF09\u3002\u300C\u4E0D\u518D\u63D0\u9192\u300D\u5199\u6210 \`{ "type": "close", "reason": "user-dismiss" }\`\uFF0C\u4E0D\u914D \`call\`
3420
3439
  - [ ] \u8F93\u51FA\u7684\u662F\u5408\u6CD5 JSON\uFF08\u6CA1\u6709\u591A\u4F59\u9017\u53F7\u3001\u6CA1\u6709\u6CE8\u91CA\uFF09`;
3421
3440
  }
3422
3441
  function requirementSection() {
@@ -3454,7 +3473,8 @@ function actionSection() {
3454
3473
  - \`setState\`\uFF1A\`{ "type": "setState", "key": "period", "value": "{{ index }}" }\` \u505A\u9009\u4E2D\u5207\u6362
3455
3474
  - \`close\`\uFF1A\u5173\u6389\u5F53\u524D\u8FD9\u4E00\u5C42\uFF08\u53EA\u6709\u4E00\u5C42\u65F6\u5C31\u662F\u6574\u4F53\u5173\u95ED\uFF09\u3002\u6CE8\u610F\u5B83\u53EA\u662F**\u901A\u77E5\u5BBF\u4E3B\u9875\u9762**\u300C\u7528\u6237\u60F3\u5173\u4E86\u300D\uFF0C\u7531\u5BBF\u4E3B\u51B3\u5B9A\u5173\u4E0D\u5173\uFF1B\u591A\u89C6\u56FE\u65F6\u5173\u5185\u5C42\u4E0D\u4F1A\u901A\u77E5\u5BBF\u4E3B\uFF0C\u53EA\u662F\u56DE\u5230\u4E0B\u9762\u90A3\u5C42
3456
3475
  - \`closeAll\`\uFF1A\u51E0\u5C42\u90FD\u5173\u6389\uFF0C\u4E00\u5B9A\u4F1A\u901A\u77E5\u5BBF\u4E3B
3457
- - \u60F3\u300C\u5173\u4E86\u5C31\u522B\u518D\u51FA\u73B0\u300D\uFF0C\u5149 \`close\` \u4E0D\u591F\uFF0C\u8981\u518D\u914D\u4E00\u6761 \`{ "type": "call", "name": "setNeverRemind" }\` \u8BA9\u5BBF\u4E3B\u8BB0\u4E0B\u6765
3476
+ - \u60F3\u300C\u5173\u4E86\u5C31\u522B\u518D\u51FA\u73B0\u300D\uFF0C\u5C31\u5199 \`{ "type": "close", "reason": "user-dismiss" }\`\u3002\u4E0A\u62A5\u51FA\u53BB\u662F \`{ "event": "close", "reason": "user-dismiss" }\`\uFF0C\u540E\u7AEF\u636E\u6B64\u6C38\u4E45\u538B\u5236\u8FD9\u6761\u7269\u6599\u3002**\u4E0D\u8981**\u518D\u914D \`call\` \u8BA9\u5BBF\u4E3B\u5199\u672C\u5730\u5B58\u50A8\u2014\u2014\u9891\u63A7\u7531\u540E\u7AEF\u7B97\uFF0C\u524D\u7AEF\u5B58\u7684\u4F9D\u636E\u540E\u7AEF\u770B\u4E0D\u89C1\uFF0C\u800C\u4E14\u6362\u8BBE\u5907\u3001\u6E05\u7F13\u5B58\u5C31\u6CA1\u4E86
3477
+ - \`call\`\uFF1A**\u8BA9\u5BBF\u4E3B\u53BB\u505A\u4E00\u4EF6\u4E8B**\uFF08\u5524\u8D77\u5145\u503C\u5F39\u7A97\u3001\u6253\u5F00\u5BA2\u670D\u4F1A\u8BDD\u3001\u590D\u5236\u5230\u526A\u8D34\u677F\u3001\u8DF3\u8F6C\u5E94\u7528\u5185\u7279\u5B9A\u9875\u9762\uFF09\u3002\u5224\u65AD\u6807\u51C6\uFF1A**\u8FD9\u4EF6\u4E8B\u540E\u7AEF\u9700\u4E0D\u9700\u8981\u77E5\u9053**\u2014\u2014\u9700\u8981\u5C31\u8D70\u4E0A\u62A5\uFF08\`close\` \u7684 \`reason\` \u6216 \`track\`\uFF09\uFF0C\u7EAF\u672C\u5730\u52A8\u4F5C\u624D\u7528 \`call\`\u3002\u7EDD\u4E0D\u7528 \`call\` \u8BB0\u5F55\u7528\u6237\u610F\u56FE\u6216\u5199\u672C\u5730\u5B58\u50A8
3458
3478
  - \`open\`\uFF1A\u6253\u5F00\u53E6\u4E00\u4E2A\u89C6\u56FE\uFF0C\u89C1\u4E0B\u4E00\u8282
3459
3479
  - \u4EFB\u4F55\u8282\u70B9\u52A0 \`action\` \u90FD\u80FD\u70B9\u51FB
3460
3480
  - **\u6BCF\u4E2A\u53EF\u70B9\u51FB\u5143\u7D20\u90FD\u5E94\u8BE5\u914D \`track\`**\uFF0C\u5426\u5219\u6CA1\u6709\u6570\u636E\u53EF\u770B
@@ -3504,7 +3524,7 @@ countdown_end // \u5012\u8BA1\u65F6\u5F52\u96F6
3504
3524
 
3505
3525
  - \`onShow\` \u5728\u6570\u636E\u5C31\u7EEA\u3001\u5F39\u7A97\u771F\u6B63\u6E32\u67D3\u51FA\u6765\u65F6\u89E6\u53D1\u4E00\u6B21
3506
3526
  - \`onClose\` \u5728\u70B9 X\u3001\u70B9\u906E\u7F69\u3001\u8D70 \`close\` \u52A8\u4F5C\u3001\u88AB \`replace\` \u9876\u6389\u65F6\u90FD\u4F1A\u89E6\u53D1
3507
- - \`{{ closeReason }}\` \u53D6\u503C\uFF1A\`close-button\` / \`mask\` / \`replace\` / \`close\` \u52A8\u4F5C\u81EA\u5E26\u7684 \`reason\`\uFF08\u5982 \`"never-remind"\`\uFF09/ \u9ED8\u8BA4 \`action\`
3527
+ - \`{{ closeReason }}\` \u53D6\u503C\uFF1A\`close-button\` / \`mask\` / \`replace\` / \`close\` \u52A8\u4F5C\u81EA\u5E26\u7684 \`reason\`\uFF08\u5982 \`"user-dismiss"\`\uFF09/ \u9ED8\u8BA4 \`action\`
3508
3528
  - \u591A\u89C6\u56FE\u65F6\u6BCF\u5C42\u5404\u5199\u5404\u7684\uFF0C\u624D\u80FD\u5206\u5F00\u7EDF\u8BA1
3509
3529
 
3510
3530
  ## \u516C\u544A\u6761 / Banner \u7684\u5173\u95ED
@@ -3517,12 +3537,11 @@ countdown_end // \u5012\u8BA1\u65F6\u5F52\u96F6
3517
3537
  "textAlign": "center", "lineHeight": 22, "cursor": "pointer" },
3518
3538
  "action": { "type": "sequence", "actions": [
3519
3539
  { "type": "track", "event": "notice_guide_close" },
3520
- { "type": "call", "name": "setNeverRemind" },
3521
3540
  { "type": "close", "reason": "user-dismiss" }
3522
3541
  ] } }
3523
3542
  \`\`\`
3524
3543
 
3525
- \`close\` \u53EA\u901A\u77E5\u5BBF\u4E3B\u300C\u7528\u6237\u5173\u6389\u4E86\u300D\uFF0C\u8981\u8BA9\u5B83\u522B\u518D\u51FA\u73B0\u5F97\u914D\u4E00\u6761 \`call\`\u3002
3544
+ \`close\` \u53EA\u901A\u77E5\u5BBF\u4E3B\u300C\u8FD9\u4E00\u6B21\u5173\u4E0D\u5173\u300D\uFF1B\u300C\u4EE5\u540E\u8FD8\u51FA\u4E0D\u51FA\u300D\u7531\u540E\u7AEF\u6309\u4E0A\u62A5\u7684 \`reason\` \u51B3\u5B9A\uFF0C\u6240\u4EE5 \`reason: "user-dismiss"\` \u5C31\u591F\u4E86\uFF0C\u4E0D\u8981\u518D\u914D \`call\`\u3002
3526
3545
  \u6574\u6761\u53EF\u70B9 + \u884C\u672B \xD7 \u4E0D\u4F1A\u51B2\u7A81\uFF1A\u5185\u5C42\u6709\u81EA\u5DF1\u7684 \`action\` \u5C31\u4E0D\u518D\u5192\u6CE1\u7ED9\u5916\u5C42\u3002`;
3527
3546
  }
3528
3547
  function viewsSection() {
@@ -47,7 +47,11 @@ var actionRows = [
47
47
  ["closeAll", "\u2014", "\u4E0D\u7BA1\u51E0\u5C42\uFF0C\u5168\u90E8\u5173\u6389"],
48
48
  ["setState", "`key`\u3001`value`", "\u6539\u5C40\u90E8\u72B6\u6001\uFF0C\u7528\u6765\u505A\u9009\u4E2D\u5207\u6362"],
49
49
  ["track", "`event`\u3001`params`", "\u57CB\u70B9\u4E0A\u62A5\u3002`event` \u6709\u547D\u540D\u89C4\u8303\uFF0C\u89C1\u4E0B"],
50
- ["call", "`name`\u3001`params`", "\u8C03\u7528\u5BBF\u4E3B\u6CE8\u518C\u7684\u65B9\u6CD5\uFF08\u5982\u9886\u5238\uFF09\uFF0C`name` \u662F\u767D\u540D\u5355"],
50
+ [
51
+ "call",
52
+ "`name`\u3001`params`",
53
+ "\u8BA9\u5BBF\u4E3B\u53BB\u505A\u4E00\u4EF6\u4E8B\uFF08\u5982\u5524\u8D77\u5145\u503C\uFF09\uFF0C`name` \u662F\u767D\u540D\u5355\uFF0C\u8FB9\u754C\u89C1\u4E0B"
54
+ ],
51
55
  ["sequence", "`actions`", "\u4F9D\u6B21\u6267\u884C\u591A\u4E2A\u52A8\u4F5C"]
52
56
  ];
53
57
  var sections = [
@@ -160,12 +164,45 @@ countdown_end // \u5012\u8BA1\u65F6\u5F52\u96F6`
160
164
  {
161
165
  t: "note",
162
166
  tone: "info",
163
- text: '`close` \u7684 `reason` \u4F1A\u4E00\u8D77\u4F20\u7ED9\u5BBF\u4E3B\uFF0C\u5BBF\u4E3B\u636E\u6B64\u51B3\u5B9A\u540E\u7EED\u884C\u4E3A\u2014\u2014\u6BD4\u5982 `reason: "user-dismiss"` \u65F6\u8BB0\u4F4F\u300C\u4ECA\u5929\u4E0D\u518D\u663E\u793A\u300D\u3002\u4E0D\u5199 `reason` \u9ED8\u8BA4\u662F `action`\u3002'
167
+ text: "`close` \u7684 `reason` \u4F1A\u4E00\u8D77\u4F20\u7ED9\u5BBF\u4E3B\uFF0C\u5BBF\u4E3B\u636E\u6B64\u51B3\u5B9A\u540E\u7EED\u884C\u4E3A\uFF0C\u5E76\u539F\u6837\u4E0A\u62A5\u7ED9\u540E\u7AEF\u3002\u4E0D\u5199 `reason` \u9ED8\u8BA4\u662F `action`\u3002"
168
+ },
169
+ { t: "h3", text: "\u300C\u4E0D\u518D\u63D0\u9192\u300D\u5C31\u5199 close \u7684 reason\uFF0C\u4E0D\u8981\u914D call" },
170
+ {
171
+ t: "p",
172
+ text: "\u60F3\u8BA9\u7269\u6599\u300C\u5173\u4E86\u5C31\u522B\u518D\u51FA\u73B0\u300D\uFF0C\u4E00\u6761 `close` \u5C31\u591F\u4E86\uFF0C\u628A\u7528\u6237\u7684\u610F\u56FE\u5199\u8FDB `reason`\uFF1A"
173
+ },
174
+ {
175
+ t: "code",
176
+ code: `{ "type": "close", "reason": "user-dismiss" }`
177
+ },
178
+ {
179
+ t: "p",
180
+ text: '\u4E0A\u62A5\u51FA\u53BB\u5C31\u662F `{ "id": "...", "event": "close", "reason": "user-dismiss" }`\uFF0C\u540E\u7AEF\u770B\u5230\u8FD9\u4E2A `reason` \u5C31\u6C38\u4E45\u538B\u5236\u8FD9\u6761\u7269\u6599\u3002\u8FD9\u4E2A\u4FE1\u606F\u8D70 `close` \u7684 `reason`\uFF0C\u4E0D\u8D70 `extra`\u2014\u2014`extra` \u53EA\u5C5E\u4E8E `click`\u3002'
164
181
  },
165
182
  {
166
183
  t: "note",
167
184
  tone: "warn",
168
- text: "\u60F3\u8BA9\u5F39\u7A97\u300C\u5173\u4E86\u5C31\u522B\u518D\u51FA\u73B0\u300D\uFF0C\u5149\u9760 `close` \u4E0D\u591F\u2014\u2014\u5B83\u53EA\u7BA1\u8FD9\u4E00\u6B21\u3002\u8981\u914D\u4E00\u6761 `call` \u8BA9\u5BBF\u4E3B\u8BB0\u4E0B\u6765\uFF08\u89C1\u793A\u4F8B \u2461 \u548C \u2464 \u7684\u300C\u4E0D\u518D\u63D0\u9192\u300D\uFF09\u3002"
185
+ text: "**\u4E0D\u8981**\u518D\u914D\u4E00\u6761 `call` \u8BA9\u5BBF\u4E3B\u5199 `localStorage` \u8BB0\u4F4F\u3002\u9891\u63A7\u7531\u540E\u7AEF\u7B97\uFF0C\u524D\u7AEF\u5B58\u4E00\u4EFD\u540E\u7AEF\u770B\u4E0D\u89C1\u7684\u4F9D\u636E\uFF0C\u4E24\u8FB9\u5C31\u5BF9\u4E0D\u4E0A\uFF1B\u800C\u4E14\u6362\u8BBE\u5907\u3001\u6E05\u7F13\u5B58\u5C31\u5931\u6548\u2014\u2014\u7528\u6237\u7684\u957F\u671F\u610F\u56FE\u8BE5\u8DDF\u7740\u8D26\u53F7\u8D70\uFF0C\u4E0D\u8BE5\u8DDF\u7740\u6D4F\u89C8\u5668\u8D70\uFF1B`call` \u7684\u65B9\u6CD5\u8FD8\u662F\u5404\u4E2A\u5BBF\u4E3B\u5404\u6CE8\u518C\u4E00\u4EFD\u7684\uFF0C\u884C\u4E3A\u8FDF\u65E9\u5206\u53C9\u3002"
186
+ },
187
+ { t: "h3", text: "call \u7684\u9002\u7528\u8FB9\u754C" },
188
+ {
189
+ t: "p",
190
+ text: "`call` \u662F\u300C**\u8BA9\u5BBF\u4E3B\u53BB\u505A\u4E00\u4EF6\u4E8B**\u300D\uFF0C\u4E0D\u662F\u300C\u8BB0\u4E00\u7B14\u8D26\u300D\u3002"
191
+ },
192
+ {
193
+ t: "table",
194
+ head: ["\u2705 \u8BE5\u7528 call", "\u274C \u4E0D\u8BE5\u7528 call"],
195
+ rows: [
196
+ [
197
+ "\u5524\u8D77\u5145\u503C\u5F39\u7A97\u3001\u6253\u5F00\u5BA2\u670D\u4F1A\u8BDD\u3001\u590D\u5236\u5230\u526A\u8D34\u677F\u3001\u8DF3\u8F6C\u5E94\u7528\u5185\u7279\u5B9A\u9875\u9762",
198
+ "\u8BB0\u5F55\u7528\u6237\u610F\u56FE\u3001\u5199\u672C\u5730\u5B58\u50A8"
199
+ ]
200
+ ]
201
+ },
202
+ {
203
+ t: "note",
204
+ tone: "info",
205
+ text: "\u5224\u65AD\u6807\u51C6\u53EA\u6709\u4E00\u6761\uFF1A**\u8FD9\u4EF6\u4E8B\u540E\u7AEF\u9700\u4E0D\u9700\u8981\u77E5\u9053**\u3002\u9700\u8981 \u2192 \u8D70\u4E0A\u62A5\uFF08`close` \u7684 `reason`\uFF0C\u6216 `track`\uFF09\uFF1B\u7EAF\u7CB9\u662F\u5BBF\u4E3B\u7684\u672C\u5730\u52A8\u4F5C\u3001\u540E\u7AEF\u4E0D\u5173\u5FC3 \u2192 \u624D\u7528 `call`\u3002"
169
206
  },
170
207
  { t: "h3", text: "\u66DD\u5149\u548C\u5173\u95ED\u4E5F\u8981\u57CB\u70B9\uFF1Astage.onShow / stage.onClose" },
171
208
  {
@@ -192,7 +229,7 @@ countdown_end // \u5012\u8BA1\u65F6\u5F52\u96F6`
192
229
  ["`close-button`", "\u70B9\u4E86\u5173\u95ED\u6309\u94AE"],
193
230
  ["`mask`", "\u70B9\u4E86\u906E\u7F69\uFF08\u9700\u8981 `maskClosable: true`\uFF09"],
194
231
  ["`replace`", "\u88AB `open` \u7684 `replace` \u6A21\u5F0F\u9876\u6389"],
195
- ["\u81EA\u5B9A\u4E49\u503C", '`close` \u52A8\u4F5C\u91CC\u81EA\u5DF1\u5199\u7684 `reason`\uFF0C\u5982 `"never-remind"`'],
232
+ ["\u81EA\u5B9A\u4E49\u503C", '`close` \u52A8\u4F5C\u91CC\u81EA\u5DF1\u5199\u7684 `reason`\uFF0C\u5982 `"user-dismiss"`'],
196
233
  ["`action`", "`close` \u52A8\u4F5C\u6CA1\u5199 `reason` \u65F6\u7684\u9ED8\u8BA4\u503C"]
197
234
  ]
198
235
  },
@@ -213,14 +250,13 @@ countdown_end // \u5012\u8BA1\u65F6\u5F52\u96F6`
213
250
  "textAlign": "center", "lineHeight": 22, "cursor": "pointer" },
214
251
  "action": { "type": "sequence", "actions": [
215
252
  { "type": "track", "event": "notice_close" },
216
- { "type": "call", "name": "setNeverRemind" }, // \u8BB0\u4F4F\u522B\u518D\u51FA
217
- { "type": "close", "reason": "user-dismiss" }
253
+ { "type": "close", "reason": "user-dismiss" } // reason \u4E0A\u62A5\u7ED9\u540E\u7AEF\uFF0C\u636E\u6B64\u4E0D\u518D\u4E0B\u53D1
218
254
  ] } }`
219
255
  },
220
256
  {
221
257
  t: "note",
222
258
  tone: "info",
223
- text: "`close` \u53EA\u662F\u901A\u77E5\u5BBF\u4E3B\u300C\u7528\u6237\u5173\u6389\u4E86\u300D\uFF0C**\u5173\u6389\u4E4B\u540E\u8981\u4E0D\u8981\u518D\u51FA\u3001\u9694\u591A\u4E45\u518D\u51FA\u7531\u5BBF\u4E3B\u51B3\u5B9A**\u3002\u60F3\u8BA9\u5B83\u522B\u518D\u51FA\u73B0\uFF0C\u914D\u4E00\u6761 `call` \u8BA9\u5BBF\u4E3B\u8BB0\u4E0B\u6765\u3002"
259
+ text: '`close` \u53EA\u662F\u901A\u77E5\u5BBF\u4E3B\u300C\u7528\u6237\u5173\u6389\u4E86\u300D\uFF0C**\u8FD9\u4E00\u6B21\u5173\u4E0D\u5173\u7531\u5BBF\u4E3B\u51B3\u5B9A**\uFF1B\u800C\u300C\u4EE5\u540E\u8FD8\u51FA\u4E0D\u51FA\u300D\u7531\u540E\u7AEF\u6839\u636E\u4E0A\u62A5\u7684 `reason` \u51B3\u5B9A\uFF0C\u6240\u4EE5\u60F3\u8BA9\u5B83\u522B\u518D\u51FA\u73B0\uFF0C\u5199 `reason: "user-dismiss"` \u5373\u53EF\uFF0C\u4E0D\u9700\u8981\u518D\u914D `call`\u3002'
224
260
  },
225
261
  {
226
262
  t: "note",
@@ -2204,13 +2240,7 @@ var noticeToPopup = {
2204
2240
  fontSize: 13,
2205
2241
  cursor: "pointer"
2206
2242
  },
2207
- action: {
2208
- type: "sequence",
2209
- actions: [
2210
- { type: "call", name: "setNeverRemind" },
2211
- { type: "close", reason: "user-dismiss" }
2212
- ]
2213
- }
2243
+ action: { type: "close", reason: "user-dismiss" }
2214
2244
  }
2215
2245
  ]
2216
2246
  }
@@ -2576,13 +2606,13 @@ var confirmAndSwitch = {
2576
2606
  background: ORANGE3,
2577
2607
  cursor: "pointer"
2578
2608
  },
2579
- // 确认后整个关掉,两层一起消失
2609
+ // 确认后整个关掉,两层一起消失。
2610
+ // 「不再提醒」的意图靠 reason 上报给后端,不配 call 写本地存储
2580
2611
  action: {
2581
2612
  type: "sequence",
2582
2613
  actions: [
2583
2614
  { type: "track", event: "popup_never_remind_confirm" },
2584
- { type: "call", name: "setNeverRemind" },
2585
- { type: "closeAll" }
2615
+ { type: "closeAll", reason: "user-dismiss" }
2586
2616
  ]
2587
2617
  },
2588
2618
  children: [
@@ -2829,7 +2859,6 @@ var imageBanner = {
2829
2859
  height: "auto",
2830
2860
  layout: "flow",
2831
2861
  style: { radius: 8, maxWidth: 1200, overflow: "hidden" },
2832
- onShow: { type: "track", event: "banner_show", params: { banner: "autumn" } },
2833
2862
  onClose: {
2834
2863
  type: "track",
2835
2864
  event: "banner_dismiss",
@@ -2896,13 +2925,8 @@ var imageBanner = {
2896
2925
  fontSize: 13,
2897
2926
  cursor: "pointer"
2898
2927
  },
2899
- action: {
2900
- type: "sequence",
2901
- actions: [
2902
- { type: "call", name: "setNeverRemind" },
2903
- { type: "close", reason: "user-dismiss" }
2904
- ]
2905
- }
2928
+ // 「不再提醒」写在 close 的 reason 上,上报给后端即可,不配 call 写本地存储
2929
+ action: { type: "close", reason: "user-dismiss" }
2906
2930
  }
2907
2931
  ]
2908
2932
  }
@@ -3033,16 +3057,11 @@ var imageHotspot = {
3033
3057
  {
3034
3058
  id: "hotspot-never",
3035
3059
  type: "box",
3036
- // 最底部「不再提醒」,动作是关弹窗而不是跳转
3060
+ // 最底部「不再提醒」,动作是关弹窗而不是跳转。
3061
+ // reason 上报给后端,后端据此不再下发这条物料——不需要写本地存储
3037
3062
  rect: ["30%", 478, "40%", 26],
3038
3063
  style: { radius: 13, background: HOTSPOT_BG, cursor: "pointer" },
3039
- action: {
3040
- type: "sequence",
3041
- actions: [
3042
- { type: "call", name: "setNeverRemind" },
3043
- { type: "close", reason: "never-remind" }
3044
- ]
3045
- }
3064
+ action: { type: "close", reason: "user-dismiss" }
3046
3065
  }
3047
3066
  ]
3048
3067
  };
@@ -3120,7 +3139,6 @@ var noticeBar = {
3120
3139
  type: "sequence",
3121
3140
  actions: [
3122
3141
  { type: "track", event: "notice_close", params: { notice: "guide" } },
3123
- { type: "call", name: "setNeverRemind" },
3124
3142
  { type: "close", reason: "user-dismiss" }
3125
3143
  ]
3126
3144
  }
@@ -3320,6 +3338,7 @@ function checklistSection() {
3320
3338
  \u6709\u4E00\u4E2A\u4E0D\u5408\u89C4\uFF0C\u6574\u4EFD\u914D\u7F6E\u5C31\u5B58\u4E0D\u4E0A
3321
3339
  - [ ] \u6BCF\u4E2A\u89C6\u56FE\u7684 \`stage\` \u90FD\u6709 \`onShow\` \u66DD\u5149\u57CB\u70B9\u548C \`onClose\` \u5173\u95ED\u57CB\u70B9\uFF0C\`onClose\` \u7684 params \u91CC\u5E26\u4E0A \`"reason": "{{ closeReason }}"\`
3322
3340
  - [ ] \u5173\u95ED\u6309\u94AE\u6CA1\u6709\u591A\u4F59\u7684 \`icon\`\uFF08\u9ED8\u8BA4\u7684\u5185\u7F6E\u77E2\u91CF\u56FE\u6807\u5C31\u662F\u5BF9\u7684\uFF09
3341
+ - [ ] \u6CA1\u6709\u7528 \`call\` \u53BB\u8BB0\u5F55\u7528\u6237\u610F\u56FE\u6216\u5199\u672C\u5730\u5B58\u50A8\uFF08\`call\` \u53EA\u7528\u6765\u8BA9\u5BBF\u4E3B\u505A\u4E00\u4EF6\u4E8B\uFF0C\u5982\u5524\u8D77\u5145\u503C / \u6253\u5F00\u5BA2\u670D / \u590D\u5236\u5230\u526A\u8D34\u677F\uFF09\u3002\u300C\u4E0D\u518D\u63D0\u9192\u300D\u5199\u6210 \`{ "type": "close", "reason": "user-dismiss" }\`\uFF0C\u4E0D\u914D \`call\`
3323
3342
  - [ ] \u8F93\u51FA\u7684\u662F\u5408\u6CD5 JSON\uFF08\u6CA1\u6709\u591A\u4F59\u9017\u53F7\u3001\u6CA1\u6709\u6CE8\u91CA\uFF09`;
3324
3343
  }
3325
3344
  function requirementSection() {
@@ -3357,7 +3376,8 @@ function actionSection() {
3357
3376
  - \`setState\`\uFF1A\`{ "type": "setState", "key": "period", "value": "{{ index }}" }\` \u505A\u9009\u4E2D\u5207\u6362
3358
3377
  - \`close\`\uFF1A\u5173\u6389\u5F53\u524D\u8FD9\u4E00\u5C42\uFF08\u53EA\u6709\u4E00\u5C42\u65F6\u5C31\u662F\u6574\u4F53\u5173\u95ED\uFF09\u3002\u6CE8\u610F\u5B83\u53EA\u662F**\u901A\u77E5\u5BBF\u4E3B\u9875\u9762**\u300C\u7528\u6237\u60F3\u5173\u4E86\u300D\uFF0C\u7531\u5BBF\u4E3B\u51B3\u5B9A\u5173\u4E0D\u5173\uFF1B\u591A\u89C6\u56FE\u65F6\u5173\u5185\u5C42\u4E0D\u4F1A\u901A\u77E5\u5BBF\u4E3B\uFF0C\u53EA\u662F\u56DE\u5230\u4E0B\u9762\u90A3\u5C42
3359
3378
  - \`closeAll\`\uFF1A\u51E0\u5C42\u90FD\u5173\u6389\uFF0C\u4E00\u5B9A\u4F1A\u901A\u77E5\u5BBF\u4E3B
3360
- - \u60F3\u300C\u5173\u4E86\u5C31\u522B\u518D\u51FA\u73B0\u300D\uFF0C\u5149 \`close\` \u4E0D\u591F\uFF0C\u8981\u518D\u914D\u4E00\u6761 \`{ "type": "call", "name": "setNeverRemind" }\` \u8BA9\u5BBF\u4E3B\u8BB0\u4E0B\u6765
3379
+ - \u60F3\u300C\u5173\u4E86\u5C31\u522B\u518D\u51FA\u73B0\u300D\uFF0C\u5C31\u5199 \`{ "type": "close", "reason": "user-dismiss" }\`\u3002\u4E0A\u62A5\u51FA\u53BB\u662F \`{ "event": "close", "reason": "user-dismiss" }\`\uFF0C\u540E\u7AEF\u636E\u6B64\u6C38\u4E45\u538B\u5236\u8FD9\u6761\u7269\u6599\u3002**\u4E0D\u8981**\u518D\u914D \`call\` \u8BA9\u5BBF\u4E3B\u5199\u672C\u5730\u5B58\u50A8\u2014\u2014\u9891\u63A7\u7531\u540E\u7AEF\u7B97\uFF0C\u524D\u7AEF\u5B58\u7684\u4F9D\u636E\u540E\u7AEF\u770B\u4E0D\u89C1\uFF0C\u800C\u4E14\u6362\u8BBE\u5907\u3001\u6E05\u7F13\u5B58\u5C31\u6CA1\u4E86
3380
+ - \`call\`\uFF1A**\u8BA9\u5BBF\u4E3B\u53BB\u505A\u4E00\u4EF6\u4E8B**\uFF08\u5524\u8D77\u5145\u503C\u5F39\u7A97\u3001\u6253\u5F00\u5BA2\u670D\u4F1A\u8BDD\u3001\u590D\u5236\u5230\u526A\u8D34\u677F\u3001\u8DF3\u8F6C\u5E94\u7528\u5185\u7279\u5B9A\u9875\u9762\uFF09\u3002\u5224\u65AD\u6807\u51C6\uFF1A**\u8FD9\u4EF6\u4E8B\u540E\u7AEF\u9700\u4E0D\u9700\u8981\u77E5\u9053**\u2014\u2014\u9700\u8981\u5C31\u8D70\u4E0A\u62A5\uFF08\`close\` \u7684 \`reason\` \u6216 \`track\`\uFF09\uFF0C\u7EAF\u672C\u5730\u52A8\u4F5C\u624D\u7528 \`call\`\u3002\u7EDD\u4E0D\u7528 \`call\` \u8BB0\u5F55\u7528\u6237\u610F\u56FE\u6216\u5199\u672C\u5730\u5B58\u50A8
3361
3381
  - \`open\`\uFF1A\u6253\u5F00\u53E6\u4E00\u4E2A\u89C6\u56FE\uFF0C\u89C1\u4E0B\u4E00\u8282
3362
3382
  - \u4EFB\u4F55\u8282\u70B9\u52A0 \`action\` \u90FD\u80FD\u70B9\u51FB
3363
3383
  - **\u6BCF\u4E2A\u53EF\u70B9\u51FB\u5143\u7D20\u90FD\u5E94\u8BE5\u914D \`track\`**\uFF0C\u5426\u5219\u6CA1\u6709\u6570\u636E\u53EF\u770B
@@ -3407,7 +3427,7 @@ countdown_end // \u5012\u8BA1\u65F6\u5F52\u96F6
3407
3427
 
3408
3428
  - \`onShow\` \u5728\u6570\u636E\u5C31\u7EEA\u3001\u5F39\u7A97\u771F\u6B63\u6E32\u67D3\u51FA\u6765\u65F6\u89E6\u53D1\u4E00\u6B21
3409
3429
  - \`onClose\` \u5728\u70B9 X\u3001\u70B9\u906E\u7F69\u3001\u8D70 \`close\` \u52A8\u4F5C\u3001\u88AB \`replace\` \u9876\u6389\u65F6\u90FD\u4F1A\u89E6\u53D1
3410
- - \`{{ closeReason }}\` \u53D6\u503C\uFF1A\`close-button\` / \`mask\` / \`replace\` / \`close\` \u52A8\u4F5C\u81EA\u5E26\u7684 \`reason\`\uFF08\u5982 \`"never-remind"\`\uFF09/ \u9ED8\u8BA4 \`action\`
3430
+ - \`{{ closeReason }}\` \u53D6\u503C\uFF1A\`close-button\` / \`mask\` / \`replace\` / \`close\` \u52A8\u4F5C\u81EA\u5E26\u7684 \`reason\`\uFF08\u5982 \`"user-dismiss"\`\uFF09/ \u9ED8\u8BA4 \`action\`
3411
3431
  - \u591A\u89C6\u56FE\u65F6\u6BCF\u5C42\u5404\u5199\u5404\u7684\uFF0C\u624D\u80FD\u5206\u5F00\u7EDF\u8BA1
3412
3432
 
3413
3433
  ## \u516C\u544A\u6761 / Banner \u7684\u5173\u95ED
@@ -3420,12 +3440,11 @@ countdown_end // \u5012\u8BA1\u65F6\u5F52\u96F6
3420
3440
  "textAlign": "center", "lineHeight": 22, "cursor": "pointer" },
3421
3441
  "action": { "type": "sequence", "actions": [
3422
3442
  { "type": "track", "event": "notice_guide_close" },
3423
- { "type": "call", "name": "setNeverRemind" },
3424
3443
  { "type": "close", "reason": "user-dismiss" }
3425
3444
  ] } }
3426
3445
  \`\`\`
3427
3446
 
3428
- \`close\` \u53EA\u901A\u77E5\u5BBF\u4E3B\u300C\u7528\u6237\u5173\u6389\u4E86\u300D\uFF0C\u8981\u8BA9\u5B83\u522B\u518D\u51FA\u73B0\u5F97\u914D\u4E00\u6761 \`call\`\u3002
3447
+ \`close\` \u53EA\u901A\u77E5\u5BBF\u4E3B\u300C\u8FD9\u4E00\u6B21\u5173\u4E0D\u5173\u300D\uFF1B\u300C\u4EE5\u540E\u8FD8\u51FA\u4E0D\u51FA\u300D\u7531\u540E\u7AEF\u6309\u4E0A\u62A5\u7684 \`reason\` \u51B3\u5B9A\uFF0C\u6240\u4EE5 \`reason: "user-dismiss"\` \u5C31\u591F\u4E86\uFF0C\u4E0D\u8981\u518D\u914D \`call\`\u3002
3429
3448
  \u6574\u6761\u53EF\u70B9 + \u884C\u672B \xD7 \u4E0D\u4F1A\u51B2\u7A81\uFF1A\u5185\u5C42\u6709\u81EA\u5DF1\u7684 \`action\` \u5C31\u4E0D\u518D\u5192\u6CE1\u7ED9\u5916\u5C42\u3002`;
3430
3449
  }
3431
3450
  function viewsSection() {
package/dist/index.cjs CHANGED
@@ -1173,7 +1173,7 @@ function createRuntime(dsl, options = {}) {
1173
1173
  setState,
1174
1174
  emit,
1175
1175
  openView,
1176
- // 配置里 close 可以自带 reason(如 'never-remind'),要透传给埋点,不能吞掉
1176
+ // 配置里 close 可以自带 reason(如 'user-dismiss'),要透传给埋点,不能吞掉
1177
1177
  closeTop: (reason) => closeTop(reason),
1178
1178
  closeAll: (reason) => closeAll(reason),
1179
1179
  get handlers() {
package/dist/index.js CHANGED
@@ -645,7 +645,7 @@ function createRuntime(dsl, options = {}) {
645
645
  setState,
646
646
  emit,
647
647
  openView,
648
- // 配置里 close 可以自带 reason(如 'never-remind'),要透传给埋点,不能吞掉
648
+ // 配置里 close 可以自带 reason(如 'user-dismiss'),要透传给埋点,不能吞掉
649
649
  closeTop: (reason) => closeTop(reason),
650
650
  closeAll: (reason) => closeAll(reason),
651
651
  get handlers() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yaoxiu/marketing-dsl",
3
- "version": "1.5.0",
3
+ "version": "1.5.2",
4
4
  "type": "module",
5
5
  "description": "营销弹窗 DSL 解释器核心,纯逻辑无框架依赖",
6
6
  "license": "MIT",