Łączenie powiadomień

5

Przypomnienie po dwóch latach propozycji: Stackowanie powiadomień

Czy nie lepiej byłoby dostać jednego powiadomienia zamiast 20 do tego samego tematu?

4

Rzeczywiście, temat wart przemyślenia.
Weekend mnie tu nie było i oto wynik:
weekend na 4p.png

Z czego 90% to komentarze pod dwoma postami albo polubienia postu.

0

@Marooned - liczę, że w tej wiadomości dostałeś wskazówki jak powyłączać sobie powiadomienia dla pewnych rzeczy :]

Ja mam większość wyłaczone, bo nie potrzebuję się aż tak wiązać z danym wpisem na mikroblogu lub z jakimś wątkiem, dlatego też nie mam zawalonej skrzynki powiadomień; Wystarczy, że dostanę powiadomienie o wystąpieniu mojego nicku gdzieś w serwisie, ocenie mojego posta lub wpisu oraz akceptacji posta na forum; Reszta jest mi zbędna.

3

To jest na pewno bardzo dobry pomysł. Wymaga jednak małej rewolucji w systemie powiadomień :)

Po 1) Co z mailami? Rozumiem, że nie dostajemy później e-maili?
Po 2) Zmiana tytułów powiadomień. Np. XXX dodał odpowiedź w wątku oraz XXX oraz 2 osoby dodały odpowiedź w wątku
Po 3) Jak rozumiem powiadomienie byłoby łączone do czasu aż nie zostałoby kliknięte i oznaczone jako przeczytane?

Jednym słowem: da się! Trzeba zakasać rękawy i robić ... :)

1

Prawdę rzeczesz, to mini rewolucja. Fajnie byłoby to zatem gruntownie przemyśleć zanim poleci pierwszy commit :)

0

Otóż to @Marooned. Obecnie powiadomienia to 3 tabele w bazie danych. W jednej z nich konfigurujemy nagłówki powiadomień. Np. {sender} dodał wpis na mikroblogu. Na etapie dodawania nowego powiadomienia dla usera, maska {sender} jest podmieniana na nazwę użytkownika. Teraz musimy w tabeli, w danym rekordzie gromadzić również informację o ilości użytkowników którzy dodali np. odpowiedź w tym samym wątku.

Należy jednak wziąć pod uwagę, że powiadomienia dotyczą nie tylko forum ale również innej części serwisu. Należy więc nadawać unikalne ID dla konkretnego powiadomienia, dedykowanego dla danego użytkownika. Chodzi o to, że jeżeli istnieje już nieprzeczytane powiadomienie o dodaniu nowego posta w obserwowanym wątku, kolejne powiadomienie nie powinno dodać nowego rekordu do DB a zmodyfikować już istniejący.

0

A czy nie miałoby sensu nie zmienianie zapisu, a jedynie agregowanie po pobraniu danych? Ja tak bardziej dumam, bo to Ty wiesz co tam w bazie piszczy.

0

Być może by miało... obecnie system jest dość prosty: dodanie nowego powiadomienia uruchamia trigger, który zwiększa Ci licznik nieprzeczytanych powiadomień. Dzięki temu nie trzeba liczyć COUNT w locie, aby obliczyć ile masz powiadomień.

6

Póki co doszedłem do tego etapu:

e9f56a67ee.png

Jak widać na screenie nagłówek powiadomienia zmienia się w zależności ile powiadomień zostało połączonych.

3

Udało się wprowadzić grupowanie. Uwagi mile widziane. Jeżeli jednak ktoś ma włączone powiadomienia e-mail, to te nadal przychodzą tak jak przychodziły. Uwarunkowane jest to tym, że w mailach znajduje się często treść - np. postu. Tak więc potencjalny "obserwator" może sobie czytać dany wątek nie zaglądając na 4p nawet... (tak, wiem z marketingowego punktu widzenia nie jest to opłacalne :P)

0

@Adam Boduch - ja mam małą uwagę co do treści (pisałem o tym wcześniej w komentarzu):

list.png

Źle to wygląda - "dam1an (oraz 5 osoby) [...]"; Byłbym skłonny do rozróżniania ilości tych innych osób i dodania słówka "innych", np.: "dam1an (oraz 5 innych osób) [...]"; Ale tak to fajnie działa - bardzo dobra funkcja :]

No i inna jeszcze sprawa - wszystkie powiadomienia otrzymałem od jednego użytkownika, więc przed wygenerowaniem treści złączonego powiadomienia trzeba by sprawdzić od ilu osób faktycznie dostało się powiadomienia i tę liczbę podać w treści.

1

@furious programming: dodałem odmianę słowa osoba, przy najbliższej okazji będzie na produkcji.
Fakt, system zlicza ilość powiadomień do danego postu, czy też mikrobloga - nie unikalność loginów.

0

Czyli póki co nie będzie zliczania powiadomień tego samego typu po ilości loginów, nie ilości samych powiadomień?

@Adam Boduch - jest jeszcze jedna sprawa; Otóż prawdopodobnie po modyfikacji powiadomień, popsuło się coś z powiadomieniami o jakiejś działalności w obserwowanych wątkach; Pojawiły się odpowiedzi w obserwowanym wątku, a ja nie otrzymałem żadnego powiadomienia; Nie odznaczałem gwiazdki przy obserwowanym wątku ani nie wprowadzałem zmian w panelu użytkownika, w dziale dotyczącym powiadomień;

Trzeba by to sprawdzić.

0

@furious programming: jeżeli nie będziesz otrzymywał powiadomień o odpowiedzi w obserwowanym wątku to daj znać. Ja sobie włączyłem obserwowanie tego wątku więc zobaczymy czy przyjdą powiadomienia :)

0

odpowiadam

0

@Adam Boduch - dziś w sumie cały dzień nie logowałem się, ale dostałem kilka powiadomień z obserwowanego wątku, więc póki co znów wszystko działa dobrze (łączenie powiadomień także);

Jakby coś się znów działo to dam znać.

0

Zauważyłem, że nie są łączone powiadomienia o odpisaniu na mój wpis na mikroblogu.

0

Zauważyłem złe grupowanie powiadomień - per wątek a nie per post
złe grupowanie powiadomień - per wątek a nie per post.png

0

@Marooned: rzeczywiście. Sprawdziłem i masz rajcę. Grupowanie odbywa się na podstawie kilku czynników (nie wynikając w szczegóły techniczne) ale w takim przypadku jak ten zaprezentowany przez Ciebie - faktycznie - nie działa to zgodnie z zamierzeniami. Ciekawy przypadek, nikt nie wyłapał tego do tej pory :) Wymaga to poprawki, ale niestety nie można tego poprawić tak "na szybko". Będę musiał dodać kolejny parametr według którego odbędzie się grupowanie.

1

Szkoda, bo przez to umyka mi sporo komentarzy. Wiem, że są "gdzieś" w danym wątku, ale jak wątek ma kilka stron, to sporo ręcznego szukania.

1
Marooned napisał(a):

Zauważyłem złe grupowanie powiadomień - per wątek a nie per post

@Marooned: to zostało poprawione. Rychło w czas!

2

Mały odkop w kwestii grupowania
screenshot-20201102153126.png
Wydaje mi się, że nawias zlicza też tę pierwszą osobę, czyli dla 3 polubień jest Kowalski (oraz 3 inne) zamiast oraz 2 inne.

2

Ha, rzeczywiście! Że też nikt nie zauważył wcześniej :) Poprawione.

1 użytkowników online, w tym zalogowanych: 0, gości: 1