Changelog
Qué hay de nuevo.
Cada mejora de la plataforma, a medida que se envía.
· 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.
· SecurityService
Relevo de puerta en puerta para promover un boletín revisado
MlosCatalogController/Client gain promote-bulletin, reflejando la línea de promoción-guía (puerta de dios, org estampada en servidor). Promoción de referenciaBulletin en el Prueba de puntos sin custodia (guardia delegada, como sus 14 hermanos).
· SecurityService
Persista SecurityService PHI de acceso a phi-access-log
El sendero de 164.312 libras) iba a Slf4jPhiAccessLogWriter: plataforma de 14 días retención contra una obligación de seis años, y nada que pueda ser cuestionado. El lecturas de plomo y CSV/HMDA exporta este servicio los accesos a La contabilidad de 164.528 libras viene ensamblada, por lo que el rastro tiene que sobrevivir en una tabla. Intervalos en JpaPhiAccessLogWriter a través de una grana PhiAccessRecorder recoge el paso ObjectProvider.getSiUnique no call in the call in PhiAccesAuditor changes. El a juego com.kamo.z.shared.phi.audit entrada en .EnableJpaRepositories barcos en este mismo compromiso: el frijol no se puede construir sin el repositorio, y declarar uno sin el otro es lo que CrashLooped entra en el disco hoy temprano.
· kamo-login
Completar un login que se detuvo en el segundo factor
SecurityService ahora entra en una segunda entrada en un segundo factor (164.312 (d)). Cuando uno está le debe crear la sesión pero retiene su única clave, devolviendo un el desafío de corta duración en su lugar - una sesión para la que nadie tiene una OTK para inalcanzable. Este BFF esperaba un oneTimeKey incondicionalmente, por lo que un desafío de MFA cayó en la rama de "no se haya recibido la clave de sesión" y haya aparecido al usuario como un 500. Ahora reconoce el desafío y pasa mfaRequired/mfaToken al cliente. /api/login/mfa lo completa. Desde el OTK en adelante reutiliza el inicio de sesión existente La entrega de la ruta literalmente *** de Redis, galletas descifradas, despedidas, establecer el nueva, porque dos implementaciones de la sesión se derivarían y la utilizada A menudo sería el que se pude. Un código equivocado devuelve el 401 con mfaRequiredo todavía true y el mismo mfaToken: SecurityService deliberadamente no consume el desafío de falla, por lo que el el usuario vuelve a intentar el código en lugar de la contraseña. Forzando una contraseña sobre uno La gente termina apagando el MFA. Inerte hasta que alguien se inscriba; nadie lo ha hecho.
· VOIPService
Persiste en el rastro VOIP PHI a phi-access-log
Grabaciones de llamadas, audio de correo de voz y transcripciones fueron auditadas en el registro a través, que mantiene 14 días en contra de una obligación de seis años de 164.528 y no puede ser preguntado por el recurso, así que "quién escuchó esta llamada" se mantuvo incontestable Incluso mientras se grababa. Cablear JpaPhiAccessLogWriter como escritor frijol desplaza la caída de Slf4j que PhiAccessRecorder resuelve a través ObjectProvider.getIfUnique, por lo que los sitios de llamadas existentes de LlevarAuditor son Sin cambios. Los buques de entrada de los buques de entrada de los buques de entrada en esta misma comisión por necesidad: el bean needs PhiAccesLogRepository, y la lista de escaneo explícito es lo único que eso lo crea. Declarar uno sin la otra falla en el inicio de contexto.
· AIService
Persista conversación de IA PHI acceso a la pista de acceso a phi-access-log
Las conversaciones de ayudantes almacenadas son las lecturas las que menos pueden permitirse un día, Corror de registro incuestionable: el módulo se encuentra fuera del límite de cumplimiento, por lo que Persisten indefinidamente los avisos a los prestatarios y una contabilidad de 164.528 tiene que ser montado exactamente a partir de este sendero seis años después. ya falla cerrada en una escritura que no puede hacer, lo que sólo significa algo una vez que la escritura aterrice en algún lugar duradero. Declara el jpaPhiAccessLogWriter bean y añade com.kamo.z.shared.phi.audit a EnablejeJpaRepositorios en el mismo compromiso. La biblioteca deja al escritor los servicios no todos los servicios no lo construyen, lo que hace el frijol y la entrada de escaneo un solo cambio indivisible - las hojas solas del frijol PhiAccessLogRepositorio sin definición de frijol y CrashLoops el servicio.
· MediaService
Persist MediaService PHI acceso sendero de acceso a phi-access.log
Las lecturas del mensaje de chat se grabaron a través del escritor de Slf4j, que pone el sendero de 164.312 (b) en un flujo de registro de 14 días contra una retención de seis años obligación y deja "quién lee esta conversación" sin respuesta, desde un tronco La corriente no puede ser cuestionada por el miembro o por el recurso. El JpaPhiAccessLogWriter bean y el com.kamo.z.shared.phi.audit entrada en HabilitarJpaRepositores se envían juntos deliberadamente: "ComponentScan (com.kamo") recoge la configuración, pero la lista de reposipos es explícita, por lo que el frijol sin la entrada de escaneo significa PhiAccessLogRepository no tiene frijol y el contexto no empieza. ChatMessageAccessAuditor no necesita ningún cambio . PhiAccessRecorder resuelve a su escritor a través de ObjectProvider.getIfUnique, por lo que el escritor de la JPA desplaza el retroceso de Slf4j en cada sitio de llamadas existente.
· SecurityService
Inyecte la clave de cifrado secreto TOTP
Mapas de kamo.mfa.secret-key by Spring's relajado, y es lo que MfaEnrollmentService utiliza para cifrar los secretos TOTP almacenados en reposo. Sin ella el servicio todavía comienza deliberadamente, de modo que el despliegue del código y Configurar la clave no es una operación atómica a través de la plataforma, sino La inscripción lanza en lugar de escribir un secreto de segundo factor en el claro. Eso degrada la función, nunca el servicio. Clave generada en elcluster (32 bytes aleatorios, base64) como el secreto de la tecla .mfa-c-tecn .; el valor existe sólo en Kubernetes y nunca se imprimió ni cometió. Rotating invalida las inscripciones existentes, por eso es su propio secreto en lugar de estar doblado en uno existente.
· DocsService
Persiste en el rastro de auditoría PHI de este servicio a la base de datos
DocsService sirve bytes de documentos, por lo que su rastro es lo que una contabilidad de La información de menos de 164.528 es realmente montado a partir de. Estaba escribiendo a un 14 días. Corredor de tronco contra una obligación de seis años, sin superficie de consulta. El frijol y el "EnableJpaRepositorios" en la misma comisión deliberadamente. JpaPhiAccessLogWriter no está anotado en la biblioteca precisamente. los servicios optan en uno a la vez; declarar el frijol sin el escaneo a juego es lo que tomó cada login en la plataforma hoy temprano, y separando estos dos Las ediciones a través de los commits reproducirían exactamente ese fallo.
· kamo-shared-library
Ruta de auditoría duradera - persist El acceso PHI, solo apéndice
Consag en evidencia la línea de registro no 164.312 (b). La capa de captura ha sido cableada a lo largo de siete servicios durante un tiempo, pero escribió a través de Slf4jjiAccessLogWriter Retención de 14 días contra una obligación de seis años, e incuriosa. El control era arquitectónicamente presente y probológicamente inútil. PhiAccessLog es solo en apéndice: "PreUpdate y "PreRemove refuse muton", porque un el rastro de auditoría que la solicitud puede editar no es prueba. La media de la base de datos (REVOKE UPDATE/DELETE) está en la migración KamoInitializer. Lleva identificadores y nunca contento, y una prueba afirma que la entidad no tiene Campo en forma de contenido. Un rastro que reproduce lo que simplemente ha reubicado el PHI en una segunda tienda que por diseño nunca se elimina. JpaPhiAccessLogWriter no se anota deliberadamente como un frijol. Cada servicio componentes-escansa com.kamo, por lo que un estereotipo haría que todos los 40 libras lo construyeran, y ya que necesita un repositorio cada uno tendría que añadir este paquete a su propio explícita "EnablearJpaRepositorios lista o no empezar". Ese error exacto se llevó cada login en la plataforma hoy temprano. Un servicio que quiere una auditoría duradera declara el frijol y añade el escaneo; el resto mantiene el Slf4j por defecto no afectado. SharedLibBeanSafetyTest hace cumplir esto. Los campos se truncan en lugar de dejarse tirar. En un acceso cerrado por falla un excepción aquí rechaza la lectura del usuario, por lo que una URL patológica o agente de usuario 4KB perder la fila también negaría el acceso legítimo. La capa de auditoría nunca debe ser la cosa que rompe el producto. La tabla ya existe en el grupo (KamoInitializer fb89b3d), por lo que nada está armado.
· InitializerService
Crear el rastro de auditoría duradero . . . . . . . . . . . . . . . . . . . . .
Hasta ahora el acceso PHI sólo se registraba en una corriente de registro con retención de 14 días contra una obligación de seis años, y sin superficie de consulta. Una contabilidad de Las revelaciones por debajo de 164.528 es una consulta; stdout no se puede interrogar. Los índices se eligen para las tres preguntas realmente realizadas: todo lo que se tocó un registro, todo lo que un miembro de la fuerza laboral tocó en una ventana, y todo en un inquilino en una ventana (la revisión de actividad de 164.308 (a)(1)(ii)(D). REVOKE UPDATE/DELETE es la mitad de la base de datos de sólo apéndice;: "PreUpdate/"PreElipar" la entidad es la mitad de la aplicación. Cualquiera de los dos es débil. La guardia de la entidad es editado por la cruda SQL, una beca se puede re-añadir, pero juntos la aplicación en ejecución No puede reescribir en silencio una fila de auditoría. Mejor esfuerzo: CockroachDB deja a un dueño de mesa retener privilegios, por lo que un fracaso se registra en lugar de fatal. Cuadro verificado presente con las 14 columnas y los tres índices antes de la La entidad fue empujada, por lo que ningún servicio puede construir contra un mapeo sin tabla.
· kamo-shared-library
Casa de la menta del encanto universal (ULI) - tienda el org LEI
Añade el HMDA ULI a la exportación LAR. UliMinter construye la ULI = org LEI(20) número de préstamo de dos ISO 7064 MOD 97-10 dígitos de cheque (Mod97CheckDigit - el IBAN algoritmo, transcrito de Reg C 12 CFR 1003 apéndice C y pegado contra su example de trabajo, NO la variante MERS Luhn). Nueva columna de la Organización.lei (KI-aplicado) con una ruta de escritura de parcheado; HmdaLarService emite el ULI cuando el org tiene un LEI válido - un número de préstamo, de lo contrario DEGRADES al número de préstamo desnudo para que La malformada ULI la plataforma CFPB rechazaría nunca está escrita. LoanIdentifierType ganadero UNIVERSAL.LOAN-IDENTIFIER (derivado: org LEI - LoanFile.loanNumber - check).
· kamo-internal
Estal el org LEI en la web de la empresa (activa el HMDA ULI)
La tarjeta de información de la empresa obtiene un campo de Identifier de la Entidad Legal (20-char, superior- cased), enviado a través de la org existente PUT - OrganizaciónController deserializa en la Organización.lei y el Servicio de Organización lo aplica. Con un juego de LEI, HmdaLarService amasa el prestatario Universal Loan Identifier; sin uno se degrada al número de préstamo desnudo, así que esto es lo que convierte la ULI en per org.
· kamo-internal
Promover una versión directriz ingerida de la consola
Para un documento de origen de GUIDELINE, el panel de ingestión muestra un "Promota como tarjeta de la versión (producto seleccione la etiqueta de revisión). La tarjeta de hoja de tarifas ahora está oculto para los documentos guía también. ingestionApi.promoteDis de ida ylínea el nuevo relevo.
· SecurityService
Relevo de la puerta para promover una guía ingerida en una versión
MlosCatalogController/Client gain gain promote-guideline, reflejando la promoción- elegibilidad: puerta de acceso divino, organizaciónId-serservado-amplbo a través de escritura().
· kamo-register
Auto-login después de la verificación de correo electrónico a través de una sola vez
Cuando /verify-email responde con el aditivo otk . autoLoginHost campos (previstos por SecurityService en la primera verificación), enlace profundo directamente a https://-host/validate?otk=... los usos de flujo de entradas y aterrizaje del nuevo miembro en el hogar interno (FirstOrgCta) en lugar de rebotarlos al formulario de inicio de sesión para un retipo de credencial y un tercero ***. - PostCompletionScreen (caráril de código - tarjeta verificada): sesión automática redirectificar con la red de la página de inicio de sesión mantenida como la devolución cuando el OTK está ausente; despida el evento verificado por correo electrónico existente primero, Además de un nuevo evento de análisis de auto-sesión en la ruta de OTK. - /verificación (camino de enlace-email): la respuesta siltica-verify es la uno que lleva la OTK, por lo que redirecciona de la misma manera; el registro El control de la pestaña de SSE mantiene su regreso de acceso (el OTK es sencillo usar y vive en la pestaña de enlace). - registerApi: verificar las llamadas ahora mecanografiadas como VerifyEmailResponse.
· kamo-marketing
Fase 3-4 - convertir el tráfico que ya llega
- cambio de destino (2) consigue un bloque de conversión; las carreras muestran el estado honesto de no aperturas - /subscribir página: intención del plan de post-registro aterriza en algún lugar real (era un 404 en intención de pago) - Precios: a precio de vida FindYourPlanQuiz, de página media CTA, tira de tranquilidad, división CTA externa/internal, de contacto empresarial uses ?topic=Sales (suject se dejó caer en silencio) - página principal: Retiro recientemente de cambio real, Características/UseCases en enlaces, JumpToBar coincide con las secciones reales y ofrece registrarse - /Ficha de programa de diseño-pareja de los socios; sobre conseguir una sección fundadora/construida en abierto - SEO: todos canónicos - www. Locale-prefixed URLs de 200 servicios; per-locale hreflang , x-default en el 4 plantillas programáticas; locales no indexados sin traducir; loc/alterns fijos (sólo enesados); robots.txt deja caer el mapa del sitio JSON. Bloqueo de cálculo de catálogo; metadatos de blogs lee traducciones reales (todos los puestos previamente indexados como "Artículo No encontrado") - llms.txt/llms-full.txt: precios reales, URLs estampadas en UTM (las referencias de la IA se convierten en un canal medido) - página de integración de jaque de hielo profundizada en una página de destino real (la entrada orgánica número 2)
· SecurityService
Mint autologin OTK en la primera verificación de correo electrónico
Completar la verificación de correo electrónico del asistente del registro (6 dígitos de código o enlace de correo electrónico) ya prueba la posesión de la bandeja de entrada, sin embargo el nuevo usuario era rebotadas en la página de inicio de sesión para reescribir credenciales y resolver un tercero ***. Reutilizar el entrar- como primitivo en su lugar: en el PRIMER exitoso verificación, cuando el usuario verificado tenga una afiliación elegible en su registro org, mint a login-equivalent *** via PostAuth***Service y envolvlo en el mismo monouso 180s OTK que la página de kamo-internal /validato ya consume. - EmailVerificationService: verificar los métodos ahora devuelve VerificationResult(userId, firstVerification) por lo que se vuelve a verificar una cuenta ya verificada (por ejemplo, después de un reenvío) nunca podrá re-pretar; resoluciónRootDomain expuesto paquete-estático para la resolución de host. - ************* falla cerrado en cualquier falta o membresía inelegable (registro /team PROSPECTs mantener el login redireccione), dominio no resuelto, configuración SSL de dominio personalizado incompleto, o error - el éxito de verificación en sí nunca se ve afectado. - /verify-email response gains additive otk . autoLoginHost fields; la forma sin cambios cuando se salta la acuña.
· kamo-marketing
Módulos de contenido relacionado - registro CTA retargeting en plantillas programáticas
Soluciones, integraciones, alternativas y plantillas de glosario eran orgánicas callejón sin salida: sin vínculos internos relacionados y "Empieza libre" CTA apuntando /precio en lugar de inscripción. - Nuevo bloque compartido de Content (varias de la tarjeta/pill) usando el i18n Link para que se conserve locale; cada enlace relacionado se incensora relación con el clic con el target href como elemento del evento. - Soluciones: 3-4 industrias hermanas de INDUSTRY-CATEGORIES más hasta 2 integra la copia de la industria gotas de nombre-dros. - Integraciones: 3-4 integraciones de la misma categoría, recargadas para pequeños categorías; de conversión tira de borro por encima del pie de página CTA. - Alternativas: "También compara" chips para los otros 8 competidores, hasta 2 páginas comisariadas /soluciones, migración-angle final CTA (switchFrom key), y una tira deslucido de conversión. - Glosario: términos relacionados llenos a 3-4 a través de la parte de la misma categoría , más Eslabón de glosario completo. - Todos los CTAs sin inicio primarios ahora golpeados **************** con cta-start-free / instrumentación de ubicación; /car de precio se mantiene accesible como a Enlace secundario de fijación de precios de precios en cada plantilla.
· SecurityService
Inicio de sesión de la puerta en el segundo factor . . . . . . . . . . . . .
Completa el MFA. El núcleo aterrizó en la biblioteca compartida de kamo; este es el alambre que se convierte configuración almacenada en una puerta real. La puerta es pequeña porque el inicio de sesión ya tenía la forma correcta: crea el *** sesión y se lo entrega al cliente SOLAMENTE como una clave de una sola vez en el cuerpo de respuesta. La cookie está en el inicio de sesión. Así que todo el mecanismo es retener la OTK hasta el el segundo factor está probado. Una sesión para la que nadie celebra una OTK es inalcanzable, que significa que la creación de sesión en sí misma no necesitaba cirugía alguna. MfaChallengeService sostiene el ***Id bajo una ficha opaca de un solo uso, de 5 minutos. El cliente nunca recibe el identificador de la sesión, y el símbolo no vale nada sin un código. Corto a propósito: un estado medio autenticado sobrevive a un compromiso de contraseña. POST /api/security/mfa/challenge completa el login, lanzando el OTK para el El cliente reanuda exactamente el flujo que habría tenido sin MFA. Un código equivocado no libera nada y deliberadamente NO quema el desafío, porque forzar un usuario de vuelta a través de la contraseña sobre un error tipo es como MFA se apaga. El El propio cierre de la matrícula cuenta esos fracasos. Un éxito consume el reto así no se puede volver a jugar. Los códigos de recuperación lo completan también, y nunca se prueban también como un TOTP. Los endpoints de inscripción (/rollo, /confirm, /status) requieren una sesión. factor es una acción autenticada en su propia cuenta. /desafión deliberadamente lo hace no, porque su llamante está a mitad de camino por definición. INERT TODAY: La puerta se dispara sólo ha confirmado a Factor y nadie está inscrito, así que la ruta de inicio de sesión existente es porte-idéntica. Ese es el punto que esto puede desplegarse. antes de que cualquier cliente lo apoye. El endpoint gatechet atcogió a mis propios tres manejadores de inscripción como desprotegidos. Ellos son custodiados, a través de un usuarioIdFrom Ayudante de la misión no puede seguir el escaneo de un method-protodo, Así que la solución fue enseñar GUARD que ayudante en lugar de basarlos. Yo también documentada la limitación inversa expuesto el mismo ejercicio: completoChallenge borrar el escaneo sólo porque resulta que toca kSessionService.
· kamo-marketing
Fase 0-1 - instrumento el embudo real, desbloquear la primera pintura
- forward data-* accesorios a través de MagneticButton/RippleButton (eventos nunca llegaron al DOM) - instrumento compartidoNaviación, Héroe, PreviewBanner, sección CTAs; ?ref= en cada enlace de registro - borrar muerto ************* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - página principal: no preloader puerta, secciones SSR'd, secciones 16o10, precios de catálogo en vivo en Precios - registro honesto: un registro de enlace profundo de campo de correo electrónico con prelleno; términos reales/eslabones de privacidad - matar 10MB favicon.svg . logo.svg, drop react-world-flags (3.7MB) para las banderas de emoji, drop three.js deps - generación estática (sin fuerza-dinámico), cabeceras de caché larga para /img /logos /favicon - análisis: vital de rendimiento de datos encendido, DNT drop removed; chat widget perezosoDescarga; preconexiones - héroe: local bgs render inmediatamente (teme swap in-bloqueing), Watch Demo /demo, Hable con nosotros CTA, estadísticas honestas
· kamo-shared-library
Segundo factor TOTP de los . . . . . . . . . . . . .
La evaluación del cumplimiento se llama la ausencia de un segundo factor descalificador por sí solo, y bajo la Regla de Seguridad de 2025 NPRM MFA deja de ser abordable en A todos. Nombre de usuario de un solo factor.password era la única ruta de autenticación interactiva en la plataforma. TOTP se verifica con los vectores de ensayo RFC 6238 Apéndice B en lugar de contra valora esta aplicación producida. Esa distinción es todo el juego de pelota: a TOTP casero que solo concuerda consigo mismo autenticando el Google de nadie Authenticator, y el fallo sale a la superficie en el despliegue con cada usuario bloqueado. Escribiendo esas pruebas inmediatamente atrapada que había pasado unix segundos donde el HMAC quiere un contador desconectado por un factor de treinta y tanto generarAhora lo hace el La división y ninguna llamada tiene que recordarlo. Propiedades que separan la MFA real de la apariencia de la misma, cada una atrapada por un Ensayo: - Los códigos son de un solo uso. Un TOTP se mantiene válido para todo su paso de 30 segundos, así que sin lastsedTimeStep un código interceptado o sobre el hombro funciona de nuevo dentro de su propia ventana. Un paso antes aún dentro de la tolerancia se rechaza también, una vez más tarde se ha aceptado uno. - Las inscripciones no confirmadas no cuentan. Iniciar la inscripción y abandonarlo antes de probar la posesión no debe cumplir un requisito de MFA. - Lockout es real: un código correcto se rechaza mientras está bloqueado, de lo contrario el cierre patronal es decorativo. - Comienza la inscripción se niega a reemplazar un factor confirmado. Silencimente sobreescribiéndolo dejaría a cualquiera que llegara a la variable permuta cambiar el autenticador de la víctima por los suyos. - El secreto está cifrado en reposo y devuelto exactamente una vez; los códigos de recuperación son Hashed y de un solo uso. Ninguno de los dos es recuperable por el personal, por lo que un dispositivo perdido significa re-inscripción - el comercio correcto de una credencial que elimina la contraseña. - La verificación se compara en tiempo constante. String.equals regresa en el primero dígito diferente, que filtra cuántos dígitos principales eran correctos y colapsa a 10-6 espacio en aproximadamente 60 conjeturas. Los códigos de recuperación son SHA-256 en lugar de bcrypt deliberadamente: 80 bits de La entropía generada por máquina no tiene diccionario contra el que estirarse, y un hachillo lento sólo compraría una denegación de servicio en la ruta de inicio de sesión. Ya existen cuadros en el clúster (KamoInitializer c65a233), por lo que nada está armado por este empujón. Los endpoints de inscripción y desafío son el siguiente paso; nada llama Esto aún.
· kamo-login
Añadir análisis de análisis . ?registro de bienvenida 1 aviso de bienvenida
- Análisis de montajeComcomponente cliente de la analítica en el diseño raíz: siguiente/script cargador para analytics.kamocrm.com vistuado a través de data-domains a login.kamocrm.com solamente (sitio está marcado en blanco; dominios de org inquilinos deben nunca se rastree), con ventana vigilada.analytics?.escritidos de pista. - Rastrear un evento de login-éxito justo antes de que la post-login redirona fuegos. - Manipillo ?registrado=1 del sitio del registro con un aviso de éxito ("Tu cuenta ha sido creada. Iniciar sesión para continuar."), rellenando el campo de correo electrónico de ?email= . mismo patrón que email-verified/linked.
· InitializerService
Crear las tablas de segundo factor
Backs UserMfaInscripción y MfaRecoveryCode en la biblioteca compartida de kamo . . . . . . . . . . . . . . . . . . . . . . . . . . . Persona o Entidad Autenticación, la brecha que la evaluación de cumplimiento se llama descalificar por sí solo. Ambas tablas verificadas presentes en el cúmulo con la forma esperada antes de la entidades fueron empujadas, por lo que ningún servicio puede construir contra un mapeo cuya mesa sí hace no existen. Tres detalles que vale la pena no perder ante una simplificación posterior: - SECRET-CIPHERTEXT sostiene el texto de cerdo. El servicio se niega a escribir una inscripción cuando no se configura ninguna clave, en lugar de degradarse al texto plano. - LAST-USED-TIME-STEP es lo que hace un código de un solo uso. Un TOTP es válido para su enseando el paso de 30 segundos, así que sin él un código interceptado se repite dentro de su propio ventana. - Los códigos de recuperación consiguen una fila cada en lugar de una lista serializada, así que canjear uno es una actualización específica en lugar de una lectura-modificar-escritura sobre el conjunto de la La concurrencia es exactamente cómo se usa un código de "uso único" dos veces.
· VOIPService
Requiere VIEW-CALL-LOGS para la reproducción de llamadas en orgs de manipulación de PHI
Grabación y reproducción de correo de voz verperó el alquiler y nada más: cualquier miembro de el org propietario podría sacar cualquier llamada en ella, transcripción incluida, en extensiones que no eran de ellos. Exigir directamente a VIEW-CALL-LOGS no era una opción. existen en el enum y no se le conceda a nadie, así que encárselo para todos toma el teléfono blando lejos de los miembros que lo usan hoy. Por lo tanto, la aplicación se ajusta a la frontera de cumplimiento que lo hace necesario. Para un org con mangosPhi set, grabación de audio, pistas por pierna, audio de voz y la transcripción dentro de los metadatos de grabación requiere la derecha; la negativa es un 403 y aterrizan en la pista de auditoría de PHI a través de las grabadoras de caminos desmentidos, así que La sonda es visible. Por cada otro org de todos los hoy en día, nada cambia, que es lo que los ************* cajas denuncie. Consecuencias conocida: la sesión de token de corriente ?st = lleva sólo (orgId, memberId), así que bajo un inquilino de PHI, la ruta de la etiqueta de audio falla cerrada hasta que el símbolo lleva la subvención. Grabado en una prueba en lugar de dejarse descubrir.
· kamo-internal
tronco automático después de la inactividad (HIPAA 164.312(a)(iii))
Una sesión que quedó abierta en una estación de trabajo desatendida se quedó utilizable indefinidamente. Esto lo termina después de 15 minutos de no interacción, con una advertencia de 60 segundos Así que nadie es arrojado a mitad de tarea. Las reglas de tiempo viven en app/lib/idleTimeout.ts como controlador puro (unidad probado con temporizadores falsos); el componente es sólo una capa de entrada. Tres decisiones Vale la pena saber: - Sólo puntero, llave, rueda, desplazamiento, ternera y visibilidad los eventos cuentan como presencia. Marcos de Websocket, votación y temporizadores no hacen pantallas internas de kamo relájense constantemente, y tratando eso como un humano en el escritorio hacer el control decorativo. - La presencia se mide en todo el origen, porque el sujeto del control es una máquina desatendida, no una pestaña desatendida. El trabajo en un solo control mantiene su hermanos vivos; cuando cada pestaña se calla, caducan juntos, así que no arreglo de pestañas deja una sesión útil en una pantalla abandonada. - El final de una sesión se anuncia a través de las pestañas. El *** id vive en cada uno Sesión de tabStorage sobre una sesión compartida de Redis, así que un hermano que nunca es le dicen que sigue mostrando un espacio de trabajo autenticado durante una sesión que ya no existe. Tanto el cierre automático como la página ordinaria /logout ahora se emiten. La terminación pasa por la página /logout existente . SecurityService logout, Eliminación de la tecla Redis, despeje de cookies, hacia adelante a kamo-login . . . . . . . . . . . . El estado cliente en paz deja la sesión del servidor con vida y no es un accesorio. Copia enviada antes de esto en kamo-traducción-dictionary (c39dfb9).
· DocsService
Auditoría WOPI content endpoints y cerrar las últimas brechas de servidos de byte
WOPI sirve documentos completos a Docs y no grabó nada. Apuestas /wopi/files/-id-/contenidos es la misma revelación que /download, retransmitido el de la misma manera a través de APIService, sin rastro en absoluto. el editor era imposible de rastrear. La identidad viene del token de acceso WOPI, no de una sesión de ***: DocumentoController lo adora con el org y miembros del miembro de apertura y ids y Docs lo devuelve en cada llamada de reserva, por lo que esas afirmaciones son la única identidad Estos endpoints tienen, y el único chequeFileInfo ya autoriza en contra. El auditor los toma directamente en lugar de resolver un miembro en segunda vía que no estuviera en desacuerdo con el símbolo de la solicitud fue autorizada por. Una ficha que no se puede leer registros contra el centenés sin resolver en lugar de que se la cae. PutFile registra como VIEWW, no DOWNLOAD: un ahorro envía bytes en lugar de fuera, así que llamarlo una revelación contaría el GetFile que abrió el sesión, y VIEW falla abierta por lo que un disfraz de auditoría enfermista no puede destruir sin salvar trabajo. CheckFileInfo y las operaciones de bloqueo permanecen sin registrarse. Docs llama a ambos repetidamente a través de una sesión, que enterraría la fila Eso significa que los bytes realmente se movieron. El barrido para seguir por los caminos que servían byte encontraron dos más: - /api/docs/binders/.id-/render fusiona cada documento en un aglutinante en uno PDF. Es carga a granel en un envoltorio diferente y no registró nada; ahora un evento por documento incrustado, separadores y páginas generadas excluidas. - ******************* sólo escribió una fila de ImgLogDownload. Eso es un registro de imágenes-dominio leído por el panel de la historia de descargas, no el rastro de superficie cruzada - por lo que la contabilidad de las revelaciones mostró arroyos, exportaciones y plantilla PDF omitiendo el byte más utilizado del servicio camino. Ambos registros están ahora escritos; responden a diferentes preguntas. Sin entidad, "Column o cambio de biblioteca compartida".
· kamo-internal
Promover una matriz de elegibilidad ingerida de la consola
Para un documento de fuente de ELIGIBILITY-MATRIX, el panel de ingestión muestra ahora un Tarjeta "Promovir como matriz de elegibilidad": elegir el producto, tipo límite (MAX-LTV/CLTV/DTI), ocupación y propósito, y cada una de las filas FICO-limit aprobadas se convierte en una celda de elegibilidad, la puerta que permite que el producto tenga un precio. El Tarjeta de publicación de hojas de tarifa está ahora oculta para LLPA y documentos de elegibilidad (cada uno tiene su propio camino de promoción). ingestionApi.promoteElegiibilidad postes de la nueva relevación.
· SecurityService
Relevo de la Puerta para promover una matriz de elegibilidad ingerida
**************** gana promoción-elegibilidad, que se refleja promover-ajustes: puerta de acceso diádible, organizaciónEstampada servidor-serábado a través de Escribir (*), aguas abajo 4xx retransmiso literalmente.
· kamo-internal
Escritor UI - lista, editor de partidas, gestión de enlaces a compartir
Completa el sistema de cotización/estima: el personal ahora puede construir una cotización, precio, menta un enlace de compartir y enviarlo por correo electrónico, todo desde el oleoducto. app/lib/quotesApi.ts cliente mecanografiado para la superficie de SecurityService **************** proxy, refleja el POS uno (X-***-Token passthrough) Lista de PipelineQuotesTab - filtro de estado, cableado como una sub-tab RETAIL la aplicación/commerce/quotes/[uid] ruta de detalle Con cita Editor PipelineRecordEnlace con detalles/paréntesis/capacidades de actividad CotarLineItemEditor reutilizable cuadrícula de ítem de línea QuoteShareLinkA menta, copia, correo electrónico, revocación, conteos de vista QuoteLineItemEditor es deliberadamente su propio componente. El oleoducto ya lleva cinco editores de ítems de línea rodado a mano separados (órdenes/nuevo, OrderEditDialog, la cuenta de la red de pedidos, la mesa de contratación, trabajo de orden de trabajo / partes) sin nada compartido entre ellos; un nuevo trabajo debería basarse en esto en lugar de añadir una sexta. Los totales del editor son un PREVIEW LOCAL y están etiquetados como tales mientras están sucios. Ellos espejo QuoteTotals exactamente los descuentos de línea primero, luego el descuento de nivel de cotización, entonces gravar y enviar, por lo que la vista previa nunca está en desacuerdo con el documento guardado, y la respuesta del servidor los reemplaza en cada salvado. Nada aquí puede establecer un total. El impuesto se mantiene honesto también en la interfaz de usuario: el modo ENGINE hace que "No está configurado" en lugar de un figura inventada, que coincide con lo que informa la API. Un enlace de acciones recién acuñado se muestra una vez con una advertencia de copia-ahora, porque sólo su Se insiste SHA-256 y la URL realmente no se puede recuperar. La lista puede mostrar un Prefijo sitgráfico y nada más. Derechos de todo: MANAGE-QUOTES para crear/editar, SEND-QUOTES para acuñar o revocar enlaces. Citas de terminal **************** bloquear al editor y ofrecer una revisión en su lugar. Con cable en vivo a la API desde el principio. No generarMock accesorios, a diferencia de varios fichas de los oleoductos hermanos. Si las tablas de presupuestos no existen aún, las superficies de error honestamente en lugar de ser enmascarado por filas de marcadores de posición.

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