Revisione interattiva dei dati in modale prima di inserire in db

3

Sto cercando un approccio concettuale a un problema.

Sto costruendo un'app Web che importa dati da una fonte che non controllo. La qualità dei dati è piuttosto alta, ma a volte i dati non hanno senso. Quindi voglio esporre le eccezioni (basate sulle regole dei dati) agli utenti in una modale in modo che possano accettare i dati funky o cambiarli prima di commetterli.

L'app è stata sviluppata finora per comportarsi in questo modo:

  • durante l'importazione dei dati, le transazioni vengono convalidate
  • Le transazioni
  • che non vengono convalidate vengono accumulate in un array php (ovvero "exceptions_arr")
  • in alcuni casi l'intelligence nel codice propone una soluzione per campi di dati "cattivi" (basati su dati correlati) e aggiunge questi suggerimenti al record "eccezione" (ma non sostituisce i dati importati originali)
  • quindi, prima di completare l'importazione, i record delle eccezioni (e le correzioni proposte) vengono esposti all'utente in modale, uno alla volta
  • per ogni record, l'utente decide: salta, accetta i dati originali o modifica il record e lo salva (che, naturalmente, verrà nuovamente convalidato per motivi di sicurezza)

Obiettivo:

Crea un'esperienza utente IN MODAL: visualizza un'eccezione, invia la decisione e / o le modifiche dell'utente, registra i dati sul back-end, invia un messaggio di conferma, quindi visualizza l'eccezione successiva sostituendo il corpo del modale. Bonus se la pagina sottostante viene aggiornata (con alcune statistiche contatore) in base alle decisioni prese.

Domanda: come fare?

È il loop delle eccezioni con cui ho problemi. Il mio approccio finora è stato quello di: a) imposta e mostra la modale con una struttura vuota (fatto, nessun problema) b) crea il tbody della tabella con i prima eccezione dati (fatto, nessun problema) c) acquisire i dati appropriati (nessuno, vecchio, proposto / modificato) quando l'utente invia la sua decisione (fatto, nessun problema)

Approccio attuale:

Attualmente sto postando i dati decisionali dell'utente alla pagina host tramite ajax, e gestendo la decisione dell'utente risultante / POST semplicemente bene - una volta. Il problema è che questo POST di nuovo alla pagina che ha lanciato il modale spazza via l'eccezione_arr accumulata.

Ho cercato come eseguire il loop dei dati un record alla volta e interrompere il processo quando viene rilevata ogni eccezione (e apri una nuova modal e raccogli la decisione dell'utente), ma ahimè jquery / javascript / php code isn ' t facilmente fermato e ripreso. Quando la decisione dell'utente viene sottoposta a POST, la pagina di avvio si riavvia ancora (dall'inizio).

Sta usando l'archiviazione SESSION un buon approccio? Leggi tutte le eccezioni nel DOM e poi elabora?

    
posta globalSchmidt 29.12.2015 - 03:04
fonte

1 risposta

1

In base alla mia esperienza, la soluzione più stabile per questo scenario è di mantenere i record in errore anziché conservarli nella memoria o nella sessione. Cosa succede se l'utente si distrae nel mezzo e chiude il browser e torna a casa? Cosa succede se il server si blocca o è necessario riavviare? Quindi perdi tutti i record attualmente in fase di elaborazione.

Quindi, vorrei persistere comunque nelle registrazioni degli errori. A seconda dei tuoi dati, puoi incollarli nelle stesse tabelle di tutti gli altri record e semplicemente contrassegnarli per la revisione. In alternativa, puoi memorizzarli in un set separato di tabelle o semplicemente come file nel file system.

Quindi lo schermo può solo chiedere al database il prossimo record fallito per quell'utente e visualizzare quel record. Una volta che il record viene gestito, viene eliminato e inserito correttamente.

Un ulteriore vantaggio è che questo mantiene il server Web stateless. Ciò significa che puoi configurare il clustering e non devi preoccuparti di quale dei tuoi server web l'utente sta accedendo.

    
risposta data 31.12.2015 - 20:49
fonte

Leggi altre domande sui tag