Passa al contenuto principale

Originators

Scopo

Gli originator rappresentano i trunk inbound lato customer. Collegano una company customer a tariffa cliente, piano di routing, profilo qualita', device SIP e regole di call loss.

Dove

ElementoValore
Route UI/originators, /originators/new, /originators/[id]
Voce di menuClients / Originators
Componenti principaliapps/frontend/src/app/[locale]/(dashboard)/originators/*, apps/frontend/src/components/originators/*, apps/frontend/src/components/forms/originator-form.tsx, apps/frontend/src/schemas/originator.ts

Campi & comportamento

CampoSignificatoValidazione / comportamento
nameNome trunk inboundObbligatorio; max 120 nel drawer lista, max 255 nella modale detail.
company_idCompany customer associataObbligatoria; select da /api/v1/companies?limit=200.
tierClasse trunkEnum standard, premium, grey; filtrabile server-side in lista.
is_activeAbilitazione trafficoCheckbox; filtro server-side in lista; bulk enable/disable su selezione.
allowed_ipsACL IP inboundNel drawer e nella pagina rapida identifica IP autorizzati. La pagina rapida normalizza IP senza CIDR in /32 o /128. In lista viene mostrato il conteggio ACL se il backend lo restituisce.
techprefixPrefisso tecnico di identificazioneOpzionale, massimo 32 caratteri; in routing identifica traffico insieme all'IP/ACL quando configurato.
techprefix_strip_digitsCifre da rimuovere dal prefissoIntero non negativo nella modale detail.
preferred_codecsCodec preferitiCSV in input, inviato come array.
max_channelsCanali massimiIntero positivo opzionale nella modale; nel drawer schema legacy accetta intero non negativo e converte valori <= 0 a null.
customer_rate_idTariffa customerSelect da /api/v1/tariffs?kind=customer&limit=200; in lista linka /tariffs/{id}.
rate_description_modeModalita' descrizione tariffaEnum append o replace.
rate_descriptionDescrizione rateTesto opzionale.
routing_plan_idPiano di routingSelect da /api/v1/routing-plans?limit=200; modificabile anche nella tab Routing del detail.
quality_profile_idProfilo qualita'Select da /api/v1/quality-profiles?limit=200; retry disabilitato.
allow_call_lossAbilita regole OCLCheckbox; filtro client-side in lista.
tags, notesMetadata operativitags come CSV, notes testo opzionale.

Identificazione IP + techprefix

La creazione rapida /originators/new espone tipo IP/Trunk e SIP/Register, ma il payload attuale invia allowed_ips solo per IP/Trunk; i campi username/password/domain della variante register non entrano nel payload originator. La configurazione SIP register effettiva e' modellata nel modulo Devices. Per routing e identificazione trunk, la UI mostra e modifica allowed_ips, techprefix e techprefix_strip_digits come campi distinti.

Azioni

AzioneDoveEffetto
Create da lista/originators, bottone New OriginatorDrawer OriginatorForm, POST /api/v1/originators con campi base.
Create rapida/originators/newForm dedicato, POST /api/v1/originators, redirect a /originators/{id}.
Edit detail/originators/[id], bottone EditModale completa OriginatorModal, PATCH /api/v1/originators/{id}.
Bulk enable/disable/originatorsPOST /api/v1/originators/{id}/activate o /deactivate per ogni riga selezionata.
Delete/originators/[id]DELETE /api/v1/originators/{id}; se richiesto, MFA challenge con action originators.delete e header X-MFA-Challenge-Token. Con 409 mostra CDR collegati.
Gestione Call lossTab Call lossLista e create regole OCL per destination opzionale, soglia loss, finestra, action e auto recovery.
Routing plan detailTab RoutingPATCH /api/v1/originators/{id} con routing_plan_id.

API consumate

Permessi/ruoli

La UI non espone ruoli espliciti. La delete supporta MFA condizionale con action originators.delete. I ruoli RBAC effettivi sono da verificare in backend/RBAC.

Stati & edge case

  • Lista virtualizzata: carica pagine da 200 righe e mostra Load more quando hasNextPage.
  • Filtri server-side: q, company_id, is_active, tier. Filtro client-side: allow_call_loss.
  • KPI CPS/ASR/ACD, current load e rewrites in lista sono placeholder - se non presenti nei dati.
  • Tab Routing mostra banner se /api/v1/routing-rules?originator_id=... non supporta il filtro.
  • Tab Audit usa array vuoto locale: audit log non esposto dal backend per entity.
  • La variante SIP/Register della pagina rapida non crea credenziali SIP sull'originator; va verificata in UI se resta visibile o se deve rimandare a Devices.

Collegamenti

  • Moduli correlati: Companies, Devices, Routing, Reports, Live Calls.
  • ADR rilevante nell'audit: docs/adr/0022-routing-n-attempt-editor-flat-model.md.