Busta generica crea/send motore (sender side)
Aggiungere le unità kamo-internal API /api/esig/envelopes documenti per la firma, riutilizzando le stesse entità condivise-lib il pubblico firma API legge — l'a...
Motore API di firma pubblica per sign.sign.pink
Implementare il /api/esig/public/* firma API le chiamate app kamo-signer, trasformare il firmatario dal vivo da preview-stub in un backend funzionante. - valid...
Indietro prezzi aggiuntivi misurati con un contatore di fatturazione
Stripe (>= 2025-03-31.basil) rifiuta l'utilizzo legacy type+aggregate usage modello misurato (i prezzi al metro devono essere sostenuti da metri), quindi i prez...
Toggle del prodotto della piattaforma nella scheda Organizzazione
Superare la designazione del prodotto della piattaforma dove appartiene — Piattaforma → Organizzazioni. Aggiunge un interruttore gated per org (disabilitato per...
Gestire Organization.isPlatformProduct dalla piattaforma → Orgs
PlatformAccountSummary espone èPlatformProduct + hasSubscription Mercato; nuovo Ma... (platform-admin gated) imposta la bandiera e invalida i diritti dei membri...
Organizzazione esplicita.isPlatformProduct come segnale di diritto-radice
Sostituire l'euristico derivato 'con un mercato SUBSCRIPTION' con un esplicito, Bandiera di proprietà di admin-set. Un prodotto della piattaforma (ad esempio si...
Selezionare il mercato SUBSCRIPTION per la configurazione della piattaforma
KamoCRM possiede diversi mercati E' cosi'. risolvereProductMarket deve scegliere il mercato di tipo SUBSCRIPTION (piattaforma-accesso) piuttosto che la prima at...
Radice del prodotto = possiede il mercato SUBSCRIPTION, non qualsiasi mercato
Un cliente org (ad esempio BluEleven) possiede i propri mercati aziendali OWN (RETAIL/MORTGAGE) per gestire la sua azienda rimanendo un cliente della piattaform...
Il membro dello scopo dà diritto alla radice del prodotto, non KamoCRM
EntitlementService risolve ora la radice del diritto di ciascun membro tramite EntitlementRootResolver (nearest market-owning ancestor-or-self) invece di cammin...
Risolvere i diritti per prodotto-root org, non piattaforma di alto livello
Introduce EntitlementRootResolver: il più vicino mercato ancestor-or-self di un org (la sua radice del prodotto), cadendo al livello superiore della piattaforma...
Mantenere l'elenco org sul refetch di sfondo
/network re-fired fetchNetworks su ogni sessione di sfondo rinfrescare e ha nascosto l'intera lista su qualsiasi errore fetch, quindi un blip transitorio o una ...
Aggiungi destinatario della busta, valore del campo, entità dello stato del destinatario
Controllare nel modello di esign in corso: EsignEnvelopeRecipient (+repo), EsignFieldValue (+repo), EsignRecipientStatus e un aggiornamento ESignSignerType. Add...
Aggiungi EsignUsageRecord per la misurazione dell'utilizzo per firma
Nuova entità di utilizzo (mirrors AiUsageRecord) emessa alla firma completamento. Solo le firme API-origin contano verso il mese di un piano incluso quota + ove...
Revertire email link click handlers, isolare causa
Rapporti utente email-preview link click ancora non fare nulla E testo la selezione viene uccisa a metà della falesia. Fare clic con il tasto destro e passare e...
Preservare il rapporto di aspetto, non allungare mai loghi non quadrati
Favicon PNG/ICO cornici sono stati prodotti con tenereAspectRatio(false), stretching qualsiasi logo non quadrato in un quadrato distorto. Centro-fit il logo su ...
Rigenerare faviconi sull'etichettatura salva; sniff tipo logo reale
provisionUpdate (in esecuzione su ogni salvataggio personalizzato) ha scritto config/css/manifest ma mai faviconi rigenerati — quelli sono stati prodotti solo d...
Seed globals.css dal modello quando la cartella org manca
provisionUpdate (in esecuzione su ogni colore salvare) riscritto il css dell'org/globals.css in atto, ma questo oggetto esiste solo una volta disposizione Full ...
Mostra il logo completo con la sua estensione reale, non hardcoded .svg
La scheda di marca costruito logoFullUrl come logo-full.svg sul supporto, ignorando il logo di orgFullExt. Loghi completi caricati come png/jpg/etc. in diretta ...
Refresh TLSStore ogni ciclo così nuovi certs vengono serviti
update tls store() ha eseguito solo all'avvio e alle importazioni di stoccaggio condiviso, quindi un cert appena rilasciato da cert-manager (HTTP-01) era pronto...
Dare reindirizzamento solo route un backend così Traefik v3 consente
Traefik v3 disabilita un router IngressRoute con servizi: [] quando consentireEmptyServices è spento (come è qui), quindi il dominio-agnostico Il router redirec...
Reindirizza tutti gli host HTTP a HTTPS + gate auto-cert a domini reali org
Doganale org (ad esempio login.sign.pink) ha restituito il nudo di Traefik "404 pagina non trovata" su HTTP normale: l'unico router redirect port-80 E' stato co...
Pre-seed sign.pink + www.sign.pink in STATIC DOMAINS
sign.pink è un nuovo dominio apex (consumer e-signature brand / white-label Kamo inquilino org). Pre-seed apex + www così un cert di crittografia esiste prima p...
Persist conversion error invece di fallire silenziosamente
Sia il modello che i normali pipeline di conversione di upload inghiottiti Docs guasti di conversione (richiede solo), lasciando is converted=false senza regist...
Installare turbo tramite npm in fase di potuner Docker; pin pnpm; aggiungere .dockerignore
La fase di pruner ha eseguito `pnpm aggiungere -g turbo` prima che qualsiasi pacchetto.json esistesse, quindi corepack ha afferrato pnpm 11 e ha fallito con "gl...
Nuova app di firma monorepo + mobile-first e-signature
Turborepo + pnpm workspaces monorepo alloggiamento riutilizzabili pacchetti e-sign estratto da kamo-internal più una nuova, ultra-polished kamo-signer app — l'e...
Riscrittura di impresa a tutta larghezza con anteprima live
LoanProductForm era una singola colonna stretta (maxLarghezza: 880) con codice rigido Inglese ovunque. Ora utilizza lo stesso modello di impresa della pagina of...
Layout a due colonne con riquadro in anteprima live
La pagina della nuova offerta era una colonna stretta alta su schermi larghi — sprecato metà la vista. Ora utilizza CSS Grid con il modulo sulla sinistra (5fr) ...
Riprogettare la nuova pagina dell'offerta come spazio di lavoro a due colonne + anteprima live
Hai chiesto pieno immobiliare, moderno, lucido — ultimo refactor ha messo un forma monocolonna all'interno di un guscio di larghezza piena, che è esattamente l'...
Polacco pagina nuova offerta — stato vuoto, distintivo LOC, termini personalizzati
Tre vuoti UX la pagina offerta aveva dopo il refactor precedente: 1. Stato vuoto. Quando un mercato non ha ancora prodotti di prestito, il calo utilizzato rend...
Per-offer overrides per tasso, APR e tassa di origine
LoanOfferCreateRichiesta ottiene tre campi facoltativi — interesseRateBpsOverride, aprBpsOverride, provenienzaFeeAmountOverride. creareDraft li applica quando i...
Stivali STRIPE CONNECT WEBHOOK SECRET per KamoLOS
La configurazione di cui si fa riferimento... così il risolutore segnaposto di primavera ha lanciato prima di raggiungere il livello Java **********************...
Tracciare condiviso-lib LoanRepository → PersonalLoanRepository
Aggiorna ogni tipo di importazione e campo da LoanRepository a PersonalLoanRepository attraverso 20 file sorgente KamoLOS + 1 test (i nomi di campo iniettati Lo...
Rename LoanRepository → PersonalLoanRepository
Spring Data JPA deriva il nome del fagiolo del repository dall'interfaccia semplice nome di classe, non dal valore di qualifica @Repository("..."), quindi il la...
Aggiungi /commerce/personal-loans/new entry + polish market-scopes offerta page
L'azione QuickActionsBar "New Loan Offer" ha indicato /commerce/personal-loans/new ma non esisteva una pagina del genere, quindi Next.js ha percorso la pagina d...
Polish aziendale a tutta larghezza su 10 pagine
Adotta il modello di impresa moderno (intestazione conveniente + pangrattato + freccia posteriore + guscio flex a tutta altezza + contenuto raggruppato in carta...
Trigger ricostruisce per raccogliere il nome di PersonalLoan entità
L'immagine SecurityService a 761019b è stata costruita prima di condivisa-lib d14dc54 (che ha rinominato l'entità del prestito personale a JPA nome "PersonalLoa...
Esporre PERSONAL LOANS nel tipo di commercio e raccoglitori di fidanzamento
Aggiunge PERSONAL LOANS al COMMERCE TYPES ed EngagementType list in modo da nuovo mercato dei prestiti personali KamoLOS può essere creato dai mercati/nuovi e m...
Evitare Loan / LoanRepository collisione con app ipoteca
KamoInitializerService non è riuscito a boot perché due classi @Entity chiamato 'Loan' e due classi di repository denominate 'LoanRepository' entrambi volevano ...
T6+T7 frontend polish + rapporti org + autopay UI
Smalto frontale (T6): - Nuova lib/format.ts: aiutanti locali-aware Intl — formatCurrency / formatDate / formatDateTime / formatPercentBps. Sostituisce hardcoded...
Tier 6+7+9+10 — frontend polish, org reports, OpenAPI, JaCoCo
T6 (frontend polish): - New /lib/format.ts: locale-aware formatCurrency / formatDate / formatDateTime / formatPercentBps via Intl APIs (replaces hardcoded t...
Livello 4 — LoanPaymentPosting Test unità di servizio
Sei test dell'unità mobile-repository che coprono il cuore della spedizione di pagamento: - No, no. pagamento di $100 contro prestito con $25 commissioni / $50...
Tier 5 lotto di conformità
- OfacSanctionsService: Jaro-Winkler fuzzy match @ ≥0.92 dopo exact-match Passo. Colpisce il punteggio di somiglianza superficiale. Configurabile tramite los.of...
LoanChargeOffReasonCode (IRS 1099-C box 6) + ricerca di audit
- Nuova LoanChargeOffReasonCode enum (A BANKRUPTCY.H OTHER) per IRC §6050P - Loan.chargeOffReasonCode colonna - @Query per i subpoenas del regolatore (loanId / ...
Tier 3 sicurezza + Tier 8 gruppo di pulizia bug
T3 — Sicurezza: - Nuova RateLimitFilter (Bucket4j): 1000/min per IP per webhooks, 10/min per sessione per offerta accetta/decoder/rescind, 60/min generale. Regi...
E' il momento giusto
Usato per riattivare un esistente Il piano PAUSED invece di creare una riga duplicata che orfana quella in pausa.
Tier 2 — Hikari + RestTemplate timeouts + Stripe SDK + Redis cache
- RestClientConfig: single shared RestTemplate bean with 5s connect / 30s read timeouts. MediaServiceClient / NotificationDispatchService / OfacSanctionsSer...
/api/los proxy HMAC-segna intestazioni di identità
Quando LOS PROXY HMAC SECRET env var è impostato, il proxy ora calcola E mi manda. X-Proxy-Signature + X-Proxy-Timestamp accanto al X-Org-Id / Intestazioni X-Me...
Tier 1 critical correctness pass
T1.1 Stripe disbursement strategy: TREASURY (stub — requires SDK upgrade or raw HTTP) / CONNECTED_ACCOUNT (Transfer.create — works in SDK 28.2.0) / MA...
Pagamenti di repo + conteggioByStatus per percorsi caldi
- LoanRepository: conteByStatus / conteByOrganization AndStatus + Pagina <Loan> trovareByStatus(...) / Non e' vero. E' una cosa da fare. ***********************...
Come quello che vedi la spedizione?
Ognuno di questi aggiornamenti atterra automaticamente nello spazio di lavoro. Inizia gratis e guardalo crescere settimana dopo settimana.