GH GambleHub

Պարսինգը կիսագունդներ և ավտոմատիզացիա

TL; DR

Հուսալի «ճոճվող» ավտոմատիկան կառուցվում է երեք կետերում 'դետերմինացված ingestion (անվտանգ առաքում, գաղափարախոսություն, ամբողջականության վերահսկում), նորմալացված տվյալների շերտ (մեկ սխեմա, բանալիներ, ժամանակի ստանդարտ միավորներ/արժեթղթեր/նշաններ) և որակի կոշտ կարգապահություն (վալիդացիա, տոլերանսներ, DLQ, ալերտա, ավտորեկցիաներ)։ Նպատակը բազմազան ֆայլեր/webhuks վերածելն է կայուն սեղանների, հաշվետվությունների և BI-ի 'SLA-ի հասանելիության համար։


1) Աղբյուրների և ձևերի լանդշաֆտը

1. 1 Աղբյուրներ

PMS/ecwayers/ագրեգատորներ 'գործարքներ, ցանցեր, հյուրանոցներ, բանավեճեր։

ARM/դրամապանակներ/վճարումներ (OCT/RTP/SEPA) 'payouts, ավելացումներ։

Crypto-castodi/փոխանակում 'նա գործարքներ է, փոխարկումների հաշվետվություններ/։

Բանկերը ՝ MT940, CSA 20022 CAMT։ 052/053/054, PAIN վճարումները։ 001/002.

Հարկեր/պետական։ պորտալներ ՝ CSV/XLSX/PDF, երբեմն ջութակահար զննարկչի միջոցով։

1. 2 Lenta.ru

CSV/TSV (փոփոխական բաժանողներ, լոկալներ, կոդավորում)։

XLSX (մուլտֆիլմ-շիտ, միավորված կոմպոզիցիաներ)։

XML (III 20022 CAMT/PAIN, XSD կաստոմային շեմ)։

SWIFT MT940/942 (դիրքային դաշտեր)։

JSON-API/NDJSON (retremental, կուրսորները)։

PDF (պլաստիկ - պարսեր; սկանները OCR են)։

ZIP/TAR. GZ (մի քանի ֆայլերի հետ)։


2) ingestion-interpline ճարտարապետությունը

Ուրվագծեր

1. Landing: Ֆայլերի անվտանգ ընդունումը (SFTP/FTPS/WinDAV/API/webhooks) անմիջապես համարվում է ksum, մենք պահպանում ենք հումքը անփոփոխ։

2. Rox: դասավորություն ամսաթվերի/պրովայդերների/մարտերի, տարբերակների հետ։

3. Normalize: Պարսինգը բացատրում է տեսակների/միավորների միավորումը normalized աղյուսակում։

4. Validated: Post-validation (որակի կանոնները) ռուսական դրոշներ, DLQ։

5. Matched 'համեմատություն ներքին իրադարձությունների/բանկի հետ։

6. Serving/BI: վիտրիններ/ֆինանսական/վիրահատության համար։

Հիմնական պահանջները

Ingestion: «(provider, բանաձև _ name, բանաձևը _ size, delksum, statrone _ date)» եզակի բանալին է։

Կրկնություններ/ռետրաններ, ֆայլի կրկնօրինակումը դուբլներ չի ստեղծում։

DLQ (dead-letter queue) 'բոլոր չբացահայտված/խախտող կանոնները մեկուսացված են։

Տարբերակումը 'նույն օրվա նոր ֆայլը նոր տարբերակ է, որը հղում է նախորդին։


3) Առաքման և գաղտնիքների անվտանգությունը

Ալիքները ՝ SFTP սահմանափակ լուծումներով; FTPS-ը միայն TFC-ի կառուցվածքով է։ API - OAuth2/հոսանք կարճ TTL-ով։

Բովանդակության կոդավորումը 'PGP/GPG ֆայլերի բեռնման ժամանակ։ S/MIME-ը e-mail-inbox-ի համար (եթե օգտագործվում են)։

Ամբողջականության վերահսկումը 'SHA-256/512 ksum, համեմատություն մանիֆեստի հեշի հետ։

Գաղտնիքները 'պահել Vox/KFC-ում, ռոտացիան, արգելված է դելգ ֆայլերում/լոգլերում։

Հասանելի են ՝ RBAC + «նվազագույն արտոնությունների» սկզբունքը, առանձին ծառայողական հաշիվները։


4) Նորմալացում և տվյալների սխեմա

4. 1 Համընդհանուր կանոններ

Ժամանակը 'միշտ UTC-ում RF-8601; settlation-ի համար '«DATE» առանց TZ-ի։

Գումարներ ՝ «DECIMAL (p, s)» minor units + առանձին «scale»; նշանը 'ծխելը/սպառումը խստորեն բառարանում։

Արժույթները ՝ CSA-2417, ֆիքսված աշխատանքային դասընթացները '«fx _ 24c»։

Լոկալի ՝ մեքենայի արգելքը բաժանողների/տասանորդ կետերի/հազարավոր։

Կոդավորում ՝ UTF-8; մյուսները փոխակերպում են։

4. 2 Նորմալացված «հարթ» շերտ (օրինակ)

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) Պարսերներ ձևաչափերով 'ընդունելություններ և կողոպուտներ

5. 1 CSV/TSV

Հստակ տվեք 'www.imiter "," www.techar "," escapechar "," encoding "։

Դատարկ տողերի/վերնագրերի հերթափոխերի։ header aliases աջակցություն (օրինակ ՝ «Amount»)AMTTxnAmount`).
Նշանի փոխակերպումը (մինուս/փակագծեր), հազարամյակների նորմալացումը (", "/")։

5. 2 XLSX

Կարդալ sheet whitelist; ավտոսրահների արգելքը փչացումն է։

Բանաձևի փոխակերպումը արժեքներին. UTC-ի թողարկման ամսաթվերը ակնհայտ TZ-ով։

5. 3 XML (ISO 20022 CAMT/PAIN)

Վալիդացիան XSD-ով; XPath-mapping rexizits (<, , , <

Credit/debit-ի նորմալացումը նշված նշան է։ Բազմաթիվ աջակցություն >,

5. 4 MT940

Թեգերի վերլուծություն '61: "," ՝ 86: "; ազգային ընդարձակման աջակցություն; դիրքային դաշտերը կարգավորում են slicing կանոնները։

Համախմբում մի քանի '61: "մեկ բաթում։

5. 5 JSON/NDJSON/API

Կուրսորներ 'since _ idcreated_atpage_token`; rate-limit aultretrai (429 backoff + jitter)։
Սեմանտիկ (մի քանի refand տողեր մեկ 'provider _ txid ")։

5. 6 PDF/OCR

Սկզբում պլաստիկ պարսինգի (դետեկտոր) փորձը, միայն դրանից հետո OCR (Tesseract) 'whitelist-ով։

Փոստ-վալիդացիա 'գումարներ, ստուգողական արդյունքներ, տողերի քանակը։

5. 7 Արխիվներ/մարտեր

Բացումը կառուցվածքի պահպանմամբ. յուրաքանչյուր ֆայլ 'առանձին «բանաձև _ id»; մանիֆեստ, բոլոր մասերի վերահսկողություն։


6) Վալիդացիաները և տվյալների որակի կանոնները

Պարտադիր ստուգումներ

Սխեմա 'բոլոր required դաշտերը ներկա են։

Տեսակներ 'գումարներ' թվային, ամսաթվերը 'տղաներ։

Ստուգման գումարները/արդյունքները 'տողերի գումարը = արդյունքը ֆայլում (եթե կա)։

Միջակայքները 'բանական պատուհանի ամսաթիվը։ գումարը> 0 (կամ ընդունելի բացասական բառարանում)։

Եզակիությունը '«(provider, provider _ txid, sequence)» չի կրկնվում normalized-ում։

Տոլերանսներ 'թույլատրելի տարբերություններ' «amount/fx/time»։

Արդյունքը ՝ «VALID», «VALID _ WITH _ WARNINGS», «MSALID no DLQ (Reason _ code)»։


7) Idempotenty և deduplication

Ingestion key: "(provider, medesize, www.ksum, statrone _ date)" միակն "է։

Row-level idem: `row_hash = sha256(normalized_row_compact)`; կրկնվող բեռնումը չի ստեղծում նոր գրառումներ։

Webhooks/API: «idempotency _ key» պրովայդեր + ձեր կոդերը («exec _ id»), պահել TTL։

Պրովայդերի դուբլին '«provider _ txid» + «sequence», DLQ _ DUPLICATE-ում։


8) Նվագախումբ և գրաֆիկա

Оркестратор: Airflow/Dagster (DAG: `fetch → decrypt → parse → normalize → validate → publish → match`).

SLA/SLO: «Time-to-Availability (TTA)» -ից մինչև «normalized = READY»։

Retrai: էքսպոնենցիալ backoff + jitter; փորձերի սահմանները. հստակ արձաններ։

Զուգահեռ և մեկուսացում 'ծանր OCR/parsing XLSX - առանձին պուլում/worker CPU/RAM-ի հետ։

DLQ-replay: պարբերական reprocess կանոնների/մապինգների նորարարման ժամանակ։


9) Դիտողությունն ու ալերտները

Մետրիկները

Ingestion Success%, Parse Success տոկոսը աղբյուրներով։

TtA p50/p95, Throughput (տողեր/րոպե)։

Schema Drift Incidents (վերնագրերի/ձևաչափի փոփոխություն)։

DLQ Rate и Aging DLQ p50/p95.
Duplicate Rate по `provider_txid`.

Ալերտա (օրինակ)

`TtA p95 > SLA` → P1.

«DLQ Rate> 2%» մեկ ժամվա ընթացքում P1։

"Schema Drift detected 'no P0 (աղբյուրի վրա մեքենա-խաղալու կանգառը)։

"Duplicate spike 'no P2 (ստուգել պրովայդերը/webhuki)։

Dashbord: World 'wwww.rows _ rows _ norm medrows _ valid _ matched ", DLQ քարտեզը պատճառներով, TTA-quanali։


10) Ավտորեքսիան և մապինգները

Header aliases: բառարանը տարբերակներով (e. g., `Amount`→`amt`, `AMOUNT`→`amt`).

Code maps: պրովայդերի արձանները ձեր տեղեկատու (CAPTUREDSETTLED`).
Softpolicy: «CR/DR», «C/D», փակագծերը միակ «պատկերավոր» մոդելի մեջ են։
Amount rep.ru 'հազարավոր բաժանողների հեռացումը, մինուսի նորմալացումը։
Timezone rep.ru: Տեղական ժամանակ UTC-ն էր, հաշվի առնելով DST-ը։
💡 Ցանկացած ինքնաբերություն տրամաբանվում է և տեղադրվում է «report _ flags» -ում։

11) Կապը «Վճարումների և PBS» -ի հետ։

Պատրաստ normalized շերտը կոդավորված է խաղալու համար (provider _ txid/merchance _ ref/fuzzy), հաշվարկելով diff-տաքսոնոմիան, auto-ամսագրերը և settlant-bank-shika։ Հիմնական դաշտերը ՝ «provider _ txid», «sequence», «kind», «amount _ minor», «value _ date», «account»։


12) Ստանդարտ և աղյուսակի մոդել

Winlanded ֆայլերը

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
);

Նորմալացված տողերը

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) Parsers Prindocod

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 և լոգարանների խմբագրում

Masking/hashing: PAN/email/հեռախոսը 'sha256 + salt ", լոգները' առանց առաջնային արժեքների։

Պահեստավորման քաղաքականությունը '«retention» տեսակի աղբյուրով (AML/ծովում)։

Հասանելի PII-ին միայն դերի միջոցով։ ընթերցանության/օրինագծերի աուդիտ։


15) KPI և նպատակները (պարսինգի/ingestion)

Ingestion Success % ≥ 99. 5 %/օր աղբյուրը։

Parse Success % ≥ 99%, DLQ ≤ 1%.

TTA p95 (normalized) 3515 րոպե (CSV/XML), 3660 րոպե (PDF/OCR)։

Schema Drift Incidents: 0/ամիս առանց ալերտի/ֆիքսի։

Duplicate Rate по `provider_txid` ≤ 0. 05%.


16) Պլեյբուկի

Schema drift 'Auto-matching-ի կանգառը, միացնել «փափուկ» պարսերը ML դետեկտորի հետ, պատրաստել alias-patch, դուրս հանել DLQ-replay-ից։

DLQ-ի աճը 'վերջին ֆայլերի կարգաբերումը, կոդավորման/լոկալի/նշանի ստուգումը, ժամանակավորապես նվազեցնել տոլերանսների կառուցվածքը (դրոշով)։

SFTP-ի ձգձգումները 'API-poling/webhuks-ի անցումը, գետերի ավելացումը, պրովայդերի հետ հաղորդակցումը։

Spikes duplicates: Միացրեք doprower 'row _ hash ", բլոկը մինչև պարզելը։


17) Թեստ-քեյս փաթեթը (UAT/Tramp-պատրաստակամություն)

1. Idempotention: Նույն բեռնման կրկնօրինակը '1' բանաձև _ id ", 0 նոր տողեր։

2. Լոկալի 'ֆայլերը' «,» «/»/կոդերով, ճիշտ գումարներ են։

3. Partial/refund: Մի քանի 'sequence' k մեկ 'provider _ txid "։

4. XML XSD 'անգնահատելի CAMT no' MS ALID '+ DLQ։

5. MT940 տատանումները 'ազգային ընդարձակումները ճիշտ վերլուծություն են։

6. PDJ OCR 'աղմուկով սկանը բացատրում է հիմնական կանոնները։

7. Schema drift: նոր hader medalias-patch և պատմական ֆայլերի վերարտադրումը։

8. Throughput: N ֆայլերի/ժամի բեռի թեստը ցույց է տալիս TTA SLA-ի պահպանումը։

9. PII-խմբագրություն 'լոգներ առանց PAN/e-mail, միայն հեշեր։


18) Ներդրման թուղթ

  • Ռուսական աղբյուրներ ՝ արձանագրություն, կոդավորում, SLA, ձևաչափ, կապ։
  • Անվտանգ ալիքները (SFTP/PGP/API), Vox գաղտնիքների համար։
  • Idempotent ingestion + www.ksum + տարբերակը։
  • Պարսերներ ֆորմատներով, alias բառարանով, som/wwww.ale քաղաքականությամբ։
  • Նորմալացված շերտը և ինդեքսները։
  • Վալիդացիայի կանոնները, տոլերանսները, DLQ և replay։
  • Օրկեստրատորը (DAG), retrai/backoff, ռեսուրսների փամփուշտներ։
  • Դիտարկումը 'մետրեր, դաշբորդներ, ալերտներ։
  • GDPR/PII դիմակավորում, մուտքի աուդիտներ։
  • Թեստ-Քեյսներ և www.schema-drift medills.

Ռեզյումե

Պարսինգի ավտոմատիզացումը ոչ թե «պարկեր գրելն» է, այլ արդյունաբերական ձեռնարկություն կառուցելը 'հուսալի առաքում և կոդավորում, կուռքի դիֆերենցիալ, խիստ նորմալացում, որակի կանոններ և թափանցիկ ալտերտեր։ Այս ֆորումը վերածում է կանխատեսելի աղյուսակների, որոնք երաշխավորված են SLA-ով տվյալների հասանելիության համար, հիմք է, գանձարանի և կառավարման հաշվետվությունների համար։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։