Codice breve per un appuntamento
Richiesta
Inserire un numero progressivo da associare alla prenotazione appuntamento in modo che quando il cittadino si presenti all'ufficio - in una situazione con più sportelli - l'operatore non debba chiamare il cittadino per nome e cognome ma possa chiamarlo usando il numero del ticket.
Valutare anche la possibilità di integrare anche con i sistemi di salta code.
Casi d'uso
- come amministratore voglio poter configurare una strategia di generazione di un codice breve che preveda:
- possibilità di inserire un prefisso
- possibilità di inserire il numero massimo di cifre del progressivo numerico
- una strategia di reset temporale, il contatore potrà resettarsi ogni giorno, settimana, mese, anno
- come amministratore voglio poter collegare 1 o più calendari alla configurazione di generazione del codice
- come utente voglio ricevere un codice breve associato all'appuntamento che ho appena creato
- come operatore voglio poter far riferimento ad un codice breve dell'appuntamento durante le operazioni da sportello
Esempi di implementazioni note
WCER936
- W è una variabile usata per identificare il canale di prenotazione (probabilmente non più necessaria)
- CER è un identificativo "del servizio di prenotazione" (con quello che significa)
- 936 è un progressivo che arriva fino a 999 e poi riprende
A141
- A è un prefisso deciso dall’utente
- 141 è un progressivo
Soluzione tecnica
- Creazione di una nuova entità Code Generation Strategy (CGS) collegabile ad 1 o più calendari
La struttura della CGS sarà:
{
"id": "uuid",
"name": "string", // Serve per identificare il contatore
"prefix": "string", // Stringa decisa dall'amministratore
"postfix": "string", // Stringa decisa dall'amministratore
"counter_digit_lenght": "int", // Definisce la lunghezza del contatore numerico Es. 3 -> valore massimo 999 poi ripartirà da 001
"temporal_reset": "enum", // Definisce la strategia di reset temporale da utilizzare, valori possibili: none, day, week, month, year
"created_at": "datetime", // Data di creazione della generation strategy
"updated_at": "datetime", // Data di aggiornamento della generation strategy
}
- Esposizione di API crud per gestione della CGS
- Creazione di una nuova entità Code per tenere traccia dei codici generati
La struttura dell'entità Code sarà:
{
"cgs_id": "uuid", // Relazione con CGS
"temporal_reset": "string", // enum(none, day, week, month, year)
"key": "string", // chiave per identificare il counter, Y-m-d, m, w, Y in base al tempora reset
"counter": "int",
"created_at": "datetime",
"updated_at": "datetime"
}
- Modifica dell'entità meeting ed aggiunta del campo
code
per poter salvare il codice generato in fase di creazione. - Generazione del codice in base a configurazione
Una CGS potrà essere configurata tramite API ed associata ad uno o più oggetti della piattaforma.
Integrazione con un sistema esterno (Es. CMS)
Il cms crea un meeting sulla piattaforma eseguendo una chiamata POST alle API /meetings
Il cms esegue una post verso la piattaforma contenente il campo code --> La piattaforma salva il contenuto del campo code (non c’è alcuna validazione in questo caso ci fidiamo del sistema esterno)
Il cms esegue una post verso la piattaforma senza campo code ma ho una CGS configurata sul calendario --> La piattaforma genera un nuovo codice secondo la CGS associata al calendario e lo salva nel meeting
Il cms esegue una post verso la piattaforma senza campo code ma non ho una cgs configurata sul calendario -->Non viene generato alcun codice per il meeting