fix(rectification): offer representative time once event-fit is enough

Keep unique-top and width on confirmation only, and stop lagna-frame follow-ups from blocking cards on an already-scored cluster.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-08-21 02:01:57 +08:00
co-authored by Cursor
parent 5fdabfae89
commit a88467ffa8
12 changed files with 180 additions and 41 deletions
@@ -178,12 +178,6 @@ function action(
}
const USER_STOP_PATTERN = /暂时想不到了|没有更多|先这样/;
const NON_BLOCKING_OFFER_METHODS = new Set<MethodFollowup["method_id"]>([
"appearance",
"marks",
"horary",
"oos_blind",
]);
export function latestUserStoppedCollecting(
turns: readonly Readonly<{ role: string; text: string | null }>[],
@@ -206,7 +200,8 @@ export function isOfferBlockingFollowup(
return true;
}
if (!followup) return false;
return !NON_BLOCKING_OFFER_METHODS.has(followup.method_id);
if (followup.source !== "method_coverage") return false;
return BLOCKING_COVERAGE_IDS.has(followup.method_id as MethodFollowupId);
}
export function conversationalSessionOutcome(input: {
@@ -376,19 +371,6 @@ export function buildMethodFollowupPlan(input: {
),
source: "method_coverage",
});
} else if (stage === "lagna_frame") {
next = followup({
method_id: "dasha_events",
intent: "distinguish_candidates",
ask_theme: "dated_event",
domain: null,
kind_hint: null,
user_prompt_hint: abcdHint(
"窗口里本命上升还可能落在两段。请再补一件记得大概时间的经历,用来分开这两段。",
"本命上升 / Dasha",
),
source: "precision_stage",
});
} else if (!relationshipCovered && !declined.has("relationship")) {
next = followup({
method_id: "d9_relationship",
@@ -487,6 +469,19 @@ export function buildMethodFollowupPlan(input: {
),
source: "method_coverage",
});
} else if (stage === "lagna_frame") {
next = followup({
method_id: "dasha_events",
intent: "distinguish_candidates",
ask_theme: "dated_event",
domain: null,
kind_hint: null,
user_prompt_hint: abcdHint(
"窗口里本命上升还可能落在两段。请再补一件记得大概时间的经历,用来分开这两段。",
"本命上升 / Dasha",
),
source: "precision_stage",
});
} else if (stage === "d9_refine" && !declined.has("relationship")) {
next = followup({
method_id: "d9_relationship",