# Što ćete naučiti#
Ljudska odobravanja su mjesto gdje se većina automatizacija lomi u stvarnim poslovanjima: nejasno vlasništvo, bez SLA-a, bez eskalacije i bez pouzdanog revizijskog zapisa.
Ovaj vodič pokazuje kako implementirati human in the loop automatizaciju n8n izvan osnovnog koraka “da/ne”. Izgradit ćete obrasce za višekoračno odlučivanje, SLA mjerače vremena, eskalacijske putanje i revizijske tragove koji prolaze kontrole nabave, financijska odobrenja i upravljanje sadržajem.
Dobit ćete i tri primjera tokova koje možete kopirati u vlastite sustave: nabava, povrati i objava sadržaja.
# Zašto je human-in-the-loop važan za ROI i usklađenost#
Većina timova uvodi automatizaciju kako bi smanjila ručni rad, ali odobravanja su često najrizičniji korak. Ako su odobravanja nejasna ili nerevizibilna, premještate posao s operativaca na menadžere i povećavate rizik.
Praktična referenca: interna istraživanja u servisnim operacijama tipično pokazuju da se 20 do 40 posto vremena ciklusa troši na čekanje odobrenja, a ne na obavljanje posla. Smanjenje vremena čekanja uz jasne SLA-ove i eskalacije često donosi veće dobitke nego automatizacija samog zadatka.
Ako trebate opravdati ulaganje u automatizaciju, kvantificirajte i uštedu vremena i smanjenje rizika. Koristite jednostavan model: ROI = (uštede - trošak) / trošak * 100. Za dublji okvir pogledajte ROI poslovne automatizacije.
Kako izgleda “dobro”#
Produkcijski sustav odobravanja u n8n-u trebao bi odgovoriti na ova pitanja:
| Pitanje | Zašto je važno | Što implementirati u n8n-u |
|---|---|---|
| Tko je odgovoran upravo sada | Uklanja nejasnoće i kašnjenja | Dodijeliti odobravatelja pri kreiranju zahtjeva i spremiti ga |
| Kada je rok | Omogućuje SLA-ove i eskalacije | Izračunati timestamp roka i trajno ga pohraniti |
| Što se događa ako nitko ne odgovori | Sprječava zapinjanje radnih tokova | Eskalacijska putanja i fallback obrada |
| Što je točno odobreno | Osigurava ispravan opseg | Priložiti nepromjenjiv snapshot konteksta uz zahtjev |
| Tko je odobrio, kada i zašto | Usklađenost i rješavanje sporova | Revizijski log s metapodacima odluke |
| Kako spriječiti duplikate | Izbjegava dvostruke povrate, dvostruke kupnje | Idempotency ključ i provjere stanja |
🎯 Ključna poruka: Odobravanja tretirajte kao state machine s rokovima i logovima, a ne kao jedan korak “čekaj odgovor”.
# Arhitekturni obrazac: Approval state machine u n8n-u#
Najbrži način da izgradite pouzdana ljudska odobravanja je standardizirati mali podatkovni model i nekoliko ponovljivih čvorova.
Ključne entitete koje trebate spremati#
Čak i ako krenete skromno, zahtjeve za odobrenje trajno pohranite u stvarno spremište podataka. Google Sheets može proći za prototipove, ali baza podataka je bolja za konkurentnost i revizibilnost.
| Polje | Primjer | Zašto vam treba |
|---|---|---|
| request_id | apr_20260803_00123 | Stabilna referenca za linkove, logove i idempotency |
| workflow_name | refunds_v2 | Sljedivost kroz verzije |
| status | pending, approved, rejected, expired | Sprječava replay i dvostruku obradu |
| requester | user_42 | Odgovornost |
| approver_current | manager_7 | Rutiranje i eskalacija |
| escalation_level | 0, 1, 2 | Višekoračne putanje |
| created_at | ISO timestamp | Vremenska linija |
| due_at | ISO timestamp | Provedba SLA-a |
| decided_at | ISO timestamp | Revizija |
| decision | approve, reject | Izlaz |
| decision_reason | Slobodan tekst | Usklađenost i učenje |
| context_snapshot | JSON string | Dokazuje što je viđeno u trenutku odluke |
| idempotency_key | hash | Deduplicira downstream akcije |
Preporučeni n8n “building blocks”#
| Mogućnost | n8n čvorovi i pristup |
|---|---|
| Kreiranje zahtjeva | Set, Function, Database čvor, Slack ili Teams čvor |
| Čekanje odluke | Webhook trigger za interaktivne odgovore ili polling spremišta podataka |
| SLA mjerač | Wait čvor s trajanjem, plus ponovna provjera statusa prije eskalacije |
| Eskalacija | IF čvor grananje, više notifikacija, kreiranje ticketa |
| Audit logiranje | Database insert na svakoj promjeni stanja |
| Otpornost na greške | Error workflows, retries, dead-letter logika |
Za bolje obrasce oko notifikacija i kanala za odobravanje pogledajte n8n radne tokove odobravanja za Slack, Teams i email. Za obrasce pouzdanosti poput retryja i alertinga pogledajte n8n obradu grešaka, retryje i alerting.
# Building Block 1: Linkovi za odluke i sigurni Webhookovi#
Odobravanja često propadnu jer su linkovi pogađljivi, prekasno istječu ili se mogu iskoristiti dvaput. Riješite to tokenima i provjerama stanja.
Strategija tokena#
Generirajte nasumični token po zahtjevu i spremite hashiranu verziju. Link za odobrenje sadrži token, a vaš Webhook handler ga verificira.
Zadržite logiku jednostavnom:
- 1Kreirajte red zahtjeva sa
status = pendingitoken_hash. - 2Pošaljite odobravatelju link poput
.../approve?request_id=...&token=.... - 3Webhook validira token i provjerava je li
statusjoš uvijek pending. - 4Ažurirajte red na approved ili rejected i upišite audit log zapis.
Primjer: generiranje tokena i hashiranje#
Koristite Function čvor za kreiranje tokena i drugi čvor za hashiranje ako to radite unutar n8n-a. U strožim okruženjima generirajte tokene izvan n8n-a i spremite samo hash.
// n8n Function node
const crypto = require('crypto');
const requestId = `apr_${new Date().toISOString().slice(0,10).replace(/-/g,'')}_${Math.floor(Math.random()*1e6)}`;
const token = crypto.randomBytes(24).toString('hex');
const tokenHash = crypto.createHash('sha256').update(token).digest('hex');
return [{
request_id: requestId,
token,
token_hash: tokenHash,
}];⚠️ Upozorenje: Nikada nemojte prihvatiti odobrenje samo na temelju
request_id. Uvijek validirajte token i potvrdite da je zahtjev još uvijek pending kako biste spriječili replay i dvostruka odobravanja.
# Building Block 2: Višekoračno odlučivanje, ne samo approve ili reject#
Stvarni radni tokovi često zahtijevaju uvjetna odobravanja prema iznosu, riziku ili politici. Implementirajte to kao stablo odluka prije nego uopće uključite čovjeka.
Primjer matrice odluke#
| Uvjet | Odobravatelj | SLA | Eskalacija |
|---|---|---|---|
Trošak manji od 500 EUR i vendor odobren | Voditelj tima | 4 radna sata | Eskaliraj menadžeru |
Trošak 500 do 5000 EUR ili novi vendor | Menadžer | 8 radnih sati | Eskaliraj financijama |
Trošak veći od 5000 EUR | Direktor financija | 24 sata | Eskaliraj COO-u |
Povrat veći od 200 EUR | Voditelj podrške | 2 sata | Eskaliraj financijama |
| Objavi sadržaj koji spominje cijene | Legal | 24 sata | Eskaliraj voditelju legal tima |
U n8n-u to modelirajte kao:
- Set čvor za izračun rizika i rutiranje.
- IF čvorove za pragove iznosa i kategorije.
- Jedan “create approval request” subflow koji prima
approver_current,due_aticontext_snapshot.
Primjer: izračun polja za rutiranje#
// n8n Function node
const amount = Number($json.amount_eur);
const isNewVendor = Boolean($json.vendor_is_new);
const mentionsPricing = Boolean($json.mentions_pricing);
let approverRole = 'team_lead';
let slaHours = 4;
if (mentionsPricing) {
approverRole = 'legal';
slaHours = 24;
} else if (amount > 5000) {
approverRole = 'finance_director';
slaHours = 24;
} else if (amount >= 500 || isNewVendor) {
approverRole = 'manager';
slaHours = 8;
}
return [{ approverRole, slaHours }];# Building Block 3: SLA mjerači vremena i eskalacijske putanje#
Odobrenje bez mjerača vremena je zagarantirano usko grlo. U n8n-u timeoutove implementirate Wait čvorom plus ponovnom provjerom statusa.
SLA obrazac koji izbjegava lažne eskalacije#
- 1Kreirajte zahtjev s
due_atistatus = pending. - 2Obavijestite odobravatelja.
- 3Pričekajte
slaHoursili dok zahtjev ne bude odlučen. - 4Nakon čekanja, ponovno provjerite status zahtjeva u bazi.
- 5Ako je još pending, eskalirajte i opcionalno produžite SLA.
Time sprječavate eskalacije “nakon činjenice” ako je netko brzo odobrio, ali je instanca workflowa i dalje čekala.
💡 Savjet: Koristite eskalacije u koracima poput
T plus 0,T plus 50 postoiT plus 100 posto. Primjer: podsjetnik nakon 2 sata, eskalacija nakon 4 sata za SLA od 4 sata.
Primjer eskalacijske ljestvice#
| Razina | Okidač | Akcija | Novi vlasnik |
|---|---|---|---|
| 0 | Zahtjev kreiran | Obavijesti primarnog odobravatelja | Voditelj tima |
| 1 | Prošlo 50 posto SLA-a | Podsjetnik uz kontekst | Isti odobravatelj |
| 2 | SLA prekoračen | Obavijesti menadžera + kreiraj ticket | Menadžer |
| 3 | I dalje pending nakon 2x SLA | Page on-call, blokiraj downstream | On-call lead |
# Building Block 4: Revizijski tragovi koji izdrže sporove#
Audit logovi nisu opcionalni kad su uključeni novac, povrati ili pravni sadržaj. Cilj je rekonstruirati cijelu priču bez oslanjanja na chat povijest.
Što logirati na svakoj promjeni stanja#
| Događaj | Minimalna polja |
|---|---|
| request_created | request_id, requester, approver_current, due_at, context_snapshot_hash |
| notified | channel, recipient, message_id |
| reminder_sent | level, timestamp |
| escalated | from_to, reason, timestamp |
| approved or rejected | actor_id, actor_email, decision_reason, decided_at |
| executed | downstream_action_id, idempotency_key |
| expired or canceled | reason, timestamp |
Logove spremite append-only. Ako ih morate spremati u istu tablicu, barem spremite decision_version i nikada ne prepisujte originalni context snapshot.
Praktična baza usklađenosti#
Za mnoge SME-ove snažna osnova je:
- Čuvati audit logove najmanje 12 do 24 mjeseca.
- Ograničiti write pristup na servisni račun workflowa.
- Ograničiti delete pristup samo administratorima.
- Identitet odobravatelja dohvatiti iz SSO-a ili mapiranja chat korisnika, ne iz slobodnog teksta.
ℹ️ Napomena: n8n execution history je korisna, ali nije potpuni revizijski trag ako se izvršenja mogu brisati ili ako ih ne možete jednostavno pretraživati po request ID-u. Vanjsko spremanje logova je sigurnije i lakše za izvještavanje.
# Primjer toka 1: Odobravanje nabave s višerazinskom eskalacijom#
Ovo je čest obrazac: zahtjev za nabavu dolazi iz forme ili ERP-a, rutiranje ovisi o iznosu i riziku vendora, a odobravanja trebaju audit trag.
Pregled toka#
- 1Trigger iz slanja forme ili ERP događaja.
- 2Obogatite podatke o vendorima, izračunajte rizik.
- 3Rutirajte prema pravom odobravatelju prema matrici.
- 4Kreirajte zapis zahtjeva za odobrenje i pošaljite poruku.
- 5Pričekajte odluku ili istek SLA-a.
- 6Na odobrenje, kreirajte purchase order i obavijestite tražitelja.
- 7Na odbijanje, obavijestite tražitelja uz razlog.
- 8Sve logirajte.
Preporučeni čvorovi#
| Korak | Tip čvora | Napomene |
|---|---|---|
| Trigger | Webhook ili app trigger | Koristite stabilnu shemu za inpute |
| Enrichment | HTTP Request | Povucite status vendora, budžete |
| Routing | Function i IF | Izračunajte approverRole, slaHours |
| Persist request | Postgres ili MySQL node | Insert reda zahtjeva za odobrenje |
| Notify | Slack ili Teams | Uključite approve i reject linkove |
| SLA | Wait | Koristite slaHours pa re-check |
| Escalate | IF plus Slack/Email | Reassign approver_current |
| Execute | ERP ili HTTP Request | Kreirajte PO s idempotency ključem |
| Audit | Database insert | Logirajte svaki događaj |
Sadržaj approval poruke koji smanjuje ping-pong#
Uključite:
- Iznos, vendor, cost center, preostali budžet.
- Priložite snapshot URL na zahtjev.
- Obavezno polje razloga za odbijanja.
- Rok, eksplicitno prikazan.
Nemojte slati samo “Molim odobrite” s linkom. To uzrokuje dodatna pitanja i dodaje sate.
# Primjer toka 2: Odobravanja povrata novca uz kontrole prijevara#
Povrati trebaju brzinu i kontrolu. Tipičan cilj je manje od 2 sata za odluku o povratu prema kupcu, uz strože provjere iznad određenih pragova.
Primjer logike rutiranja#
| Iznos povrata | Auto odluka | Ljudski korak | Dodatne kontrole |
|---|---|---|---|
manje od 25 EUR | Auto-approve | Nema | Samo log |
25 do 200 EUR | Human approve | Voditelj podrške | SLA 2 sata |
veće od 200 EUR | Human approve | Financije | Provjera fraud signala, SLA 4 sata |
Pregled toka#
- 1Trigger na promjenu statusa helpdesk ticketa.
- 2Povucite povijest narudžbi i učestalost povrata.
- 3Izračunajte fraud signale i rutirajte.
- 4Ako je auto-odobreno, izvršite povrat s idempotency ključem i logirajte.
- 5Ako treba ljudsko odobrenje, kreirajte zahtjev, obavijestite i provodite SLA.
- 6Eskalirajte financijama ako je SLA prekoračen.
- 7Povrat izvršite samo jednom, čak i ako dođe više signala.
Primjer idempotency za povrate#
Izračunajte stabilan ključ na temelju ID-a ticketa i iznosa, pa ga spremite.
// n8n Function node
const crypto = require('crypto');
const ticketId = String($json.ticket_id);
const amount = Number($json.refund_amount_eur).toFixed(2);
const key = crypto.createHash('sha256')
.update(`refund:${ticketId}:${amount}`)
.digest('hex');
return [{ idempotency_key: key }];Taj ključ koristite pri pozivu payment providera ako ga podržava, i također u vlastitoj bazi kako biste blokirali duple povrate.
⚠️ Upozorenje: Ne vežite rezultat odobrenja samo uz chat thread. Ako se thread obriše ili odobravatelj promijeni uređaj, gubite sistem zapisa. Odluku uvijek trajno pohranite.
# Primjer toka 3: Objavljivanje sadržaja uz legal i brand guardrails#
Tokovi sadržaja su “teški” na odobravanjima i često su cross-functional. Objavljivanje bez papira postaje bolno kad netko tjednima kasnije pita “tko je odobrio tu tvrdnju”.
Praktičan lanac odlučivanja#
- 1Draft kreiran u CMS-u.
- 2Automatizirane provjere: linkovi, slike, vrijeme čitanja, zabranjene fraze.
- 3Brand odobrenje za ton i poruke.
- 4Uvjetno legal odobrenje ako članak spominje cijene, garancije, regulirane tvrdnje ili imena kupaca.
- 5Finalno editor odobrenje i zakazivanje.
Matrica odluka za sadržaj#
| Okidač | Potreban odobravatelj | SLA | Eskalacija |
|---|---|---|---|
| Spominje cijene | Legal | 24 sata | Head of legal |
| Spominje ime kupca | Legal plus account owner | 24 sata | Sales lead |
| Standardni blog post | Editor | 8 radnih sati | Head of marketing |
| Najava proizvoda | Product lead | 8 sati | VP product |
Pregled toka#
- Trigger na CMS webhook za “ready for review”.
- Pokrenite automatizirane provjere, priložite rezultate u context snapshot.
- Kreirajte zahtjev za odobrenje editoru.
- Ako editor odobri i spominju se cijene, kreirajte legal zahtjev za odobrenje.
- Provodite SLA-ove, šaljite podsjetnike, zatim eskalirajte.
- Na finalno odobrenje, objavite ili zakažite, i logirajte publish događaj.
💡 Savjet: Spremite točan hash sadržaja u zahtjev za odobrenje. Ako se sadržaj promijeni nakon odobrenja, automatski tražite ponovno odobrenje. To sprječava sporove tipa “odobrio sam staru verziju”.
# Implementacijski detalji koji sprječavaju produkcijske incidente#
Ovo su dijelovi koji se najčešće propuste kad timovi isporuče prvi approval workflow.
1) Konkurentnost i “dvostruki klik”#
Ako odobravatelj klikne approve dvaput, vaš webhook će se okinuti dvaput. Riješite to atomskim updateom:
- Update samo ako je
status = pending. - Vratite “already decided” ako status nije pending.
- Logirajte “duplicate decision attempt” događaj radi sljedivosti.
2) Odvojite “decision captured” od “action executed”#
Odobrenje može biti dano, ali izvršenje može pasti zbog API downtimea. Modelirajte to kao zasebna stanja:
| Stanje | Značenje |
|---|---|
| approved | Ljudska odluka je zabilježena |
| executing | Downstream poziv je u tijeku |
| executed | Downstream akcija je završila |
| failed | Izvršenje nije uspjelo, treba retry ili ručnu intervenciju |
To čini post-incident analizu jednostavnom i omogućuje sigurne retryje uz idempotency.
3) Obrada grešaka i alerting#
Eskalacije nisu samo za odobravanja. Trebate eskalaciju i za greške u workflowu, posebno nakon odobrenja kad su uključeni novac ili objava.
Koristite error workflow, rutirajte alarme na pravi kanal i u svaki alert uključite request ID. Dobar referentni tekst je n8n obrada grešaka, retryji i alerting.
4) Izvještavanje i audit eksporti#
Ako usklađenost zatraži dokaz, trebali biste moći izvesti:
- Sva odobravanja za workflow u rasponu datuma.
- Sva odobravanja po odobravatelju.
- Sve eskalacije i probijanja SLA-a.
Dizajnirajte shemu audit loga tako da su to jednostavni SQL upiti, a ne ručno kopanje po porukama.
# Česte zamke i kako ih izbjeći#
- 1
Korištenje Wait čvora bez trajnog spremanja stanja
Ako se n8n restart-a ili se izvršenje retry-a, gubite kontekst odobrenja. Spremite zahtjev i učitajte ga ponovno nakon svakog čekanja. - 2
Nema jasnog SLA vlasnika
“Eskalirali smo u kanal” nije vlasništvo. Eskalirajte osobi ili ulozi s definiranom on-call rotacijom. - 3
Odobravanja koja ne prikazuju dovoljno konteksta
Svaki detalj koji nedostaje postaje dodatno pitanje, često dodajući sate. Uključite puni kontekst odluke i link na izvorne zapise. - 4
Nema audit traga izvan chata
Chat sustavi nisu compliance sustavi. Spremite odluke i vremenske oznake u bazu, a message ID-eve referencirajte samo kao dopunski dokaz. - 5
Neobrađivanje djelomičnih odobrenja
Mnoge odluke su “odobri, ali promijeni iznos” ili “odobri, ali ukloni tvrdnju”. Implementirajte strukturirane ishode, ne samo approve ili reject.
# Ključne poruke#
- Modelirajte odobravanja kao state machine sa
pending,approved,executed,expiredifailed, a ne kao jedan korak čekanja. - Dodajte SLA mjerače vremena s podsjetnicima i višerazinskom eskalacijom, uz obaveznu ponovnu provjeru statusa nakon čekanja kako biste izbjegli lažne eskalacije.
- Koristite sigurne tokene, provjere stanja i idempotency ključeve kako biste spriječili replay napade i dvostruko izvršenje.
- Trajno spremite revizijski trag razine usklađenosti s vremenskim oznakama, akterima, razlozima i snapshotom ili hashom konteksta.
- Standardizirajte obrasce i kanale koristeći provjerene postavke za odobravanja u Slacku, Teamsu i emailu te robusnu obradu grešaka i alerting.
# Zaključak#
Ljudska odobravanja su mjesto gdje automatizacija ili donosi mjerljivo skraćenje vremena ciklusa ili postaje novo usko grlo. U n8n-u pobjednički pristup je dosljedan: trajno spremite stanje, provodite SLA-ove, predvidivo eskalirajte i logirajte svaku promjenu sa dovoljno konteksta da obranite odluke mjesecima kasnije.
Ako želite da Samioda dizajnira i implementira usklađen human-in-the-loop sustav za nabavu, povrate ili objavu sadržaja, kontaktirajte nas s vašim trenutnim procesom, matricom odobravanja i stackom alata. Mapirat ćemo state machine, implementirati SLA-ove i audit logiranje te kvantificirati očekivani ROI koristeći okvir iz ROI poslovne automatizacije.
FAQ
Osnivač i senior developer u Samiodi. 8+ godina iskustva u izradi React, Next.js, Flutter i n8n rješenja za klijente diljem Europe.
Više iz kategorije Poslovna automatizacija
Sve →Upravljanje tajnama u n8n-u 2026.: varijable okruženja, Vault i KMS te sigurne prakse za vjerodajnice
Praktičan vodič za upravljanje tajnama u n8n-u: modeliranje prijetnji, sigurno rukovanje vjerodajnicama kroz dev, staging i prod, uz rotaciju, načelo najmanjih privilegija, obrasce za self-hosting i kontrolnu listu za sigurnosni pregled.
Automatizacija vođena događajima s n8n: Webhookovi, redovi i pouzdani konzumenti
Izgradite n8n arhitekturu vođenu događajima s trajnim webhookovima, RabbitMQ ili Kafka redovima, ponovnim pokušajima, dead-letter obradom i idempotentnim konzumentima. Uključuje primjere događaja narudžbi, CRM ažuriranja i analytics pipelinea.
n8n SSO (OIDC/SAML) i hardening: siguran pristup za timove i klijente
Praktičan vodič za implementaciju n8n SSO-a s OIDC-om ili SAML-om i hardening self-hostanog n8n-a za timove i klijentska okruženja: RBAC, tajne, mrežna izolacija i audit logiranje uz produkcijski kontrolni popis.
Trebate pomoć s projektom?
Gradimo prilagođena rješenja koristeći tehnologije iz ovog članka. Senior tim, fiksne cijene.
Povezani članci
Izrada n8n workflowa za odobravanje u 2026.: Slack ili Teams, e-mail i revizijski tragovi
Saznajte kako izgraditi n8n workflow za odobravanje spreman za produkciju s odobravanjima uz ljudsku intervenciju, timeoutima, podsjetnicima, eskalacijskim putevima i revizijskim logiranjem kako biste spriječili duple odluke.
Automatizirano izvještavanje s n8n: izradite tjedne KPI sažetke iz GA4, Stripea i Postgresa
Praktičan vodič za automatizirano izvještavanje s n8n: povucite tjedne KPI-je iz GA4, Stripea i Postgresa, provjerite kvalitetu podataka, generirajte sažet narativni pregled i pošaljite ga u Slack i e-mail uz ponovne pokušaje i održivu strukturu.
n8n web scraping i detekcija promjena: pouzdano pratite stranice, otkrivajte ažuriranja i pokrećite workflowe
Praktičan vodič za 2026. o n8n monitoringu detekcije promjena pri web scrapingu: dohvat i parsiranje HTML-a, normalizacija sadržaja, otkrivanje smislenih promjena uz hashing i diffing, izbjegavanje lažnih pozitivnih rezultata te pouzdano slanje upozorenja u Slack ili Email.