Merge remote-tracking branch 'origin/main' into publish/birth-time-terminal-completion

This commit is contained in:
Jesse_Chen
2026-07-20 00:38:27 +08:00
196 changed files with 501741 additions and 225 deletions
@@ -21,6 +21,15 @@ export function BirthTimeCandidateResult({ journey, controller, error }: Candida
const action = journey.nextAction;
const dynamic = journey.journeyProtocol === "dynamic-choice-v2";
const terminalPath = guidedTerminalPath(journey);
if (result?.eventCount === 0) {
return (
<div className="birth-time-candidate-result" aria-live="polite">
<p className="birth-time-assessment-unavailable"></p>
<p className="birth-time-evidence-boundary"></p>
{terminalPath && <button className="button-secondary birth-time-guided-action" disabled={controller.pending} type="button" onClick={controller.editBirthTimeDetails}></button>}
</div>
);
}
if (!result && action.kind === "present_low_result") {
return (
<div className="birth-time-candidate-result" aria-live="polite">
@@ -32,6 +41,7 @@ export function BirthTimeCandidateResult({ journey, controller, error }: Candida
}
if (!result) return null;
const winner = result.winningSegment;
const receipt = result.techniqueReceipt;
return (
<div className="birth-time-candidate-result" aria-live="polite">
@@ -50,6 +60,15 @@ export function BirthTimeCandidateResult({ journey, controller, error }: Candida
<p className="birth-time-assessment-unavailable"></p>
)}
<p className="birth-time-evidence-boundary"></p>
{receipt && (
<details className="birth-time-evidence-receipt">
<summary></summary>
<p>{[...receipt.usedDivisionalCharts, ...receipt.usedArudha, ...receipt.dashaTracks].join("、") || "无"}</p>
<p>{receipt.auxiliaryLayers.join("、") || "无"}</p>
<p>{receipt.missingLayers.join("、") || "无"}</p>
{receipt.hardBlockers.length > 0 && <p>{receipt.hardBlockers.join("、")}</p>}
</details>
)}
{action.kind === "present_low_result" && (
<div className="birth-time-candidate-terminal" role="status">
@@ -10,6 +10,7 @@ const domainLabels = {
relocation: "搬迁与长期居住地",
relationship: "重要关系",
career: "工作与身份变化",
finance: "收入、资产或资源变化",
health_pressure: "健康或生活压力",
} as const satisfies Readonly<Record<EvidenceDomain, string>>;