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
| Elemento | Valore |
|---|---|
| Route UI | /originators, /originators/new, /originators/[id] |
| Voce di menu | Clients / Originators |
| Componenti principali | apps/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
| Campo | Significato | Validazione / comportamento |
|---|---|---|
name | Nome trunk inbound | Obbligatorio; max 120 nel drawer lista, max 255 nella modale detail. |
company_id | Company customer associata | Obbligatoria; select da /api/v1/companies?limit=200. |
tier | Classe trunk | Enum standard, premium, grey; filtrabile server-side in lista. |
is_active | Abilitazione traffico | Checkbox; filtro server-side in lista; bulk enable/disable su selezione. |
allowed_ips | ACL IP inbound | Nel 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. |
techprefix | Prefisso tecnico di identificazione | Opzionale, massimo 32 caratteri; in routing identifica traffico insieme all'IP/ACL quando configurato. |
techprefix_strip_digits | Cifre da rimuovere dal prefisso | Intero non negativo nella modale detail. |
preferred_codecs | Codec preferiti | CSV in input, inviato come array. |
max_channels | Canali massimi | Intero positivo opzionale nella modale; nel drawer schema legacy accetta intero non negativo e converte valori <= 0 a null. |
customer_rate_id | Tariffa customer | Select da /api/v1/tariffs?kind=customer&limit=200; in lista linka /tariffs/{id}. |
rate_description_mode | Modalita' descrizione tariffa | Enum append o replace. |
rate_description | Descrizione rate | Testo opzionale. |
routing_plan_id | Piano di routing | Select da /api/v1/routing-plans?limit=200; modificabile anche nella tab Routing del detail. |
quality_profile_id | Profilo qualita' | Select da /api/v1/quality-profiles?limit=200; retry disabilitato. |
allow_call_loss | Abilita regole OCL | Checkbox; filtro client-side in lista. |
tags, notes | Metadata operativi | tags 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
| Azione | Dove | Effetto |
|---|---|---|
| Create da lista | /originators, bottone New Originator | Drawer OriginatorForm, POST /api/v1/originators con campi base. |
| Create rapida | /originators/new | Form dedicato, POST /api/v1/originators, redirect a /originators/{id}. |
| Edit detail | /originators/[id], bottone Edit | Modale completa OriginatorModal, PATCH /api/v1/originators/{id}. |
| Bulk enable/disable | /originators | POST /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 loss | Tab Call loss | Lista e create regole OCL per destination opzionale, soglia loss, finestra, action e auto recovery. |
| Routing plan detail | Tab Routing | PATCH /api/v1/originators/{id} con routing_plan_id. |
API consumate
- List originators, Get originator, Create originator, Update originator, Delete originator.
- Activate originator e Deactivate originator - bulk actions.
- Create call loss rule, Update call loss rule, Delete call loss rule.
- List companies, List tariffs, List routing plans, List devices.
- List routing rules flat - tab Routing filtrata per originator.
- MFA challenge - re-challenge delete quando richiesto.
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 morequandohasNextPage. - 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.