Troubleshooting & Reference · Article 7.4
„Link do faktury jest uszkodzony lub brakuje PDF"
PDFy okazjonalnie nie renderują się (błąd Gotenberg) lub nie przesyłają do R2. Objaw: dokument pokazuje się jako „wystawiony", ale kliknięcie linku zwraca 404 lub PDF jest pusty. Odtworzenie: zregeneruj z listy Dokumenty.
Generowanie PDF to wieloetapowy proces asynchroniczny: renderuj HTML z szablonu Jinja, wyślij do Gotenberg (Chrome headless) do konwersji PDF, prześlij bajty do Cloudflare R2, zapisz URL do rekordu oferty. Każdy krok może zawieść niezależnie. Model odtworzenia Clozo to „ponów z dowolnego kroku" — przycisk Regeneruj odbudowuje brakujące elementy.
Step by step
Zidentyfikuj brakujący PDF.
Otwórz listę Dokumenty na stronie szczegółowej oferty; uszkodzony dokument to ten z linkiem dającym 404.
Kliknij
Regenerujobok niego.Renderer uruchamia się ponownie; nowe bajty są przesyłane do R2.
Poczekaj ~10 sekund, a następnie ponów kliknięcie linku.
Nowy URL zastępuje stary; link w wcześniej wysłanych e-mailach również będzie prowadził do nowego pliku (ścieżka R2 jest stabilna).
Why this works this way
Ścieżka renderowania to apps/pdf/service.py. Każdy typ dokumentu ma własny renderer (render_proposal_pdf, render_final_invoice_pdf, render_credit_note_pdf itp.). Po sukcesie bajty trafiają do apps/storage/r2.py:upload_to_r2(), który zwraca URL zapisany w modelu.
Tryby awarii: - Timeout Gotenberg (domyślnie 30s): zazwyczaj długi szablon (ogromna liczba pozycji) lub restart poda Gotenberg. Ponowienie zazwyczaj się udaje. - Błąd przesłania R2: przejściowy problem z poświadczeniami lub siecią; ponowienie się udaje w ciągu minut. - Faktura-widmo: rekord faktury został utworzony (numer przypisany, status ustawiony), ale render PDF lub przesłanie zawiodło po cichu. Freelancer widzi status „Faktura końcowa wystawiona", ale link PDF daje 404.
Race condition specyficzny dla aneksów: hook post-podpisania generuje równolegle nowe pliki INV / Storno / Credit Note. Jeśli jeden renderer się awariuje, inne się udają i stan modelu postępuje. Brakujący PDF wymaga ukierunkowanej regeneracji.
Troubleshooting
Keep reading
Lifecycle
Status: Deposit paid — work can start
The deposit landed (Stripe webhook or manual confirmation). Clozo flips the status, queues the deposit receipt PDF, and starts a behind-the-scenes job to pre-render the final invoice. You can begin the work.
Proposals & Invoices
The 4 delta branches: Δ+, Δ−, Δ=0, Δ_REFUND
Every signed amendment falls into one of four branches based on (a) the sign of the cost change and (b) whether the proposal was already paid. Each branch fires a different document chain. This is the central conceptual map for the entire amendment system.