Cestas (Baskets)
Pré-requisitos de acesso
- Permissão (módulo):
viewBasketspara listar/ver;manageBasketspara criar, editar, alocar e mudar status. - Licença/Feature:
BASKETShabilitada na licença do tenant (Vault). - Contêiner do menu: GERAL → grupo Produtos → Cestas
O que é / quando usar
Uma Cesta (basket) é um produto de investimento que agrega várias ofertas-mãe (crowdfundings) em um único veículo. O investidor aporta na cesta e o capital é distribuído entre as ofertas componentes conforme pesos definidos; os rendimentos das ofertas retornam proporcionalmente aos cotistas da cesta. É o produto que permite "diversificar em um clique".
O operador usa esta área para compor a cesta (quais ofertas, com que peso), definir o modo de alocação, os parâmetros financeiros e acompanhar a captação. A cesta emite uma NFT para os investidores (rede + emissora configuráveis).
Pré-condições
- Permissão:
viewBaskets(consulta) oumanageBaskets(escrita). Permissão dupla: enum CPM + módulo dinâmico no DB. A própria listagem checamanageBasketspara liberar as ações de gestão. - Licença/Feature:
BASKETShabilitada. - Dependências: as ofertas-mãe (crowdfundings) que compõem a cesta precisam existir; rede e emissora da NFT precisam estar disponíveis.
Passo a passo
- Acesse Produtos → Cestas.
- Filtre por canal, status e busca por nome.
- Use Criar cesta para abrir o formulário em seções.
- Preencha Identidade, Editorial, Distribuição, Financeiro e — conforme o modo — Composição (JIT) ou Alocações (Upfront).
- Salve. Em cada linha use Editar, Dashboard ou Cancelar.
Campos (formulário)
Identidade e Editorial
| Campo | O que é | Obrigatório? | Efeito no sistema/backend |
|---|---|---|---|
Nome (name) | Nome da cesta | Sim | Máx. 255 caracteres. |
| Tagline / Descrição / Descrição longa | Textos comerciais | Não | Conteúdo editorial exibido ao investidor. |
| Resumo de risco / garantias | Sumários | Não | riskSummary, warrantiesSummary. |
| Imagem de capa | URL da capa | Não | coverImageUrl. |
Distribuição
| Campo | O que é | Obrigatório? | Efeito no sistema/backend |
|---|---|---|---|
Canal (partnerChannel) | INTERNAL ou CHAINLESS | Sim | Default INTERNAL. Mudar o canal sugere o modo de alocação: CHAINLESS → Upfront; INTERNAL → Just‑in‑time (a menos que já alterado manualmente). |
Modo de alocação (allocationMode) | JUST_IN_TIME (JIT) ou UPFRONT | Sim | JIT aloca conforme a captação entra (usa Composição com pesos); UPFRONT pré-aloca valores fixos por oferta (usa Alocações). |
Rede da NFT (nftNetworkId) | Rede da NFT da cesta | Sim | Determina a rede de emissão da NFT entregue aos investidores. |
Emissora da NFT (nftCreatorInstitution) | Instituição emissora | Sim | Determina a emissora da NFT. |
Limiar de lote JIT (jitBatchThreshold) | Valor que dispara um lote de alocação no modo JIT | Não | Acumula aportes até o limiar e então aloca o lote nas ofertas. |
Financeiro
| Campo | O que é | Obrigatório? | Efeito no sistema/backend |
|---|---|---|---|
Moeda aceita (acceptedCurrency) | BRL, BRZ ou USDC | Sim | Default BRL. |
Captação alvo (targetCapture) | Meta de captação | Sim | String/BigNumber (nunca number); valida formato numérico. |
Captação mínima (minimumCapture) | Mínimo para a cesta ser válida | Sim | BigNumber. |
Aporte mínimo (minimumContribution) | Menor aporte por investidor | Sim | BigNumber. |
Rendimento esperado a.a. (expectedYieldPctAnnual) | Rentabilidade anual esperada | Não | Indicador editorial. |
Prazo médio (meses) (termMonthsAverage) | Prazo médio das ofertas | Não | Indicador editorial. |
| Datas início/fim | Janela de captação | Não | startDate/finalDate (ISO). |
Composição (modo JIT) / Alocações (modo Upfront)
| Campo | O que é | Obrigatório? | Efeito no sistema/backend |
|---|---|---|---|
Composição (compositionTarget) | Lista de {ofertaOrigem, peso} | Sim no JIT | A soma dos pesos deve ser 1 (validação: ` |
Alocações (upfrontAllocations) | Lista de {ofertaOrigem, valorAlocado} | Sim no Upfront | Pré-aloca valores fixos por oferta; enviado em bulk após criar a cesta. |
Ações e modais
- Salvar: valida o formulário (Angular Reactive Forms). No JIT, exige composição com soma de pesos = 1. Cria a cesta (
create) ou atualiza (update); no Upfront com alocações, disparacreateAllocationsBulkem seguida. Redireciona ao dashboard da cesta. - Status: na edição, é possível alterar o status (
onStatusChange); a mudança só é enviada (updateStatus) se diferir do atual. - Cancelar (na listagem): confirma e chama
cancel— encerra a captação da cesta. - Dashboard: acompanha alocações, ordens, posições e distribuições da cesta.
Regras de negócio / cuidados
Atenção
- JIT exige composição com soma de pesos = 1 (100%). Fora disso, a seção fica inválida e o salvar é bloqueado.
- O canal sugere o modo de alocação, mas o operador pode sobrescrever — confira o modo antes de salvar (define quais seções aparecem).
- Rede e emissora da NFT são obrigatórias (ficam na seção Distribuição porque determinam a NFT entregue aos investidores).
- Repasse proporcional: rendimentos e amortizações das ofertas-mãe voltam aos cotistas da cesta proporcionalmente à participação — a posição (
IBasketPosition) acompanha principal e juros recebidos. - Valores financeiros: todos os montantes chegam como string (BigNumber serializado) — nunca
number. Sem arredondamento. - Status da cesta:
inactive → active → minimum_reached → funded → distributing → closed(oucancelled). O ciclo reflete a captação e a fase de distribuição.
Exemplos
Cenário 1 — Cesta interna JIT com 3 ofertas
- Canal INTERNAL → modo sugerido JIT.
- Financeiro: moeda BRL, alvo R$ 2.000.000, mínima R$ 500.000, aporte mínimo R$ 500.
- Composição: Oferta A peso 0,5, Oferta B peso 0,3, Oferta C peso 0,2 (soma 1,0).
- Limiar de lote R$ 50.000: a cada R$ 50 mil captados, o lote é alocado 50/30/20 nas ofertas.
Cenário 2 — Cesta com alocação Upfront
- Modo UPFRONT.
- Em Alocações, pré-aloque R$ 800.000 na Oferta A e R$ 1.200.000 na Oferta B.
- Ao salvar, a cesta é criada e as alocações são enviadas em bulk; o capital fica reservado nessas ofertas.
Cenário 3 — Encerrar uma cesta
- Na listagem, clique Cancelar na cesta desejada e confirme.
- A captação é encerrada (
cancelled); aportes deixam de ser aceitos.