# Sedes de compañía Cada sede pertenece a una compañía y conserva su UUID, nombre, dirección y teléfono. El estado `active` distingue sedes disponibles y archivadas. La migración explícita `migrateCompanies` añade la columna relacional no nullable y mantiene activas las sedes existentes; puede volver a ejecutarse sin reinicializar los estados. ## Archivo y reactivación El listado muestra las sedes activas por defecto. «Mostrar también las sedes archivadas» permite consultar y reactivar las anteriores. El menú de fila ofrece Archivar/Reactivar, Editar y Eliminar sede; el formulario de edición también permite cambiar el estado. Archivar no borra ni desvincula datos. La sede sigue resolviéndose en fichas e historiales. Los selectores de activos, puestos y destinos de red ofrecen solo sedes activas y, al editar, la sede anterior aunque esté archivada. El servidor aplica el mismo contrato: permite conservar la referencia anterior y rechaza nuevas asociaciones a sedes archivadas. En accesos remotos el destino sigue siendo inmutable. ## Borrado definitivo `POST /api/companies/:companyId/sites/:id/delete` recibe un objeto vacío y devuelve la compañía actualizada. Requiere la misma sesión y protección CSRF que las demás escrituras sobre compañías; valida UUID, pertenencia, cuerpo y ausencia de query adicional. La operación bloquea la compañía dentro de una transacción y elimina exclusivamente la sede solicitada. Las claves foráneas `RESTRICT` impiden borrar sedes referenciadas, incluidas revisiones históricas de activos, puestos y accesos remotos. No se propagan borrados ni se limpian referencias para permitir la eliminación. Una referencia produce `409 SITE_IN_USE` y el diálogo propone archivar; una sede ausente o de otra compañía produce `404 SITE_NOT_FOUND`. Repetir un borrado no genera otros efectos. Los fallos de infraestructura distintos de una restricción referencial se propagan al manejador HTTP común. La interfaz mantiene el diálogo abierto si el borrado falla y actualiza la caché de la compañía únicamente tras confirmar la operación. ## Validación La prueba aislada `apps/server/src/sites.integration.test.ts` usa MariaDB y comprueba persistencia, repetición de migración, referencias con FK y borrado tras liberar las asociaciones. Solo crea y limpia sus propios registros en la base de pruebas. Las pruebas de dominio cubren archivo, reactivación, identidad y repetición del estado. Las pruebas web comprueban textos es/en, el filtro inicial y el control de estado. `apps/server/src/sites.integration.ts`, invocado por la suite HTTP/MariaDB, comprueba validación, pertenencia, borrado de una sede vacía, conservación de referencias, restricciones históricas y rechazo de nuevas asociaciones a sedes archivadas.