Ir para o conteúdo
KAMOUniverse

Changelog

O que há de novo.

Cada melhoria para a plataforma, como ele envia.

  1. · kamo-internal

    Interface P1 — fila de charge-off + linha do tempo de auditoria

    - losApi: chargeOffQueue / confirmChargeOff / auditByLoan - Está bem. Página da fila de revisão D120; usuário org reviews cada empréstimo, adiciona uma razão, cliques Confirmar → POST /api/los/charge-off / {id} / confirmar. Superfícies da infraestrutura LoanChargeOffService. - Novo componente <LoanAuditTimeline>: lê **************************** e faz o fluxo completo do LoanAuditEvent (tipo do ator, tipo, quantidade, timestamp). Projetado para conectar na página de detalhes de empréstimo do lado org.

  2. · kamolos

    P1 lote — webhooks estado avançado, crons, comércio vertical

    Movimento monetário (P1): - EmpréstimoPaymentPostingService: markSuceedAndPost / markFalhou / markReturnedAndReverse / markDesembolsoSucedeu / markDrawDesembolsado. Ordem de atribuição bloqueada: taxas → juros → principal. Avançamento automático do estado DELINQUENT ↔ ACTIVO ↔ PAID OFF baseado no equilíbrio resultante. - StripeWebhookService não é mais log-only: payment intent.succeed / payment failed / charge.refunded (ACH return) / discurse.created+closed / payout.payed+ falhou todo o avanço do livro de registros via PostingService. - NachaReturnCode + RetryScheduler: roteamento de código R conforme com NACHA R01/R09 tentar até 2× / 5 dias de intervalo, R07/R10/R29 revogar o mandato, retries esgotado flip LoanPagamentoMétodo → REQUIRES REVERIFY. Materialização comercial-vertical: * * **************** agora cria Engajamento (EMPRÉSTIMOS PRÓPRIOS, COMPROMISSOS), Compromisso (ACTIVO, com preços + termos JSON instantâneos), Ordem (AUTHORIZED, subtotal=principal), e threads seus IDs voltar para Loan.commitmentUid / engaymentUid / OriginaryOrderUid in A mesma transacção. Trabalhos de Cron (lógica real, não esboços): - CoolingOffAdvanceJob: coloca um pagamento PENDING DISBURSEMENT OUT para TODOS OS DISCURSOS DE PEDIDOS Empréstimo cuja refrigeração tenha decorrido. - InteresseAccrualJob: exercício diário de juros simples no principalBalance Empréstimos ACTIVO + DELINQUENT. - DeclaraçãoGenerationJob: prestação por data, LOC por ciclo declaração com aproximação ADB + avaliação anual da taxa + pagamento automático A agendar. - AutoDebitRunJob: dispara PENDING auto-débitos + pagamentos DISBURSEMENT OUT + NACHA retries via StripeConnectService com chaves de idempotência. - ReconciliaçãoJob: re-sum noturno de taxas/principal/equilíbrio do registro; correção de deriva registrada + auditada. - ReminderDispatchJob: puxa notificações SCHEDULED para além do agendadoFor e entrega através do NotificationDispatchService. Notificações: - Está bem. HTTP POST real para EmailService (/api/email/transactional/send) e VOIPService (/api/voip/sms/send, /api/voip/voice/send), templateKey = "empréstimo.{kind lowercase}". Validação: - LoanProductValidationService: aplica APR ≤ limite de estado (por tipo), Controlos do tipo proibidos, sanidade mínima/máxima-principal. Ligado LoanProductService.create + update. Carregamento: - LoanChargeOffService.queue() lista empréstimos D120; .confirm() muda status CHARGED OFF e escreve um evento de auditoria CHARGE OFF RECORDED. - LoanChargeOffController expõe **************************** Navegação de auditoria: - EmpréstimoAuditEventController expõe ****************************

  3. · kamo-internal

    P0 endurecimento — formulários, resolução de sessão, métodos de pagamento

    Formulários (org-side): - Está bem. /{productUid} editar páginas - New LoanProductForm: princípios / preços / limites / termos / conformidade seções, campos de conhecimento do tipo (instalação vs LOC), nota promissória modelo UID, códigos de estado permitidos - Está bem. produto seleção (apenas produtos ativos deste mercado), membro do mutuário, principal, termo opcional, estado do mutuário, "salvar rascunho" vs "enviar" - /settings/features/lending: org-side Stripe Connect onboarding page (Chamas ************* redireciona para Stripe) Endurecimento do lado do empréstimo: - Novo useCurrentSession () gancho resolve membroId/orgId de /api/user- info (caminho *** canónico) — substitui o KMEMBER/KORG falso cookie lê em Meus Empréstimos, Oferta Detalhe, Empréstimo Detalhe, Empréstimo Definições, PipelineLoanOffersTab, PipelineActiveLoansTab - Novo empréstimoPagamentoMétodosCard: mutuário pode vincular banco ACH (Stripe payment method id + mandato) ou cartão, ver métodos ligados, definir padrão, revogar; embutido na página /empréstimos/[empréstimo] - losApi: + startStripeConnectOnboarding Configurações nav (2 de 3 lugares por regra de memória): - ConfiguraçõesStatusWindow adiciona "Produtos de Empréstimo" sob Comércio + entrada de rota para **************** - (sidebar.tsx não tem entradas POS - confirmado no-op)

  4. · kamolos

    Endurecimento P0 — Endurecimento de ligação de riscas + achatamento de PDF

    - Corrigir as importações de EsignClient: EsignGenericEnvelopeRepository / EsignSignSignnatureRepository viver em .esign.repos, não .esign raíz - Novo StripeConnectController POST **************************** cria org Custom-account + retorna URL de onboarding (delega para StripeConnectService existente) - MediaServiceClient.fetchBlob: puxa os bytes de uma bolha armazenada para workflows achatados/re-render - Novo PdfFlattenService: adiciona um E-SIGN Assinatura conforme à lei página de certificação para a divulgação de fonte PDF para cada capturado assinatura (nome-tipo renderizado em itálico; signater/IP/UA/SHA-256 + envelope UID gravado na página). Armazena a nova bolha achatada via MediaService e devolve blob id + SHA-256. - EsignClient.submitAssinatura agora achata após a marcação povoações **************************** + assinadoDocumentoSha256. Aplanar logs de falha, mas não reverter a assinatura em si.

  5. · kamo-internal

    /api/los/* rota proxy → KamoLOS via DNS k8s

    Espelhos do /api/billing/[[...caminho]] Proxy de BillingService: - *** sessão resolvida via Redis; X- Org- Id + X- Membro- Id enviada - /api/los/webhooks/* skip session auth (Stripe signature- verified at KamoLOS); Cabeçalho de assinatura de listras é passado - God-mode header passe-through preservado - 502 enrolando em falhas a montante

  6. · kamo-internal

    Adicionar tipo de comércio PESSOAL LOANS frontend

    - EngagementTypeLabels: extend Engagement Tipo união + vocabulário - MarketCardGrid: cor PESSOAL LOANS (#14b8a6) + Ícone do Landmark + contador - Página de detalhes do mercado: novas abas (Produtos de empréstimo / Ofertas / Empréstimos ativos / Regras do Estado) sobre o comércioType === - losApi.ts: superfície total de DTO + invólucro fino de busca batendo /api/los/* para produtos, ofertas, empréstimos, pagamentos, saques, declarações, pagamento métodos, pagamento automático, regras de estado, submissão de assinatura ESign - Novo MercadoProdutosTab / MercadoEmpréstimoOfertasTab / MercadoEmpréstimos ActivosTab / MercadoRegras de Estado - PipelineView: entrada VERTICAL ICONS para empréstimos pessoais - PipelineVerticalSection: PERSONAL LOANS in hasSubTabs + render block rotas Ofertas (intenções) + Empréstimos ativos (compromissos) sub-tabs - New PipelineLoanOffersTab / PipelineActiveLoansTab - Emprestador (membro) /superfície dos empréstimos: índice, /empréstimos/ofertas/[oferta Id] com fluxo de aceitação e sinal (assinatura tipográfica → Submissão ESign → aceitar-oferta), /empréstimos/[empréstimo] com saldo, declarações, pagamento história, Pay Now, desenha-para-LOC - configurações/page.tsx: comércio nav adiciona entrada "Produtos de empréstimo"

  7. · kamolos

    Origem inicial do empréstimo pessoal + serviço de manutenção

    New Spring Boot 3.1.5 / Java 21 microservice modelado no BillingService. Possui domínio pessoal de empréstimo de ponta a ponta: - LoanProduct / LoanOffer / Loan CRUD com camada REST + DTO - LoanLifecycleO serviço materializa empréstimo + comércio Engajamento / compromisso na aceitação da oferta (um txn) - Empréstimo Pagamento + EmpréstimoDraw + EmpréstimoDeclaração + EmpréstimoMétodo de Pagamento + EmpréstimoRecorrente PagamentoPlano de serviços + controladores - Matemática: Motor de Amortização (Reg Z Apêndice J), InterestAccrualEngine (ACT 365 / ACT 360 + ADB), Locador de Pagamento (fees→interesse→principal) - StripeConnectService (Conta personalizada a bordo, desembolso ACH, ACH débito) + StripeWebhookService (idempotente via LoanStripeWebhookEvent) + endpoint webhook específico para conexão - TilaRendererService renderiza caixa Reg Z Schumer (instalação) / Divulgação aberta (LOC) via PDFBox em MinIO - StateRuleSelfHealService boot-loads loan state rules.json (50-state Registo + Tampa MLA + Refrigeração) — modelo de conciliação de direitos - EsignClient + EsignSignController completar o membro que falta caminho de submissão da assinatura (escreve EsignGenericEnvelope + SinalAssinatura em lib-compartida) - NotificationDispatchService com agendamento dedup-key - Trabalhos de Cron: OfertaExpiração, DeclaraçãoGeração, DelinqüênciaSweep - manifestos k8s (configmap / implantação / serviço), Dockerfile, Fluxo de trabalho do Forgejo CI (conjunto duplo K1M1+K2M1) alinhado com Convenções de BillingService

  8. · kamo-shared-library

    Adicionar PERSONAL LOANS tipo de comércio + pacote de entidade

    - CommerceType.PERSONAL LOANS + Engajamento paraleloTipo + vocabulário - Entradas BuiltinVendorCategories para fornecedores de empréstimos pessoais - 15 entidades da JPA (EmpréstimoProduto, EmpréstimoEstatal, EmpréstimoOferta, EmpréstimoDecision, Loan, LoanDraw, LoanPagamento, LoanPaymentMethod, EmpréstimoRecorrentePlano de Pagamento,Declaração de Empréstimo,EmpréstimoFee,LoanDisclosure, EmpréstimoAuditEvent, LoanStripeWebhookEvent, LoanNotificação) + 15 acordos de recompra - 22 personal loans enums (status, nível, tipo, fonte, canal, etc.) - esign EsignGenericEnvelope + EsignAssinatura + acordos para não hipoteca Criação de envelopes e captura de assinatura virada para o membro - KamoLOS → KamoMLOS comentários apenas refs atualizados através da Organização / ComércioServiço de Mercado / ComércioServiço O gerenciamento de esquemas permanece com o KamoInitializerService; o KamoLOS usa ddl-auto: nenhum.

  9. · kamo-internal

    Os uploads de álbuns de fotos usam o mesmo oleoduto WS que a aba Envios

    Extrai o pipeline de upload doc-manager (hashing → dedup check → register-or-upload → Conversão orientada para WebSocket) em um uso reutilizávelImagingUploads hook. O gancho possui a máquina de estado por arquivo, o progresso XHR, e a assinatura WebSocket de conversão ao vivo que a aba Envios usa. Diálogo foto- álbum reescrito para consumir o gancho: - Fila de arquivos automaticamente e processar um de cada vez. - Cada arquivo em voo mostra sua etiqueta atual de palco (Hashing → Checking → Uploading → Converting → Complete) com um LinearProgress, um check / erro / ícone spinner, e um botão Retry após falha. - O diálogo agora exibe a mensagem de erro real do servidor (por exemplo, "Falhou em enviar para MinIO") em vez de engolir, e um Save é bloqueado enquanto os uploads ainda estão em voo. - Arquivos carregados com sucesso automaticamente anexam ao álbum como itens.

  10. · kamolos

    Ocultar programas isActive=false de mutuários em tempo real

    useProgramCatalog agora filtra programas com isActive=false antes Devolvendo-os ao assistente de empréstimos. A bandeira é calculada do lado do servidor como (base.isActive AND active.isActive), então quando um credor alterna um programa desligado na aba de configurações dos Programas de Hipoteca, o cartão correspondente para que figura na selecção persona/programa — limitado pelos anos 60 existentes teto de tempo velho.

  11. · SecurityService

    Oferta de programas de backfill para mercados hipotecários existentes na inicialização

    O DataLoader agora chama **************************** após o enchimento AppMortgage-engagement. Varrer todos os MORTGAGE existentes ComércioMarket e garante que suas ofertas de programa são providas. Capas mercados que foram criados antes do createMarket-side hook desembarcado — especificamente os que o usuário adicionou via Markets & Fields antes disso Preparar. Idempotente: um logs de sistema totalmente bloqueados "todos os mercados já providos" e saltitantes.

  12. · kamo-shared-library

    Bootstrap ofertas de programa de hipoteca no mercado criar + backfill boot

    Quando o usuário cria um CommerceMarket com commerceType=MORTGAGE — via Guia de configurações de mercados e campos — o mercado precisa de programas Ofertas sob ele Para superfícies comerciais a jusante apontar intenções. Anteriormente só isto aconteceu lazily no primeiro AppMortgage criar, então hipoteca recém-acrescentado os mercados ficaram vazios e os administradores do lado do KamoLOS não viram efeito ao adicionar um. - Não, não. Depois de salvar. Embrulhado na tentativa/captura para que uma falha programa-semente não bloqueie a criação de mercado (KamoLOS lê programas do Registro do Programa, não Ofertas). - Está bem. varreduras todos os mercados de MORTGAGE existentes e garante que suas ofertas sejam providas. Usado pelo SecurityService DataLoader na inicialização para cobrir mercados criados antes Este gancho aterrou. Idempotentes — botas em estado estacionário não funcionam.

  13. · kamo-internal

    Duplicar aglutinantes para que os usuários possam garfo sem afetar o original

    Adiciona uma ação "Duplicar" acessível a partir do menu de contexto da lista de pastas e de um novo botão no cabeçalho do editor. A duplicata começa a partir dos metadados do aglutinante de origem + itens + modificadores, de propriedade do usuário atual sem compartilhamentos, e é automaticamente selecionada para que o usuário pouse no novo branch imediatamente. Fios: - Está bem. rota proxy - duplicateBinder () in binderApi.ts and useBinderStore - Item de menu "Duplicar" no BinderListPanel (funciona em qualquer aglutinante visível – de propriedade, compartilhada ou modelo) - Duplicar botão ícone + spinner no cabeçalho BinderEditor

  14. · DocsService

    Adicione o POST **********************

    Deep-copies um aglutinante que o solicitante pode ver (proprietário, compartilhado, ou modelo) em um aglutinante novo propriedade do solicitante. Copia todos os itens (DOC, SEPARATOR, GENERADO) com ordem, tipo, configJson e modificador por instalação sobrepõe-se intacto; modificadores de todo o aglutinante de cópias; deixa os documentos Img subjacentes sozinhos (ambos os aglutinantes referenciam os mesmos documentos). A cópia começa sem compartilhamentos e éTemplate=false.

  15. · kamo-internal

    Programas de hipoteca alternam + ligação profunda de engajamento MORTGAGE

    - HipotecaProgramsPanel agora envia um interruptor real em cada cartão de programa com atualização otimista + retrocesso na falha. Alternando uma chamada de programa E reflete o estado ativo efetivo computado servidor-side da base + sobreposição. - O novo ponto final. - /commerce/engagements/[id] página: Ligação de aplicação /aplications/{linkId} (a página de detalhes do URLA), não a falta **************************** Engajamentos de MORTGAGE redirecciona automaticamente para /aplications/{linkId} ao carregar para que os usuários aterrem em detalhes URLA diretamente em vez da visão de engajamento genérica.

  16. · SecurityService

    PUT /programs/{code}/active + deprecate legado hipoteca POS endpoints

    - O Programa de Hipotecas ganha o Controlador. com corpo {"isActive": bool}, fechado em LOS TAKE APLICATION. Delegados * ************* que aumenta a fila OrgProgramOverride. - Está bem. getMortgageAppById, createMortgageApp, updateMortgageApp, updateMortgageAppStatus tudo marcado @Deprecated with javadoc apontando chamadas no URLA-fidelity /api/security/mortgage-apps endpoints. Os caminhos POS legados permanecem funcionais para back-compat.

  17. · kamo-shared-library

    Per-org habilitar/desativar + depreciar legado comércio somente caminho de hipoteca

    - Está bem. upserts uma linha OrgProgramOverride com registroState.isActive=desejado; listForOrg now AND's the base program bandeira ativa com a sobreposição, então uma sobreposição desativada carrega a dupla significando "esta org desativou explicitamente este programa." - OrgProgramOverrideRepositório adiciona findAllByOrganizaçãoId e * ************* para o topo + listaForOrg caminhos. - Está bem. / findMortgageAppById / **************************** / updateMortgageApp / updateMortgageAppStatus são @Deprecated. Eles operam apenas no comércio Intenções marcadas LOAN APLICATION e não criar ou ler URLA AppMortgage registros — mantidos para back-compat com ******************* mas novo código deve usar AppMortgageService + /api/security/mortgage-apps.

  18. · kamolos

    Dia escrubável tema da noite com sol-lua SkyToggle

    - Contínuo t [0,1] unidades de posição de cena ~25 propriedades personalizadas CSS em :root via linear RGB interpolação entre o dia de papel quente e âncoras noturnas de aurora em lib/scene/palettes.ts - Predefinição da hora local do dia na primeira visita; sobreposição manual é pegajoso em um cookie, com um botão clock-icon para re-ativar auto seguir - SSR ScenePainter assa a paleta resolvida antes da primeira pintura não há FOUC nas visitas de retorno; o modo automático de primeira visita facilita do dia para o relógio local t sobre ~1.4s - SkyToggle: polegar pointer-draggable cujo sol- lua glifo gira em tempo real com t e morphs entre sol com raios e lua crescente - PageGlow + StarField camadas ambiente: âmbar sol-glow superior-esquerda em dia, lua fria brilho superior-direita à noite, ~80 estrelas semeadas desaparecem em passados crepúsculo e brilho através de reduzido movimento-consciente keyframe - Muda o tema MUI no limite do crepúsculo; cor do corpo CssBaseline leituras de CSS vars para interpolação permanece contínua - Descarta a classe escura endurecida + esquema de cores; corrige dois long-stale -- surface- base (falta de prefixo de cor) em JourneyCrest e Cliente de Cerimônia

  19. · kamolos

    Expor as UID de envolvimento/intenção/compromisso

    AppMortgageDTO agora carrega os identificadores de ciclo de vida do comércio que o A infraestrutura do Serviço de Segurança preenche todos os pedidos de hipoteca. Kamolos não os usa ativamente ainda, mas digitando-os através significa futuro affordances face ao mutuário ("seu pedido foi autorizado") pode referenciar a camada de comércio diretamente sem passar pelo modelo URLA.

  20. · kamo-internal

    Mostrar contexto de comércio + Página de configurações de programas

    - /aplicações herói agora lê "Comércio > Hipotecas Residenciais · URLA 2021" assim, o pessoal vê a hipoteca como uma vertical do módulo de comércio, não uma Oleoduto autónomo. - Novo guia de Programas de Hipoteca em configurações de Comércio — catálogo somente de leitura programas de empréstimo (CONV/FHA/VA/...) com estado ativo e versão do conjunto de regras. Configurações de navegação atualizadas nos três locais (subTopics, routes, labelFor). - AppMortgageDTO/ResumoDTO + novo espelho de tipos ProgramDTO/LoanProgramCode as alterações de lib compartilhado (engajamentoUid / intentionUid / commitmentUid). - hipotecaApps.listPrograms() atinge o endpoint /programas existente.

  21. · SecurityService

    Aplicar direitos LOS + /commerce/engagements endpoint

    - HipotecaAppController: todos os terminais agora portões em RoleRightType. Leituras requer LOS VIEW PIPELINE; a criação de uma nova aplicação requer LOS TAKE APLICATION; as edições aceitam qualquer função de escrita LOS (tomar / processo / underwrite / close / suspense); excluir requer LOS SSUSPEND OR COMTHDRAW. A conta de serviço do KamoLOS já carrega o conjunto completo do LOS direito para que o A viagem do mutuário não é afectada; os utilizadores do pessoal estão fechados por seu papel. - CommerceEngagmentController: (lista com filtros tipo/estado/data) e GET .../engajamentos/{uid} (detalhes), Fechado em ACESS COMMERCE. Esta é a contrapartida vertical-agnóstico para o Endpoint hipoteca-apps — mesmo formato de fio se você estiver lendo um hipoteca, uma ordem de venda a retalho, ou uma reserva de aluguer.

  22. · kamo-shared-library

    Fio URLA hipoteca em Engajamento/Intenção/Compromisso

    A hipoteca é uma vertical do sistema de comércio — juntamente com o comércio retalhista, o aluguer, serviços, assinaturas e aquisições. Isto liga a hipoteca URLA-fidelity pilha para o ciclo de vida de comércio de domínio diagnóstico para superfícies transversais (pipeline painel, análise, portal do cliente) ver hipoteca como qualquer outro Compromisso. - Aplicação: novo compromisso id / intention id / commitment id FKs (nulable for linhas legendárias). - ********** *** ***inicia a Mortgage da orgia ComércioMercado + uma Oferta por EmpréstimoProgramCode no primeiro aplicativo criar; liga Engajamento + Intenção a cada AppMortgage; espelhos LoanFile. status em Intent.status e Engajamento. Estado; materializa um compromisso em FINANCIADO com a imagem termos empréstimo. Idempotente de ponta a ponta. - AppMortgageService: createBlank/createFromLead anexar ao engajamento; setSelectedProgramCode atualiza a oferta da Intenção. - EmpréstimoPipelineService.transição espelhos após cada transição; comércio falhas do espelho não bloqueiam a progressão do URLA (log + continue). - AppMortgageDTO / AppMortgageResumoDTO expor engajamento UID / intentionUid / compromissoUid para o frontend.

  23. · kamo-internal

    Adicionar página do Organizador com aglutinantes, separadores, documentos gerados

    Adiciona o Organizador ao gestor de documentos: - Novo separador "Organizer" (posição 4) com uma lista de aglutinantes + janela dividida do editor; tabulações existentes mudam para a direita - A ação "Adicionar ao Organizador" em cada linha de documentos abre um seletor de aglutinantes (ligadores existentes ou criar novos) - Editor de binders: itens arrastar-para-reordenar (HTML5 DnD), adicionar Separador de Páginas (color + label via ModernColorPicker), adicionar Gerado Doc (Cover Page, Table of Contents, Photo Album, Word Count) - Álbum de fotos suporta upload-novas fotos (também adiciona ao gerenciador de documentos) e navega-existente - Painel modificador de binder-wide reutilizando a forma modificadora de esign (números de página, etiqueta, marca d'água) - O modificador por doc-instance substitui- se através de uma janela por item - Modo de visualização renderiza o PDF mesclado em um iframe - O botão Baixar invoca /api/docs/binders/{id}/render Nova loja Zustand useBinderStore, REST client app/utils/binderApi.ts, e Next.js proxy routes under /api/docs/binders/* espelhando o padrão de proxy de imagem existente.

  24. · DocsService

    Adicionar infraestrutura do organizador — CRUD, renderização, documentos gerados

    Nova superfície REST sob /api/docs/binders para o recurso Organizador: - BinderController: CRUD, item add/update/remove/reorder, share, render - BinderService: verificações de acesso com escopo de org, visibilidade proprietário/share/template, gerenciamento de posição de item - BinderRenderer: binder-pass merge (deferred ToC/WordCount), aplica por instance e modificadores de aglutinante-wide via PdfBuild compartilhadoUtils - Gerado-doc registro com renderizadores para Página de Capa, Índice, Contagem de Palavras, Álbum de Fotos (usa MinIO para bytes de imagem) Reusações ********************** para médicos modificados por esígnia e************ para controlo de acesso.

  25. · kamo-shared-library

    Adicionar entidades e repositórios do Binder/BinderItem/BinderShare

    Adiciona a camada de persistência para o novo recurso doc-manager Organizer: - Binder (Id Longo, membro proprietário, org-scoped, isTemplate, aglutinante-wide modificadorJson) - BinderShare (UUID, membro do destinatário, papel READ/WRITE) - Repositórios JPA de dados de primavera com consultas de org-scoped e uma união "visível para membro" (proprietário + modelo compartilhado +) O esquema é captado automaticamente pelo KamoInitializerService via ddl-auto da Hibernate.

  26. · kamolos

    Glimmer o banner de teste, caber no viewport, adicionar consentimento de cookies

    - TestModeBanner publica sua altura para --kamolos-banner-h e globals.css subtrai-o da tela min-h para que a visão home no mais tempo transborda o viewport pelos pixels do banner. - Banner ganha um brilho de âmbar deslizante + pulso de sombra lento para que lê como um aviso ativo, espelhando a barra de visualização de marketing. - Novo CookieConsentBanner (Aceitar tudo / Gerenciar com análise comutar), reeskinned da versão de marketing para usar o escuro aurora surface + per-tenant --org-primary /--org-gradient.

  27. · kamolos

    IDs NMLS da Surface SAFE Act para o mutuante + LO atribuído

    Adiciona LoContactCard com avatar, pulso de presença, ligação NMLS verificada, e ações de chamada/email/mensagem na parte superior esquerda do herói e aplicar superfícies, então O cedente de empréstimo licenciado do mutuário (nome + NMLS ID) é sempre um «Relatório de informações» O credor O NMLS do rodapé é promovido a um comprimido de confiança "Licenciado · NMLS #", e useAssignedLO agora retorna uma falsa demonstração LO até o empréstimo-file LO atribuição Terras. O LoGuideChip reverte apenas para voz, uma vez que o LO tem sua própria superfície.

  28. · kamolos

    Demo lender auto-loads when no real tenant resolves

    The reason "still not branded" — no real tenant org existed for the hostname being tested, so the SSR fetch returned null and every lender-facing surface fell through to the bundled Kamo defaults. The branding system was working; it just had nothing to brand WITH. Now ships a complete demo lender that auto-loads as the fallback when the real fetch returns nothing AND stubs are allowed **************** the default). Production with stubs disabled still falls through to bare Kamo defaults so we don't ever ship a real borrower to "Apex Mortgage". - lib/org/demoOrg.ts: "Apex Mortgage" — burgundy (#8B1538) primary and gold (#D4A24C) secondary, deliberately far from aurora so the branded effect is unmistakable. Full populate: tagline ("Three generations of getting you home."), NMLS #123456, support phone + email, year established 1989, both EHO + EHL marks, linear-135 gradient direction. New assetBasePath: '/demo-lender' on the org type tells ThemeLogo to load /demo-lender/logo-full.svg before trying MinIO or the global fallback. - **************** + logo.svg: real Apex Mortgage wordmark and mountain-peak mark in the burgundy → gold gradient. Not just a wordmark, an actual lockup. - lib/org/fetchOrganization.ts: returns DEMO_ORG when upstream is unreachable or no org is registered AND stubs allow it. Real-host / real-tenant resolution wins when present. - components/theme/ThemeLogo.tsx: consults useOrg().assetBasePath and puts that prefix at the front of the candidate chain. Demo lender's logo lands; real tenants' MinIO assets still resolve first when populated. - app/layout.tsx: <link rel="preload"> tracks the same priority order, so the SSR preload targets the demo lender's logo when demo mode is active. - **************** when org.id === 'demo-apex', the banner calls out "Showing the demo lender (no tenant org configured for this host)" so testers know which brand they're seeing is canned. Build 32/32, 140 tests pass. Reload the borrower app and you should now see the Apex Mortgage logo + name in the header, the burgundy and gold throughout the CTAs and ribbons, "Welcome to Apex Mortgage." on the landing hero, NMLS #123456 + EHO + EHL in the footer, "Call Apex Mortgage (800) 555-2739" in the help sheet.

  29. · kamolos

    Faça do credor a marca principal, não um sotaque

    Reframe o aplicativo voltado ao mutuário de "produto Kamo com acentos emprestadores" para "produto do lender, Kamo como o motor." Cada superfície agora leva com A identidade do credor. - LenderLockup ******************* marca utilizada em todo o lado. Escalas sm → md → lg → xl → herói. Pares o logotipo (ou wordmark backback na cor primária do mutuante) com o nome do credor; tagline opcional abaixo. Usado por cada superfície que "Estou no site do meu credor." - EmprestadorHeader — barra de cabeçalho cresce para h-14/h-16, logotipo + nome do emprestador sempre visível (tamanho="md" forceWordmark), com sombra de gota O credor é primário. A última marca de canto de 24px desapareceu. Uma nova clique-to-call telefone botão fica ao lado de Ajuda com o emprestador borda primária + brilho; no celular ele colapsa para um botão de ícone. A a fita de acento é 4px (was 2px) e ainda faz a pane do gradiente do emprestador. - Herói da página de desembarque — centrado, dominado pelo lockup emprestador no herói escala dentro de um cartão de vidro com forte --org - brilho primário. Acima da fold lê "Bem- vindo ao {Nome de Lender}." (o emprestador clipped gradiente nome é o título), com tagline do credor como o subtítulo. Uma pílula colorida diz "{Lender} · Empréstimo a bordo" em vez de genérico "Kamoville". O botão CTA é maior e carrega um forte --org-primary brilho exterior. - LenderFooter — linha de atribuição completa: nome do mutuante + NMLS Consumer Acesse link + telefone + e-mail + site + marca EHO/EHL. Linha de direitos autorais lê-se "© 2023–2026 {LenderName}. Todos os direitos reservados." "A bordo de Kamo" crédito. Visível através de superfícies herói. - HeroBrandIntro — splash habita 3.4s (era 2.4s), shows na primeira visita E cada 30 minutos de retorno ocioso (era uma vez por sessão). Carta de logotipo cresce tamanho = "hero" dentro de um cartão de vidro mais forte com um mais pesado --org-primary brilho exterior. "Bem- vindo ao {Nome de Lender}." é o título; O slogan do credor é a legenda. - genereMetadata — Next.js template title é agora `%s · {LenderName}` com o padrão sendo apenas o nome emprestador. Cada página infantil lê emprestador-primeiro na guia do navegador e cartões OG. nome do site, título e descrição de todos os fluxos do registo de org. Construir 32/32, 140 testes passar. Se a configuração do seu inquilino tiver preenchido tagline / nmlsId / telefoneSuporte / e-mailSuporte / anoEst / corPri / corSec / logotipo ativo, o site Agora parece sem ambiguidades com o produto do seu credor. Sem nada povoado ele graciosamente degrada-se para "Kamo" padrões.

  30. · InitializerService

    Migração para as colunas da marca face ao mutuário + divulgação

    Adiciona as sete colunas nuláveis à Organização da Biblioteca- Partilhada do Kamo entidade declara agora (TAGLINE / NMLS ID / PHONE SUPPORT / EMAIL SUPPORT / IGUALDADE DISCLUSÃO / ON PRIMÁRIO TEXTO/DIRECÇÃO GRADIENTE) o aplicativo de mutuário kamo-los pode pegar a marca do credor sem esquema erros nas linhas de orgs existentes. @Order(35) — é executado após LogoFullExtMigrationRunner (30) e antes LeadEmpresaColumnRunner (40). Idempotente via COLUNO ADD SE NÃO EXISTE; seguro para repetir. Por política do projeto, este arquivo não é executado aqui — KamoInitializerService é iniciado pelo usuário.

Seu universo está esperando.

Comece gratuitamente em minutos.Adicione produtos sempre que estiver pronto — sem migração, sem novos logins.

Gratuito para sempre — não é necessário cartão de crédito