Aller au contenu
KAMOUniverse

Changelog

Ce qui est nouveau.

Chaque amélioration apportée à la plateforme, à mesure qu'elle est livrée.

  1. · kamo-shared-library

    API-SIGNATURE api-key scope - EsignGenericEnvelope.origin

    Additif, pas de bosse de version: - ApiKeyScope.API-SIGNATURE - Porte l'API de signature électronique programmatique (Business) - EsignGenericEnvelope.origin (EsignUsageOrigin, nullable) et enregistre si un l'enveloppe a été créée via API vs MANUAL, donc le compteur de signatures rempli correctement (L'API compte pour le dépassement de 0,20 dollar ; MANUEL n'est jamais utilisé). Colonne ajoutée à la prod via idempotent ALTER préalablement préalablement.

  2. · kamo-internal

    Envoi d'une action pour signature et état de l'enveloppe dans l'éditeur de documents

    Ajouter un bouton "Envoyer pour signature" à l'en-tête de l'éditeur de modèle qui ouvre un d'un dialogue pour envoyer le document aux destinataires et de suivre l'état de signature, appel le nouveau moteur ESigService/api/esig/enveloppes. - Routes proxy (OTK via générerOTK, miroirs des modèles proxy): POST/GET /api/esig/enveloppes, GET [uid, POST [uid/ou pouvd, POST/uid, POST - SendForSignatureDialog: Envoyer un tab (titres, message, expiration) Onglet d'état (liste d'enveloppe per-modèle, puces d'état, vide/résenté) - Bouton désactivé pendant que le gabarit a des changements non pris - i18n via next-intl

  3. · ESigService

    Enveloppe générique crée/s'enlevent le moteur (côté émetteur)

    Ajouter les entraînements kémom-internes API OTK-authed /api/esigjettes API les documents à signer, la réutilisation des mêmes entités partagées signature de l'API: le remplacement additif et org-agnostique du prêt-à-porter KamoLOS/EsignClient accouplé créent un chemin. - Création et envoi de POST à partir d'un modèle: construit EsignGenericEnvelope (AD-HOC), un EsignEnvelopeConceinent par signataire avec un jeton d'accès frais haché, et adresse chaque adresse électronique le lien de signature/s/-env-/-recipient-?t-token-/best-effort/meilleur-effort) - Liste GET (tableau de bord des enveloppes) et données GET 'uid' avec statuts du destinataire - POST zuid/vided et zuid/récipients/rid/résentant (rote le jeton) - Inviter et déléguer des courriels partagent EsignemailClient.sendInvite; signataire-route Liens corrigés vers /s/env-/-recipient

  4. · ESigService

    Moteur d'API de signature publique pour signe.sign.pink

    Mettre en œuvre l'API /api/esig/public/- signant l'API kamo-signer app. transformer le signataire en direct de la prévisualisation en un backend de travail. - valider (jeton de début de session de signature), session, consentement, stepup/start-verify (courrier électronique OTP), soumission, décodeur, délégué, document - Sessions de signataires à nouveau (Signer-Session X), distinctes du personnel OTK - octets de documents via le véritable pipeline Img/MinIO (modèle imgId - convertie-PDF ImgDat - et MinIO), pas le stub non câblé /api/imaging/blobs - PDFBox flatten: valeurs de champ superposées et images de signature au design coordonnées, ajouter les pages de certificat d'audit E-SIGN/UETA; signées PDF stockées dans MinIO sous l'enveloppe signéeBlobId avec enregistrement SHA-256 Lignes d'audit EsignSignature uniquement - EsignFieldValue - Le dosage d'origine API est établi en 3 à 4 dollars. - L'image de la marque est décidée à partir de l'organisation et du domaine d'orgueil pour la première peinture - OTKAuthFilter bypasses /api/esig/public (token-authed, not staff OTK) Additif uniquement; existants /api/esig/templates/- non touchés.

  5. · kamo-internal

    Plateforme de produits basculer dans l'onglet Organisations

    Surfacer la désignation de la plate-forme-produit à l'endroit où elle appartient Organisations. Ajoute un interrupteur gated par org (désactive pour l'orgge de haut niveau), un dialogue de confirmation expliquant l'effet de droit, un «produit sous forme de plate-forme» puce, un avertissement sans catalogue, une mise à jour optimiste, et un snack-bar d'erreur. Toutes les cordes via next-intl.

  6. · BillingService

    Gérer Organization.isPlatformProduct de la plate-forme et des orges

    PlateformeCompteSummary exposants isPlatformProduct et has SubscriptionMarket; nouveau PUT (plate-forme-admin gated) fixe le drapeau et invalide les droits des membres de l'ordonnance (leur produit racine, et donc caractéristiques, changement). L'orgge de premier niveau est la racine implicite et ne peut pas être basculés.

  7. · kamo-shared-library

    Organisation explicite.isPlatformProduct en tant que signal racine d'ayant droit

    Remplacer l'huristique dérivée «propriété d'un marché de la SUBSCRIPTION» par une exactitude explicite, Drapeau de la propriété de l'administrateur. Un produit de plate-forme (par exemple, signe. rose) est une marque blanche le produit de la plate-forme fonctionne et est sa propre racine de droit; un organisme de client même un marché de SUBSCRIPTION à revendre à ses clients est non, et reste droit à la plate-forme. EntitlementRootResolver lit désormais le drapeaux (plus la racine implicite de haut niveau) et ne dépend plus du marché la propriété. Ajouters is-platform-colonne de produit (BOOL DEFAULT FALSE) - nécessite KamoInitializer pour le créer avant les services qui choisissent l'organisation.

  8. · SecurityService

    Droits des membres au droit d'être responsable de la racine du produit, et non de KamoCRM

    EntitlementService résout désormais la racine de droit de chaque membre via Entitlement RootResolver (ancêtre propriétaire du marché ou auto-auto) au lieu de marcher jusqu'à l'orge de haut niveau. Le plancher libre et le drapeau d'accès aux produits dériver de cette racine, et isKamoCrmAbonnement devient abonnementGrantsRootAccess (plan-org vs racine, jamais le compte de facturation). Gains de droits des membres produitRootOrgId de sorte que les consommateurs empruntent l'accès au bon produit. FactureSetupService s'approvisionne sur le marché - Plan gratuit à partir du nouveau produit de l'organisation racine tout en maintenant le compte de facturation sur l'ordre de KamoCRM de haut niveau - c'est-à-dire le Le parent est propriétaire de la facturation, l'enfant peut être propriétaire du produit/du marché. Le comportement est inchangé jusqu'à ce qu'un ôgorge soit effectivement propriétaire de son propre marché (KamoCRM est le Seul le propriétaire du marché aujourd'hui, de sorte que chaque membre y décide encore).

  9. · kamo-shared-library

    Résoudre les droits par org de racine de produit, et non par une plate-forme de haut niveau

    Introduire EntitlementRootResolver: l'ancêtre-ou-soi propriétaire du marché le plus proche d'une mine d'or (sa racine de produit), retombant au niveau supérieur de la plate-forme. C'est ce que découple le produit auquel vous avez droit (le marché/propriétaire du plan) de «qui paie» (compte de facturation) et à partir de l'ensemble de l'ordre de haut niveau, donc un produit en marque blanche org like sign.pink qui possède son propre marché devient sa propre racine de droit. - Sources maintenant de la ligne de base libre de l'ordre root de produit (ne trouverFirstByIsTopLevelTrue) et résout les plans par le produit/gestion de marché plutôt que l'ordre de compte de facturation. Compatible rétrospective: KamoCRM est actuellement le seul propriétaire du marché, de sorte que tous les l'org existant s'y résout exactement comme avant - le comportement ne diverge qu'une fois sous-arbres est propriétaire de son propre marché. Additif; pas de bosse de version.

  10. · kamo-shared-library

    Ajouter un destinataire de l'enveloppe, la valeur du champ, les entités du statut de destinataire

    Vérifiez dans le modèle d'essign en cours: EsignEnvelopeRecitain (-repo), EsignFieldValue (-repo), EsignRecitainentStatus et une mise à jour ESignSignerType. Additif; pas de bosse de version.

  11. · kamo-shared-library

    Ajouter EsignUsageRecord pour le comptage d'utilisation par signature

    Nouvelle entité d'utilisation uniquement d'appendices (miroirs AiUsageRecord) émise lors de la signature achèvement. Seules les signatures d'origine API sont incluses dans les mois d'un plan quota et dépassement (sign.pink Business: 40/moi inclus, puis 0,20 euro chacun); MANUEL Les signatures à usage unique sont enregistrées mais ne sont jamais facturées. soutient l'agrégation mensuelle; la soumission de l'utilisation de Stripe fait de la soumission d'utilisation de Stripe idempotent. Additif uniquement; pas de bosse de version.

  12. · ConversionService

    Réserver un rapport d'aspect, ne jamais étirer les logos non carrés

    Des cadres de Favicon PNG/ICO ont été produits avec keepAspectRatio (faux), étirements. tout logo non carré dans un carré déformé. Créable au centre du logo sur un Toile carrée transparente à la place, préservant le rapport d'aspect, donc les favicons regardent corriger toute forme de logo téléchargée sans avoir besoin d'une image source carrée.

  13. · KlusterServices

    Signe pré-semence.pink - www.sign.pink dans STATIC-DOMAINS

    sign.pink est un nouveau domaine apex (consommateur e-signature / marque blanche ug de locataire de Kamo). Plein pré-semence - www donc un certificat Let's Encrypt existe avant le premier trafic HTTPS; les sous-domaines roses sont certifiés par FQDN de manière dynamique lors du premier impact, le même mécanisme que .priceturbo.com.

  14. · kamo-signer-monorepo

    Nouvelle application de signature de signature électronique monorepo et de la première signature électronique

    Espaces de travail de tourisme et de pnp emplacements de boîtiers monorepo boîtiers de boîtiers de réception en ligne Extrait de kamo-interne plus une nouvelle application kamo-signer ultra-polie l'expérience de la deuxième partie (le délégué/le concepteur reste dans komo-interne). Paquets: - Types de noyaux de kamo/esign-core - Connexion de fil de données, schéma de zod, temps d'exécution validation de champ, signalisationStore (zustand) - Entrées interactives sur le champ de l'étude et de la lecture seule/annotation les moteurs de rendu (à partir de kamo-internal FieldControl) - 'kamo/doc-render bundled pdf.js page renderant (travailleur auto-hébergé, pas de CDN), superpositions réactives, correctrices de rotation - Bootstrape de marque zkamo/thème parmi (getThemePath, Thème, DynamicMetaLoader) - Redis/fournisseurs de navigation et de serveur Redis/forwarding helpers - zkamo/config shared tsconfig / tailleur preset / eslint App (apps/copmo-signer): - signataire-toyen-toyen (SIGNSESH httpOnly session, BFF handler de route) - Accueil - - consentement (ESIGN/UETA) - eIDAS AES APPLICATION - Finition - - achèvement, toutes les phases animées (cadre-mouvement, mouvement réduit conscient), mobile d'égalité à l'opposé, WCAG - suite de capture de signature: dessin / type (sescattes de caractères) / téléchargement / adoption-all - multi-documents, décodeur, délégué/réaffectation, full i18n (next-intl, 22 locales) - mode de prévisualisation glissant (pas de backend requis) Signe, turboprune Dockerfile)

  15. · kamo-internal

    Réécriture de l'entreprise en pleine largeur avec prévisualisation en direct

    PrandonProductForm était une seule colonne étroite (maxWidth: 880) avec codage dur L'anglais partout. Maintenant, le même modèle d'entreprise que la page d'offre: Mise en page : - En-tête à gradient pleine largeur avec chapée, flèche arrière, badge de type - Grille à deux colonnes (6fr/6fr) sur lg', monocolonne inférieure - Forme à gauche, en direct "Prévisualisation du produit" à droite Côté forme: - Sélecteur type sous forme de ToggleButtonGroup avec des descriptions (Instalment vs LOC), n'est pas enterrée dans une liste déroulante - c'est le choix structurel qui se refaçonne le reste de la forme, donc il mérite d'être prisé - Blocs de section avec icônes (Basics - Prix - Limites - Termes - Conformité) - Taux inscrits en %, convertis en bps sur le fil (pas plus "3600 - 36%") - Toutes les étiquettes de champ via next-intl t() - Oignonnage du nombre de jours expliquant ACT-365 vs ACT-360 Côté prévisualisation: - Carte de héros: puce de type, puce de code produit, nom, titre, description - grille de statistiques à 4 turbulaires: taux, origination, frais de retard, redevance NSF - Limites et terminaisons (mérite: portée et fréquence pour l'installation, - pour LOC) - Carte d'offre d'échantillons (installation): paiement mensuel, intérêts totaux, Coût total, origination de l'échantillon au milieu de la fourchette principale - Puces de conformité: états autorisés (chap. 24 - chip de déborage), autopay requis - ristourne, fourchette de réduction à ordre - Note de bas de page expliquant comment ce produit s'écoule vers la page d'offre LoanProductForm emballe désormais à la fois les nouvelles pages et les pages d'édition. Emballages de page PasssiserTitre donc la panure se résout de manière propre.

  16. · kamo-internal

    Prévision à deux colonnes avec panne d'avant-première en direct

    La nouvelle page off était une haute colonne étroite sur de larges écrans - moitié gaspillée la fenêtre d'affichage. Maintenant, l'utilisation de CSS Grid avec le formulaire sur la gauche (5fr) et un vitrage "Offer Preview" sur la droite (7fr) qui met à jour en tant qu'opérateur types. Colonne unique sur de petits écrans (lg). Côté forme: - Coeurs de la section avec icônes (Product et emprunteur, montant et conditions de douane) - empilement des champs de l'emprunteur verticalement (de la loge et de l'état) dans un cadre plus compact Présentation maintenant que l'espace horizontal est réservé à l'aperçu Côté prévisualisation (uniquement lorsqu'un produit est choisi) : - Carte à héros avec fond de gradient, puce de type, nom du produit, et a Titre lisible de l'homme ("5 000 dollars - versement de 12 mois - 14,99 % APR" / "Grech de 25 000 dollars de ligne de crédit - taux de 9,99 %)") - grille de stats 4 tuiles : principal, taux, paiement mensuel, terme (installation) ou principal, taux, période de tirage, période de remboursement (LOC) - Ventilation des frais (origination/lat/NSF/annuel) avec puce "sur mesure" lorsqu'une puce l'annulation est appliquée - Comité récapitulatif des coûts : montant net décaissé, intérêts totaux, coût total - Plan d'amortissement regarde : les 3 premières et les 3 dernières rangées avec un "-N-plus" paiements..." ligne d'écart pour les durées supérieures ou égale à 6 mois - Note de rappel TILA expliquant que le backend calcule le vrai TAEG l'horaire réel - rend les informations à l'envoi Tous les maths sont l'amortissement en ligne droite du côté du client (P : r x 1 x r x n x n / un avant-goût fidèle, et non le TAEG définitif. Arrestation douve toujours de la vérité.

  17. · kamo-internal

    Page polonaise de nouvelle offre - état vide, badge LOC, termes personnalisés

    Trois lacunes UX que la page d'offre avait après le réfactorataire précédent: 1. État vide. Lorsqu'un marché n'a pas encore de produits de prêt, la liste déroulante utilisée rendre silencieusement vide et l'opérateur n'avait aucune idée de ce qu'il fallait faire. Maintenant remplacé par un état vide de héros (icône, titre, amorce sur l'installation vs LOC, et un "Create Pran Product" CTA acheminé vers les produits/nouveau flux). 2. LOC vs Lallment n'est pas visible à l'avance - les deux apparaissent de manière identique dans le Délai d'établissement du produit. Ajout d'une puce colorée (LOC - bleu - icône de répétition, Installation: icône verte et portefeuille) rendue les deux dans la valeur sélectionnée et à l'intérieur de chaque option déroulante, plus la description du produit dans l'option. 3. Le bloc "termes verrouillés" a été nommé de manière confusée - il impliquait immuable sans aucune manière d'annuler. Ajout d'un panneau "Caux moyens" pliable qui expose les annulations de la présente offre pour le taux d'intérêt, le TAEG divulgué, et Redevance d'origine (tarification des relations, difficultés d'entraînement, promotions prix). Lorsqu'elle est réglée, la carte à durée indéterminée verrouillée frappe visuellement à travers le valeur du produit et présentation de l'annulation (par ex. 14,99% x 11,99%) L'opérateur voit exactement ce qui sera délivré. Support d'arrière-plan poussé dans KamoLOS 0e80393; types étendus en losApi.ts de sorte les champs de neutralisation s'écoulent à travers createOfferDraft.

  18. · kamolos

    L'annulation de la redevance pour les tarifs, le TAEG et les frais d'origine

    LoanOfferCreateDequest gagne trois champs optionnels: interestRateBpsOverride, aprBpsOverride, originationFeeAmountOverride. createDraft les applique lorsque régler et d'autres retoîtis dans l'instantané du produit. Cas d'utilisation: relation prix (retard de classement pour les emprunteurs répétitifs), séances d'entraînement difficiles (adécourage l'origine), des offres promotionnelles ponctuelles. Pour les produits à tempérament, seul l'intérêtRateBpsOverride est sur la voie normale Le TAR est calculé à partir du taux, des frais et du calendrier. aprBpsOverride est exposé pour le Un cas rare, un APR explicitement divulgué doit différer du calcul. Audit : écrit OFFR-DRAFTED pour chaque projet (uniforme avec OFFR-ENT/ACCEPTED). Logs explicites sur les valeurs d'annulation par rapport aux valeurs par défaut du produit afin que la piste puisse reconstruire ce qui a été hérité vs. set per-off.

  19. · kamo-internal

    Expose PERSONNAL-LALOANS dans les sélectionneurs de type commerce et d'engagement

    Ajoute les listes PERSONNAL-LALES aux COMMERCE-TYPES et à EngagementType afin que un nouveau marché des prêts personnels de KamoLOS peut être créé à partir des marchés/nouveaux marchés/pages d'énumération, le fait de le surfaceer dans QuickActionsBar (avec /commerce/personnel-prêt/nouveau route), et l'inclut dans le filtre et la configure de type d'engagement de pipeline.

  20. · kamo-internal

    Pôles frontaux T6-T7 et rapports d'orgg et UI auto-pay

    Vernis avant (T6): - Nouveaux lib/format.ts : aides intologiques locales et formatCurrency / formatDate/formatDateTime/formatPercentBps. Remplace le code dur les motifs toLocaleString() et slice(0,10) sont dispersés à travers la base de code. - EmprunterAutoPayCard: s'inscrire/récupération complète / reprise / annuler / éditer l'UI pour la machine d'état de paie automatique. Débachet en mode mode de surface (INSTALLEMENT-SCHÉTÉ - MIN-PAYMENT / PLEINE-STATEMENT-BALANCE / FIXED-AMOUNT) (de jour de mois) - sélecteur de méthode de paiement. Le dossard était déjà câblé, c'est la dernière pièce pour l'emprunteur en libre-service. - Fiche d'information : Dépôt de code de raison IRS 1099-C (8 officiels lettres A-H par IRC 6050P) remplace le champ de raison en texte libre; default : Notes field reste. Monnaie rendue par formatCurrency. Rapports d'ordonnances (T7) : - Nouveau tableau de bord à 5 compartiments (Cancerent / 1-29 / 30-59 / 60-89 / 90 ans) avec % de total et de couleur codée les bords supérieurs. Lien traversant vers la file d'attente de charge. additions losApi: - avieillissementRapport(orgId) et vieillissementSon-péage - AuditSearch(filtres) pour le point d'extrémité du régulateur multifiltre - LoanChargeOffReasonCode de type Syndicat - confirmation de la signature Accepte la raisonCode

  21. · kamolos

    Niveau 6x7x9x10 zz10 z frontal polish, org reports, OpenAPI, JaCoCo

    T6 (poli frontend): Nouveau /lib/format.ts: site-sensibleToutes Pensière / formatDate / formatDateTime/formatPercentBps via des API Intl (remplace le codage en dur toLocaleString et tranche(0,10) motifs). - EmprunterAutoPayCard: s'inscrire / pause / reprendre / annuler / éditer automatiquement-pay avec la réduction à la quantité en mode montant (INSTALLEMENT-SCHEDULED / MIN-PAYMENT / PLEINE ÉTAT-ÉTABLISSEMENT - BALANCE / FIXE-AMOUN) sélecteur. - Fiche d'information : IRS 1099-C, numérotation à l'origine du code (8 lettres officielles A-H par IRC 6050P) remplace le champ de raison en texte libre; par défaut G. Formatage des devises via formatCurrency. T7 (rapports or): - Nouveaux prêtsRapportsContrôleur.aging: compte des prêts pour les USD 1-29 / 30-59 / 60-89 / seaux de 90 degrés via paged DELINQUENT scan et nombreByOrganizationAndStatus pour les ACTIFs. Tableau de bord à 5 godets avec % de total - bandes codées en couleurs - percage à la file d'attente de la charge. T9-T10 (DX et documents): /v3/api-docs /swagger-ui.html autogénéré. OpenApiConfig définit titre, description, version. - DevSeedLoader (Profile("dev"): bottes deux échantillons LoanProducts (12 m tempérament - LOC perpétuel). Idempotent (sauts sur le produit existantCode). - Platine JaCoCo Maven: préparation-agent - rapport sur la phase de test. Couverture HTML à target/site/jacoco/index.html pour la consommation d'IC. additions losApi: - avildRapport(orgId) et vieillissementsTempérature de rapport - Recherche (filtres) audit pour le point d'extrémité du régulateur multifiltre - confirmation de la signature Accepte la raisonCode 36 essais réussis.

  22. · kamolos

    En lots de conformité de niveau 5

    - OfacSanctionsService : Match flou de Jaro-Winkler : 0,92 dollar après match exact Passe. Score de similarité de surface. Configurable via los.ofac.fuzzy-thresty-thresp. - AdverseActionNoticeService : désignation de générateur de PDF conforme à l'ECA le CFPB en tant que régulateur fédéral. Rend les raisons du décodeur et la norme Langue de non-discrimination ECOA. Stocké à MediaService. - Demande d'audit multifiltres pour l'autorité de régulation sous forme de sous-titres et balayages de rétention. Paged. - LoanChargeOffService.confirm accepte le paramètre de code de reason (IRS 1099-C) case 6 lettre), maintenue à Loan.chargeOffReasonCode et fileté dans YearEndTaxJob's 1099-C PDF render. G par défaut. - PrandonPorProductValidationService avertit quand le plafond d'intérêtRateBps et MLA 3600bps de sorte que la conformité peut marquer un signal d'examen de l'ALM à l'offre. - YearEndTaxJob: enlevé le produit1099Int branche était inerte (non le flux de paiement de l'emprunteur-crédit-intérêts existe). Étreinte à gauche avec réactivation une fois qu'un tel flux atterrit. Les 30 épreuves unitaires passent.

  23. · kamo-shared-library

    LoanChargeOffReasonCode (encadré IRS 1099-C) et recherche d'audit

    - Nouveau type de redevanceOffReasonCode enum (A-BANKRUPTCY..H-OTHER) par IRC 650P - Loan.chargeOffReasonCode colonne Query pour les citations à sous-titres de régulateur (loanId / type / actorType / acteurMemberId / from / to)

  24. · kamolos

    Sécurité de niveau 3 et lot de nettoyage de billes de niveau 8

    T3 - Sécurité : - Nouveau Filtre RateLimit (Bucket4j): 1000/min par IP pour les webhooks, 10/min par session pour l'offre d'acceptation/décodeur/récidive, 60/min général. Enregistré avant ProxyHmacFilter donc l'abus frappe le seau avant coût de la vérification cryptographique. SecurityConfig ajoute HSTS et frameOptions(DENY) et contentTypOptions via Spring Security HeaderWriter. - StripeConfig échoue rapidement sur le profil prod avec une clé non-vivre. T8 - Nettoyage des insectes: - - Regarder Loan.productIdSnapshot LoanProduct.feeNsfFlat au lieu de 25 codés en dur. 25 reste le replié lorsque le produit ou la redevance fait défaut. - Acquis un champ d'ajustement Cible (PRINCIPAL / INTERET / FEES). manuelAjuster les envois par cible plutôt que de toucher toujours le principal. Les métadonnées d'audit sont désormais enregistrées quel compteur a été touché. - trouve la plus récente ACTIVE Plan PAUSED et le réactive au lieu de créer une nouvelle ligne que les orphelins s'arrêtaient. - Etume de FetchResult dactylographié avec statut (OK/NE PAS DE FOND / UNACHABLE / UNCONFIGURED). fetchBlob(uid) préservés en tant qu'ancien adaptateur octets-ou null.

  25. · kamo-shared-library

    -

    Utilisé par l'A pour réactiver un PAUSED plan au lieu de créer une ligne dupliquée qui en découlait l'envenime.

  26. · kamo-internal

    /api/los proxy HMAC-signs en-têtes d'identification

    Lorsque LOS-PROXY-HMAC-SECRET env var est réglé, le proxy calcule maintenant - secret) et envoie X-Proxy-Signature X-Proxy-Timestamp aux côtés du X-Org-Id / En-têtes X-Member-Id. Le nouveau ProxyHmacFilter de KamoLOS valide ce (plus de 60 skw, à temps constant) donc un client contournant le kémo-interne ne peut plus usurper les en-têtes d'identité. Insébical secret et passage local-dev (filtre désactivé sur le backend côté aussi).

  27. · kamo-internal

    Page de détail du prêt côté de l'orge et ajustements/promise API

    - losApi: manuelAjust, renonciationFee, promesseToPay Page d'opérations complètes Cartes de solde 4-up (courant, principal, intérêt, suivant) Formulaire d'ajustement manuel (CREDIT/DEBIT, raison requise) et appels /api/los/ajustements/manuels Formulaire de promesse de paiement et appels Tableau des états et des paiements - Intégrer "LoanAuditTimeline" pour le journal complet des événements - Cela résout le lien rompu que MarketActiveLoansTab PipelineActiveLoansTab le pointait.

  28. · kamolos

    Désigne définitif, conditionnement, ajustements, Grafana, tests

    Conformité: - MlaCheckService et loi sur les prêts militaires DoD MDC requête à un seul enregistrement. Retours NotCovered si on ne peut pas configurer le dev n'échoue pas; la production DOIT configurer los.mla.endpoint OU exécuter l'ALM manuel à l'étape KYC de l'organisation (accès PII requis). - OfacSanctionsService et Treasury SDN liste en mémoire, rafraîchie nuitée de sdn.csv. Normalisation des NFD Unicode - strip-tease diacritique. Câblé dans LoanOfferService.send: SDN hit bloque l'envoi et écrit un Ligne d'audit STATE-RULE-VIOLATION-DÉTÉTÉ. - LoanLifecycleService reads LoanStateRule.coolingOffDays pour l'État de l'emprunteur (remplace l'espace réservé par LocalDateTime.now(). - Compte rayé.upded webhook synchronise maintenant les charges/paiements/détails drapeaux default-monnaie-exigences-disabled-raison sur LoanOrgStripeConnect C'est-à-dire les emplois cron - les paramètres d'orgg UI voient l'état de capacité en direct. Pack divulgué par le biais du paquet : - Nouveaux ensembles DisclosurePacketBuilder bundles TILA box et GLBA privacy notice Avis de non-discrimination de l'ECA - autorisation de mandat de l'ACH pour un PDF via PDFBox PDFMergerUtility et stockés dans MediaService. Chaque composante est enregistré en tant que ligne de projection de prêt liée à l'offre. LoanOfferService.send construit le paquet automatiquement avant la création de l'enveloppe ESign. Opérations d'entretien: Frais/principal crédit-ou-débit avec la raison requise; émet une prime de prêt (INTERNAL-ADJUSTEMENT ou RÉJUSTÉTÉ RÉSAL . . . . . . . . . . . . . . . . . . . . . - LoanAdjustmentService.waiveFee et flips LoanFee.waivedAt et crédits Les fraisPaidToDate et émettent un audit FEE-WAIVED Ligne d'engagements non financiers utilisé dans le suivi du flux de travail D60, émet PROMISE-TO-PAY-LOGGED audit - PrêtAjustementContrôleur expose /api/los/ajustements/manuels, frais/soumissions/garanties, promesse de paiement Observabilité: Tableau de bord importable avec Jauges d'état, taux de résultats de paiement, retours de code R par code, webhook p50/p90/p99, décaissements/heure, charges/jour, heap JVM, taux HTTP Essais (30 au total, tous verts): - 7 AmortissementEngine - 9 IntérêtAccrualEngine (y compris le bogue 100x précédemment fixé) - 5 PaiementAllocateur - 4 NachaReturnCode (classes de réarrangement - codes de révocateur - description) - 5 OfacSanctionsService (correspondance / frappe / diacritiques / alias / handicapés au moyen d'un cache à injection de réflexion, aucun réseau ou conteneur de test n'est nécessaire)

  29. · kamolos

    Lot P2 et observabilité, tests, taxe de fin d'année, identifiants réels à rayures

    Observabilité: - micromètre-registry-prométhée sur le chemin de classe - /actuateur/prométhée exposé par la configuration de gestion (configurer local et k8s) - Service de crédit-méprends : los-charge-off-total, los-décaissement-total, los-loan-status-registre-status-gaine, - histogramme - Compteurs câblés dans le service de paiement de prêtPostingService et LoanChargeOffService Tests en mathématiques et essais: - 21 tests unitaires couvrant l'amortissementEngine (paiement au niveau, TAEG Newton- Raphson, progression mensuelle due à la date butoir, principal et invariant, mauvais gardes d'intrants), InterestAccrualEngine (ACT-365 / ACT-360 DPR, une fois par jour / trente jours, BAsD LOC), PaymentAllocator (frais d'intérêt - Commande principale, partiels, trop-perçu, nuls) - Fixes 100 fois le bogue du taux d'intérêt Le diviseur était de 36 500/36000 au lieu de 3 650 000 (Taux annuels) la fraction a besoin à la fois de /10000 bps-fraction ET de /365 jours, ainsi qu'au-dessus L'intérêt était de 100 degrés trop élevé. Le test a ajouté que cela l'aurait attrapé. Identifiants Real Stripe (pas plus d'espaces réservés): StripeConnectController.onboard persiste maintenant LoanOrgStripeConnect sur création réussie du compte Stripe; retours .status dans l'État d'intégration - Nouveau StripeIdResolver: connectedAccountIdForOrg() et paresseux getCreateBorrowerCustomerId() (Cidmpotency-keyed Customer.create.create au compte connecté, persiste à Loan.stripeCustomerId) AutoDebitRunJob.fireAchDebit et .fireDisbursement Rédient maintenant réel ID par l'intermédiaire de StripeIdResolver au lieu de "acct-placeholder" Cadence de rappel: - ReminderSchedulingJob: le balayage nocturne émet PAIEMENT-DUE-3-DAYS, PAIEMENT-DUE-OUAY, PAIEMENT-LAT-JOUR-JOUR-JAJADI-1/5/15, OFFRE-EXPIRING (24h) avant l'expiration des délais, DÉCLARATION - PLAQUE (sur génération). Têtées de ddaupées Les revélations sont donc idempotentes. Taxe de fin d'année: - YearEndTaxJob (cron 06:00 Jan 5): produit 1099-C pour les charges de charge 1099-INT pour les intérêts de crédit-emprunteur 10 dollars É.-U. Forme de la boîte à sous-marin, stocké à MediaService, enregistré sous la rubrique LoanDibilisation avec formulaire/année les métadonnées donc les rediffusions sont idempotentes. - Prêt.tax1099CÉECET automatique à mise en état des frais confirmer quand le montant est supérieur ou égal à 600 dollars

  30. · kamo-shared-library

    LoanOrgStripeConnect - Taxe de prêt/champs d'administration - index à chaud

    - Nouvelle entité LoanOrgStripeConnect (un par or, maintiens rayuresConnectedAccountId Connecter les capacités d'intégration) - Prêt: stripeCustomerId (créé parzy sous le compte lié de l'organisation), lastAccrualDate, tax1099IntEligible, tax1099CEligible - Indices composites chauds: - prêts : (org-id,status), (emprunteur-member-id,status), (suivis-à-compte-due-at), (statu, degré de fin de carrière) - Prêts - paiements : (prêts-id,initiés-at), (prêt-id,statd), (stripe-paiement-intent-id), (state-id) - États-Unis d'Amérique: (prêt-id, non désigné, nom - date, statut) - prêts - offres: (org-id,status), (emprunteur-member-id,status), (statu, Expires-at)

Votre univers vous attend.

Commencez gratuitement en quelques minutes. Ajoutez des produits quand vous êtes prêt. Pas de migration, pas de nouvelles connexions.

Gratuit pour toujours — aucune carte de crédit requise