INSTRUKCJA ZADAŃ CRON OVH DLA APLIKACJI SYMFONY Założenie: Katalog cron znajduje się bezpośrednio w katalogu głównym aplikacji Symfony, obok: - bin/ - config/ - src/ - vendor/ - .env Przykładowa struktura: app/ ├── bin/ ├── config/ ├── cron/ ├── src/ ├── vendor/ └── .env W panelu OVH w polu „Polecenie do wykonania” wskazujesz ścieżkę do konkretnego pliku PHP względem katalogu FTP, np.: ./app/cron/snapwear_poll_statuses.php Jeśli aplikacja znajduje się bezpośrednio w katalogu www: ./www/cron/snapwear_poll_statuses.php Wybierz wersję PHP zgodną z aplikacją, np. PHP 8.4. WAŻNE: Każdy plik uruchamia odpowiednią komendę Symfony przez wewnętrzny bootstrap. Nie wskazuj plików z katalogu src/Command/. Nie wskazuj bezpośrednio bin/console. Nie kieruj zadania do adresu WWW. 1. SYNCHRONIZACJA ZAMÓWIEŃ Z PRESTASHOP Ścieżka: ./app/cron/sync_prestashop.php Komenda Symfony: app:orders:sync-prestashop --limit=100 Efekt: - pobiera nowe i zmienione zamówienia z PrestaShop, - aktualizuje dane zamówień już istniejących, - zapisuje pozycje, dane klienta, adresy, warianty, mockupy i dane dostawy, - nie powinien tworzyć duplikatów przy ponownym pobraniu. Sugerowana częstotliwość: - optymalnie: co 5 minut, - na hostingu OVH z ograniczeniem harmonogramu: co godzinę. Opis w OVH: Synchronizacja zamówień z PrestaShop 2. PRZETWARZANIE REALIZACJI I WYSYŁKA DO DOSTAWCÓW Ścieżka: ./app/cron/fulfillments_dispatch.php Komenda Symfony: app:fulfillments:dispatch --limit=20 Efekt: - pobiera oczekujące próby wysyłki do dostawców, - buduje payload realizacji, - w trybie testowym zapisuje JSON lokalnie, - w trybie produkcyjnym wysyła payload do API dostawcy, - zapisuje odpowiedź, kod HTTP i status próby, - obsługuje retry, lock i błędy. Sugerowana częstotliwość: - optymalnie: co 1 minutę, - na OVH: co godzinę. Opis w OVH: Wysyłka realizacji do dostawców 3. ODSWIEŻANIE SESJI SNAPWEAR Ścieżka: ./app/cron/snapwear_refresh_session.php Komenda Symfony: app:providers:snapwear:refresh-session Efekt: - loguje aplikację do panelu Snapwear, - odświeża cookies i sesję, - zapisuje sesję w formie szyfrowanej, - zapobiega błędom pollingu wynikającym z wygaśnięcia sesji. Sugerowana częstotliwość: - optymalnie: co 30 minut, - na OVH: co godzinę. Opis w OVH: Odświeżanie sesji panelu Snapwear 4. DOPASOWYWANIE ZAMÓWIEŃ SNAPWEAR DO REALIZACJI Ścieżka: ./app/cron/snapwear_match_orders.php Komenda Symfony: app:providers:snapwear:match-orders --limit=50 Efekt: - pobiera ostatnie zamówienia z panelu Snapwear, - otwiera szczegóły kandydatów, - porównuje e-mail i numer telefonu klienta, - zapisuje numer zamówienia Snapwear przy naszej realizacji, - oznacza konflikty i niejednoznaczne dopasowania do ręcznego sprawdzenia. Sugerowana częstotliwość: - optymalnie: co 10 minut, - na OVH: co godzinę. Opis w OVH: Dopasowywanie zamówień Snapwear 5. POBIERANIE STATUSÓW I TRACKINGU Z PANELU SNAPWEAR Ścieżka: ./app/cron/snapwear_poll_statuses.php Komenda Symfony: app:providers:snapwear:poll-statuses --limit=50 Efekt: - pobiera szczegółowy status realizacji z panelu Snapwear, - aktualizuje status lokalny realizacji przez mapowanie, - zapisuje historię statusów, - pobiera przewoźnika i numer trackingowy, - tworzy lub aktualizuje przesyłkę, - zapisuje ostatni błąd i termin kolejnego sprawdzenia. Sugerowana częstotliwość: - optymalnie: co 15 minut, - na OVH: co godzinę. Opis w OVH: Pobieranie statusów Snapwear 6. ŚLEDZENIE PRZESYŁEK INPOST I DPD Ścieżka: ./app/cron/shipments_track.php Komenda Symfony: app:shipments:track --limit=50 Efekt: - pobiera statusy przesyłek po numerze trackingowym, - dla InPost korzysta z publicznego endpointu JSON, - dla DPD korzysta z endpointu śledzenia i parsera HTML, - zapisuje pełną historię zdarzeń przesyłki, - aktualizuje status przesyłki, - może zmienić status realizacji i zagregowany status zamówienia, - stosuje retry, backoff i osobne locki przewoźników. Sugerowana częstotliwość: - optymalnie: co 15 minut, - na OVH: co godzinę. Opis w OVH: Śledzenie przesyłek InPost i DPD 7. WYSYŁANIE STATUSÓW I TRACKINGÓW DO PRESTASHOP Ścieżka: ./app/cron/push_channel_updates.php Komenda Symfony: app:orders:push-channel-updates --limit=50 Efekt: - pobiera oczekujące aktualizacje kanału, - wysyła wybrane kluczowe statusy do PrestaShop, - wysyła numery trackingowe do PrestaShop, - respektuje mapowanie statusów, - respektuje onlyOnce i notifyCustomer, - zapisuje kod HTTP, odpowiedź i błędy, - ponawia nieudane akcje zgodnie z backoffem. Sugerowana częstotliwość: - optymalnie: co 5 minut, - na OVH: co godzinę. Opis w OVH: Wysyłanie statusów do PrestaShop 8. CZYSZCZENIE WYGASŁYCH PUBLIKACJI ART-ÓW I MOCKUPÓW Ścieżka: ./app/cron/cleanup_publications.php Komenda Symfony: app:assets:cleanup-publications Efekt: - usuwa lub unieważnia wygasłe publiczne kopie ART-ów i mockupów, - nie usuwa prywatnych plików źródłowych, - ogranicza ilość starych plików publicznych, - działa zgodnie z ustawioną retencją. Sugerowana częstotliwość: - raz dziennie, - najlepiej w nocy, np. między 03:00 a 04:00. Opis w OVH: Czyszczenie publikacji ART i mockupów 9. CZYSZCZENIE STARYCH LOGÓW I SNAPSHOTÓW Ścieżka: ./app/cron/cleanup_order_data.php Komenda Symfony: app:maintenance:cleanup-order-data Efekt: - czyści stare logi techniczne, - czyści stare raw snapshoty, - stosuje ustawienia retencji, - nie powinien usuwać danych aktywnych realizacji i przesyłek. Sugerowana częstotliwość: - raz dziennie, - najlepiej po zadaniu czyszczenia publikacji. Opis w OVH: Czyszczenie starych danych modułu zamówień 10. ZBIORCZE ZADANIE GODZINOWE Ścieżka: ./app/cron/hourly_automation.php Uruchamiane procesy: - app:fulfillments:dispatch - app:providers:snapwear:match-orders - app:providers:snapwear:poll-statuses - app:shipments:track - app:orders:push-channel-updates Efekt: - uruchamia kolejno najważniejsze procesy automatyczne, - pozwala ograniczyć liczbę osobnych zadań w panelu OVH, - błąd jednej komendy nie powinien zatrzymać pozostałych. Sugerowana częstotliwość: - co godzinę. Opis w OVH: Automatyzacja zamówień, Snapwear i tracking Uwaga: Osobne zadania są bezpieczniejsze i łatwiejsze w diagnostyce. Pliku zbiorczego używaj tylko wtedy, gdy liczba zadań cron w OVH jest ograniczona. REKOMENDOWANY ZESTAW DLA OVH Jeżeli możesz dodać wiele osobnych zadań: 1. sync_prestashop.php — co godzinę 2. fulfillments_dispatch.php — co godzinę 3. snapwear_refresh_session.php — co godzinę 4. snapwear_match_orders.php — co godzinę 5. snapwear_poll_statuses.php — co godzinę 6. shipments_track.php — co godzinę 7. push_channel_updates.php — co godzinę 8. cleanup_publications.php — raz dziennie 9. cleanup_order_data.php — raz dziennie Jeżeli liczba zadań jest ograniczona: 1. sync_prestashop.php — co godzinę 2. hourly_automation.php — co godzinę 3. snapwear_refresh_session.php — co godzinę 4. cleanup_publications.php — raz dziennie 5. cleanup_order_data.php — raz dziennie PRZED DODANIEM ZADANIA 1. Upewnij się, że katalog cron znajduje się w katalogu głównym projektu. 2. Sprawdź, czy vendor/autoload.php istnieje. 3. Upewnij się, że wybrana wersja PHP jest zgodna z aplikacją. 4. Uruchom plik ręcznie przez SSH, jeśli masz dostęp: php cron/shipments_track.php 5. Sprawdź listę dostępnych komend Symfony: php bin/console list app: 6. Jeśli komenda jeszcze nie istnieje w aplikacji, plik cron zakończy się błędem do czasu wdrożenia odpowiedniego etapu. PRZYKŁAD WPISU W OVH Polecenie do wykonania: ./app/cron/snapwear_poll_statuses.php Język: PHP 8.4 Uruchom: Tak Logi przesyłane e-mailem: Tak podczas wdrożenia, później opcjonalnie Nie Opis: Pobieranie statusów Snapwear