From f1517c5d6331d1776a852b8870a1f90c8f2bd97a Mon Sep 17 00:00:00 2001 From: razyd Date: Mon, 5 Oct 2026 19:10:58 +0200 Subject: [PATCH 1/3] fix(uploads): explain a missing Cloudinary setup in the user's language - requireStorage answers 503 STORAGE_NOT_CONFIGURED before the six upload routes that store on Cloudinary (avatar, maintenance, checklist, blacklist, backoffice invoice PDF and assets); F&B is left out, it only reads its PDF. - errorCodeMessage picks the text from messages/{es,en}/errors.json by the page language; apiClient uses it. - Tests with a real Express server and multipart upload, and for both languages. - TODO: the rest of the error codes are translated but unused. Why: on a local install without Cloudinary an upload failed with a 500 and a technical English message; the user now gets a clear one in es or en. --- backend/middlewares/requireStorage.ts | 25 +++++++ backend/routes/auth/auth-routes.ts | 2 + .../routes/backoffice/backoffice-routes.ts | 10 ++- backend/routes/blacklist/blacklist-routes.ts | 3 +- backend/routes/checklist/checklist-routes.ts | 8 +- .../routes/maintenance/maintenance-routes.ts | 3 +- .../tests/frontend/error-code-message.test.ts | 28 +++++++ .../tests/security/require-storage.test.ts | 73 +++++++++++++++++++ docs/TODO.md | 5 ++ frontend/app/lib/apiClient.ts | 5 +- frontend/app/lib/helpers/errorCodeMessage.ts | 17 +++++ frontend/messages/en/errors.json | 1 + frontend/messages/es/errors.json | 1 + 13 files changed, 176 insertions(+), 5 deletions(-) create mode 100644 backend/middlewares/requireStorage.ts create mode 100644 backend/tests/frontend/error-code-message.test.ts create mode 100644 backend/tests/security/require-storage.test.ts create mode 100644 frontend/app/lib/helpers/errorCodeMessage.ts diff --git a/backend/middlewares/requireStorage.ts b/backend/middlewares/requireStorage.ts new file mode 100644 index 00000000..2dd0154e --- /dev/null +++ b/backend/middlewares/requireStorage.ts @@ -0,0 +1,25 @@ +// middlewares/requireStorage.ts +// Goes before the upload middleware of every route that stores the file on +// Cloudinary (not F&B, which only reads its PDF). Without the three variables +// (a local install without an account) the upload would fail deep in the +// controller with a 500; this answers first, with a code the frontend +// translates. + +import type { Request, Response, NextFunction } from 'express' + +export const STORAGE_NOT_CONFIGURED = 'STORAGE_NOT_CONFIGURED' + +export function isStorageConfigured(env: NodeJS.ProcessEnv = process.env): boolean { + return Boolean(env.CLOUDINARY_CLOUD_NAME && env.CLOUDINARY_API_KEY && env.CLOUDINARY_API_SECRET) +} + +export function requireStorage(_req: Request, res: Response, next: NextFunction): void { + if (!isStorageConfigured()) { + res.status(503).json({ + error: 'El almacenamiento de archivos no está configurado (Cloudinary).', + code: STORAGE_NOT_CONFIGURED, + }) + return + } + next() +} diff --git a/backend/routes/auth/auth-routes.ts b/backend/routes/auth/auth-routes.ts index 58625d92..c8276286 100644 --- a/backend/routes/auth/auth-routes.ts +++ b/backend/routes/auth/auth-routes.ts @@ -25,6 +25,7 @@ import { profileUpdateLimiter, } from '../../middlewares/rateLimiter.js' import { isAdmin } from '../../middlewares/roleCheck.js' +import { requireStorage } from '../../middlewares/requireStorage.js' const router: Router = express.Router() @@ -62,6 +63,7 @@ router.post( '/me/avatar', authenticateToken, denyDemo, + requireStorage, singleImage('avatar', 2 * 1024 * 1024), uploadAvatar ) diff --git a/backend/routes/backoffice/backoffice-routes.ts b/backend/routes/backoffice/backoffice-routes.ts index 481823d2..1f466ce1 100644 --- a/backend/routes/backoffice/backoffice-routes.ts +++ b/backend/routes/backoffice/backoffice-routes.ts @@ -14,6 +14,7 @@ import { BackofficeController } from '../../controllers/backoffice/backoffice-co import { authenticateToken } from '../../middlewares/authenticateToken.js' import { canAccessBackoffice, isAdmin } from '../../middlewares/roleCheck.js' import { denyDemo } from '../../middlewares/demoRestriction.js' +import { requireStorage } from '../../middlewares/requireStorage.js' const router = Router() @@ -265,6 +266,7 @@ router.delete('/invoices/:id', isAdmin, BackofficeController.deleteInvoice) router.post( '/invoices/:id/pdf', isAdmin, + requireStorage, upload.single('pdf'), BackofficeController.uploadInvoicePdf ) @@ -304,7 +306,13 @@ router.get('/assets/:id/file', BackofficeController.getAssetFile) * @body type (stamp/signature), name, is_default (opcional) * @file image (multipart/form-data) - PNG o WebP */ -router.post('/assets', isAdmin, upload.single('image'), BackofficeController.createAsset) +router.post( + '/assets', + isAdmin, + requireStorage, + upload.single('image'), + BackofficeController.createAsset +) /** * @route DELETE /api/backoffice/assets/:id diff --git a/backend/routes/blacklist/blacklist-routes.ts b/backend/routes/blacklist/blacklist-routes.ts index 3bcb9404..813b22b6 100644 --- a/backend/routes/blacklist/blacklist-routes.ts +++ b/backend/routes/blacklist/blacklist-routes.ts @@ -9,6 +9,7 @@ import multer from 'multer' import { BlacklistController } from '../../controllers/blacklist/blacklist-controller.js' import { authenticateToken } from '../../middlewares/authenticateToken.js' import { excludeMantenimiento } from '../../middlewares/roleCheck.js' +import { requireStorage } from '../../middlewares/requireStorage.js' const router = Router() @@ -35,7 +36,7 @@ router.use(excludeMantenimiento) * POST /api/blacklist/upload * Subir imagen a Cloudinary */ -router.post('/upload', upload.single('image'), BlacklistController.uploadImage) +router.post('/upload', requireStorage, upload.single('image'), BlacklistController.uploadImage) /** * GET /api/blacklist/images/:file diff --git a/backend/routes/checklist/checklist-routes.ts b/backend/routes/checklist/checklist-routes.ts index 1e1ba5ce..2b624810 100644 --- a/backend/routes/checklist/checklist-routes.ts +++ b/backend/routes/checklist/checklist-routes.ts @@ -4,6 +4,7 @@ import express, { Router } from 'express' import { authenticateToken } from '../../middlewares/authenticateToken.js' import { excludeMantenimiento, canResetChecklist } from '../../middlewares/roleCheck.js' import { singleImage } from '../../middlewares/imageUpload.js' +import { requireStorage } from '../../middlewares/requireStorage.js' import { validateChecklistParams } from '../../middlewares/checklistParams.js' import { getRunController, @@ -61,7 +62,12 @@ router.delete('/:id/steps/:stepId/comments/:commentId', deleteCommentController) router.get('/:id/steps/:stepId/attachments', getAttachmentsController) // POST /api/checklists/:id/steps/:stepId/attachments -router.post('/:id/steps/:stepId/attachments', singleImage('file'), addAttachmentController) +router.post( + '/:id/steps/:stepId/attachments', + requireStorage, + singleImage('file'), + addAttachmentController +) // DELETE /api/checklists/:id/steps/:stepId/attachments/:attachmentId router.delete('/:id/steps/:stepId/attachments/:attachmentId', deleteAttachmentController) diff --git a/backend/routes/maintenance/maintenance-routes.ts b/backend/routes/maintenance/maintenance-routes.ts index 6335b1a9..16e49544 100644 --- a/backend/routes/maintenance/maintenance-routes.ts +++ b/backend/routes/maintenance/maintenance-routes.ts @@ -11,6 +11,7 @@ import { singleImage } from '../../middlewares/imageUpload.js' import { validateParams } from '../../middlewares/validateParams.js' import { MAINTENANCE_PARAM_RULES } from '../../validations/maintenance/schemas.js' import { canAccessMaintenance } from '../../middlewares/roleCheck.js' +import { requireStorage } from '../../middlewares/requireStorage.js' const router = Router() @@ -136,7 +137,7 @@ router.get('/:id/images/:imageId/file', MaintenanceController.getImageFile) * @access Private * @file image (multipart/form-data) */ -router.post('/:id/images', singleImage('image'), MaintenanceController.uploadImage) +router.post('/:id/images', requireStorage, singleImage('image'), MaintenanceController.uploadImage) /** * @route DELETE /api/maintenance/:id/images/:imageId diff --git a/backend/tests/frontend/error-code-message.test.ts b/backend/tests/frontend/error-code-message.test.ts new file mode 100644 index 00000000..1ac38380 --- /dev/null +++ b/backend/tests/frontend/error-code-message.test.ts @@ -0,0 +1,28 @@ +// tests/frontend/error-code-message.test.ts +// The text the user sees for a backend error code, in each page language. + +import { describe, it, expect } from 'vitest' +import { errorCodeMessage } from '../../../frontend/app/lib/helpers/errorCodeMessage.js' + +describe('errorCodeMessage', () => { + it('gives the storage message in Spanish and in English', () => { + expect(errorCodeMessage('STORAGE_NOT_CONFIGURED', 'es')).toMatch( + /^El almacenamiento de archivos no está configurado/ + ) + expect(errorCodeMessage('STORAGE_NOT_CONFIGURED', 'en')).toMatch( + /^File storage is not configured/ + ) + }) + + it('falls back to Spanish for a language without messages', () => { + expect(errorCodeMessage('STORAGE_NOT_CONFIGURED', 'fr')).toBe( + errorCodeMessage('STORAGE_NOT_CONFIGURED', 'es') + ) + }) + + it('leaves other codes and missing codes to the backend text', () => { + expect(errorCodeMessage('AUTH_INVALID_CREDENTIALS', 'en')).toBeUndefined() + expect(errorCodeMessage(undefined, 'es')).toBeUndefined() + expect(errorCodeMessage(42, 'es')).toBeUndefined() + }) +}) diff --git a/backend/tests/security/require-storage.test.ts b/backend/tests/security/require-storage.test.ts new file mode 100644 index 00000000..3cafcee3 --- /dev/null +++ b/backend/tests/security/require-storage.test.ts @@ -0,0 +1,73 @@ +// tests/security/require-storage.test.ts +// An upload to a route that stores on Cloudinary, on an install without the +// Cloudinary variables: it must get a 503 with a code, before the upload runs. +// A real Express server and a real multipart request. + +import { describe, it, expect, beforeAll, afterAll, afterEach } from 'vitest' +import express from 'express' +import type { Server } from 'node:http' +import type { AddressInfo } from 'node:net' +import { requireStorage } from '../../middlewares/requireStorage.js' + +const VARS = ['CLOUDINARY_CLOUD_NAME', 'CLOUDINARY_API_KEY', 'CLOUDINARY_API_SECRET'] as const +const saved = Object.fromEntries(VARS.map((k) => [k, process.env[k]])) + +let server: Server +let base: string +let ran = 0 + +beforeAll(async () => { + const app = express() + app.post('/upload', requireStorage, (_req, res) => { + ran++ + res.json({ ok: true }) + }) + server = app.listen(0) + await new Promise((resolve) => server.once('listening', resolve)) + base = `http://127.0.0.1:${(server.address() as AddressInfo).port}` +}) + +afterAll(() => new Promise((resolve) => server.close(resolve))) + +afterEach(() => { + for (const k of VARS) { + if (saved[k] === undefined) delete process.env[k] + else process.env[k] = saved[k] + } +}) + +async function upload() { + const before = ran + const form = new FormData() + form.append( + 'image', + new Blob([new Uint8Array([0xff, 0xd8, 0xff])], { type: 'image/jpeg' }), + 'a.jpg' + ) + const res = await fetch(`${base}/upload`, { method: 'POST', body: form }) + return { status: res.status, body: await res.json(), ran: ran > before } +} + +describe('an upload that stores on Cloudinary', () => { + it('without the variables answers 503 STORAGE_NOT_CONFIGURED and never runs the upload', async () => { + for (const k of VARS) delete process.env[k] + const r = await upload() + expect(r.status).toBe(503) + expect(r.body.code).toBe('STORAGE_NOT_CONFIGURED') + expect(r.ran).toBe(false) + }) + + it('with only some of the variables is still refused', async () => { + process.env.CLOUDINARY_CLOUD_NAME = 'cloud' + process.env.CLOUDINARY_API_KEY = 'key' + delete process.env.CLOUDINARY_API_SECRET + expect((await upload()).status).toBe(503) + }) + + it('with all three reaches the upload', async () => { + for (const k of VARS) process.env[k] = 'x' + const r = await upload() + expect(r.status).toBe(200) + expect(r.ran).toBe(true) + }) +}) diff --git a/docs/TODO.md b/docs/TODO.md index b759f76c..603982dd 100644 --- a/docs/TODO.md +++ b/docs/TODO.md @@ -293,6 +293,11 @@ sigue siendo donde se arregla este fichero y se prueba en el entorno preview. - [ ] **Configuración: `?tab=` de una pestaña sin permiso deja el contenido en blanco** — p. ej. recepción con `?tab=users`; debería caer en la primera pestaña disponible. _Visto el 2026-10-05._ +- [ ] **Errores del backend sin traducir** — `messages/{es,en}/errors.json` + tiene ~200 textos en `codes` que nadie usa: la UI muestra el `error` del + backend, en español. `app/lib/helpers/errorCodeMessage.ts` ya los traduce + para `STORAGE_NOT_CONFIGURED`; extenderlo a los demás códigos revisando + que no se pierda detalle del mensaje. _Visto el 2026-10-05._ - [ ] **Scheduling: vista de solo lectura para los demás roles** — hoy `/dashboard/scheduling` es solo de `admin` y el resto no ve el cuadrante. El dueño quiere que los demás (salvo `mantenimiento`) vean el cuadrante diff --git a/frontend/app/lib/apiClient.ts b/frontend/app/lib/apiClient.ts index 28ad5086..d29b2a93 100644 --- a/frontend/app/lib/apiClient.ts +++ b/frontend/app/lib/apiClient.ts @@ -17,6 +17,7 @@ interface FetchOptions extends RequestInit { const isClient = typeof window !== 'undefined' import { API_BASE_URL } from '@/app/lib/env' +import { errorCodeMessage } from '@/app/lib/helpers/errorCodeMessage' // URLs can carry personal data (e.g. document numbers in blacklist search): no logs in production const debug: (...args: unknown[]) => void = @@ -263,7 +264,9 @@ async function handleApiError(response: Response): Promise { error: `HTTP ${response.status}: ${response.statusText}`, })) - const message = errorData.error || errorData.message || `Request failed: ${response.status}` + const translated = isClient && errorCodeMessage(errorData.code, document.documentElement.lang) + const message = + translated || errorData.error || errorData.message || `Request failed: ${response.status}` const isDemo = errorData.demo === true const errorCode = errorData.code // Capture error code for i18n diff --git a/frontend/app/lib/helpers/errorCodeMessage.ts b/frontend/app/lib/helpers/errorCodeMessage.ts new file mode 100644 index 00000000..edbce236 --- /dev/null +++ b/frontend/app/lib/helpers/errorCodeMessage.ts @@ -0,0 +1,17 @@ +// app/lib/helpers/errorCodeMessage.ts +// Messages for backend error codes, in the page language. The texts live in +// messages/{es,en}/errors.json under `codes`; apiClient has no React context, +// so it reads the language from . + +import es from '../../../messages/es/errors.json' +import en from '../../../messages/en/errors.json' + +// Codes whose backend text is not meant for the user +const TRANSLATED = new Set(['STORAGE_NOT_CONFIGURED']) + +const byLocale: Record> = { es: es.codes, en: en.codes } + +export function errorCodeMessage(code: unknown, lang: string): string | undefined { + if (typeof code !== 'string' || !TRANSLATED.has(code)) return undefined + return (byLocale[lang] ?? byLocale.es)[code] +} diff --git a/frontend/messages/en/errors.json b/frontend/messages/en/errors.json index 2dcef063..ff1d971e 100644 --- a/frontend/messages/en/errors.json +++ b/frontend/messages/en/errors.json @@ -75,6 +75,7 @@ }, "codes": { "INTERNAL_ERROR": "Internal server error", + "STORAGE_NOT_CONFIGURED": "File storage is not configured. See the documentation to set up Cloudinary.", "INVALID_DATA": "Invalid data", "INVALID_ID": "Invalid ID", "INVALID_DATE_FORMAT": "Invalid date format", diff --git a/frontend/messages/es/errors.json b/frontend/messages/es/errors.json index ecff5cab..09f2fbc6 100644 --- a/frontend/messages/es/errors.json +++ b/frontend/messages/es/errors.json @@ -75,6 +75,7 @@ }, "codes": { "INTERNAL_ERROR": "Error interno del servidor", + "STORAGE_NOT_CONFIGURED": "El almacenamiento de archivos no está configurado. Consulta la documentación para configurar Cloudinary.", "INVALID_DATA": "Datos inválidos", "INVALID_ID": "ID inválido", "INVALID_DATE_FORMAT": "Formato de fecha inválido", From e31bb56aae892721108a34ca6bffc47d4018282d Mon Sep 17 00:00:00 2001 From: razyd Date: Mon, 5 Oct 2026 19:25:39 +0200 Subject: [PATCH 2/3] feat(setup): load the demo's scheduling base on every local install - db-mysql/scheduling-seed.sql: the demo's fictitious scheduling base (10 employees as users with an unknown random password, contracts, rules, shifts, configuration and Oct-Dec 2026 solved). References to other users point to the local admin; rows of people no longer in the grid are left out. - setup:local loads it as step 4/5, before mock-data.sql. - pnpm seed:scheduling:export rebuilds the file from the saved demo base (read-only SELECTs). - SNAPSHOT_TABLES moves to services/demo/snapshot-tables.ts so scripts can import it without opening the app's pool. - Test: the seed only carries example.com users and every grid row and assignment belongs to an employee it creates. Why: a local install had no employees, so scheduling could not be tried; now it starts from the same base as the public demo. --- README.md | 3 +- backend/db-mysql/scheduling-seed.sql | 977 ++++++++++++++++++ backend/package.json | 1 + backend/scripts/export-scheduling-seed.ts | 159 +++ backend/scripts/setup-local.ts | 15 +- backend/services/demo/demo-reset.service.ts | 17 +- backend/services/demo/snapshot-tables.ts | 19 + .../tests/security/scheduling-seed.test.ts | 47 + 8 files changed, 1217 insertions(+), 21 deletions(-) create mode 100644 backend/db-mysql/scheduling-seed.sql create mode 100644 backend/scripts/export-scheduling-seed.ts create mode 100644 backend/services/demo/snapshot-tables.ts create mode 100644 backend/tests/security/scheduling-seed.test.ts diff --git a/README.md b/README.md index 82953300..32308bc8 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,8 @@ cp frontend/.env.example frontend/.env.local # port 3306, set LOCAL_DB_PORT=3307 for Docker) docker compose --env-file backend/.env up -d -# 3. Database: tables, departments, the local admin and fictitious data. +# 3. Database: tables, departments, the local admin and fictitious data, +# a scheduling base included (10 employees, three months already solved). # It creates hotel_db and refuses to touch one that already has tables # (add -- --force to replace it) cd backend && pnpm install && pnpm setup:local diff --git a/backend/db-mysql/scheduling-seed.sql b/backend/db-mysql/scheduling-seed.sql new file mode 100644 index 00000000..009db8f1 --- /dev/null +++ b/backend/db-mysql/scheduling-seed.sql @@ -0,0 +1,977 @@ +-- ========================================================= +-- SCHEDULING SEED - Four-Points +-- ========================================================= +-- Base de horarios ficticia de la demo pública: empleados, contratos, +-- reglas, turnos, configuración y meses ya generados por el solver. +-- La carga pnpm setup:local después de mock-data.sql. +-- +-- BORRA todo el módulo de horarios (scheduling_*) antes de cargarla: solo +-- para una BD local recién instalada. +-- +-- Los empleados son usuarios inventados con una contraseña aleatoria que +-- nadie conoce: salen en el cuadrante pero no pueden entrar. Lo que en la +-- demo apunta a otro usuario (quién creó o publicó un mes) apunta aquí al +-- primer admin activo. +-- +-- Generado con: pnpm seed:scheduling:export (scripts/export-scheduling-seed.ts) +-- ========================================================= + +SET @seed_admin_id = (SELECT u.id FROM users u JOIN roles r ON r.id = u.role_id WHERE r.name = 'admin' AND u.is_active = 1 AND u.is_demo = 0 ORDER BY u.created_at LIMIT 1); + +-- Los DELETE vacían tablas enteras +SET SQL_SAFE_UPDATES = 0; +SET FOREIGN_KEY_CHECKS = 0; +START TRANSACTION; + +DELETE FROM scheduling_solver_runs; +DELETE FROM scheduling_history; +DELETE FROM scheduling_assignments; +DELETE FROM scheduling_constraints; +DELETE FROM scheduling_days; +DELETE FROM scheduling_months; +DELETE FROM scheduling_employee_requests; +DELETE FROM scheduling_employee_rules; +DELETE FROM scheduling_employee_contracts; +DELETE FROM scheduling_employees; +DELETE FROM scheduling_shifts; +DELETE FROM scheduling_config; + +-- Empleados (usuarios inventados) +INSERT IGNORE INTO users (id, username, email, password, role_id, is_active) SELECT '2d39bd85-81e2-4c71-8967-10d54d0117b1', 'empleado01', 'empleado01@example.com', '$2b$10$J8DPObjwktOPwfZBxy1BNOjISsYa/9D9pIupCKIyWgrS.kriO3S3q', r.id, 1 FROM roles r WHERE r.name = 'admin'; +INSERT IGNORE INTO users (id, username, email, password, role_id, is_active) SELECT '0f932b75-e169-4597-ac12-0b7b28d70ea4', 'empleado02', 'empleado02@example.com', '$2b$10$J8DPObjwktOPwfZBxy1BNOjISsYa/9D9pIupCKIyWgrS.kriO3S3q', r.id, 1 FROM roles r WHERE r.name = 'admin'; +INSERT IGNORE INTO users (id, username, email, password, role_id, is_active) SELECT 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'empleado03', 'empleado03@example.com', '$2b$10$J8DPObjwktOPwfZBxy1BNOjISsYa/9D9pIupCKIyWgrS.kriO3S3q', r.id, 1 FROM roles r WHERE r.name = 'recepcionista'; +INSERT IGNORE INTO users (id, username, email, password, role_id, is_active) SELECT '5c43d74d-b658-4e5f-9d6b-707587da7584', 'empleado04', 'empleado04@example.com', '$2b$10$J8DPObjwktOPwfZBxy1BNOjISsYa/9D9pIupCKIyWgrS.kriO3S3q', r.id, 1 FROM roles r WHERE r.name = 'recepcionista'; +INSERT IGNORE INTO users (id, username, email, password, role_id, is_active) SELECT '76222183-e2c9-441b-81a4-35ae66509801', 'empleado05', 'empleado05@example.com', '$2b$10$J8DPObjwktOPwfZBxy1BNOjISsYa/9D9pIupCKIyWgrS.kriO3S3q', r.id, 1 FROM roles r WHERE r.name = 'admin'; +INSERT IGNORE INTO users (id, username, email, password, role_id, is_active) SELECT 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'empleado06', 'empleado06@example.com', '$2b$10$J8DPObjwktOPwfZBxy1BNOjISsYa/9D9pIupCKIyWgrS.kriO3S3q', r.id, 1 FROM roles r WHERE r.name = 'group-admin'; +INSERT IGNORE INTO users (id, username, email, password, role_id, is_active) SELECT '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'empleado07', 'empleado07@example.com', '$2b$10$J8DPObjwktOPwfZBxy1BNOjISsYa/9D9pIupCKIyWgrS.kriO3S3q', r.id, 1 FROM roles r WHERE r.name = 'group-admin'; +INSERT IGNORE INTO users (id, username, email, password, role_id, is_active) SELECT '48d66e00-311c-4854-a629-dedbb36fb8be', 'empleado08', 'empleado08@example.com', '$2b$10$J8DPObjwktOPwfZBxy1BNOjISsYa/9D9pIupCKIyWgrS.kriO3S3q', r.id, 1 FROM roles r WHERE r.name = 'recepcionista'; +INSERT IGNORE INTO users (id, username, email, password, role_id, is_active) SELECT 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'empleado09', 'empleado09@example.com', '$2b$10$J8DPObjwktOPwfZBxy1BNOjISsYa/9D9pIupCKIyWgrS.kriO3S3q', r.id, 1 FROM roles r WHERE r.name = 'recepcionista'; +INSERT IGNORE INTO users (id, username, email, password, role_id, is_active) SELECT 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'empleado10', 'empleado10@example.com', '$2b$10$J8DPObjwktOPwfZBxy1BNOjISsYa/9D9pIupCKIyWgrS.kriO3S3q', r.id, 1 FROM roles r WHERE r.name = 'recepcionista'; + +-- scheduling_config (21) +INSERT INTO scheduling_config (id, config_key, config_value, description, created_at, updated_at) VALUES +(1, 'min_morning_staff', '1', 'Mínimo personas en turno mañana', '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(2, 'pref_morning_staff', '2', 'Preferido personas en turno mañana', '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(3, 'max_morning_staff', '2', 'Máximo personas en turno mañana', '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(4, 'min_afternoon_staff', '1', 'Mínimo personas en turno tarde', '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(5, 'pref_afternoon_staff', '2', 'Preferido personas en turno tarde', '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(6, 'max_afternoon_staff', '2', 'Máximo personas en turno tarde', '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(7, 'min_night_staff', '1', 'Mínimo personas en turno noche', '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(8, 'max_night_staff', '1', 'Máximo personas en turno noche', '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(9, 'max_weekly_shifts', '6', 'Máximo turnos por semana', '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(10, 'pref_weekly_shifts', '5', 'Preferido turnos por semana', '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(11, 'min_rest_hours', '48', 'Horas mínimas de descanso', '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(12, 'min_night_block', '4', 'Mínimo noches consecutivas por mes', '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(13, 'max_night_block', '6', 'Máximo noches consecutivas por mes', '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(14, 'pref_night_block', '5', 'Preferido noches consecutivas por mes', '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(15, 'min_monthly_libre', '8', 'Mínimo días libres al mes', '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(16, 'max_monthly_libre', '12', 'Máximo días libres al mes', '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(17, 'max_consecutive_work_days', '6', 'Máximo días consecutivos de trabajo', '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(18, 'min_consecutive_libre', '2', 'Mínimo días libres consecutivos por semana', '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(19, 'annual_vacation_days', '30', 'Días de vacaciones anuales', '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(20, 'annual_holidays', '14', 'Festivos anuales', '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(21, 'annual_free_days', '95', 'Libres semanales anuales', '2025-12-25 22:23:44', '2025-12-25 22:23:44'); + +-- scheduling_shifts (13) +INSERT INTO scheduling_shifts (id, code, name, start_time, end_time, hours, color, is_work_shift, is_paid, display_order, is_active, created_at, updated_at) VALUES +(1, 'M', 'Mañana', '07:00:00', '15:00:00', '8.00', '#D1FAE5', 1, 1, 1, 1, '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(2, 'T', 'Tarde', '15:00:00', '23:00:00', '8.00', '#DBEAFE', 1, 1, 2, 1, '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(3, 'N', 'Noche', '23:00:00', '07:00:00', '8.00', '#FFEDD5', 1, 1, 3, 1, '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(4, 'P', 'Presencia', '08:00:00', '16:00:00', '8.00', '#E0E7FF', 1, 1, 4, 1, '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(5, 'PI', 'Personal Intervención', '09:00:00', '17:00:00', '8.00', '#FEF3C7', 1, 1, 5, 1, '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(6, 'B', 'Abonable/Festivo', NULL, NULL, '0.00', '#F3E8FF', 0, 1, 6, 1, '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(7, 'V', 'Vacaciones', NULL, NULL, '0.00', '#FECACA', 0, 1, 7, 1, '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(8, 'L', 'Libre', NULL, NULL, '0.00', '#FFFFFF', 0, 1, 8, 1, '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(9, 'FO', 'Formación', NULL, NULL, '0.00', '#FEF9C3', 0, 1, 9, 1, '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(10, 'IT', 'Incapacidad Temporal', NULL, NULL, '0.00', '#FED7AA', 0, 1, 10, 1, '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(11, 'E', 'Enfermedad', NULL, NULL, '0.00', '#FECDD3', 0, 1, 11, 1, '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(12, 'A', 'Ausencia Injustificada', NULL, NULL, '0.00', '#FCA5A5', 0, 0, 12, 1, '2025-12-25 22:23:44', '2025-12-25 22:23:44'), +(13, 'LI', 'Libre Disposición', NULL, NULL, '0.00', '#E5E7EB', 0, 1, 13, 1, '2026-05-19 07:37:02', '2026-05-19 07:37:02'); + +-- scheduling_employees (10) +INSERT INTO scheduling_employees (employee_id, added_at, added_by, notes, display_order, start_date, end_date) VALUES +('0f932b75-e169-4597-ac12-0b7b28d70ea4', '2026-05-19 16:19:18', '76222183-e2c9-441b-81a4-35ae66509801', NULL, 1, NULL, NULL), +('169617d8-dd55-4b73-a4da-b1eef12dfc31', '2026-05-19 16:19:18', '76222183-e2c9-441b-81a4-35ae66509801', NULL, 6, NULL, NULL), +('2d39bd85-81e2-4c71-8967-10d54d0117b1', '2026-05-19 16:19:18', '76222183-e2c9-441b-81a4-35ae66509801', NULL, 0, NULL, NULL), +('48d66e00-311c-4854-a629-dedbb36fb8be', '2026-05-19 16:19:18', '76222183-e2c9-441b-81a4-35ae66509801', NULL, 7, NULL, NULL), +('5c43d74d-b658-4e5f-9d6b-707587da7584', '2026-05-19 16:19:18', '76222183-e2c9-441b-81a4-35ae66509801', NULL, 3, NULL, NULL), +('76222183-e2c9-441b-81a4-35ae66509801', '2026-05-19 16:19:18', '76222183-e2c9-441b-81a4-35ae66509801', NULL, 4, NULL, NULL), +('b300783a-8ed7-44d3-b3a3-a23b222ee502', '2026-05-19 16:19:18', '76222183-e2c9-441b-81a4-35ae66509801', NULL, 2, NULL, NULL), +('c41dc36c-c7e2-47bf-829d-dbd97d7f3089', '2026-05-19 16:19:18', '76222183-e2c9-441b-81a4-35ae66509801', NULL, 5, NULL, NULL), +('cce15baf-e4ec-4083-9ab9-2d3864c7b752', '2026-05-19 16:19:18', '76222183-e2c9-441b-81a4-35ae66509801', NULL, 9, NULL, NULL), +('ece0b288-9013-40cc-b29f-52abe96eb2db', '2026-05-19 16:19:18', '76222183-e2c9-441b-81a4-35ae66509801', NULL, 8, NULL, NULL); + +-- scheduling_employee_contracts (10) +INSERT INTO scheduling_employee_contracts (id, employee_id, year, dias_trabajo, horas_anuales, dias_vacaciones, dias_libre_semanal, dias_bonificables, dias_it, dias_laborables_ano, observaciones, created_by, created_at, updated_at) VALUES +(31, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 2026, 190, 1524, 25, 76, 17, 0, 309, 'Inicio: 2026-02-26', @seed_admin_id, '2026-05-19 10:25:53', '2026-05-19 10:25:53'), +(32, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 2026, 160, 1277, 21, 64, 14, 0, 259, 'Inicio: 2026-04-17', @seed_admin_id, '2026-05-19 10:25:57', '2026-05-19 10:25:57'), +(33, '2d39bd85-81e2-4c71-8967-10d54d0117b1', 2026, 225, 1800, 30, 90, 20, 0, 365, NULL, @seed_admin_id, '2026-05-19 10:26:02', '2026-05-19 10:26:02'), +(34, '0f932b75-e169-4597-ac12-0b7b28d70ea4', 2026, 225, 1800, 30, 90, 20, 0, 365, NULL, @seed_admin_id, '2026-05-19 10:26:02', '2026-05-19 10:26:02'), +(35, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 2026, 225, 1800, 30, 90, 20, 0, 365, NULL, @seed_admin_id, '2026-05-19 10:26:02', '2026-05-19 10:26:02'), +(36, '5c43d74d-b658-4e5f-9d6b-707587da7584', 2026, 225, 1800, 30, 90, 20, 0, 365, NULL, @seed_admin_id, '2026-05-19 10:26:02', '2026-05-19 10:26:02'), +(37, '76222183-e2c9-441b-81a4-35ae66509801', 2026, 225, 1800, 30, 90, 20, 0, 365, NULL, @seed_admin_id, '2026-05-19 10:26:02', '2026-05-19 10:26:02'), +(38, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 2026, 225, 1800, 30, 90, 20, 0, 365, NULL, @seed_admin_id, '2026-05-19 10:26:02', '2026-05-19 10:26:02'), +(39, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 2026, 225, 1800, 30, 90, 20, 0, 365, NULL, @seed_admin_id, '2026-05-19 10:26:02', '2026-05-19 10:26:02'), +(41, '48d66e00-311c-4854-a629-dedbb36fb8be', 2026, 225, 1800, 30, 90, 20, 0, 365, NULL, @seed_admin_id, '2026-05-19 10:26:02', '2026-05-19 10:26:02'); + +-- scheduling_employee_rules (4) +INSERT INTO scheduling_employee_rules (id, employee_id, rule_type, rule_value, priority, is_active, notes, created_at, updated_at) VALUES +(10, '0f932b75-e169-4597-ac12-0b7b28d70ea4', 'fixed_shift', 'P', 0, 1, NULL, '2026-05-18 21:32:09', '2026-05-18 21:32:09'), +(11, '0f932b75-e169-4597-ac12-0b7b28d70ea4', 'fixed_days', '1,2,3,4,5', 0, 1, NULL, '2026-05-18 21:32:59', '2026-05-18 21:32:59'), +(12, '2d39bd85-81e2-4c71-8967-10d54d0117b1', 'fixed_shift', 'P', 0, 1, NULL, '2026-05-18 21:33:14', '2026-05-18 21:33:14'), +(13, '2d39bd85-81e2-4c71-8967-10d54d0117b1', 'fixed_days', '1,2,3,4,5', 0, 1, NULL, '2026-05-18 21:33:22', '2026-05-18 21:33:22'); + +-- scheduling_months (3) +INSERT INTO scheduling_months (id, year, month, status, published_at, published_by, notes, created_by, created_at, updated_at) VALUES +(140, 2026, 10, 'draft', NULL, NULL, NULL, @seed_admin_id, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(141, 2026, 11, 'draft', NULL, NULL, NULL, @seed_admin_id, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(142, 2026, 12, 'draft', NULL, NULL, NULL, @seed_admin_id, '2026-10-05 16:12:55', '2026-10-05 16:12:55'); + +-- scheduling_days (92) +INSERT INTO scheduling_days (id, month_id, day_number, date, day_of_week, week_number, is_holiday, holiday_name, occupancy_pct, arrivals, departures, notes, created_at, updated_at) VALUES +(4182, 140, 1, '2026-10-01', 'J', 1, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4183, 140, 2, '2026-10-02', 'V', 1, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4184, 140, 3, '2026-10-03', 'S', 1, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4185, 140, 4, '2026-10-04', 'D', 1, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4186, 140, 5, '2026-10-05', 'L', 2, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4187, 140, 6, '2026-10-06', 'M', 2, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4188, 140, 7, '2026-10-07', 'X', 2, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4189, 140, 8, '2026-10-08', 'J', 2, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4190, 140, 9, '2026-10-09', 'V', 2, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4191, 140, 10, '2026-10-10', 'S', 2, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4192, 140, 11, '2026-10-11', 'D', 2, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4193, 140, 12, '2026-10-12', 'L', 3, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4194, 140, 13, '2026-10-13', 'M', 3, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4195, 140, 14, '2026-10-14', 'X', 3, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4196, 140, 15, '2026-10-15', 'J', 3, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4197, 140, 16, '2026-10-16', 'V', 3, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4198, 140, 17, '2026-10-17', 'S', 3, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4199, 140, 18, '2026-10-18', 'D', 3, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4200, 140, 19, '2026-10-19', 'L', 4, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4201, 140, 20, '2026-10-20', 'M', 4, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4202, 140, 21, '2026-10-21', 'X', 4, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4203, 140, 22, '2026-10-22', 'J', 4, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4204, 140, 23, '2026-10-23', 'V', 4, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4205, 140, 24, '2026-10-24', 'S', 4, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4206, 140, 25, '2026-10-25', 'D', 4, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4207, 140, 26, '2026-10-26', 'L', 5, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4208, 140, 27, '2026-10-27', 'M', 5, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4209, 140, 28, '2026-10-28', 'X', 5, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4210, 140, 29, '2026-10-29', 'J', 5, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4211, 140, 30, '2026-10-30', 'V', 5, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4212, 140, 31, '2026-10-31', 'S', 5, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:11:44', '2026-10-05 16:11:44'), +(4213, 141, 1, '2026-11-01', 'D', 1, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(4214, 141, 2, '2026-11-02', 'L', 2, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(4215, 141, 3, '2026-11-03', 'M', 2, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(4216, 141, 4, '2026-11-04', 'X', 2, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(4217, 141, 5, '2026-11-05', 'J', 2, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(4218, 141, 6, '2026-11-06', 'V', 2, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(4219, 141, 7, '2026-11-07', 'S', 2, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(4220, 141, 8, '2026-11-08', 'D', 2, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(4221, 141, 9, '2026-11-09', 'L', 3, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(4222, 141, 10, '2026-11-10', 'M', 3, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(4223, 141, 11, '2026-11-11', 'X', 3, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(4224, 141, 12, '2026-11-12', 'J', 3, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(4225, 141, 13, '2026-11-13', 'V', 3, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(4226, 141, 14, '2026-11-14', 'S', 3, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(4227, 141, 15, '2026-11-15', 'D', 3, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(4228, 141, 16, '2026-11-16', 'L', 4, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(4229, 141, 17, '2026-11-17', 'M', 4, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(4230, 141, 18, '2026-11-18', 'X', 4, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(4231, 141, 19, '2026-11-19', 'J', 4, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(4232, 141, 20, '2026-11-20', 'V', 4, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(4233, 141, 21, '2026-11-21', 'S', 4, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(4234, 141, 22, '2026-11-22', 'D', 4, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(4235, 141, 23, '2026-11-23', 'L', 5, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(4236, 141, 24, '2026-11-24', 'M', 5, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(4237, 141, 25, '2026-11-25', 'X', 5, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(4238, 141, 26, '2026-11-26', 'J', 5, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(4239, 141, 27, '2026-11-27', 'V', 5, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(4240, 141, 28, '2026-11-28', 'S', 5, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(4241, 141, 29, '2026-11-29', 'D', 5, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(4242, 141, 30, '2026-11-30', 'L', 6, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:24', '2026-10-05 16:12:24'), +(4243, 142, 1, '2026-12-01', 'M', 1, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'), +(4244, 142, 2, '2026-12-02', 'X', 1, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'), +(4245, 142, 3, '2026-12-03', 'J', 1, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'), +(4246, 142, 4, '2026-12-04', 'V', 1, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'), +(4247, 142, 5, '2026-12-05', 'S', 1, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'), +(4248, 142, 6, '2026-12-06', 'D', 1, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'), +(4249, 142, 7, '2026-12-07', 'L', 2, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'), +(4250, 142, 8, '2026-12-08', 'M', 2, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'), +(4251, 142, 9, '2026-12-09', 'X', 2, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'), +(4252, 142, 10, '2026-12-10', 'J', 2, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'), +(4253, 142, 11, '2026-12-11', 'V', 2, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'), +(4254, 142, 12, '2026-12-12', 'S', 2, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'), +(4255, 142, 13, '2026-12-13', 'D', 2, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'), +(4256, 142, 14, '2026-12-14', 'L', 3, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'), +(4257, 142, 15, '2026-12-15', 'M', 3, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'), +(4258, 142, 16, '2026-12-16', 'X', 3, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'), +(4259, 142, 17, '2026-12-17', 'J', 3, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'), +(4260, 142, 18, '2026-12-18', 'V', 3, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'), +(4261, 142, 19, '2026-12-19', 'S', 3, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'), +(4262, 142, 20, '2026-12-20', 'D', 3, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'), +(4263, 142, 21, '2026-12-21', 'L', 4, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'), +(4264, 142, 22, '2026-12-22', 'M', 4, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'), +(4265, 142, 23, '2026-12-23', 'X', 4, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'), +(4266, 142, 24, '2026-12-24', 'J', 4, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'), +(4267, 142, 25, '2026-12-25', 'V', 4, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'), +(4268, 142, 26, '2026-12-26', 'S', 4, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'), +(4269, 142, 27, '2026-12-27', 'D', 4, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'), +(4270, 142, 28, '2026-12-28', 'L', 5, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'), +(4271, 142, 29, '2026-12-29', 'M', 5, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'), +(4272, 142, 30, '2026-12-30', 'X', 5, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'), +(4273, 142, 31, '2026-12-31', 'J', 5, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55'); + +-- scheduling_assignments (736) +INSERT INTO scheduling_assignments (id, month_id, day_id, employee_id, shift_code, source_constraint_id, notes, created_at, updated_at, libre_number) VALUES +(54260, 140, 4182, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 1), +(54261, 140, 4183, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 1), +(54262, 140, 4184, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 2), +(54263, 140, 4185, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54264, 140, 4186, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54265, 140, 4187, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54266, 140, 4188, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54267, 140, 4189, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 2), +(54268, 140, 4190, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 3), +(54269, 140, 4191, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54270, 140, 4192, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54271, 140, 4193, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54272, 140, 4194, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 3), +(54273, 140, 4195, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 4), +(54274, 140, 4196, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54275, 140, 4197, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54276, 140, 4198, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54277, 140, 4199, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54278, 140, 4200, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54279, 140, 4201, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 4), +(54280, 140, 4202, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 5), +(54281, 140, 4203, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54282, 140, 4204, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54283, 140, 4205, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54284, 140, 4206, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 5), +(54285, 140, 4207, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 6), +(54286, 140, 4208, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 6), +(54287, 140, 4209, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54288, 140, 4210, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54289, 140, 4211, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54290, 140, 4212, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54291, 140, 4182, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54292, 140, 4183, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54293, 140, 4184, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54294, 140, 4185, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54295, 140, 4186, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54296, 140, 4187, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 1), +(54297, 140, 4188, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 1), +(54298, 140, 4189, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54299, 140, 4190, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54300, 140, 4191, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54301, 140, 4192, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54302, 140, 4193, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54303, 140, 4194, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 2), +(54304, 140, 4195, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 2), +(54305, 140, 4196, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54306, 140, 4197, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54307, 140, 4198, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54308, 140, 4199, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54309, 140, 4200, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 3), +(54310, 140, 4201, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 3), +(54311, 140, 4202, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 4), +(54312, 140, 4203, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 4), +(54313, 140, 4204, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 5), +(54314, 140, 4205, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54315, 140, 4206, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54316, 140, 4207, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54317, 140, 4208, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54318, 140, 4209, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54319, 140, 4210, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 5), +(54320, 140, 4211, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 6), +(54321, 140, 4212, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 6), +(54322, 140, 4182, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 1), +(54323, 140, 4183, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 1), +(54324, 140, 4184, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 2), +(54325, 140, 4185, '76222183-e2c9-441b-81a4-35ae66509801', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54326, 140, 4186, '76222183-e2c9-441b-81a4-35ae66509801', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54327, 140, 4187, '76222183-e2c9-441b-81a4-35ae66509801', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54328, 140, 4188, '76222183-e2c9-441b-81a4-35ae66509801', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54329, 140, 4189, '76222183-e2c9-441b-81a4-35ae66509801', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54330, 140, 4190, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 2), +(54331, 140, 4191, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 3), +(54332, 140, 4192, '76222183-e2c9-441b-81a4-35ae66509801', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54333, 140, 4193, '76222183-e2c9-441b-81a4-35ae66509801', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54334, 140, 4194, '76222183-e2c9-441b-81a4-35ae66509801', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54335, 140, 4195, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 3), +(54336, 140, 4196, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 4), +(54337, 140, 4197, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 4), +(54338, 140, 4198, '76222183-e2c9-441b-81a4-35ae66509801', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54339, 140, 4199, '76222183-e2c9-441b-81a4-35ae66509801', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54340, 140, 4200, '76222183-e2c9-441b-81a4-35ae66509801', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54341, 140, 4201, '76222183-e2c9-441b-81a4-35ae66509801', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54342, 140, 4202, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 5), +(54343, 140, 4203, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 5), +(54344, 140, 4204, '76222183-e2c9-441b-81a4-35ae66509801', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54345, 140, 4205, '76222183-e2c9-441b-81a4-35ae66509801', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54346, 140, 4206, '76222183-e2c9-441b-81a4-35ae66509801', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54347, 140, 4207, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 6), +(54348, 140, 4208, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 6), +(54349, 140, 4209, '76222183-e2c9-441b-81a4-35ae66509801', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54350, 140, 4210, '76222183-e2c9-441b-81a4-35ae66509801', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54351, 140, 4211, '76222183-e2c9-441b-81a4-35ae66509801', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54352, 140, 4212, '76222183-e2c9-441b-81a4-35ae66509801', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54353, 140, 4182, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54354, 140, 4183, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54355, 140, 4184, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54356, 140, 4185, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54357, 140, 4186, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54358, 140, 4187, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', 1), +(54359, 140, 4188, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', 1), +(54360, 140, 4189, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', 2), +(54361, 140, 4190, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', 2), +(54362, 140, 4191, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', 3), +(54363, 140, 4192, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54364, 140, 4193, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54365, 140, 4194, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54366, 140, 4195, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54367, 140, 4196, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', 3), +(54368, 140, 4197, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', 4), +(54369, 140, 4198, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', 4), +(54370, 140, 4199, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54371, 140, 4200, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54372, 140, 4201, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54373, 140, 4202, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', 5), +(54374, 140, 4203, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', 5), +(54375, 140, 4204, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54376, 140, 4205, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54377, 140, 4206, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54378, 140, 4207, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54379, 140, 4208, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', 6), +(54380, 140, 4209, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', 6), +(54381, 140, 4210, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54382, 140, 4211, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54383, 140, 4212, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54384, 140, 4182, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54385, 140, 4183, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54386, 140, 4184, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54387, 140, 4185, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 1), +(54388, 140, 4186, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 1), +(54389, 140, 4187, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54390, 140, 4188, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54391, 140, 4189, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54392, 140, 4190, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54393, 140, 4191, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54394, 140, 4192, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 2), +(54395, 140, 4193, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 2), +(54396, 140, 4194, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54397, 140, 4195, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54398, 140, 4196, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54399, 140, 4197, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54400, 140, 4198, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 3), +(54401, 140, 4199, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 3), +(54402, 140, 4200, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54403, 140, 4201, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54404, 140, 4202, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54405, 140, 4203, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54406, 140, 4204, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 4), +(54407, 140, 4205, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 4), +(54408, 140, 4206, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54409, 140, 4207, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54410, 140, 4208, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54411, 140, 4209, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 5), +(54412, 140, 4210, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 5), +(54413, 140, 4211, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 6), +(54414, 140, 4212, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 6), +(54415, 140, 4182, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54416, 140, 4183, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54417, 140, 4184, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54418, 140, 4185, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54419, 140, 4186, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54420, 140, 4187, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 1), +(54421, 140, 4188, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 1), +(54422, 140, 4189, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 2), +(54423, 140, 4190, '48d66e00-311c-4854-a629-dedbb36fb8be', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54424, 140, 4191, '48d66e00-311c-4854-a629-dedbb36fb8be', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54425, 140, 4192, '48d66e00-311c-4854-a629-dedbb36fb8be', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54426, 140, 4193, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 2), +(54427, 140, 4194, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 3), +(54428, 140, 4195, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54429, 140, 4196, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54430, 140, 4197, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54431, 140, 4198, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 3), +(54432, 140, 4199, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 4), +(54433, 140, 4200, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 4), +(54434, 140, 4201, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 5), +(54435, 140, 4202, '48d66e00-311c-4854-a629-dedbb36fb8be', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54436, 140, 4203, '48d66e00-311c-4854-a629-dedbb36fb8be', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54437, 140, 4204, '48d66e00-311c-4854-a629-dedbb36fb8be', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54438, 140, 4205, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 5), +(54439, 140, 4206, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 6), +(54440, 140, 4207, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 6), +(54441, 140, 4208, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54442, 140, 4209, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54443, 140, 4210, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54444, 140, 4211, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54445, 140, 4212, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54446, 140, 4182, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54447, 140, 4183, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54448, 140, 4184, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54449, 140, 4185, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 1), +(54450, 140, 4186, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 1), +(54451, 140, 4187, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54452, 140, 4188, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54453, 140, 4189, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54454, 140, 4190, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54455, 140, 4191, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 2), +(54456, 140, 4192, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 2), +(54457, 140, 4193, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54458, 140, 4194, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54459, 140, 4195, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54460, 140, 4196, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 3), +(54461, 140, 4197, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 3), +(54462, 140, 4198, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54463, 140, 4199, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54464, 140, 4200, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54465, 140, 4201, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54466, 140, 4202, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54467, 140, 4203, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 4), +(54468, 140, 4204, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 4), +(54469, 140, 4205, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54470, 140, 4206, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54471, 140, 4207, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54472, 140, 4208, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54473, 140, 4209, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 5), +(54474, 140, 4210, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 5), +(54475, 140, 4211, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 6), +(54476, 140, 4212, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 6), +(54477, 140, 4182, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 1), +(54478, 140, 4183, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 1), +(54479, 140, 4184, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 2), +(54480, 140, 4185, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 2), +(54481, 140, 4186, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 3), +(54482, 140, 4187, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54483, 140, 4188, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54484, 140, 4189, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54485, 140, 4190, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54486, 140, 4191, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54487, 140, 4192, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 3), +(54488, 140, 4193, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 4), +(54489, 140, 4194, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54490, 140, 4195, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54491, 140, 4196, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54492, 140, 4197, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54493, 140, 4198, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'M', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54494, 140, 4199, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 4), +(54495, 140, 4200, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 5), +(54496, 140, 4201, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54497, 140, 4202, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54498, 140, 4203, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54499, 140, 4204, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'N', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54500, 140, 4205, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 5), +(54501, 140, 4206, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 6), +(54502, 140, 4207, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:16', 6), +(54503, 140, 4208, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54504, 140, 4209, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54505, 140, 4210, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54506, 140, 4211, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54507, 140, 4212, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'T', NULL, NULL, '2026-10-05 16:12:15', '2026-10-05 16:12:15', NULL), +(54808, 141, 4213, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54809, 141, 4214, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 7), +(54810, 141, 4215, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 7), +(54811, 141, 4216, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54812, 141, 4217, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54813, 141, 4218, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54814, 141, 4219, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54815, 141, 4220, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 8), +(54816, 141, 4221, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 8), +(54817, 141, 4222, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 9), +(54818, 141, 4223, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 9), +(54819, 141, 4224, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'N', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54820, 141, 4225, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'N', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54821, 141, 4226, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'N', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54822, 141, 4227, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'N', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54823, 141, 4228, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'N', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54824, 141, 4229, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 10), +(54825, 141, 4230, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 10), +(54826, 141, 4231, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 11), +(54827, 141, 4232, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54828, 141, 4233, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54829, 141, 4234, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54830, 141, 4235, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 11), +(54831, 141, 4236, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 12), +(54832, 141, 4237, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 12), +(54833, 141, 4238, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54834, 141, 4239, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54835, 141, 4240, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54836, 141, 4241, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54837, 141, 4242, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54838, 141, 4213, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 7), +(54839, 141, 4214, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'N', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54840, 141, 4215, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'N', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54841, 141, 4216, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'N', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54842, 141, 4217, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'N', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54843, 141, 4218, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'N', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54844, 141, 4219, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 7), +(54845, 141, 4220, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 8), +(54846, 141, 4221, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 8), +(54847, 141, 4222, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 9), +(54848, 141, 4223, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54849, 141, 4224, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54850, 141, 4225, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54851, 141, 4226, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54852, 141, 4227, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54853, 141, 4228, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 9), +(54854, 141, 4229, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 10), +(54855, 141, 4230, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54856, 141, 4231, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54857, 141, 4232, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54858, 141, 4233, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 10), +(54859, 141, 4234, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 11), +(54860, 141, 4235, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54861, 141, 4236, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54862, 141, 4237, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54863, 141, 4238, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54864, 141, 4239, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54865, 141, 4240, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 11), +(54866, 141, 4241, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 12), +(54867, 141, 4242, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 12), +(54868, 141, 4213, '76222183-e2c9-441b-81a4-35ae66509801', 'N', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54869, 141, 4214, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 7), +(54870, 141, 4215, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 7), +(54871, 141, 4216, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 8), +(54872, 141, 4217, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 8), +(54873, 141, 4218, '76222183-e2c9-441b-81a4-35ae66509801', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54874, 141, 4219, '76222183-e2c9-441b-81a4-35ae66509801', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54875, 141, 4220, '76222183-e2c9-441b-81a4-35ae66509801', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54876, 141, 4221, '76222183-e2c9-441b-81a4-35ae66509801', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54877, 141, 4222, '76222183-e2c9-441b-81a4-35ae66509801', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54878, 141, 4223, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 9), +(54879, 141, 4224, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 9), +(54880, 141, 4225, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 10), +(54881, 141, 4226, '76222183-e2c9-441b-81a4-35ae66509801', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54882, 141, 4227, '76222183-e2c9-441b-81a4-35ae66509801', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54883, 141, 4228, '76222183-e2c9-441b-81a4-35ae66509801', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54884, 141, 4229, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 10), +(54885, 141, 4230, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 11), +(54886, 141, 4231, '76222183-e2c9-441b-81a4-35ae66509801', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54887, 141, 4232, '76222183-e2c9-441b-81a4-35ae66509801', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54888, 141, 4233, '76222183-e2c9-441b-81a4-35ae66509801', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54889, 141, 4234, '76222183-e2c9-441b-81a4-35ae66509801', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54890, 141, 4235, '76222183-e2c9-441b-81a4-35ae66509801', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54891, 141, 4236, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 11), +(54892, 141, 4237, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 12), +(54893, 141, 4238, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 12), +(54894, 141, 4239, '76222183-e2c9-441b-81a4-35ae66509801', 'N', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54895, 141, 4240, '76222183-e2c9-441b-81a4-35ae66509801', 'N', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54896, 141, 4241, '76222183-e2c9-441b-81a4-35ae66509801', 'N', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54897, 141, 4242, '76222183-e2c9-441b-81a4-35ae66509801', 'N', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54898, 141, 4213, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54899, 141, 4214, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54900, 141, 4215, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 7), +(54901, 141, 4216, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 7), +(54902, 141, 4217, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 8), +(54903, 141, 4218, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54904, 141, 4219, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54905, 141, 4220, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54906, 141, 4221, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 8), +(54907, 141, 4222, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 9), +(54908, 141, 4223, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54909, 141, 4224, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54910, 141, 4225, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54911, 141, 4226, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 9), +(54912, 141, 4227, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 10), +(54913, 141, 4228, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54914, 141, 4229, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54915, 141, 4230, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54916, 141, 4231, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54917, 141, 4232, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54918, 141, 4233, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 10), +(54919, 141, 4234, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 11), +(54920, 141, 4235, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 11), +(54921, 141, 4236, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 12), +(54922, 141, 4237, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 12), +(54923, 141, 4238, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54924, 141, 4239, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54925, 141, 4240, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54926, 141, 4241, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54927, 141, 4242, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54928, 141, 4213, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54929, 141, 4214, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54930, 141, 4215, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54931, 141, 4216, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54932, 141, 4217, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54933, 141, 4218, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 7), +(54934, 141, 4219, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 7), +(54935, 141, 4220, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54936, 141, 4221, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54937, 141, 4222, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54938, 141, 4223, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54939, 141, 4224, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 8), +(54940, 141, 4225, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 8), +(54941, 141, 4226, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 9), +(54942, 141, 4227, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 9), +(54943, 141, 4228, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 10), +(54944, 141, 4229, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'N', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54945, 141, 4230, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'N', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54946, 141, 4231, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'N', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54947, 141, 4232, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'N', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54948, 141, 4233, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'N', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54949, 141, 4234, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 10), +(54950, 141, 4235, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 11), +(54951, 141, 4236, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54952, 141, 4237, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54953, 141, 4238, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54954, 141, 4239, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54955, 141, 4240, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 11), +(54956, 141, 4241, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 12), +(54957, 141, 4242, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 12), +(54958, 141, 4213, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 7), +(54959, 141, 4214, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 7), +(54960, 141, 4215, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54961, 141, 4216, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54962, 141, 4217, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54963, 141, 4218, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 8), +(54964, 141, 4219, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 8), +(54965, 141, 4220, '48d66e00-311c-4854-a629-dedbb36fb8be', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54966, 141, 4221, '48d66e00-311c-4854-a629-dedbb36fb8be', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54967, 141, 4222, '48d66e00-311c-4854-a629-dedbb36fb8be', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54968, 141, 4223, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 9), +(54969, 141, 4224, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 9), +(54970, 141, 4225, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 10), +(54971, 141, 4226, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54972, 141, 4227, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54973, 141, 4228, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54974, 141, 4229, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54975, 141, 4230, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 10), +(54976, 141, 4231, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 11), +(54977, 141, 4232, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 11), +(54978, 141, 4233, '48d66e00-311c-4854-a629-dedbb36fb8be', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54979, 141, 4234, '48d66e00-311c-4854-a629-dedbb36fb8be', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54980, 141, 4235, '48d66e00-311c-4854-a629-dedbb36fb8be', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54981, 141, 4236, '48d66e00-311c-4854-a629-dedbb36fb8be', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54982, 141, 4237, '48d66e00-311c-4854-a629-dedbb36fb8be', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54983, 141, 4238, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 12), +(54984, 141, 4239, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 12), +(54985, 141, 4240, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54986, 141, 4241, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54987, 141, 4242, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54988, 141, 4213, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54989, 141, 4214, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54990, 141, 4215, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54991, 141, 4216, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54992, 141, 4217, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54993, 141, 4218, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 7), +(54994, 141, 4219, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 7), +(54995, 141, 4220, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 8), +(54996, 141, 4221, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54997, 141, 4222, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54998, 141, 4223, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(54999, 141, 4224, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(55000, 141, 4225, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(55001, 141, 4226, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 8), +(55002, 141, 4227, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 9), +(55003, 141, 4228, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 9), +(55004, 141, 4229, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(55005, 141, 4230, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(55006, 141, 4231, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(55007, 141, 4232, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 10), +(55008, 141, 4233, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 10), +(55009, 141, 4234, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'N', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(55010, 141, 4235, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'N', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(55011, 141, 4236, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'N', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(55012, 141, 4237, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'N', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(55013, 141, 4238, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'N', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(55014, 141, 4239, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 11), +(55015, 141, 4240, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 11), +(55016, 141, 4241, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 12), +(55017, 141, 4242, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 12), +(55018, 141, 4213, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 7), +(55019, 141, 4214, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 7), +(55020, 141, 4215, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 8), +(55021, 141, 4216, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 8), +(55022, 141, 4217, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 9), +(55023, 141, 4218, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 9), +(55024, 141, 4219, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'N', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(55025, 141, 4220, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'N', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(55026, 141, 4221, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'N', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(55027, 141, 4222, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'N', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(55028, 141, 4223, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'N', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(55029, 141, 4224, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 10), +(55030, 141, 4225, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 10), +(55031, 141, 4226, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(55032, 141, 4227, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(55033, 141, 4228, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(55034, 141, 4229, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(55035, 141, 4230, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(55036, 141, 4231, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 11), +(55037, 141, 4232, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 11), +(55038, 141, 4233, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(55039, 141, 4234, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(55040, 141, 4235, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(55041, 141, 4236, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(55042, 141, 4237, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'M', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(55043, 141, 4238, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 12), +(55044, 141, 4239, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', 12), +(55045, 141, 4240, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(55046, 141, 4241, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(55047, 141, 4242, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'T', NULL, NULL, '2026-10-05 16:12:55', '2026-10-05 16:12:55', NULL), +(55358, 142, 4243, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 13), +(55359, 142, 4244, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 13), +(55360, 142, 4245, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55361, 142, 4246, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55362, 142, 4247, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55363, 142, 4248, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 14), +(55364, 142, 4249, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 14), +(55365, 142, 4250, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55366, 142, 4251, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55367, 142, 4252, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55368, 142, 4253, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55369, 142, 4254, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 15), +(55370, 142, 4255, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 15), +(55371, 142, 4256, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55372, 142, 4257, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55373, 142, 4258, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55374, 142, 4259, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55375, 142, 4260, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 16), +(55376, 142, 4261, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 16), +(55377, 142, 4262, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 17), +(55378, 142, 4263, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 17), +(55379, 142, 4264, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55380, 142, 4265, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55381, 142, 4266, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55382, 142, 4267, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55383, 142, 4268, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55384, 142, 4269, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 18), +(55385, 142, 4270, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 18), +(55386, 142, 4271, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55387, 142, 4272, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55388, 142, 4273, 'b300783a-8ed7-44d3-b3a3-a23b222ee502', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55389, 142, 4243, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55390, 142, 4244, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55391, 142, 4245, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55392, 142, 4246, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 13), +(55393, 142, 4247, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 13), +(55394, 142, 4248, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55395, 142, 4249, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55396, 142, 4250, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55397, 142, 4251, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55398, 142, 4252, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 14), +(55399, 142, 4253, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 14), +(55400, 142, 4254, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55401, 142, 4255, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55402, 142, 4256, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55403, 142, 4257, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55404, 142, 4258, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55405, 142, 4259, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 15), +(55406, 142, 4260, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 15), +(55407, 142, 4261, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55408, 142, 4262, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55409, 142, 4263, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55410, 142, 4264, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 16), +(55411, 142, 4265, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 16), +(55412, 142, 4266, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 17), +(55413, 142, 4267, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55414, 142, 4268, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55415, 142, 4269, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55416, 142, 4270, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55417, 142, 4271, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 17), +(55418, 142, 4272, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 18), +(55419, 142, 4273, '5c43d74d-b658-4e5f-9d6b-707587da7584', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 18), +(55420, 142, 4243, '76222183-e2c9-441b-81a4-35ae66509801', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55421, 142, 4244, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 13), +(55422, 142, 4245, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 13), +(55423, 142, 4246, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 14), +(55424, 142, 4247, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 14), +(55425, 142, 4248, '76222183-e2c9-441b-81a4-35ae66509801', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55426, 142, 4249, '76222183-e2c9-441b-81a4-35ae66509801', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55427, 142, 4250, '76222183-e2c9-441b-81a4-35ae66509801', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55428, 142, 4251, '76222183-e2c9-441b-81a4-35ae66509801', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55429, 142, 4252, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 15), +(55430, 142, 4253, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 15), +(55431, 142, 4254, '76222183-e2c9-441b-81a4-35ae66509801', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55432, 142, 4255, '76222183-e2c9-441b-81a4-35ae66509801', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55433, 142, 4256, '76222183-e2c9-441b-81a4-35ae66509801', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55434, 142, 4257, '76222183-e2c9-441b-81a4-35ae66509801', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55435, 142, 4258, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 16), +(55436, 142, 4259, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 16), +(55437, 142, 4260, '76222183-e2c9-441b-81a4-35ae66509801', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55438, 142, 4261, '76222183-e2c9-441b-81a4-35ae66509801', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55439, 142, 4262, '76222183-e2c9-441b-81a4-35ae66509801', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55440, 142, 4263, '76222183-e2c9-441b-81a4-35ae66509801', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55441, 142, 4264, '76222183-e2c9-441b-81a4-35ae66509801', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55442, 142, 4265, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 17), +(55443, 142, 4266, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 17), +(55444, 142, 4267, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 18), +(55445, 142, 4268, '76222183-e2c9-441b-81a4-35ae66509801', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 18), +(55446, 142, 4269, '76222183-e2c9-441b-81a4-35ae66509801', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55447, 142, 4270, '76222183-e2c9-441b-81a4-35ae66509801', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55448, 142, 4271, '76222183-e2c9-441b-81a4-35ae66509801', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55449, 142, 4272, '76222183-e2c9-441b-81a4-35ae66509801', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55450, 142, 4273, '76222183-e2c9-441b-81a4-35ae66509801', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55451, 142, 4243, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 13), +(55452, 142, 4244, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 13), +(55453, 142, 4245, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55454, 142, 4246, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55455, 142, 4247, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55456, 142, 4248, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55457, 142, 4249, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55458, 142, 4250, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 14), +(55459, 142, 4251, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 14), +(55460, 142, 4252, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 15), +(55461, 142, 4253, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55462, 142, 4254, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55463, 142, 4255, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55464, 142, 4256, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 15), +(55465, 142, 4257, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 16), +(55466, 142, 4258, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55467, 142, 4259, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55468, 142, 4260, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55469, 142, 4261, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55470, 142, 4262, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 16), +(55471, 142, 4263, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 17), +(55472, 142, 4264, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 17), +(55473, 142, 4265, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55474, 142, 4266, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55475, 142, 4267, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55476, 142, 4268, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55477, 142, 4269, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 18), +(55478, 142, 4270, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 18), +(55479, 142, 4271, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55480, 142, 4272, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55481, 142, 4273, 'c41dc36c-c7e2-47bf-829d-dbd97d7f3089', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55482, 142, 4243, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55483, 142, 4244, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55484, 142, 4245, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55485, 142, 4246, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55486, 142, 4247, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 13), +(55487, 142, 4248, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 13), +(55488, 142, 4249, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 14), +(55489, 142, 4250, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55490, 142, 4251, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55491, 142, 4252, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55492, 142, 4253, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 14), +(55493, 142, 4254, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 15), +(55494, 142, 4255, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55495, 142, 4256, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55496, 142, 4257, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55497, 142, 4258, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 15), +(55498, 142, 4259, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 16), +(55499, 142, 4260, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55500, 142, 4261, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55501, 142, 4262, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55502, 142, 4263, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55503, 142, 4264, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55504, 142, 4265, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 16), +(55505, 142, 4266, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 17), +(55506, 142, 4267, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55507, 142, 4268, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55508, 142, 4269, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55509, 142, 4270, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55510, 142, 4271, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 17), +(55511, 142, 4272, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 18), +(55512, 142, 4273, '169617d8-dd55-4b73-a4da-b1eef12dfc31', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 18), +(55513, 142, 4243, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55514, 142, 4244, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55515, 142, 4245, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 13), +(55516, 142, 4246, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 13), +(55517, 142, 4247, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55518, 142, 4248, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55519, 142, 4249, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55520, 142, 4250, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 14), +(55521, 142, 4251, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 14), +(55522, 142, 4252, '48d66e00-311c-4854-a629-dedbb36fb8be', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55523, 142, 4253, '48d66e00-311c-4854-a629-dedbb36fb8be', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55524, 142, 4254, '48d66e00-311c-4854-a629-dedbb36fb8be', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55525, 142, 4255, '48d66e00-311c-4854-a629-dedbb36fb8be', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55526, 142, 4256, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 15), +(55527, 142, 4257, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 15), +(55528, 142, 4258, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 16), +(55529, 142, 4259, '48d66e00-311c-4854-a629-dedbb36fb8be', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55530, 142, 4260, '48d66e00-311c-4854-a629-dedbb36fb8be', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55531, 142, 4261, '48d66e00-311c-4854-a629-dedbb36fb8be', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55532, 142, 4262, '48d66e00-311c-4854-a629-dedbb36fb8be', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55533, 142, 4263, '48d66e00-311c-4854-a629-dedbb36fb8be', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55534, 142, 4264, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 16), +(55535, 142, 4265, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 17), +(55536, 142, 4266, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55537, 142, 4267, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55538, 142, 4268, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55539, 142, 4269, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55540, 142, 4270, '48d66e00-311c-4854-a629-dedbb36fb8be', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55541, 142, 4271, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 17), +(55542, 142, 4272, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 18), +(55543, 142, 4273, '48d66e00-311c-4854-a629-dedbb36fb8be', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 18), +(55544, 142, 4243, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 13), +(55545, 142, 4244, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55546, 142, 4245, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55547, 142, 4246, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55548, 142, 4247, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55549, 142, 4248, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 13), +(55550, 142, 4249, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 14), +(55551, 142, 4250, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55552, 142, 4251, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55553, 142, 4252, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55554, 142, 4253, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 14), +(55555, 142, 4254, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 15), +(55556, 142, 4255, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 15), +(55557, 142, 4256, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55558, 142, 4257, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55559, 142, 4258, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55560, 142, 4259, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55561, 142, 4260, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 16), +(55562, 142, 4261, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 16), +(55563, 142, 4262, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55564, 142, 4263, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55565, 142, 4264, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55566, 142, 4265, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55567, 142, 4266, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55568, 142, 4267, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 17), +(55569, 142, 4268, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 17), +(55570, 142, 4269, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 18), +(55571, 142, 4270, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 18), +(55572, 142, 4271, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55573, 142, 4272, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55574, 142, 4273, 'ece0b288-9013-40cc-b29f-52abe96eb2db', 'M', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55575, 142, 4243, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55576, 142, 4244, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55577, 142, 4245, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 13), +(55578, 142, 4246, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 13), +(55579, 142, 4247, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55580, 142, 4248, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55581, 142, 4249, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55582, 142, 4250, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 14), +(55583, 142, 4251, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 14), +(55584, 142, 4252, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55585, 142, 4253, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55586, 142, 4254, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55587, 142, 4255, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 15), +(55588, 142, 4256, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 15), +(55589, 142, 4257, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 16), +(55590, 142, 4258, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55591, 142, 4259, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55592, 142, 4260, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55593, 142, 4261, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 16), +(55594, 142, 4262, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 17), +(55595, 142, 4263, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 17), +(55596, 142, 4264, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55597, 142, 4265, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55598, 142, 4266, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'T', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55599, 142, 4267, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 18), +(55600, 142, 4268, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'L', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', 18), +(55601, 142, 4269, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55602, 142, 4270, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55603, 142, 4271, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55604, 142, 4272, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL), +(55605, 142, 4273, 'cce15baf-e4ec-4083-9ab9-2d3864c7b752', 'N', NULL, NULL, '2026-10-05 16:13:27', '2026-10-05 16:13:27', NULL); + +-- scheduling_history (3) +INSERT INTO scheduling_history (id, month_id, action, table_affected, record_id, field_changed, old_value, new_value, changed_by, changed_at, notes) VALUES +(768, 140, 'created', NULL, NULL, NULL, NULL, NULL, @seed_admin_id, '2026-10-05 16:11:44', NULL), +(769, 141, 'created', NULL, NULL, NULL, NULL, NULL, @seed_admin_id, '2026-10-05 16:12:24', NULL), +(770, 142, 'created', NULL, NULL, NULL, NULL, NULL, @seed_admin_id, '2026-10-05 16:12:56', NULL); + +-- scheduling_solver_runs (3) +INSERT INTO scheduling_solver_runs (id, month_id, generated_at, generated_by, status, solve_time_ms, cp_status, soft_penalty, soft_penalty_breakdown, solver_input, solver_matrix, conflicting_constraints) VALUES +(106, 140, '2026-10-05 16:12:15', @seed_admin_id, 'ok', 30811, 'FEASIBLE', 60, '{\"night_balance\":50,\"min_work_block_short\":6}', '{\"days\":[{\"dayNumber\":1,\"dayOfWeek\":\"J\",\"isHoliday\":false,\"weekNumber\":1},{\"dayNumber\":2,\"dayOfWeek\":\"V\",\"isHoliday\":false,\"weekNumber\":1},{\"dayNumber\":3,\"dayOfWeek\":\"S\",\"isHoliday\":false,\"weekNumber\":1},{\"dayNumber\":4,\"dayOfWeek\":\"D\",\"isHoliday\":false,\"weekNumber\":1},{\"dayNumber\":5,\"dayOfWeek\":\"L\",\"isHoliday\":false,\"weekNumber\":2},{\"dayNumber\":6,\"dayOfWeek\":\"M\",\"isHoliday\":false,\"weekNumber\":2},{\"dayNumber\":7,\"dayOfWeek\":\"X\",\"isHoliday\":false,\"weekNumber\":2},{\"dayNumber\":8,\"dayOfWeek\":\"J\",\"isHoliday\":false,\"weekNumber\":2},{\"dayNumber\":9,\"dayOfWeek\":\"V\",\"isHoliday\":false,\"weekNumber\":2},{\"dayNumber\":10,\"dayOfWeek\":\"S\",\"isHoliday\":false,\"weekNumber\":2},{\"dayNumber\":11,\"dayOfWeek\":\"D\",\"isHoliday\":false,\"weekNumber\":2},{\"dayNumber\":12,\"dayOfWeek\":\"L\",\"isHoliday\":false,\"weekNumber\":3},{\"dayNumber\":13,\"dayOfWeek\":\"M\",\"isHoliday\":false,\"weekNumber\":3},{\"dayNumber\":14,\"dayOfWeek\":\"X\",\"isHoliday\":false,\"weekNumber\":3},{\"dayNumber\":15,\"dayOfWeek\":\"J\",\"isHoliday\":false,\"weekNumber\":3},{\"dayNumber\":16,\"dayOfWeek\":\"V\",\"isHoliday\":false,\"weekNumber\":3},{\"dayNumber\":17,\"dayOfWeek\":\"S\",\"isHoliday\":false,\"weekNumber\":3},{\"dayNumber\":18,\"dayOfWeek\":\"D\",\"isHoliday\":false,\"weekNumber\":3},{\"dayNumber\":19,\"dayOfWeek\":\"L\",\"isHoliday\":false,\"weekNumber\":4},{\"dayNumber\":20,\"dayOfWeek\":\"M\",\"isHoliday\":false,\"weekNumber\":4},{\"dayNumber\":21,\"dayOfWeek\":\"X\",\"isHoliday\":false,\"weekNumber\":4},{\"dayNumber\":22,\"dayOfWeek\":\"J\",\"isHoliday\":false,\"weekNumber\":4},{\"dayNumber\":23,\"dayOfWeek\":\"V\",\"isHoliday\":false,\"weekNumber\":4},{\"dayNumber\":24,\"dayOfWeek\":\"S\",\"isHoliday\":false,\"weekNumber\":4},{\"dayNumber\":25,\"dayOfWeek\":\"D\",\"isHoliday\":false,\"weekNumber\":4},{\"dayNumber\":26,\"dayOfWeek\":\"L\",\"isHoliday\":false,\"weekNumber\":5},{\"dayNumber\":27,\"dayOfWeek\":\"M\",\"isHoliday\":false,\"weekNumber\":5},{\"dayNumber\":28,\"dayOfWeek\":\"X\",\"isHoliday\":false,\"weekNumber\":5},{\"dayNumber\":29,\"dayOfWeek\":\"J\",\"isHoliday\":false,\"weekNumber\":5},{\"dayNumber\":30,\"dayOfWeek\":\"V\",\"isHoliday\":false,\"weekNumber\":5},{\"dayNumber\":31,\"dayOfWeek\":\"S\",\"isHoliday\":false,\"weekNumber\":5}],\"year\":2026,\"month\":10,\"config\":{\"maxNightBlock\":6,\"maxNightStaff\":1,\"minNightBlock\":4,\"minNightStaff\":1,\"prefNightBlock\":5,\"maxMonthlyLibre\":12,\"maxMorningStaff\":2,\"minMonthlyLibre\":8,\"minMorningStaff\":1,\"prefMonthlyLibre\":10,\"prefMorningStaff\":2,\"maxAfternoonStaff\":2,\"minAfternoonStaff\":1,\"prefAfternoonStaff\":2,\"maxConsecutiveWorkDays\":6},\"monthId\":140,\"options\":{\"timeoutSeconds\":30,\"optimizationLevel\":\"balanced\"},\"employees\":[{\"id\":\"2d39bd85-81e2-4c71-8967-10d54d0117b1\",\"name\":\"empleado01\",\"rules\":{\"fixedDays\":[1,2,3,4,5],\"fixedShift\":\"P\",\"noWeekends\":false}},{\"id\":\"0f932b75-e169-4597-ac12-0b7b28d70ea4\",\"name\":\"empleado02\",\"rules\":{\"fixedDays\":[1,2,3,4,5],\"fixedShift\":\"P\",\"noWeekends\":false}},{\"id\":\"b300783a-8ed7-44d3-b3a3-a23b222ee502\",\"name\":\"empleado03\",\"rules\":{\"noWeekends\":false}},{\"id\":\"5c43d74d-b658-4e5f-9d6b-707587da7584\",\"name\":\"empleado04\",\"rules\":{\"noWeekends\":false}},{\"id\":\"76222183-e2c9-441b-81a4-35ae66509801\",\"name\":\"empleado05\",\"rules\":{\"noWeekends\":false}},{\"id\":\"c41dc36c-c7e2-47bf-829d-dbd97d7f3089\",\"name\":\"empleado06\",\"rules\":{\"noWeekends\":false}},{\"id\":\"169617d8-dd55-4b73-a4da-b1eef12dfc31\",\"name\":\"empleado07\",\"rules\":{\"noWeekends\":false}},{\"id\":\"48d66e00-311c-4854-a629-dedbb36fb8be\",\"name\":\"empleado08\",\"rules\":{\"noWeekends\":false}},{\"id\":\"ece0b288-9013-40cc-b29f-52abe96eb2db\",\"name\":\"empleado09\",\"rules\":{\"noWeekends\":false}},{\"id\":\"cce15baf-e4ec-4083-9ab9-2d3864c7b752\",\"name\":\"empleado10\",\"rules\":{\"noWeekends\":false}}],\"lockedCells\":{\"0f932b75-e169-4597-ac12-0b7b28d70ea4\":{\"1\":\"P\",\"2\":\"P\",\"3\":\"L\",\"4\":\"L\",\"5\":\"P\",\"6\":\"P\",\"7\":\"P\",\"8\":\"P\",\"9\":\"P\",\"10\":\"L\",\"11\":\"L\",\"12\":\"P\",\"13\":\"P\",\"14\":\"P\",\"15\":\"P\",\"16\":\"P\",\"17\":\"L\",\"18\":\"L\",\"19\":\"P\",\"20\":\"P\",\"21\":\"P\",\"22\":\"P\",\"23\":\"P\",\"24\":\"L\",\"25\":\"L\",\"26\":\"P\",\"27\":\"P\",\"28\":\"P\",\"29\":\"P\",\"30\":\"P\",\"31\":\"L\"},\"2d39bd85-81e2-4c71-8967-10d54d0117b1\":{\"1\":\"P\",\"2\":\"P\",\"3\":\"L\",\"4\":\"L\",\"5\":\"P\",\"6\":\"P\",\"7\":\"P\",\"8\":\"P\",\"9\":\"P\",\"10\":\"L\",\"11\":\"L\",\"12\":\"P\",\"13\":\"P\",\"14\":\"P\",\"15\":\"P\",\"16\":\"P\",\"17\":\"L\",\"18\":\"L\",\"19\":\"P\",\"20\":\"P\",\"21\":\"P\",\"22\":\"P\",\"23\":\"P\",\"24\":\"L\",\"25\":\"L\",\"26\":\"P\",\"27\":\"P\",\"28\":\"P\",\"29\":\"P\",\"30\":\"P\",\"31\":\"L\"}},\"nightsHistory\":{},\"previousMonthTail\":{}}', '{\"0f932b75-e169-4597-ac12-0b7b28d70ea4\":{\"1\":\"P\",\"2\":\"P\",\"3\":\"L\",\"4\":\"L\",\"5\":\"P\",\"6\":\"P\",\"7\":\"P\",\"8\":\"P\",\"9\":\"P\",\"10\":\"L\",\"11\":\"L\",\"12\":\"P\",\"13\":\"P\",\"14\":\"P\",\"15\":\"P\",\"16\":\"P\",\"17\":\"L\",\"18\":\"L\",\"19\":\"P\",\"20\":\"P\",\"21\":\"P\",\"22\":\"P\",\"23\":\"P\",\"24\":\"L\",\"25\":\"L\",\"26\":\"P\",\"27\":\"P\",\"28\":\"P\",\"29\":\"P\",\"30\":\"P\",\"31\":\"L\"},\"169617d8-dd55-4b73-a4da-b1eef12dfc31\":{\"1\":\"M\",\"2\":\"M\",\"3\":\"M\",\"4\":\"L\",\"5\":\"L\",\"6\":\"N\",\"7\":\"N\",\"8\":\"N\",\"9\":\"N\",\"10\":\"N\",\"11\":\"L\",\"12\":\"L\",\"13\":\"T\",\"14\":\"T\",\"15\":\"T\",\"16\":\"T\",\"17\":\"L\",\"18\":\"L\",\"19\":\"T\",\"20\":\"T\",\"21\":\"T\",\"22\":\"T\",\"23\":\"L\",\"24\":\"L\",\"25\":\"M\",\"26\":\"M\",\"27\":\"M\",\"28\":\"L\",\"29\":\"L\",\"30\":\"L\",\"31\":\"L\"},\"2d39bd85-81e2-4c71-8967-10d54d0117b1\":{\"1\":\"P\",\"2\":\"P\",\"3\":\"L\",\"4\":\"L\",\"5\":\"P\",\"6\":\"P\",\"7\":\"P\",\"8\":\"P\",\"9\":\"P\",\"10\":\"L\",\"11\":\"L\",\"12\":\"P\",\"13\":\"P\",\"14\":\"P\",\"15\":\"P\",\"16\":\"P\",\"17\":\"L\",\"18\":\"L\",\"19\":\"P\",\"20\":\"P\",\"21\":\"P\",\"22\":\"P\",\"23\":\"P\",\"24\":\"L\",\"25\":\"L\",\"26\":\"P\",\"27\":\"P\",\"28\":\"P\",\"29\":\"P\",\"30\":\"P\",\"31\":\"L\"},\"48d66e00-311c-4854-a629-dedbb36fb8be\":{\"1\":\"M\",\"2\":\"M\",\"3\":\"M\",\"4\":\"M\",\"5\":\"M\",\"6\":\"L\",\"7\":\"L\",\"8\":\"L\",\"9\":\"T\",\"10\":\"T\",\"11\":\"T\",\"12\":\"L\",\"13\":\"L\",\"14\":\"M\",\"15\":\"M\",\"16\":\"M\",\"17\":\"L\",\"18\":\"L\",\"19\":\"L\",\"20\":\"L\",\"21\":\"T\",\"22\":\"T\",\"23\":\"T\",\"24\":\"L\",\"25\":\"L\",\"26\":\"L\",\"27\":\"M\",\"28\":\"M\",\"29\":\"M\",\"30\":\"M\",\"31\":\"M\"},\"5c43d74d-b658-4e5f-9d6b-707587da7584\":{\"1\":\"N\",\"2\":\"N\",\"3\":\"N\",\"4\":\"N\",\"5\":\"N\",\"6\":\"L\",\"7\":\"L\",\"8\":\"M\",\"9\":\"M\",\"10\":\"M\",\"11\":\"M\",\"12\":\"M\",\"13\":\"L\",\"14\":\"L\",\"15\":\"T\",\"16\":\"T\",\"17\":\"T\",\"18\":\"T\",\"19\":\"L\",\"20\":\"L\",\"21\":\"L\",\"22\":\"L\",\"23\":\"L\",\"24\":\"T\",\"25\":\"T\",\"26\":\"T\",\"27\":\"T\",\"28\":\"T\",\"29\":\"L\",\"30\":\"L\",\"31\":\"L\"},\"76222183-e2c9-441b-81a4-35ae66509801\":{\"1\":\"L\",\"2\":\"L\",\"3\":\"L\",\"4\":\"T\",\"5\":\"T\",\"6\":\"T\",\"7\":\"T\",\"8\":\"T\",\"9\":\"L\",\"10\":\"L\",\"11\":\"M\",\"12\":\"M\",\"13\":\"M\",\"14\":\"L\",\"15\":\"L\",\"16\":\"L\",\"17\":\"T\",\"18\":\"T\",\"19\":\"T\",\"20\":\"T\",\"21\":\"L\",\"22\":\"L\",\"23\":\"T\",\"24\":\"T\",\"25\":\"T\",\"26\":\"L\",\"27\":\"L\",\"28\":\"N\",\"29\":\"N\",\"30\":\"N\",\"31\":\"N\"},\"b300783a-8ed7-44d3-b3a3-a23b222ee502\":{\"1\":\"L\",\"2\":\"L\",\"3\":\"L\",\"4\":\"M\",\"5\":\"M\",\"6\":\"M\",\"7\":\"M\",\"8\":\"L\",\"9\":\"L\",\"10\":\"T\",\"11\":\"T\",\"12\":\"T\",\"13\":\"L\",\"14\":\"L\",\"15\":\"N\",\"16\":\"N\",\"17\":\"N\",\"18\":\"N\",\"19\":\"N\",\"20\":\"L\",\"21\":\"L\",\"22\":\"M\",\"23\":\"M\",\"24\":\"M\",\"25\":\"L\",\"26\":\"L\",\"27\":\"L\",\"28\":\"M\",\"29\":\"M\",\"30\":\"M\",\"31\":\"M\"},\"c41dc36c-c7e2-47bf-829d-dbd97d7f3089\":{\"1\":\"T\",\"2\":\"T\",\"3\":\"T\",\"4\":\"T\",\"5\":\"T\",\"6\":\"L\",\"7\":\"L\",\"8\":\"L\",\"9\":\"L\",\"10\":\"L\",\"11\":\"N\",\"12\":\"N\",\"13\":\"N\",\"14\":\"N\",\"15\":\"L\",\"16\":\"L\",\"17\":\"L\",\"18\":\"M\",\"19\":\"M\",\"20\":\"M\",\"21\":\"L\",\"22\":\"L\",\"23\":\"M\",\"24\":\"M\",\"25\":\"M\",\"26\":\"M\",\"27\":\"L\",\"28\":\"L\",\"29\":\"T\",\"30\":\"T\",\"31\":\"T\"},\"cce15baf-e4ec-4083-9ab9-2d3864c7b752\":{\"1\":\"L\",\"2\":\"L\",\"3\":\"L\",\"4\":\"L\",\"5\":\"L\",\"6\":\"M\",\"7\":\"M\",\"8\":\"M\",\"9\":\"M\",\"10\":\"M\",\"11\":\"L\",\"12\":\"L\",\"13\":\"M\",\"14\":\"M\",\"15\":\"M\",\"16\":\"M\",\"17\":\"M\",\"18\":\"L\",\"19\":\"L\",\"20\":\"N\",\"21\":\"N\",\"22\":\"N\",\"23\":\"N\",\"24\":\"L\",\"25\":\"L\",\"26\":\"L\",\"27\":\"T\",\"28\":\"T\",\"29\":\"T\",\"30\":\"T\",\"31\":\"T\"},\"ece0b288-9013-40cc-b29f-52abe96eb2db\":{\"1\":\"T\",\"2\":\"T\",\"3\":\"T\",\"4\":\"L\",\"5\":\"L\",\"6\":\"T\",\"7\":\"T\",\"8\":\"T\",\"9\":\"T\",\"10\":\"L\",\"11\":\"L\",\"12\":\"T\",\"13\":\"T\",\"14\":\"T\",\"15\":\"L\",\"16\":\"L\",\"17\":\"M\",\"18\":\"M\",\"19\":\"M\",\"20\":\"M\",\"21\":\"M\",\"22\":\"L\",\"23\":\"L\",\"24\":\"N\",\"25\":\"N\",\"26\":\"N\",\"27\":\"N\",\"28\":\"L\",\"29\":\"L\",\"30\":\"L\",\"31\":\"L\"}}', NULL), +(107, 141, '2026-10-05 16:12:55', @seed_admin_id, 'ok', 30804, 'FEASIBLE', 66, '{\"night_balance\":50,\"min_work_block_short\":12}', '{\"days\":[{\"dayNumber\":1,\"dayOfWeek\":\"D\",\"isHoliday\":false,\"weekNumber\":1},{\"dayNumber\":2,\"dayOfWeek\":\"L\",\"isHoliday\":false,\"weekNumber\":2},{\"dayNumber\":3,\"dayOfWeek\":\"M\",\"isHoliday\":false,\"weekNumber\":2},{\"dayNumber\":4,\"dayOfWeek\":\"X\",\"isHoliday\":false,\"weekNumber\":2},{\"dayNumber\":5,\"dayOfWeek\":\"J\",\"isHoliday\":false,\"weekNumber\":2},{\"dayNumber\":6,\"dayOfWeek\":\"V\",\"isHoliday\":false,\"weekNumber\":2},{\"dayNumber\":7,\"dayOfWeek\":\"S\",\"isHoliday\":false,\"weekNumber\":2},{\"dayNumber\":8,\"dayOfWeek\":\"D\",\"isHoliday\":false,\"weekNumber\":2},{\"dayNumber\":9,\"dayOfWeek\":\"L\",\"isHoliday\":false,\"weekNumber\":3},{\"dayNumber\":10,\"dayOfWeek\":\"M\",\"isHoliday\":false,\"weekNumber\":3},{\"dayNumber\":11,\"dayOfWeek\":\"X\",\"isHoliday\":false,\"weekNumber\":3},{\"dayNumber\":12,\"dayOfWeek\":\"J\",\"isHoliday\":false,\"weekNumber\":3},{\"dayNumber\":13,\"dayOfWeek\":\"V\",\"isHoliday\":false,\"weekNumber\":3},{\"dayNumber\":14,\"dayOfWeek\":\"S\",\"isHoliday\":false,\"weekNumber\":3},{\"dayNumber\":15,\"dayOfWeek\":\"D\",\"isHoliday\":false,\"weekNumber\":3},{\"dayNumber\":16,\"dayOfWeek\":\"L\",\"isHoliday\":false,\"weekNumber\":4},{\"dayNumber\":17,\"dayOfWeek\":\"M\",\"isHoliday\":false,\"weekNumber\":4},{\"dayNumber\":18,\"dayOfWeek\":\"X\",\"isHoliday\":false,\"weekNumber\":4},{\"dayNumber\":19,\"dayOfWeek\":\"J\",\"isHoliday\":false,\"weekNumber\":4},{\"dayNumber\":20,\"dayOfWeek\":\"V\",\"isHoliday\":false,\"weekNumber\":4},{\"dayNumber\":21,\"dayOfWeek\":\"S\",\"isHoliday\":false,\"weekNumber\":4},{\"dayNumber\":22,\"dayOfWeek\":\"D\",\"isHoliday\":false,\"weekNumber\":4},{\"dayNumber\":23,\"dayOfWeek\":\"L\",\"isHoliday\":false,\"weekNumber\":5},{\"dayNumber\":24,\"dayOfWeek\":\"M\",\"isHoliday\":false,\"weekNumber\":5},{\"dayNumber\":25,\"dayOfWeek\":\"X\",\"isHoliday\":false,\"weekNumber\":5},{\"dayNumber\":26,\"dayOfWeek\":\"J\",\"isHoliday\":false,\"weekNumber\":5},{\"dayNumber\":27,\"dayOfWeek\":\"V\",\"isHoliday\":false,\"weekNumber\":5},{\"dayNumber\":28,\"dayOfWeek\":\"S\",\"isHoliday\":false,\"weekNumber\":5},{\"dayNumber\":29,\"dayOfWeek\":\"D\",\"isHoliday\":false,\"weekNumber\":5},{\"dayNumber\":30,\"dayOfWeek\":\"L\",\"isHoliday\":false,\"weekNumber\":6}],\"year\":2026,\"month\":11,\"config\":{\"maxNightBlock\":6,\"maxNightStaff\":1,\"minNightBlock\":4,\"minNightStaff\":1,\"prefNightBlock\":5,\"maxMonthlyLibre\":12,\"maxMorningStaff\":2,\"minMonthlyLibre\":8,\"minMorningStaff\":1,\"prefMonthlyLibre\":10,\"prefMorningStaff\":2,\"maxAfternoonStaff\":2,\"minAfternoonStaff\":1,\"prefAfternoonStaff\":2,\"maxConsecutiveWorkDays\":6},\"monthId\":141,\"options\":{\"timeoutSeconds\":30,\"optimizationLevel\":\"balanced\"},\"employees\":[{\"id\":\"2d39bd85-81e2-4c71-8967-10d54d0117b1\",\"name\":\"empleado01\",\"rules\":{\"fixedDays\":[1,2,3,4,5],\"fixedShift\":\"P\",\"noWeekends\":false}},{\"id\":\"0f932b75-e169-4597-ac12-0b7b28d70ea4\",\"name\":\"empleado02\",\"rules\":{\"fixedDays\":[1,2,3,4,5],\"fixedShift\":\"P\",\"noWeekends\":false}},{\"id\":\"b300783a-8ed7-44d3-b3a3-a23b222ee502\",\"name\":\"empleado03\",\"rules\":{\"noWeekends\":false}},{\"id\":\"5c43d74d-b658-4e5f-9d6b-707587da7584\",\"name\":\"empleado04\",\"rules\":{\"noWeekends\":false}},{\"id\":\"76222183-e2c9-441b-81a4-35ae66509801\",\"name\":\"empleado05\",\"rules\":{\"noWeekends\":false}},{\"id\":\"c41dc36c-c7e2-47bf-829d-dbd97d7f3089\",\"name\":\"empleado06\",\"rules\":{\"noWeekends\":false}},{\"id\":\"169617d8-dd55-4b73-a4da-b1eef12dfc31\",\"name\":\"empleado07\",\"rules\":{\"noWeekends\":false}},{\"id\":\"48d66e00-311c-4854-a629-dedbb36fb8be\",\"name\":\"empleado08\",\"rules\":{\"noWeekends\":false}},{\"id\":\"ece0b288-9013-40cc-b29f-52abe96eb2db\",\"name\":\"empleado09\",\"rules\":{\"noWeekends\":false}},{\"id\":\"cce15baf-e4ec-4083-9ab9-2d3864c7b752\",\"name\":\"empleado10\",\"rules\":{\"noWeekends\":false}}],\"lockedCells\":{\"0f932b75-e169-4597-ac12-0b7b28d70ea4\":{\"1\":\"L\",\"2\":\"P\",\"3\":\"P\",\"4\":\"P\",\"5\":\"P\",\"6\":\"P\",\"7\":\"L\",\"8\":\"L\",\"9\":\"P\",\"10\":\"P\",\"11\":\"P\",\"12\":\"P\",\"13\":\"P\",\"14\":\"L\",\"15\":\"L\",\"16\":\"P\",\"17\":\"P\",\"18\":\"P\",\"19\":\"P\",\"20\":\"P\",\"21\":\"L\",\"22\":\"L\",\"23\":\"P\",\"24\":\"P\",\"25\":\"P\",\"26\":\"P\",\"27\":\"P\",\"28\":\"L\",\"29\":\"L\",\"30\":\"P\"},\"2d39bd85-81e2-4c71-8967-10d54d0117b1\":{\"1\":\"L\",\"2\":\"P\",\"3\":\"P\",\"4\":\"P\",\"5\":\"P\",\"6\":\"P\",\"7\":\"L\",\"8\":\"L\",\"9\":\"P\",\"10\":\"P\",\"11\":\"P\",\"12\":\"P\",\"13\":\"P\",\"14\":\"L\",\"15\":\"L\",\"16\":\"P\",\"17\":\"P\",\"18\":\"P\",\"19\":\"P\",\"20\":\"P\",\"21\":\"L\",\"22\":\"L\",\"23\":\"P\",\"24\":\"P\",\"25\":\"P\",\"26\":\"P\",\"27\":\"P\",\"28\":\"L\",\"29\":\"L\",\"30\":\"P\"}},\"nightsHistory\":{},\"previousMonthTail\":{\"169617d8-dd55-4b73-a4da-b1eef12dfc31\":[\"M\",\"M\",\"M\",\"L\",\"L\",\"L\",\"L\"],\"48d66e00-311c-4854-a629-dedbb36fb8be\":[\"L\",\"L\",\"M\",\"M\",\"M\",\"M\",\"M\"],\"5c43d74d-b658-4e5f-9d6b-707587da7584\":[\"T\",\"T\",\"T\",\"T\",\"L\",\"L\",\"L\"],\"76222183-e2c9-441b-81a4-35ae66509801\":[\"T\",\"L\",\"L\",\"N\",\"N\",\"N\",\"N\"],\"b300783a-8ed7-44d3-b3a3-a23b222ee502\":[\"L\",\"L\",\"L\",\"M\",\"M\",\"M\",\"M\"],\"c41dc36c-c7e2-47bf-829d-dbd97d7f3089\":[\"M\",\"M\",\"L\",\"L\",\"T\",\"T\",\"T\"],\"cce15baf-e4ec-4083-9ab9-2d3864c7b752\":[\"L\",\"L\",\"T\",\"T\",\"T\",\"T\",\"T\"],\"ece0b288-9013-40cc-b29f-52abe96eb2db\":[\"N\",\"N\",\"N\",\"L\",\"L\",\"L\",\"L\"]}}', '{\"0f932b75-e169-4597-ac12-0b7b28d70ea4\":{\"1\":\"L\",\"2\":\"P\",\"3\":\"P\",\"4\":\"P\",\"5\":\"P\",\"6\":\"P\",\"7\":\"L\",\"8\":\"L\",\"9\":\"P\",\"10\":\"P\",\"11\":\"P\",\"12\":\"P\",\"13\":\"P\",\"14\":\"L\",\"15\":\"L\",\"16\":\"P\",\"17\":\"P\",\"18\":\"P\",\"19\":\"P\",\"20\":\"P\",\"21\":\"L\",\"22\":\"L\",\"23\":\"P\",\"24\":\"P\",\"25\":\"P\",\"26\":\"P\",\"27\":\"P\",\"28\":\"L\",\"29\":\"L\",\"30\":\"P\"},\"169617d8-dd55-4b73-a4da-b1eef12dfc31\":{\"1\":\"M\",\"2\":\"M\",\"3\":\"M\",\"4\":\"M\",\"5\":\"M\",\"6\":\"L\",\"7\":\"L\",\"8\":\"T\",\"9\":\"T\",\"10\":\"T\",\"11\":\"T\",\"12\":\"L\",\"13\":\"L\",\"14\":\"L\",\"15\":\"L\",\"16\":\"L\",\"17\":\"N\",\"18\":\"N\",\"19\":\"N\",\"20\":\"N\",\"21\":\"N\",\"22\":\"L\",\"23\":\"L\",\"24\":\"T\",\"25\":\"T\",\"26\":\"T\",\"27\":\"T\",\"28\":\"L\",\"29\":\"L\",\"30\":\"L\",\"-1\":\"L\",\"-2\":\"L\",\"-3\":\"L\",\"-4\":\"L\",\"-5\":\"M\",\"-6\":\"M\",\"-7\":\"M\"},\"2d39bd85-81e2-4c71-8967-10d54d0117b1\":{\"1\":\"L\",\"2\":\"P\",\"3\":\"P\",\"4\":\"P\",\"5\":\"P\",\"6\":\"P\",\"7\":\"L\",\"8\":\"L\",\"9\":\"P\",\"10\":\"P\",\"11\":\"P\",\"12\":\"P\",\"13\":\"P\",\"14\":\"L\",\"15\":\"L\",\"16\":\"P\",\"17\":\"P\",\"18\":\"P\",\"19\":\"P\",\"20\":\"P\",\"21\":\"L\",\"22\":\"L\",\"23\":\"P\",\"24\":\"P\",\"25\":\"P\",\"26\":\"P\",\"27\":\"P\",\"28\":\"L\",\"29\":\"L\",\"30\":\"P\"},\"48d66e00-311c-4854-a629-dedbb36fb8be\":{\"1\":\"L\",\"2\":\"L\",\"3\":\"M\",\"4\":\"M\",\"5\":\"M\",\"6\":\"L\",\"7\":\"L\",\"8\":\"T\",\"9\":\"T\",\"10\":\"T\",\"11\":\"L\",\"12\":\"L\",\"13\":\"L\",\"14\":\"M\",\"15\":\"M\",\"16\":\"M\",\"17\":\"M\",\"18\":\"L\",\"19\":\"L\",\"20\":\"L\",\"21\":\"T\",\"22\":\"T\",\"23\":\"T\",\"24\":\"T\",\"25\":\"T\",\"26\":\"L\",\"27\":\"L\",\"28\":\"M\",\"29\":\"M\",\"30\":\"M\",\"-1\":\"M\",\"-2\":\"M\",\"-3\":\"M\",\"-4\":\"M\",\"-5\":\"M\",\"-6\":\"L\",\"-7\":\"L\"},\"5c43d74d-b658-4e5f-9d6b-707587da7584\":{\"1\":\"L\",\"2\":\"N\",\"3\":\"N\",\"4\":\"N\",\"5\":\"N\",\"6\":\"N\",\"7\":\"L\",\"8\":\"L\",\"9\":\"L\",\"10\":\"L\",\"11\":\"T\",\"12\":\"T\",\"13\":\"T\",\"14\":\"T\",\"15\":\"T\",\"16\":\"L\",\"17\":\"L\",\"18\":\"M\",\"19\":\"M\",\"20\":\"M\",\"21\":\"L\",\"22\":\"L\",\"23\":\"M\",\"24\":\"M\",\"25\":\"M\",\"26\":\"M\",\"27\":\"M\",\"28\":\"L\",\"29\":\"L\",\"30\":\"L\",\"-1\":\"L\",\"-2\":\"L\",\"-3\":\"L\",\"-4\":\"T\",\"-5\":\"T\",\"-6\":\"T\",\"-7\":\"T\"},\"76222183-e2c9-441b-81a4-35ae66509801\":{\"1\":\"N\",\"2\":\"L\",\"3\":\"L\",\"4\":\"L\",\"5\":\"L\",\"6\":\"M\",\"7\":\"M\",\"8\":\"M\",\"9\":\"M\",\"10\":\"M\",\"11\":\"L\",\"12\":\"L\",\"13\":\"L\",\"14\":\"M\",\"15\":\"M\",\"16\":\"M\",\"17\":\"L\",\"18\":\"L\",\"19\":\"T\",\"20\":\"T\",\"21\":\"T\",\"22\":\"T\",\"23\":\"T\",\"24\":\"L\",\"25\":\"L\",\"26\":\"L\",\"27\":\"N\",\"28\":\"N\",\"29\":\"N\",\"30\":\"N\",\"-1\":\"N\",\"-2\":\"N\",\"-3\":\"N\",\"-4\":\"N\",\"-5\":\"L\",\"-6\":\"L\",\"-7\":\"T\"},\"b300783a-8ed7-44d3-b3a3-a23b222ee502\":{\"1\":\"M\",\"2\":\"L\",\"3\":\"L\",\"4\":\"T\",\"5\":\"T\",\"6\":\"T\",\"7\":\"T\",\"8\":\"L\",\"9\":\"L\",\"10\":\"L\",\"11\":\"L\",\"12\":\"N\",\"13\":\"N\",\"14\":\"N\",\"15\":\"N\",\"16\":\"N\",\"17\":\"L\",\"18\":\"L\",\"19\":\"L\",\"20\":\"M\",\"21\":\"M\",\"22\":\"M\",\"23\":\"L\",\"24\":\"L\",\"25\":\"L\",\"26\":\"M\",\"27\":\"M\",\"28\":\"M\",\"29\":\"M\",\"30\":\"M\",\"-1\":\"M\",\"-2\":\"M\",\"-3\":\"M\",\"-4\":\"M\",\"-5\":\"L\",\"-6\":\"L\",\"-7\":\"L\"},\"c41dc36c-c7e2-47bf-829d-dbd97d7f3089\":{\"1\":\"T\",\"2\":\"T\",\"3\":\"L\",\"4\":\"L\",\"5\":\"L\",\"6\":\"M\",\"7\":\"M\",\"8\":\"M\",\"9\":\"L\",\"10\":\"L\",\"11\":\"M\",\"12\":\"M\",\"13\":\"M\",\"14\":\"L\",\"15\":\"L\",\"16\":\"T\",\"17\":\"T\",\"18\":\"T\",\"19\":\"T\",\"20\":\"T\",\"21\":\"L\",\"22\":\"L\",\"23\":\"L\",\"24\":\"L\",\"25\":\"L\",\"26\":\"T\",\"27\":\"T\",\"28\":\"T\",\"29\":\"T\",\"30\":\"T\",\"-1\":\"T\",\"-2\":\"T\",\"-3\":\"T\",\"-4\":\"L\",\"-5\":\"L\",\"-6\":\"M\",\"-7\":\"M\"},\"cce15baf-e4ec-4083-9ab9-2d3864c7b752\":{\"1\":\"L\",\"2\":\"L\",\"3\":\"L\",\"4\":\"L\",\"5\":\"L\",\"6\":\"L\",\"7\":\"N\",\"8\":\"N\",\"9\":\"N\",\"10\":\"N\",\"11\":\"N\",\"12\":\"L\",\"13\":\"L\",\"14\":\"T\",\"15\":\"T\",\"16\":\"T\",\"17\":\"T\",\"18\":\"T\",\"19\":\"L\",\"20\":\"L\",\"21\":\"M\",\"22\":\"M\",\"23\":\"M\",\"24\":\"M\",\"25\":\"M\",\"26\":\"L\",\"27\":\"L\",\"28\":\"T\",\"29\":\"T\",\"30\":\"T\",\"-1\":\"T\",\"-2\":\"T\",\"-3\":\"T\",\"-4\":\"T\",\"-5\":\"T\",\"-6\":\"L\",\"-7\":\"L\"},\"ece0b288-9013-40cc-b29f-52abe96eb2db\":{\"1\":\"T\",\"2\":\"T\",\"3\":\"T\",\"4\":\"T\",\"5\":\"T\",\"6\":\"L\",\"7\":\"L\",\"8\":\"L\",\"9\":\"M\",\"10\":\"M\",\"11\":\"M\",\"12\":\"M\",\"13\":\"M\",\"14\":\"L\",\"15\":\"L\",\"16\":\"L\",\"17\":\"M\",\"18\":\"M\",\"19\":\"M\",\"20\":\"L\",\"21\":\"L\",\"22\":\"N\",\"23\":\"N\",\"24\":\"N\",\"25\":\"N\",\"26\":\"N\",\"27\":\"L\",\"28\":\"L\",\"29\":\"L\",\"30\":\"L\",\"-1\":\"L\",\"-2\":\"L\",\"-3\":\"L\",\"-4\":\"L\",\"-5\":\"N\",\"-6\":\"N\",\"-7\":\"N\"}}', NULL), +(108, 142, '2026-10-05 16:13:27', @seed_admin_id, 'ok', 30507, 'FEASIBLE', 40, '{\"night_balance\":40}', '{\"days\":[{\"dayNumber\":1,\"dayOfWeek\":\"M\",\"isHoliday\":false,\"weekNumber\":1},{\"dayNumber\":2,\"dayOfWeek\":\"X\",\"isHoliday\":false,\"weekNumber\":1},{\"dayNumber\":3,\"dayOfWeek\":\"J\",\"isHoliday\":false,\"weekNumber\":1},{\"dayNumber\":4,\"dayOfWeek\":\"V\",\"isHoliday\":false,\"weekNumber\":1},{\"dayNumber\":5,\"dayOfWeek\":\"S\",\"isHoliday\":false,\"weekNumber\":1},{\"dayNumber\":6,\"dayOfWeek\":\"D\",\"isHoliday\":false,\"weekNumber\":1},{\"dayNumber\":7,\"dayOfWeek\":\"L\",\"isHoliday\":false,\"weekNumber\":2},{\"dayNumber\":8,\"dayOfWeek\":\"M\",\"isHoliday\":false,\"weekNumber\":2},{\"dayNumber\":9,\"dayOfWeek\":\"X\",\"isHoliday\":false,\"weekNumber\":2},{\"dayNumber\":10,\"dayOfWeek\":\"J\",\"isHoliday\":false,\"weekNumber\":2},{\"dayNumber\":11,\"dayOfWeek\":\"V\",\"isHoliday\":false,\"weekNumber\":2},{\"dayNumber\":12,\"dayOfWeek\":\"S\",\"isHoliday\":false,\"weekNumber\":2},{\"dayNumber\":13,\"dayOfWeek\":\"D\",\"isHoliday\":false,\"weekNumber\":2},{\"dayNumber\":14,\"dayOfWeek\":\"L\",\"isHoliday\":false,\"weekNumber\":3},{\"dayNumber\":15,\"dayOfWeek\":\"M\",\"isHoliday\":false,\"weekNumber\":3},{\"dayNumber\":16,\"dayOfWeek\":\"X\",\"isHoliday\":false,\"weekNumber\":3},{\"dayNumber\":17,\"dayOfWeek\":\"J\",\"isHoliday\":false,\"weekNumber\":3},{\"dayNumber\":18,\"dayOfWeek\":\"V\",\"isHoliday\":false,\"weekNumber\":3},{\"dayNumber\":19,\"dayOfWeek\":\"S\",\"isHoliday\":false,\"weekNumber\":3},{\"dayNumber\":20,\"dayOfWeek\":\"D\",\"isHoliday\":false,\"weekNumber\":3},{\"dayNumber\":21,\"dayOfWeek\":\"L\",\"isHoliday\":false,\"weekNumber\":4},{\"dayNumber\":22,\"dayOfWeek\":\"M\",\"isHoliday\":false,\"weekNumber\":4},{\"dayNumber\":23,\"dayOfWeek\":\"X\",\"isHoliday\":false,\"weekNumber\":4},{\"dayNumber\":24,\"dayOfWeek\":\"J\",\"isHoliday\":false,\"weekNumber\":4},{\"dayNumber\":25,\"dayOfWeek\":\"V\",\"isHoliday\":false,\"weekNumber\":4},{\"dayNumber\":26,\"dayOfWeek\":\"S\",\"isHoliday\":false,\"weekNumber\":4},{\"dayNumber\":27,\"dayOfWeek\":\"D\",\"isHoliday\":false,\"weekNumber\":4},{\"dayNumber\":28,\"dayOfWeek\":\"L\",\"isHoliday\":false,\"weekNumber\":5},{\"dayNumber\":29,\"dayOfWeek\":\"M\",\"isHoliday\":false,\"weekNumber\":5},{\"dayNumber\":30,\"dayOfWeek\":\"X\",\"isHoliday\":false,\"weekNumber\":5},{\"dayNumber\":31,\"dayOfWeek\":\"J\",\"isHoliday\":false,\"weekNumber\":5}],\"year\":2026,\"month\":12,\"config\":{\"maxNightBlock\":6,\"maxNightStaff\":1,\"minNightBlock\":4,\"minNightStaff\":1,\"prefNightBlock\":5,\"maxMonthlyLibre\":12,\"maxMorningStaff\":2,\"minMonthlyLibre\":8,\"minMorningStaff\":1,\"prefMonthlyLibre\":10,\"prefMorningStaff\":2,\"maxAfternoonStaff\":2,\"minAfternoonStaff\":1,\"prefAfternoonStaff\":2,\"maxConsecutiveWorkDays\":6},\"monthId\":142,\"options\":{\"timeoutSeconds\":30,\"optimizationLevel\":\"balanced\"},\"employees\":[{\"id\":\"2d39bd85-81e2-4c71-8967-10d54d0117b1\",\"name\":\"empleado01\",\"rules\":{\"fixedDays\":[1,2,3,4,5],\"fixedShift\":\"P\",\"noWeekends\":false}},{\"id\":\"0f932b75-e169-4597-ac12-0b7b28d70ea4\",\"name\":\"empleado02\",\"rules\":{\"fixedDays\":[1,2,3,4,5],\"fixedShift\":\"P\",\"noWeekends\":false}},{\"id\":\"b300783a-8ed7-44d3-b3a3-a23b222ee502\",\"name\":\"empleado03\",\"rules\":{\"noWeekends\":false}},{\"id\":\"5c43d74d-b658-4e5f-9d6b-707587da7584\",\"name\":\"empleado04\",\"rules\":{\"noWeekends\":false}},{\"id\":\"76222183-e2c9-441b-81a4-35ae66509801\",\"name\":\"empleado05\",\"rules\":{\"noWeekends\":false}},{\"id\":\"c41dc36c-c7e2-47bf-829d-dbd97d7f3089\",\"name\":\"empleado06\",\"rules\":{\"noWeekends\":false}},{\"id\":\"169617d8-dd55-4b73-a4da-b1eef12dfc31\",\"name\":\"empleado07\",\"rules\":{\"noWeekends\":false}},{\"id\":\"48d66e00-311c-4854-a629-dedbb36fb8be\",\"name\":\"empleado08\",\"rules\":{\"noWeekends\":false}},{\"id\":\"ece0b288-9013-40cc-b29f-52abe96eb2db\",\"name\":\"empleado09\",\"rules\":{\"noWeekends\":false}},{\"id\":\"cce15baf-e4ec-4083-9ab9-2d3864c7b752\",\"name\":\"empleado10\",\"rules\":{\"noWeekends\":false}}],\"lockedCells\":{\"0f932b75-e169-4597-ac12-0b7b28d70ea4\":{\"1\":\"P\",\"2\":\"P\",\"3\":\"P\",\"4\":\"P\",\"5\":\"L\",\"6\":\"L\",\"7\":\"P\",\"8\":\"P\",\"9\":\"P\",\"10\":\"P\",\"11\":\"P\",\"12\":\"L\",\"13\":\"L\",\"14\":\"P\",\"15\":\"P\",\"16\":\"P\",\"17\":\"P\",\"18\":\"P\",\"19\":\"L\",\"20\":\"L\",\"21\":\"P\",\"22\":\"P\",\"23\":\"P\",\"24\":\"P\",\"25\":\"P\",\"26\":\"L\",\"27\":\"L\",\"28\":\"P\",\"29\":\"P\",\"30\":\"P\",\"31\":\"P\"},\"2d39bd85-81e2-4c71-8967-10d54d0117b1\":{\"1\":\"P\",\"2\":\"P\",\"3\":\"P\",\"4\":\"P\",\"5\":\"L\",\"6\":\"L\",\"7\":\"P\",\"8\":\"P\",\"9\":\"P\",\"10\":\"P\",\"11\":\"P\",\"12\":\"L\",\"13\":\"L\",\"14\":\"P\",\"15\":\"P\",\"16\":\"P\",\"17\":\"P\",\"18\":\"P\",\"19\":\"L\",\"20\":\"L\",\"21\":\"P\",\"22\":\"P\",\"23\":\"P\",\"24\":\"P\",\"25\":\"P\",\"26\":\"L\",\"27\":\"L\",\"28\":\"P\",\"29\":\"P\",\"30\":\"P\",\"31\":\"P\"}},\"nightsHistory\":{},\"previousMonthTail\":{\"169617d8-dd55-4b73-a4da-b1eef12dfc31\":[\"T\",\"T\",\"T\",\"T\",\"L\",\"L\",\"L\"],\"48d66e00-311c-4854-a629-dedbb36fb8be\":[\"T\",\"T\",\"L\",\"L\",\"M\",\"M\",\"M\"],\"5c43d74d-b658-4e5f-9d6b-707587da7584\":[\"M\",\"M\",\"M\",\"M\",\"L\",\"L\",\"L\"],\"76222183-e2c9-441b-81a4-35ae66509801\":[\"L\",\"L\",\"L\",\"N\",\"N\",\"N\",\"N\"],\"b300783a-8ed7-44d3-b3a3-a23b222ee502\":[\"L\",\"L\",\"M\",\"M\",\"M\",\"M\",\"M\"],\"c41dc36c-c7e2-47bf-829d-dbd97d7f3089\":[\"L\",\"L\",\"T\",\"T\",\"T\",\"T\",\"T\"],\"cce15baf-e4ec-4083-9ab9-2d3864c7b752\":[\"M\",\"M\",\"L\",\"L\",\"T\",\"T\",\"T\"],\"ece0b288-9013-40cc-b29f-52abe96eb2db\":[\"N\",\"N\",\"N\",\"L\",\"L\",\"L\",\"L\"]}}', '{\"0f932b75-e169-4597-ac12-0b7b28d70ea4\":{\"1\":\"P\",\"2\":\"P\",\"3\":\"P\",\"4\":\"P\",\"5\":\"L\",\"6\":\"L\",\"7\":\"P\",\"8\":\"P\",\"9\":\"P\",\"10\":\"P\",\"11\":\"P\",\"12\":\"L\",\"13\":\"L\",\"14\":\"P\",\"15\":\"P\",\"16\":\"P\",\"17\":\"P\",\"18\":\"P\",\"19\":\"L\",\"20\":\"L\",\"21\":\"P\",\"22\":\"P\",\"23\":\"P\",\"24\":\"P\",\"25\":\"P\",\"26\":\"L\",\"27\":\"L\",\"28\":\"P\",\"29\":\"P\",\"30\":\"P\",\"31\":\"P\"},\"169617d8-dd55-4b73-a4da-b1eef12dfc31\":{\"1\":\"T\",\"2\":\"T\",\"3\":\"T\",\"4\":\"T\",\"5\":\"L\",\"6\":\"L\",\"7\":\"L\",\"8\":\"M\",\"9\":\"M\",\"10\":\"M\",\"11\":\"L\",\"12\":\"L\",\"13\":\"T\",\"14\":\"T\",\"15\":\"T\",\"16\":\"L\",\"17\":\"L\",\"18\":\"N\",\"19\":\"N\",\"20\":\"N\",\"21\":\"N\",\"22\":\"N\",\"23\":\"L\",\"24\":\"L\",\"25\":\"M\",\"26\":\"M\",\"27\":\"M\",\"28\":\"M\",\"29\":\"L\",\"30\":\"L\",\"31\":\"L\",\"-1\":\"L\",\"-2\":\"L\",\"-3\":\"L\",\"-4\":\"T\",\"-5\":\"T\",\"-6\":\"T\",\"-7\":\"T\"},\"2d39bd85-81e2-4c71-8967-10d54d0117b1\":{\"1\":\"P\",\"2\":\"P\",\"3\":\"P\",\"4\":\"P\",\"5\":\"L\",\"6\":\"L\",\"7\":\"P\",\"8\":\"P\",\"9\":\"P\",\"10\":\"P\",\"11\":\"P\",\"12\":\"L\",\"13\":\"L\",\"14\":\"P\",\"15\":\"P\",\"16\":\"P\",\"17\":\"P\",\"18\":\"P\",\"19\":\"L\",\"20\":\"L\",\"21\":\"P\",\"22\":\"P\",\"23\":\"P\",\"24\":\"P\",\"25\":\"P\",\"26\":\"L\",\"27\":\"L\",\"28\":\"P\",\"29\":\"P\",\"30\":\"P\",\"31\":\"P\"},\"48d66e00-311c-4854-a629-dedbb36fb8be\":{\"1\":\"M\",\"2\":\"M\",\"3\":\"L\",\"4\":\"L\",\"5\":\"M\",\"6\":\"M\",\"7\":\"M\",\"8\":\"L\",\"9\":\"L\",\"10\":\"N\",\"11\":\"N\",\"12\":\"N\",\"13\":\"N\",\"14\":\"L\",\"15\":\"L\",\"16\":\"L\",\"17\":\"T\",\"18\":\"T\",\"19\":\"T\",\"20\":\"T\",\"21\":\"T\",\"22\":\"L\",\"23\":\"L\",\"24\":\"M\",\"25\":\"M\",\"26\":\"M\",\"27\":\"M\",\"28\":\"M\",\"29\":\"L\",\"30\":\"L\",\"31\":\"L\",\"-1\":\"M\",\"-2\":\"M\",\"-3\":\"M\",\"-4\":\"L\",\"-5\":\"L\",\"-6\":\"T\",\"-7\":\"T\"},\"5c43d74d-b658-4e5f-9d6b-707587da7584\":{\"1\":\"M\",\"2\":\"M\",\"3\":\"M\",\"4\":\"L\",\"5\":\"L\",\"6\":\"N\",\"7\":\"N\",\"8\":\"N\",\"9\":\"N\",\"10\":\"L\",\"11\":\"L\",\"12\":\"T\",\"13\":\"T\",\"14\":\"T\",\"15\":\"T\",\"16\":\"T\",\"17\":\"L\",\"18\":\"L\",\"19\":\"T\",\"20\":\"T\",\"21\":\"T\",\"22\":\"L\",\"23\":\"L\",\"24\":\"L\",\"25\":\"T\",\"26\":\"T\",\"27\":\"T\",\"28\":\"T\",\"29\":\"L\",\"30\":\"L\",\"31\":\"L\",\"-1\":\"L\",\"-2\":\"L\",\"-3\":\"L\",\"-4\":\"M\",\"-5\":\"M\",\"-6\":\"M\",\"-7\":\"M\"},\"76222183-e2c9-441b-81a4-35ae66509801\":{\"1\":\"N\",\"2\":\"L\",\"3\":\"L\",\"4\":\"L\",\"5\":\"L\",\"6\":\"T\",\"7\":\"T\",\"8\":\"T\",\"9\":\"T\",\"10\":\"L\",\"11\":\"L\",\"12\":\"M\",\"13\":\"M\",\"14\":\"M\",\"15\":\"M\",\"16\":\"L\",\"17\":\"L\",\"18\":\"M\",\"19\":\"M\",\"20\":\"M\",\"21\":\"M\",\"22\":\"M\",\"23\":\"L\",\"24\":\"L\",\"25\":\"L\",\"26\":\"L\",\"27\":\"T\",\"28\":\"T\",\"29\":\"T\",\"30\":\"T\",\"31\":\"T\",\"-1\":\"N\",\"-2\":\"N\",\"-3\":\"N\",\"-4\":\"N\",\"-5\":\"L\",\"-6\":\"L\",\"-7\":\"L\"},\"b300783a-8ed7-44d3-b3a3-a23b222ee502\":{\"1\":\"L\",\"2\":\"L\",\"3\":\"T\",\"4\":\"T\",\"5\":\"T\",\"6\":\"L\",\"7\":\"L\",\"8\":\"T\",\"9\":\"T\",\"10\":\"T\",\"11\":\"T\",\"12\":\"L\",\"13\":\"L\",\"14\":\"N\",\"15\":\"N\",\"16\":\"N\",\"17\":\"N\",\"18\":\"L\",\"19\":\"L\",\"20\":\"L\",\"21\":\"L\",\"22\":\"T\",\"23\":\"T\",\"24\":\"T\",\"25\":\"T\",\"26\":\"T\",\"27\":\"L\",\"28\":\"L\",\"29\":\"T\",\"30\":\"T\",\"31\":\"T\",\"-1\":\"M\",\"-2\":\"M\",\"-3\":\"M\",\"-4\":\"M\",\"-5\":\"M\",\"-6\":\"L\",\"-7\":\"L\"},\"c41dc36c-c7e2-47bf-829d-dbd97d7f3089\":{\"1\":\"L\",\"2\":\"L\",\"3\":\"M\",\"4\":\"M\",\"5\":\"M\",\"6\":\"M\",\"7\":\"M\",\"8\":\"L\",\"9\":\"L\",\"10\":\"L\",\"11\":\"M\",\"12\":\"M\",\"13\":\"M\",\"14\":\"L\",\"15\":\"L\",\"16\":\"M\",\"17\":\"M\",\"18\":\"M\",\"19\":\"M\",\"20\":\"L\",\"21\":\"L\",\"22\":\"L\",\"23\":\"N\",\"24\":\"N\",\"25\":\"N\",\"26\":\"N\",\"27\":\"L\",\"28\":\"L\",\"29\":\"M\",\"30\":\"M\",\"31\":\"M\",\"-1\":\"T\",\"-2\":\"T\",\"-3\":\"T\",\"-4\":\"T\",\"-5\":\"T\",\"-6\":\"L\",\"-7\":\"L\"},\"cce15baf-e4ec-4083-9ab9-2d3864c7b752\":{\"1\":\"T\",\"2\":\"T\",\"3\":\"L\",\"4\":\"L\",\"5\":\"T\",\"6\":\"T\",\"7\":\"T\",\"8\":\"L\",\"9\":\"L\",\"10\":\"T\",\"11\":\"T\",\"12\":\"T\",\"13\":\"L\",\"14\":\"L\",\"15\":\"L\",\"16\":\"T\",\"17\":\"T\",\"18\":\"T\",\"19\":\"L\",\"20\":\"L\",\"21\":\"L\",\"22\":\"T\",\"23\":\"T\",\"24\":\"T\",\"25\":\"L\",\"26\":\"L\",\"27\":\"N\",\"28\":\"N\",\"29\":\"N\",\"30\":\"N\",\"31\":\"N\",\"-1\":\"T\",\"-2\":\"T\",\"-3\":\"T\",\"-4\":\"L\",\"-5\":\"L\",\"-6\":\"M\",\"-7\":\"M\"},\"ece0b288-9013-40cc-b29f-52abe96eb2db\":{\"1\":\"L\",\"2\":\"N\",\"3\":\"N\",\"4\":\"N\",\"5\":\"N\",\"6\":\"L\",\"7\":\"L\",\"8\":\"M\",\"9\":\"M\",\"10\":\"M\",\"11\":\"L\",\"12\":\"L\",\"13\":\"L\",\"14\":\"M\",\"15\":\"M\",\"16\":\"M\",\"17\":\"M\",\"18\":\"L\",\"19\":\"L\",\"20\":\"M\",\"21\":\"M\",\"22\":\"M\",\"23\":\"M\",\"24\":\"M\",\"25\":\"L\",\"26\":\"L\",\"27\":\"L\",\"28\":\"L\",\"29\":\"M\",\"30\":\"M\",\"31\":\"M\",\"-1\":\"L\",\"-2\":\"L\",\"-3\":\"L\",\"-4\":\"L\",\"-5\":\"N\",\"-6\":\"N\",\"-7\":\"N\"}}', NULL); + +COMMIT; +SET FOREIGN_KEY_CHECKS = 1; diff --git a/backend/package.json b/backend/package.json index 0ad318a7..b4a00ff4 100644 --- a/backend/package.json +++ b/backend/package.json @@ -11,6 +11,7 @@ "setup:local": "cross-env DB_ENVIRONMENT=local tsx scripts/setup-local.ts", "demo:user": "cross-env DB_ENVIRONMENT=local tsx scripts/create-demo-user.ts", "demo:user:aiven": "cross-env DB_ENVIRONMENT=aiven tsx scripts/create-demo-user.ts", + "seed:scheduling:export": "cross-env DB_ENVIRONMENT=aiven tsx scripts/export-scheduling-seed.ts", "build": "python3 -m venv scheduling-solver/venv && scheduling-solver/venv/bin/pip install --no-cache-dir -r scheduling-solver/requirements.txt", "start": "tsx index.ts", "typecheck": "tsc --noEmit", diff --git a/backend/scripts/export-scheduling-seed.ts b/backend/scripts/export-scheduling-seed.ts new file mode 100644 index 00000000..54c338b4 --- /dev/null +++ b/backend/scripts/export-scheduling-seed.ts @@ -0,0 +1,159 @@ +/** + * export-scheduling-seed.ts — `pnpm seed:scheduling:export` + * + * Writes db-mysql/scheduling-seed.sql from the demo's scheduling base (the + * demo_snapshot_scheduling_* tables saved with «Guardar horarios actuales como + * base»). pnpm setup:local loads that file, so a local install gets the same + * fictitious employees, contracts and months as the public demo. + * + * Only reads: SELECTs on the database of DB_ENVIRONMENT (aiven by default). + * The employees are users: they are exported with a bcrypt hash of a random + * password nobody knows, so they show in the grid but cannot sign in. Rows of + * people no longer in the grid are left out, and every other reference to a + * user (who created or published a month...) points to the local admin. + * + * Uso: + * pnpm seed:scheduling:export + */ + +import bcrypt from 'bcrypt' +import crypto from 'node:crypto' +import { writeFile } from 'node:fs/promises' +import { dirname, join } from 'node:path' +import { fileURLToPath } from 'node:url' +import mysql from 'mysql2/promise' +import type { RowDataPacket } from 'mysql2/promise' +import { dbConfig } from '../config/db-config.js' +import { SALT_ROUNDS } from '../config/config.js' +import { SNAPSHOT_TABLES } from '../services/demo/snapshot-tables.js' + +const OUT = join(dirname(fileURLToPath(import.meta.url)), '..', 'db-mysql', 'scheduling-seed.sql') + +// Columns that hold a user id; the employee ones keep it, the rest become the admin +const USER_COLUMNS = new Set([ + 'employee_id', + 'added_by', + 'created_by', + 'approved_by', + 'changed_by', + 'published_by', + 'generated_by', +]) +const ADMIN = '@seed_admin_id' + +function value(v: unknown, column: string, employees: Set): string { + if (USER_COLUMNS.has(column) && typeof v === 'string' && !employees.has(v)) return ADMIN + // JSON columns come back parsed + if (v !== null && typeof v === 'object' && !Buffer.isBuffer(v)) + return mysql.escape(JSON.stringify(v)) + return mysql.escape(v) +} + +async function main(): Promise { + const conn = await mysql.createConnection({ + host: dbConfig.host, + port: dbConfig.port, + user: dbConfig.user, + password: dbConfig.password, + database: dbConfig.database, + ssl: dbConfig.ssl, + dateStrings: true, + }) + try { + const rows: Record = {} + for (const table of SNAPSHOT_TABLES) { + const [r] = await conn.query(`SELECT * FROM demo_snapshot_${table}`) + rows[table] = r + } + if (rows.scheduling_employees.length === 0) { + throw new Error('No hay base guardada (demo_snapshot_scheduling_employees vacía)') + } + + const employees = new Set(rows.scheduling_employees.map((r) => String(r.employee_id))) + // Rows of people no longer in the grid (old contracts...) would point to the admin + const dropped: string[] = [] + for (const table of SNAPSHOT_TABLES) { + const kept = rows[table].filter( + (r) => + !('employee_id' in r) || r.employee_id === null || employees.has(String(r.employee_id)) + ) + if (kept.length < rows[table].length) + dropped.push(`${table}: ${rows[table].length - kept.length}`) + rows[table] = kept + } + const [users] = await conn.query( + `SELECT u.id, u.username, u.email, r.name AS role, u.is_active + FROM users u JOIN roles r ON r.id = u.role_id + WHERE u.id IN (?) ORDER BY u.username`, + [[...employees]] + ) + if (users.length !== employees.size) throw new Error('Faltan usuarios de algún empleado') + + const hash = await bcrypt.hash(crypto.randomBytes(32).toString('hex'), SALT_ROUNDS) + const out: string[] = [ + '-- =========================================================', + '-- SCHEDULING SEED - Four-Points', + '-- =========================================================', + '-- Base de horarios ficticia de la demo pública: empleados, contratos,', + '-- reglas, turnos, configuración y meses ya generados por el solver.', + '-- La carga pnpm setup:local después de mock-data.sql.', + '--', + '-- BORRA todo el módulo de horarios (scheduling_*) antes de cargarla: solo', + '-- para una BD local recién instalada.', + '--', + '-- Los empleados son usuarios inventados con una contraseña aleatoria que', + '-- nadie conoce: salen en el cuadrante pero no pueden entrar. Lo que en la', + '-- demo apunta a otro usuario (quién creó o publicó un mes) apunta aquí al', + '-- primer admin activo.', + '--', + '-- Generado con: pnpm seed:scheduling:export (scripts/export-scheduling-seed.ts)', + '-- =========================================================', + '', + "SET @seed_admin_id = (SELECT u.id FROM users u JOIN roles r ON r.id = u.role_id WHERE r.name = 'admin' AND u.is_active = 1 AND u.is_demo = 0 ORDER BY u.created_at LIMIT 1);", + '', + '-- Los DELETE vacían tablas enteras', + 'SET SQL_SAFE_UPDATES = 0;', + 'SET FOREIGN_KEY_CHECKS = 0;', + 'START TRANSACTION;', + '', + ] + for (const table of [...SNAPSHOT_TABLES].reverse()) out.push(`DELETE FROM ${table};`) + out.push('') + + out.push('-- Empleados (usuarios inventados)') + for (const u of users) { + out.push( + `INSERT IGNORE INTO users (id, username, email, password, role_id, is_active) SELECT ${mysql.escape(u.id)}, ${mysql.escape(u.username)}, ${mysql.escape(u.email)}, ${mysql.escape(hash)}, r.id, ${Number(u.is_active)} FROM roles r WHERE r.name = ${mysql.escape(u.role)};` + ) + } + out.push('') + + for (const table of SNAPSHOT_TABLES) { + const r = rows[table] + if (r.length === 0) continue + const cols = Object.keys(r[0]) + out.push(`-- ${table} (${r.length})`) + out.push(`INSERT INTO ${table} (${cols.join(', ')}) VALUES`) + out.push( + r.map((row) => `(${cols.map((c) => value(row[c], c, employees)).join(', ')})`).join(',\n') + + ';' + ) + out.push('') + } + out.push('COMMIT;', 'SET FOREIGN_KEY_CHECKS = 1;', '') + + await writeFile(OUT, out.join('\n')) + console.log(`${OUT}`) + console.log(` empleados: ${users.map((u) => u.username).join(', ')}`) + for (const table of SNAPSHOT_TABLES) console.log(` ${table}: ${rows[table].length}`) + if (dropped.length) + console.log(` fuera (de quien ya no está en el cuadrante): ${dropped.join(', ')}`) + } finally { + await conn.end() + } +} + +main().catch((err) => { + console.error(err instanceof Error ? err.message : err) + process.exit(1) +}) diff --git a/backend/scripts/setup-local.ts b/backend/scripts/setup-local.ts index 9a0092db..fd47d652 100644 --- a/backend/scripts/setup-local.ts +++ b/backend/scripts/setup-local.ts @@ -7,7 +7,9 @@ * 2. departamentos que usan los módulos y el mock; * 3. el admin local `admin` / `fourpoints-local`, público y documentado en el * README: solo puede existir en una BD local; - * 4. datos ficticios (mock-data.sql). + * 4. la base de horarios de la demo (scheduling-seed.sql): empleados, contratos + * y meses ficticios; + * 5. datos ficticios del resto de módulos (mock-data.sql). * * MASTER_INSTALL.sql borra y crea `hotel_db`: el script se niega a seguir si * la BD no es local, si no se llama hotel_db o si ya tiene tablas (salvo @@ -120,7 +122,7 @@ async function main(): Promise { ) } - console.log('1/4 Tablas (MASTER_INSTALL.sql)') + console.log('1/5 Tablas (MASTER_INSTALL.sql)') await conn.query(await readSqlScript(join(DB_DIR, 'MASTER_INSTALL.sql'), DB_DIR, fixBaseline)) await conn.query(`USE \`${DATABASE}\``) @@ -132,12 +134,12 @@ async function main(): Promise { await conn.query(await readSqlScript(join(DB_DIR, 'scripts', file))) } - console.log('2/4 Departamentos') + console.log('2/5 Departamentos') await conn.query('INSERT IGNORE INTO departments (name) VALUES ?', [ DEPARTMENTS.map((name) => [name]), ]) - console.log('3/4 Admin') + console.log('3/5 Admin') const [roles] = await conn.query("SELECT id FROM roles WHERE name = 'admin'") await conn.query( `INSERT INTO users (id, username, email, password, role_id, created_at, is_active) @@ -151,7 +153,10 @@ async function main(): Promise { ] ) - console.log('4/4 Datos ficticios (mock-data.sql)') + console.log('4/5 Horarios (scheduling-seed.sql)') + await conn.query(await readSqlScript(join(DB_DIR, 'scheduling-seed.sql'))) + + console.log('5/5 Datos ficticios (mock-data.sql)') // MASTER_INSTALL.sql leaves safe updates on for this session; the mock empties whole tables await conn.query('SET SQL_SAFE_UPDATES = 0') await conn.query(await readSqlScript(join(DB_DIR, 'mock-data.sql'))) diff --git a/backend/services/demo/demo-reset.service.ts b/backend/services/demo/demo-reset.service.ts index a03ca6c4..f274a80d 100644 --- a/backend/services/demo/demo-reset.service.ts +++ b/backend/services/demo/demo-reset.service.ts @@ -25,6 +25,7 @@ import db, { dbConfig } from '../../config/db.js' import { formatDateMadrid, getTodayMadrid } from '../../config/date-utils.js' import { logger } from '../../config/logger.js' import { readSqlScript } from '../db/sql-script.js' +import { SNAPSHOT_TABLES } from './snapshot-tables.js' const MOCK_FILE = join( dirname(fileURLToPath(import.meta.url)), @@ -36,21 +37,7 @@ const MOCK_FILE = join( const LOCK_NAME = 'four_points_demo_reset' -// Every scheduling table: the base is the whole module, configuration included -export const SNAPSHOT_TABLES = [ - 'scheduling_config', - 'scheduling_shifts', - 'scheduling_employees', - 'scheduling_employee_contracts', - 'scheduling_employee_rules', - 'scheduling_employee_requests', - 'scheduling_months', - 'scheduling_days', - 'scheduling_constraints', - 'scheduling_assignments', - 'scheduling_history', - 'scheduling_solver_runs', -] as const +export { SNAPSHOT_TABLES } const snapshotName = (table: string) => `demo_snapshot_${table}` diff --git a/backend/services/demo/snapshot-tables.ts b/backend/services/demo/snapshot-tables.ts new file mode 100644 index 00000000..05a403e9 --- /dev/null +++ b/backend/services/demo/snapshot-tables.ts @@ -0,0 +1,19 @@ +// services/demo/snapshot-tables.ts +// Every scheduling table, configuration included: what the demo saves as its +// base and restores on reset, in foreign-key order. No imports, so scripts can +// read it without opening the app's pool. + +export const SNAPSHOT_TABLES = [ + 'scheduling_config', + 'scheduling_shifts', + 'scheduling_employees', + 'scheduling_employee_contracts', + 'scheduling_employee_rules', + 'scheduling_employee_requests', + 'scheduling_months', + 'scheduling_days', + 'scheduling_constraints', + 'scheduling_assignments', + 'scheduling_history', + 'scheduling_solver_runs', +] as const diff --git a/backend/tests/security/scheduling-seed.test.ts b/backend/tests/security/scheduling-seed.test.ts new file mode 100644 index 00000000..c778d8f0 --- /dev/null +++ b/backend/tests/security/scheduling-seed.test.ts @@ -0,0 +1,47 @@ +// tests/security/scheduling-seed.test.ts +// db-mysql/scheduling-seed.sql is published with the repo and loaded by +// pnpm setup:local. Whatever re-exports it, it must only carry made-up users, +// and every employee the grid uses must be one the seed creates. + +import { describe, it, expect } from 'vitest' +import { readFileSync } from 'node:fs' +import { join, dirname } from 'node:path' +import { fileURLToPath } from 'node:url' + +const seed = readFileSync( + join(dirname(fileURLToPath(import.meta.url)), '..', '..', 'db-mysql', 'scheduling-seed.sql'), + 'utf8' +) + +const users = [ + ...seed.matchAll(/^INSERT IGNORE INTO users \([^)]*\) SELECT '([^']+)', '([^']+)', '([^']+)'/gm), +].map((m) => ({ id: m[1], username: m[2], email: m[3] })) + +function rowsOf(table: string): string[] { + const block = seed.split(`INSERT INTO ${table} (`)[1]?.split(';\n')[0] ?? '' + return block.split('\n').slice(1) +} + +describe('scheduling seed', () => { + it('creates made-up employees only', () => { + expect(users.length).toBeGreaterThan(0) + for (const u of users) { + expect(u.username).toMatch(/^empleado\d+$/) + expect(u.email).toMatch(/@example\.com$/) + } + }) + + it('has no e-mail address outside example.com', () => { + const emails = seed.match(/[\w.+-]+@[\w-]+(\.[\w-]+)+/g) ?? [] + expect(emails.filter((e) => !e.endsWith('@example.com'))).toEqual([]) + }) + + it('every grid row and assignment belongs to an employee the seed creates', () => { + const ids = new Set(users.map((u) => u.id)) + const used = [...rowsOf('scheduling_employees'), ...rowsOf('scheduling_assignments')] + .map((row) => [...row.matchAll(/'([0-9a-f-]{36})'/g)].map((m) => m[1])) + .flat() + expect(used.length).toBeGreaterThan(0) + expect(used.filter((id) => !ids.has(id))).toEqual([]) + }) +}) From da7c6439c5a81992b0a9037cd5afd0bff201c6a6 Mon Sep 17 00:00:00 2001 From: razyd Date: Mon, 5 Oct 2026 19:26:14 +0200 Subject: [PATCH 3/3] docs(readme): clarify the local run steps and the upload message - Step 3 says what setup:local loads in fewer words. - Step 5 runs in two terminals: dev:local keeps the first one busy. - Without Cloudinary an upload now explains itself instead of failing. Why: the steps read as one terminal, and the Cloudinary note predated the new message. --- README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 32308bc8..f1ecf7e7 100644 --- a/README.md +++ b/README.md @@ -47,10 +47,9 @@ cp frontend/.env.example frontend/.env.local # port 3306, set LOCAL_DB_PORT=3307 for Docker) docker compose --env-file backend/.env up -d -# 3. Database: tables, departments, the local admin and fictitious data, -# a scheduling base included (10 employees, three months already solved). -# It creates hotel_db and refuses to touch one that already has tables -# (add -- --force to replace it) +# 3. Database: tables, the local admin and fictitious data in every module +# (scheduling included). It creates hotel_db and refuses to touch one that +# already has tables (add -- --force to replace it) cd backend && pnpm install && pnpm setup:local # 4. Scheduling solver (once) @@ -58,9 +57,9 @@ cd scheduling-solver && python -m venv venv venv/Scripts/pip install -r requirements.txt # Linux/macOS: venv/bin/pip cd .. -# 5. Run -pnpm dev:local # API on :4000 -cd ../frontend && pnpm install && pnpm dev # http://localhost:3000 +# 5. Run, in two terminals +pnpm dev:local # backend/: API on :4000 +cd frontend && pnpm install && pnpm dev # http://localhost:3000 ``` Sign in as **`admin`** / **`fourpoints-local`**: a full administrator, @@ -68,8 +67,9 @@ users, roles and settings included. The password is public on purpose: `setup:local` only runs against a local database, so this account never exists anywhere else. Change it in Profile if you like. -Files (photos, PDFs) need a Cloudinary account in `backend/.env`; without it -everything else works. +Uploading photos and PDFs needs a Cloudinary account in `backend/.env`. +Without it everything else works, and an upload just says storage is not +configured. ## License