Najbolji prvi zadatak za automatizaciju obično je dosadan, ponovljiv i lako provjerljiv. Nije potrebno odmah povezati deset servisa. Dovoljno je ukloniti jedan postupak koji svaki tjedan ručno ponavljate i pritom sačuvati kontrolu nad rezultatom.
U ovom ilustrativnom primjeru mala redakcija svakoga petka prima nekoliko CSV datoteka. Netko ih ručno otvara, provjerava nazive stupaca i sprema popis zapisa koji nedostaju. Taj je posao dobar kandidat za prvi automatizirani korak jer su ulaz, pravila i očekivani izlaz opisivi. Slanje konačnog izvještaja klijentima zasad ostaje ručno.
Opišite posao bez naziva alata
Napišite: „Pročitaj datoteke iz mape ulaz, provjeri obavezne stupce i napravi izvještaj o pogreškama.” To je mnogo jasnije od „treba mi automatizacija u aplikaciji X”. Dodajte što se ne smije dogoditi: izvorne datoteke ne smiju se mijenjati, prazna datoteka nije uspješan uvoz, a nepoznati stupac zahtijeva pregled.
Podijelite postupak na čitanje, provjeru i zapis izlaza. Svaki dio treba vlastiti mali dokaz. Za čitanje je to broj pronađenih datoteka. Za provjeru broj prihvaćenih i odbijenih redova. Za zapis putanja završnog izvještaja. Kada sve stane u jednu poruku „uspješno”, teško je otkriti je li neki dio prešutno preskočen.
Prvi prolaz neka samo pokazuje namjeru
Probni prolaz obrađuje ulaz i ispisuje što bi napravio, bez promjene izvornika ili slanja podataka. Za preimenovanje fotografija to može biti tablica starog i novog naziva. Za uvoz podataka pregled novih i promijenjenih zapisa. Čovjek može brzo pregledati deset reprezentativnih primjera i uočiti da je pravilo za datum pogrešno shvaćeno.
from pathlib import Path
ulaz = Path("ulaz")
for datoteka in sorted(ulaz.glob("*.csv")):
print(f"PROVJERITI: {datoteka.name}")
Ovaj primjer samo pronalazi CSV datoteke neposredno u mapi ulaz i ispisuje njihove nazive. Ne provjerava sadržaj i ništa ne premješta. Namjerno je mali: prije dodavanja složenosti treba znati koje su datoteke uopće obuhvaćene. Dokumentacija pathlib opisuje rad s putanjama i metode koje se mogu koristiti u sljedećim koracima.
Ponavljanje ne smije stvarati duplikate
Što se dogodi ako postupak pokrenete dva puta? Kod izrade lokalnog izvještaja možda želite ponovno izračunati isti rezultat. Kod slanja poruka drugi prolaz može poslati istu poruku još jednom. Prije povezivanja s vanjskom uslugom odlučite kako ćete prepoznati već obrađenu stavku.
U našem primjeru naziv datoteke sam po sebi nije dovoljan ako pošiljatelj svakoga tjedna šalje izvjestaj.csv. Možete povezati oznaku izvora, razdoblje i kontrolni sažetak sadržaja. Zapišite stanje „pripremljeno”, zatim rezultat, pa „dovršeno”. Ako program stane između koraka, sljedeći prolaz treba provjeriti postoji li već završni izlaz prije nego što nešto ponovno stvori.
Pogreške razvrstajte prema sljedećem koraku
Privremena mrežna nedostupnost može opravdati ograničen ponovni pokušaj. Nepoznat format ulazne datoteke obično traži ljudski pregled. Nedostatak prostora na disku neće se riješiti beskonačnim ponavljanjem iste naredbe. Za svaki slučaj definirajte treba li zaustaviti cijeli posao, izdvojiti jednu stavku ili nastaviti s ostalima.
Broj ponovnih pokušaja ograničite i između njih provjerite ishod. Ako je udaljena usluga primila zahtjev, a odgovor je izgubljen, slijepo ponovno slanje može udvostručiti radnju. Najprije treba potražiti zapis prethodnog zahtjeva. Upravo se tu pouzdan postupak razlikuje od niza klikova koji samo izgleda automatizirano.
Zapis rezultata neka bude čitljiv
Koristan zapis sadrži vrijeme, oznaku posla, naziv ulaza, broj obrađenih stavki i razlog odbijanja. Ne treba sadržavati lozinke ili cijele privatne dokumente. Za provjeru strukture tablice obično su dovoljni naziv stupca i broj retka; kopiranje kompletnog sadržaja u dnevnik stvara dodatno mjesto na kojem trebate čuvati podatke.
Razlikujte „nije bilo novih datoteka” od „ulazna mapa nije pronađena”. Prvo može biti normalno stanje, drugo konfiguracijska pogreška. Obavijesti šaljite kada netko treba nešto učiniti, a rutinske rezultate držite u dostupnoj evidenciji. Stalna bujica identičnih poruka brzo postane pozadina koju nitko ne čita.
Isprobajte neugodne primjere
- Datoteka je prazna ili sadrži samo zaglavlje.
- Red sadrži navodnik, hrvatsko slovo ili zarez unutar opisa.
- Dvije datoteke sadrže istu oznaku zapisa.
- Odredišni izvještaj već postoji.
- Obrada se prekida nakon polovice posla.
- Ulazna datoteka promijeni se između pregleda i konačnog koraka.
Za zadnji slučaj korisno je zabilježiti sažetak izvora pri pregledu i ponovno ga usporediti prije promjene. Ako nije isti, prethodno odobrenje više ne opisuje sadašnje podatke. Postupak treba stati i pripremiti novi pregled. Temeljne provjere stupaca i identifikatora opisane su u vodiču za pouzdane podatke.
Izmjerite korist prije širenja
Nakon nekoliko stvarnih prolaza usporedite vrijeme ručnog rada, vrijeme pregleda rezultata i vrijeme održavanja automatizacije. Ako ušteda nestaje zbog čestih ručnih popravaka, najprije pojednostavnite ulazna pravila. Novi alat neće riješiti dogovor koji nikad nije bio jasno napisan.
Tek kada mali korak radi pouzdano, razmotrite sljedeći. Sačuvajte kopiju izvornika i provjeren način povrata, napišite kako se posao zaustavlja i ostavite ručni izlaz za iznimke. Dobro automatiziran postupak ne traži stalno gledanje, ali uvijek omogućuje da objasnite što je upravo napravio.