Configuración del servicio Editor

Editor es un componente de .

Es una aplicación construida con Spring Boot.

La configuración del Editor consta de dos archivos:

  • application.yaml - ajustes generales del sistema
  • application-seatmap.yaml - ajustes específicos de la aplicación

Entorno y actualizaciones desde 1.74

La imagen frontend ejecuta Node y sirve el editor core junto a los archivos estáticos. Usa el punto de entrada de la imagen y /healthz para las sondas frontend. El servicio core responde en /core en el puerto web del frontend (PORT, por defecto 8081) y exige un token válido del editor a cada llamada. Editor-service acompaña cada una de sus llamadas con un token de corta duración firmado con su clave privada y llega al core en seatmap.services.core.url. El valor por defecto, http://127.0.0.1:8081/, es el contenedor frontend del mismo pod de Helm; si se ejecutan fuera de un mismo pod, por ejemplo como servicios separados de Docker Compose, indica la dirección del frontend y, en hosts distintos, mantén sincronizados sus relojes. Mantén interno el puerto de métricas (CORE_METRICS_PORT, por defecto 9091). Servir solo archivos estáticos no proporciona el servicio core.

Mantén las mismas claves RSA configuradas para backend y frontend. Helm usa el Secret existente <release>-rsa, con private-key y public-key, y monta la clave pública frontend en solo lectura en /keys/public-key. En instalaciones frontend propias, monta ahí la clave pública correspondiente o indica su ruta con CORE_PUBLIC_KEY_FILE. Sin ella, el frontend registra un error al arrancar y /core rechaza todas las llamadas; un archivo que no contenga una clave pública legible detiene el frontend al arrancar.

Valor Helm Predeterminado Función
editor.frontend.coreWorkers 1 Workers core; aumenta CPU y memoria al aumentar este valor.
editor.frontend.jobTimeoutMs 20000 Plazo de un trabajo en milisegundos.
editor.frontend.drainTimeoutMs 15000 Plazo de finalización al apagar, en milisegundos.
editor.terminationGracePeriodSeconds 30 Periodo de terminación del pod en segundos.

Admiten enteros positivos hasta 2147483647. Si se omiten o son null, se usan los valores iniciales. El periodo de terminación debe superar al de finalización en al menos cinco segundos. El chart calcula el timeout de lectura backend con cinco segundos adicionales al plazo del trabajo, redondeados hacia abajo a segundos enteros. Los recursos frontend se configuran en global.resources.frontend.

Fuera de Helm, usa CORE_WORKERS, CORE_JOB_TIMEOUT_MS y CORE_DRAIN_TIMEOUT_MS, y alinea el timeout backend. Sin CORE_WORKERS, el entorno puede elegir automáticamente; Helm fija inicialmente un worker.

En Docker Compose, los dos contenedores del editor se ejecutan como servicios normales. Indica en SEATMAP_SERVICES_CORE_URL de editor-service el servicio frontend en la red de Compose, por ejemplo http://editor-client:8081/. Monta la clave pública correspondiente en /keys/public-key del contenedor frontend y da a ambos contenedores del editor un periodo de parada de 30 segundos, porque los 10 segundos predeterminados de Compose son menos que el plazo de finalización de 15 segundos. El paquete de Docker Compose para 1.74 lo configura, genera un par de claves de firma para cada instalación e incluye una guía de actualización para las instalaciones de Compose existentes.

Para actualizar a 1.74, editor-service aplica V121–V127 antes de iniciar el nuevo booking-service. Revisa las referencias confirmadas duplicadas por evento antes de V122. Consulta la guía de despliegue de la versión para el orden, la consulta previa y la compatibilidad de planos.

application.yaml

Ajustes de retardo

Retardo antes de iniciar los trabajos tras el arranque del sistema.

Parameter Environment variable Descripción Default value
initial INITIAL_DELAY Retardo en milisegundos 5000 (five seconds)

Propiedades del framework Java Spring

Parameter Environment variable Descripción Default value
spring.profiles.include SPRING_PROFILES_INCLUDE Si se añaden las propiedades de otro perfil seatmap
spring.jpa.generate-ddl SPRING_JPA_GENERATE_DDL Si se habilita la generación de DDL true
spring.jpa.properties.hibernate.jdbc.batch_size SPRING_JPA_PROPERTIES_HIBERNATE_JDBC_BATCH_SIZE Número de sentencias INSERT, UPDATE y DELETE a agrupar en una sola llamada a la base de datos 50
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults SPRING_JPA_PROPERTIES_HIBERNATE_TEMP_USE_JDBC_METADATA_DEFAULTS Si se consultan los metadatos JDBC para determinar ciertos valores predeterminados cuando la base de datos puede no estar disponible false
spring.jpa.properties.hibernate.order_inserts SPRING_JPA_PROPERTIES_HIBERNATE_ORDER_INSERTS Si se ordenan las inserciones SQL por el valor de la clave primaria de los elementos insertados false
spring.jpa.properties.javax.persistence.schema-generation.create-source SPRING_JPA_PROPERTIES_JAVAX_PERSISTENCE_SCHEMA_GENERATION_CREATE_SOURCE Si se generan los comandos DDL del esquema metadata
spring.jpa.properties.javax.persistence.schema-generation.scripts.action SPRING_JPA_PROPERTIES_JAVAX_PERSISTENCE_SCHEMA_GENERATION_SCRIPTS_ACTION Si se crea o actualiza el esquema de la base de datos update
spring.jpa.properties.javax.persistence.schema-generation.scripts.create-target SPRING_JPA_PROPERTIES_JAVAX_PERSISTENCE_SCHEMA_GENERATION_SCRIPTS_CREATE_TARGET Nombre de archivo para la generación del script ddl_jpa_creation.sql
spring.jpa.hibernate.ddl-auto SPRING_JPA_HIBERNATE_DDL_AUTO Cómo inicializar la base de datos update
spring.jpa.hibernate.use-new-id-generator-mappings SPRING_JPA_HIBERNATE_USE_NEW_ID_GENERATOR_MAPPINGS Si se generan valores de identificador basados en una estructura de base de datos de tipo secuencia true
spring.jpa.database-platform SPRING_JPA_DATABASE_PLATFORM Base de datos utilizada org.hibernate.dialect.PostgreSQLDialect
spring.jpa.open-in-view SPRING_JPA_OPEN_IN_VIEW Si se habilita OSIV false
spring.jackson.mapper.DEFAULT_VIEW_INCLUSION SPRING_JACKSON_MAPPER_DEFAULT_VIEW_INCLUSION Si se incluyen propiedades no anotadas en todas las vistas true
spring.flyway.baseline-on-migrate SPRING_FLYWAY_BASELINE_ON_MIGRATE Si se llama automáticamente a baseline cuando se ejecuta migrate sobre un esquema no vacío sin tabla de historial de esquema ’true'
spring.datasource.hikari.data-source-properties.reWriteBatchedInserts SPRING_DATASOURCE_HIKARI_DATA_SOURCE_PROPERTIES_REWRITEBATCHEDINSERTS Si se reescriben las sentencias de inserción normales en sentencias de varios valores para inserciones por lotes true
spring.datasource.hikari.maximum-pool-size SPRING_DATASOURCE_HIKARI_MAXIMUM_POOL_SIZE Tamaño máximo del pool 20
spring.datasource.hikari.connection-timeout SPRING_DATASOURCE_HIKARI_CONNECTION_TIMEOUT Tiempo de espera de conexión 60000
spring.datasource.driver-class-name SPRING_DATASOURCE_DRIVER_CLASS_NAME Controlador JDBC para comunicarse con la base de datos org.postgresql.Driver
spring.datasource.password SPRING_DATASOURCE_PASSWORD Contraseña para conectarse a la base de datos ${DB_PASSWORD:postgres}
spring.datasource.username SPRING_DATASOURCE_USERNAME Nombre de usuario para conectarse a la base de datos ${DB_USERNAME:seatmap}
spring.datasource.url SPRING_DATASOURCE_URL Ubicación de la base de datos ${DB_URL:jdbc:postgresql://localhost:15432/seatmap}
spring.servlet.multipart.enabled SPRING_SERVLET_MULTIPART_ENABLED Si se habilita el soporte de cargas multipart true
spring.servlet.multipart.max-file-size SPRING_SERVLET_MULTIPART_MAX_FILE_SIZE Tamaño máximo permitido para los archivos cargados 200MB
spring.servlet.multipart.max-request-size SPRING_SERVLET_MULTIPART_MAX_REQUEST_SIZE Tamaño máximo permitido para las solicitudes multipart/form-data 215MB
spring.servlet.multipart.file-size-threshold SPRING_SERVLET_MULTIPART_FILE_SIZE_THRESHOLD Umbral de tamaño a partir del cual los archivos se escriben en disco 2KB
spring.mvc.pathmatch.matching-strategy SPRING_MVC_PATHMATCH_MATCHING_STRATEGY Estrategia de implementación para hacer coincidir las rutas de las solicitudes con los manejadores del controlador ant_path_matcher
spring.data.redis.port SPRING_DATA_REDIS_PORT Puerto del servidor Redis 16379
spring.data.redis.host SPRING_DATA_REDIS_HOST Host del servidor Redis localhost

Ajustes de registro

Ajustes de registro que se aplican a las clases del paquete pro.seatmap.

Parameter Environment variable Descripción Default value
logging.level.pro.seatmap LOGGING_LEVEL_PRO_SEATMAP Nivel de registro DEBUG

Ajustes del servidor

Parameter Environment variable Descripción Default value
server.compression.min-response-size SERVER_COMPRESSION_MIN_RESPONSE_SIZE Tamaño mínimo de los archivos a comprimir 1024
server.compression.enabled SERVER_COMPRESSION_ENABLED Si se comprimen los datos true
server.compression.mime-types SERVER_COMPRESSION_MIME_TYPES Tipos MIME a comprimir text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json
server.servlet.session.timeout SERVER_SERVLET_SESSION_TIMEOUT Duración de la sesión del servlet 2d
server.tomcat.max-http-form-post-size SERVER_TOMCAT_MAX_HTTP_FORM_POST_SIZE Tamaño máximo de una solicitud POST 20MB

Ajustes de notificaciones

Ruta para las notificaciones de Image Ready.

Parameter Environment variable Descripción Default value
notify.path NOTIFY_PATH Ruta de notificación /topic/venues/

application-seatmap.yaml

En el archivo application-seatmap.yaml puedes configurar los parámetros descritos a continuación.

Ajustes de seguridad

El bloque security permite definir la duración de los tokens de actualización y de acceso, así como gestionar las claves.

Parameter Environment variable Descripción Default value
seatmap.security.token.refresh.expire-duration SEATMAP_SECURITY_TOKEN_REFRESH_EXPIRE_DURATION Duración del token de actualización. Formato: PTnHnMnS, donde n son las horas, minutos o segundos correspondientes PT2H (two hours)
seatmap.security.token.access.expire-length SEATMAP_SECURITY_TOKEN_ACCESS_EXPIRE_LENGTH Duración del token de acceso en milisegundos 300000 (five minutes)
seatmap.security.rsa.private-key SEATMAP_SECURITY_RSA_PRIVATE_KEY Ubicación de la clave privada Recurso de la instalación
seatmap.security.rsa.public-key SEATMAP_SECURITY_RSA_PUBLIC_KEY Ubicación de la clave pública Recurso de la instalación
seatmap.security.sso.user-default-password SEATMAP_SECURITY_SSO_USER_DEFAULT_PASSWORD Contraseña de usuario predeterminada PASSWORD

Clave de Google API

Una clave de API es un identificador único que autentica las solicitudes asociadas a tu proyecto para fines de uso y facturación.

Parameter Environment variable Descripción Default value
google.api.key GOOGLE_API_KEY Valor de la clave de API KEY_VALUE

Ajustes de primera ejecución

Estos ajustes se aplican la primera vez que se ejecuta el sistema.

Parameter Environment variable Descripción Default value
seatmap.first-run.organization SEATMAP_FIRST_RUN_ORGANIZATION Nombre de la primera organización creada seatmap.pro
seatmap.first-run.email SEATMAP_FIRST_RUN_EMAIL Email del superadministrador admin@seatmap.pro
seatmap.first-run.password SEATMAP_FIRST_RUN_PASSWORD Contraseña del superadministrador PASSWORD

Ajustes de restablecimiento de contraseña

Parameter Environment variable Descripción Default value
seatmap.reset.fromMail SEATMAP_RESET_FROMMAIL Dirección de email desde la que se envía al usuario un mensaje con un enlace de restablecimiento de contraseña Sin valor
seatmap.reset.token.expire-duration SEATMAP_RESET_TOKEN_EXPIRE_DURATION Duración del enlace. Formato: PTnHnMnS, donde n son las horas, minutos o segundos correspondientes PT30M (thirty minutes)

Ajustes de servicios

Las URL en las que se encuentran los servicios.

Parameter Environment variable Descripción Default value
seatmap.services.booking.url SEATMAP_SERVICES_BOOKING_URL Dirección del servicio de reservas https://booking.seatmap.pro/
seatmap.services.metrics.url SEATMAP_SERVICES_METRICS_URL Dirección del servicio al que enviar las métricas del servicio https://stat.seatmap.pro/editor-metrics
seatmap.services.editor.url SEATMAP_SERVICES_EDITOR_URL Dirección del servicio del editor http://localhost:3000/
seatmap.services.core.url SEATMAP_SERVICES_CORE_URL Dirección del editor core en el entorno frontend. Editor-service firma cada llamada con su clave privada http://127.0.0.1:8081/
seatmap.services.preview.url SEATMAP_SERVICES_PREVIEW_URL Dirección del servicio de vista previa http://localhost:5000/
seatmap.services.preview.api-key SEATMAP_SERVICES_PREVIEW_API_KEY Secreto compartido enviado al conversor como token bearer. El chart de Helm lo genera y lo configura (vacío)
seatmap.services.preview.jobs SEATMAP_SERVICES_PREVIEW_JOBS Ruta bajo la URL del conversor que se consulta para una conversión en cola jobs/
seatmap.services.preview.await-timeout SEATMAP_SERVICES_PREVIEW_AWAIT_TIMEOUT Tiempo máximo de espera de una conversión en cola antes de darla por fallida PT5M
seatmap.services.preview.poll-interval SEATMAP_SERVICES_PREVIEW_POLL_INTERVAL Intervalo entre consultas del estado de la conversión PT2S

Ajustes de correo

Parámetros del servicio de correo para restablecer contraseñas. Configure el usuario y la contraseña de su servidor de correo, o deje ambos vacíos si el servidor acepta correo sin iniciar sesión. La estrategia admite SMTPS para TLS implícito, SMTP_TLS para STARTTLS o SMTP, que envía sin cifrar cuando el servidor no ofrece STARTTLS, así que úselo solo en una red de confianza. Sin valor, la estrategia es SMTPS en el puerto 465 y SMTP_TLS en cualquier otro puerto.

Si el host o la dirección del remitente (seatmap.reset.fromMail) están vacíos, o la contraseña está configurada sin nombre de usuario, el editor registra una advertencia al iniciarse y una solicitud de restablecimiento de contraseña responde HTTP 503 sin enviar correo. La página de restablecimiento de contraseña pide entonces al usuario que contacte con su administrador.

Parameter Environment variable Descripción Default value
seatmap.mail.username SEATMAP_MAIL_USERNAME Nombre de usuario Sin valor
seatmap.mail.password SEATMAP_MAIL_PASSWORD Contraseña Sin valor
seatmap.mail.host SEATMAP_MAIL_HOST Host Sin valor
seatmap.mail.port SEATMAP_MAIL_PORT Puerto 587
seatmap.mail.strategy SEATMAP_MAIL_STRATEGY Seguridad de la conexión Según el puerto

Escriba una función, un ajuste, un endpoint o un método del SDK.