fix: persist reported birth-time status

This commit is contained in:
Jesse_Chen
2026-07-22 12:10:56 +08:00
parent c2213cd4e6
commit 753210747a
4 changed files with 37 additions and 5 deletions
+8 -1
View File
@@ -132,7 +132,14 @@ export async function PATCH(request: Request) {
}
const applicationPatch = currentProfile
? resolveAccountBirthTimeApplicationPatch(currentProfile, payload)
: {};
: payload.birth_time_source
? {
active_birth_time: null,
birth_time: null,
birth_time_status: "reported" as const,
rectification_case_id: null,
}
: {};
const baseProfile = {
id: userId,
...(payload.name !== undefined ? { name: payload.name } : {}),
@@ -217,10 +217,6 @@ export function resolveAccountBirthTimeApplicationPatch(
const confirmed = current.birth_time_status === "confirmed"
|| (current.birth_time_status === null && isBirthClockTime(current.birth_time ?? ""));
if (confirmed) return {};
if (!current.active_birth_time
&& !current.birth_time
&& current.birth_time_status !== "candidate"
&& !current.rectification_case_id) return {};
return {
active_birth_time: null,
birth_time: null,
+13
View File
@@ -324,11 +324,24 @@ test("ordinary declaration edits clear stale candidate application but never ove
birth_time_status: "reported",
rectification_case_id: null,
});
assert.deepEqual(resolveAccountBirthTimeApplicationPatch({
...candidate,
active_birth_time: null,
birth_time: null,
birth_time_status: null,
rectification_case_id: null,
}, edited), {
active_birth_time: null,
birth_time: null,
birth_time_status: "reported",
rectification_case_id: null,
});
});
test("account PATCH uses the shared validator and never writes client birth_time over account truth", () => {
assert.match(source, /accountProfilePatchSchema\.safeParse/);
assert.match(source, /resolveAccountBirthTimeApplicationPatch/);
assert.match(source, /payload\.birth_time_source[\s\S]*birth_time_status: "reported"/);
assert.doesNotMatch(source, /birth_time:\s*nullableString\(payload\.birth_time\)/);
assert.match(source, /invalidatesUnconfirmedApplication/);
assert.match(patchSource, /"birth_time_status"/);