GH GambleHub

Reyestrlar parsingi va avtomatlashtirish

TL; DR

Ishonchli «solishtirma» avtomatika uchta kitga asoslanadi: determinizatsiya qilingan ingestion (xavfsiz yetkazib berish, idempotentlik, yaxlitlikni nazorat qilish), me’yorlashtirilgan ma’lumotlar qatlami (yagona sxema, taqqoslash kalitlari, vaqt/valyuta/belgilarning standartlashtirilgan birliklari) va qat’iy sifat intizomi (validatsiyalar, toleranslar, DLQ, alertalar, avto tuzatish). Maqsad - turli xil fayl/vebxuklarni SLA bilan solishtirish, hisobot va BI uchun barqaror jadvallarga aylantirishdir.


1) Manbalar va formatlar landshafti

1. 1 Manbalar

PSP/ekvayerlar/agregatorlar: tranzaksiyalar, setlar, komissiyalar, tortishuvlar.
Banklar: MT940 ko’chirmalari, ISO 20022 CAMT. 052/053/054, PAIN to’lovlari. 001/002.
ARM/hamyonlar/to’lovlar (OCT/RTP/SEPA): payouts reyestrlari, qaytarishlar.
Kripto-kastodi/birjalar: on-cheyn tranzaksiyalar, konvertatsiya/vositachilik hisobotlari.
Soliqlar/davlat. portallar: CSV/XLSX/PDF, ba’zan skriptlangan brauzer orqali.

1. 2 Formatlar

CSV/TSV (variativ ajratgichlar, lokallar, kodlashlar).
XLSX (multi-shit, birlashgan kataklar).
XML (ISO 20022 CAMT/PAIN, XSD maxsus sxemalari).
SWIFT MT940/942 (pozitsion maydonlari).
JSON-API/NDJSON (inkremental yuklar, kursorlar).
PDF (jadval - parser; skanlar - OCR).
ZIP/TAR. GZ (koʻp faylli batchi).


2) Ingestion-payplayn arxitekturasi

Konturlar:

1. Landing: fayllarni xavfsiz qabul qilish (SFTP/FTPS/WebDAV/API/webhooks) → darhol checksum hisoblaymiz, xomashyoni o’zgarishsiz saqlaymiz.

2. Raw :/provayderlar/batchlar bo’yicha joylashtirish, versiyalar bilan saqlash.

3. Normalize: parsing → tiplar/birliklarni birlashtirish → normalized jadvallar.

4. Validated: post-validatsiya (sifat qoidalari) → bayroqlar, DLQ.

5. Matched: ichki voqealar/bank bilan taqqoslash.

6. Serving/BI: solishtirish/moliya/operatsiyalar uchun vitrinalar.

Asosiy talablar:
  • Idempotentlik ingestion:’(provider, file_name, file_size, checksum, statement_date)’→ noyob kalit.
  • Takrorlash/retraj: faylni takrorlash dubl yaratmaydi.
  • DLQ (dead-letter queue): tanilmagan/qoidalarni buzgan hamma narsa - izolyatsiya qilingan navbatga.
  • Version: oʻsha kundagi yangi fayl → oldingisiga bogʻlangan yangi versiya.

3) Yetkazib berish va sirlarning xavfsizligi

Kanallar: Cheklangan kalitli SFTP; FTPS - faqat qattiq TLSda; API - OAuth2/qisqa TTLli tokenlar.
Tarkibni shifrlash: Fayllarni yuklashda PGP/GPG; E-mail-inboxlar uchun S/MIME (agar foydalanilsa).
Yaxlitlikni nazorat qilish: SHA-256/512 checksum, manifestdagi xesh bilan taqqoslash.
Sirlar: Vault/KMS’da saqlash, rotatsiya, fayl/log’larda taqiqlangan.
Foydalanuvchilar: RBAC + «eng kichik imtiyozlar» printsipi, alohida servis-hisoblar.


4) Ma’lumotlarni normallashtirish va sxemasi

4. 1 Universal qoidalar

Vaqt: har doim ISO-8601 UTC; settlement sanalari uchun -’DATE’TZsiz.
Summalar:’DECIMAL (p, s)’v minor units + alohida’scale’; belgi: kirish/xarajat qat’iy ravishda lug’at bo’yicha.
Valyutalar: ISO-4217,’fx _ src’bilan belgilangan kurslar jadvali.
Lokallar: avtodetektni taqiqlash - ajratgichlarni/o’nlik nuqtani/minginchi nuqtani aniq sozlash.
Kodlashlar: UTF-8 ga kirish; boshqalari - log bilan konvertatsiya qilish.

4. 2 Normallashtirilgan «yassi» qatlam (misol)

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) Parserlar formatlar bo’yicha: usullar va tirnoq

5. 1 CSV/TSV

Aniq’delimiter’,’quotechar’,’escapechar’,’encoding’.

Bo’sh satrlar/sarlavhalar siljishlari detekti; qo’llab-quvvatlash header aliases (masalan,’AmountAMTTxnAmount`).
Belgini oʻzgartirish (minus/qavs), mingtalik (’, ’/’. ’/boʻshliqlar).

5. 2 XLSX

Sheet whitelist boʻyicha oʻqish; avtosayyoralarni taqiqlash - birlashgan kataklarni tekislash.
Formulalarni qiymatlarga aylantirish; aniq TZ bilan Excel → UTC sanalari.

5. 3 XML (ISO 20022 CAMT/PAIN)

XSD bo’yicha validatsiya; XPath-mapping rekvizitlari (’<Ntry>’,’<TxDtls>’,’<Amt>’,’<CdtDbtInd>’).
Normalizatsiya credit/debit → belgi; ’<Chrgs>’,’<RmtInf>’.

5. 4 MT940

Tafsilotlar’: 61:’,’: 86:’; milliy kengayishlarni qo’llab-quvvatlash; pozitsion maydonlar → slicing qoidalari.
Bir nechta’: 61:’ni bir batchga birlashtirish.

5. 5 JSON/NDJSON/API

Kursorlar’since _ idcreated_atpage_token`; rate-limit aware retrai (429 → backoff + jitter).
Partial semantika (bitta’provider _ txid’ga bir nechta refand-satrlar).

5. 6 PDF/OCR

Avval jadval parsingiga urinish (tab-detektor), shundan keyingina whitelist belgilari bilan OCR (Tesseract).
Post-validatsiya: summalar, nazorat yakunlari, satrlar sonini solishtirish.

5. 7 Arxivlar/batchi

Tuzilmasini saqlab qolgan holda ochish; har bir faylga alohida’file _ id’; manifest, barcha qismlarni nazorat qilish.


6) Validatsiyalar va ma’lumotlar sifati qoidalari

Majburiy tekshiruvlar:
  • Sxema: barcha required maydonlari mavjud.
  • Turlari: summalar - son, sanalar - pars.
  • Nazorat summalari/yakunlari: satrlar summasi = fayldagi yakun (agar mavjud bo’lsa).
  • Diapazonlar: oqilona oynadagi sana; summa> 0 (yoki yo’l qo’yiladigan salbiy lug’at bo’yicha).
  • Noyoblik:’(provider, provider_txid, sequence)’normalized’ga takrorlanmaydi.
  • Toleranslar:’amount/fx/time’.

Natija:’VALID’,’VALID _ WITH _ WARNINGS’,’INVALID → DLQ (reason_code)’.


7) Idempotentlik va deduplikatsiya

Ingestion key:’(provider, file_name, filesize, checksum, statement_date)’→ yagona’file _ id’.
Row-level idem: `row_hash = sha256(normalized_row_compact)`; qayta yuklash yangi yozuvlarni yaratmaydi.
Webhooks/API:’idempotency _ key’provayderi + sizning belgilaringiz (’exec _ id’), TTLni saqlash.
Provayderning dubli:’provider _ txid’+’sequence’bo’yicha dedup, tafovut bo’lganda - DLQ_DUPLICATE.


8) Orkestr va jadvallar

Оркестратор: Airflow/Dagster (DAG: `fetch → decrypt → parse → normalize → validate → publish → match`).
SLA/SLO:’Time-to-Availability (TtA)’fayldan’normalized = READY’gacha.
Retray: eksponensial backoff + jitter; urinishlar limitlari; aniq maqomlar.
Parallelizm va izolyatsiya: og’ir OCR/parsing XLSX - CPU/RAM limitli alohida hovuz/vorkerda.
DLQ-replay: mapping qoidalarini yangilashda davriy reprocess.


9) Kuzatish va alertlar

Metriklar:
  • Ingestion Success%, Parse Success% manbalari boʻyicha.
  • TtA p50/p95, Throughput (satr/min).
  • DLQ Rate и Aging DLQ p50/p95.
  • Schema Drift Incidents (sarlavha/formatni oʻzgartirish).
  • Duplicate Rate по `provider_txid`.
Alertlar (misol):
  • `TtA p95 > SLA` → P1.
  • ’DLQ Rate> 2%’ provayder orqali soatiga → P1.
  • ’Schema Drift detected’ → P0 (avto-matchingni manba bo’yicha to’xtatish).
  • ’Duplicate spike’ → P2 (provayderni/vebxukini tekshirish).

Dashbord: huni’files → rows_raw → rows_norm → rows_valid → rows_matched', sabablarga ko’ra DLQ xaritasi, TtA kvantillari.


10) Avto tuzatishlar va mappinglar

Header aliases: versiyali lugʻat (e. g., `Amount`→`amt`, `AMOUNT`→`amt`).

Code maps: provayder maqomi → maʼlumotnoma (’APPROVEDCAPTUREDSETTLED`).
Sign policy:’CR/DR’,’C/D’, qavslar - yagona «belgili» modelga.
Amount repair: minginchi ajratuvchilarni olib tashlash, minusni normallashtirish.
Timezone repair: DST hisobga olingan holda provayderning lokal vaqti → UTC.
💡 Har qanday avto tuzatish’repair _ flags’ga kiritiladi va belgilanadi.

11) «PSP to’lovlari va hisobotlarini solishtirish» bilan aloqa

Tayyor normalized qatlam - matching (provider_txid/merchant_ref/fuzzy), diff-taksonomiya hisob-kitobi, avto-jurnallar va settlement, bank-tikishlar uchun kirish. Asosiy maydonlar:’provider _ txid’,’sequence’,’kind’,’amount _ minor’,’value _ date’,’account’.


12) Ombor modeli va jadvallar

Landed fayllar jadvali:
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
);
Normallashtirilgan satrlar:
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) Parserlarning soxta hujjati

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 va loglarni tahrirlash

Niqoblash/xeshlash: PAN/email/telefon →’sha256 + salt’, loglar - birlamchi qiymatlarsiz.
Saqlash siyosati: manba turi bo’yicha’retention’(AML/buxgalteriya hisobi).
PII ga kirish - faqat roli bo’yicha; o’qish/eksport auditi.


15) KPI va maqsadlar (parsing/ingestion uchun)

Ingestion Success % ≥ 99. Kuniga 5%.
Parse Success % ≥ 99%, DLQ ≤ 1%.
TtA p95 (fayl → normalized) ≤ 15 daqiqa (CSV/XML), ≤ 60 daqiqa (PDF/OCR).
Schema Drift Incidents: 0/oy alert/fikssiz.
Duplicate Rate по `provider_txid` ≤ 0. 05%.


16) Hodisalar pleybuklari

Schema drift: avto-matchingni to’xtatish, ML-detektorli yumshoq parserni yoqish, alias-patchni tayyorlash, DLQ-replayni haydash.
DLQ portlashi: oxirgi fayllarni tuzatish, kodlash/lokal/belgini tekshirish, vaqtincha telerans qattiqligini pasaytirish (bayroqli).
SFTP kechikishlari: API-polling/vebxukka oʻtish, retraylarni koʻpaytirish, provayder bilan aloqa qilish.
Spikes duplicates:’row _ hash’qoʻshimcha tekshiruvini, takrorlash blokini aniqlashgacha yoqish.


17) Test-keys-paket (UAT/Prod-tayyorlik)

1. Idempotentlik: xuddi shu yuklashni takrorlash → 1’file _ id’, 0 yangi satr.
2. Lokallar:’, ’/’. ’/boʻshliqlar → toʻgʻri summalar.
3. Partial/refund: bir nechta’sequence’ga’provider _ txid’.
4. XML XSD: nolalid CAMT →’INVALID’+ DLQ.
5. MT940 oʻzgarishlar: milliy kengaytmalar → toʻgʻri tahlil.
6. PDF → OCR: shovqin bilan tekshirish → asosiy qoidalarni olish va o’tish.
7. Schema drift: yangi xeder → alias-patch va tarixiy fayllarni qayta ishlash.
8. Throughput: N fayl/soat yuklash testi → TtA SLAga rioya qilish.
9. PII tahriri: PAN/e-mail’siz loglar, faqat xeshlar.


18) Joriy etish chek-varaqasi

  • Manbalar reyestri: protokol, jadval, SLA, format, aloqa.
  • Xavfsiz kanallar (SFTP/PGP/API), maxfiy Vault.
  • Idempotent ingestion + checksum + versiyalar.
  • Format bo’yicha parserlar, alias-lug’at, sign/locale-siyosat.
  • Normal qatlami va kalitlar indekslari.
  • Validatsiya, tolerans, DLQ va replay qoidalari.
  • Orkestrator (DAG), retryalar/backoff, resurslar hovuzlari.
  • Kuzatish darajasi: metriklar, dashbordlar, alertlar.
  • GDPR/PII-niqoblash, kirish auditlari.
  • Test-keyslar va muntazam schema-drift drills.

Xulosa

Parsingni avtomatlashtirish - bu «parser yozish» emas, balki sanoat konturini qurish: ishonchli yetkazib berish va shifrlash, idempotent payplaynlar, qat’iy normallashtirish, sifat qoidalari va shaffof alertlar. Bunday kontur har qanday reyestrni ma’lumotlarning mavjudligi bo’yicha kafolatlangan SLAga ega bo’lgan jadvallarga aylantiradi - taqqoslash, g’aznachilik va boshqaruv hisobotlari uchun asos.

Contact

Biz bilan bog‘laning

Har qanday savol yoki yordam bo‘yicha bizga murojaat qiling.Doimo yordam berishga tayyormiz.

Integratsiyani boshlash

Email — majburiy. Telegram yoki WhatsApp — ixtiyoriy.

Ismingiz ixtiyoriy
Email ixtiyoriy
Mavzu ixtiyoriy
Xabar ixtiyoriy
Telegram ixtiyoriy
@
Agar Telegram qoldirilgan bo‘lsa — javob Email bilan birga o‘sha yerga ham yuboriladi.
WhatsApp ixtiyoriy
Format: mamlakat kodi va raqam (masalan, +998XXXXXXXX).

Yuborish orqali ma'lumotlaringiz qayta ishlanishiga rozilik bildirasiz.