metis-desk/docs/logotipos-de-companias.md
David ba562ad06f Refactor documentation for clarity and accuracy
- Updated examples in "estructura-web-por-entidades-y-operaciones.md" to reflect correct entity names and directory structures.
- Clarified modal usage and component interactions in "impresoras-del-perfil.md".
- Adjusted component descriptions in "logotipos-de-companias.md" for consistency.
- Revised persistence model details in "normalizacion-de-la-persistencia.md" to remove outdated references and clarify relationships.
- Enhanced dialog patterns in "patron-de-dialogos.md" with specific guidelines for field labels and validation.
- Specified component reuse in "patron-de-listados-de-entidades.md" to include @repo/rdx-ui components.
- Updated implementation status in "personas-y-departamentos.md" to reflect current features and pending tasks.
- Clarified project scope and initial setup instructions in "plan-de-desarrollo.md" and "puesta-en-marcha.md".
- Improved descriptions of workstation management in "puestos-de-trabajo.md" for better understanding of active/inactive states.
- Enhanced resource management details in "recursos-campos-y-plantillas.md" to clarify relationships and pending features.
- Revised best practices review in "revision-de-buenas-practicas.md" to reflect current project status and components.
- Updated teleworking documentation in "teletrabajo.md" to include references to remote technical assistance.
- Clarified user account management in "usuarios-y-acceso.md" to emphasize the importance of account deactivation.
2026-10-15 17:48:46 +02:00

2.3 KiB
Raw Blame History

Logotipos de compañías

El formulario de alta y edición permite seleccionar, sustituir y quitar el logotipo al guardar. Sin logotipo, o si su descarga falla, se mantienen las iniciales y colores deterministas.

Límites y almacenamiento

COMPANY_LOGO_LIMITS centraliza los límites: PNG, JPEG y WebP estáticos, hasta 2 MiB y 4096 × 4096 píxeles. El servidor verifica la firma y decodificación real, rechaza animaciones y limita el tiempo de procesamiento. Sharp normaliza orientación, elimina metadatos y genera WebP de hasta 128 × 128 px y 64 KiB, conservando proporciones y transparencia sin recortar. Sharp es una dependencia nueva justificada por la validación real y transformación segura en servidor; las APIs nativas de Node no ofrecen esta operación.

La migración idempotente añade companies.logoVersion y company_logos. Solo se conserva la imagen optimizada; el original se descarta. Una transacción actualiza imagen y versión. No se incorporan binarios ni base64 a las respuestas de listados. Las imágenes requieren la sesión existente y las escrituras conservan la protección CSRF/origen de la aplicación. La URL lleva el hash de contenido; caché privada y ETag permiten reutilizarla sin mostrar versiones antiguas tras una sustitución.

Los datos generales y el logotipo se guardan en dos peticiones. Si falla la segunda, el formulario informa del guardado parcial y conserva el identificador y el archivo para reintentar sin duplicar la compañía.

Componentes

  • CompanyAvatar: logotipo con carga diferida y dimensiones reservadas; iniciales como alternativa. Usa la consulta compartida de compañías cuando un listado solo aporta identificador y nombre.
  • CompanyIdentity: avatar y nombre alineados, utilizado en directorio, dashboard, búsqueda y detalle. El tamaño se ajusta mediante clases existentes.
  • CompanySelect: opciones y selección de compañías con avatar, reutilizando los controles shadcn/ui y conservando etiquetas de texto para búsquedas por teclado.
  • CompanyLogoField: selección con validación local de peso y MIME, mensajes accesibles y acciones de quitar/deshacer. No decodifica el original en el navegador; la imagen optimizada aparece después de guardar.

Se conserva la estructura de navegación, el shell y los componentes shadcn/ui existentes, sin modificar código vendor.