Witaj. Potrzebny jest prosty bot dla pracowników magazynu, którzy rano będą przesyłać zdjęcia raportu z magazynu. Specyfikacja została napisana za pomocą GPT. Można to zrobić prościej, pomysły są mile widziane. Najważniejsze, żeby działało. Krok instrukcja - następnie zdjęcie - i kolejny krok. I trafia do kierownika.
1) Cel i oczekiwany efekt
2) Role użytkowników
Pracownik (magazynier): otrzymuje indywidualne zadania w swoich obszarach; przesyła zdjęcia + checklistę; otrzymuje feedback.
Starszy zmiany: widzi dashboard wykonania w zmianie, akceptuje/odrzuca raporty, otwiera incydenty.
Cel
Stworzyć prostego bota Telegram, który codziennie o 09:30 wysyła jednemu pracownikowi krokowe zadanie: sfotografować kluczowe obszary w dwóch magazynach + strefę zwrotów + magazyn. Po zakończeniu bot wysyła podsumowanie do menedżera.
Scenariusz (użytkownik → bot)
09:30 — bot wysyła: “Rozpocznij kontrolę”.
Etap 1 — Magazyn nr 1:
Zdjęcie każdej półki (widoczna cała półka, przejście nie jest zablokowane).
Zdjęcie ogólnego widoku magazynu nr 1.
Zasady: towar tylko na regałach; według artykułów (nie mieszamy); nic na podłodze; podłoga czysta; dokumenty posegregowane.
Etap 2 — Magazyn nr 2:
Zdjęcie każdej półki (pełna długość półki).
Zdjęcie ogólnego widoku magazynu nr 2.
Zasady jak wyżej: czystość, przejścia, bez śmieci i “tymczasowych” pudełek.
Etap 3 — Strefa zwrotów:
1 zdjęcie strefy zwrotów.
Zasady: całe — razem; uszkodzone/niepełne — osobno, podpisane; nic na podłodze; ułożone w blokach według artykułów.
Etap 4 — Magazyn/ garderoba/ drukarka:
Finał — bot pokazuje podsumowanie “Raport wysłany do menedżera”.
Natychmiastowe odrzucenie zdjęć (bot pokazuje wskazówkę i prosi o ponowne zrobienie zdjęcia)
Nie widać całej półki lub zablokowane przejścia.
Towar na podłodze lub pomieszane artykuły.
Śmieci/folia/pudełka w strefie roboczej.
Niewyraźne/ciemne zdjęcie.
Role
Wynik dla menedżera
Po zakończeniu — jedna wiadomość typu:
Gdzie wdrażamy to w Laravel i jak
Technologia
Laravel 10/11 (twój istniejący projekt).
Baza danych: SQLite/PostgreSQL (na pilota można SQLite).
Kolejki: Redis (lub sync do testów).
Pliki: lokalnie storage/app/public/photos (na pilota), później — S3/MinIO.
Paczki (composer)
composer require irazasyed/telegram-bot-sdk:^3.0 predis/predis:^2.0
(Jeśli już masz inny SDK — ok.)
ENV (przykład)
TELEGRAM_BOT_TOKEN=xxxx
TELEGRAM_BOT_NAME=warehouse_pilot_bot
APP_URL=https://your-domain
TIMEZONE=Europe/Warsaw
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
QUEUE_CONNECTION=redis # lub sync na pilota
Trasy
POST /bot/telegram/webhook # odbiór aktualizacji
Kontroler/Usługa
App\Http\Controllers\BotWebhookController@handle — odbiera aktualizacje, zarządza stanem “który etap/który rząd”.
Prosty stan w bazie danych: kto na którym kroku, ile zdjęć już jest.
Minimalne tabele
bot_users (id, telegram_id, rola[pracownik|menedżer], imię).
runs (id, worker_id, data, started_at, finished_at, status).
run_photos (id, run_id, stage[wh1|wh2|returns|cloak], note, path, created_at).
(Na pilota KPI/checklisty nie przechowujemy — tylko zdjęcia i etap.)
Planista (Scheduler)
Webhook
Po wdrożeniu:
curl -F "url=https://your-domain/bot/telegram/webhook" \
https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/setWebhook
Wdrożenie
Wszystko w istniejącym projekcie Laravel.
Do testów wystarczy nginx + PHP-FPM + HTTPS (Let’s Encrypt).
Na produkcji — Supervisor dla queue:work (lub na razie QUEUE_CONNECTION=sync).
Zakres prac freelancera
Co zrobić
Podłączyć webhook Telegram w Laravel.
Zrealizować krokowy flow z 4 etapami (w tym wskazówki “jak powinno wyglądać zdjęcie”).
Przechowywać zdjęcia lokalnie, grupować według “rano/datą/etapem”.
Po zakończeniu — wysyłać menedżerowi podsumowanie (jedna wiadomość z albumem).
Komendy dla planisty oraz instrukcja konfiguracji webhook.
Skonfigurować prosty “reset” komendą /reset dla pilota (zresetować postęp).
Odbiór
O 09:30 pracownik otrzymuje przypomnienie.
Przechodzi wszystkie 4 etapy, bot akceptuje odpowiednie zdjęcia, odrzuca nieodpowiednie (zgodnie z zasadami powyżej).
Menedżer otrzymuje jedną podsumowującą wiadomość ze zdjęciami i oznaczeniami etapów.
Ponowne uruchomienie w tym samym dniu możliwe komendą /start lub /reset (do testów).
Przekazanie
Repozytorium (Git) + README.md z instrukcją.
.env.example wypełnione polami bota.
Migracje (bot_users, runs, run_photos).
Komendy: php artisan schedule:work (na test), php artisan queue:work (w razie potrzeby).
Konfiguracja Supervisor (opcjonalnie).
Załącznik: wzorcowe wskazówki do zdjęć (wyświetlać w bocie przed krokiem)
Magazyn nr 1 (każda półka + ogólne):
— Półka w kadrze całkowicie; przejścia czyste; towar na regałach, nie na podłodze; bez “tymczasowych” pudełek; artykuły nie pomieszane.
Magazyn nr 2 (każda półka + ogólne):
— To samo: pełna długość półki, czysto, brak zbędnych rzeczy, artykuły osobno.
Strefa zwrotów:
— Całe — razem; uszkodzone/niepełne — osobno i podpisane; nic na podłodze; porządek widoczny na zdjęciu.
Magazyn/drukarka:
— Rzeczy osobiste w szafkach; obuwie poukładane; podłoga czysta; stół z drukarką posprzątany; jest papier/taśma/klej.
Ten tekst można bezpośrednio publikować na freelansie. Jeśli trzeba — przygotuję z tego PDF/Word i oddam plikiem razem z krótkim szablonem odpowiedzi dla kandydatów, aby łatwiej porównywać oferty.