Desktopowy pakiet kontroli jakości
Aplikacja desktopowa, która obsługuje proces jakości w zakładzie spożywczym: od przyjęcia dostaw i analiz laboratoryjnych po reklamacje i zapisy środowiskowe.
Problem
Wszystko, co trzeba zarejestrować, udokumentować i zatwierdzić między przyjazdem ciężarówki do bramy a zwolnieniem partii: dostawa, pobrane z niej próbki, wyniki laboratoryjne i decyzja, która z nich wynika; reklamacje do dostawców, reklamacje produktowe od klientów i protokoły zwrotów; raporty niezgodności; rejestry odczynników i aparatury; a także zapisy temperatury i wilgotności z hal magazynowych.
Użytkownicy pracują na stanowiskach na hali produkcyjnej i w laboratorium, w sieci firmowej, część z nich przy podłączonych wagach i drukarkach, a aplikacja musi działać dalej, nawet gdy szersza sieć nie działa.
Co zrobiłem
Przejąłem rolę głównego opiekuna i od tego czasu wydałem każdą wersję, w tym przejście na schemat major.feature.patch przy wersji 2.0. W praktyce oznacza to odpowiedzialność za backlog, wydania i zgłoszenia od użytkowników, a nie tylko za kod. Jestem największym pojedynczym autorem w repozytorium.
Zbudowałem podsystem rejestrów laboratoryjnych (odczynniki, jednostki, aparatura i metody badań, każdy z zamówieniami i historią zmian rekordu, oraz powiązanie kosztowe między ceną odczynnika a zamówieniami, które go zużywają), ekrany monitoringu środowiskowego z oknem wygładzania, dzięki któremu miesiąc odczytów z czujników da się przeczytać, oraz import z arkuszy kalkulacyjnych jako upsert po numerze dokumentu i arkuszu źródłowym, tak by poprawiony plik aktualizował wiersze zamiast je dublować.
Incydent, który wskazałbym jako przykład: po zmianie w katalogu użytkowników część osób mogła się zalogować, ale wszystkie ekrany były puste. Logowanie się udawało, a wyszukiwanie grup nic nie zwracało, co wykluczało problem z danymi logowania. Napisałem osobną sondę, która odtwarzała problem poza aplikacją na jednym z kont. Przyczyny były dwie, nałożone na siebie. Konta z zaufanej domeny występują w lokalnym katalogu jako obiekty zastępcze zapisane pod swoim identyfikatorem zabezpieczeń, więc wyszukiwanie grup trzeba budować na podstawie tego identyfikatora. A przy jednym skonfigurowanym kontrolerze katalogu niedostępny kontroler był zgłaszany jako „brak grup”, a nie jako błąd.
Poprawka próbuje po kolei każdy skonfigurowany kontroler z krótkim limitem czasu, rozróżnia w logu „nic nie znaleziono” od „nie udało się zapytać” i rozpoznaje konta z zaufanej domeny po identyfikatorze. Utrata kontrolera oznacza teraz wolniejsze logowanie, a nie awarię.
Decyzja i jej koszt
To aplikacja desktopowa w Qt łącząca się bezpośrednio z Oracle, a nie aplikacja webowa. Użytkownicy nie są w internecie, stanowiska są zarządzane centralnie, a oprogramowanie komunikuje się ze sprzętem, więc klient desktopowy usuwa całą warstwę. Kosztem jest to, że wdrożenie nie sprowadza się do odświeżenia strony. Ten koszt przyjęliśmy świadomie: aplikacja jest dystrybuowana jako instalator Windows z własnym kanałem samoaktualizacji, więc każde stanowisko ma aktualną wersję bez wizyty działu IT.
Powiązane
Platforma desktopowa BasePy
Jeden wspólny framework (MVC, logowanie przez katalog, samoaktualizacja, pakowanie) pod aplikacjami desktopowymi pięciu działów.
Główny opiekun jednej aplikacji, autor drugiej, odpowiedzialny za wydania w całej rodzinie
Python 3.12 · PySide6 · Oracle · SQL Server
Kiosk ewidencji obecności
Kiosk z czytnikiem identyfikatorów, który pokazuje pracownikowi jego własną ewidencję obecności, a potem sam się czyści.
Autor
Python · PySide6 · PyInstaller · Inno Setup