TomBog napisał(a):
- Wpłaty nie muszą pochodzić z jednego konta.
- Wiele osób wpłaca za pośrednictwem poczty lub innych agencji
finansowych. Wtedy masz jeden numer konta dla wielu klientów
To zacytuję sam siebie i wytłumaczę o co chodzi:
Przy wpisywaniu linii do cashimport można by przeszukać historię wpłat w cashimport i zobaczyć, czy z tego konta jest przynajmniej N wpłat z tego konta, które wszystkie są przypisane do jednego użytkownika. Jeśli tak jest, to z dużym prawdopodobieństwem jest to właśnie ten uzytkownik...
Przekładając na SQL-a: select bank_account,customerid,count(*) from cashimport where bank_account=? and bank_account<>'' group by bank_account,customerid
Sprawdzamy czy: 1. Zapytanie zwraca jedną linię. Jeśli tak, to znaczy że z tegokonta dokonywała wpłat dokłądnie jedna osoba 2. Sprawdzamy czy count(*) jest większy niż na przykład 5. Teraz mamy pewność, że to nie jest pryzpadkowy, jeden strzał
Jeśli warunki są spełnione, to proponujemy customerid.
Na początku oczywiście będzie trzeba bazę "rozgrzać", ale po jakimś czasie (n wpłat), cashimport będzie nam proponował odpowiedniego użytkownika. Oszczędność kilkudiesieściu sekund na wpłacie.
Aby zwiększyć moc tej heurystyki, można by oczywiście utworzyć listę prefixów, z których wpłaty nie będą automatem przypisywane ludziom. Na przykład można by w ten sposób wyciąć poczty itp.
Z moim obserwacji wynika, że 80-90 % ludzi wpłaca z tego samego konta.
Mechanizm ten został zaczerpnięty z firm, które masowo przyjmują wpłaty (kredyty leasingi itp).
Nie ma co marzyć, że ludzie będą wpisywali jakieś identyfikatory fikuśne, które im podamy. Kto przepisuje wszystkie cyferki na fakturach za telefon, gaz, prąd, wodę przy przelewaniu z konta?
Pozdrawiam
Andrzej