Reklamacje aplikacja działająca w przeglądarce
Aplikacja do reklamacji obsługuje zgłoszenia przez przeglądarkę internetową, bez instalowania programu na stanowisku pracownika czy na telefonie klienta. Według opisu producenta Studio RMA.net opiera się na platformie ASP.NET i bazie Microsoft SQL Server. Interfejs webowy działa w przeglądarce komputera, a także na telefonach z Androidem i iOS.
Wybór między aplikacją przeglądarkową a instalowaną ma skutki organizacyjne. Aplikację przeglądarkową aktualizuje się raz, na serwerze, i od razu widzą ją wszyscy użytkownicy. Aplikacja instalowana wymaga wersji na każdy system oraz tego, żeby użytkownicy przyjęli aktualizacje.
| Podejście | Instalacja | Aktualizacja | Aparat telefonu | Ograniczenie |
|---|---|---|---|---|
| Aplikacja instalowana ze sklepu | na każdym telefonie | po stronie użytkownika | pełny dostęp | osobne wersje na Androida i iOS |
| Aplikacja w przeglądarce | brak | na serwerze, dla wszystkich naraz | przez pole pliku z atrybutem capture | wymaga połączenia z siecią |
| Aplikacja PWA | opcjonalny skrót na ekranie | na serwerze | jak w przeglądarce | praca offline wymaga dodatkowej implementacji |
Brak zasięgu jest głównym ograniczeniem aplikacji przeglądarkowej. Zgłoszenie sporządzone w piwnicy lub w hali bez sieci trzeba wysłać po odzyskaniu połączenia. Aplikacje PWA potrafią zapisać dane lokalnie i wysłać je później, ale wymagają osobnej pracy programistycznej i nie zastępują aplikacji z własną bazą offline.
Ogólne zasady budowy takich systemów opisuje artykuł o aplikacjach webowych, a odrębne ujęcie rozwiązania z dostępem internetowym zawiera tekst o reklamacjach w aplikacji internetowej.
Aplikacja PWA i praca offline
Aplikacja PWA (Progressive Web App) to strona z zarejestrowanym service workerem, który przechwytuje żądania sieciowe. Gdy sieci brakuje, zgłoszenie można zapisać w lokalnej bazie przeglądarki, IndexedDB, i wysłać po odzyskaniu połączenia. Interfejs Background Sync ułatwia takie ponowienie, ale nie działa we wszystkich przeglądarkach, więc aplikacja musi umieć opróżnić kolejkę także wtedy, gdy użytkownik otworzy ją ponownie. Zgłoszenia zapisane lokalnie wymagają ochrony, bo urządzenie może zostać zgubione.
Zgłoszenie ze zdjęciem z telefonu
Zdjęcie usterki skraca ocenę zasadności reklamacji, bo pracownik widzi wadę, zanim towar dotrze do serwisu. W przeglądarce telefonu wystarczy pole pliku z atrybutem capture: na telefonie otwiera ono aparat, a na komputerze okno wyboru pliku. Atrybut opisuje dokumentacja MDN.
<input type="file" id="zdjecie" accept="image/*" capture="environment">
<script>
async function wyslijZdjecie(numerSprawy, plik) {
const dane = new FormData();
dane.append('numerSprawy', numerSprawy);
dane.append('zdjecie', plik);
const odpowiedz = await fetch('/api/reklamacje/zalaczniki', { method: 'POST', body: dane });
return odpowiedz.ok; // false: pokazac komunikat i pozwolic ponowic wysylke
}
</script>
Studio RMA.net pozwala projektować własne pola formularza oraz dodawać checklisty i zdjęcia. Budowę formularza i rejestrację zgłoszenia w bazie opisuje tekst o programie RMA on-line. Przykład skryptu jest uproszczony: pomija identyfikację użytkownika i obsługę błędów sieci.
Kontrole po stronie serwera
Zdjęcie z telefonu waży kilka megabajtów. W klasycznym ASP.NET domyślny limit żądania wynosi 4 MB (parametr maxRequestLength), a IIS ma osobny limit maxAllowedContentLength, więc oba trzeba dostosować do realnych rozmiarów zdjęć. Zmniejszenie obrazu w przeglądarce przed wysyłką ogranicza ruch i czas przesyłania. Serwer nie może jednak ufać temu, co przysłała przeglądarka, i powtarza kontrole.
- Typ pliku - sprawdzanie zawartości pliku, a nie tylko rozszerzenia w nazwie.
- Rozmiar - limit na jeden plik i na całe zgłoszenie.
- Orientacja - odczyt znacznika EXIF i obrót obrazu, bo telefon zapisuje obrót w metadanych, a nie w pikselach.
- Metadane - usunięcie współrzędnych GPS z pliku przed zapisem, ponieważ zdradzają miejsce zrobienia zdjęcia.
Plik i rekord załącznika powinny powstawać razem. Jeśli zapis pliku się powiedzie, a wpis w bazie nie, zostaje plik bez właściciela. W odwrotnej kolejności w sprawie pojawia się załącznik, którego nie da się otworzyć. Prosty sposób to zapis pliku pod tymczasową nazwą, wpis w bazie w transakcji i dopiero wtedy zmiana nazwy na docelową.
Numer RMA i naklejka na paczce
Procedura RMA (Return Merchandise Authorization) formalizuje przyjmowanie zgłoszeń i odsyłanie produktów do serwisu. Aplikacja pilnuje, żeby każdy etap przebiegał według ustalonych zasad. Poniższa tabela pokazuje sześć etapów procesu w aplikacji internetowej.
| Etap | Co dzieje się w aplikacji |
|---|---|
| Zgłoszenie wady | klient opisuje usterkę w formularzu online i podaje dane produktu |
| Wstępna weryfikacja | zgłoszenie jest oceniane na podstawie danych z formularza |
| Nadanie numeru RMA | numer powstaje w chwili stwierdzenia konieczności przesłania produktu do gwaranta |
| Oznakowanie przesyłki | klient oznacza paczkę numerem RMA, często naklejką z kodem kreskowym lub QR wygenerowanym przez system |
| Odbiór w serwisie | serwis oczekuje przesyłki w czasie ważności zgłoszenia, a paczka bez numeru zwykle nie zostaje przyjęta |
| Rozpatrzenie i decyzja | dalsze kroki, na przykład naprawa albo zwrot środków, prowadzone według numeru nadanego na starcie |
W procedurze wysyłkowej numer RMA pełni rolę autoryzacji zwrotu i powstaje po wstępnej weryfikacji, gdy wiadomo już, że towar trzeba odesłać. Numer sprawy w rejestrze reklamacji może istnieć wcześniej. Znaczenie numeru i jego miejsce w dokumentach wyjaśnia artykuł o numerze RMA.
Kod kreskowy czy kod QR na naklejce
Kod Code 128 koduje pełny zestaw znaków ASCII i odczytuje go każdy skaner liniowy, więc dla numeru RMA składającego się z kilkunastu znaków wystarcza. Kod QR mieści znacznie więcej danych i odczytuje go aparat telefonu, co pozwala zakodować adres internetowy sprawy. Przy naklejkach drukowanych na drukarce etykiet ważniejsze od rodzaju kodu są wyraźny kontrast oraz wolne pole wokół symbolu. Zasady kodowania w logistyce omawia tekst o kodach kreskowych w magazynie.
Ważność numeru RMA
Serwis oczekuje przesyłki przez czas ważności zgłoszenia, więc numer RMA ma datę ważności. Zadanie cykliczne oznacza jako wygasłe zgłoszenia, w których termin nadania paczki minął, i powiadamia klienta o możliwości ponowienia. Termin powinien być widoczny na dokumencie i w wiadomości, bo klient, który o wygaśnięciu dowiaduje się w punkcie nadania, traci zaufanie do procesu.
UPDATE r
SET r.StatusId = @StatusWygasla
FROM dbo.Reklamacja AS r
WHERE r.StatusId = @StatusOczekujeNaPrzesylke
AND r.DataWaznosciRMA < SYSDATETIMEOFFSET();
Bezpieczeństwo aplikacji reklamacyjnej
Producent podaje, że Studio RMA.net szyfruje transmisję danych protokołem TLS, zabezpiecza konto indywidualnym loginem i hasłem każdego użytkownika, przechowuje dane zgodnie z wymogami RODO i wykonuje regularne kopie zapasowe. Każdy z tych elementów opiera się na mechanizmie, który warto znać przy ocenie oferty.
- Transport - TLS szyfruje połączenie, a serwer przekierowuje adresy HTTP na HTTPS i wysyła nagłówek HSTS.
- Uwierzytelnianie - osobne konto dla każdego pracownika, a hasła przechowywane jako skróty z solą, a nie jawnie.
- Dane osobowe - zbierane w zakresie potrzebnym do reklamacji, z określonym czasem przechowywania.
- Kopie zapasowe - okresowo odtwarzane w próbie, bo kopia, której odtworzenia nie sprawdzono, jest tylko założeniem.
Reguła: konto współdzielone przez zespół uniemożliwia ustalenie, kto zmienił decyzję w sprawie, więc każdy pracownik ma własny login.
Dane klienta w reklamacji są danymi osobowymi, więc okres ich przechowywania trzeba powiązać z czasem, w którym roszczenia mogą jeszcze zostać zgłoszone. Po jego upływie dane osobowe można zanonimizować: zamienić na wartości neutralne i zachować dane statystyczne, takie jak model towaru i kod przyczyny. Dzięki temu raporty jakościowe pozostają kompletne bez trzymania danych, które nie są już potrzebne.
Wymuszanie HTTPS w aplikacji ASP.NET Core opisuje dokumentacja Enforce HTTPS na Microsoft Learn. Szyfrowanie połączenia między aplikacją a bazą konfiguruje się osobno, a wskazówki podaje strona o szyfrowaniu połączeń z SQL Server. Uprawnienia użytkowników i ich zakres w systemie reklamacyjnym opisuje tekst o programie do obsługi reklamacji.
Aplikacja RMA na wielu stanowiskach i w oddziałach
Według opisu producenta aplikacja nadaje się do firm wielostanowiskowych i wielooddziałowych, a dostępność online pozwala używać jej jednocześnie wielu pracownikom, także poza Polską. Za tym opisem stoją dwa mechanizmy bazy danych: współbieżność zapisów i odczytów oraz poprawne liczenie czasu w różnych strefach.
Współbieżność w SQL Server
Domyślny poziom izolacji READ COMMITTED używa blokad, więc odczyt listy spraw może czekać na trwający zapis. Opcja READ_COMMITTED_SNAPSHOT zamienia to na wersjonowanie wierszy: czytający dostaje ostatnią zatwierdzoną wersję i nie czeka. Ceną jest większe zużycie bazy tempdb, w której SQL Server trzyma wersje wierszy. Mechanizm opisuje przewodnik blokowania i wersjonowania wierszy.
ALTER DATABASE Reklamacje SET READ_COMMITTED_SNAPSHOT ON WITH ROLLBACK IMMEDIATE;
Przy wielu jednoczesnych użytkownikach znaczenie ma także pula połączeń. Aplikacja ADO.NET otwiera połączenia z bazą w puli o ograniczonej wielkości, więc każde połączenie zamyka się zaraz po użyciu, najlepiej w bloku using. Niezamknięte połączenia wyczerpują pulę i aplikacja zaczyna odpowiadać błędami przy większym ruchu.
Czas w różnych strefach
Oddziały w różnych krajach wymagają zapisu czasu razem z przesunięciem względem UTC. Typ DATETIMEOFFSET przechowuje je w jednej kolumnie, więc porównanie terminu SLA nie zależy od strefy komputera, na którym działa aplikacja. Przeglądarka pokazuje czas w strefie użytkownika, a baza przechowuje ten sam moment bez przeliczeń.
CREATE TABLE dbo.Reklamacja (
Id INT IDENTITY(1,1) PRIMARY KEY,
DataRejestracji DATETIMEOFFSET(0) NOT NULL DEFAULT SYSDATETIMEOFFSET(),
TerminOdpowiedzi DATETIMEOFFSET(0) NULL
);
Dokumenty w formatach xls i PDF
Producent wymienia jako standard zapis i obsługę plików xls oraz generowanie dokumentów PDF. Pliki w formacie Excel służą do wymiany zestawień, na przykład listy spraw z filtra. PDF nadaje się do dokumentów, które nie mają się zmieniać po wysłaniu, takich jak protokół reklamacyjny albo pismo do klienta.
Wydruki generuje się zwykle z szablonów raportowych, a szablon RDL pozwala zmienić układ dokumentu bez zmiany aplikacji. Nazwa pliku z numerem sprawy ułatwia odnalezienie dokumentu po latach. Wysłany PDF warto zapisać w sprawie jako załącznik wewnętrzny, żeby wersja przekazana klientowi była dostępna dokładnie w tej postaci. Przykład drogi od zapytania do wydruku pokazuje artykuł o SQL Report Builder i raportach RDL, a zestawienia kontrolne opisuje tekst o programie do nadzorowania reklamacji.
Kryteria wyboru oferty na aplikację do reklamacji
Wybór systemu RMA online to decyzja na kilka lat, więc warto ją poprzedzić porównaniem ofert. Kryteria poniżej oddzielają rozwiązanie, które spełnia potrzeby firmy, od takiego, które dobrze wygląda w materiałach sprzedażowych.
| Kryterium | Pytanie do dostawcy |
|---|---|
| Model licencjonowania | czy dostępny jest wariant SaaS (abonament) oraz wdrożenie lokalne i który lepiej pasuje do polityki IT firmy |
| Czas wdrożenia | ile trwa uruchomienie od podpisania umowy do startu produkcyjnego i czy jest wersja demonstracyjna |
| Wsparcie i SLA | jaki jest gwarantowany czas reakcji i czy wsparcie działa w języku polskim |
| Integracje | czy system łączy się z ERP i sklepem internetowym przez gotowe API |
| Skalowalność | czy aplikacja utrzyma wydajność przy wzroście liczby zgłoszeń i użytkowników |
| Bezpieczeństwo danych | czy dostawca zapewnia szyfrowanie transmisji i kopie zapasowe, a także zgodność z RODO |
Próba na własnych danych daje więcej niż prezentacja. Kilkanaście prawdziwych zgłoszeń z ostatniego kwartału, wprowadzonych do wersji testowej, pokazuje, czy pola formularza pasują do produktów, czy statusy odpowiadają procesowi i czy raporty odpowiadają na pytania kierownika. Wynik próby warto zapisać w tabeli i porównać między dostawcami.
Według opisu producenta Studio RMA.net oferuje API REST do integracji z systemami ERP oraz z platformami e-commerce i kurierskimi. Ofertę warto sprawdzić na wersji demonstracyjnej z kilkoma przykładowymi zgłoszeniami, zanim zapadnie decyzja. Aplikację można obejrzeć w demo reklamacji, a model dostarczania w abonamencie opisuje producent na stronie o systemie RMA w modelu SaaS.
Nazwa RMA obejmuje cały proces przyjmowania zgłoszeń, więc oferta powinna obejmować cały proces, od formularza po raportowanie. Ogólne omówienie programu w wersji przeglądarkowej zawiera tekst program RMA online, a szczegóły obiegu sprawy podaje artykuł o oprogramowaniu do obsługi reklamacji.



