feat(rectification): 出卡加精度门槛,补经历改成系统点名
Independent Staging Quality Gate / validate (push) Failing after 6m28s
Independent Staging Quality Gate / publish (push) Skipped

宽度超过 10 分钟或头名并列时不再出交付卡,改为按大运边界逐条问、
用类型芯片和年/月选择器录入。跳过的线换问法再问一次;答「这类事
都没有过」的不再问。用户说「没有了」仍立刻给目前范围。Skill 10.0.27。

BUG-740~743
This commit is contained in:
jesse-ux
2026-09-16 18:35:27 +08:00
parent 317e9f1886
commit cfb41daf3d
75 changed files with 4763 additions and 383 deletions
@@ -14,6 +14,7 @@ import {
remainingCandidatesLine,
remainingSplitLayers,
targetedCollectPool,
TARGETED_EXISTENCE_PROMPT,
} from "../src/lib/rectification-agentic/v9/collection-question-pool.ts";
import { USER_COLLECT_QUESTION, USER_COLLECT_QUESTION_RETRY } from "../src/lib/rectification-agentic/user-copy.ts";
import { isOccupationCollectFocus } from "../src/lib/rectification-agentic/v9/evidence-model.ts";
@@ -165,10 +166,16 @@ test("targeted collect names remaining split layers without inferred years", ()
// 原值: pool.length === 1prompt 含「能把 04:48 和 05:07 分开」
// 新值: 剩余未覆盖线各一张存在卡;题干是「有没有」,剩余候选句走 remainingLine
// 原因: BUG-661 / BUG-662 逐条点选 + 不再用范围端点当候选
assert.equal(pool.map((item) => item.domain).join(","), "relationship,relocation,family,finance");
// 原值: "relationship,relocation,family,finance"
// 新值: 加上 health_pressure
// 原因: D5 remainingTargetedDomains 不再按分盘层剔除,七条线都要轮到
assert.equal(pool.map((item) => item.domain).join(","), "relationship,relocation,family,finance,health_pressure");
assert.equal(pool[0]?.kind, "targeted");
assert.equal(pool[0]?.key, "collect:targeted:relationship");
assert.equal(pool[0]?.prompt, "结过婚或订过婚吗?");
// 原值: "结过婚或订过婚吗?"
// 新值: 领域全称问法,哪一年都算
// 原因: D5 存在性问题必须问整个领域
assert.equal(pool[0]?.prompt, TARGETED_EXISTENCE_PROMPT.relationship);
assert.doesNotMatch(pool.map((item) => item.prompt).join("\n"), SPLIT_ENDPOINT_PHRASE);
assert.doesNotMatch(pool[0]?.prompt ?? "", /1997|2012|推算/);
assert.match(pool[0]?.remainingLine ?? "", /现在还剩 04:48–05:07 里 4 个候选,能把它们分开的是这几条线/);