
Szalone i jednocześnie smutne czasy
Nieco niżej znajdziesz dokładniejszy opis tego, co wydarzyło się w związku z moim intensywnym korzystaniem z usługi Documentero, oraz jak ją zastąpiłem (chociaż nadal gorąco polecam!) i dlaczego.
Podsumowanie i wnioski
Przewrotnie zacznę jednak od tego, dlaczego właściwie o tym piszę.
Cały ten przydługi wpis jest po to, aby skonstatować, że żyjemy w czasach szalonych. Czasach, w których radość ze zbudowania czegoś takiego przez osobę nie będącą stricte programistą miesza się ze smutkiem, kiedy pomyślę sobie, ile biznesów w ten sposób może upaść.
Fakt, nie każdy użytkownik Documentero napisze sobie własny generator dokumentów, ale jest to w obecnych czasach dużo bardziej prawdopodobne niż kiedyś. Więc jeśli ktoś płaci obecne 300 dolarów za plan pozwalający generować kilka tysięcy dokumentów miesięcznie, to:
- albo wynajmie w tej cenie programistę na jakimś Fiverr, płacąc (prawdopodobnie) mniej niż 2-miesięczny rachunek za taką usługę,
- albo sam nauczy się budować takie rzeczy po przysłowiowym kursie Claude’a w Grudziądzu, płacąc swoim czasem i tokenami,
- albo będzie dalej płacił, bo jego biznes generuje takie przychody, że kilkaset dolców to dla niego kropla w morzu kosztów i szkoda mu czasu na takie pierdoły (i takich klientów życzę twórcom Documentero z całego serca).
No to teraz już cała historia, czyli tło powyższych wynurzeń, które w sumie możecie sobie podarować bo zapewne takich przykładów znacie setki.
Dla mnie są one o tyle ważne, że nie jest to jakaś teoretyczna rzecz zasłyszana gdzieś tam w internetach, tylko realny przypadek mój i mojego klienta z ostatniego miesiąca.
Tło
Od kilku lat rozwijam aplikację dla klienta. Jej główną funkcjonalnością jest generowanie dokumentów w PDF i Word. Są to wielostronicowe protokoły przeglądów budowlanych z wprowadzonymi do aplikacji:
- danymi obiektu,
- zaleceniami,
- uwagami inspektorów,
- zdjęciami
- itd., itp.
Szablon takiego dokumentu to plik word a w nim kilkadziesiąt specyficznie zapisanych zmiennych używanych w trakcie jego generowania. Wywołanie usługi polega na przekazaniu kilkuset linii JSON ze strukturą danych oraz linkami do pobrania zdjęć. Na tej podstawie usługa generowania dokumentów tworzy PDF albo Worda, w zależności od tego, co użytkownik wybierze w aplikacji.

I teraz najciekawsze. Przez pierwsze 3 lata opierałem generowanie dokumentów o Documentero. Jest to świetna polska platforma, której wersję dożywotnią (z limitem na 2500 generacji miesięcznie) zakupiłem kiedyś na AppSumo.
Ponieważ klient jest moim przyjacielem, a ja i tak nie wykorzystywałem nawet 1% z limitu, jaki miałem dostępny, to po prostu aplikacja u klienta korzystała z tego serwisu przez cały ten czas.
Niestety ostatnio zaczęliśmy dochodzić do ściany. Limit 2,5 tys. generacji miesięcznie zaczął być regularnie osiągany, a nawet przekraczany.
Przez kilka miesięcy udawało mi się, dzięki kontaktom z wsparciem Documentero, resetować ten limit, aż w końcu postanowiłem, że muszę zbudować własną usługę do generowania tych dokumentów. I już pewnie domyślacie się, co będzie dalej.
Programistą nie jestem, ale coś tam o budowie usług i systemów wiem, więc przygotowałem dosyć dokładny opis tego, czego oczekuję. Przykładowe pliki z szablonami i wygenerowanymi dokumentami oraz przykładowe requesty i zawartość JSON wrzuciłem to wszystko na bęben do Claude i poszedłem na obiad.
Pierwsza wersja usługi była gotowa po około godzinie. Nie zażarła jakoś specjalnie dużo tokenów, wystarczył plan Pro, model Sonet 5 i 60 minut. Co najważniejsze usługa już po tym etapie działała zadowalająco (pierwszy mój szok).
Kolejne wersje to były tylko pewne poprawki architektoniczne oraz drobne korekty w obsłudze rozmiarów zdjęć. Tak naprawdę, gdybym usiadł do tego rano, to wieczorem wszystko byłoby gotowe, ale ponieważ standardowo robię 10 rzeczy na raz, to zajęło to może tydzień, a robota była rozbita na kilka sesji po 1-3 godzin.
Oczywiście w tym wszystkim liczę:
- wygenerowanie usługi (wersja MVP z bardzo uproszczonym zarządzaniem szablonami), która respektuje część składni Documentero (tę używaną w moich szablonach - pętle, instrukcje warunkowe, zmienne, obsługa zdjęć, itd.)
- budowa lokalnego środowiska dev
- wdrożenie na testowy serwer,
- aktualizację samej aplikacji Laravel, która używa tej usługi (do robienia dwóch backendów, które można łatwo przełączać do generowania dokumentów po nowemu i po staremu)
- przygotowanie kontenerów i środowiska produkcyjnego
- wstępne testy przez użytkowników
- gotowość do wdrożenia na produkcję z możliwością szybkiego wycofania się, gdyby coś poszło nie tak,
Szalone czasy? Dla mnie (budującego aplikacje w zespołach od wielu lat) absolutnie szalone.