fix: 自評去識別化

This commit is contained in:
skytek_xinliang
2026-09-29 09:42:47 +08:00
parent 7eb37a37fb
commit 86ffaf54be
5 changed files with 39 additions and 343 deletions
+3 -32
View File
@@ -33,7 +33,6 @@ import {
clearGuestSelfAssessmentDraft,
readGuestSelfAssessmentDraft,
saveGuestSelfAssessmentDraft,
type GuestSelfAssessmentDraft,
} from "@/utils/guest-self-assessment";
import { getApiErrorMessage, getApiErrorStatus } from "@/utils/api-error";
import { calculateProvisionalRiskLevel } from "@/utils/self-assessment";
@@ -154,23 +153,6 @@ function applySelfAssessmentToStore(
};
}
function toProfileRequest(
profile: GuestSelfAssessmentDraft["profile"],
): ProfileRequest {
return {
name: profile.name,
birthday: profile.birthday,
gender: profile.gender,
heightCm: profile.heightCm,
weightKg: profile.weightKg,
email: profile.email,
emergencyContact: profile.emergencyContact,
emergencyPhone: profile.emergencyPhone,
consent: profile.consent,
consentVersion: profile.consentVersion,
};
}
function toProfileRequestFromStore(profile: UserProfile): ProfileRequest {
if (profile.gender !== "男" && profile.gender !== "女") {
throw new Error("請先完成性別資料");
@@ -543,10 +525,7 @@ export const useAppStore = defineStore("app", () => {
}
}
/**
* 將登入/註冊後的訪客草稿依序正式保存。
* Profile 失敗時不會呼叫自評;任一步驟失敗都保留草稿與冪等鍵。
*/
/** 將登入/註冊後的匿名訪客自評正式保存;失敗時保留草稿與冪等鍵。 */
async function persistGuestSelfAssessment() {
const draft = readGuestSelfAssessmentDraft();
if (!draft) {
@@ -563,33 +542,25 @@ export const useAppStore = defineStore("app", () => {
}
if (USE_MOCK) {
const profile: Profile = {
...toProfileRequest(draft.profile),
phone: draft.profile.phone,
updatedAt: new Date().toISOString(),
};
const assessment: SelfAssessmentResponse = {
...draft.assessment,
assessmentId: `mock-${idempotencyKey}`,
riskLevel: draft.provisionalRiskLevel,
completedAt: new Date().toISOString(),
};
userProfile.value = applyProfileToStore(profile);
setSelfAssessment(assessment);
clearGuestSelfAssessmentDraft();
return { profile, assessment };
return assessment;
}
const profile = await apiUpdateProfile(toProfileRequest(draft.profile));
const assessment = await createSelfAssessment(
draft.assessment,
idempotencyKey,
);
userProfile.value = applyProfileToStore(profile);
setSelfAssessment(assessment);
clearGuestSelfAssessmentDraft();
return { profile, assessment };
return assessment;
}
function registerAppointment(appointmentId: string) {