Ugrás a tartalomhoz

Playbook

Napi könyvelési szinkron pollinggal

Külső könyvelési rendszer napi szinten szinkronizál a QUiCK-kel, amikor webhook nem elérhető vagy nem használható.

Haladó~30 perc7 lépés

Ez a playbook egy egyszerű, robusztus polling-alapú szinkron mintát mutat be, amikor a webhook nem elérhető. A módszer az utoljára sikeres futás dátumát tárolja, és from_date-tel csak a változásokat kéri le.

Előfeltételek

  • Public API token
  • Perzisztens tároló az utolsó szinkron-dátumhoz (DB, kv, fájl)

1. Az utolsó szinkron dátum betöltése

Olvasd ki a helyi tárolóból a legutóbbi sikeres futás időpontját (ISO 8601). Ha nincs, kezdd 2024-01-01-től.

2. Költségek lapozott lekérése

bash
curl -H "Authorization: Token $QUICK_TOKEN" \
  "https://api.quick.riport.co.hu/1/expenses/?date_field=created&from_date=2026-07-13&ordering=-created&page_size=100"

A válasz tartalmazza results, next, previous, count mezőket.

3. Lapozás a next URL-en

Kövesd a next URL-t addig, amíg null lesz — így minden lapot behúzol:

javascript
let url = `${BASE}/1/expenses/?date_field=created&from_date=${from}&ordering=-created&page_size=100`;
while (url) {
  const res = await fetch(url, { headers: { Authorization: `Token ${TOKEN}` }});
  const page = await res.json();
  for (const row of page.results) upsertLocal(row);
  url = page.next;
}

4. Dedup id alapján

Az inkrementális szinkron során előfordulhat, hogy ugyanaz az id több futáson át visszajön (pl. módosítás). Használj INSERT ... ON CONFLICT (id) DO UPDATE mintát.

5. Bevételek szinkronja

Ugyanaz a minta bevételekre:

bash
curl -H "Authorization: Token $QUICK_TOKEN" \
  "https://api.quick.riport.co.hu/1/incomes/?from_date=2026-07-13"

6. Pulse egyenleg

Zárásként kérd le a napi egyenleget:

bash
curl -H "Authorization: Token $QUICK_TOKEN" https://api.quick.riport.co.hu/1/pulse/

7. Szinkron-dátum frissítése

Ha minden lekérdezés sikeres, mentsd el az új szinkron-dátumot (a futás kezdetét, nem a végét — így nem csúsznak ki tételek).

Kapcsolódó endpointok

  • GET/1/expenses/
  • GET/1/incomes/
  • GET/1/pulse/

Kapcsolódó fogalmak

Gyakori hibák

Átfedés nélküli időablak

Ha a szinkron-dátumot a futás **végére** állítod, az futás közben létrejött tételek kimaradnak. Mindig a futás kezdetét mentsd, vagy hagyj 1 perc bufferrel visszavezetést.

Túl sűrű polling

Percenkénti polling `429 Too Many Requests` hibát ad. Napi egyszeri (vagy óránkénti) futás elég a legtöbb esethez; kezeld a `429`-et exponenciális backoff-fal.