@geoly-ai/social-hub-core 0.0.7 → 0.0.8

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.
@@ -5,9 +5,18 @@
5
5
  * ① worker 每轮采集后写命中账本;② API 的试跑(dry-run)让运营在开启前先看命中什么;
6
6
  * ③ 未来的回放。任何一处走另一份实现,试跑给出的预览就不再是上线后的真实行为。
7
7
  *
8
- * ## 本期只做 include(P2 才做排除词/否定规则)
9
- * 判定就是「有没有任一 include 规则命中」。DDL `polarity IN ('include')` 与契约层
10
- * 一起把排除词挡在表达能力之外,免得半成品被悄悄用起来。
8
+ * ## include + exclude(P3,迁移 0171 放宽 `polarity` 的 CHECK)
9
+ * 判定分两遍:先跑 include 规则得到命中证据,再跑 exclude 规则**撤销**其中一部分。
10
+ *
11
+ * 🔴 撤销**不是一刀切**,而是按 {@link MONITOR_RULE_ORIGIN_PRECEDENCE} 由低到高:
12
+ * 一条 exclude 规则只能撤销**来源优先级不高于它自己**的 include 证据。
13
+ * `manual` 排除词(30)压得住一切;`expansion` 排除词(10)只压得住扩展词带来的命中 ——
14
+ * 模型扩出来的否定词不该把运营亲手填的 include 词否掉。
15
+ *
16
+ * ⚠️ 「全部被撤销」与「一个 include 都没命中」在 `decision` 上都是 `no_match`,但**成因不同**:
17
+ * 前者要去看排除词、后者要去放宽 include 词。所以 outcome 额外给出
18
+ * {@link MonitorMatchOutcome.exclusionApplied} / `excludedByTerms`,卡片据此分开表述。
19
+ * ⛔ 不要把这两种情况在报告里合并 —— 那正是 P1/P2 一路在防的「空是多义的」。
11
20
  *
12
21
  * ## 归一化管线(逐 code point,保留回原文的偏移映射)
13
22
  * NFKC → NFD → 丢弃组合记号(`\p{M}`)→ 小写
@@ -45,14 +54,24 @@ export type MonitorMatchMode = "word" | "substring" | "phrase";
45
54
  */
46
55
  export type MonitorRuleOrigin = "manual" | "brand_keyword" | "expansion";
47
56
  /**
48
- * 来源优先级(数值越大越"确定是运营本意")。P3 的排除词按它由低到高撤销命中:
57
+ * 来源优先级(数值越大越"确定是运营本意")。排除词按它由低到高撤销命中:
49
58
  * 一条被排除词否掉的帖子,若它同时命中了 `manual` 词,那是运营亲手填的,
50
59
  * 撤销它需要更强的理由;而 `expansion` 是模型扩出来的,排除词理应直接压过。
51
60
  *
52
- * ⚠️ 本期(P2)**不使用**它做任何判定 —— 排除词是 P3。这里只是把维度先立住,
53
- * 免得 P3 回头发现历史规则行全是 NULL、永远补不回来。
61
+ * 🔴 判据是 **`precedence(exclude) >= precedence(include)`**(不是严格大于):
62
+ * 同源的一对 include/exclude 必须能互相作用 —— 否则「运营自己填的排除词压不住
63
+ * 自己填的 include 词」,而那正是排除词最常见的用法(`espresso` 收进来,
64
+ * `espresso martini` 排出去,两条都是 manual)。
54
65
  */
55
66
  export declare const MONITOR_RULE_ORIGIN_PRECEDENCE: Record<MonitorRuleOrigin, number>;
67
+ /**
68
+ * 规则极性(P3,迁移 0171)。`include` = 命中它就算相关;`exclude` = 命中它就**撤销**
69
+ * 同等或更低来源优先级的 include 命中。
70
+ *
71
+ * ⚠️ `exclude` 规则**自己不产生命中**:一条只匹配到 exclude 的帖子是 `no_match`,
72
+ * 而不是「命中了一个负分词」。
73
+ */
74
+ export type MonitorRulePolarity = "include" | "exclude";
56
75
  export type MonitorKeywordRule = {
57
76
  id: string;
58
77
  /** 运营输入的原样字面值(证据与卡片展示用)。 */
@@ -62,6 +81,8 @@ export type MonitorKeywordRule = {
62
81
  weight: number;
63
82
  /** 省略 = `manual`(0169 之前的全部规则都是手工填的)。 */
64
83
  origin?: MonitorRuleOrigin;
84
+ /** 省略 = `include`(0171 之前的全部规则都是 include —— DDL 当时只允许这一个值)。 */
85
+ polarity?: MonitorRulePolarity;
65
86
  };
66
87
  /**
67
88
  * 正文的三态。🔴 **`absent_link_post` 与 `missing` 是两件事**:
@@ -101,6 +122,25 @@ export type MonitorMatchOutcome = {
101
122
  bodyAvailability: MonitorBodyAvailability;
102
123
  /** `decision === "indeterminate"` 时的原因;其余恒为 null。 */
103
124
  indeterminateReason: "body_missing" | null;
125
+ /**
126
+ * 🔴 **有 include 证据被排除词撤销过**。为 true 且 `decision === "no_match"` 时,
127
+ * 这条帖子是「命中了但被排除掉」,而不是「一个词都没命中」——
128
+ * 两者在卡片/报告上必须分开表述(前者去看排除词,后者去放宽 include 词)。
129
+ *
130
+ * ⚠️ 也可能 true 而 `decision === "matched"`:部分证据被撤销、仍有幸存的 include。
131
+ */
132
+ exclusionApplied: boolean;
133
+ /** 实际造成撤销的排除词(原样字面值),按权重降序、字面值升序;已去重。 */
134
+ excludedByTerms: string[];
135
+ /**
136
+ * 🔴 **排除判定不完整**:正文拿不到,而规则集里存在**正文域的 exclude 规则** ——
137
+ * 这条帖子可能本该被排除掉,系统不知道。
138
+ *
139
+ * 取向与 include 侧的 `indeterminate` 一致但方向相反:include 拿不准时不敢当成
140
+ * 不命中(会漏报),exclude 拿不准时不敢当成已排除(同样会漏报)。所以**照发**,
141
+ * 但必须在卡片上标出判定不完整 —— ⛔ 不得静默按「没被排除」处理。
142
+ */
143
+ exclusionIndeterminate: boolean;
104
144
  };
105
145
  /**
106
146
  * 词/短语的归一化形态。DB 的 `normalized_term` 列写的就是它 —— 唯一键靠它把
@@ -141,6 +181,13 @@ export declare function computeMonitorRuleHash(rules: Array<{
141
181
  weight: number;
142
182
  /** 省略或 `manual` ⇒ 指纹与 0169 之前**逐字节一致**(见下)。 */
143
183
  origin?: MonitorRuleOrigin;
184
+ /**
185
+ * 省略或 `include` ⇒ 指纹与 0171 之前**逐字节一致**(同 origin 的向后兼容手法)。
186
+ * 🔴 但 `exclude` **必须**进指纹:否则「加一条排除词」算出来的 hash 与不加时相同,
187
+ * 而 rule_hash 的用途正是回答「这一版规则到底是什么」——
188
+ * 两套语义完全相反的规则集撞成同一个指纹是最坏的一种失效。
189
+ */
190
+ polarity?: MonitorRulePolarity;
144
191
  /** 近义词扩展来源(0169):扩展集 id 与它固化内容的指纹。 */
145
192
  expansionSetId?: string | null;
146
193
  expansionContentHash?: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"subreddit-monitor-matching.d.ts","sourceRoot":"","sources":["../src/subreddit-monitor-matching.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subreddit-monitor-matching.d.ts","sourceRoot":"","sources":["../src/subreddit-monitor-matching.ts"],"names":[],"mappings":"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"}
@@ -5,9 +5,18 @@
5
5
  * ① worker 每轮采集后写命中账本;② API 的试跑(dry-run)让运营在开启前先看命中什么;
6
6
  * ③ 未来的回放。任何一处走另一份实现,试跑给出的预览就不再是上线后的真实行为。
7
7
  *
8
- * ## 本期只做 include(P2 才做排除词/否定规则)
9
- * 判定就是「有没有任一 include 规则命中」。DDL `polarity IN ('include')` 与契约层
10
- * 一起把排除词挡在表达能力之外,免得半成品被悄悄用起来。
8
+ * ## include + exclude(P3,迁移 0171 放宽 `polarity` 的 CHECK)
9
+ * 判定分两遍:先跑 include 规则得到命中证据,再跑 exclude 规则**撤销**其中一部分。
10
+ *
11
+ * 🔴 撤销**不是一刀切**,而是按 {@link MONITOR_RULE_ORIGIN_PRECEDENCE} 由低到高:
12
+ * 一条 exclude 规则只能撤销**来源优先级不高于它自己**的 include 证据。
13
+ * `manual` 排除词(30)压得住一切;`expansion` 排除词(10)只压得住扩展词带来的命中 ——
14
+ * 模型扩出来的否定词不该把运营亲手填的 include 词否掉。
15
+ *
16
+ * ⚠️ 「全部被撤销」与「一个 include 都没命中」在 `decision` 上都是 `no_match`,但**成因不同**:
17
+ * 前者要去看排除词、后者要去放宽 include 词。所以 outcome 额外给出
18
+ * {@link MonitorMatchOutcome.exclusionApplied} / `excludedByTerms`,卡片据此分开表述。
19
+ * ⛔ 不要把这两种情况在报告里合并 —— 那正是 P1/P2 一路在防的「空是多义的」。
11
20
  *
12
21
  * ## 归一化管线(逐 code point,保留回原文的偏移映射)
13
22
  * NFKC → NFD → 丢弃组合记号(`\p{M}`)→ 小写
@@ -30,12 +39,14 @@
30
39
  * 于是 word 模式在 CJK 上退化成子串 —— 这是对的,中文没有空格分词,要求边界等于永不命中。
31
40
  */
32
41
  /**
33
- * 来源优先级(数值越大越"确定是运营本意")。P3 的排除词按它由低到高撤销命中:
42
+ * 来源优先级(数值越大越"确定是运营本意")。排除词按它由低到高撤销命中:
34
43
  * 一条被排除词否掉的帖子,若它同时命中了 `manual` 词,那是运营亲手填的,
35
44
  * 撤销它需要更强的理由;而 `expansion` 是模型扩出来的,排除词理应直接压过。
36
45
  *
37
- * ⚠️ 本期(P2)**不使用**它做任何判定 —— 排除词是 P3。这里只是把维度先立住,
38
- * 免得 P3 回头发现历史规则行全是 NULL、永远补不回来。
46
+ * 🔴 判据是 **`precedence(exclude) >= precedence(include)`**(不是严格大于):
47
+ * 同源的一对 include/exclude 必须能互相作用 —— 否则「运营自己填的排除词压不住
48
+ * 自己填的 include 词」,而那正是排除词最常见的用法(`espresso` 收进来,
49
+ * `espresso martini` 排出去,两条都是 manual)。
39
50
  */
40
51
  export const MONITOR_RULE_ORIGIN_PRECEDENCE = {
41
52
  manual: 30,
@@ -216,42 +227,75 @@ export function evaluateMonitorKeywordRules(input) {
216
227
  norm: normalizeWithOffsets(input.body ?? ""),
217
228
  },
218
229
  };
219
- const evidence = [];
220
- const termWeights = new Map();
221
- const matchedFields = new Set();
222
- let hasBodyScopedRule = false;
223
- for (const rule of input.rules) {
224
- const needle = normalizeMonitorTerm(rule.term);
225
- if (!needle)
226
- continue;
227
- const targets = rule.scope === "both" ? ["title", "body"] : [rule.scope];
228
- if (targets.includes("body"))
229
- hasBodyScopedRule = true;
230
- for (const field of targets) {
231
- // ⚠️ 正文「拿不到」时**照样在拿到的那部分上匹配**(截断正文里也可能已经出现关键词)。
232
- // 只是「没命中」不能被当成结论 —— 那由下面的 indeterminate 分支兜住。
233
- const { source, norm } = fields[field];
234
- const spans = findSpans(norm.text, needle, rule.matchMode);
235
- if (spans.length === 0)
230
+ /** 逐规则求值,只看给定极性的那一批。返回证据 + 「有没有正文域规则」。 */
231
+ const collect = (polarity) => {
232
+ const evidence = [];
233
+ let hasBodyScopedRule = false;
234
+ let strongestBodyScopedOrigin = null;
235
+ for (const rule of input.rules) {
236
+ if ((rule.polarity ?? "include") !== polarity)
237
+ continue;
238
+ const needle = normalizeMonitorTerm(rule.term);
239
+ if (!needle)
236
240
  continue;
237
- matchedFields.add(field);
238
- termWeights.set(rule.term, Math.max(termWeights.get(rule.term) ?? 0, rule.weight));
239
- // 同一条规则在同一个字段里可能命中很多次;证据只留第一处,足够回答「为什么命中」。
240
- const span = spans[0];
241
- const start = norm.startAt[span.start] ?? 0;
242
- const end = norm.endAt[span.end - 1] ?? start;
243
- evidence.push({
244
- ruleId: rule.id,
245
- term: rule.term,
246
- field,
247
- matchMode: rule.matchMode,
248
- weight: rule.weight,
249
- origin: rule.origin ?? "manual",
250
- start,
251
- end,
252
- snippet: buildSnippet(source, start, end),
253
- });
241
+ const targets = rule.scope === "both" ? ["title", "body"] : [rule.scope];
242
+ if (targets.includes("body")) {
243
+ hasBodyScopedRule = true;
244
+ const p = originPrecedence(rule.origin ?? "manual");
245
+ strongestBodyScopedOrigin =
246
+ strongestBodyScopedOrigin == null
247
+ ? p
248
+ : Math.max(strongestBodyScopedOrigin, p);
249
+ }
250
+ for (const field of targets) {
251
+ // ⚠️ 正文「拿不到」时**照样在拿到的那部分上匹配**(截断正文里也可能已经出现关键词)。
252
+ // 只是「没命中」不能被当成结论 —— 那由下面的 indeterminate 分支兜住。
253
+ const { source, norm } = fields[field];
254
+ const spans = findSpans(norm.text, needle, rule.matchMode);
255
+ if (spans.length === 0)
256
+ continue;
257
+ // 同一条规则在同一个字段里可能命中很多次;证据只留第一处,足够回答「为什么命中」。
258
+ const span = spans[0];
259
+ const start = norm.startAt[span.start] ?? 0;
260
+ const end = norm.endAt[span.end - 1] ?? start;
261
+ evidence.push({
262
+ ruleId: rule.id,
263
+ term: rule.term,
264
+ field,
265
+ matchMode: rule.matchMode,
266
+ weight: rule.weight,
267
+ origin: rule.origin ?? "manual",
268
+ start,
269
+ end,
270
+ snippet: buildSnippet(source, start, end),
271
+ });
272
+ }
254
273
  }
274
+ return { evidence, hasBodyScopedRule, strongestBodyScopedOrigin };
275
+ };
276
+ const included = collect("include");
277
+ const excluded = collect("exclude");
278
+ // 🔴 排除:一条 exclude 证据只撤销**来源优先级不高于它自己**的 include 证据
279
+ //(判据是 `>=`,见 MONITOR_RULE_ORIGIN_PRECEDENCE 的注释:同源的一对必须能互相作用)。
280
+ // 取所有命中到的 exclude 里最高的那一档 —— 多条 exclude 是「或」的关系。
281
+ const strongestExclusion = excluded.evidence.reduce((best, e) => Math.max(best ?? Number.NEGATIVE_INFINITY, originPrecedence(e.origin)), null);
282
+ const survivors = strongestExclusion == null
283
+ ? included.evidence
284
+ : included.evidence.filter((e) => originPrecedence(e.origin) > strongestExclusion);
285
+ const exclusionApplied = survivors.length < included.evidence.length;
286
+ // 只登记**真的造成了撤销**的排除词:一条 exclude 命中了但压不住任何 include
287
+ //(如 expansion exclude 遇上 manual include)时,说「因为 X 被排除」是错的。
288
+ const excludedByTerms = exclusionApplied
289
+ ? dedupeTermsByWeight(excluded.evidence.filter((e) => originPrecedence(e.origin) === strongestExclusion))
290
+ : [];
291
+ // 🔴 正文拿不到 + 存在**正文域的 exclude 规则** ⇒ 「这条会不会被排除」判不了。
292
+ // 与 include 侧同样的取向:拿不准时不敢当成已排除(那会漏报),照发但标出来。
293
+ const exclusionIndeterminate = bodyAvailability === "missing" && excluded.hasBodyScopedRule;
294
+ const termWeights = new Map();
295
+ const matchedFields = new Set();
296
+ for (const e of survivors) {
297
+ matchedFields.add(e.field);
298
+ termWeights.set(e.term, Math.max(termWeights.get(e.term) ?? 0, e.weight));
255
299
  }
256
300
  const matchedTerms = [...termWeights.entries()]
257
301
  .sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]))
@@ -262,18 +306,39 @@ export function evaluateMonitorKeywordRules(input) {
262
306
  decision: "matched",
263
307
  matchedTerms,
264
308
  matchedFields: ["title", "body"].filter((f) => matchedFields.has(f)),
265
- evidence: evidence
309
+ evidence: survivors
266
310
  .sort((a, b) => b.weight - a.weight || a.term.localeCompare(b.term))
267
311
  .slice(0, MAX_EVIDENCE),
268
312
  totalWeight,
269
313
  bodyAvailability,
270
314
  indeterminateReason: null,
315
+ exclusionApplied,
316
+ excludedByTerms,
317
+ exclusionIndeterminate,
271
318
  };
272
319
  }
273
- // 🔴 拿不到正文 + 存在正文域规则 ⇒ 「判不了」,不是「不命中」。
320
+ /*
321
+ * 🔴 拿不到正文 + 正文里**还可能藏着一条撑得住当前排除词的 include 命中**
322
+ * ⇒ 「判不了」,不是「不命中」。
323
+ *
324
+ * ⚠️ 判据只看 include 侧的正文域规则:一个全是 exclude 的正文域规则集不会藏起任何
325
+ * include 命中,把它也算进来会把「确实不相关」的帖子整批伪装成「待确认」,
326
+ * 反而制造刷屏。
327
+ *
328
+ * 🔴 **不能写成 `!exclusionApplied && ...`**(Codex 复核 P0)。反例:
329
+ * include: 标题词 `foo`、正文词 `bar`;exclude: 标题词 `foo`;标题是 `foo`、正文拿不到。
330
+ * 标题上的 include 被撤销 ⇒ exclusionApplied = true,但正文里**仍可能**有 `bar`,
331
+ * 而 `bar` 是不是也会被撤销同样不知道。用 exclusionApplied 一票否决,
332
+ * 就把「正文没抓到」变成了「规则不匹配」—— 正是本期禁止的那种静默漏报。
333
+ *
334
+ * ⇒ 正确判据:存在正文域 include 规则,**且它的来源优先级压得过已命中的最强排除词**
335
+ * (`> strongestExclusion`)。若最强排除词是 manual(30),任何 include 都撑不住,
336
+ * 那时 `no_match` 才是确定结论 —— 补到正文也不会改变结果。
337
+ */
274
338
  const indeterminate = bodyAvailability === "missing" &&
275
- hasBodyScopedRule &&
276
- input.rules.length > 0;
339
+ included.strongestBodyScopedOrigin != null &&
340
+ (strongestExclusion == null ||
341
+ included.strongestBodyScopedOrigin > strongestExclusion);
277
342
  return {
278
343
  decision: indeterminate ? "indeterminate" : "no_match",
279
344
  matchedTerms: [],
@@ -282,8 +347,24 @@ export function evaluateMonitorKeywordRules(input) {
282
347
  totalWeight: 0,
283
348
  bodyAvailability,
284
349
  indeterminateReason: indeterminate ? "body_missing" : null,
350
+ exclusionApplied,
351
+ excludedByTerms,
352
+ exclusionIndeterminate,
285
353
  };
286
354
  }
355
+ function originPrecedence(origin) {
356
+ return MONITOR_RULE_ORIGIN_PRECEDENCE[origin];
357
+ }
358
+ /** 证据 → 去重后的字面值列表,按权重降序、字面值升序(与 matchedTerms 同一套序)。 */
359
+ function dedupeTermsByWeight(evidence) {
360
+ const weights = new Map();
361
+ for (const e of evidence) {
362
+ weights.set(e.term, Math.max(weights.get(e.term) ?? 0, e.weight));
363
+ }
364
+ return [...weights.entries()]
365
+ .sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]))
366
+ .map(([term]) => term);
367
+ }
287
368
  /**
288
369
  * 规则集指纹。激活时物化到 `rule_hash`,用于回答「这一版规则到底是什么」以及
289
370
  * 「新提交的这一版和当前 active 的是不是同一套」。
@@ -312,11 +393,17 @@ lookbackMinutes) {
312
393
  // 若无条件追加片段,每一条存量 active 版本的指纹都会与库里存的对不上,
313
394
  // 而 rule_hash 的唯一用途正是回答「这一版规则到底是什么 / 新提交的是不是
314
395
  // 同一套」—— 对不上就等于这个字段全部失效。
396
+ // 🔴 **排除词必须进指纹**(0171)。同样用「只有非默认值才追加片段」的手法:
397
+ // include 一个字节都不追加 ⇒ 存量 active 版本的 rule_hash 一个 bit 不变;
398
+ // 而 exclude 追加 `\0pol=exclude`,于是「加一条排除词」不可能与不加撞成同一个指纹。
399
+ // ⛔ 不要改成无条件追加 `pol=${polarity}` —— 那会让全部存量指纹失效,
400
+ // 而 rule_hash 不可原地改(0168 的 update guard 直接 raise)。
401
+ const pol = (r.polarity ?? "include") === "exclude" ? "\0pol=exclude" : "";
315
402
  if (origin === "manual")
316
- return base;
403
+ return `${base}${pol}`;
317
404
  // 扩展集的**内容摘要**一起进指纹(需求 A-3):这样「这一版规则是什么」
318
405
  // 连近义词一起答得出来,而不是只答得出「有个扩展集 id」。
319
- return `${base}origin=${origin}src=${r.expansionSetId ?? ""}ch=${r.expansionContentHash ?? ""}`;
406
+ return `${base}${pol}origin=${origin}src=${r.expansionSetId ?? ""}ch=${r.expansionContentHash ?? ""}`;
320
407
  })
321
408
  // 稳定序:指纹不得随插入顺序变化,否则「同一套规则」会算出两个哈希。
322
409
  .sort(),
@@ -1 +1 @@
1
- {"version":3,"file":"subreddit-monitor-matching.js","sourceRoot":"","sources":["../src/subreddit-monitor-matching.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subreddit-monitor-matching.js","sourceRoot":"","sources":["../src/subreddit-monitor-matching.ts"],"names":[],"mappings":"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"}
@@ -312,4 +312,236 @@ describe("空规则集", () => {
312
312
  expect(out.indeterminateReason).toBeNull();
313
313
  });
314
314
  });
315
+ /* ═════════════ 排除词(P3,0171) ═════════════
316
+ *
317
+ * 🔴 本组每一条负向断言旁边都钉了**正向对照**(「去掉排除词它会命中」)。
318
+ * 没有对照时,一个「matcher 永远返回 no_match」的变异会让整组绿灯通过 ——
319
+ * 那时证明的不是排除词生效,而是「这个查询对谁都空」。
320
+ */
321
+ describe("排除词:撤销、优先级、以及「被排除 ≠ 没命中」", () => {
322
+ it("🔴 manual 排除词撤销同为 manual 的 include —— 判据是 >= 不是 >", () => {
323
+ const rules = [
324
+ rule("espresso"),
325
+ rule("espresso martini", { polarity: "exclude", matchMode: "phrase" }),
326
+ ];
327
+ // 正向对照:去掉排除词,同一条帖子**确实会命中**。
328
+ const without = evaluate("Best espresso martini recipe", "", [rules[0]]);
329
+ expect(without.decision).toBe("matched");
330
+ expect(without.matchedTerms).toEqual(["espresso"]);
331
+ const with_ = evaluate("Best espresso martini recipe", "", rules);
332
+ expect(with_.decision).toBe("no_match");
333
+ // 🔴 「被排除」与「没命中」都是 no_match,但成因必须分得出来。
334
+ expect(with_.exclusionApplied).toBe(true);
335
+ expect(with_.excludedByTerms).toEqual(["espresso martini"]);
336
+ // 另一条同样命中 include、但不含排除短语的帖子照常命中(排除词没有误伤)。
337
+ const other = evaluate("My espresso setup", "", rules);
338
+ expect(other.decision).toBe("matched");
339
+ expect(other.exclusionApplied).toBe(false);
340
+ expect(other.excludedByTerms).toEqual([]);
341
+ });
342
+ it("🔴 expansion 排除词压不住 manual include(优先级由低到高撤销)", () => {
343
+ const manualInclude = rule("espresso", { origin: "manual" });
344
+ const expansionExclude = rule("coffee", {
345
+ polarity: "exclude",
346
+ origin: "expansion",
347
+ });
348
+ const out = evaluate("espresso and coffee", "", [
349
+ manualInclude,
350
+ expansionExclude,
351
+ ]);
352
+ // 正向对照 ①:排除词确实**匹配到了**这条帖子(否则下面证的是「它压根没命中」)。
353
+ const asInclude = evaluate("espresso and coffee", "", [
354
+ rule("coffee", { origin: "expansion" }),
355
+ ]);
356
+ expect(asInclude.decision).toBe("matched");
357
+ // 正向对照 ②:同一条 expansion 排除词**压得住** expansion include。
358
+ const vsExpansion = evaluate("espresso and coffee", "", [
359
+ rule("espresso", { origin: "expansion" }),
360
+ expansionExclude,
361
+ ]);
362
+ expect(vsExpansion.decision).toBe("no_match");
363
+ expect(vsExpansion.exclusionApplied).toBe(true);
364
+ // 主张:expansion(10) 撤销不了 manual(30)。
365
+ expect(out.decision).toBe("matched");
366
+ expect(out.matchedTerms).toEqual(["espresso"]);
367
+ expect(out.exclusionApplied).toBe(false);
368
+ });
369
+ it("manual 排除词压得住 brand_keyword 与 expansion 的 include", () => {
370
+ for (const origin of ["brand_keyword", "expansion"]) {
371
+ const include = rule("espresso", { origin });
372
+ // 正向对照:没有排除词时它命中。
373
+ expect(evaluate("espresso time", "", [include]).decision).toBe("matched");
374
+ const out = evaluate("espresso time", "", [
375
+ include,
376
+ rule("espresso", { polarity: "exclude", origin: "manual" }),
377
+ ]);
378
+ expect(out.decision).toBe("no_match");
379
+ expect(out.exclusionApplied).toBe(true);
380
+ }
381
+ });
382
+ it("部分撤销:幸存的 include 仍然让帖子命中,且证据里只剩幸存的那条", () => {
383
+ const out = evaluate("espresso and latte", "", [
384
+ rule("espresso", { origin: "expansion" }),
385
+ rule("latte", { origin: "manual" }),
386
+ rule("espresso", { polarity: "exclude", origin: "expansion" }),
387
+ ]);
388
+ expect(out.decision).toBe("matched");
389
+ expect(out.matchedTerms).toEqual(["latte"]);
390
+ expect(out.evidence.map((e) => e.term)).toEqual(["latte"]);
391
+ // 撤销确实发生过 —— 只是没把整条帖子否掉。
392
+ expect(out.exclusionApplied).toBe(true);
393
+ });
394
+ it("🔴 exclude 规则自己不产生命中(全 exclude 的规则集对谁都是 no_match)", () => {
395
+ const out = evaluate("espresso", "", [
396
+ rule("espresso", { polarity: "exclude" }),
397
+ ]);
398
+ expect(out.decision).toBe("no_match");
399
+ expect(out.matchedTerms).toEqual([]);
400
+ // ⚠️ 没有任何 include 被撤销 ⇒ 不能报告「被排除」(那会让运营去查排除词,
401
+ // 而真正的问题是这个规则集根本没有 include 词)。
402
+ expect(out.exclusionApplied).toBe(false);
403
+ });
404
+ it("命中了但压不住任何 include 的排除词,不会被列进 excludedByTerms", () => {
405
+ const out = evaluate("espresso and coffee", "", [
406
+ rule("espresso", { origin: "manual" }),
407
+ rule("coffee", { polarity: "exclude", origin: "expansion" }),
408
+ ]);
409
+ expect(out.decision).toBe("matched");
410
+ // 说「因为 coffee 被排除」是错的 —— 它一条都没撤销掉。
411
+ expect(out.excludedByTerms).toEqual([]);
412
+ });
413
+ });
414
+ describe("🔴 排除词 × 正文缺失:不确定性不得被压掉", () => {
415
+ const missing = "missing";
416
+ /**
417
+ * 🔴 Codex 复核 P0 的那个形状,但**判据不是 `!exclusionApplied`**。
418
+ *
419
+ * 「标题 include 被撤销了」本身不足以判 no_match —— 得看正文里**还可能不可能**
420
+ * 藏着一条撑得住这条排除词的 include。撑得住 ⇒ 正文缺失就仍然是「判不了」。
421
+ *
422
+ * 反过来,如果最强排除词压得过**所有**正文域 include(下一条用例),
423
+ * 那么补到正文也不会改变结果,no_match 才是确定结论而不是掩盖不确定性。
424
+ */
425
+ it("正文域 include 压得过排除词时,decision 仍是 indeterminate(Codex 复核 P0)", () => {
426
+ // include: 标题词 foo(expansion) + 正文词 bar(manual);exclude: 标题词 foo(expansion)。
427
+ // 标题是 foo、正文拿不到 —— 正文里的 bar 是 manual,expansion 排除词压不住它。
428
+ const rules = [
429
+ rule("foo", { scope: "title", origin: "expansion" }),
430
+ rule("bar", { scope: "body", origin: "manual" }),
431
+ rule("foo", { polarity: "exclude", scope: "title", origin: "expansion" }),
432
+ ];
433
+ const out = evaluate("foo", null, rules, missing);
434
+ // 标题上的 include 被撤销了 —— 但正文里**仍可能**有 bar,而 bar 撑得住。
435
+ expect(out.exclusionApplied).toBe(true);
436
+ // 🔴 绝不能因此判 no_match:那是把「正文没抓到」变成「规则不匹配」。
437
+ expect(out.decision).toBe("indeterminate");
438
+ expect(out.indeterminateReason).toBe("body_missing");
439
+ // 正向对照:正文真的拿到了、里面确实有 bar ⇒ 命中(证明上面那条不是空转)。
440
+ const withBody = evaluate("foo", "bar is here", rules, "present");
441
+ expect(withBody.decision).toBe("matched");
442
+ expect(withBody.matchedTerms).toEqual(["bar"]);
443
+ });
444
+ it("同强度的排除词压得住正文域 include 时,no_match 是确定结论(不是掩盖)", () => {
445
+ // 全 manual:foo 的排除词同样压得住正文里的 bar ⇒ 补到正文也改变不了结果。
446
+ const out = evaluate("foo", null, [
447
+ rule("foo", { scope: "title" }),
448
+ rule("bar", { scope: "body" }),
449
+ rule("foo", { polarity: "exclude", scope: "title" }),
450
+ ], missing);
451
+ expect(out.decision).toBe("no_match");
452
+ expect(out.exclusionApplied).toBe(true);
453
+ // 正向对照:正文真的拿到了、里面确实有 bar —— 结论**仍是** no_match,
454
+ // 证明上面那句「补到正文也不会变」不是靠 missing 分支蒙对的。
455
+ const withBody = evaluate("foo", "bar is here", [
456
+ rule("foo", { scope: "title" }),
457
+ rule("bar", { scope: "body" }),
458
+ rule("foo", { polarity: "exclude", scope: "title" }),
459
+ ], "present");
460
+ expect(withBody.decision).toBe("no_match");
461
+ });
462
+ it("最强排除词压得过全部正文域 include 时,no_match 才是确定结论", () => {
463
+ // manual exclude(30) 压得过 expansion 的正文域 include(10):补到正文也不会改变结果。
464
+ const out = evaluate("foo", null, [
465
+ rule("bar", { scope: "body", origin: "expansion" }),
466
+ rule("foo", { polarity: "exclude", scope: "title", origin: "manual" }),
467
+ rule("foo", { scope: "title", origin: "expansion" }),
468
+ ], missing);
469
+ expect(out.exclusionApplied).toBe(true);
470
+ expect(out.decision).toBe("no_match");
471
+ // 正向对照:把排除词拿掉,同一份输入会判 indeterminate(正文域 include 还在)。
472
+ const noExclude = evaluate("foo", null, [
473
+ rule("bar", { scope: "body", origin: "expansion" }),
474
+ rule("foo", { scope: "title", origin: "expansion" }),
475
+ ], missing);
476
+ expect(noExclude.decision).toBe("matched");
477
+ });
478
+ it("命中确定、但正文域排除词判不了 ⇒ matched + exclusionIndeterminate(照发,标出来)", () => {
479
+ const out = evaluate("espresso", null, [
480
+ rule("espresso", { scope: "title" }),
481
+ rule("martini", { polarity: "exclude", scope: "body" }),
482
+ ], missing);
483
+ expect(out.decision).toBe("matched");
484
+ expect(out.matchedTerms).toEqual(["espresso"]);
485
+ // 🔴 拿不准时不敢当成已排除(那会漏报),但必须标出来。
486
+ expect(out.exclusionIndeterminate).toBe(true);
487
+ // 正向对照:正文拿到了、且确实含排除词 ⇒ 真的被排除。
488
+ const resolved = evaluate("espresso", "a martini recipe", [
489
+ rule("espresso", { scope: "title" }),
490
+ rule("martini", { polarity: "exclude", scope: "body" }),
491
+ ], "present");
492
+ expect(resolved.decision).toBe("no_match");
493
+ expect(resolved.exclusionApplied).toBe(true);
494
+ expect(resolved.exclusionIndeterminate).toBe(false);
495
+ });
496
+ it("排除词只在标题域时,正文缺失不产生 exclusionIndeterminate", () => {
497
+ const out = evaluate("espresso", null, [
498
+ rule("espresso", { scope: "title" }),
499
+ rule("martini", { polarity: "exclude", scope: "title" }),
500
+ ], missing);
501
+ expect(out.decision).toBe("matched");
502
+ // 标题在手上,排除判定是**完整**的 —— 标成「判不了」会制造假的不确定性。
503
+ expect(out.exclusionIndeterminate).toBe(false);
504
+ });
505
+ it("link post 的正文缺失是事实,不产生任何不确定性", () => {
506
+ const out = evaluate("espresso", null, [
507
+ rule("espresso", { scope: "title" }),
508
+ rule("martini", { polarity: "exclude", scope: "body" }),
509
+ ], "absent_link_post");
510
+ expect(out.decision).toBe("matched");
511
+ expect(out.exclusionIndeterminate).toBe(false);
512
+ });
513
+ });
514
+ describe("🔴 rule_hash × polarity 的向后兼容", () => {
515
+ const one = [
516
+ {
517
+ normalizedTerm: "espresso",
518
+ scope: "both",
519
+ matchMode: "word",
520
+ weight: 1,
521
+ },
522
+ ];
523
+ it("include(含省略)的指纹与 0171 之前逐字节一致 —— 冻结 golden", () => {
524
+ // 与上面那条 P1 golden 同值:polarity 默认 include 时**一个字节都不追加**。
525
+ expect(computeMonitorRuleHash(one, 720)).toBe("fnv1a64:e18fadf886d0a40a:1");
526
+ expect(computeMonitorRuleHash(one.map((r) => ({ ...r, polarity: "include" })), 720)).toBe("fnv1a64:e18fadf886d0a40a:1");
527
+ });
528
+ it("🔴 exclude 必须改变指纹(否则「加一条排除词」与不加撞成同一个 hash)", () => {
529
+ const asExclude = computeMonitorRuleHash(one.map((r) => ({ ...r, polarity: "exclude" })), 720);
530
+ expect(asExclude).not.toBe(computeMonitorRuleHash(one, 720));
531
+ // 更要紧的一组:同一个词的 include 版与 exclude 版**共存**时,
532
+ // 与只有 include 那一版必须不同 —— 两者的过滤语义完全相反。
533
+ const both = computeMonitorRuleHash([
534
+ one[0],
535
+ {
536
+ normalizedTerm: "espresso",
537
+ scope: "title",
538
+ matchMode: "word",
539
+ weight: 1,
540
+ polarity: "exclude",
541
+ },
542
+ ], 720);
543
+ expect(both).not.toBe(computeMonitorRuleHash(one, 720));
544
+ expect(both).not.toBe(asExclude);
545
+ });
546
+ });
315
547
  //# sourceMappingURL=subreddit-monitor-matching.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"subreddit-monitor-matching.test.js","sourceRoot":"","sources":["../src/subreddit-monitor-matching.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subreddit-monitor-matching.test.js","sourceRoot":"","sources":["../src/subreddit-monitor-matching.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geoly-ai/social-hub-core",
3
- "version": "0.0.7",
3
+ "version": "0.0.8",
4
4
  "type": "module",
5
5
  "description": "Shared error types and primitives for Social Ops Hub",
6
6
  "repository": {