@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.
- package/dist/subreddit-monitor-matching.d.ts +53 -6
- package/dist/subreddit-monitor-matching.d.ts.map +1 -1
- package/dist/subreddit-monitor-matching.js +133 -46
- package/dist/subreddit-monitor-matching.js.map +1 -1
- package/dist/subreddit-monitor-matching.test.js +232 -0
- package/dist/subreddit-monitor-matching.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -5,9 +5,18 @@
|
|
|
5
5
|
* ① worker 每轮采集后写命中账本;② API 的试跑(dry-run)让运营在开启前先看命中什么;
|
|
6
6
|
* ③ 未来的回放。任何一处走另一份实现,试跑给出的预览就不再是上线后的真实行为。
|
|
7
7
|
*
|
|
8
|
-
* ##
|
|
9
|
-
*
|
|
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
|
-
* 来源优先级(数值越大越"确定是运营本意")
|
|
57
|
+
* 来源优先级(数值越大越"确定是运营本意")。排除词按它由低到高撤销命中:
|
|
49
58
|
* 一条被排除词否掉的帖子,若它同时命中了 `manual` 词,那是运营亲手填的,
|
|
50
59
|
* 撤销它需要更强的理由;而 `expansion` 是模型扩出来的,排除词理应直接压过。
|
|
51
60
|
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
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":"AAAA
|
|
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
|
-
* ##
|
|
9
|
-
*
|
|
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
|
-
* 来源优先级(数值越大越"确定是运营本意")
|
|
42
|
+
* 来源优先级(数值越大越"确定是运营本意")。排除词按它由低到高撤销命中:
|
|
34
43
|
* 一条被排除词否掉的帖子,若它同时命中了 `manual` 词,那是运营亲手填的,
|
|
35
44
|
* 撤销它需要更强的理由;而 `expansion` 是模型扩出来的,排除词理应直接压过。
|
|
36
45
|
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
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
|
-
|
|
220
|
-
const
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
const
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
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
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
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:
|
|
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
|
-
|
|
276
|
-
|
|
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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"}
|