{"action":"opened","issue":{"url":"https://api.github.com/repos/rrd108/sanga/issues/115","labels_url":"https://api.github.com/repos/rrd108/sanga/issues/115/labels{/name}","comments_url":"https://api.github.com/repos/rrd108/sanga/issues/115/comments","events_url":"https://api.github.com/repos/rrd108/sanga/issues/115/events","html_url":"https://github.com/rrd108/sanga/issues/115","id":79115114,"number":115,"title":"duplicates","user":{"login":"rrd108","id":3147489,"avatar_url":"https://avatars.githubusercontent.com/u/3147489?v=3","gravatar_id":"","url":"https://api.github.com/users/rrd108","html_url":"https://github.com/rrd108","followers_url":"https://api.github.com/users/rrd108/followers","following_url":"https://api.github.com/users/rrd108/following{/other_user}","gists_url":"https://api.github.com/users/rrd108/gists{/gist_id}","starred_url":"https://api.github.com/users/rrd108/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rrd108/subscriptions","organizations_url":"https://api.github.com/users/rrd108/orgs","repos_url":"https://api.github.com/users/rrd108/repos","events_url":"https://api.github.com/users/rrd108/events{/privacy}","received_events_url":"https://api.github.com/users/rrd108/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-05-21T18:41:16Z","updated_at":"2015-05-21T18:41:16Z","closed_at":null,"body":"A CRM-ek egyik fontos szolgáltatása a duplikáció szűrés. Ez több dolog miatt is problémás: egyrészt más formátumban megadott adatok pl 06/30 vagy +36 30 egy telefonszámnál, másrészt amiatt, hogy egy kapcsolatot több kapcsolattartó is felvihet és nem feltétlenül látnak rá egymás adataira.\r\n\r\nAz első problémakörre általánosan alkalmazott megoldások kikényszerítik, hogy egy adott formátumban legyenek felvíve az adatok amit én nem szeretek. A magam részéről jobban szeretem ha a program okos és megeszik mindent amit a user bekalapál.\r\n\r\nNa szóval a /src/Model/Table/ContactsTable.php tartalmaz egy pár metódust amelyek nevei checkDuplicates-cel kezdődnek. Ezeket kéne átpakolni a /src/Shell/DuplicateFilterShell.php fileba mert menet közben rájöttem, hogy ezt úgy is cronnal fogjuk csekkolni naponta.\r\n\r\n1. Ellenőrizni kell userenként, hogy azok között a contactok között akiknek ő a contact personja van-e duplikáció gyanús, azaz a checkDuplicates-ek közül valamelyik ad-e találatot, illetve ha több is ad akkor a gyanú növekszik (azaz pl stimmel a telefonszám is meg a cím is)\r\n2. A duplikáció gyanús esetekről kell egy új rekordot betenni a notifications táblába. Ezzel kap értesítést a user a gyanús esetről.\r\n3. A notification-nak tartalmaznia kell, hogy melyik contact milyen adatai miatt gyanús a duplikáció és kell bele két link. Az egyik azt mondja, hogy nem, ez nem duplikáció, a másiknak pedig az, hogy összevonom a két contactot.\r\n4. Ha a user a nem duplikációt választja, akkor ezt a választást valahol el kell tárolni a DB-ben, hogy legközelebb ne kínálja fel. Erre per pillanat nincs DB tábla, nem gondolkoztam még rajta. Ha otthon vagy ebben találd ki, ha nem akkor kitalálom és beteszem.\r\n5. Ha a user az összevonás mellett dönt akkor a két contactot össze kell vonni. Az összevonás a következőképpen történik:\r\n5/1. A nagyobb id-jű contatnál az active flag-et 0-ra kell állítani és a commentbe bele kell írni, hogy merged with: a kisebb id-jű contact. Azaz ő az aki beleolvad a másikba.\r\n5/2. A megszűnő skilljeit, group tagságait és history rekordjait update-elni kell a megmaradó contact_id-re.\r\n5/3. A személes adatok esetében (ezek vannak a contacts táblában) a megszűnő contat adatait bele kell olvasztani a megmaradóba. Azaz ha pl a telefonszám egyezik akkor nem csinálunk semmit, ha a megmaradónál hiányzik az infó a megszűnőnél megvan akkor meg beleírjuk.\r\n5/4 Ha konfliktus van, azaz pl mindkettőnél szerepel telefonszám, de az nem azonos (formátumtól függetlenül, azaz más telefonszám szerepel) akkor a megszűnő\r\nadatát a commentbe kell beleírni. Persze ezek minden adatra vonatkoznak nem csak a telefonszámra."}}