Changelog
O que há de novo.
Cada melhoria para a plataforma, como ele envia.
· SecurityService
Infraestrutura de cofre de documentos de membros P4 (docs reutilizáveis entre empréstimos)
- MemberDocumentService: upload de um doc ONCE na ContaBorrowerParty escopo → ImageService cria um Img no Auto-criado imagem-member-vault balde ************* Hashes computadorizado servidor-side) + Linha do catálogo do Documento Membro; lista por parte/conta. Guarda de parte em empréstimo fechada por falha (é membroPartyToPartyAccount). - MemberDocumentController /api/security/member-documents (POST upload multipart, GET list): operadores gerenciam qualquer cofre do partido (LOS VIEW PIPELINE); um mutuário apenas as partes da sua própria conta. O cofre Img é a âncora de reutilização RequerimentoSatisfier (imgId) pontos para satisfazer os requisitos por empréstimo em todo muitos empréstimos (satisfação-ligação é a próxima fatia). Compila limpo; nenhuma alteração de esquema (entidades P1).
· kamo-internal
Oleoduto por transacção — lista por transacção, não por empréstimo (proprietário req)
AplicaçõesPipelineConsole agora lista uma linha por empréstimoTransaction (seu empréstimo representativo + quaisquer empréstimos legados ainda não agrupados), com uma coluna 'Deal / Status' afixada mostrando a derivada O chip de status de grupo, um chip N-empréstimos para negócios multi-empréstimo, e uma bandeira de exceção negada. Fechos **************************** (+ TransactionResumoDTO tipo) e se junta às linhas de empréstimo. Baldes/filtros/viagem re-baseadas nas linhas de representação da transação.
· kamo-internal
Designação do produto padrão do portal KamoMLOS nos produtos de fornecedores (#11)
Uma estrela comuta em cada produto designa o único portal KamoMLOS da org auto-atribuir produto (única activa). Gated via GET /leader-vendores/mlos-readiness: mostrado apenas quando o mercado editado é O mercado líder de hipoteca residencial da org e POS + um mercado de comércio de MORTGAGE são configurados. Reflete/edita o padrão ao vivo via PUT .../products/{id}/mlos-default. (i18n na varredura P6.)
· SecurityService
Infraestrutura de designação do produto P3 por omissão (activa única) + disponibilidade do operador
- Está bem. designa ONE LeadVendorProduct como KamoMLOS da org portal auto-atribuir produto; single-active (demote qualquer outro, org-scoped, fail-closed) via JPQL Actualizações a granel. - Põe-te a andar. GET /mlos-readiness (qual produto é padrão + se POS + RESIDENCIAL MORTGAGE mercado líder + O mercado de comércio MORTGAGE está configurado) — suporta o gate de configurações + mostra o estado atual. Compila limpo; sem esquema/alteração de lib compartilhado.
· SecurityService
Infra- estrutura de primeiro portal de leads P2c
- HipotecaVerticalResolver: resolve o mercado de chumbo de uma org RESIDENCIAL MORTGAGE, MORTGAGE CommerceMarket, LeadVendorProduto designado por defeito, e POS EFICAZ habilitado – um a prontidão determinística lida suportando tanto o portão de configurações (#11) quanto o portal (#12). - PortalLeadService: leads-first — createOrGetAnonymousLead (keyed to an AccountGuid cookie, auto-atribuiu o produto por defeito no mercado hipotecário, falha-fechado na prontidão — NÃO inscrição, NO AppMortgage), patchEstimate, and the sign-in mergeGuidIntoMember (liga o GUID ao A Conta do membro + repares o(s) lead(s), espelhando o histórico de atribuição do LeadAccount escreve). - PortalController **************************** lider POST/PATCH, merge}: anônimo (org-of-host, GUID do cabeçalho confiável do BFF X-Kamo-Guid); mesclar é ***-bound. Compila limpo. Rotas anônimas passam a licençaAll filter chain (controllers self-gate).
· kamo-internal
Administração de fusão de contas UI (MERGE ACCOUNTS)
AccountManager ganha uma ação Merge Accounts (aberto por ************* selecionar exatamente duas contas de clientes, escolher o sobrevivente, opcionalmente manter o duplicado Cliente listrado / membro primário, em seguida, fundir — repare todas as crianças no sobrevivente e Desactiva a duplicata. contasApi.mergeCustomer() → POST /account/customers/{uid}/merge. (i18n chaves a adicionar na varredura P6.)
· SecurityService
Ferramenta de fusão de contas P2a + infraestrutura de transação P2b
P2a — merge de contas de administração (requisito de proprietário A), fechado por MERGE ACCOUNTS: - AccountMergeService: repares EVERY account uid child via UPDATE nativo (bypass JPA órfãoRemover para que os leads/apps do perdedor sobrevivam), dedups the globally-unique account members + (conta, mercado, objectivo) assinaturas, reconcilia liste customer id / primember / FKs ponteiro (sobrevivente-wins + keep-of-loser oversets), soft-desativa o perdedor. Apenas no mesmo org. - AccountController POST ********** *** *** gated by MERGE ACCOUNTS (ou deus). P2b — Infra- estrutura de agrupamento de acordos: - LoanTransactionService: assevereTransactionForApp (grupo de empréstimo único automático na criação, idempotent), deriveStatus (arquivado do membro LoanFileStatus via LoanTransactionStatusDeriver), **************************** (TransactionSummaryDTO), é membro daPartyToTransaction (D52 generalizada para o grupo), backfillOrganização. - HipotecaAppController: create() agora agrupa automaticamente o empréstimo; GET /transactions lists per-transaction (operadores=org pipeline, mutuário=própria conta). - Registre mlos.transaction + mlos.docs repos em SecurityServiceApplication @EnableJpaRepositórios. Esquema já criado pelo KI (P1). Compila limpo contra lib-compartilhado instalado.
· kamo-shared-library
Fundamento da entidade P1 — primeiro-lead / account-centric / transaction-grouped refator
NOVAS entidades (aditivo; KI executa DDL): - TransactionGroupStatus enum + LoanTransactionStatusDeriver: ciclo de vida do grupo derivado (Criado→...→Concluída) enrolado do membro LoanFileStatus (nunca armazenado com autoridade). - AccountGuid (contas): cookie de longa duração GUID↔Account (nulable) para o primeiro fluxo anônimo de leads. - ContaBorrowerParty (contas): identidade compartilhada empréstimo-emprestador (membro opcional) + chave doc-vault. - MemberDocument (mlos.docs): conta/member-level cofre do documento reutilizável. - EmpréstimoTransaction Timeline (+event enum), SharedTransaction Tarefa (+status/severity enums): feed de grupo compartilhado + tarefas. - acordos de recompra para todos os acima. Anexos de Enum (id-stable / ordinal-safe): - LoanFileStatus.SOLD BOARDED(9) — anexo ao END (Armazenamento ORDINAL); + é Terminal; interruptores fixos exaustivos. - Um balde de imagem. - Está bem. — Configurações gerais (serviceType=null) para a ferramenta administrador conta-fusão. Colunas FK (nulable, pined columnDefinition, no default — unique rowid/gen random uuid orphan trap): - LoanFile. Lead.account guid id, ComércioMarket.leader market id, ******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************* **************************** Design: Nenhuma versão.
· SecurityService
Autorização de auto-atendimento do empréstimo (garantia IDOR do empréstimo)
Um mutuário é um simples membro de uma organização sem direitos de operador LOS; podem agir em conformidade com o ONE A sua aplicação é parte — e só essa. Guarda de cama: Primeiro o portão do operador, Caso contrário, uma verificação de parte em empréstimo encerrada por falha (isMemberPartyToApp). HipotecaAppController: Sobrecargas aplicadas para obter, todos os 23 por aplicação escrever endpoints, e os 3 assistentes de repetição. - lista: os operadores vêem o org pipeline; um mutuário vê apenas aplicações próprias. - criar: o operador toma aplicativo (incl. de chumbo); um mutuário cria seu próprio (proprietário) — a menta KamoMLOS. - apagar: operador suspense-direito OU o próprio mutuário; buscas: qualquer autenticado sessão (referência completa as necessidades de admissão); viagem permanece apenas operador. HipotecaProgramController: fechou um IDOR pré-existente no setPersona/setSelecionadoProgram (somente verificação de org) — agora operador-los-role ou empréstimo-parte. Operadores inalterados; mutuários abrangidos pelo proprietário; IDOR de empréstimo cruzado fechado (D52).
· kamo-shared-library
Propriedade do empréstimo-parte emprestador no AppMortgageService
Adiciona os primitivos de propriedade para o self-service do mutuário (um mutuário é um org simples Membro sem direitos de operador LOS): - createBlankOwnedByMember(orgId, memberId): createBlank + selo proprietário anexando (ou reutilização) uma conta cujo primeiro membro é o mutuário. - isMemberPartyToApp(appUid, orgId, memberId): fail-closed loan-party guard — org match E o chamador é o membro principal da conta do aplicativo. - listaOwnedByMember(orgId, memberId): aplicações próprias do mutuário. A propriedade é a ligação com o design. AccountMember já existe, portanto, nenhum esquema/KI. Apenas aditivo (D52).
· kamo-internal
Coluna empréstimo-viagem + filtro de admissão no gasoduto de empréstimo
A grelha de dados sub=pipeline (ApplicationsPipelineConsole) agora mostra pré- tomada o progresso da jornada do mutuário para que os funcionários de org possam rever o status de uma aplicação como o O mutuário completa o seu próprio empréstimo através do portal KamoMLOS. - coluna 'Borrower Journey': chip de estado (Iniciado / Preenchimento / Pronto para enviar) + determinar a barra de progresso + secções n/total, com uma dica pendente; '—' para Empréstimos já obtidos. - 'Borrower Intake' filtro balde: empréstimos com uma entrada de viagem auto-serve ao vivo. - listJourney () Cliente API + BorrowerJourneyDTO tipo + chaves i18n. Fonte de GET /mortgage-apps/journey (D51).
· SecurityService
Endpoint pré-aplicado do mutuário-viagem para o gasoduto do operador
Novo GET **************************** (LOS VIEW PIPELINE) retorna por- DRAFT o progresso da tomada de empréstimo para que os administradores do gasoduto possam assistir a um empréstimo tomar forma enquanto o O mutuário continua a servi-lo através do portal KamoMLOS. EmprestadorJourneyService recompute o assistente de seção do portal completude server-side sobre o gráfico canónico da AppMortgage (controlos de presença tolerantes — os DTO canónicos e os DTOs do cliente do portal têm nomes de campos diferentes). Estado = Iniciado / IN PROGRESSO / PREPARAÇÃO TO SUBMIT sobre 7 seções de pré-submissão; hipotecas reversas ignoram o financiamento Seções, combinando com o portal. Nada persistiu; com um limite de 300 rascunhos/visão. EmprestadorJourneyDTO é um registro do lado do Serviço de Segurança, então não modifique permanece intocado. Parte do gasoduto doc03 reuso (D51).
· SecurityService
Controladores LOS aceitam sessões por empréstimo *** (doc03 §0.1)
BaseLosController agora resolve a sessão do chamador via ChamadorSessionResolver (Atributo validado em X-OTK FIRST — operadores/BFF inalterados — depois uma primeira parte *** retrocesso de cookies) em vez de apenas o atributo X-OTK. Esta é a pedra-chave que permite que o portal de mutuários KamoMLOS alcance /api/security/mortgage-apps/** com sessão real por empréstimo (um mutuário é um membro simples através do padrão login→OTK→validate-otk→*** flow) em vez de uma conta de serviço compartilhada. Para trás. compatível; todos os 7 controladores LOS beneficiam. Compila limpo.
· SecurityService
LOE-Core marcador de programas autoritativo + /programas/escores (doc03 §9 Fase 2)
Porta o marcador do cliente KamoMLOS (lib/los/scoring.ts) para o Serviço de Segurança LOE-Core: LoeCoreScorer pontua o catálogo de programas efetivos da org (base de fundo org sobreposição) contra um mutuário AppSnapshot — LTV/DTI/ocupação/reservas idênticas Verificações do título VA/reverso-idade — devolvendo o ProgramScoreDTO no cliente exato Forma ProgramScore. POSTO **************************** Primeiro servidor: isto envia antes da exclusão do cliente-scorer §9 Fase 3. 3 testes verdes.
· InitializerService
Semente os 17 conjuntos de regras reais do programa (doc03 §9 Fase 1)
Migra os dados autoritários do conjunto de regras do cliente KamoMLOS Arquivos em ********************** (17 códigos, extraídos fielmente) e substitui o placeholder do ProgramSeederRunner por real conjuntos de regras por código carregados do classpath. Idempotente: insere programas em falta e actualiza os espaços existentes "{}" para dados reais, nunca batendo no operador Edições. Aplicado na próxima execução do KamoInitializer (run- user). Pré-req para a Fase 2 §9 marcador do servidor que apaga o marcador do cliente.
· kamo-shared-library
Uma verdadeira fusão profunda para sobreposições de regras de programas de org (doc03 §9 Fase 0)
Substitui a mesclagem M2 last-write-winsOverlay placeholder (que foi descartada silenciosamente A base de referência autorizada em qualquer sobreposição de org) com uma fusão profunda JSON recursiva: org substitui o fornecimento apenas as chaves que eles mudam, objetos aninhados recurse, arrays Substituir por atacado, e uma sobreposição malformada falha segura para a linha de base. Fecha o ProgramaRuleset contrato antes do servidor autoritativo scorer (§9 Fase 2) que apagará o marcador do cliente. Programa/ProgramaService Javadoc re- indicado. 3 testes verdes.
· kamo-shared-library
MlosExtractedEntidade de estadiamento candidata para o gasoduto de ingestão (D48)
O terminal por campo de saída do analisador do MLOSIngestionService: um encenado, revejável candidato à extracção (segmento/fonte-doc FK, targetEntity, fieldPath, cellRef, valor bruto/normalizado, DECIMAL(4,3) confiança, revisãoStatus). Os candidatos nunca promovem em entidades de catálogo canônicos, exceto através do MLOScatalogService's RateSheetSanityGate + aprovação humana. Completa o substrato da ingestão. ExtraçãoTemplate pré-existido). mlos.catalog já em KI scan → tabela cria automaticamente em próxima execução do KI; os serviços executam ddl-auto:none.
· kamo-shared-library
Retirada do perfil do melhor esforço isolado para caminhos de parede legal (D47)
mergeFactsBestEffort executa o write-back de enriquecimento em sua própria transação (REQUIRES NOV) para que uma falha nunca possa reverter a transação do chamador — o salvo write-back para um caminho de decisão legal-wall (AUS/regras internas) cujo A decisão de registo deve persistir independentemente. Salta silenciosamente quando não existe nenhum perfil. +1 shared-lib test (skip-when-absent/delegate-when-presente).
· kamo-internal
Seção de licenciamento baseado em Estado no meu perfil membro
Novo SectionCard (ID NMLS + tabela licenciada por estado com ativamente Fornecendo caixa de seleção e datas de renovação/expiração, renovação<=expiração validada). Preso por... Adiciona rota proxy seguinte, Espelho TS RoleRightType e documentos de design/plano.
· SecurityService
API de licenciamento do Estado-Membro + disponibilidade de lead com licença
Adicionar ao Estado-MembroLicensingController (GET/PUT /api/security/members/{id}/ licença de estado) garantida por direitos STATE LICENSING * com servidor-side renovação < = validação da expiração. Activar acordos de recompra de mlos.legal JPA. Resumo de contexto e a grade de leads-Disponível agora respeita a elegibilidade de licenciamento estatal.
· kamo-shared-library
Licença de membro com sede no Estado + portão de aceitação de chumbo
Reuse mlos.legal StewardLicense como o único por membro/por estado NMLS registro (adicionar ativamenteFornecer Negócios). Adicionar membro-nível Member.nmlsId. Adicionar direitos de licença geral **************************** CreditLeadAssignmentService agora skips hipotecária-líderes Estado de propriedade explícito em que o membro não está ativamente licenciado.
· kamo-internal
Adicionar fonte aos campos de lead mappable
O 'fonte' principal é mostrado na página de detalhe principal, mas faltava na lista de campos de importação; adicioná-lo (caminho 'source') agora que o importador de infraestrutura + CreateLeadRequest suporta isso.
· SecurityService
Mapear uma coluna importada para o campo principal `source`
Adicione o caso "source" ao setDirectFieldOnCreateRequest para que o caminho de mapeamento 'source' seja honrado.
· kamo-shared-library
Adicionar o campo 'source' importável ao CreateLeadRequest + persistir no createLead
O Lead tem um texto livre `source` (mostrado/editado na página de detalhes) mas foi não importável — CreateLeadRequest não tinha nenhum campo fonte, então createLead nunca o definiu. Adicione-o para que as importações manuais possam mapear uma coluna de arquivos para a fonte do lead.
· kamo-shared-library
Adicionar CenárioProfileSource.PRICING para roteirista de cenários FICO/ratio write-back (D45)
· kamo-shared-library
Cenário canônico-facto espinha — derivador de gênese + fatosJson povoar + write-back + overlay matcher (D45)
D1/D45 amplia o consumo de Cenários de Empréstimos. povoa o dormente FactsJson e faz dela a fonte compartilhada da verdade para os fatos do mutuário/empréstimo: - CenárioFactKeys: vocabulário simples-chave canónica + nível (estrutural vs. enriquecimento) + normalize(); o D21 whitelist/deriver/consumidores referenciam estes. - CenárioFactDeriver: promove o D18 LTV/CLTV/HCLTV + derivação categórica fora do MLOSPricingService em compartilhamento-lib (uma casa para fatos derivados de entidade). - EmprestadorScenarioProfileService: produceFromUrla agora preenche fatos estruturais (preservando o enriquecimento); resolveFacts() para aconselhamento gap- fill; mergeFacts () Retirada que filtra para o nível de enriquecimento (genesia possui estrutural, D45.3). - CenárioFacts.fillGapsFrom(): advisory merge (request wins, profile fills gaps). - InvestorOverlayMatcher: fósforo puro e seguro (apenas presente e violador). Sem alteração de esquema/KI (actionsJson coluna pré- existe). 27 testes em verde.
· kamo-internal
Página de Regras de Canal — completa a superfície de configuração §3.2
· SecurityService
Coleção de regras de aplicabilidade do canal CRUD — completa a configuração §3.2
createChannelRule/update/delete na coluna de recolha plana D31 (nível de perfil, org erro-fechado, WORM change-log); controlador /canal-rules GET/POST/PUT (delete via activo: falso). Escopo/canal/resultado requerido; autoridade/financiamento + janela eficaz opcional. Última entidade de configuração §3.2.
· kamo-internal
Activação do Produto (por programa, versionado)
· SecurityService
Configuração de habilitação do produto — por programa monoativo, datado de forma eficaz
**************************** (demote-então-inserir programado) + lê; controlador /product-enablements GET (ativo por programa) / PUT (publicar). Corpo carrega programId, habilitado, ciclo de vidaVariante, canalRestrição, eficazDe.

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