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
@@ -114,10 +114,12 @@ function assertInviteCollect(plan: ReturnType<typeof buildMethodFollowupPlan>) {
}
function assertNoLeftoverDatedCollect(plan: ReturnType<typeof buildMethodFollowupPlan>) {
// 原值: 训练门开后仍按未覆盖领域采集
// 新值: 训练门开后不再轮转采集
// 原因: S2/S3 走选择题或交付(BUG-648
assert.notEqual(plan.next_followup?.intent, "collect_method_evidence");
// 原值: 训练门开后不再轮转采集
// 新值: 允许七条线的定向存在性题;禁止 leftover 邀请/other 采集
// 原因: D5 未覆盖领域仍要问
const followup = plan.next_followup;
if (!followup || followup.intent !== "collect_method_evidence") return;
assert.match(followup.collection_key ?? "", /^collect:(?:targeted|guided):/);
}
function datedEvidence(
@@ -1013,7 +1015,7 @@ test("read-case follows method plan and keeps D9/D10 type tables when SQL missin
// 新值: 存在题卡带 choice_frame,不计分
// 原因: BUG-661 定向补事改为逐条点选
assert.equal(projection.method_followup_plan.next_followup?.choice_frame?.scoring, false);
assert.match(projection.method_followup_plan.next_followup?.choice_frame?.prompt ?? "", /结过婚|订过婚/);
assert.match(projection.method_followup_plan.next_followup?.choice_frame?.prompt ?? "", /订婚或结婚|哪一年都算/);
});
test("accepted batch evidence resolves a spoken collect focus before the next question", async () => {
@@ -1448,9 +1450,11 @@ test("rescore failure does not fail the evidence write", async () => {
test("public tool surface stays at 14 and new cases bind 10.0.26", () => {
assert.equal(PUBLIC_RECTIFICATION_TOOLS.length, 14);
// 原值: "10.0.25"
// 值: "10.0.26"
// 值: "10.0.26"
// 新值: "10.0.27"
// 原因: 出卡精度门槛 + 引导式补经历
// 原因: BUG-668 定向补事第四选项写进 Skill
assert.equal(RECTIFICATION_SKILL_VERSION, "10.0.26");
assert.equal(RECTIFICATION_SKILL_VERSION, "10.0.27");
const deprecated = resolveExactSkillPackage(
"jyotish-birth-time-rectification",
"10.0.2",
@@ -1763,10 +1767,13 @@ test("precision stage d4 asks home change not family, and d5 asks education", ()
evidence: covered.filter((item) => item.domain !== "education"),
precisionStage: "d5_refine",
});
// 原值: d5_education 精度层 / 学业采集
// 新值: 训练门开后不再为未覆盖学业轮转采集
// 原因: S2 不再把精度层改写成领域采集(BUG-648)
assert.notEqual(d5.next_followup?.intent, "collect_method_evidence");
// 原值: 训练门开后不再为未覆盖学业轮转采集
// 新值: 未覆盖学业会出定向存在性题
// 原因: D5 七条线都会问到
if (d5.next_followup?.intent === "collect_method_evidence") {
assert.equal(d5.next_followup.domain, "education");
assert.match(d5.next_followup.collection_key ?? "", /^collect:targeted:education/);
}
assert.doesNotMatch(JSON.stringify(d4), UNIQUE_MINUTE_COPY);
});