diff --git a/scripts/lib/demo-seed.ts b/scripts/lib/demo-seed.ts index 995ee55..911b1d5 100644 --- a/scripts/lib/demo-seed.ts +++ b/scripts/lib/demo-seed.ts @@ -273,20 +273,8 @@ export async function seedDemoTenant(tenantId: string, users: DemoUsers): Promis await assign(id, nord, [users.tech2]); await transitionWorkOrder(tech2, { workOrderId: id, to: "accepted" }); }); - await order({ ext: "DEMO-06", customer: "K-D006", site: "Halle 1 – Kühllager", title: "Störung Kältemittelleitung", orderTypeId: type("stoerung"), priority: "urgent", plannedStart: day(0, 9), plannedEnd: day(0, 13) }, async (id) => { - await assign(id, sued, [users.tech3]); - await travel(tech3, id, day(0, 8, 30)); - }); - await order({ ext: "DEMO-07", customer: "K-D003", site: "Quartier Poppenbüttel – Block 3", title: "Montage Gas-Brennwerttherme", orderTypeId: type("montage"), plannedStart: day(0, 7), plannedEnd: day(0, 17), materials: heating, scope: "Demontage Altgerät, Montage Neugerät, Abgasanschluss, Inbetriebnahme." }, async (id) => { - await assign(id, nord, [users.tech]); - await travel(tech, id, day(0, 6, 45)); - await work(tech, id, day(0, 7, 10)); - await photo(tech, id, { phase: "before", requirementKey: "ausgangszustand", comment: "Altgerät vor Demontage" }); - await note(tech, id, "work_done", "Altgerät demontiert, Anschlüsse verschlossen."); - await note(tech, id, "deviation", "Abgasrohr muss um 30 cm verlängert werden."); - await planMaterial(tech, id, 1, 14, "fully_used", "Leitungsführung um den Schacht"); - await material(tech, id, { clientId: randomUUID(), name: "Abgasrohr-Verlängerung DN80", articleNumber: "AG-80-05", quantity: 1, unit: "Stk", usageStatus: "additional", deviationReason: "Abgasrohr zu kurz" }); - }); + // DEMO-06/DEMO-07 (laufende Uhren von Sven Südfeld und Max Monteur) werden erst nach DEMO-19 angelegt: seit + // L12 darf ein Nutzer nur eine laufende Uhr haben – spätere Einsätze derselben Monteure würden sonst kollidieren. await order({ ext: "DEMO-08", customer: "K-D002", site: "Filiale Eppendorf", title: "Undichte Leitung unter der Theke", orderTypeId: type("reparatur"), plannedStart: day(0, 7), plannedEnd: day(0, 11) }, async (id) => { await assign(id, sued, [users.tech3]); await work(tech3, id, day(0, 7, 5)); @@ -376,6 +364,22 @@ export async function seedDemoTenant(tenantId: string, users: DemoUsers): Promis await markBilled(bo, { workOrderId: id }); }); + // Heute laufende Uhren (nach allen vergangenen Einsätzen derselben Monteure, s. o.) + await order({ ext: "DEMO-06", customer: "K-D006", site: "Halle 1 – Kühllager", title: "Störung Kältemittelleitung", orderTypeId: type("stoerung"), priority: "urgent", plannedStart: day(0, 9), plannedEnd: day(0, 13) }, async (id) => { + await assign(id, sued, [users.tech3]); + await travel(tech3, id, day(0, 8, 30)); + }); + await order({ ext: "DEMO-07", customer: "K-D003", site: "Quartier Poppenbüttel – Block 3", title: "Montage Gas-Brennwerttherme", orderTypeId: type("montage"), plannedStart: day(0, 7), plannedEnd: day(0, 17), materials: heating, scope: "Demontage Altgerät, Montage Neugerät, Abgasanschluss, Inbetriebnahme." }, async (id) => { + await assign(id, nord, [users.tech]); + await travel(tech, id, day(0, 6, 45)); + await work(tech, id, day(0, 7, 10)); + await photo(tech, id, { phase: "before", requirementKey: "ausgangszustand", comment: "Altgerät vor Demontage" }); + await note(tech, id, "work_done", "Altgerät demontiert, Anschlüsse verschlossen."); + await note(tech, id, "deviation", "Abgasrohr muss um 30 cm verlängert werden."); + await planMaterial(tech, id, 1, 14, "fully_used", "Leitungsführung um den Schacht"); + await material(tech, id, { clientId: randomUUID(), name: "Abgasrohr-Verlängerung DN80", articleNumber: "AG-80-05", quantity: 1, unit: "Stk", usageStatus: "additional", deviationReason: "Abgasrohr zu kurz" }); + }); + // Notdienst mit vorläufigem Kunden (feste Client-IDs → idempotent) const emergencyExisting = await bo.db.workSession.findFirst({ where: { clientId: "7c1d6a0e-3b1f-4c55-9d2a-00000000d020" }, select: { workOrderId: true } }); if (!emergencyExisting) {