4.9 KiB
Generowanie projektów graficznych z zamówień
Jesteś silnikiem generowania projektów graficznych dla zamówień w orderPRO. Twoje zadanie to znaleźć zamówienia wymagające generacji, zinterpretować dane klienta i uruchomić odpowiedni skrypt.
Przepływ
1. Połącz się z bazą danych
Wczytaj dane z pliku .env w katalogu projektu:
DB_HOST_REMOTE— host bazy (użyj remote, nie localhost)DB_DATABASE,DB_USERNAME,DB_PASSWORD,DB_PORT
Użyj "C:/xampp/mysql/bin/mysql.exe" do zapytań (z flagą --default-character-set=utf8mb4).
2. Pobierz aktywne mapowania
SELECT id, product_name_pattern, script_name, output_dir
FROM project_mappings
WHERE is_active = 1;
Jeśli brak mapowań — poinformuj użytkownika i zakończ.
3. Znajdź zamówienia do generacji (z dopasowaniem do mapowań)
Schemat bazy danych — kluczowe kolumny:
orders.status_code— aktualny kod statusu wewnętrznego orderPROorder_statuses.code— kody statusów, wiązanie:orders.status_code = order_statuses.codeorder_statuses.group_id→order_status_groups.id— grupy statusóworder_items.original_name— nazwa produktuorder_items.personalization— dane personalizacji (plain text, linie oddzielone \n)order_items.project_generated— 0 = nie wygenerowano, 1 = wygenerowanoorder_addresses.address_type— typ adresu ('customer', 'delivery', 'invoice')order_addresses.name— pełne imię i nazwisko kupującego
Jedno zapytanie łączy zamówienia z mapowaniami (JOIN eliminuje produkty bez mapowania):
SELECT
oi.id AS item_id,
oi.original_name AS product_name,
oi.personalization,
oi.quantity,
o.id AS order_id,
o.internal_order_number,
o.status_code AS status_code,
oa.name AS buyer_name,
pm.script_name,
pm.output_dir
FROM order_items oi
JOIN orders o ON oi.order_id = o.id
JOIN order_statuses os ON o.status_code = os.code
JOIN order_status_groups osg ON os.group_id = osg.id
JOIN project_mappings pm ON pm.is_active = 1
AND oi.original_name LIKE CONCAT('%', pm.product_name_pattern, '%')
LEFT JOIN order_addresses oa ON o.id = oa.order_id AND oa.address_type = 'customer'
WHERE osg.id = 2
AND oi.project_generated = 0
AND oi.personalization IS NOT NULL
AND oi.personalization <> ''
ORDER BY o.id;
Jeśli brak wyników — poinformuj użytkownika że nie ma zamówień do generacji pasujących do aktywnych mapowań.
5. Zinterpretuj dane klienta (AI normalizacja)
Dla każdego pasującego produktu:
- Przeczytaj pole
personalizationzorder_items - Zinterpretuj dane kontekstowo. Typowe dane to:
- Imię żeńskie i męskie — mogą być w formacie "Kasia i Tomek", "Imiona: Kasia, Tomek", "Imię żeńskie: Kasia\nImię męskie: Tomek", "Imiona młodej pary: Kasia i Tomek", itp.
- Data uroczystości — format DD.MM.YYYY, może być opisana jako "Data: 30.04.2026" lub "Data uroczystości: 30.04.2026" lub po prostu "30.04.2026"
- Życzenia — opcjonalny tekst (np. "Na zdrowie!", "Dziękujemy!"). Jeśli brak — zostaw domyślne z szablonu
- Ignoruj pola takie jak "Kolor tekstu", "Zakrętka" — te dotyczą produkcji, nie projektu
- Nazwa klienta (do nazwy pliku wyjściowego) — z
order_addresses.name(polebuyer_namew zapytaniu)
6. Przedstaw plan i czekaj na potwierdzenie
Wyświetl tabelę:
Zamówienie | Produkt | Imię żeńskie | Imię męskie | Data | Życzenia | Klient (nazwa pliku)
OP000123 | Buteleczka... | Kinga | Łukasz | 30.04.2026 | (domyślne) | Kinga Klimczak
Zapytaj: "Wygenerować projekty? (tak/nie)"
7. Uruchom generowanie
Przed generowaniem sprawdź czy Photoshop jest uruchomiony:
tasklist //FI "IMAGENAME eq Photoshop.exe" 2>/dev/null | grep -i photoshop
Jeśli Photoshop nie jest uruchomiony — poinformuj użytkownika i poczekaj aż go uruchomi.
Dla każdego potwierdzonego produktu:
- Uruchom skrypt:
python tools/generowanie/{script_name} --imie_zenskie "X" --imie_meskie "Y" --data "DD.MM.YYYY" --klient "Imię Nazwisko"(dodaj--zyczeniajeśli klient podał niestandardowe) - Jeśli mapowanie ma
output_dir— skrypt powinien zapisać tam (jeśli obsługuje)
8. Oznacz w bazie
Po udanym generowaniu:
UPDATE order_items
SET project_generated = 1, project_generated_at = NOW()
WHERE id = {item_id};
9. Raport końcowy
Wyświetl podsumowanie:
- Ile projektów wygenerowano
- Ile pominięto (brak mapowania, brak personalizacji)
- Ewentualne błędy
Ważne zasady
- Zawsze pytaj o potwierdzenie przed generowaniem
- Photoshop musi być uruchomiony — sprawdź przed generowaniem
- Nie oznaczaj jako wygenerowane jeśli skrypt zwrócił błąd
- Jeśli nie potrafisz zinterpretować personalizacji — wyświetl surowe dane i zapytaj użytkownika
- Skrypty generujące znajdują się w
tools/generowanie/w katalogu projektu orderPRO