Saltar al contenido
KAMOUniverse

Changelog

Qué hay de nuevo.

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

  1. · kamo-shared-library

    Alcance de api-key de API.SIGNATURE . EsignGenericEnvelope.origin

    Aditivo, sin top de versión: - ApiKeyScope.API.SIGNATURE - puertas de la API programática de firma electrónica (Business) - EsignGenericEnvelope.origin (EsignUsageOrigin, nullable) - registra si un El sobre se creó a través de API vs MANUAL, por lo que se completó correctamente el medidor de firmas (La API cuenta para el sobrebios; MANUAL nunca lo hace). Columna añadido a la diá vía idempotente ALTER de antemano.

  2. · kamo-internal

    Acción de Enviar por firmar y el estado de los sobres en el editor de documentos

    Añadir un botón 'Enviar a la firma' al encabezado del editor de plantillas que abre un diálogo para enviar el documento a los destinatarios y rastrear el estado de la firma, llamando el nuevo motor ESigService /api/esig/envelopes. - Rutas Proxy (OTK via generateOTK, refleja las plantillas proxy): POST/GET /api/esig/envelopes, GET [uid], POST [uid]/voide, POST ************* - EnviarForSignatureDialog: Enviar pestaña (reseñas receptoras, mensaje, caducidad) Pestaña de estado (lista de sobres por tenta, fichas de estado, vacío/reenviar) - Button desactivado mientras la plantilla tiene cambios no salvados - i18n vía next-intl *************

  3. · ESigService

    Sobres genéricos crean/envíen motor (lado de la remitente)

    Añadir las unidades OTK-authed /api/esig/envelopes API kamo-internal para enviar documentos para la firma, reutilizando las mismas entidades compartidas el público Firmar API lee el aditivo, org-agnostic reemplazo para el préstamo- KamoLOS/EsignClient crear ruta. - POST crear y endear a partir de una plantilla: construye EsignGenericEnvelope (AD-HOC), un EsignEnvelopeRecipiente por letrera con un nuevo token de acceso, y Envíe un correo electrónico a cada uno de los enlaces de firma /s/envá/orecipient.?t=-token- (best-effort) - Lista de GET (panboard de envelope) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - POST .uid./void and .uid./recipients/.rid-/resend (rota la ficha) - Invitar a los correos electrónicos delegados compartir EsignEmailClient.sendInvite; signer-r-ruta enlaces corregidos a /s/-env-/-recipiente-.

  4. · ESigService

    Motor de API de firma pública para let sign.sign.pink

    Implementar la API de la aplicación kamo-signer, implementar /apipi/esig/* firma de la API the kamo-signer, Convirtiendo el firmante en vivo de la bañera de preesperación en un backend de trabajo. - validar (sesión de señalización receptora - sesión de firmantes), sesión, consentimiento, stepup/start-verify (email OTP), presentar, decodificador, delegado, documento - Sesiones de señalización de respaldo de redispuestos (X-Signer-Session), distinta del personal OTK - Documentos bytes a través del oleoducto Img/MinIO real (template imgId - . convertido-PDF ImgDat --- MinIO), no el nunca cableado /api/imagen/imagen/blobs stubs - PDFBox plano: valores de campo superpuestos - imágenes de firma en el diseño coordenadas, páginas de certificados de auditoría de Afinación E-SIGN/UETA; PDF firmadas almacenadas en MinIO bajo el sobre firmadoBlobId con grabado SHA-256 - Esign-sólo AppendSignature filas de auditoría . EsignFieldValue persistencia - Emite ********************** La medición de la API sigue en el número de . - Marca resuelta de la Organización . OrgDomain para la termamanización de primera pintada - OTKAuthFilter bypasses /api/esig/public (token-authed, not staff OTK) Sólo aditiva; existente /api/esig/templates/* intacto.

  5. · kamo-internal

    Producto de plataforma se deslfaba en Pestaña de Organizaciones

    Superficie la designación de la plataforma-producto donde pertenece a la plataforma Organizaciones. Añade un interruptor cerrado por org (discapacidado para el org de nivel superior), un diálogo de confirmación en el que se explique el efecto de derecho, un 'producto de la plataforma' chip, una advertencia sin catálogo, actualización optimista y snackbar de errores. Todas las cuerdas a través de la siguiente.

  6. · BillingService

    Gestión de la Organización.isPlatformProduct de la Plataforma . Orgs

    PlatformAccountSummary expone isPlatformProduct . hasSubscriptionMarket; nuevo PUT ************* (plataforma-admin cerrada) pone la bandera e invalida los derechos de los miembros de la org (su producto raíz, y por lo tanto características, cambio). El org de nivel superior es la raíz implícita y no puede si te cambiaran.

  7. · kamo-shared-library

    Organización explícita.isPlatformProduct como señal de derechos-raíz

    Reemplazar el heurista derivado 'propete un mercado SUBSCRIPCION' con un explícito, bandera de propiedad de admin. Un producto de plataforma (por ejemplo, sign.pink) es una marca blanca producto la plataforma opera y es su propia raíz de derechos; un cliente org . incluso uno que dirige su propio mercado SUBSCRIPTION para revender a sus clientes no, y se mantiene con derecho a la plataforma. EntitlementRootResolver ahora lee el Bander (más la raíz implícita de nivel superior) y ya no depende del mercado la propiedad. Añadir la columna is-platform-product (BOOL DEFAULT FALSE) KamoInitializer para crearlo antes de los servicios que seleccionen el despliegue de la Organización.

  8. · SecurityService

    Ámbito de aplicación de los derechos de los miembros a la raíz del producto, no KamoCRM

    DerechoServicio ahora resuelve el accesorio de cada miembro a través de de derechoRootResolver (después de ancestros o autos) en lugar de caminando hasta el org de nivel superior. El piso de libre acceso y la bandera de acceso al producto derivar de esa raíz, y isKamoCrmSubscription se convierte en suscripciónGrantsRootAccess (plan-org vs root, nunca la cuenta de facturación). Miembros: Gana productoRootOrgId para que los consumidores apuesten el acceso contra el producto adecuado. BillingSetupService obtiene el mercado. Plan gratuito del producto de la nueva org raíz mientras se mantiene la cuenta de facturación en el KamoCRM de primer nivel org, es decir, el Padre posee facturación, el niño puede ser dueño del producto/mercado. El comportamiento no cambia hasta que un org posee realmente su propio mercado (KamoCRM es el sólo dueño del mercado hoy en día, por lo que cada miembro todavía resuelve a él).

  9. · kamo-shared-library

    Resolver derechos por producto-root org, no de plataforma de primer nivel

    Introduce EntitlementRootResolver: el ancestro-ancestro-a-tuyo más cercano-propiedad-propiedad de una org (su raíz de producto), cayiéndose de nuevo a la plataforma de primer nivel. Esto decouples *qué producto tiene derecho a* (propietario de mercado/plan) de *quién paga* (cuenta de facturación) y de la zona de nivel superior, por lo que un producto de marca blanca org como sign.pink que posee su propio mercado se convierte en su propia raíz de derecho. ************* ahora obtiene la línea de base libre desde la laga raíz del producto (no encontrarFirstByIsopLevelTrue), y resuelve los planes por el producto/market org en lugar de la cuenta de facturación org. Atacar adelante compatible: KamoCRM es actualmente el único propietario del mercado, así que cada org existente se resuelve exactamente como antes de que el comportamiento sólo diverge una vez a El subárti es dueño de su propio mercado. Aditivo; sin bulto de versión.

  10. · kamo-shared-library

    Añadir recipiente de sobre, valor de campo, entidades de estado de la situación del destinatario

    Check in in-progress as as model: EsignEnvelopeRecipiente (Erepo), EsignFieldValue (Erepo), EsignRecipientStatus y una actualización ESignSignerType. Aditivo; sin bulto de versión.

  11. · kamo-shared-library

    Añadir EsignUsageRecord para el uso de la firma de medición

    Nueva entidad de uso solo a apéndice (espejos AiUsageRecord) emitida en la firma completar. Sólo las firmas de origen de la API cuentan para el presupuesto mensual incluido cuota de sobreedad (sign.pink Business: 40/mo incluido, luego $0.20 cada uno); MANUAL Las firmas de un solo usuario se graban pero nunca facturadas. apoya la agregación mensual; reportado.stripe hace la presentación de uso de Stripe idempotente. Sólo adicional; sin bulto de versión.

  12. · ConversionService

    Preservar la relación de aspecto, nunca estirar logotipos no cuadrados

    Favicon PNG/ICO se produjeron marcos con keepAspectRatio (false), estirándose cualquier logotipo no cuadrado en un cuadrado distorsionado. Center-fit el logo en un lienzo cuadrado transparente en su lugar, preservando la relación de aspecto, por lo que los favicons miran correcto para cualquier forma de logocargado sin necesidad de una imagen de fuente cuadrada.

  13. · KlusterServices

    Signs de pre-seed.pink . www.sign.pink en STATIC-DOMAINS

    sign.pink es un nuevo dominio de ápice (marca de firma electrónica de consumo / marca blanca Kamo inquilino org). Cipex pre-seedex - www para que a Let's Encrypt cert, exista antes de primer tráfico HTTPS; *.sign.pink subdominios obtener por-FQDN certs dinámicamente cuando se golpea por primera vez, mismo mecanismo que *.priceturbo.com.

  14. · kamo-signer-monorepo

    Nueva aplicación de firma de firmas de firmas de montaje electrónico monorepúlpe monorepúr.

    Turborepo - pnpm espacios de trabajo monoreposipon vivienda reutilizable paquetes de señal electrónica extraído de kamo-internal más una nueva aplicación de kamo-signer ultra policiado. la experiencia de la segunda parte SIGNING (el diseñador/autor lateral se mantiene en kamo-internal). Paquetes: - Tipos de chilemos/esign-core - DiseñoData contrato de alambre, zod esquema, tiempo de ejecución Validación de campo, signStore (zustand) - Entradas interactivas de campo de campo de Kamo/esign-ui - campo/notario de lectura renderizadoras (forjados de kamo-internal FieldControl) - Reentrenador de página pdf.js (trabajador auto-organizado, sin CDN), tratos sensibles y correctos de rotación - Bootstrap de marca de "kamo/tema" (getThemePath, ThemeLogo, DynamicMetaLoader) - Ejecuador de navegación .kamo/api-client . server Redis/forwarding helpers - Kamo/config shared tsconfig / tailwind preset / eslint Aplicación (aplicaciones/kmo-signer): - signer de tokens (SIGNSESH httpSólo sesión, BFF handlers) - Bienvenido - Consentimiento (ESIGN/UETA) - eIDAS AES Subasta OTP - - Firma guiada - Finalización, todas las fases animadas (framer-motion, reducción de lamo consciente), primero móvil igual a escritorio, WCAG-mental - suite de captura de firma: sorteo / tipo de letra (tablos de escritura) / carga / adoptar-todo - multidocumento, decodificador, delegado/reasign, completo i18n (próxima-intl, 22 localidades) - modo de previsualización corretaje (no se requiere backend) . /.forgejo /k8s (HostRegexp signo.*, turbo-prune Dockerfile)

  15. · kamo-internal

    Empresa de ancho completo reescribir con vista previa en vivo

    LoanProductForm era una sola columna estrecha (máximo mediano: 880) con codificación dura Inglés por todas partes. Ahora utiliza el mismo patrón de empresa que la página de la oferta: Diseño: - Cabeza de gradiente de ancho completo con migas de pan, flecha trasera, insignia amable - Rejilla de dos columnas (6fr/6fr) en lgá, columna única a continuación - Forma a la izquierda, "Product Preview" en vivo a la derecha El lado de la forma: - Seleccionador amable como ToggleButtonGroup con descripciones (Instalación vs LOC), esta es la elección estructural que se remodela. el resto de la forma, por lo que merece protagonismo - Bloques de sección con iconos (Basics - Precios - Límites y Términos - Cumplimiento) - Tarifas introducidas en %, convertidas en bps en el alambre (no más "3600 = 36%") - Todas las etiquetas de campo a través de la siguiente versión: - Consejo de herramientas de recuento de días que explica ACT-365 vs ACT-360 La parte de la vista previa: - Tarjeta de héroe: chip tipo, chip de código de producto, nombre, titular, descripción - cuadrícula de estadísticas de 4 azulejos: tarifa, originación, tardío, tarifa NSF - Limites y términos de la cuadrícula (conscientes de especie: rango de frecuencia para la entrega, **************** para LOC) - Tarjeta de oferta de muestra (instalación): pago mensual, intereses totales, costo total, origen de la muestra en el punto medio de la gama principal - Chips de cumplimiento: estados permitidos (cap 24 chip de desbordamiento), pago automático requerido - descuento, encuadernación de la plantilla de pagarés - Footer Nota explicando cómo este producto fluye a la página de la oferta LoanProductForm ahora envuelve las páginas nuevas y edita. Envoltorios de página pass marketTítulo para que la migas de pan se resuelva limpiamente.

  16. · kamo-internal

    Disición de dos columnas con panel de vista previa en vivo

    La nueva página de la oferta era una alta columna estrecha en pantallas anchas. el aporte de vista. Ahora utiliza CSS Grid con la forma en la izquierda (5fr) y un en vivo "Offer Preview" pane a la derecha (7fr) que se actualiza como operador tipos. Una columna en pantallas pequeñas (- lg). Lados de la forma: - Bloques de sección con iconos (Producto-Conservador de Monto - Términos Personalizados) - Campos de prestatario se apilan verticalmente (miembro id estado) en un más compacto presentación ahora que el espacio horizontal está reservado para la vista previa Avance lateral (sólo cuando se elige un producto): - Tarjeta de héroe con fondo de gradiente, chip tipo, nombre del producto, y titular legible por el ser humano ("$5,000 - 12 meses de pago de 14,99% APR" / "línea de crédito de 25.000 dólares de tipo 9.99%") - cuadrícula de estadísticas de 4 azulejos: principal, tarifa, pago mensual, plazo (instalación) o principal, tipo, período de empate, período de reembolso (LOC) - Desglose de la tasa (originación/tardía/nSF/anual) con chip "personalizado" cuando se trata de un Extracción se aplica - Grupo de cuadros resumido de gastos: desembolsado neto, intereses totales, costo total - Echaleto de horario de amortización: primero 3 hileras de 3 con una "N más" pagos"... fila de la brecha para las condiciones de 6 meses - Nota de recordatorio TILA explicando que el backend calcula la verdadera Tienda de APR el calendario real de las revelaciones en el momento de la presentación Todas las matemáticas son la amortización de línea recta del lado del cliente (P . r . . . . . . . . . . . . . . . . . ((1-r)-n - 1)) - una vista previa fiel, no la APR revelada final. Retrocede sigue siendo dueña de la verdad.

  17. · kamo-internal

    Página polaca de nueva oferta - estado vacío, insignia LOC, términos personalizados

    Tres huecos de UX que la página de la oferta tenía después del refactor anterior: 1. Estado vacío. Cuando un mercado todavía no tiene productos de préstamo, el descenso se utiliza para dejar vacíos en silencio y el operador no tenía ni idea de qué hacer. Ahora, reemplazado por un estado vacío de héroe (icono, titular, primer en Instalación vs LOC, y un "Producto de Préstamo Creado" CTA enrutado a los productos/nuevo flujo). 2. LOC vs Installment no es visible por adelantado. Ambos aparecen de manera idéntica en el descenso del producto. Añadida un chip de colores (LOC = azul . . . . . . . . . . . . . . . . . . . . Instalación = icono de billetera verde y) renderizado tanto en el valor seleccionado y dentro de cada opción desplegable, más la descripción del producto en la opción. 3. El bloque de "términos cerrados" fue confusamente llamado. sin ninguna forma de anular. Añadido un panel de "términos personalizado" despilable que expone las anulaciones por oferta para la tasa de interés, la APR revelada, y honorarios de originación (precios de relación, entrenamientos difíciles, promoción fijación de precios). Cuando se establece, la tarjeta de cierre bloqueado llega visualmente a través de la valor del producto y muestra la anulación (e.g. 14,99% 11,99%) por lo que el El operador ve exactamente lo que se emitirá. Soporte de respaldo empujado en KamoLOS 0e80393; tipos extendidos en losApi.ts los campos de anulación fluir a través de createOfferDraft.

  18. · kamolos

    Porofía sobresortación por tarifa, APR y tasa de originación

    LoanOfferCreateRequest gana tres campos opcionales de interésRateBpsOverride, aprBpsOverride, originationFeeAmountOverride. createDraft los aplica cuando conjunto y de lo contrario cae de nuevo en la instantánea del producto. Casos de uso: relación precios (retroceda de tasas para los prestatarios repetidores), entrenamientos difíciles (recuperados originación), ofertas promocionales puntuales. Para los productos de a plazos, sólo interésRateBpsOverride está en el camino normal. APR se calcula desde tarifa y tarifas. aprBpsOverride está expuesto para el Caso raro, una TPR explícitamente divulgada debe diferir del cómputo. Auditoría: Escribe OFFER-DRAFTED para cada borrador (uniforme con OFFER-SENT/ACCEPTED). Registros valores explícitos de anulación vs producto por defecto para que el sendero pueda reconstruir lo que fue heredado vs. set per-offer.

  19. · kamo-internal

    Exponga PERSONAL-LOANS en el tipo de comercio y los recolectores de compromiso

    Añade PERSONAL-LOANS a las listas COMMERCE-TYPES y EngagementType para que el a partir de los mercados/nuevos y nuevos y de los préstamos personales de KamoLOS se pueden crear de los mercados/nuevos y mercados/editar páginas, lo aparece en QuickActionsBar (con /commerce/personal-prés/nuevo route), e incluirlo en el filtro y config de tipo de compromiso de tuberías.

  20. · kamo-internal

    Esmalte frontend frontend esmalte de org Informes de org.

    Esmalte de Frontend (T6): - Nuevo lib/format.ts: locale-aware Intl helpers - formatCurrency / formattaDema / formatoDateTime / formatPorcentBps. Reemplazas codificados duros aLocaleString () Patrones de rodajas ((0,10) dispersos por la base de código. - BorrowerAutoPayCard: inscripción completa / pausa / curriculum / cancel / editar UI para la máquina estatal de pago automático. Superficies cantidad-modo descenso (INSTALLMENT-SCHEDULED / MIN-PAYMENT / FULL-STATEMENT-BALANCE / FIXED-AMOUNT) - el selector de pago-método de pago. El contragolpe estaba ya cableada; esta es la última pieza para el autoservicio del prestatario. - Recusación de carga: IRS 1099-C código de la razón desplegable contra el código (8 oficial letras A-H per IRC .6050P) sustituye al campo de la razón de texto libre; Fijar por defecto ************* Notas El campo se queda. Moneda renderizada a través de formatoCurrency. Informes de Org (T7): - Nuevo **************** 5-bucket salpicadero (Actual / 1-29 / 30-59 / 60-89 / 90o) con %-de-total . codificado por color las fronteras. Enlace de perforación a la cola de carga. adiciones de losApi: - AgingReport(orgId) . Tipo de informe envejecido - auditoríaSearch (filtros) para el variabler regulador multifiltro - LoanChargeOffReasonCode del sindicato - confirmar la firma deChargeOff acepta la razónCode

  21. · kamolos

    Nivel de nivel 6-7o9o10 - esmalte frontend, informes org, OpenAPI, JaCoCoCo

    T6 (policía en primera línea): - Nuevo /lib/format.ts: formato locale-awareCurrency / format formatDato / formatDateTime / format93Bps vía Intl APIs (sustituye hardcoded patrones de toLocaleString - rebanada (600). - BorrowerAutoPayCard: inscribir / pause / curriculum / cancel / cancelar / editar auto-pago con un descenso del modo de la cantidad (INSTALLMENT-SCHEDULED / MIN-PAYMENT / FULL.STATEMENT.BALANCE / FIXED-AMOUNT) - día de mes - p-meso-método selector. - Reclusa de carga: Bout de código de razón del IRS 1099-C (8 cartas oficiales AH por IRC 6050P) reemplaza el campo de la razón de texto libre; default G. Formato de moneda a través de formatoCurrency. T7 (informes de orejas): - NuevosInformes de PréstamoController.aging: cuenta los préstamos en la corriente / 1-29 / 30-59 / 60-89 / 90o cubos a través de la página de la página DELINQUENT escaneo . countByOrganizationAndStatus para ACTIVE. - **************** 5-bucketboard con %-de-total Bandas codificadas por colores - perforación a través de la cola de carga-off. T9-T10 (DX -docs): - **************** /v3/api-docs . /swagger-ui.html auto-generado. OpenApiConfig establece título . descripción versión. - DevSeedLoader .Profile("dev"): arranca dos muestras de LoanProductos (12-mo aportunación de LOC perpetua). Idempotente (spatadas en el producto existenteCode). - Enchufe JaCoCo Maven: preparado-agente . informe en fase de prueba. Cobertura HTML en el objetivo/sitio/jacoco/index.html para el consumo de CI. adiciones de losApi: - AgingReport(orgId) . Tipo de informe de envejecimiento - auditoríaSearch (filtros) para el endpoint del regulador multifiltro - confirmar la firma deChargeOff acepta la razónCode 36 pruebas que pasan.

  22. · kamolos

    Lote de cumplimiento de nivel 5

    - OfacSanctionsService: Jaro-Winkler fuzzy match . . . . . . . . . . . . . . . . . . . . . . . pase. Hits puntuación de similitud de la superficie. Configurable a través de los.ofac.fuzzy-threshold. - AdverseActionNoticeService: ECOA 1002.9 . el CFPB como regulador federal. Renders razones para decodificar estándar Lengua no discriminación ECOA. Almacenado a MediaService. - ********************** consulta de auditoría multifiltro para regulador citaciones y barridos de retención. Paged. - LoanChargeOffService.confirm acepta la razónParameterCode (IRS 1099-C carta de caja-6), persistió en Loan.chargeOffReasonCode y enhebrado YearEndTaxJob's 1099-C PDF render. Fallo G. - LoanProductValidationService advierte cuando interestRateBps - MLA 3600bps cap por lo tanto el cumplimiento puede marcar para la proyección de la ley de tiempo de oferta. - YearEndTaxJob: eliminado la rama de productos1099Int fue inerte (no Existe un flujo de pago de préstamos-créditos-intereses). Tábrio se fue con reactivación Guía una vez que ese flujo aterrice. Pasan las pruebas de 30 unidades.

  23. · kamo-shared-library

    LoanChargeOffReasonCode (IRS 1099-C box 6) . búsqueda de auditoría

    - New LoanChargeOffReasonCode enum (A-BANKRUPTCY..H-OTHER) por IRC .6050P - Loan.OffReasonCode columna - **************** multi-filtro .Query para citaciones reguladoras (leanId / kind / actorType / actorMemberId / de / a)

  24. · kamolos

    Seguridad de nivel 3 - Lote de limpieza de errores de nivel 8

    T3 - Seguridad: - New RateLimitFilter (Bucket4j): 1000/min per IP para los cobardes web, 10/min por sesión para la oferta aceptar/decoder/rescind, 60/min general. Registrado antes de ProxyHmacFilter por lo que el abuso golpea el cubo antes Coste de verificación criptográfica. - SecurityConfig añade HSTS.- frameOptions(DENY) - contentTypeOptions a través de Spring Security HeaderWriter. - StripeConfig falla rápidamente en perfil de prod con clave no en vivo. Limpieza de errores T8: - **************** mira hacia arriba Loan.productIdSnapshot LoanProduct.feeNsfFlat en lugar de $25 codificado. 25 dólares sigue siendo el retrocedan cuando falta producto o tarifa. - **************** gana un campo de AjusteTarget (PRINCIPAL / INTEREST / FEES). manualAjusta los envíos por destino en lugar de siempre tocar al director. Los metadatos de auditoría ahora registran que se tocó contra. - **************** encuentra el más reciente ACTIVE *o* Plan PAUSED y reactivalo en lugar de crear una nueva fila que los huérfanos hicieron una pausa. - ******************* mecanografiado FetchResult registro con status (OK / NOT-FOUND / UNREACHABLE / UNCONFIGURED). fetchBlob (uid) conservado como adaptador heredado bytes o nenal.

  25. · kamo-shared-library

    ¿Qué

    Utilizado por ******************* para reactivar un existente Plan PAUSED en lugar de crear una fila duplicada que los huérfanos detuijan una.

  26. · kamo-internal

    /api/los proxy HMAC-signs secadores de identidad

    Cuando se establece el código env var, el proxy ahora calcula que **************** secreto) y envía X-Proxy-Signature - X-Proxy-Timestamp junto al X-Org-Id / Cabeceras X-Miembro-Id. El nuevo ProxyHmacFilter de KamoLOS valida esto (Sesgado 60s, constante-tiempo de comparación) por lo que un cliente eludiendo kamo-internal Ya no puede falsificar las cabeceras de identidad. Secreto desenmaño = paso local (filtro desactivado en el backend lado también).

  27. · kamo-internal

    Página de detalle de préstamo del lado de Org. Ajustes/promesa API

    - LosApi: manualAjusta, renunciaFee, promiseToPay - ************* por completo org-operaciones página * 4a cartas de saldo (actual, principal, interés, vencido a continuación) * Formulario de ajuste manual (CREDIT/DEBIT, razón requerida) /api/los/ajustes/manual * Formulario de pago a Promise. llamadas **************** * Declaraciones y cuadros de pagos * Embeds .LoanAuditTimeline para el registro de eventos completo - Esto resuelve el vínculo roto que MarketActiveLoansTab. PipelineActiveLoansTab estaba señalando.

  28. · kamolos

    Lote final - cumplimiento, paquetes, ajustes, Grafana, pruebas

    Cumplimiento: - MlaCheckService - Ley de préstamos militares contra la que se enfrenta Concha de discoteca DoD MDC. Devuelve noCoverido si no está descifrado así dev no falla dura; la producción DEBE configurar los.mla.endpoint . api-key O ejecutar MLA manual en el escaño KYC de la org (acceso PII requerido). - OfacSanctionsService . Tesorería SDN en caché en la memoria, refrescado En las noches de sdn.csv. Normalización de unicode NFD y desnudamiento diacrítico. Alcanizado en LoanOfferService.send: SDN golpea bloquea el envío y escribe un ESTADO.RULE.VIOLATION.DETECTED fila de auditoría. - LoanLifecycleService enfriamiento de servicio ahora lee LoanStateRule.coolingOffDays para el estado del prestatario (sustituye el localDateTime.now() marcador de posición). - Stripe account.updated webhook ahora sincroniza cargos/payouts/detalles flags. Diversión por defecto, desactivada.reason en préstamoOrgStripeConnect así los trabajos de cron, los ajustes de org UI ven estado de capacidad en vivo. Paquete de dilatría: - Nuevo DisclosurePacketBuilder paquetes de la caja TILA . Aviso de no discriminación de la ACH - Autorización del mandato de ACH en un PDDF a través de PDFBox PDFMergerUtility - tiendas en MediaService. Cada componente es grabado como una fila de LoanDisclosure teclado de la oferta. LoanOfferService.send construye el paquete automáticamente antes de que se cree la envolvente ESign. Operaciones de servicio: - **************** . honorarios/ principal crédito-o-débito con la razón requerida; emite LoanPayment(INTERNAL-ADJUSTMENTO o REVERSAL.ADJUSTMENTE) Auditoría MANUAL-ADJUSTMENT - LoanAdjustmentService.waiveFee . flips LoanFee.waivedAt . créditos feesPaidToDate . emite auditoría FEE-WAIVED - ******************* . . . . . . . . . . . . . . . . . . . . . . . utilizado en el seguimiento del flujo de trabajo D60, emite la auditoría PROMISE-TO-PAY-LOGGED - LoanAdjustmentController expone /api/los/ajustes/amanual, fees/-uid-/waive, promesa-a-pago. Observabilidad: - **************** . . . . . . . . . . . . . . . . . . . . . . . medidores de estado, tasas de resultados de pago, R-código devoluciones por código, webhook p50/p90/p99, desembolsos/hora, cobros/día, jota, monto de JVM, tasa HTTP Pruebas (30 en total, todo verde): - 7 AmortizationEngine - 9 InterestAccrualEngine (incluido el fallo de 100x previamente fijado) - 5 pago atendador - 4 NachaReturnCode (las clases de repito - códigos de revocación de mandatos - describir) - 5 OfacSanctionsService (licio limpio / hit / diácristica / alias / desactivado mediante la caché inyectado en la reflexión, sin red ni contenedor de ensayo necesario)

  29. · kamolos

    Lote de P2 - observatorio, pruebas, impuesto de fin de año, identificaciones reales de rayas

    Observabilidad: - micrómetro-registro-réus en el camino de clase - /actuador/prometido expuesto a través de la config de gestión (ambos locals configmap) - Servicio de LoanMetrics: ************* ******************* los.charge.off.total, eldes desembol.total, los-loan.status.count.status. gauge, ********************** *** - Contadores conectados a LoanPaymentPostingService - LoanChargeOffService Pruebas de matemáticas: - 21 pruebas unitarias que cubren AmortizationEngine (pago de nivel, APR Newton- Raphson, progresión mensual de la fecha de vencimiento, principal-interes invariante, guardias de mal-input), InterestAcgregalEngine (ACT-365 / ACT-360 DPR, un día / treinta días de devengo, LOC ADB), PagosAcusante (fees-interés - orden principal, parciales, sobrepago, nulos) - ** Fixes 100x de tasa de interés bug** en **************** El divisor fue de 36500/36000 en lugar de 3.650.000/3.600.000 (Rate anual fracción necesita tanto /10000 bps-fraction Y /365 días), así que acumulado El interés era más de 100o demasiado alto. Prueba agregó que lo habría atropello. Identificadores de la Franja Real (no más marcadores de posición): - StripeConnectController.onboard persiste ahora LoanOrgStripeConnect en creación exitosa de Stripe Account; .status vuelve al estado de incorporación - New StripeIdResolver: conectadoAccountIdForOrg() getOrCreateBorrowerCustomerId() (con llave de la potencia Customer.crear bajo la cuenta conectada, persiste a Loan.stripeCustomerId) - AutoDebitRunJob.fireAchDebit . bombDisborsement ahora resuelve real IDs a través de StripeIdResolver en lugar de "acct-placeholder"* Recordatorio cadencia: - RecordderSchedulingJob: el barrido nocturno emite PAYMENT.DUE. PAYMENT.DUE.TODAY, PAYMENT.LATE.DAY.1/5/15, OFFER-EXPIRING (24h antes de que expireAt), DISCLAR. DISCLARAVAILABLE (en generación). Diseñado con llaves A través de ************* así que las repeticiones son idempotente. Impuesto de fin de año: - YearEndTaxJob (cron 06:00 Jan 5): produce 1099-C para cobros de 600 euros 1099-INT para el interés de prestatario-crédito 10 euros. Forma de reedición de jaque, almacenado en MediaService, registrado como LoanDisclosure con forma/año Los metadatos por lo que las repeticiones son idempotente. - Préstamo.tax1099Celigible auto-set en carga-off confirmar cuándo la cantidad de $600

  30. · kamo-shared-library

    LoanOrgStripeConnect - Impuesto de préstamos/campos decruce - índices calientes

    - Nueva entidad de LoanOrgStripeConnect (uno-per-org, stripeConnectedAccountId Conectan capacidades de abergue) Repositorio - Préstamo: rayaCustomerId (creada perezoso bajo la cuenta conectada de la org), lastA devenedDate, tax1099Intigible, tax1099Elegible - Indices compuestos calientes: * préstamos: (org.id,status), (borrower.member-id,status), (next-payment.due-at), (status,delinquency.tier) * préstamos: (préstamo,iniciado,at), (préstamo,status), (stripe,payment.intent-id), (statement.id) * préstamos.statements: (lean.id,statement.number DESC), (due-date,status) * préstamo-ofertas: (org.id,status), (borrower.member-id,status), (estatuto,expires-at)

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