From b782f16797294a4dbf8962a8eaca8ae72703d0c8 Mon Sep 17 00:00:00 2001 From: marco370 <48531002-marco370@users.noreply.replit.com> Date: Tue, 21 Oct 2025 16:45:18 +0000 Subject: [PATCH] Improve guard assignment logic and display in the planning tool Implement real-time filtering of available guards based on standard and overtime hours, including night hour constraints and daily rest periods. Enhance UI to toggle overtime guard visibility and improve dialog scrollability. Replit-Commit-Author: Agent Replit-Commit-Session-Id: e5565357-90e1-419f-b9a8-6ee8394636df Replit-Commit-Checkpoint-Type: intermediate_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/6d543d2c-20b9-4ea6-93fe-70fe9b1d9f80/e5565357-90e1-419f-b9a8-6ee8394636df/G1ZUdV2 --- attached_assets/immagine_1761064454333.png | Bin 0 -> 76681 bytes client/src/pages/general-planning.tsx | 108 ++++++++++++--------- server/storage.ts | 97 ++++++++++++++++-- shared/schema.ts | 6 ++ 4 files changed, 155 insertions(+), 56 deletions(-) create mode 100644 attached_assets/immagine_1761064454333.png diff --git a/attached_assets/immagine_1761064454333.png b/attached_assets/immagine_1761064454333.png new file mode 100644 index 0000000000000000000000000000000000000000..f68d48f15f417ed47f55030bb486353d642a292f GIT binary patch literal 76681 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"06:00"); const [durationHours, setDurationHours] = useState(8); const [consecutiveDays, setConsecutiveDays] = useState(1); + const [showOvertimeGuards, setShowOvertimeGuards] = useState(false); // Query per dati planning settimanale const { data: planningData, isLoading } = useQuery({ @@ -517,7 +518,7 @@ export default function GeneralPlanning() { setDurationHours(8); setConsecutiveDays(1); }}> - + @@ -529,7 +530,7 @@ export default function GeneralPlanning() { {selectedCell && ( -
+
{/* Info turni */}
@@ -542,27 +543,6 @@ export default function GeneralPlanning() {
- {/* Guardie assegnate */} - {selectedCell.data.guards.length > 0 && ( -
-
- - Guardie Assegnate ({selectedCell.data.guards.length}) -
-
- {selectedCell.data.guards.map((guard, idx) => ( -
-
-

{guard.guardName}

-

{guard.badgeNumber}

-
- {guard.hours}h -
- ))} -
-
- )} - {/* Veicoli */} {selectedCell.data.vehicles.length > 0 && (
@@ -706,33 +686,67 @@ export default function GeneralPlanning() { {/* Select guardia disponibile */}
- +
+ + {!isLoadingGuards && availableGuards && availableGuards.some(g => g.requiresOvertime && g.isAvailable) && ( + + )} +
{isLoadingGuards ? ( ) : ( - + <> + {(() => { + // Filtra guardie: mostra solo con ore ordinarie se toggle è off + const filteredGuards = availableGuards?.filter(g => + g.isAvailable && (showOvertimeGuards || !g.requiresOvertime) + ) || []; + + return ( + <> + + {filteredGuards.length === 0 && !showOvertimeGuards && availableGuards && availableGuards.some(g => g.isAvailable && g.requiresOvertime) && ( +

+ ℹ️ Alcune guardie disponibili richiedono straordinario. Clicca "Mostra Straordinario" per vederle. +

+ )} + + ); + })()} + )} {availableGuards && availableGuards.length > 0 && selectedGuardId && (
diff --git a/server/storage.ts b/server/storage.ts index 3b1ac65..1437704 100644 --- a/server/storage.ts +++ b/server/storage.ts @@ -688,6 +688,22 @@ export class DatabaseStorage implements IStorage { return start1 < end2 && end1 > start2; }; + // Helper: Calculate night hours (22:00-06:00) + const calculateNightHours = (start: Date, end: Date): number => { + let nightHours = 0; + const current = new Date(start); + + while (current < end) { + const hour = current.getUTCHours(); + if (hour >= 22 || hour < 6) { + nightHours += 1; + } + current.setHours(current.getHours() + 1); + } + + return nightHours; + }; + // Calculate week boundaries for weekly hours calculation const weekStart = new Date(plannedStart); weekStart.setDate(plannedStart.getDate() - plannedStart.getDay() + (plannedStart.getDay() === 0 ? -6 : 1)); @@ -695,9 +711,19 @@ export class DatabaseStorage implements IStorage { const weekEnd = addDays(weekStart, 6); weekEnd.setHours(23, 59, 59, 999); - // Get max weekly hours from CCNL settings (default 45h) - const maxHoursSetting = await this.getCcnlSetting('weeklyGuardHours'); - const maxWeeklyHours = maxHoursSetting ? Number(maxHoursSetting.value) : 45; + // Get contract parameters + let contractParams = await this.getContractParameters(); + if (!contractParams) { + contractParams = await this.createContractParameters({ + contractType: "CCNL_VIGILANZA_2024", + }); + } + + const maxOrdinaryHours = contractParams.maxHoursPerWeek || 40; // 40h + const maxOvertimeHours = contractParams.maxOvertimePerWeek || 8; // 8h + const maxTotalHours = maxOrdinaryHours + maxOvertimeHours; // 48h + const maxNightHours = contractParams.maxNightHoursPerWeek || 48; // 48h + const minDailyRest = contractParams.minDailyRestHours || 11; // 11h // Get site to check requirements const site = await this.getSite(siteId); @@ -718,6 +744,9 @@ export class DatabaseStorage implements IStorage { return true; }); + const requestedHours = differenceInHours(plannedEnd, plannedStart); + const requestedNightHours = calculateNightHours(plannedStart, plannedEnd); + // Analyze each guard's availability const guardsWithAvailability: GuardAvailability[] = []; @@ -737,17 +766,34 @@ export class DatabaseStorage implements IStorage { gte(shiftAssignments.plannedStartTime, weekStart), lte(shiftAssignments.plannedStartTime, weekEnd) ) - ); + ) + .orderBy(desc(shiftAssignments.plannedEndTime)); - // Calculate total weekly hours assigned + // Calculate total weekly hours and night hours assigned let weeklyHoursAssigned = 0; + let nightHoursAssigned = 0; + let lastShiftEnd: Date | null = null; + for (const assignment of weeklyAssignments) { const hours = differenceInHours(assignment.plannedEndTime, assignment.plannedStartTime); weeklyHoursAssigned += hours; + nightHoursAssigned += calculateNightHours(assignment.plannedStartTime, assignment.plannedEndTime); + + // Track last shift end for rest calculation + if (!lastShiftEnd || assignment.plannedEndTime > lastShiftEnd) { + lastShiftEnd = assignment.plannedEndTime; + } } - const weeklyHoursRemaining = maxWeeklyHours - weeklyHoursAssigned; - const requestedHours = differenceInHours(plannedEnd, plannedStart); + // Calculate ordinary and overtime hours + const ordinaryHoursAssigned = Math.min(weeklyHoursAssigned, maxOrdinaryHours); + const overtimeHoursAssigned = Math.max(0, weeklyHoursAssigned - maxOrdinaryHours); + const ordinaryHoursRemaining = Math.max(0, maxOrdinaryHours - weeklyHoursAssigned); + const overtimeHoursRemaining = Math.max(0, maxOvertimeHours - overtimeHoursAssigned); + const weeklyHoursRemaining = ordinaryHoursRemaining + overtimeHoursRemaining; + + // Check if shift requires overtime + const requiresOvertime = requestedHours > ordinaryHoursRemaining; // Check for time conflicts with the requested slot const conflicts = []; @@ -771,19 +817,42 @@ export class DatabaseStorage implements IStorage { } } + // Check rest violation (11h between shifts) + let hasRestViolation = false; + if (lastShiftEnd) { + const hoursSinceLastShift = differenceInHours(plannedStart, lastShiftEnd); + if (hoursSinceLastShift < minDailyRest) { + hasRestViolation = true; + reasons.push(`Riposo insufficiente (${Math.max(0, hoursSinceLastShift).toFixed(1)}h dall'ultimo turno, minimo ${minDailyRest}h)`); + } + } + // Determine availability let isAvailable = true; + // EXCLUDE guards already assigned on same day/time if (conflicts.length > 0) { isAvailable = false; reasons.push(`Già assegnata in ${conflicts.length} turno/i nello stesso orario`); } + // Check if enough hours available (total) if (weeklyHoursRemaining < requestedHours) { isAvailable = false; reasons.push(`Ore settimanali insufficienti (${Math.max(0, weeklyHoursRemaining)}h disponibili, ${requestedHours}h richieste)`); } + // Check night hours limit + if (nightHoursAssigned + requestedNightHours > maxNightHours) { + isAvailable = false; + reasons.push(`Ore notturne esaurite (${nightHoursAssigned}h lavorate, max ${maxNightHours}h/settimana)`); + } + + // Rest violation makes guard unavailable + if (hasRestViolation) { + isAvailable = false; + } + // Build guard name from new fields const guardName = guard.firstName && guard.lastName ? `${guard.firstName} ${guard.lastName}` @@ -795,17 +864,27 @@ export class DatabaseStorage implements IStorage { badgeNumber: guard.badgeNumber, weeklyHoursRemaining, weeklyHoursAssigned, - weeklyHoursMax: maxWeeklyHours, + weeklyHoursMax: maxTotalHours, + ordinaryHoursRemaining, + overtimeHoursRemaining, + nightHoursAssigned, + requiresOvertime, + hasRestViolation, + lastShiftEnd, isAvailable, conflicts, unavailabilityReasons: reasons, }); } - // Sort: available first, then by remaining hours (descending) + // Sort: available with ordinary hours first, then overtime, then unavailable guardsWithAvailability.sort((a, b) => { if (a.isAvailable && !b.isAvailable) return -1; if (!a.isAvailable && b.isAvailable) return 1; + if (a.isAvailable && b.isAvailable) { + if (!a.requiresOvertime && b.requiresOvertime) return -1; + if (a.requiresOvertime && !b.requiresOvertime) return 1; + } return b.weeklyHoursRemaining - a.weeklyHoursRemaining; }); diff --git a/shared/schema.ts b/shared/schema.ts index b10041e..9aac6d3 100644 --- a/shared/schema.ts +++ b/shared/schema.ts @@ -887,6 +887,12 @@ export const guardAvailabilitySchema = z.object({ weeklyHoursRemaining: z.number(), weeklyHoursAssigned: z.number(), weeklyHoursMax: z.number(), + ordinaryHoursRemaining: z.number(), // Ore ordinarie disponibili (max 40h) + overtimeHoursRemaining: z.number(), // Ore straordinario disponibili (max 8h) + nightHoursAssigned: z.number(), // Ore notturne lavorate (22:00-06:00) + requiresOvertime: z.boolean(), // True se richiede straordinario + hasRestViolation: z.boolean(), // True se viola riposo obbligatorio + lastShiftEnd: z.date().nullable(), // Fine ultimo turno (per calcolo riposo) isAvailable: z.boolean(), conflicts: z.array(guardConflictSchema), unavailabilityReasons: z.array(z.string()),