Τα άτομα στις συναντήσεις σου

Ποιους ξέρει το Chui, πώς μαθαίνει γι' αυτούς και τι διορθώνεται μέσα από μια συζήτηση.

Ένα άτομο εμφανίζεται στον λογαριασμό μόλις κάποιος πάρει όνομα σε τουλάχιστον μία συνάντηση. Η ίδια η απομαγνητοφώνηση λέει μόνο speaker_0, speaker_1. Όταν δίνεις όνομα σε αυτή τη φωνή στην εφαρμογή, δημιουργείται το άτομο και το όνομά του μπαίνει σε κάθε σημείο όπου μιλά.

Τι κρατά το Chui για κάποιον

Τρία πράγματα, και το get_person() τα επιστρέφει και τα τρία:

Αυτή είναι η γρήγορη απάντηση στα «τι έχω συζητήσει με τον Χ», «ποιος είναι ο Χ» και «πότε μίλησα τελευταία φορά με τον Χ», με ένα κλάσμα του κόστους της ανάγνωσης των απομαγνητοφωνήσεων.

Το list_people() είναι ο κατάλογος: όλοι στον λογαριασμό, σε πόσες συναντήσεις ήταν ο καθένας και πότε ήταν η πιο πρόσφατη. Με αυτό ένα όνομα γίνεται και id.

Διόρθωση όσων ξέρει το Chui

Το update_person() είναι το μόνο εργαλείο εδώ που ΔΙΟΡΘΩΝΕΙ όσα ξέρει το Chui για ένα άτομο. Τα δύο παρακάτω αλλάζουν το πόσα άτομα υπάρχουν, και ό,τι άλλο γράφει είναι ρύθμιση (Ρυθμίσεις που αλλάζουν αν το ζητήσεις). Διορθώνει το όνομα ενός ατόμου, πώς το γνωρίζεις, πού δουλεύει, τον ρόλο του ή μια δική σου ελεύθερη σημείωση. Χρησιμοποίησέ το όταν κάποιος λέει κάτι καινούργιο για ένα άτομο. Μην το χρησιμοποιείς για να καταγράψεις ένα συμπέρασμα από απομαγνητοφώνηση· αυτό το κάνει ήδη η αυτόματη ενημέρωση.

Πρώτα γίνεται ερώτηση, επειδή ό,τι αντικαθίσταται δεν φυλάσσεται πουθενά. Το prepare_update_person() διαβάζει κάθε πεδίο όπως είναι και όπως θα γινόταν, και σε εκείνο το σημείο δεν έχει γίνει ακόμη τίποτα. Μόνο αφού πεις ναι γράφεται η διόρθωση, ακριβώς όπως εμφανίστηκε. Αν το άτομο άλλαξε στο μεταξύ, δεν γράφεται τίποτα και η ερώτηση πρέπει να γίνει ξανά.

Η σημείωση είναι δική σου: το Chui δεν την αντικαθιστά ποτέ. Γι' αυτό μια διόρθωση που πρέπει να αντέξει και στις επόμενες συναντήσεις ανήκει εκεί. Μια διόρθωση της σημείωσης την αντικαθιστά ολόκληρη, οπότε για να προσθέσεις μια γραμμή, το νέο κείμενο πρέπει να περιέχει και το παλιό.

Η μετονομασία ξαναγράφει το άτομο σε κάθε συνάντηση όπου εμφανίζεται, και η σύνοψη καθεμιάς από αυτές τις συναντήσεις γράφεται μετά ξανά με το νέο όνομα. Αυτό γίνεται ένα-δύο λεπτά αργότερα, ενώ για κάποιον που βρίσκεται σε εκατοντάδες συναντήσεις γίνεται σε δόσεις μέσα σε αρκετά λεπτά. Ισχύει είτε η μετονομασία γράφτηκε σε βοηθό είτε έγινε στην εφαρμογή. Αν το νέο όνομα ανήκει ήδη σε κάποιον άλλον στον λογαριασμό, το Chui αρνείται, αντί να ενώσει σιωπηλά τους δύο.

Δύο άτομα που είναι ένα

Ένας άνθρωπος γραμμένος με δύο τρόπους, «Maria Ivanova» και «Maria I.», είναι μία καταχώριση παραπάνω. Η συγχώνευσή τους μεταφέρει κάθε συνάντηση στο όνομα που μένει, ενώ το άλλο όνομα εξαφανίζεται από τη λίστα. Το όνομα που φεύγει κρατιέται ως άλλη γραφή του ατόμου που μένει, οπότε μια ερώτηση με αυτό το όνομα εξακολουθεί να το βρίσκει. Στην εφαρμογή είναι το Συγχώνευση (Merge) στην οθόνη Άτομα (People).

Μπορεί να αναιρεθεί για τριάντα ημέρες, ακριβώς όπως ήταν, με το Διαχωρισμός (Split) στο άτομο. Μετά από αυτό είναι οριστική. Μπορεί να αναιρεθεί μόνο η πιο πρόσφατη συγχώνευση σε κάποιον, και μόλις την αναιρέσεις, δεν μπορεί να αναιρεθεί άλλη.

Ένας βοηθός μπορεί να κάνει και τα δύο, και για τα δύο ρωτά πρώτα. Η συγχώνευση καταστρέφει μια καταχώριση, και ένα μοντέλο που διαβάζει ονόματα από μια απομαγνητοφώνηση δεν πρέπει να μπορεί να αποφασίσει μόνο του ότι δύο άνθρωποι είναι ένας. Το prepare_merge_people() δεν αλλάζει τίποτα. Απαντά κατονομάζοντας και τις δύο καταχωρίσεις, με το σε πόσες συναντήσεις βρίσκεται η καθεμία και πότε ήταν σε συνάντηση τελευταία φορά. Μόνο αφού πεις ναι, το merge_people() κάνει τη συγχώνευση. Δέχεται μόνο την απάντηση σε εκείνη την ερώτηση, οπότε δεν μπορεί να στραφεί σε ένα ζευγάρι που δεν σου έδειξε. Τα prepare_unmerge_people() και unmerge_people() είναι τα ίδια δύο βήματα για την αναίρεση μιας συγχώνευσης. Αναφέρουν ποιος θα επανεμφανιζόταν και πόσες συναντήσεις θα πήγαιναν μαζί του, πριν μετακινηθεί οτιδήποτε.

Η ανάγνωση των δύο καταχωρίσεων είναι το κρίσιμο κομμάτι, και όχι ως τυπικότητα. Το λάθος από το οποίο προστατεύει είναι να μπουν οι δύο ανάποδα: το «Ο Ivan P. είναι το ίδιο άτομο με τον Ivan Petrov;» διαβάζεται τέλεια, ενώ περιγράφει την αντίθετη ενέργεια.

Ακόμη δεν υπάρχει τρόπος να διαγράψεις ένα άτομο μέσω βοηθού, ούτε από την εφαρμογή. Ένα άτομο εξαφανίζεται όταν συγχωνευτεί σε κάποιον άλλον ή μαζί με τις συναντήσεις στις οποίες ονομάστηκε.