GH GambleHub

Reýestrleri parsing we awtomatlaşdyrmak

TL; DR

Ygtybarly "deňeşdirme" awtomatikasy üç kite esaslanýar: determinirlenen ingestion (howpsuz eltip bermek, idempotentlik, bitewilige gözegçilik etmek), kadaly maglumat gatlagy (ýeke-täk shema, deňeşdirme açarlary, wagt/walýuta/belgileriň standartlaşdyrylan birlikleri) we hiliň berk düzgüni (tassyklamalar, çydamlylyk, DLQ, alertler, awto düzediş). Maksat dürli-dürli faýllary/webhuklary barlamak, hasabat bermek we BI-ni elýeterlilik boýunça SLA bilen durnukly tablisalara öwürmek.


1) Çeşmeleriň we formatlaryň landşafty

1. 1 Çeşmeler

PSP/satyn alyjylar/agregatorlar: amallar, toplumlar, komissiýalar, jedeller.
Banklar: MT940 göçürmeleri, ISO 20022 CAMT. 052/053/054, PAIN tölegleri. 001/002.
ARM/gapjyklar/tölegler (OCT/RTP/SEPA): reýestrler payouts, yzyna gaýtarmalar.
Kripto-kastody/biržalar: on-çeýn amallary, konwersiýa/komissiýa hasabatlary.
Salgytlar/döwlet. portallary: CSV/XLSX/PDF, käwagt gizlenen brauzer arkaly.

1. 2 Formatlar

CSV/TSV (üýtgeýän bölüjiler, lokallar, kodlamalar).
XLSX (multi-shit, birleşdirilen öýjükler).
XML (ISO 20022 CAMT/PAIN, XSD aýratyn shemalar).
SWIFT MT940/942 (pozisiýa meýdançalary).
JSON-API/NDJSON (içerki düşürmeler, kursorlar).
PDF (tablisalar - parser; skanerler - OCR).
ZIP/TAR. GZ (köp faýlly söweşler).


2) Ingestion-paypline arhitekturasy

Konturlar:

1. Landing: faýllary howpsuz kabul etmek (SFTP/FTPS/WebDAV/API/webhooks) → derrew checksum hasaplaýarys, çig maly hemişelik saklaýarys.

2. Raw: seneler/üpjün edijiler/batcham boýunça tertipleşdirmek, wersiýalar bilen saklamak.

3. Normalize: parsing → görnüşleri/birliklerini birleşdirmek → normalized tablisalar.

4. Tassyklanan: post-tassyklamalar (hil düzgünleri) → baýdaklar, DLQ.

5. Matched: içerki wakalar/bank bilen deňeşdirme.

6. Serving/BI: deňeşdirmek/maliýe/amallar üçin penjireler.

Esasy talaplar:
  • Indempotentlik ingestion: '(provider, file_name, file_size, checksum, statement_date)' → özboluşly açar.
  • Gaýtalanmalar/retralar: faýlyň gaýtalanmagy dubl döretmeýär.
  • DLQ (dead-letter queue): tanalmaýan/düzgüni bozan hemme zat - izolirlenen nobata.
  • Wersiýa: Şol gün täze faýl → öňküsine baglanyşyk bilen täze wersiýa.

3) Eltmegiň we syrlaryň howpsuzlygy

Kanallar: Açarlary çäkli SFTP; FTPS - diňe berk TLS-de; API - OAuth2/gysga TTL bellikleri.
Mazmuny şifrlemek: PGP/GPG faýllary ýükläniňizde; E-mail-inboxlar üçin S/MIME (ulanylsa).
Bitewilige gözegçilik etmek: SHA-256/512 checksum, manifestdäki heş bilen deňeşdirmek.
Syrlar: Vault/KMS-de saklamak, aýlanmak, -faýllarda saklamak gadagan.
Elýeterliligi: RBAC + "iň az artykmaçlyklar" ýörelgesi, aýry-aýry hyzmat hasaplary.


4) Maglumatlaryň kadalaşmagy we shemasy

4. 1 Ähliumumy düzgünler

Wagt: elmydama UTC ISO-8601; seneler üçin settlement - 'DATE' TZ-siz.
Jemi: 'DECIMAL (p, s)' minor units + aýry 'scale'; belgi: sözlük boýunça giriş/çykdajy.
Walýuta: ISO-4217, kesgitlenen nyrh tablisasy 'fx _ src'.
Lokallary: awtodetektiň gadagan edilmegi - bölüjileriň/onluk nokadyň/müň bölüjiniň aç-açan sazlamasy.
Kodlamalar: UTF-8-e girmek; beýlekiler - log bilen öwrülişik.

4. 2 Kadalaşan "tekiz" gatlak (mysal)

json
{
"provider": "Acquirer_A",
"source_kind": "PSP_TX    PSP_SETTLEMENT    BANK    WALLET    CRYPTO",
"kind": "AUTH    CAPTURE    REFUND    PAYOUT    FEE    SETTLEMENT    CHARGEBACK",
"payment_id": "pay_123",        // ваше
"provider_txid": "psp_abc_789",    // внешнее
"merchant_ref": "mr_456",
"sequence": 0,             // partial/refund line index
"amount_minor": 100000,        // 1000.00
"currency": "EUR",
"fee_minor": 120,           // 1.20
"fx_rate": 1.0000,
"fx_src": "PSP    ECB    BANK",
"event_ts": "2025-11-03T12:00:00Z",
"value_date": "2025-11-05",
"account": "PSP_MERCHANT_CARD_A",
"bin": "425000",
"last4": "1234",
"status": "APPROVED    CAPTURED    SUCCESS    FAILED    SETTLED",
"file_id": "ing_20251103_001",
"row_hash": "sha256(raw_row)"
}

5) Format boýunça parserler: usullar we dyrnaklar

5. 1 CSV/TSV

Aç-açan "delimiter", "quotechar", "escapechar", "encoding" soraň.

Boş setirleriň/sözbaşy çalyşmalarynyň jikme-jiklikleri; header aliases (mysal üçin 'AmountAMTTxnAmount`).
Nyşany üýtgetmek (minus/parmak), müň belginiň kadalaşmagy (', '/'. '/boşluklar).

5. 2 XLSX

sheet whitelist boýunça okamak; awtomatiki birleşmeleri gadagan etmek - birleşdirilen öýjükleri tekizlemek.
Formulalary manylara öwürmek; açyk TZ bilen Excel → UTC seneleri.

5. 3 XML (ISO 20022 CAMT/PAIN)

XSD boýunça tassyklama; Jikme-jiklikleriň XPath-mapping ('<Ntry>', '<TxDtls>', '<Amt>', '<CdtDbtInd>').
Kadalaşma credit/debit → belgi; Köplügi goldaýar '<Chrgs>', '<RmtInf>'.

5. 4 MT940

Taglaryň seljermesi ': 61:', ': 86:'; milli giňeltmeleri goldamak; pozisiýa meýdançalary → slicing düzgünleri.
Birnäçe jemlemek ': 61:' Bir batçda.

5. 5 JSON/NDJSON/API

Kursorlar 'since _ idcreated_atpage_token`; rate-limit aware retrai (429 → backoff + jitter).
Partial semantika (bir 'provider _ txid' -e birnäçe refand-setirler).

5. 6 PDF/OCR

Ilki tablisa parsing synanyşygy (tab-detektor), diňe simwollaryň whitelist bilen OCR (Tesseract).
Post-tassyklama: setirleriň sanyny deňeşdirmek, gözegçilik jemleri.

5. 7 Arhiwler/gaplar

Gurluşy saklamak bilen gaplamany açmak; her faýl üçin aýratyn 'file _ id'; manifest, ähli bölümlere gözegçilik.


6) Maglumatlaryň hiliniň tassyklamalary we düzgünleri

Hökmany barlaglar:
  • Shema: required meýdanlaryň hemmesi bar.
  • Görnüşleri: jemler - san, seneler - pars.
  • Gözegçilik pullary/jemleri: setirleriň jemleri = faýldaky jemler (bar bolsa).
  • Diapazonlar: akylly penjirede senesi; jemi> 0 (ýa-da rugsat berilýän negatiw sözlük boýunça).
  • Özboluşlylygy: '(provider, provider_txid, sequence)' normalized.
  • Tolerans: 'amount/fx/time'.

Netije: 'VALID', 'VALID _ WITH _ WARNINGS', 'INVALID → DLQ (reason_code)'.


7) Idempotentlik we duplikasiýa

Ingestion key: '(provider, file_name, filesize, checksum, statement_date)' → ýeke-täk 'file _ id'.
Row-level idem: `row_hash = sha256(normalized_row_compact)`; göçürip almak täze ýazgy döretmeýär.
Webhooks/API: 'idempotency _ key' üpjün ediji + bellikleriňiz ('exec _ id'), TTL saklamak.
Üpjün edijiniň dubly: 'provider _ txid' + 'sequence' boýunça dedup, tapawut ýüze çykan halatynda - DLQ_DUPLICATE.


8) Orkestr we meýilnama

Оркестратор: Airflow/Dagster (DAG: `fetch → decrypt → parse → normalize → validate → publish → match`).
SLA/SLO: 'Time-to-Availability (TtA)' -dan 'normalized = READY' -e çenli.
Retraýalar: eksponensial backoff + jitter; synanyşyklaryň çäkleri; anyk statuslar.
Paralellik we izolýasiýa: agyr OCR/parsing XLSX - CPU/RAM çäkli aýratyn howuzda/workerde.
DLQ-replay: düzgünleri/mappingleri täzeläniňizde döwürleýin reprocess.


9) Syn etmek we alertler

Metrikler:
  • Ingestion Success%, Parse Success%.
  • TtA p50/p95, Throughput (setirler/minut).
  • DLQ Rate и Aging DLQ p50/p95.
  • Schema Drift Incidents (sözbaşy/formaty üýtgetmek).
  • Duplicate Rate по `provider_txid`.
Alertler (mysal):
  • `TtA p95 > SLA` → P1.
  • 'DLQ Rate> 2%' üpjün ediji → P1.
  • 'Schema Drift detected' → P0 (awto-oýny duruzmak).
  • 'Duplicate spike' → P2 (üpjün edijini/webhukini barlaň).

Daşbord: huni 'files → → → →, sebäplere görä DLQ kartasy, TtA-kwantili.


10) Awto düzedişler we mappingler

Header aliases: wersiýalary bolan sözlük (e. g., `Amount`→`amt`, `AMOUNT`→`amt`).

Code maps: Üpjün edijiniň statuslary → Maglumat kitabyňyz ('APPROVEDCAPTUREDSETTLED`).
Sign policy: 'CR/DR', 'C/D', parantezler - ýekeje "nyşan" modeline.
Amount repair: müň bölüjini aýyrmak, minusy kadalaşdyrmak.
Timezone repair: DST-i göz öňünde tutup, üpjün edijiniň lokal wagty → UTC.
💡 Islendik awtomatiki düzediş - 'repair _ flags' -da ýazylýar we bellik edilýär.

11) "PSP töleglerini we hasabatlaryny deňeşdirmek" bilen baglanyşyk

Taýýar normalized gatlak - oýun (provider_txid/merchant_ref/fuzzy), diff-taksonomiýany hasaplamak, awto-magazinesurnallar we settlement, bank-tikişler üçin giriş. Esasy meýdançalar: 'provider _ txid', 'sequence', 'kind', 'amount _ minor', 'value _ date', 'account'.


12) Ammar we tablisanyň nusgasy

Landed faýllar tablisasy:
sql
CREATE TABLE landed_files (
file_id TEXT PRIMARY KEY,
provider TEXT,
source_kind TEXT,
file_name TEXT,
file_size BIGINT,
checksum TEXT,
statement_date DATE,
received_at TIMESTAMP WITH TIME ZONE,
version INT,
status TEXT, -- RECEIVED    PARSED    FAILED error TEXT
);
Adaty setirler:
sql
CREATE TABLE psp_norm (
row_id BIGSERIAL PRIMARY KEY,
file_id TEXT REFERENCES landed_files(file_id),
provider TEXT,
source_kind TEXT,
kind TEXT,
payment_id TEXT,
provider_txid TEXT,
merchant_ref TEXT,
sequence INT,
amount_minor BIGINT,
currency CHAR(3),
fee_minor BIGINT,
fx_rate NUMERIC(18,8),
fx_src TEXT,
event_ts TIMESTAMPTZ,
value_date DATE,
account TEXT,
status TEXT,
row_hash TEXT UNIQUE,
repair_flags TEXT[]
);
CREATE INDEX idx_psp_norm_txid ON psp_norm(provider, provider_txid, sequence);

13) Parserleriň ýalan resminamasy

CSV/XLSX:
python def parse_table(file, spec):
df = load_csv_or_xlsx(file, delimiter=spec.delim, encoding=spec.enc, sheet=spec.sheet)
df = rename_headers(df, spec.header_aliases)
df = clean_amounts(df, thousand=spec.thousand, decimal=spec.decimal, sign_policy=spec.sign)
rows = []
for r in df.itertuples():
rows.append(normalize_row(r, spec))
return rows
XML CAMT:
python def parse_camt(xml):
root = parse_xml(xml, xsd="camt053.xsd")
for ntry in root.findall('.//Ntry'):
sign = 1 if ntry.findtext('CdtDbtInd') == 'CRDT' else -1 amt = Decimal(ntry.findtext('Amt')) sign
... map to normalized fields
OCR PDF (fallback):
python def parse_pdf_ocr(pdf):
text = tesseract(pdf, lang="eng", psm=6, whitelist="0123456789.,-;:/A-Za-z")
table = detect_table(text)
return normalize_table(table)

14) GDPR/PII we loglary redaktirlemek

Gizlemek/kesmek: PAN/email/telefon → 'sha256 + salt', logi - başlangyç manysyz.
Saklamak syýasaty: Çeşmäniň görnüşi boýunça 'retention' (AML/buhgalteriýa).
PII-e elýeterlilik - diňe rollary boýunça; okamagyň/eksportyň barlagy.


15) KPI we maksatlar (parsing/ingestion üçin)

Ingestion Success % ≥ 99. Çeşme üçin 5 %/gün.
Parse Success % ≥ 99%, DLQ ≤ 1%.
TtA p95 (faýl → normalized) ≤ 15 minut (CSV/XML), ≤ 60 minut (PDF/OCR).
Schema Drift Incidents: 0/aý alertsiz/fikssiz.
Duplicate Rate по `provider_txid` ≤ 0. 05%.


16) Wakalaryň pleýbuklary

Shema drift: awto-oýny duruzmak, sütünleriň ML-detektorly "ýumşak" parserini açmak, alias-patç taýýarlamak, DLQ-replay sürmek.
DLQ-iň köpelmegi: iň soňky faýllary düzetmek, kodlaşdyryş/lokal/belgini barlamak, çydamlylygyň agyrlygyny wagtlaýyn peseltmek (baýdak bilen).
SFTP gijikdirmeleri: API-polling/webhuklara geçmek, retraýlary köpeltmek, üpjün ediji bilen aragatnaşyk.
Spikes duplicates: 'row _ hash' goşmaça barlagy, tapylýança gaýtalanmalar blokyny goşuň.


17) Test-case-paket (UAT/Prod-taýynlyk)

1. Idempotentlik: şol göçürmäniň gaýtalanmagy → 1 'file _ id', 0 täze setirler.
2. Lokallar: ', '/'. '/boşluklar → dogry mukdarda faýllar.
3. Partial/refund: birnäçe 'sequence' -den birine 'provider _ txid'.
4. XML XSD: Galid däl CAMT → 'INVALID' + DLQ.
5. MT940 üýtgemeleri: milli giňeltmek → dogry seljerme.
6. PDF → OCR: sesli skan → esasy düzgünleri çykarmak we geçmek.
7. Shema drift: Täze deger → alias-patch we taryhy faýllary gaýtadan işlemek.
8. Throughput: N faýl/sagat ýük synagy → TtA SLA-ny berjaý etmek.
9. PII-redaksiýa: PAN/e-poçtsyz loglar, diňe heşler.


18) Girizmegiň çek-sanawy

  • Çeşmeleriň sanawy: teswirnama, meýilnama, SLA, format, aragatnaşyk.
  • Ygtybarly kanallar (SFTP/PGP/API), syr üçin Vault.
  • Idempotent ingestion + checksum + wersiýalary.
  • Format boýunça parserler, alias-sözlük, sign/locale-syýasatlar.
  • Adaty gatlak we açar indeksleri.
  • Tassyklama, çydamlylyk, DLQ we replay düzgünleri.
  • Orkestrator (DAG), retralar/backoff, çeşme howuzlary.
  • Gözegçilik derejesi: metrikler, daşbordlar, aladalar.
  • GDPR/PII-gizlemek, giriş barlaglary.
  • Synag ýagdaýlary we yzygiderli schema-drift drills.

Jemleme

Parsingiň awtomatlaşdyrylmagy "parser ýazmak" däl-de, senagat konturyny gurmak: ygtybarly eltip bermek we şifrlemek, idempotent paýlamak, berk kadalaşmak, hil düzgünleri we aç-açan alertler. Şeýle konturlar islendik sanawy maglumatlaryň elýeterliligi boýunça kepillendirilen SLA bilen öňünden aýdyp boljak tablisalara öwürýär - deňeşdirmeler, gazna we dolandyryş hasabatlylygy üçin esas.

Contact

Biziň bilen habarlaşyň

Islendik sorag ýa-da goldaw boýunça bize ýazyp bilersiňiz.Biz hemişe kömek etmäge taýýar.

Integrasiýany başlamak

Email — hökmany. Telegram ýa-da WhatsApp — islege görä.

Adyňyz obýýektiw däl / islege görä
Email obýýektiw däl / islege görä
Tema obýýektiw däl / islege görä
Habar obýýektiw däl / islege görä
Telegram obýýektiw däl / islege görä
@
Eger Telegram görkezen bolsaňyz — Email-den daşary şol ýerden hem jogap bereris.
WhatsApp obýýektiw däl / islege görä
Format: ýurduň kody we belgi (meselem, +993XXXXXXXX).

Düwmäni basmak bilen siz maglumatlaryňyzyň işlenmegine razylyk berýärsiňiz.