Passa al contenuto principale

Terminators

Scopo

I terminator rappresentano i trunk outbound lato supplier. Il modulo governa indirizzamento SIP verso carrier, tariffa provider, capacita', rewrite CLI/destinazione, health check e quality profile usato nei workflow NOC.

Dove

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

Campi & comportamento

CampoSignificatoValidazione / comportamento
nameNome trunk supplierObbligatorio; max 120 nel drawer lista, max 255 nella modale detail.
supplier_company_id / company_idCompany supplierObbligatoria; select da /api/v1/companies?limit=200.
sip_uriURI SIP di uscitaObbligatorio in modale, deve iniziare con sip: o sips:; drawer separa host, port, transport e ricostruisce URI.
provider_rate_idTariffa supplierSelect da /api/v1/tariffs?kind=supplier&limit=200; nel drawer e' obbligatoria se is_active e' true.
tierClasse trunkEnum standard, premium, grey; filtrabile server-side.
is_activeAbilitazione trafficoCheckbox; filtro server-side.
techprefixPrefisso tecnico in uscitaOpzionale, massimo 32 caratteri.
techprefix_add_digitsCifre da aggiungereOpzionale, massimo 32 caratteri nella modale detail.
preferred_codecs_outCodec preferiti in uscitaCSV in input, inviato come array.
max_channels, max_cpsLimiti capacita'Interi positivi opzionali nella modale; max_channels nel drawer accetta intero non negativo e converte valori <= 0 a null.
auth_typeTipo autenticazioneEnum ip_only, digest.
auth_vault_secret_idSecret digestTesto opzionale massimo 128 caratteri.
inbound_ip_whitelistIP autorizzatiCSV in input, array nel payload.
caller_id_formatFormato CLIEnum transparent, cc_num, plus_cc_num, custom.
caller_id_custom_ruleRegola custom CLITesto opzionale.
health_check_enabled, health_check_interval_s, health_check_statusHealth check supplierCheckbox, intervallo positivo, status unknown, up, degraded, down; filtro health server-side.
Quality profilevendor_mail, cc_mail, vendor_skype, tgrp, qp_tech_prefix, qp_source_prefix, include_pai_header, preferred_codec_testEmail/testi con limiti dedotti dagli schema; include_pai_header default true, preferred_codec_test default Any available.
coverage_tags, tags, notesCoverage e metadataCSV per tag; note opzionali. Il filtro fraud e' UI-only su tag contenenti fraud o high-risk.

Azioni

AzioneDoveEffetto
Create da lista/terminators, bottone New TerminatorDrawer TerminatorForm, POST /api/v1/terminators.
Create rapida/terminators/newForm dedicato con IP/port e quality profile, costruisce sip:{ip}:{port}, redirect a /terminators/{id}.
Edit detail/terminators/[id], bottone EditModale completa TerminatorModal, PATCH /api/v1/terminators/{id}.
Delete/terminators/[id]DELETE /api/v1/terminators/{id}; la UI non implementa re-challenge MFA su questa delete.
Ping all/terminators, bottone Ping all (OPTIONS)Best effort su ogni riga visibile con POST /api/v1/terminators/{id}/health-test; non esiste endpoint batch nel codice.
Rewrite rulesTab RewriteLista e create rewrite rule con sort order, regex, action, action value e preview client-side.
HealthTab HealthMostra health del terminator e KPI 24h da report CDR daily agg.

API consumate

Permessi/ruoli

La UI non mostra ruoli espliciti. A differenza di Companies e Originators, la delete terminator nel codice non effettua challenge MFA. I ruoli RBAC effettivi sono da verificare in backend/RBAC.

Stati & edge case

  • Lista mostra banner se esistono terminator attivi senza provider rate, perche' il traffico supplier non e' instradabile.
  • Filtro fraud e' solo client-side: usa coverage_tags e tags, non un campo backend dedicato.
  • Ping all e' un loop client-side su endpoint singoli; codice commenta che manca endpoint batch dedicato.
  • current_load, ASR e ACD in lista sono placeholder o non esposti dal modello.
  • Tab Devices e Routing mostrano banner se i filtri terminator_id non sono supportati dagli endpoint.
  • Tab Health mostra placeholder KPI se cdr_daily_agg non e' disponibile.
  • Whitelist dedicata non esposta: la tab legge solo auth/whitelist dal record terminator.

Collegamenti

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