fix(rectification): 有题就接着问,题问完才出卡;引导窗口不再硬贴领域
出卡时机只看题源有没有空:撤回「门槛达标就短路采集线」的写法,同时 按 D2 保住「题源全空就按现行规则出卡」——门槛只在还有题可问时挡住 出卡,precision_gate_met 改成只上报(新挂在决策与公开投影上),不再 单独决定时机。引导窗口题在无领域轨道上改问开放题,一个时间窗只问一 次;录入卡提交的是「YYYY 年 M 月,<领域>方面有一件事」,不再是题干 的三选一列表。记忆化 golden 只补一个新键并冻结墙钟。离线回放改成注 入真值方向的边界事件,另跑一组反方向对照。Skill 10.0.28。 BUG-747~752 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JUei7K13cYxLHE3Axe4A45
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
a396bbe076
commit
dc732825d8
@@ -6,8 +6,9 @@ import { EventDatePicker, type EventDateValue } from "@/components/event-date-pi
|
||||
import { Button } from "@/components/ui/button";
|
||||
import {
|
||||
COLLECT_KIND_ORDER,
|
||||
KIND_ORAL,
|
||||
GUIDED_ANY_DOMAIN,
|
||||
type CollectKind,
|
||||
type GuidedWindowDomain,
|
||||
} from "@/lib/rectification-agentic/v9/collection-question-pool";
|
||||
import { RANGE_DELIVERY_DOMAIN_LABEL } from "@/lib/rectification-agentic/user-copy";
|
||||
|
||||
@@ -18,11 +19,17 @@ export type EventDateEntrySubmit = Readonly<{
|
||||
day: number | null;
|
||||
}>;
|
||||
|
||||
/**
|
||||
* BUG-750: the card already knows the date and the domain the user picked, so
|
||||
* it states the one fact. The old text pasted the question's option list
|
||||
* ("开始认真关系、分手或结婚"), which the ledger then stored as the summary.
|
||||
*/
|
||||
export function formatEventDateEntryMessage(input: EventDateEntrySubmit): string {
|
||||
const when = input.day
|
||||
? `${input.year} 年 ${input.month} 月 ${input.day} 日`
|
||||
: `${input.year} 年 ${input.month} 月`;
|
||||
return `${when},${KIND_ORAL[input.domain]}`;
|
||||
const label = RANGE_DELIVERY_DOMAIN_LABEL[input.domain] ?? input.domain;
|
||||
return `${when},${label}方面有一件事`;
|
||||
}
|
||||
|
||||
export function eventDateYearRange(
|
||||
@@ -36,8 +43,17 @@ export function eventDateYearRange(
|
||||
return { minYear: Math.max(1900, maxYear - 80), maxYear };
|
||||
}
|
||||
|
||||
export function resolveEntryDomain(
|
||||
domain: GuidedWindowDomain,
|
||||
openDomains: readonly CollectKind[] = COLLECT_KIND_ORDER,
|
||||
): CollectKind {
|
||||
if (domain !== GUIDED_ANY_DOMAIN) return domain;
|
||||
return openDomains[0] ?? COLLECT_KIND_ORDER[0];
|
||||
}
|
||||
|
||||
export function EventDateEntryCard({
|
||||
defaultDomain,
|
||||
openDomains,
|
||||
defaultYear,
|
||||
defaultMonth,
|
||||
minYear,
|
||||
@@ -45,7 +61,8 @@ export function EventDateEntryCard({
|
||||
disabled = false,
|
||||
onSubmit,
|
||||
}: {
|
||||
readonly defaultDomain: CollectKind;
|
||||
readonly defaultDomain: GuidedWindowDomain;
|
||||
readonly openDomains?: readonly CollectKind[];
|
||||
readonly defaultYear?: number;
|
||||
readonly defaultMonth?: number;
|
||||
readonly minYear: number;
|
||||
@@ -53,7 +70,9 @@ export function EventDateEntryCard({
|
||||
readonly disabled?: boolean;
|
||||
readonly onSubmit: (value: EventDateEntrySubmit) => void;
|
||||
}) {
|
||||
const [domain, setDomain] = useState<CollectKind>(defaultDomain);
|
||||
const [domain, setDomain] = useState<CollectKind>(
|
||||
resolveEntryDomain(defaultDomain, openDomains),
|
||||
);
|
||||
const initial = useMemo<EventDateValue | null>(() => {
|
||||
if (!defaultYear || defaultYear < minYear || defaultYear > maxYear) return null;
|
||||
const month = defaultMonth && defaultMonth >= 1 && defaultMonth <= 12 ? defaultMonth : 1;
|
||||
|
||||
Reference in New Issue
Block a user