GH GambleHub

Kayıt defteri ayrıştırma ve otomasyon

TL; DR

Güvenilir "doğrulama" otomasyonu üç sütuna dayanır: deterministik yutma (güvenli teslimat, idempotans, bütünlük kontrolü), normalleştirilmiş veri katmanı (tek şema, eşleşen anahtarlar, standart zaman birimleri/para birimleri/işaretler) ve sıkı kalite disiplini (validasyonlar, toleranslar, DLQ, uyarılar, otomatik düzeltmeler). Amaç, rengarenk dosyaları/web kitaplarını, kullanılabilirlik konusunda SLA'larla uzlaşma, raporlama ve BI için kararlı tablolara dönüştürmektir.


1) Kaynak ve format manzarası

1. 1 Kaynaklar

PSP/alıcılar/toplayıcılar: işlemler, setler, komisyonlar, anlaşmazlıklar.
Bankalar: ekstreler MT940, ISO 20022 CAMT. 052/053/054, PAIN ödemeleri. 001/002.
AWS/cüzdanlar/ödemeler (OCT/RTP/SEPA): ödeme kayıtları, iadeler.
Kripto-özel/borsalar: zincir içi işlemler, dönüşüm/komisyon raporları.
Vergiler/Devlet portalları: CSV/XLSX/PDF, bazen komut dosyası tarayıcı aracılığıyla.

1. 2 Formatlar

CSV/TSV (değişken ayırıcılar, lokaller, kodlamalar).
XLSX (çok sayfalı, birleştirilmiş hücreler).
XML (ISO 20022 CAMT/PAIN, XSD özel şemaları).
SWIFT MT940/942 (konum alanları).
JSON-API/NDJSON (artımlı yüklemeler, imleçler).
PDF (tablo - ayrıştırıcı; Tarama - OCR).
ZIP/TAR. GZ (çoklu dosya yığınları).


2) Yutma boru hattı mimarisi

Konturlar:

1. Açılış: güvenli dosya kabulü (SFTP/FTPS/WebDAV/API/webhooks) - hemen sağlama toplamı düşünün, hammaddeleri her zaman saklayın.

2. Ham: tarihlere/sağlayıcılara/kasaplara göre düzen, versiyonlarla depolama.

3. Normalleştir: ayrıştırma - birleştirici türler/birimler - normalleştirilmiş tablolar.

4. Doğrulanmış: doğrulama sonrası (kalite kuralları) - bayraklar, DLQ.

5. Eşleştirilmiş: Dahili olaylara/bankaya eşleme.

6. Hizmet/BI: uzlaşma/finansal/işlemler için vitrinler.

Temel gereksinimler:
  • Yutma idempotency: '(sağlayıcı, file_name, file_size, checksum, statement_date)' - benzersiz bir anahtar.
  • Reruns/Retrays: Dosyanın yeniden çalıştırılması kopyalar oluşturmaz.
  • DLQ (ölü harf kuyruğu): tüm tanınmayan/ihlal eden kurallar - izole edilmiş bir kuyruğa.
  • Sürüm oluşturma: aynı gün için yeni bir dosya - bir öncekine bağlantı içeren yeni bir sürüm.

3) Teslimat ve sırların güvenliği

Kanallar: Sınırlı anahtarlı SFTP; FTPS - sadece sıkı TLS ile; API - OAuth2/short TTL belirteçleri.
İçerik şifreleme: Dosyaları indirirken PGP/GPG; E-posta gelen kutuları için S/MIME (kullanılıyorsa).
Bütünlük kontrolü: SHA-256/512 sağlama toplamı, hash in manifest ile karşılaştırma.
Sırlar: Vault/KMS'de saklama, döndürme, yapılandırma dosyalarında/günlüklerinde yasaklanmıştır.
Erişimler: RBAC +'en az ayrıcalık "ilkesi, ayrı hizmet hesapları.


4) Normalleştirme ve veri şeması

4. 1 Evrensel kurallar

Zaman: ISO-8601 her zaman UTC; Yerleşim tarihleri için, TZ olmadan 'DATE'.
Miktarlar: 'DECIMAL (p, s)' küçük birimler + bireysel 'ölçek'; İşaret: makbuz/masraf kesinlikle sözlüğe göre.
Para birimleri: ISO-4217, 'fx _ src'ile sabit oranlı tablo.
Locali: autodetect yasağı - ayırıcıların/ondalık noktanın/binlerin açık bir şekilde ayarlanması.
Kodlamalar: UTF-8 girişi; diğerleri - bir günlük ile dönüşüm.

4. 2 Normalleştirilmiş "düz" katman (örnek)

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) Formata göre Ayrıştırıcılar: Hileler ve Tırmık

5. 1 CSV/TSV

Açıkça 'sınırlayıcı', 'quotechar', 'escapechar', 'kodlama'yı belirtin.

Boş hatların/başlık kaymalarının tespiti; üstbilgi takma adları desteği (örn. 'MiktarAMTTxnTutar ').
İşaretin dönüşümü (eksi/parantez), binlerin normalleştirilmesi (','/. '/spaces).

5. 2 XLSX

Sayfa beyaz listesine göre okuma; Otomatik Birleştirme Engelleme - Birleştirilmiş hücreleri düzleştirir.
Formüllerin değerlere dönüştürülmesi; Excel - UTC tarihleri açık TZ ile.

5. 3 XML (ISO 20022 CAMT/PAIN)

XSD tarafından doğrulama; XPath kimlik eşlemesi ('<Ntry>', '<TxDtls>', '<Amt>', '<CdtDbtInd>').
Kredi/borç normalizasyonu - işareti; Çoklu '<Chrgs>', '<RmtInf>' desteği.

5. 4 MT940

Ayrıştırma etiketleri ': 61:', ': 86:'; Ulusal uzantılara destek; Konum alanları - dilimleme kuralları.
Birkaç ': 61:'nin tek bir grupta birleştirilmesi.

5. 5 JSON/NDJSON/API

_ id'den beri imleçlercreated_atpage_token'; rate-limit aware retrai (429 - backoff + jitter).
Kısmi semantik (bir 'provider _ txid' için birden çok refand dizeleri).

5. 6 PDF/OCR

İlk olarak, tablo ayrıştırma denemesi (tablo dedektörü), ancak daha sonra beyaz liste karakterleriyle OCR (Tesseract).
Doğrulama sonrası: miktarlar, kontrol toplamları, satır sayısının uzlaştırılması.

5. 7 Arşivler/Partiler

Yapı koruma ile ambalajın açılması; Her dosya - ayrı bir 'file _ id'; Tezahür, tüm parçaların kontrolü.


6) Veri kalitesi doğrulamaları ve kuralları

Zorunlu kontroller:
  • Şema - Gerekli tüm alanlar mevcuttur.
  • Türler: miktarlar - sayısal, tarihler - ayrıştırma.
  • Checksums/Totals - Satırların toplamı = Dosyadaki toplam (varsa).
  • Aralıklar: makul bir pencerede tarih; sum> 0 (veya izin verilen negatif sözlüğüne göre).
  • Benzersizlik: '(provider, provider_txid, sequence)' normalize edilmiş olarak çoğaltılmaz.
  • Toleranslara 'miktar/fx/zaman' tutarsızlıklarına izin verilir.

Sonuç: 'VALID', 'VALID _ WITH _ WARNINGS', 'INVALID _ DLQ (reason_code)'.


7) Kimlik ve veri tekilleştirme

Yutma anahtarı: '(provider, file_name, filesize, checksum, statement_date)' - tek bir 'file _ id'.
Satır düzeyi idem: 'row _ hash = sha256 (normalized_row_compact)'; Yeniden yükleme yeni kayıtlar oluşturmaz.
Webhooks/API: 'idempotency _ key' sağlayıcı + etiketleriniz ('exec _ id'), mağaza TTL.
Sağlayıcının kopyaları: 'provider _ txid' + 'sequence'ile dedup, tutarsızlık durumunda - DLQ_DUPLICATE.


8) Orkestrasyon ve programlar

Оркестратор: AirFlow/Dagster (DAG: 'Getir - şifreyi çöz - ayrıştırın - normalleştirin - doğrula - doğrula - yayınla - eşleştir').
SLA/SLO: 'Time-to-Availability (TtA)' dosya oluşumundan 'normalized = READY' değerine.
Retrai: üstel geri dönüş + jitter; teşebbüs sınırları; açık statüler.
Eşzamanlılık ve izolasyon: Ağır OCR/ayrıştırma XLSX - CPU/RAM sınırı olan ayrı bir havuzda/işçide.
DLQ-replay: kuralları/eşlemeleri güncellerken periyodik yeniden işleme.


9) Gözlemlenebilirlik ve uyarılar

Metrikler:
  • Yutma Başarısı %, Ayrıştırma Başarısı % kaynağa göre.
  • TtA p50/p95, Verim (çizgi/dak).
  • DLQ Oranı и Yaşlanma DLQ p50/p95.
  • Şema Sürüklenme Olayları.
  • Duplicate Rate по 'provider _ txid'.
Uyarılar (örnek):
  • 'TtA p95> SLA' - P1.
  • Sağlayıcı P1 için saat başına 'DLQ Oranı> %2'.
  • 'Schema Drift algılandı' - P0 (kaynağa göre otomatik eşleştirmeyi durdurun).
  • 'Duplicate spike' - P2 (sağlayıcı/webhooks kontrol edin).

Dashbord: Bir huni 'dosyaları rows_raw - rows_norm - rows_valid - rows_matched', nedenlerle DLQ kartı, TtA-quantiles.


10) Otomatik düzeltmeler ve eşlemeler

Üstbilgi takma adları: sürümleri olan sözlük (örneğin, 'Tutar', 'amt', 'TUTAR', 'amt').

Kod haritaları: sağlayıcı durumları - dizininiz ('ONAYLIYAKALANDIYERLEŞMIŞ ').
İşaret politikası: 'CR/DR', 'C/D', parantezler - tek bir "işaret" modeline.
Miktar onarımı: bininci ayırıcıların çıkarılması, eksinin normalleştirilmesi.
Zaman dilimi onarımı: DST dahil olmak üzere sağlayıcının yerel saati - UTC.
💡 Herhangi bir otomatik düzeltme - günlüğe kaydedilmiş ve 'repair _ flags' içinde işaretlenmiş.

11) "PSP Ödemeleri ve Raporlarının Mutabakatı" Bağlantısı

Hazır normalleştirilmiş katman - eşleştirme için girdi (provider_txid/merchant_ref/fuzzy), diff-taksonomiyi hesaplama, otomatik günlükler ve settlement↔bank -titleme. Anahtar alanlar: 'provider _ txid', 'sequence', 'kind', 'amount _ minor', 'value _ date', 'account'.


12) Depolama modeli ve tablolar

İnilen dosyaların tablosu:
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
);
Normalize edilmiş satırlar:
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) Ayrıştırıcı pseudocode

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 (geri dönüş):
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 ve günlük düzenleme

Maskeleme/hashing: PAN/e-posta/telefon - 'sha256 + tuz', günlükler - birincil değerler olmadan.
Saklama politikası: Kaynak türüne göre 'tutma' (AML/muhasebe).
PII erişimleri - sadece role göre; Okuma/dışa aktarma denetimi.


15) KPI'lar ve hedefler (ayrıştırma/yutma için)

Yutma Başarısı %99 ≥. Kaynak başına %5/gün.
Ayrıştırma Başarısı % ≥ 99 %, DLQ ≤ %1.
TtA p95 (fayl - normalize edilmiş) ≤ 15 dakika (CSV/XML), ≤ 60 dakika (PDF/OCR).
Şema Sürüklenme Olayları: Uyarı/düzeltme olmadan 0/ay.
Duplicate Rate по 'provider _ txid' ≤ 0. 05%.


16) Olay oyun kitapları

Şema kayması: otomatik eşleştirmeyi durdurun, hoparlörlerin ML algılamasıyla "yumuşak" ayrıştırıcıyı açın, bir takma ad yaması hazırlayın, DLQ-replay çalıştırın.
DLQ dalgalanması: En son dosyalarda hata ayıklama, kodlama/yerel/işareti kontrol etme, toleransların şiddetini geçici olarak azaltma (bayrakla).
SFTP gecikmeleri: API yoklama/webhook'lara geçiş, geri çekilmeleri artırma, sağlayıcı ile iletişim.
Spikes kopyaları: ek doğrulamayı etkinleştirin 'row _ hash', açıklığa kavuşana kadar tekrarlama bloğu.


17) Test Kasa Paketi (UAT/Prod-Ready)

1. Idempotency: 1 'file _ id', 0 yeni satır ile aynı yükü tekrarlayın.
2. Locales: ','/' olan dosyalar. '/spaces - doğru toplamlar.
3. Kısmi/geri ödeme: bir 'sağlayıcı _ txid' için çoklu 'dizi'.
4. XML XSD: geçersiz CAMT - 'INVALID' + DLQ.
5. MT940 varyasyonlar: ulusal uzantılar - doğru analiz.
6. PDF - OCR: gürültüyle tarama - temel kuralları çıkarma ve geçirme.
7. Şema sürüklenme: yeni bir başlık - takma adı yama ve tarihsel dosyaların yeniden işlenmesi.
8. Throughput: N dosya/saat yük testi - TtA SLA ile uyumluluk.
9. PII sürümü: PAN/e-posta içermeyen günlükler, yalnızca karma.


18) Uygulama kontrol listesi

  • Kaynak Kayıt Defteri: Protokol, Zamanlama, SLA, Biçim, İletişim.
  • Güvenli kanallar (SFTP/PGP/API), Sırlar için Vault.
  • Idempotent yutma + sağlama toplamı + sürümleri.
  • Biçim, takma ad sözlüğü, işaret/yerel ilkelere göre ayrıştırıcılar.
  • Normalleştirilmiş katman ve anahtar indeksleri.
  • Doğrulama kuralları, toleranslar, DLQ ve tekrar oynatma.
  • Orkestra (DAG), Retrai/Backoff, Kaynak Havuzları.
  • Gözlemlenebilirlik: metrikler, gösterge panoları, uyarılar.
  • GDPR/PII maskeleme, erişim denetimleri.
  • Test durumları ve düzenli şema-sürüklenme tatbikatları.

Özgeçmiş Özeti

Ayrıştırma otomasyonu'bir ayrıştırıcı yazmak'değil, endüstriyel bir devre oluşturmaktır: güvenilir teslimat ve şifreleme, idempotent boru hatları, sıkı normalleşme, kalite kuralları ve şeffaf uyarılar. Böyle bir taslak, herhangi bir kaydı, veri kullanılabilirliği konusunda garantili bir SLA ile öngörülebilir tablolara dönüştürür - uzlaşma, hazine ve yönetim raporlaması için temel oluşturur.

Contact

Bizimle iletişime geçin

Her türlü soru veya destek için bize ulaşın.Size yardımcı olmaya her zaman hazırız!

Entegrasyona başla

Email — zorunlu. Telegram veya WhatsApp — isteğe bağlı.

Adınız zorunlu değil
Email zorunlu değil
Konu zorunlu değil
Mesaj zorunlu değil
Telegram zorunlu değil
@
Telegram belirtirseniz, Email’e ek olarak oradan da yanıt veririz.
WhatsApp zorunlu değil
Format: +ülke kodu ve numara (örneğin, +90XXXXXXXXX).

Butona tıklayarak veri işlemenize onay vermiş olursunuz.