fix(rectification): split D4/D5 stages and recast after adopt
Keep family on D12+D7 instead of mixing it into D4, score D5 on education, and show a natal recast plus technique audit after adopt without unique-minute claims. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -12,7 +12,9 @@ import {
|
||||
} from "@/lib/rectification-activity-receipt";
|
||||
import {
|
||||
isRecommendedRectificationCandidate,
|
||||
natalRecastMeaning,
|
||||
parseRectificationCandidateResult,
|
||||
workingRectificationHouseTable,
|
||||
type RectificationCandidateResult,
|
||||
} from "@/lib/rectification-candidate-result";
|
||||
import { membershipHref } from "@/lib/membership";
|
||||
@@ -29,6 +31,7 @@ import {
|
||||
} from "./chat-message-actions";
|
||||
import { ModelSelector } from "./model-selector";
|
||||
import { RectificationHouseTableView } from "./rectification-house-table";
|
||||
import { TechniqueAuditDisclosure } from "./technique-audit-disclosure";
|
||||
import { Button } from "./ui/button";
|
||||
import { Textarea } from "./ui/textarea";
|
||||
|
||||
@@ -565,7 +568,30 @@ export function RectificationAgenticChat(props: RectificationAgenticChatProps) {
|
||||
if (!response.ok || payload?.ok !== true || payload?.status !== "accepted") {
|
||||
throw new Error(payload?.error || payload?.message || "暂时无法采用该候选时间");
|
||||
}
|
||||
setCandidateResult((current) => current ? { ...current, selectedTime: payload.saved_time, selectionKind: "user_accepted" } : current);
|
||||
setCandidateResult((current) => {
|
||||
if (!current) return current;
|
||||
const selectedTime = typeof payload.saved_time === "string" ? payload.saved_time.slice(0, 5) : current.selectedTime;
|
||||
const next = {
|
||||
...current,
|
||||
selectedTime,
|
||||
selectionKind: "user_accepted" as const,
|
||||
};
|
||||
const houseTable = workingRectificationHouseTable(next);
|
||||
const recastMeaning = natalRecastMeaning(houseTable);
|
||||
return {
|
||||
...next,
|
||||
houseTable: houseTable ?? current.houseTable,
|
||||
natalRecast: houseTable && recastMeaning
|
||||
? {
|
||||
time: houseTable.time,
|
||||
lagna: houseTable.lagna,
|
||||
user_meaning: recastMeaning,
|
||||
unique_minute_claim: false as const,
|
||||
confirmation_allowed: false as const,
|
||||
}
|
||||
: current.natalRecast,
|
||||
};
|
||||
});
|
||||
setSavedTime(payload.saved_time);
|
||||
setSavedStatus("accepted");
|
||||
onSaved?.(payload.saved_time, "accepted");
|
||||
@@ -722,7 +748,13 @@ export function RectificationAgenticChat(props: RectificationAgenticChatProps) {
|
||||
})}
|
||||
{candidateResult?.houseTable && (
|
||||
<div className="rectification-snapshot">
|
||||
{candidateResult.natalRecast && (
|
||||
<p className="rectification-refinement__stage">{candidateResult.natalRecast.user_meaning}</p>
|
||||
)}
|
||||
<RectificationHouseTableView table={candidateResult.houseTable} />
|
||||
{savedStatus === "accepted" && candidateResult.techniqueAudit.length > 0 && (
|
||||
<TechniqueAuditDisclosure rows={candidateResult.techniqueAudit} />
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
{candidateResult && <RectificationRefinementPanel result={candidateResult} />}
|
||||
|
||||
Reference in New Issue
Block a user