fix: preserve rectification conversation context

This commit is contained in:
Jesse_Chen
2026-07-25 10:25:48 +08:00
parent 47acaf3f53
commit 58579cade4
5 changed files with 172 additions and 35 deletions
@@ -986,8 +986,33 @@ async function createProductionService(
const profileClient = authenticated.context as ProfileClient;
const engine = createJyotishBirthTimeJourneyEngine();
const store = createSupabaseConversationalRectificationStore(admin);
const loadConversationMessages = async (userId: string, caseId: string) => {
const { data: ownedCase, error: caseError } = await admin
.from("birth_time_rectification_cases")
.select("id")
.eq("id", caseId)
.eq("user_id", userId)
.maybeSingle();
if (caseError || !ownedCase) return [];
const [{ data: turns, error: turnsError }, { data: evidence, error: evidenceError }] = await Promise.all([
admin
.from("birth_time_rectification_turns")
.select("id,turn_version,narrative")
.eq("case_id", caseId)
.order("turn_version", { ascending: true }),
admin
.from("birth_time_rectification_event_evidence")
.select("source_turn_id,raw_text,created_at,id")
.eq("case_id", caseId)
.order("created_at", { ascending: true })
.order("id", { ascending: true }),
]);
if (turnsError || evidenceError) return [];
return conversationMessagesFromStoredTurns(turns, evidence);
};
const service = createConversationalRectificationService({
store,
loadConversationMessages,
billing: createSupabaseConversationalRectificationBilling(admin),
get rectificationPriceCredits() { return priceCredits(); },
allowNewCaseCreation: conversationalRectificationCreationPolicyFromEnvironment(
@@ -1073,33 +1098,7 @@ async function createProductionService(
narrativeGenerator,
asOfDate: () => new Date().toISOString().slice(0, 10),
});
return {
...service,
async loadConversationMessages(userId, caseId) {
const { data: ownedCase, error: caseError } = await admin
.from("birth_time_rectification_cases")
.select("id")
.eq("id", caseId)
.eq("user_id", userId)
.maybeSingle();
if (caseError || !ownedCase) return [];
const [{ data: turns, error: turnsError }, { data: evidence, error: evidenceError }] = await Promise.all([
admin
.from("birth_time_rectification_turns")
.select("id,turn_version,narrative")
.eq("case_id", caseId)
.order("turn_version", { ascending: true }),
admin
.from("birth_time_rectification_event_evidence")
.select("source_turn_id,raw_text,created_at,id")
.eq("case_id", caseId)
.order("created_at", { ascending: true })
.order("id", { ascending: true }),
]);
if (turnsError || evidenceError) return [];
return conversationMessagesFromStoredTurns(turns, evidence);
},
};
return { ...service, loadConversationMessages };
}
function stableRequestId(request: Request): string {