Projekt: Aplikacja desktopowa w Pythonie do automatyzacji publikacji ogłoszeń na Bazoš.skTechnologie: Python, Playwright, PySide6, SQLite, import/eksport ExcelKoszt drugiego etapu: 27 000 UAHTermin realizacji: 12–14 dni roboczych po zarezerwowaniu płatności na Sejfie i otrzymaniu czeskiego PSČ dla probe Bazoš.cz.
1. Cel drugiego etapu
Rozszerzenie roboczej wersji MVP do pełnoprawnego narzędzia produkcyjnego do codziennej pracy menedżera na Bazoš.sk.
Etap 2 zamyka wszystkie kluczowe scenariusze regularnej pracy: — automatyczna rotacja i ponowna publikacja ogłoszeń; — uruchamianie pracy według harmonogramu bez udziału użytkownika; — monitorowanie stanu opublikowanych ogłoszeń; — zarządzanie grupami kont; — dwustronna synchronizacja wyników z Excelem; — wsparcie dla dowolnych "prosty" kategorii Bazoš.sk przez uniwersalny silnik (zamiast jednej stałej kategorii Notebooky z Etapu 1).
Po Etapie 2 menedżer otrzymuje narzędzie, które wymaga minimalnej interwencji ręcznej: ustawić harmonogram raz → bot sam publikuje, aktualizuje, monitoruje i zapisuje wyniki z powrotem do Excela.
2. Co wchodzi w drugi etap
2.1 Moduł rotacji / automatycznej ponownej publikacji
— konfigurowany interwał rotacji w dniach: • globalny domyślny 3 dni; • możliwość nadpisania interwału dla konkretnego konta (na przykład dla laptopów 1 dzień, dla drobiazgów 3 dni); — logika rotacji: usunięcie starego ogłoszenia na Bazoš → publikacja nowego z tymi samymi danymi (ten sam tytuł/opis/zdjęcie/PSČ) → aktualizacja linku w bazie danych i Excelu; — przycisk „Zaktualizuj wybrane konto”: pozwala menedżerowi ręcznie uruchomić rotację dla jednego konkretnego konta, nie dotykając innych; — nowy status reserve do wykluczenia towarów z rotacji: • ustawiany ręcznie w aplikacji (prawy klik → „Zarezerwować”) lub przez kolumnę w Excelu; • takie towary bot pomija podczas rotacji do momentu zdjęcia statusu; — kontrola limitu 50 aktywnych ogłoszeń na konto: • przed publikacją bot sprawdza liczbę aktywnych ogłoszeń na koncie; • jeśli limit osiągnięty → rotacja dla tego konta zostaje zatrzymana, w logu zapisuje się powiadomienie, menedżer ręcznie decyduje co zrobić (usunąć stare ogłoszenia lub tymczasowo wyłączyć konto); • automatycznego usuwania starych ogłoszeń bot nie wykonuje.
2.2 Moduł harmonogramu / planowania
— harmonogram dla każdego konta osobno z dwoma trybami: • konkretna godzina: na przykład konto #1 publikuje o 09:00, 13:00, 17:00; • zakres z interwałem: na przykład od 09:00 do 18:00 co 60 minut; — automatyczne uruchamianie rotacji według harmonogramu: aplikacja sama w określonym czasie uruchamia kolejkę dla konta, przechodzi przez pending-towary, robi przerwy między publikacjami i kończy pracę; — weekendy/święta nie są uwzględniane — logika jest taka sama każdego dnia; — przegląd harmonogramu na zakładce „Ustawienia” w formie tabeli: konto → najbliższe uruchomienie → następne uruchomienie; — możliwość tymczasowego wyłączenia harmonogramu dla konta (znacznik „aktywny/nieaktywny”).
2.3 Moduł monitorowania stanu ogłoszeń
— okresowe sprawdzanie URL opublikowanych ogłoszeń w tle; — częstotliwość sprawdzania konfigurowana w UI (domyślnie co 12 godzin); — dla każdego URL bot określa jeden z stanów: • active — ogłoszenie dostępne i aktywne; • inactive — ogłoszenie zostało usunięte przez Bazoš, zablokowane, lub link zwraca 404; — aktualizacja statusu towaru w aplikacji: nowy status inactive, oddzielny filtr na zakładce „Towary” do szybkiego wyboru wszystkich nieaktywnych; — dziennik zmian dla każdego towaru: kiedy zostało opublikowane → kiedy stało się nieaktywne → przyczyna (jeśli można ją określić na podstawie odpowiedzi Bazoš); — bot nie wykonuje automatycznej ponownej publikacji nieaktywnych ogłoszeń — to decyzja menedżera: może on zaznaczyć takie towary i nacisnąć „Uruchom ponownie wybrane”.
2.4 Moduł grupowania kont
— dowolne grupy użytkowników kont z własnymi nazwami (na przykład „Laptopy”, „Drobna elektronika”, „Samochody”, „Sprzęt AGD”); — na starcie konfigurowane są 2 grupy, możliwość dodawania nowych bez ograniczeń; — jedno konto należy dokładnie do jednej grupy (nie do kilku); — filtr według grup na zakładkach „Towary”, „Konta”, „Kolejka”; — start/stop kolejki dla konkretnej grupy: możliwość uruchomienia publikacji tylko dla kont wybranej grupy, nie dotykając innych; — konfiguracja grup zapisywana jest w bazie danych, przenoszona razem z projektem przy kopiowaniu na inny komputer.
2.5 Moduł dwustronnej synchronizacji z Excelem
— przycisk „Zapisz wyniki w Excelu” na zakładce „Towary”: • wybierany jest źródłowy plik Excel (lub zapamiętywany ostatnio używany); • bot aktualizuje w tym pliku kolumny: status, published_url, published_at, error_comment; • zapis tylko w istniejących wierszach — struktura pliku nie jest łamana; — przetwarzanie sprzedanych/usuniętych towarów: • towary ze statusem sold lub inactive są usuwane z pliku Excel (odpowiedni wiersz jest usuwany); • opcjonalnie można włączyć „nie usuwać, oznaczać statusem” — przełącza się w ustawieniach; — kolumna product_id zalecana do użycia jako kotwica do niezawodnego dwustronnego dopasowania (jeśli jej nie ma — fallback na tytuł); — synchronizacja uruchamiana jest tylko za pomocą przycisku (automatycznego timera w Etapie 2 nie ma — dodawany w razie potrzeby w następnych etapach).
2.6 Uniwersalny silnik „prosty kategorie” Bazoš.sk
W Etapie 1 wspierana była tylko kategoria PC → Notebooky. W Etapie 2 realizowany jest uniwersalny publisher, działający z dowolną „prostą” podkategorią Bazoš.sk bez hardcodowania:
— Excel wspiera dowolne wartości w kolumnach category / subcategory; — bot automatycznie rozwiązuje je w poprawny URL sekcji + wybór podkategorii w formularzu; — „prosta kategoria” = podkategoria z podstawowym formularzem publikacji (tytuł, opis, cena, PSC, zdjęcie, kontakt, hasło), bez dodatkowych specyficznych pól.
Gwarantowane pokrycie w Etapie 2:
— wszystkie 20 podkategorii z pliku Palets.xlsx: • PC → Dyski twarde/SSD, Konsole do gier, Urządzenia do gier • Elektro → Odkurzacze, Telewizory, Projektory, Hifi/Radia, Radiotelefony, Inne audio wideo, Inne drobne, Ręczne miksery/Miksery • Foto → Kamery wideo • Telefony → Inne marki • Dzieci → Zabawki, Meble dla dzieci • Dom i ogród → Sprzęt ogrodowy, Inne • Meble → Lampy, oświetlenie • Samochody → Części zamienne użytkowe — proste podkategorie Auto/Motocykle, wyraźnie wymienione przez klienta: Części zamienne, Tuning, Odzież, Inne (pod warunkiem, że probe formularze potwierdzają brak specyficznych pól); — z dużym prawdopodobieństwem działa każda inna prosta podkategoria w działach PC, Elektro, Telefony, Foto, Dzieci, Meble, Dom i ogród — ponieważ silnik jest uniwersalny, nowe podkategorie dodawane są poprzez edycję jednej linii mapowania bez przerabiania logiki; — w ciągu 5 dni roboczych po oddaniu Etapu 2 klient może przetestować dowolną prostą podkategorię — jeśli coś nie działa, naprawiam to bezpłatnie w ramach okresu poprawek błędów.
2.7 Probe Bazoš.cz dla Etapu 3 (bonus, bez dodatkowej płatności)
W ramach Etapu 2 przeprowadzam krótki probe (1–2 godziny) czeskiej strony Bazoš.cz: — sprawdzam, czy słowackie konto + słowackie proxy publikuje na .cz bez wyzwalania ponownej weryfikacji; — sprawdzam, czy formularz publikacji jest identyczny z .sk (selekcje, pola, Dropzone); — na podstawie wyników ustalam ostateczną kwotę Etapu 3 w uzupełnieniu do tego TŻ przed rozpoczęciem Etapu 3.
To nie wchodzi w koszt Etapu 2 jako osobna praca — uboczny wynik rozwoju uniwersalnego silnika kategorii.
2.8 Włączany w okres poprawek Etapu 1 punkt
W ramach okresu poprawek pierwszego etapu (czyli do rozpoczęcia Etapu 2 i bez dodatkowej płatności):
— dodanie kolumny product_id w UI na zakładce „Towary” dla wygodnego wyszukiwania i identyfikacji towarów; — wartości kolumny są pobierane z pola product_id w Excelu podczas importu (jak już w Palets.xlsx z formatem #P001, #P004, #P005).
3. Co NIE wchodzi w drugi etap
Następujące punkty uzgodnione jako osobne etapy lub nie wchodzące w projekt w ogóle:
→ Etap 3 (Bazoš.cz):— pełna publikacja na Bazoš.cz z wsparciem wszystkich 5 modułów Etapu 2; — równoległy moduł site app/sites/bazos_cz/; — rozszerzenie Excel do wyboru publikacji site; — test na czeskich PSČ; — orientacyjny koszt: 10 000–12 000 UAH, 4–5 dni (ostateczna kwota po probe w Etapie 2).
→ Etap 4 (skalowanie i złożone kategorie):— równoległa praca ponad 10 kont na jednym PC (pul browser workers, równoległe kolejki, optymalizacja GUI); — wsparcie kategorii z unikalnymi polami: Motocykle/Skutery (z pojemnością silnika, rokiem), Samochody/Auta (pełne auta), Nieruchomości (nieruchomości z metrażem) — jeśli będą wymagane; — orientacyjny koszt: ~22 000 UAH, 8–10 dni.
→ Etap 5 (multi-PC, opcjonalnie):— praca dwóch i więcej PC z wspólną bazą danych (PostgreSQL) do centralnego zarządzania kontami i publikacjami; — synchronizacja stanu między instancjami; — orientacyjny koszt: ~25 000 UAH, 10–12 dni.
Jeśli dla dwóch PC wystarczy niezależna praca (różne zestawy kont na każdym PC, bez synchronizacji) — Etap 5 nie jest potrzebny.
→ Nie wchodzą w projekt w ogóle (po uzgodnieniu z klientem): — płatna promocja / topowanie / Komercyjny ogłoszenie; — antydetekcja / emulacja „odcisków” przeglądarki ponad aktualną logikę; — analityka, raporty, dashboardy dotyczące efektywności ogłoszeń; — kategorie z zasadniczo innymi polami formularza (pełne auta, nieruchomości).
4. Kryteria akceptacji Etapu 2
Akceptacja odbywa się według checklisty:
Moduł rotacji:— [ ] konfigurowany interwał rotacji globalnie i na konto; — [ ] przycisk „Zaktualizuj wybrane konto” uruchamia rotację tylko dla wybranego konta; — [ ] towary ze statusem reserve są pomijane; — [ ] przy osiągnięciu limitu 50 ogłoszeń rotacja dla konta zostaje zatrzymana i zapisuje się w logu.
Moduł harmonogramu:— [ ] dla konta można ustawić harmonogram w dwóch trybach (konkretna godzina / zakres z interwałem); — [ ] aplikacja sama uruchamia rotację według harmonogramu; — [ ] tabela harmonogramu na zakładce „Ustawienia” wyświetla najbliższe uruchomienia.
Moduł monitorowania:— [ ] okresowe sprawdzanie URL uruchamiane jest według timera; — [ ] częstotliwość sprawdzania konfigurowana w UI; — [ ] nieaktywne ogłoszenia otrzymują status inactive; — [ ] na zakładce „Towary” działa filtr według statusu inactive.
Moduł grup:— [ ] można stworzyć minimum 2 grupy i przypisać do nich konta; — [ ] filtry według grup działają na wszystkich zakładkach; — [ ] start/stop kolejki według grupy uruchamia publikację tylko kont tej grupy.
Moduł synchronizacji Excel:— [ ] przycisk „Zapisz wyniki w Excelu” aktualizuje potrzebne kolumny w źródłowym pliku