Jak zgłosić problem¶
Zgłoszenia trafiają do Forgejo — wewnętrznego systemu issue trackera pod git.aiofactory.pl/aio/panel/issues. Można je tworzyć ręcznie przez stronę Forgejo albo automatycznie z poziomu panelu (panel sam przygotowuje issue z kontekstem i wkleja link).
Krótko
- Manualnie:
git.aiofactory.pl/aio/panel/issues/new— szablon pełen kontekstu wymaga ~3 min. - Z panelu (jednym klikiem): przyciski „Report a problem" i „Utwórz ticket" na stronie Marketplace → Historia → Logi. Panel dokleja screenshot, filtry, UUID joba.
- Auto-file: błędy 5xx i awarie infra panel sam wnosi jako issue z prefiksem
[auto](bez Twojego udziału). - Eskalacja P0/P1: email na
dev@aiofactory.plz prefiksem[P0]lub[P1]w temacie. Forgejo nie służy do P0.
Trzy ścieżki zgłoszenia¶
1. Manualnie przez Forgejo (najbardziej elastyczna)¶
Otwórz git.aiofactory.pl/aio/panel/issues/new. Wymaga zalogowania (te same dane co panel — Mailcow OAuth).
Etykiety nadawane przez nas po triażu:
bug— odchylenie od dokumentacji → naprawa w fazie utrzymania.feature-request— pomysł / nowa funkcja → akumuluje się, nie pracujemy w fazie utrzymania.- bez etykiety — pytanie / wyjaśnienie → odpowiedź w docs lub w komentarzu.
Nie musisz nadawać etykiety samemu — robimy to przy triage'u w piątek wieczór.
2. Z panelu — Marketplace → Historia → Logi¶
W panel.aiofactory.pl/marketplace/history są dwa przyciski:
- „Report a problem" (prawy górny róg, ikona robaka 🐞) — globalne zgłoszenie do całej historii / sprintu. Wnosi kontekst: aktualne filtry, liczbę widocznych eventów, link do bieżącego URL.
- „Utwórz ticket" (per-event, w rozwijanym wierszu logu) — zgłoszenie powiązane z konkretnym przebiegiem flowa. Wnosi: UUID joba Windmilla, ID eventu, log błędu, znacznik czasu.
Oba przyciski:
- Robią screenshot bieżącej strony (
html2canvas) i dołączają go do issue jako załącznik. - Tworzą issue z prefiksem
[manual](źródło zgłoszenia jest jawnie zaznaczone). - Wracają z numerem issue'a wpisanym do logu — od tej chwili wiersz logu pokazuje „Ticket #N" i jest klikalny do Forgejo.
To zalecana ścieżka dla operatora — autorzy najczęściej zgubionym elementem w manualnym zgłoszeniu są: UUID joba i screen. Ten przycisk dokleja oba.
3. Automatycznie — fatal errors¶
Panel sam tworzy issue, gdy:
- Flow Windmilla zwraca HTTP 5xx (vendor / infra failure) lub status 0 (network unreachable).
- Plik flowa rzuca nieobsłużony wyjątek poza zakresem retry-policy.
Te issue'y mają prefiks [auto] w tytule i są domyślnie w stanie open z etykietą bug. Panel filtruje błędy 4xx (klient/payload) — te NIE są auto-filed (zazwyczaj to nasz bug w przygotowaniu requestu, naprawiamy po zauważeniu w logach).
Auto-filed issue'y są deduplicate'owane przez signature — jeśli ten sam fatal trafia 50× w godzinę, jest jedno issue z licznikiem wystąpień, nie 50 osobnych.
Jak napisać dobry bug-report¶
Cztery sekcje, każda jednolinijkowa wystarczy:
**Co miało się stać:**
Po kliknięciu „Wystaw" w *Marketplace → Oferty* dla rodziny BUZ-HSK powinno
powstać 7 wystawień (Allegro/Amazon/eBay/Erli/Joom/Temu/Woo).
**Co się stało:**
Powstały tylko 4 (Allegro, Amazon, Woo, Temu). eBay/Erli/Joom missing.
Modal zamknął się bez błędu w UI.
**Kroki odtworzenia:**
1. Logowanie jako anna@aiofactory.pl
2. Marketplace → Oferty → Filtr: Aktywne → SKU `BUZ-HSK-M-RED`
3. Kliknij „Wystaw" → modal → Zaznacz wszystkie platformy → Potwierdź
**Kiedy:** 2026-05-02 14:32
**UUID joba (jeśli wiadomo):**
panel.aiofactory.pl/marketplace/history → wiersz `marketplace/publish_group_*`
job UUID: `019dcdd4-3a8a-7e91-ab90-...`
UUID joba skraca debug do < 5 minut
Z UUID joba możemy lokalnie odtworzyć pełen kontekst: wmill job get <uuid> (input + output) i wmill job logs <uuid> (pełen log Pythona). Bez UUID musimy zgadywać po znacznikach czasu i nazwach flow — ten sam debug zajmuje ~30 min.
Co dołączyć — według klasy zgłoszenia¶
| Klasa | Wymagane | Pomocne | Zbędne |
|---|---|---|---|
| Bug UI (źle wyświetla, klik nie działa) | URL strony · screen · krótki opis | Konsola przeglądarki (F12) jeśli błąd JS | Logi backendu — debugujemy z URL |
| Bug automatu (flow nie wystawił, fetcher nie pobrał) | UUID joba lub znacznik czasu z dokładnością do 1 min | Co miało się wystawić (SKU, family TAG) | Screen UI — tu liczy się log Windmilla |
| Outage (P0) | Adres panel.aiofactory.pl / mail.aiofactory.pl jest 5xx / nie odpowiada |
Beszel screenshot (czerwony status?) | Logi — sami wyjmiemy z hosta |
| Feature request | Co chciałbyś, żeby panel robił | Przykład sytuacji biznesowej | Specyfikacja techniczna — to nasza rola |
Co panel pokazuje po zgłoszeniu¶
Po utworzeniu issue'a (ręcznym albo z panelu):
- W Forgejo — issue dostaje numer (
#42) i jest widoczny wgit.aiofactory.pl/aio/panel/issues. - W panelu — sekcja Marketplace → Historia → Logi dla danego eventu pokazuje „Ticket #42" z klikalnym linkiem.
- Po naprawie — komentarz typu „naprawione" jest zapisywany przez właściciela, nie przez nas (konwencja od 2026-05; szczegóły w bug-fix mode SOP). My przesyłamy jeden sprint-summary email w niedzielę wieczór z listą zamkniętych spraw.
Załączniki — co działa, co nie¶
- ✅ Screen z UI panelu (PNG / JPG do 5 MB) — zalecane, działa zarówno przez Forgejo „Drop files here" jak i przyciski w panelu.
- ✅ PDF (np. komunikat z Allegro / OCR faktury) — Forgejo wspiera up to 10 MB.
- ⚠️ Wideo (MP4) — działa, ale dla bug-raportów lepszy jest GIF (≤ 2 MB) lub krótka sekwencja screenów.
- ❌ Pliki z hasłami — NIE wklejaj kluczy API ani haseł w treści issue'a; jeżeli musisz, zaszyfruj kanał (email PGP-owy lub Bitwarden share).
Powiązane¶
- On-call → Co składać do Forgejo vs. co eskalować emailem — szczegółowy wzorzec dobrego bug-raportu (operatorska perspektywa).
- Czas reakcji i tryby — kiedy oczekiwać odpowiedzi.
- Bug czy nowa praca — czy zgłoszenie wchodzi w fazę utrzymania.