diff --git a/src/app/parent/actions.ts b/src/app/parent/actions.ts index 3f1179b..a2510dd 100644 --- a/src/app/parent/actions.ts +++ b/src/app/parent/actions.ts @@ -8,6 +8,7 @@ import { db } from "@/db"; import { activationCodes, sessions, taskInstances, taskTemplates, users } from "@/db/schema"; import { SUBJECT_VALUES } from "@/db/schema"; import { todayStr } from "@/lib/dates"; +import { ensureDay } from "@/lib/tasks"; import { getSessionUser } from "@/lib/auth"; function hashCode(code: string) { @@ -128,21 +129,23 @@ export async function addTemplate(formData: FormData) { requiresPhoto: parsed.data.requiresPhoto, sortOrder: maxRow.maxSort + 1, }); + await ensureDay(parsed.data.childId, todayStr()); revalidatePath("/parent"); } -// 删除模板任务(同样不影响已生成的历史任务) +// 删除模板任务:删除后立即对账当天,孩子端未完成的对应任务会同步移除 export async function deleteTemplate(templateId: number) { const parent = await getSessionUser(); if (!parent || parent.role !== "parent") throw new Error("请先以家长身份登录"); const [row] = await db - .select({ id: taskTemplates.id }) + .select({ id: taskTemplates.id, childUserId: taskTemplates.childUserId }) .from(taskTemplates) .innerJoin(users, eq(users.id, taskTemplates.childUserId)) .where(and(eq(taskTemplates.id, templateId), eq(users.familyId, parent.familyId))) .limit(1); if (!row) throw new Error("任务不存在"); await db.delete(taskTemplates).where(eq(taskTemplates.id, templateId)); + await ensureDay(row.childUserId, todayStr()); revalidatePath("/parent"); }