Saltar al contenido
KAMOUniverse

Changelog

Qué hay de nuevo.

Cada mejora de la plataforma, a medida que se envía.

  1. · kamo-internal

    Reconstruir la diaposiada como una superficie continua

    Las filas de miembros ahora forman el cuerpo de departamento directamente. y los departamentos funcionan con bandas pegajosas, recuperando 30px de ancho de hilera y cortando el cromo antes del primer miembro de 228px a 170px. Diseño - Eliminar la pila de cartas en la tarjeta: las filas son planas, separadas para cabello, de ancho completo. - Banda de departamento de pegajoso (entra en un 8% de tinte primario, nunca blanco en primaria) llevar el chevron revelación, un medidor de presencia en vivo, un online/total fracción y un Seleccionar conmutación. Cae el icono idéntico por departamento. - Un fondo en lugar de tres gradientes apilados; una señal de borde de desplazamiento. - El estado es llevado por un punto en el avatar más una palabra sólo cuando se añade información, sustituyendo cinco codificaciones por fila del mismo valor. Comportamiento - Haz clic en la fila abre el chat 1:1. Anteriormente no hizo nada: Diputado nunca pasóClick, por lo que una fila clicable completamente al estilo era inerte. - Restaurar el filtro All/Online/Offline, que sólo existía dentro de MemberList's MemberList's cabecera - una rama que el panel en vivo nunca hizo (showHeader=-false), dejando statusFilter pegado a 'todos'. Levantado en NavTopPanel junto al campo de búsqueda. - Multiseleccione gana asequipancias reales: un Select toggle per band, ctrl/cmd-click, y tocar largamente prensa; una barra de selección se levanta de la primera selección. - Un Encuentro izadoDialog en lugar de uno montado por fila, y propioMemberId es enhebrado en lugar de cada hilera que trae /api/user-info. Moción - MotionConfig reducidoMotion="user", además de los protectores de movimiento reducidos en el CSS llaves que no puede alcanzar. - Entrada de sección escalfada, comarcar altura-colapso con un chevron rotatorio, Reflue de fila de layout-primavera, conteos de odómetro, pop no leído, diapositivas de pestañas direccionales. Accesibilidad - Semántica de divulgación real, ul/li filas, un botón de fila estirada con hermanos acciones (no anidadas), trampa de enfoque con restauración de enfoque, navegación de flecha-tecno, una región viva educada para la selección, y objetivos de 24px. - Los abridores de paneles en NavTop eran cajas no enfocables; ahora son botones. - Las filas de chats eran divs solo clics sin ruta de teclado; son elementos de la lista con botones reales y nombres accesibles. Tema - Nuevo simbazo en primaria para que el texto blanco en una primaria de inquilino ligero sea fijado. - La paleta de disponibilidad compartida termina la deriva de NavTop/MemberItem to choe, y la Las líneas de los cabellos dejan de referirse --color-primaria-rgb, una variable nunca definida. - Las estampillas de tiempo relacionadas pasan por Intl en el local de la aplicación en lugar de emitir codificados en inglés, y las etiquetas de última hora de nuevo se conectan a través de un reloj compartido de los años 30.

  2. · SecurityService

    Detección y alerta por el rastro de auditoría de acceso a récord

    Ficacán ha estado acumulando evidencia que nadie mira. Eso satisface 164.312 (b) El rastro existe y no satisface nada de 164.308 (a)(ii)(ii) (D), que pide revisión, o 164.400 a 44,14-414, cuyo reloj no puede comenzar hasta que alguien se dé cuenta. Esto es lo que se da cuenta. Cinco detectores a la hora cerrada, por actor: BULK-EXPORT 250 registros distintos exportados/descargados/difundidos MASS-READ 200 discos distintos leídos REPEATED-DENIALS 10 rechazó los intentos (eventos - una negativa no nombre registro) OFF-HOURS-ACCESS 20 discos distintos fuera de la propia semana de la TENANT PLATFORM-STAFF-ACCESS 1 - una entidad cubierta se dice independientemente de la justificación Los conteos son registros de DISTINCT, no eventos: PhiAccessAuditor emite una fila por fila de cuadrícula, por lo que un miembro recargando la misma página cuarenta veces es 2.000 eventos y 50 individuos y "cómo muchos individuos" es el número una brecha se evalúa. La justificación de todos los valores por defecto está en PhiDetectionSettings; todos ellos son configmap-tunables, porque un detector que se dispara constantemente se silencia y un detector de silencio todavía se lee como cobertura. Fuera de horas se juzga en la zona del inquilino a través de sus existentes OFF-HOURS-ACCESS Regla (horas de trabajo que la pantalla de Seguridad ya recoge) cayendo de nuevo a Organization.timezone. se produjo en es UTC, por lo que una comprobación cocobrada por UTC página de la página un inquilino de Sydney cada mañana trabajando y nunca pediera una de Nueva York. Entrega reutiliza lo que existe: EmailTemplateServiceClient - EmailService /api/email/templates/enviar con la nueva clave canónica de PHI-ACCESS-ALERT, de la se dirige al org ya registrado en org.Sossupicious.detection.rules .notification.emails. Un inquilino que no configura ninguno obtiene el registro de revisión y nada más. Enviar una dirección adivinada revelaría que un nombre El miembro de la plantilla está bajo sospecha. Cada hallazgo se registra en un dedicado HIP-DETECTION logger; sólo la notificación se acelerado (6h por detector/inquilino/ actor, en el Redis las reglas de login-anomaly ya se utilizan). Las alertas llevan identificadores y cuenta, nunca un registro. Dos opciones estructurales deliberadas: - Los agregados se ejecutan a través de un EntityManager, no de Spring Data . Primavera Los datos validan una consulta declarada por crearla en bootstrap de repositorio, por lo que un error falla en la puesta en marcha de contexto y un Servicio de Seguridad que no El inicio toma cada login con él, como en 2026-08-03. Aquí el peor caso es un barrido que troncos y atesoran la próxima hora. También elimina este paquete de la HabilitarJpaRepositorios cuestionar completamente: sin repositorio de frijol, nada de Olvídate de eso. PhiDetectionQueryTest comprueba cada ruta de propiedad reflexivamente desde entonces Ninguna prueba en este servicio puede arrancar un contexto. - Cada consulta está limitada por la organización id first. phi. .access. El índice utilizable es (ORGANIZATION-ID, OCCURRED-AT); filtrando a tiempo solo Escapara una mesa de solo apéndice que sólo crece. Programación: esto se une a taskScheduler (4 hilos, sched-), que siete barridos ya comparten. NO toca la traducciónEl subecutor de 3 hilos/500 La piscina Async observó saturada y no se somete a ningún albacea. Hora, cinco agregados agrupados por lote de inquilino, sin E/S de red dentro del escaneo, y un peinado de reentrancia por lo que una carrera lenta se salta la siguiente garrafal en lugar de apilar detrás de ella y muriendo de hambre la piscina que comparte. No se añadió o cambió ninguna entidad o columna.

  3. · EmailService

    Variables de vista previa para PHI-ACCESS-ALERT

    Sin una muestraVariables arma el admin Email Templates vista previa renderiza cada marcador en blanco, por lo que se le pide que apruebe la redacción de una garantía alert ve una mesa vacía. Los identificadores de los modelos de muestra y cuenta únicamente de la misma forma que lleva la alerta real, porque la alerta real nunca lleva un registro.

  4. · kamo-shared-library

    PHI-ACCESS-ALERT plantilla canónica

    La revisión horaria de SecurityService de las necesidades de phi-access-log en algún lugar para enviar - Lo que encuentra. En lugar de inventar un canal utiliza el existente ferrocarril transoperacional-email, que significa una clave canónica: ausente de CANONICAL-KEYS una plantilla nunca se puede sembrar, nunca auto-cura, y cada uno de los enviar devuelva un control permanente de 404 . un control alerta que parece cobertura y no entrega nada. La plantilla lleva identificadores, cuenta y una ventana de tiempo solamente. Una detección El artefacto que reproduce lo que detectó ha reubicado el PHI en una bandeja de entrada sin política de retención, por lo que deliberadamente no hay marcador de posición para un - Registro. PhiAccessAlertTemplatePals que, y pincha los dos fracasos silenciosos modos: un marcador de posición nada entrega rinde como una cuerda vacía con sólo una WARN, y el renderizador no se escapa HTML, así que cualquier cosa que llegue al cuerpo usa el gemelo fugado. EmailService debe volver a desplegarse con esta lib compartida antes de que SecurityService comience Enviar; hasta entonces el envío es capturado y el hallazgo se mantiene solamente.

  5. · kamo-internal

    Espejo la máscara mínima-necesaria de plomo en el cliente (164.502(b))

    SecurityService ahora rechace las respuestas de forma personalizada de un llamante que no es el el cesionario de plomo (y, en una manijasInquilino de Phi, incluso de un titular de la derecha 161). Esa máscara es la aplicación; esto no lo es. Dos caminos aún lo pasan por alto: - LeadRealtimePublisher pone un Lúpulo FULL, desenmascarado en seguridad.leads.rt.orgId. una carga útil abarrotó a cada suscriptor en el org, sin posible proyección por destinatario. Hasta que lleve ese evento identificadores solamente y el cliente refetches, app/lib/leads/leadFieldMask.ts es lo único entre las respuestas de admisión de un colega y cada panel de plomo abierto en el inquilino. LeadViewClient ahora corre en tiempo real de cargas útiles a través de él antes de que algo llegue al estado. - Renderización: una forma retenida y una nunca llena de uno llega buscando idéntico, por lo que la decisión tiene que ser recomendada, no indiferida. La forma personalizada el panel deja caer su Edite permitida cuando las respuestas están restringidas - salvar un espacio en blanco formulario PUT sobre las respuestas reales, que el servidor ahora 403s de todos modos. Organization.handlesPhi se entrega en la columna existente ---D--OrgContext ruta (la entidad org ya serializa; el esquema zod y Organización.De JSON permite-lista-listo eran los eslabones perdidos), no un segundo canal. No hay nueva copia visible del usuario: la etiqueta explicativa "restringida" necesita una clave en el repo de traducción-diccionario y se deja deliberadamente para ese cambio.

  6. · SecurityService

    Lamas mínimas necesarias de las respuestas de forma personalizada de plomo (164.502(b))

    La única máscara de campo de la plataforma fue **************** aplicación por LeadController.getLeadById a un llamante que no es dios ni el cesionario y cares VIEW-LEAD-CONTACT-INFO-OTHERS (161). Abarca el correo electrónico, los teléfonos, la fecha de nacimiento y las partes de la calle de las direcciones de correo/propiedad y nada más. customFormData cabalgaba directamente a través de ella, que es el único lugar en la plataforma a El inquilino de la salud realmente pondrá en cuenta las preguntas de admisión y síntomas. LeadFieldMask ahora es dueña de la decisión y de la proyección: - cualquier org: respuestas de forma personalizada montar con la máscara de contacto. Si no puede ver El e-mail del líder puede que no veas lo que contestó. - mangoInquilinosPhi: las respuestas se retienen a cualquiera que no se asigne el plomo hasta con razón 161. Ese derecho está establecido, por su propio nombre, en contacto información; una respuesta de síntomas no es información de contacto. El título de la forma va "Diabetes Intake Questionnaire" revela la condición por su cuenta. La entrada del formulario sobrevive al enmascarar llevando sólo su identificación, por lo que la interfaz de usuario puede decir "restentado" en lugar de dibujar un cuestionario en blanco. Un org que no cargará es tratados como PHI-handling, a juego, la postura de las llamadas UNKNOWN de PhiTenantStatus. PUT /leads/Eid gana la puerta de escritura simétrica. El editor de formularios PUTs el todo mapa de los puntos de vista, así que sin él un miembro mostró un cuestionario en blanco que presionó Save habría reemplazado las respuestas reales con la máscara de lectura tendría convertirse en una borrado silenciosa. Utilidad estática, sin estereotipo y sin repositorio: la decisión es pura y la El llamante ya tiene la org.

  7. · kamo-internal

    Lente de auditoría de acceso PHI - revisión de org y contabilidad por registro

    Se estaba escribiendo el rastro y nada podía leerlo. Esta es la pantalla a la mitad: una revisión de acceso en toda la zona de ajuste de seguridad, y un "que ha accedido a esto diálogo de registro" abierto desde el propio plomo, que es la forma de un 164,528 la solicitud de contabilidad llega en un individuo preguntando por su archivo, no alguien con tiempo para filtrar un registro global. Tres cosas aquí no son cosméticas. Los Timestamps son absolutos y siempre nombran la zona en la que se entregaron, con un Un clic cambiar a UTC. Esta evidencia es leída meses después por alguien que era no presente; un muro desnudo leída de otra zona en silencio extravía a un acceso por horas, que es la diferencia entre "durante el turno" y "a las 3 am". Los tiempos relativos se excluyen directamente. Los intentos negados y el acceso al personal de la plataforma están marcados en la fila (intento, regla izquierda, icono de plomo) en lugar de dejar en una columna el ojo salta, porque un cumplimiento El oficial escanea cientos de filas para el que no debería estar allí. Ordinario Las lecturas son deliberadamente sencillas: decorar todo es lo mismo que decorar Nada. Niegado supera al personal de la plataforma cuando una fila es el personal de Kamo La línea más interesante que puede mostrar la pantalla. La exportación está cerrada en EXPORT-ACCESS-LOGS por separado de la derecha, y un 503 del río arriba se desprende ya que "no se reveló nada" en lugar de alisar en un error genérico. EXPORT es un tipo de auditoría cerrado por fallos: la negativa significa la no se pudo registrar la divulgación, lo que es un resultado correcto que el oficial necesita para ver. Construcción de consultas, formato de marca de tiempo y clasificación de filas en vivo en app/lib so vitest puede llegar a ellos; los componentes son de montaje. Un 403 nunca cae a una rejilla vacía "nadie ha tocado este disco" es el más peligroso mal Responder esta pantalla puede dar.

  8. · kamo-internal

    Retitúcese la página de miembro al perfil, acorte las etiquetas de las pestañas, agregue los iconos de pestañas

    El encabezado de la página de configuración de los miembros se convierte en "Mi perfil de labella" (o "Perfil de label" para otro miembro) y el enlace nav-top se convierte en Mi perfil. Las etiquetas de las pestañas se acortan - Mailbox (s), Teléfono, Audio y Video, Permisos, actividad, mientras el teléfono y los papeles ayudan a los consejos de cosas Títulos descriptivos a través de nuevo ******************* las llaves. Cada pestaña ahora lleva un icono en la barra de pestañas; pestaña consulta-param ids no han cambiado tan profundos que siguen funcionando.

  9. · kamo-internal

    Deslizador de tono y encalado a todo color para desmayar

    Un fondo por miembroTone ui-preference (0 blanco / 50 de color completo / 100 negro) representado como lavado por encima del scrim de legibilidad en la consola capa de presentación de diapositivas y la etapa WYSIWYG del editor. Slider vive en el escenario cromo de medios con vista previa de arrastre en vivo, chasquido central y persistencia en la liberación.

  10. · kamo-internal

    Las tarjetas de lanzador y el héroe utilizan el color de la marca de la org en lugar de acentos por módulos

    Las tarjetas de opción de la plataforma de lanzamiento de casa, la superposición de arrastre y el héroe de primera y primera or ahora tomar su acento de var (--color-primaria) (el conjunto dinámico de la org tema color) en lugar del mapa familiar fijo multicolor --accent-*.

  11. · kamo-internal

    Modo dios de vidrio . Razón de razón, cuenta atrás, indicador de pie

    El modo Dios no tenía ninguna interfaz de usuario en kamo-internal: un localStorage boolean que un monte efecto reflejado en ***, reafirmado en cada nueva pestaña para siempre. Eso hizo que el navegar la autoridad sobre si el personal de la plataforma fue elevado, y se hizo elevación Algo en lo que podrías estar sin decidir serlo. - GodModeJustificationDialog pide la razón ANTES de elevarse. Una razón recogido después es una razón escrita para encajar con lo que ya se hizo. La copia declara claramente lo que el operador está a punto de ver y que su nombre continúa en él. - GodModeIndicator es una barra de fondo de ancho completo más un marco rojo alrededor del todo viewport, con una cuenta reenviada en vivo y "Ahora". Alguien que se olvida de que está el modo dios es el escenario exacto que existe el control para prevenir, por lo que no es un Insignia sutil, pero es puntero-eventos:nauna fuera del bar y se sienta afuera flujo de diseño, por lo que nunca intercepta un clic o reflows una pantalla. - Ambos se montan una vez en el diseño raíz, junto a AutomaticLogoff, por lo que el el indicador está presente donde el operador termina en lugar de en las pantallas Alguien lo recordaba. No se devuelve nada a menos que la sesión sea dios-ELIGIBLE. - El servidor es dueño del estado. app/lib/ddMode posee una sola tienda coales; cliente sólo lee la expiración SecurityService estampado y nunca puede extenderse de setIsdMode se ha ido - la elevación toma una justificación, por lo que no puede ser un Setter. - La encuesta de estado se duplica como la claridad duradera: GET /session/dios-modo es donde SecurityService escribe una elevación de Redis para los servicios que leer la sesión directamente. UsarPlatformAdminGuard ahora espera el estatus de dios para sesiones elegibles para los dioses. Acceso solía ser legible sincrónico de localStorage; sin la espera y El operador con una ventana abierta sería rebotado a /settings en la brecha. Las cuerdas están en ******************* (empujándote primero, según el orden de clon de la construcción). npx vitest run: 329 pasado (32 archivos), 17 de ellos nuevo. npx tsc --noEmita: limpio.

  12. · SecurityService

    Lea el sendero de acceso PHI a 164,528 . . . . . . . . . . . . .

    El rastro ha sido escrito por un tiempo y nada podía leerlo, que dejó dos obligaciones insatisfase: una contabilidad de las revelaciones del historial de una persona (64.528) y examen periódico de las actividades del sistema de información (a.164.308 (a) (1) (ii)(D) ((D)). Ambas son consultas. Esto añade la superficie de consulta. La autorización es la característica, no la cuadrícula. La organización está arrebatada de la sesión y de ninguna otra parte no hay deliberadamente parámetro de orgId en ninguno manejador, y PhiAuditQueryService es un solo punto de estrecha que añade el inquilino predicar antes incluso de consultar el filtro. Cuatro métodos de consulta de hermanos han sido cuatro oportunidades de olvidarlo. El alcance es una cláusula de la Tierra en lugar de una post-filtro, porque filtrar una página devuelta dejaría totalElementos Contando filas que el llamante puede no ver. El lado de la lectura obtiene su propia interfaz de repositorio. El compartido PhiAccessLogRepository Los buscadores son deliberadamente cruzados y son correctos para una herramienta de plataforma, una revelación si se entrega a una pantalla del cliente para que la pantalla tenga una interfaz cuya única entrada punto toma una especificación. Vive bajo com.kamo.SecurityService, que el la entrada existente de los "EnableJpaRepositores" ya cubre, por lo que no se necesita un cambio de escaneo y ninguno puede ser olvidado. Los derechos son VIEW-ACCESS-LOGS (29) y EXPORT-ACCESS-LOGS (32) - el par que ya puertas el registro de autenticación, por lo que cualquiera que administre la seguridad hoy puede usar esto en el primer día. Un nuevo identificador derecho habría enviado la pantalla muerta: necesita una carrera de KamoInitializer y una subvención antes de que cualquier miembro tenga uno. La lectura del sendero está registrada, como INFORME/Buscar para una lectura y INFORME/EXPORT para una copia, incluyendo intentos rechazados. Los criterios de búsqueda son un filtro lleva ids de miembro y registro de ids, y un rastro que almacena lo que se buscó acumula los identificadores que existe para proteger. Todo está limitado: sujetadores de tamaño de página a 200, una exportación limita a 10.000 filas. Un rastro de seis años es millones de filas y la capa de captura escribe una fila por fila de cuadrícula por carga, por lo que un tamaño no sujetado es una OOM accesible en lugar de una teórico uno. Timestamps se dejan como instantes explícitos de UTC. La columna es de pared sin zona, y esta evidencia es leída meses después por alguien que no estaba allí.

  13. · kamo-internal

    Pantalla de inscripción de MFA y el control de límites PHI de modo diod

    Dos configuraciones para backends que no tenían ninguno. Inscripción de MFA (fijando mi perfil - Seguridad de inicio, solo auto). Los endpoints /api/security/mfa de Security de SecurityService han sido completos y completamente Inquebrantable, así que el MFA existía y nadie en la plataforma podía encenderlo. El pestaña es auto-últya porque esos endpoints resuelven al usuario desde el propio llamante sesión y no tome ningún parámetro de usuario - un administrador que abra el perfil de otra persona estaría inscribiendo a su propio autenticador en esa pantalla. El código QR usa qrcode.react, ya una dependencia; no se añadió ningún paquete. El el secreto se muestra a su lado, debido a que una aplicación autenticaator en el mismo dispositivo como el navegador no puede escanear la pantalla que está cubriendo. Dos vías de fracaso consiguen un manejo de primera clase en lugar de un error genérico. 409 significa que ya existe un factor confirmado y lo dice, con el remedio (un . . . decirle al usuario que vuelva a intentarlo lo enviaría de vuelta a la una acción que no pueda tener éxito. Un código de confirmación incorrecto mantiene a la pendiente la inscripción: el secreto se muestra una vez, por lo que descartarlo significaría borrar la entrada y el rescatamiento del autentador, y la inscripción pendiente del servidor seguiría ahí, así que el reinicio volvería 409 y los quedaría. Los códigos de recuperación se muestran una vez y no se pueden reeditar. El diálogo no puede ser desestimado por escape, telón de fondo o un botón cerrado; Hecho se desbloquea sólo después de la Los códigos han sido copiados o descargados Y la advertencia reconocida. Ambos son se requiere: una casilla de verificación por sí sola se hace clic reflexivamente, y un portapapeles solo es sobrescrito por la siguiente copia y nada se ve mal hasta el día en que el usuario pierde su teléfono. Córmite PHI (fijadores de seguridad - Datos de salud, sólo elegibles para Dios). La cuenta es visibles para los operadores dad-elegibles y el control interno requiere modo dios en realidad encendido, que SecurityService vuelve a comprobar; la elegibilidad por sí sola no es activación. Nunca se vuelca sin enumerar primero los módulos que dejan de funcionar esa lista viene del servidor, derivada de PhiModule a través de PhiTenantGuard, por lo que no puede derivarse de lo que se aplica. Un 503 se asienta como "el cambio no se aplicó porque no se pudo grabar", porque eso es lo que pasó. La lógica de la decisión vive en app/lib/security para que vitest pueda llegar a ella; los componentes Sostenga la representación solamente. Verificado: npx vitest run 329 pruebas, 32 archivos, todos pasando (43 de ellos nuevos). npx tsc --noEmitir reporta sólo tres errores en **************** un archivo sin rastrear de otra sesión en este árbol, en ninguno de los archivos aquí.

  14. · SecurityService

    Punto de final para leer y mover el límite HIPAA de una organización

    Organización.handlesPhi ha existido como una columna sin forma de fijarla, así que PhiTenantGuard ha estado haciendo una bandera que nadie podía encender. Este es el Falta de la mitad: GET/PUT /api/security/phi/tenant. La autoridad es la elegibilidad para dios Y un dios activoModeActive toggle, nunca uno. Solo elegibilidad es lo que dejó las puertas del dios de la plataforma muertas hasta 2026-07-22; aquí dejaría que cualquier operador elegible para Dios apagara los módulos de un inquilino vivo con un clic poco notable. El objetivo es siempre la propia sesión de la que llama No hay ningún parámetro de organización, por lo que ninguna petición artesanal puede llegar a un Inquilino el llamante no está ya dentro. phiEffectiveDate se estampa en la primera habilitación y nunca se reescribió, incluso en un posterior deshabilitar/re-enable. Alcance de las ventanas de evaluación de incumplimientos y retención, para avanzar en el futuro reduciría silenciosamente el período que se examina, y una auditoría fecha en que la solicitud puede adelantarse no es prueba. La fila de auditoría está escrita ANTES de los movimientos de banderas, y CONFIGURE falla cerrada, por lo que un rail que no se puede escribir rechaza el cambio y devuelve 503 en lugar de dejando un límite que se movió sin registro de cuándo. Los intentos denetados son grabado también. Cada fila lleva identificadores y la transición solamente, nunca contento. bloqueModules se deriva de PhiModule a través de PhiTenantGuard en lugar de Enumerado, por lo que la advertencia que muestra la IU no puede derivarse de lo que el guardia impone. No hay un nuevo paquete de repositorios: OrganizationRepository ya está en este servicio Habilitar la lista de los depósitos de la mano, por lo que no hay nada que añadir junto a este frijol. Verificado: 298 pruebas, 1 error EntityManager NPE, que es preexistente (base en 7968a21: 281 pruebas, la misma 1 error). RepositoryScanCoverageTest y ********** ambos pase.

  15. · kamo-internal

    Reconstruir el formulario de la cotización como un flujo guiado, añadir una vista previa de salida

    La pestaña de detalles era una pila plana de cajas descritas que daban a todos los campos lo mismo peso, por lo que nada indicaba qué entradas realmente cambian lo que el cliente ve. Es ahora lee como las cuatro decisiones se hace una cita de lo que es, lo que está siendo vendido, cómo se ajusta, lo que el cliente lee cada uno con una razón de una línea importa, y el total de correr se sienta en un carril pegajoso en lugar de enterrado en el fondo. Motion lleva sentido en lugar de decoración: secciones llegan en secuencia, a campo condicional se expande desde el control que lo reveló, el área de precios cruces cuando su forma cambia, y un total cuenta a su nuevo valor por lo que un error descricibe El precio unitario se nota en lugar de ser absorbido silenciosamente. Todo ello respeta prefer-reducido-moción. La nueva acción de vista previa hace que el documento terminado sea membrete, opciones o tabla, totales, términos y lo imprime por sí solo. Proyecta el estado editor de CURRENT, no el registro guardado, porque el momento en que necesitas ver la cita terminada es mientras decides Si lo enviar. La marca viene de la propia resolución del servidor por lo que la vista previa membrete es el que el cliente obtiene, y la opción aritmética se importa de la editor en lugar de reimplementado.

  16. · kamo-shared-library

    Vocabulario de auditoría para un cambio en el propio límite de cumplimiento

    Añade PhiResourceType.ORGANIZATION y PhiAccessKind.CONFIGURE para que se convierta en Organización.manosPhi dentro o fuera se puede registrar como lo que es. Cada tipo de recursos existente nombra el historial de una persona. Presentando un cambio de la La postura de cumplimiento del inquilino bajo uno de ellos pondría una mentira en los 164.528. contabilidad de las revelaciones, y "cuando este inquilino se convirtió en una entidad cubierta". socio de negocios" es la cuestión de que el resto del sendero está en contra de . Necesita su propia forma de fila, no una prestada. CONFIGURA falla cerrada por una razón diferente a la granel: nada es revelado, por lo que rechazar le cuesta un nuevo cargo al operador, mientras que un límite que se movió sin registro de cuándo el estado no puede reconstruir una evaluación de 164.402. No hay implicación en el esquema. phi.access.log.RESOURCE-TYPE y ACCESS-KIND son simples VARCHARs creados por PhiAccessLogTablaMigración sin enum whitelist CHECK, así que ni la constante necesita una carrera KamoInitializer antes de que pueda ser insertado, y no entidad o Column se toca. No verificado ningún interruptor exhaustivo sobre enum existe en cualquier servicio.

  17. · SecurityService

    Sirviar la vista del cliente-encase al personal para la vista previa

    GET /-uid-/preview devuelve el mismo PublicQuoteView el enlace de acciones sirve, desde el la misma resolución de citaPresentación, por lo que un membrete previsto no puede diferir de un enviado uno. deliberadamente no dobla una ficha, cuenta una vista o graba un evento. en su propio borrador no es compromiso del cliente, y dejarlo entrar en el sendero de actividad haría que la opinión fuera inadueña inútil como señal.

  18. · ConversionService

    Escanear subidas de malware en ingesto (164.308(a)(5)(ii)(B))

    La bóveda del documento aceptó subidas arbitrarias sin escaneo de malware en cualquier lugar de la plataforma, y es multi-tenant - un archivo una o cargas es abierto por los usuarios de otro org a través del espectador, el editor de WOPI y el aglutinante. ClamAV sobre INSTREAM, hablado directamente con clamdd (sin biblioteca cliente; el El protocolo es un enchufe y un prefijo de longitud). La puerta corre en ImagingUploadController en /upload y /templates/upload, antes que el miembro mirada y antes de cualquier bytes llegar a MinIO - escanear después de que el almacenamiento sale el objeto recuperable para el ancho de la carrera. Comportamiento escandaloso-inalcanzable es FAIL OPEN por defecto, y esa es una decisión en lugar de un accidente. clamdd aún no está desplegado: esta es la aplicación la mitad, y el despliegue es una ley operativa separada (KlusterServices auto-aplica en el empuje y no es este cambio para tocar). Envío fracasado-cerrado tomaría la carga de documentos para cada inquilino en el momento en que la imagen rueda, sin puesta en escena en la que eso hubiera sido atrincherado. Fallil-open aquí no es "sin protección", es el status quo de los últimos años, ahora registrado ERROR cada vez que sucede. Cada pomo, incluyendo el fracase - vive en kamowsconversion-config, por lo que apretarlo una vez que la almeja es estable es una configmap editar y reiniciar, no una liberación. Un interruptor acierra el costo de un escáner ausente: después de 3 consecutivos falla el guardia deja de marcar durante los años 60, por lo que las subidas no pagan a conectar el tiempo libre para un control que está efectivamente apagado. Al detectar: 422 nombrando la firma (no un 5xx y un reinicio de 5xx no ayudará), los bytes se conservan en un cubo de cuarentena dedicado en lugar de caer, y el rechazo se registra a través de PhiAccessRecorder. La fila de auditoría lleva identificadores solamente; el nombre de archivo cargado se mantiene fuera de él porque los nombres de archivo aquí Contienes rutinariamente nombres de prestatarios. PhiAccessKind no tiene miembro de UPLOAD y añade uno alteraría la restricción de una columna "Enumerado" en la biblioteca, por lo que se usa DOWNLOAD permitido=false y la razón está documentada en el sitio de llamadas. También cambia el rastro de PHI de este servicio al escritor duradero de phi-access-log. La entrada a juego com.kamo.z.shared.phi.phi.audit está en el mismo compromiso Lista de archivos de JpaRepositorios, y PhiAuditRepositoryScanTest falla la construcción si los dos siempre a la deriva - ese emparejamiento es lo que tomó cada inicio de sesión en 2026-08-03. Retro-scan (POST ************* barre los documentos ya en la bóveda, ascopeda y captada. Reporta y conserva, nunca bloquea o elimina: hacer que un objeto almacenado no retribuible necesite una cuarentena persistente bandera, es decir, una columna de biblioteca compartida aplicada por un inicializador a mano mientras servicio que CI construye contra principal, y borrarse en un falso positivo destruiría un registro de inquilino sin recuperación. Pruebas: 36 nuevas. Preexistente **************** averi, arriba1080, sigue fallando en un árbol limpio; intacto. No cubierto, deliberadamente: RecordingIngestController (internal-auth Asterisco empujar) y WOPI PutFile de DocsService son segundos caminos de ingestión que quieren lo mismo puerta, pero el escáner vive en este servicio y WOPI no tiene ficha para atribuir una fila de auditoría a. Ambos son seguimientos, no descuidos.

  19. · SecurityService

    Modo dios de vidrio . . justificación de 30 minutos de la caja de tiempo

    El modo Dios se activó en silencio y duró tanto como la sesión. Es el la revisión de seguridad de una entidad cubierta empuja más fuerte, porque "tuerdo" el personal puede leer nuestros datos de los pacientes" siempre se pide y un La elevación no tiene respuesta. - POST /api/security/session/diod-mode ahora requiere una justificación mecanografiada para paso UP. Paso DOWN nunca hace un control que las puertas de la acción segura es un control que mantiene a los operadores elevados. - Ambos bordes se registran a través de PhiAccessRecorder con la justificación y platformStaff(true). Identificadores solamente; la justificación es la propia operadora palabras sobre por qué, nunca nada de lo que hubieran leído. - La ventana es de 30 minutos y NON-SLIDING. La caducidad es un instante absoluto en el órgano de sesión, no un TTL, por lo que la actualización de sesión deslizante no puede extenderlo, y reafirmando de una segunda pestaña devuelve la expiración original en lugar de comprando otra ventana. - KSessionService.getLas máscaras de tensión una bandera transcurrida, por lo que todos los 10 existentes Las puertas de la caja de tiempo no cambian. GET /session/diodio-modo escribe el claro a Redis (haciendo dentro getSession se repetiría) y es lo que encuesta a IU para la cuenta regresiva. Falla deliberadamente OPEN en la escritura de auditoría: el modo dios es cómo se arregla el apoyo producción, y rechazar una elevación porque el parpadeo de fi-acceso está peor que una fila que la grabadora ya ha registrado en voz alta. Ninguna entidad o "Column" cambió. PhiResourceType no gana ninguna constante tampoco. Enumerado(STRING) con una lista blanca de valor de TABLA que ddl-auto:update Nunca se ensancha, por lo que una nueva constante fallaría cada inserto hasta KamoInitializer estaba corrido a mano. La elevación se registra contra el propio miembro del operador registro con un prefijo ************* en su lugar.

  20. · kamo-internal

    Reordenar las pestañas de mayordojo; doblificar a los identificadores en un popover de oleoducto de encontrar préstamo

    La orden de la pestaña es ahora Pipeline, Documentos, Suscripción, Precios, Capital & Risk, Gobernanza, Ingestión, Catalog y Pipeline se convierte en la pantalla de aterrizaje por defecto. La pestaña Identificador independiente se ha ido; su mirada vive en el oleoducto barra de herramientas como popover compacto Find-loan: búsqueda por préstamo UID (por defecto) o resolver cualquier identificador externo (MERS MIN, caso de agencia, sobre de firma electrónica, etc.) a su préstamo, con una tarjeta de resultados rica, el libro de identificación del préstamo, historia del ciclo de vida, y un solo clic abierto / show-in-pipeline.

  21. · kamo-signer-monorepo

    Compara opciones en la página de presupuestos del público

    Las opciones se linazan como tarjetas seleccionables en lugar de filas, porque son opciones y no adiciones. El período total es el titular; el equivalente mensual se encuentra a su lado como la cifra que hace comparables los diferentes términos de facturación, y una placa de ahorro aparece sólo cuando vale la pena nombrar la diferencia. La tabla plana y el bloque de totales combinados se suprimen cuando las opciones están presentes - un gran total en todas las alternativas mutuamente excluyentes es un número Nadie puede pagar. Imprimir reglas mantener las cartas uno al lado del otro para que una cita impresa todavía se compare.

  22. · kamo-internal

    Autor citas multiopción del editor

    Una cotización es una hoja de precios plana o un conjunto de alternativas, por lo que el editor ofrece un modo de conmutar en lugar de dejar que ambos existan a la vez. le mostraría al cliente un precio que no puede comprar. Cambiar a las opciones lleva las líneas existentes en la primera opción en lugar de descartar el trabajo mecanografiado. Cada opción obtiene sus propios elementos de línea, plazo de facturación, duración del compromiso, descuento y cuota de configuración, con vista previa en vivo del período total, equivalente mensual, valor de contrato y economías con cargo a la línea de base. Los espejos de vista QuoteOptionTotals; el servidor recomienda guardar y sus figuras ganan. El asiento cuenta con la cita, así que 40 - 60 reprices cada opción a la vez.

  23. · SecurityService

    Aceptar una opción en el punto final de la cita pública

    Las citas multi-opción no se pueden aceptar ciegas. La solicitud ahora lleva el opción elegidaUid y el servicio rechaza la aceptación sin una.

  24. · kamo-shared-library

    Citas multiopción con totales de comparación poropción

    Una cita ahora puede presentar varias formas mutuamente exclusivas de comprar. anual, tres años en lugar de forzar tres documentos separados que van a la deriva aparte en el momento en que el conteo de asientos cambia. - CotOption posee sus propios elementos y totales de línea; los hermanos nunca se suman. - CotOptionTotals normaliza cada opción a un equivalente mensual, que es la única base sobre la que se pueden comparar los diferentes términos de facturación, más contratar total y ahorro con la base de referencia señalada. - plazo de facturación y duración de compromiso permanecen separados: pagar anualmente no el mismo compromiso que un plazo de tres años facturó anualmente. - Quote.quantity es un conductor compartido; una línea que opta por usosQuoteQuantity reprices en cada opción a la vez. CitaTotals lo honra de manera idéntica hojas planas para que una línea no pueda fijar un precio diferente dentro y fuera de una opción. - Aceptar una cita multiopción requiere nombrar la opción; los hermanos cierran como NO. SECEDO y aceptadoOptionUid registra la elección. QuoteTotalsTest 15, QuoteOptionTotalsTest 11, citaShareTokenTest 9 pase.

  25. · kamo-internal

    Cobertura de entrega, fijación de precios, paneles de gran depósito

    Sustitula a los chips final de Coming-soon (Hedge & coverage, Pricing sign-off, Grandeo) con paneles en vivo conectados a los nuevos representantes de mayordomos.

  26. · SecurityService

    Azadío proxies para cobertura, firma de precios, depósito a gran tamaño

    Con el operador, estampado en sesión, propiedad cerrada por fallos (sin cross-org la existencia de oracle). Nuevas orillas de final en el trinquete de punta sin autentica.

  27. · kamo-shared-library

    Entidad de firma de registro de precios de WORM (mlos-pricing-signoff)

    El administrador de Aplicar-sólo el administrador Aplicado/REJECT sentencia sobre un resultado de precio congelado. PreUpdate lanza (una reversión es una nueva fila). Cuadro 4 índices (org., ejecutar, resultado, préstamo) aplicado a la cachada de CockroachDB a través de KamoInitializer.

  28. · kamo-internal

    Consola de mayordomos ronda 2 - colas de excepción, gobernanza, reconocimiento MERS

    - Capital - Suscripción: StewardExceptionQueue (pan panel compartido) cableado a la real administrador de tareas final punto final de cerraduras **************** y Directrices excepciones **************** estados vacíos honestos. - Gobernanza: CalibraciónConfiabilidadPanel (previsto vs observado por segmento) y PullThroughFunnelPanel (distribución de estadios reales, etiquetado como una instantánea no una cohorte conversión). Sustituyó a los dos chips. - Documentos: Panel de reconciliación de MERS sobre la lectura real de la ger-leda real. Puntos finales reales en todo; copia de cuerda lisa (i18n seguimiento); tsc --noEmita limpio.

  29. · SecurityService

    Relevos de la puerta para tareas de mayordomos, calibración/funnel, reconciliación MERS

    relés GET estampados con servidor de org: ******************* ******************* MlosDocOrquesttration **************** (filtro de org cerrado fallido, gotas paquete no propiedad filas - re-deriva el recuento). Los cuatro de referencia en el desprotector de puntada sin vigilancia (delegado puerta (delegado (puertas () guardia, como sus hermanos).

  30. · kamo-internal

    Aprovecho las funciones de consola de la consola hipotecaria

    Reemplaza los talacrantes con paneles reales y respaldados por endpoints. - Suscripción: Panel de cálculo de ingresos (calificación: DTI/PITIA/reservas/LTV Píldora AUS) y panel de Fraude/4506-C (carro de orden de venganza: lugar/list/cancel/events para FRAUD - TAX-TRANSCRIPT). - Precios: Comparación de escenarios (corridos de precios por lado) y Mejor ejecución Explicador (base.Ajustes.Caminata final - subcampeón/perdidas inelegibles); Borró el chip rancio Reverse-LLPA (ya en AdjustmentDrawer). - Documentos: Renovación de la claridad de vida (afiscales préstamo-claración sobre el oleoducto, agregados despejados/bloqueo/renunciados); eliminación de la autorización de flujo de trabajo rancios chip (ya enviado). - Capital: FIX los mercados de capital Siguiente ruta su POST permitido-lista se mantiene sólo un camino, por lo que el Enviado Loan Sale Desk / lock-lifecycle escribe 404'd. Sustituido el conjunto de cuerdas exactas con patrones de RegExp anclados enumerando el 9 real Rutas (verificadas 1:1 vs el controlador), todavía cerradas en cualquier otra cosa. - Boletín: una tarjeta "Promote as bulletin" (docmetro=BULLETIN) con Editable producto propuesto por IA/tipo/ártel/params, publicando en el nuevo relé. La nueva copia de IU es simples cadenas (i18n seguimiento); tsc --noEmita limpia.

Tu universo está esperando.

Comience gratis en minutos y agregue productos cuando esté listo, sin migración ni nuevos inicios de sesión.

Gratis para siempre: no se requiere tarjeta de crédito