Changelog
O que há de novo.
Cada melhoria para a plataforma, como ele envia.
· kamo-internal
Página de políticas — configuração de preços/capital/serviking com data efetiva
Novo HipotecaPolíticasTab: versão ativa atual + publicar-nova versão + versão histórico para cada uma das três políticas efetivas; configTypes/configApi + tab Registo.
· SecurityService
Políticas de perfil actualizadas com eficácia — publicação de preços/capital/serviço
Novo MlosPolicyWriteService (isolado; seus próprios repos para que a configuração- coleção escreva- serviço é intocado): versão demote-então-inserir monoativo na mesma auditoria coluna vertebral. Controlador /pricing-policy, /capital-policy, /serviking-policy GET (atual+ history) / PUT (publique nova versão). Os invariantes da Política de Serviços SCRA/FDCPA permanecem verdadeiros.
· kamo-shared-library
Interface de política versionada para políticas atualizadas
Preços/Capital/Política de Serviço implementá-lo para que uma publicação de rotina impulsiona o Versionamento monoativo demote-então-inserir.
· kamo-internal
Entrega do investidor + subeditores da regra do compromisso
Os ganhos da linha de investidores expandidos Entrega (comportamento de financiamento / caminho de execução / envio) e compromisso (tipo / min pull-through % / par-off) editores ao lado delegação + sobreposições; configTypes/configTipos Api + chamadas.
· SecurityService
InvestidorConfig entrega + compromisso regras sub-coleções CRUD
**************************** (+atualização/exclusão) na coluna de configuração D31 (org fail-closed via o investidor-mãe, WORM change-log por linha); /investidores/{id}/regras de entrega + /regras de compromisso GET/POST/PUT. Completa o último InvestimentoConfig sub-colecções diferidas de [04].
· kamo-internal
Subeditor de sobreposição da caixa de crédito do investidor
HipotecaInvestidoresA linha de investidores expandida da Tab ganha um OverlayEditor (FICO/LTV/DTI/ reservas/doc/geo aperto + comparador + programa opcional + janela eficaz) ao lado do editor de delegação; configTypes/configApi sobreposição de tipos + chamadas.
· SecurityService
InvestidorConfig credit-box sobreposição sub-colecção CRUD
************* na coluna de configuração D31 (org fail-closed via o investidor-mãe, WORM change-log por linha, configVersion padrão 1); /investidores/{id}/sobreposições GET/POST/PUT (delete via ativo:false). Completa o Taxa de investimentoOverlay diferida de [04].
· kamo-internal
Sub-nav de altura total com ligação à direita + texto de contraste superior
- Mova o sub-nav da seção da esquerda para um painel de altura direita que rola independentemente; o conteúdo do cabeçalho + forma tem a largura restante à esquerda e rolagem por conta própria (duas regiões de rolagem independentes em md+; pilhas com navegação em cima para telas estreitas). - Acessibilidade: escurecer todo o texto secundário/de rótulo (cinzento-400 -> cinza-600, cinza-500 -> cinza-700) através da página de detalhes + Campo compartilhado / SectionCard / EmptyState primitivos para que as etiquetas atender WCAG AA contraste para usuários de baixa visão.
· kamo-internal
Oleoduto como hipoteca sub-tab + tema leve
- Adicionar ApplicationsPipelineConsole: um /leades-estilo avançado AG-Grid datagrid de pedidos de crédito hipotecário a nível de empréstimo (abas de filtro de estado, linha de filtro, busca rápida, exportação CSV, paginação, linha -> detalhe). Fio como o último sub-tab do console Mortgage steward (? sub=pipeline). - Re-tema /aplicações/[uid] detalhe + Campo partilhado/SectionCard/Modal/ Primitivos Estado Vazio + todas as 14 seções do tema da marinha escura para o idioma kamo-internal leve; substitua o herói sangrado com um fluxo barra de cabeçalho (fixa sobreposição de cabeçalho/conteúdo). - Re-tema /aplicações/pipeline (kanban) e /aplicações/hmda-lar à luz. - Remover a lista desactualizada autônoma /aplicações escuras; reponto QuickActionsBar 'New Application' para a sub-tab de oleoduto de mercado de hipoteca.
· kamo-internal
Painel de configuração de calibração AI-Governor da plataforma (D4 §5.C)
**************************** Página avançada ganha um painel de governador: editar a plataforma- postura de calibração por defeito (porta de governo / força-esterço-até-calibrado / min amostras, cada Inherit é habilitado através da nova API de configuração do governador. Per-org substitui camada em cima.
· SecurityService
CenárioDiscoveryService — gênese do perfil canônico na criação/atualização do empréstimo-app (D1)
HipotecaAppController (re)produz o perfil canônico do cenário do empréstimo através do novo ScenarioDiscoveryService depois de... (melhor esforço, a sua própria tx). Adiciona mlos.intake para @EnableJpaRepositórios.
· kamo-shared-library
LOAN doc-type guard (D2), sign-convention adaptator (D3), per-org regulador config (D4)
- ImageService: requer um docType para uploads ImageAssocType.LOAN (LOAN-scoped; CONTA/SERVIÇO * inalterado). - Adjustment assinadoAdapter: o adaptador de regra-7/limite de compatibilidade (Ajustamento canônico ↔ valor assinado) para migração incremental de convenção de sinais. - AutonomiaGovernadorConfig + repo + GovernadorConfigResolver (org → plataforma-default → ConfigMap layering); DbAutonomyGovernor agora resolve calibração/enablement per-org.
· kamo-internal
AUS connections tab (D37) + bloco 2o mercado de hipotecas (D38)
- MortgageAusConnectionsTab: configuração credencial DU/LP/GUS (uma por tipo); segredo é um campo de senha somente de escrita, linha mostra apenas se uma credencial está definida. - Página de novo mercado: desactivar a opção MORTGAGE + validar uma vez que o org tenha um.
· SecurityService
AUS-connection config write surface (D37) + mercado único de hipotecas por org (D38)
- MlosConfigWriteService *************org-scoped (resolverPerfil), One-per-AusKind unicidade, segredo preservado em edições em branco-secreto, WORM auditoria espinha. - MlosConfigController /aus-connections GET/POST/PUT — o segredo só é gravado (criptografado via PlatformSecretCipher dentro da mutação); a view expõe o conteúdo Credencial, nunca o texto cifrado. - Está bem. Rejeitar um segundo mercado de MORTGAGE por org (409).
· kamo-internal
Subeditor da delegação de investidores — autoridade por programa (D39)
Largar o Comutador/coluna delegada; cada linha do investidor se expande para um programa por programa editor de delegação (programa UUID, em branco = padrão do investidor; DELEGADO/ NÃO DELEGADO) suportado pela nova API /investidores/{id}/delegações.
· SecurityService
Delegação de investidores — CRUD por programa (D39)
Deixar delegadaAutoridade do InvestorConfig write/view; adicione o Subcolha de delegação de investidores em /investidores/{id}/delegações (GET/POST/ PUT, delete via ativo:false) na coluna de configuração-escrita D31 — org fail-closed através do investidor-mãe, WORM change-log + profileVersion bump per row.
· kamo-shared-library
Delegação do investidor por programa (D39) — nova criança InvestorDelegation
Delegação é granular por (investidor, programa), não um InvestidorConfig grosseiro booleano. Adiciona a Autoridade da Delegação {DELEGADA, NÃO DELEGADA}, Entidade InvestorDelegation (mlos investor delegation, programa opcionalId; null = "Investidor-default") + "Repo", e deixa *************
· kamo-shared-library
[AUS] AusConnectionConfig entity — per-org per-market DU/LP/GUS connections
Diretriz do proprietário #6: cada org configura suas próprias APIs de fornecedores de AUS (Fannie DU / Freddie LP / USDA GUS) por mercado hipotecário, em configurações→commerce. Modelo de dados fundamentais: AusConnectionConfig (mlos.config, nova tabela mlos aus connection config) — uma linha por (profile de lender, AusKind); uma vez que um LenderProfile é um por mercado, chaveando por credorPerfileId faz estes por mercado. Reutiliza o AusKind enum existente (DU/LP/GUS) e o vocabulário do FornecedorCategory.AUS em vez de inventar novos. Segredo em repouso: o segredo API é armazenado SOMENTE como um segredo AES-256-GCMCiphertext (encriptado pela PlatformSecretCipher ao escrever, espelhando a SocialConnection/ PlatformOAuthClient) e nunca está em um DTO — lê expor temCredencial em vez disso. clientId/endpointUrl/configJson não são secretos. Único (perfil, aus kind). Escrita/controlador da infra- estrutura **************** + o kamo-internal AUS-connections tab + i18n + KI (nova tabela) compila sobre esta próxima; a página por mercado vs org-scoped solution é uma decisão de configuração-spina que surgiu para o proprietário.
· kamo-shared-library
[ImageAssocType] anexe LOAN — imagens anexadas a um empréstimo, tipo de documento requerido
Directiva do proprietário: as imagens podem ser anexadas directamente a um empréstimo hipotecário, sempre com um Tipo de documento relevante. Adicionar LOAN para ImageAssocType (id 11, balde empréstimos de imagem), espelhando as bandeiras de coleta de documentos: isAllowDocType=true + isAllowDocTypeOpt=false, então o tipo de documento de empréstimo é necessário e NÃO org- opcional. Adicionar requireDocType () (isAllowDocType & & & !isAllowDocTypeOpt) para enviar Os caminhos impõem "sempre um tipo de documento". Seguro de persistência com NO KI/schema change: Img.assocId não tem @Enumerado (padrão para ORDINAL) e não há nenhuma restrição de verificação, assim, anexar no END preserva cada Ordinal da linha existente (um protetor de ensaio LOAN-is-last). 3 testes verdes. Acompanhamento coordenado (falha): (1) fornecer o balde de empréstimos de imagem MinIO via KlusterServices antes do primeiro envio do doc de empréstimo; (2) reconstruir o ImageAssocType os consumidores (DocsService faz values()[id] — devem conhecer o LOAN antes de um ID do LOAN chegar: **************************** Apanha-o. sua próxima compilação CI); (3) execute requiresDocType() no caminho de salvamento loan-doc.
· kamo-shared-library
[sinal-convenção] Validadores de convenção de sinais monetários + Modelo de ajustamento
Pelas regras canónicas do dono. O dinheiro do domínio principal nunca codifica o significado em um sinal: - Está bem. / requirePositive — activos, créditos, passivos, a pagar, taxas, custos, créditos são magnitudes POSITIVAs no seu próprio campos (regras 1-3); um valor negativo falha rapidamente. - Direcção de ajustamento {INCREASE, DECREASE, CREDIT, DEBIT, PREMIUM, DISCOUNT} — taxa/ ajustamentos de preços (LLPAs, SRPs, ajustamentos de preços, concessões, abatimentos) expor uma direção explícita, nunca um número assinado (regra 5). - Está bem. + o registo de ajustamento auto-validação — Rejeitar uma magnitude cujo sinal entre em conflito com a direcção declarada (regra 6); a O ajuste assinado não pode ser construído. Regras 4 (contando +/- vidas apenas na camada GL) e 7 (assinando apenas no adaptador layer) são limites arquitetônicos que a guarda impõe ao viver no CORE e Rejeitando a codificação assinada — a conversão do portador de sinais para o investidor/armazém/ Contabilidade/Feds MISMO fica fora do domínio por construção. 4 testes verdes.
· kamo-shared-library
[§5.A] Cenário de empréstimo canónicoPerfil + ProdutoDescobrirGate
Pelo §5 do proprietário. Uma directiva: CenáriosA política deve consumir um canónico Perfil do Cenário do Emprestador gerado a partir de dados normalizados do URLA, nunca formas brutas/UI, e fontes futuras (AUS/OCR/AI/manual) ATUALIZAÇÃO que registro canônico em vez de contorna-o. - LocatárioScenarioProfile (mlos.intake, nova mesa ************* a fonte de verdade única por empréstimo — o produto URLA 5 digitado diminui + um extensível calculado-fatos JSONB + últimaFonte + versão. Mutável (afirma a verdade), auditado por fonte+versão. - EmprestadorScenarioProfileService: produceFromUrla(empréstimoFile, orgId) é a gênese (leia Empréstimo/Propriedade normalizado imediatamente após a normalização do URLA); appUpdate é a única fonte de emenda posterior usar (falha alto se não existe nenhum perfil — gênese é O URLA está sozinho, aplicando update-don't-bypass); paraSuporteProfile projeta os 5 dims. - ProductDiscoveryGate: o §5.Um muro jurídico consultado ANTES da elegibilidade/preço resolve CenárioSupportPolicy (substituinte + padrão de código) sobre o canônico perfil e, em caso de recusa, registo de uma decisão do WORM Ai (NO ELIGÍVEL PRODUTO, legalmente RequerHumanos; DEFERRADO HARD STOP=HIGH, STEWARD ONLY= MEDIUM) através de uma decisão opcionalSpina. Suportado não escreve nada. Dez testes verdes. Build-and-flag: precisa de uma execução KI (nova tabela) + a fiação serviço-fluxo (chamar produceFromUrla no gancho de normalização URLA + gate.avalie no produto- entrada descoberta) no serviço próprio.
· kamo-shared-library
[12] §5.A ScenarioSupportPolicy deferration-interlock solution (D36)
doc 12, linha 235 P0 — «a adição mais barata do ciclo de vida da mais alta tensão». Um muro legal na descoberta do produto que mantém **************** de silenciosamente funcionando como primeiros-liens (divulgações erradas). Suporte ao cenárioResolver (puro @Component) mapeia um perfil de suporte de cenários (LoanType x Propósito x Lien x Amortização x Construção, o enums URLA existente para {Suportado}. Matriz padrão (D36): APOIO = agência avançada/não-QM FIRST-lien compra/refi com uma amortização padrão (o que os motores determinísticos cobrem); STEWARD ONLY = reconhecido-mas-fora-v1 um ser humano pode originar (subordinado/ELOC, construção/casa- melhoria, GPM, ou qualquer outra diminuição — as capturas reversíveis/comerciais, desde a residência URLA enums não têm valor para eles); DEFERRERRED HARD STOP = falha-fechada quando um crítico Dim é nulo. A IA, portanto, nunca auto-progride um produto não-v1. Por-tenente CenáriosSuportePolítica sobrescrever a camada de linhas no topo (a partida mais específica ganha, mais recente versão quebra laços; null dim = wildcard) para abrir um produto para Suportado ou endurecer Deferred HARD STOP. 13 testes verdes. Build-and-flag: o resolvedor + entidade navio agora; o produto-descoberta WIRING (consulta Antes da elegibilidade + emite uma decisão AiDecision on recusa) e KI para mlos scenario support policy são o follow-up (necessita de uma execução do KI — proprietário-gated).
· SecurityService
[08] ReconciliadoFact Publisher — los.pipeline.fact publica costura (D34)
doc 08 §3.3: o bloqueado ************* não deve ganhar um NATS editor (que edita não modifica). Adicionar um wrapper ReconciledFactPublisher não bloqueado que se reconcilia, então em uma contagem de mudança não-zero emite los.pipeline.fact. <orgld> em o fluxo LOS PIPELINE existente (los. pipeline.> já o liga — nenhum novo fluxo/ tabela), para que o laço de prontidão pode disparar. Remarcar o único chamador (Endpoint de reconciliação da MortgageConnectController) no invólucro; o serviço bloqueado está intocado. Colocação (D34): co-localizada no SecurityService com a sua única chamada actual, não em MLOSCapitalMarketsService como §3.3 sugerido experimentalmente (que assumiu um lado RCE chamador que ainda não existe). O mandato invariante — nunca publicar de dentro O serviço bloqueado — mantém-se de qualquer forma. Melhor esforço como LosPipelinePublisher: ausente NATS ou uma falha de publicação é registrada + engolida, a contagem ainda é devolvida. 4 testes Verde.
· kamo-shared-library
[12] §5.C AutonomiaGovernador — kill-switch + força até calibrada (D32)
O DecisionGate já carrega uma força estática GLOBAL-steward @Value, mas §5.C precisa de duas coisas que ele não pode dar: um interruptor kill flipable SEM resetloy (então DB-backed) em GLOBAL/TENANT/TASK TYPE granularity, e força-steward-até-N- amostras de calibração por tipo de tarefa (o P0 barato da máquina de calibração degenera no lançamento — doc 12 Tema C / §6.1). AutonomyGovernor (governança pkg) é um Docstor OPTIONAL (ObjectProvider, consultada síncrona pela DecisionSpine.record() — da mesma forma que o StewardAssigner. É ADD-ONly, exatamente como o muro legal: Ele só pode transformar um aspirante a AUTO EXECUTE em VIA TO HUMAN, nunca levantar um roteamento, Por isso, o Gato de Decisão puro/sem Estado está intocado. Duas condições de força: a) Autonomia ativaKillSwitch matching (orgId, aiFunction) — o escopo mais amplo ganha o razão; uma entidade mutável/fluppável, NÃO WORM, auditada através de engajadoBy/at; (b) Calibração bootstrap — contagem não-teste StewardFeedback para a plataforma aiFunction under min-samples (padrão 50), contada por uma nova consulta de junção. Quando governador é a causa do roteamento, sua razão é anexada ao WORM AiDecision então uma decisão de alta confiança que foi para um humano nunca é inexplicável. Nova tabela autonomy kill switch (DDL additivo - KI executado). 30 testes verdes (7 governador lógica + integração de 3 coluna apenas para adicionar + 6 coluna + 14 portão); todas as quatro DecisionSpin ctors preservados (convocadores existentes inalterados).
· kamo-internal
[04] Conta de cobertura de risco — Caixa de crédito/geo/camadas de exposição (D31)
Nova guia de configuração do mercado MORTGAGE para sobreposições de risco por contrato: categoria (caixa de crédito) / concentração geo / tipo de propriedade / montante do empréstimo / fraude / limite de exposição) + ação (negar / referência / contraoferta / bandeira) + escopo opcional de variação de produto + janela eficaz + uma expressão opcional da regra JSON (validada para análise cliente-side, espelhando o servidor 400). Adicionar/remover linhas; a remoção é uma exclusão difícil. Rendas após Investidores, antes da guia de acordos sempre-on. configTypes/configApi espelhar o padrão de coleta D31; i18n via repo de kamo-tradução-dicionário.
· SecurityService
[04] fatia E2 RiskOverlay coleção CRUD (D31)
Sobreposições de risco (caixa de crédito / geoconcentração / camadas de exposição-limite caixa de crédito base) como uma coleção de configuração na coluna D31: criar padrões configVersion=1 + selos identidade do perfil + bumps perfilVersion + validate-ou- rollback + adiciona um WORM MlosConfigChangeLog; atualização/retirada são 404 com falha na linha de outro perfil; delete é uma remoção dura auditada como {"deleted":true}. A regraExpressão é uma coluna JSONB — o controlador a analisa como JSON Antes da gravação tão má entrada é um 400 limpo, não um 500 meio-INSERT. Nulas é permitido (o vocabulário de regra é uma camada diferida, transportada para fora da banda por enquanto). 20 testes de escrita-espino verde (4 sobreposição + 4 investidor + 6 licenciamento + 6 fase-sobrerride).
· kamo-internal
Anexo V.Parte 2.23
A página de configuração do 7o MORTGAGE: por investidor linhas de autoridade com um chip de aprovação-status. Adicionar através de uma linha em linha (código + estado + opcional **************************** remover através do lixo (difícil apagar server- side). configTypes InvestorView/InvestorRequest + the 3 enum arrays + label helpers; configApi ******************* registado como tab 'investidores' após licenciamento, antes de acordos. Inglês através do repositório de tradução-dicionário. TSC limpo.
· kamo-internal
Linha temporal social unificada UI em /marketing/social
Alimentação cross-provider ao vivo e animada reutilizando o estilo de alimentação do clube: virtualizado linha do tempo, microplaquetas de filtro do fornecedor, SocialPostCard (replica/react/delete com capacidade-ligada), Multi-fornecedor SocialComposer (por-provider dicas de capacidade + chips de resultado de fan-out), Facebook-estilo NewPostsPill (sem autoscroll), use SocialFeedWebSocket ao vivo via /topic/social/feed/{orgId}, e as rotas proxy /api/media/social/*. Gravar acções fechado em MANAGEM SOCIAL MEDIA; capacidade-driven recurso-esconde em todo.
· MediaService
Infraestrutura de linha de tempo unificada (persistência de alimentação, adaptadores, relé ao vivo)
SocialFeedService persiste posts/comentários no esquema MediaSession/MediaObj (reusando o modelo de chat); SocialFeedMapper constrói o fio DTOs; SocialTimelineController serve o feed fundido + capacidades e multi-fornecedor compor fan-out, responder, reagir, apagar. Feed.{orgId} -> /topic/social/feed/{orgId} (relay + Guarda SUBSCRIBE de cross-tenant). Os fãs do SocialInboundConsumer saem para alimentar itens; varredura de pesquisas Recheios. Todos os 5 adaptadores de fornecedores ******************* SocialFeedAdapter para o máximo de cada API, capacidade-ligado.
· kamo-shared-library
Linha do tempo unificada SPI + entidades no esquema de mídia
Reutilizar MediaSession/MediaObj para manter mensagens e respostas sociais (post=MediaObj, comment=child MediaObj via MediaObjMsg.parent, provider linkage on MediaObjSocialRef). Adiciona sub- interface SocialFeedAdapter (operações de alimentação mantidas desligadas o caminho do DM SocialProviderAdapter), MediaSessionSocialFeed (por conexão sessões de feed), colunas de feed MediaObjSocialRef, SocialObjKinnd e matriz Expandida do ProviderCapabilities que aciona por provedor UI característica-esconde.

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