रजिस्ट्री पार्सिंग और स्वचालन
टीएल; डीआर
विश्वसनीय "सत्यापन" स्वचालन तीन स्तंभों पर आधारित है: नियतात्मक अंतर्ग्रहण (सुरक्षित वितरण, निष्ठा, अखंडता नियंत्रण), सामान्यीकृत डेटा परत (एकल योजना, मिलान कुंजी, समय/मुद्राओं/संकेत) और सख्र गुणता अनुशासन। लक्ष्य उपलब्धता पर SLA के साथ सामंजस्य, रिपोर्टिंग और BI के लिए मोटली फ़ाइलों/वेबहूक को स्थिर तालिकाओं में बदलना है।
1) स्रोत और प्रारूप परिदृश्य
1. 1 स्रोत
PSP/अधिग्राहक/एग्रीगेटर: लेनदेन, सेट, कमीशन, विवाद।
बैंक: अर्क -, आईएसओ 20022 CAMT। 052/053/054, दर्द भुगतान। 001/002.
AWS/वॉलेट/पेआउट (OCT/RTP/SEPA): भुगतान रजिस्टर, रिटर्न।
क्रिप्टो-कस्टम/एक्सचेंज: ऑन-चेन लेनदेन, रूपांतरण/कमीशन रिपोर्ट।
कर/राज्य पोर्टल: CSV/XLSX/PDF, कभी-कभी एक स्क्रिप्टेड ब्राउज़र के माध्यम से।
1. 2 प्रारूप
CSV/TSV (चर विभाजक, स्थान, एन्कोडिंग)।
XLSX (मल्टी-शीट, विलय की गई कोशिकाएं)।
XML (ISO 20022 CAMT/PAIN, XSD कस्टम स्कीमा)।
स्विफ्ट MT940/942 (स्थिति क्षेत्र)।
JSON-API/NDJSON (वृद्धिशील अपलोड, कर्सर)।
पीडीएफ (टैबुलर - पार्सर; स्कैन - OCR)।
ZIP/TAR। GZ (मल्टी-फ़ाइल बैच)।
2) अंतर्ग्रहण पाइपलाइन वास्तुकला
कंटूर्स:1. लैंडिंग: सुरक्षित फ़ाइल स्वीकृति (एसएफटीपी/एफटीपीएस/वेबडीएवी/एपीआई/वेबहूक) - तुरंत चेकसम पर विचार करें, कच्चे माल को हमेशा रखें।
2. रॉ: तिथियों/प्रदाताओं/कसाइयों द्वारा लेआउट, संस्करणों के साथ भंडारण।
3. सामान्यीकरण: parsing एकीकृत प्रकार/इकाइयाँ - सामान्यीकृत तालिकाएं।
4. मान्य: पोस्ट-सत्यापन (गुणवत्ता नियम) → झंडे, डीएलक्यू।
5. मिलान: आंतरिक घटनाओं/बैंक की मैपिंग।
6. सेवारत/द्वितीय: सुलह/वित्तीय/लेनदेन के लिए मामले प्रदर्शित करें।
मुख्य आवश्यकताएं:- अंतर्ग्रहण की पहचान: '(प्रदाता, , , चेकसम, )' - एक अद्वितीय कुंजी।
- Reruns/Retrays: किसी फ़ाइल को फिर से जोड़ ना डुप्लिकेट नहीं बनाता है.
- DLQ (मृत-अक्षर कतार): सभी अपरिचित/उल्लंघन नियमों - एक अलग कतार के लिए।
- वर्शनिंग: उसी दिन के लिए एक नई फ़ाइल - पिछले एक लिंक के साथ एक नया संस्करण।
3) प्रसव और रहस्यों की सुरक्षा
चैनल: सीमित कुंजी के साथ SFTP; एफटीपीएस - केवल सख्त टीएलएस के साथ; API - OAuth2/short TTL टोकन।
सामग्री एनक्रिप्शन: फाइल डाउनलोड करते समय PGP/GPG; ई-मेल इनबॉक्स के लिए एस/माइम (यदि उपयोग किया जाता है)।
अखंडता की जाँच: SHA-256/512 चेकसम, प्रकट में हैश के साथ तुलना।
रहस्य: तिजोरी/केएमएस में संग्रहीत, घुमाव, कॉन्फ़िग फ़ाइलों/लॉग में निषिद्ध.
एक्सेस: RBAC + "कम से कम विशेषाधिकार" का सिद्धांत, अलग सेवा खाते।
4) सामान्यीकरण और डेटा योजना
4. 1 सार्वभौमिक नियम
समय: हमेशा UTC में; निपटान तिथियों के लिए, TZ के बिना 'DATE'।
मात्रा: मामूली इकाइयों में 'DECIMAL (p, s)' + व्यक्तिगत 'स्केल'; हस्ताक्षर: रसीद/व्यय शब्दकोश के अनुसार सख्ती से।
मुद्राएँ: ISO-4217, 'fx _ src' के साथ निश्चित दर तालिका।
लोकाली: ऑटोडेटेक्ट का निषेध - विभाजक/दशमलव बिंदु/हजारवें का स्पष्ट सेटिंग।
एन्कोडिंग्स: 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 सीएसवी/टीएसवी
स्पष्ट रूप से 'सीमांकक', 'उद्धरण', 'पलायन', 'एन्कोडिंग' निर्दिष्ट करें।
5. 2 XLSX
शीट व्हाइटलिस्ट द्वारा पढ़ ना; स्वतः मर्ज अवरोधक - फ्लैटेंस विलय कोशिकाओं।
सूत्रों का मूल्यों में रूपांतरण; स्पष्ट TZ के साथ Excel → UTC की तारीखें।
5. 3 एक्सएमएल (आईएसओ 20022 कैमट/दर्द)
XSD द्वारा सत्यापन; XPath पहचान मानचित्रण ('<Ntry>', '<TxDtls>', '<Amt>', '<CdtDbtInd>').
क्रेडिट/डेबिट सामान्यीकरण → साइन; कई '
5. 4 MT940
पार्सिंग टैग ': 61:', ': 86:'; राष्ट्रीय विस्तार के लिए समर् स्थिति क्षेत्र - स्लाइसिंग नियम।
एक बैच में कई ': 61:' का समेकन।
5. 5 JSON/NDJSON/API
5. 6 पीडीएफ/ओसीआर
सबसे पहले, टेबल पार्सिंग (टेबल डिटेक्टर) पर एक प्रयास, केवल व्हाइटलिस्ट वर्णों के साथ ओसीआर (टेसरैक्ट)।
सत्यापन के बाद: मात्रा, नियंत्रण योग, लाइनों की संख्या का सामंजस्य।
5. 7 अभिलेखागार/बैच
संरचना संरक्षण के साथ अनपैकिंग; प्रत्येक फ़ाइल - एक अलग 'फ़ाइल _ आईडी'; प्रकट, सभी भागों का नियंत्रण।
6) डेटा गुणवत्ता सत्यापन और नियम
अनिवार्य जाँच:- स्कीमा - सभी आवश्यक क्षेत्र मौजूद हैं।
- प्रकार: मात्रा - संख्यात्मक, तिथि - पार्स।
- चेकसम/टोटल - पंक्तियों का योग = फ़ाइल में कुल (यदि कोई हो)।
- रेंज: एक उचित विंडो में तारीख; योग> 0 (या अनुमत नकारात्मक के शब्दकोश के अनुसार)।
- विशिष्टता: '(प्रदाता, provider_txid, अनुक्रम)' को सामान्यीकृत में डुप्लिकेट नहीं किया गया है।
- सहिष्णुता 'राशि/fx/समय' विसंगतियों की अनुमति है।
परिणाम: 'VALID', 'VALID _ WITH _ WARNING', 'INVALID → DLQ (reason_code)'.
7) पहचान और कमी
अंतर्ग्रहण कुंजी: '(प्रदाता, file_name, फ़ाइलसाइज़, चेकसम, statement_date)' → a एकल 'फ़ाइल _ id'।
पंक्ति-स्तर की पहचान: 'row _ hash = sha256 (normalized_row_compact)'; पुनः लोड करने से नया रिकॉर्ड नहीं बनता है।
Webhooks/API: 'idempotency _ key' प्रदाता + आपके टैग ('exec _ id'), TTL को संग्रहीत करें।
प्रदाता के डुप्लिकेट: 'प्रदाता _ txid' + 'अनुक्रम' द्वारा dedup, विसंगति के मामले में - DLQ_DUPLICATE में।
8) ऑर्केस्ट्रेशन और शेड्यूल
Оркестратор: एयरफ्लो/डागस्टर (DAG: 'प्राप्त करें → डिक्रिप्ट → पार्स → सामान्य → मान्य → प्रकाशित → मैच')।
SLA/SLO: 'समय से उपलब्धता (TtA)' फ़ाइल घटना से 'सामान्यीकृत = READ' तक।
रेट्राई: घातीय बैकऑफ + जिटर; प्रयास सीमा; स्पष्ट स्थिति।
संगोष्ठी और अलगाव: भारी OCR/पार्सिंग XLSX - एक अलग पूल/कार्यकर्ता में CPU/RAM सीमा के साथ।
डीएलक्यू-रीप्ले: नियम/मैपिंग को अद्यतन करते समय आवधिक पुनर्प्रजनन।
9) अवलोकन और अलर्ट
मेट्रिक्स:- अंतर्ग्रहण सफलता%, स्रोत द्वारा पार्स सफलता%।
- TtA p50/p95, थ्रूपुट (लाइनें/मिनट)।
- DLQ दर и Aging DLQ p50/p95।
- स्कीमा बहाव की घटनाएं।
- डुप्लिकेट दर по 'प्रदाता _ txid'।
- 'TtA p95> SLA' → P1।
- → प्रदाता P1 के लिए 'DLQ दर> 2%' प्रति घंटे।
- 'स्कीमा बहाव का पता चला' → P0 (स्रोत द्वारा ऑटो-मिलान बंद करें)।
- 'डुप्लिकेट स्पाइक' → P2 (चेक प्रदाता/वेबहूक)।
डैशबोर्ड: एक फ़नल 'फ़ाइलें → rows_raw → rows_norm → rows_valid → rows_matched', कारणों के लिए DLQ कार्ड, TtA-मात्रा।
10) ऑटो सुधार और मैपिंग
शीर्षिका उपनाम: संस्करण के साथ शब्दकोश (उदाहरण के लिए, 'Amount'→'amt', 'AMOUNT'→'amt')।
11) "पीएसपी भुगतान और रिपोर्ट के सुलह" का लिंक
मिलान के लिए तैयार सामान्यीकृत परत - इनपुट (provider_txid/merchant_ref/fuzzy), डिफ़-टैक्सोनॉमी, ऑटो-लॉग और settlement↔bank -stitching की गणना। मुख्य क्षेत्र: 'प्रदाता _ txid', 'अनुक्रम', 'दयालु', 'राशि _ माइनर', 'मान _ तिथि', 'खाता'.
12) भंडारण मॉडल और तालिकाएं
लैंडेड फ़ाइलों की तालिका: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) पार्सर स्यूडोकोड
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
एक्सएमएल सीएएमटी:
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
ओसीआर पीडीएफ (फॉलबैक):
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) जीडीपीआर/पीआईआई और लॉग एडिटिंग
मास्किंग/हैशिंग: पैन/ईमेल/फोन → 'sha256 + नमक', लॉग - प्राथमिक मूल्यों के बिना।
प्रतिधारण नीति: स्रोत प्रकार (एएमएल/लेखांकन) द्वारा 'प्रतिधारण'।
पीआईआई केवल भूमिका से पहुँचता है; पढ़ ने/निर्यात का लेखा परीक्षा।
15) केपीआई और लक्ष्य (पार्सिंग/अंतर्ग्रहण के लिए)
अंतर्ग्रहण सफलता% ≥ 99। 5 %/दिन प्रति स्रोत।
पार्स सक्सेस% ≥ 99%, DLQ ≤ 1%।
TtA p95 (fayl→normalized) ≤ 15 मिनट (CSV/XML), ≤ 60 मिनट (PDF/OCR)।
स्कीमा बहाव घटनाएं: 0/महीने बिना अलर्ट/फिक्स के।
डुप्लिकेट दर по 'प्रदाता _ txid' ≤ 0। 05%.
16) हादसा प्लेबुक
स्कीमा बहाव: ऑटो-मिलान बंद करें, वक्ताओं के एमएल-पता लगाने के साथ "सॉफ्ट" पार्सर को चालू करें, एक उर्फ पैच तैयार करें, डीएलक्यू-रीप्ले चलाएं।
DLQ उछाल: नवीनतम फ़ाइलों को डिबगिंग करना, एन्कोडिंग/लोकेल/साइन की जाँच करना, अस्थायी रूप से सहिष्णुता की गंभीरता को कम करना (एक ध्वज के साथ)।
SFTP देरी: एपीआई मतदान/वेबहूक पर स्विच करना, प्रदाता के साथ वापसी, संचार बढ़ाना।
स्पाइक्स डुप्लिकेट: अतिरिक्त सत्यापन 'रो _ हैश' सक्षम करें, स्पष्ट होने तक दोहराव का ब्लॉक।
17) टेस्ट केस पैकेज (यूएटी/प्रोड-रेडी)
1. पहचान: समान लोड → 1 'फ़ाइल _ id', 0 नई पंक्तियाँ दोहराएँ।
2. लोकेल्स: ', '/' के साथ फ़ाइलें। '/रिक्त स्थान - सही रकम।
3. आंशिक/वापसी: एक 'प्रदाता _ txid' के लिए कई 'अनुक्रम'।
4. XML XSD: अवैध CAMT → 'अवैध' + DLQ.
5. विविधताएं: राष्ट्रीय विस्तार - सही विश्लेषण।
6. : शोर के साथ स्कैनिंग - बुनियादी नियमों को निकालना और पारित करना।
7. स्कीमा बहाव: एक नया हेडर - उर्फ पैच और ऐतिहासिक फाइलों का पुनर्संसाधन।
8. थ्रूपुट: टीटीए एसएलए के अनुपालन के लिए एन फ़ाइलों/घंटे का परीक्षण लोड करें।
9. PII संस्करण: पैन/ई-मेल के बिना लॉग, केवल हैश।
18) कार्यान्वयन चेकलिस्ट
- स्रोत रजिस्ट्री: प्रोटोकॉल, अनुसूची, एसएलए, प्रारूप, संपर्क।
- सुरक्षित चैनल (SFTP/PGP/API), रहस्यों के लिए तिजोरी।
- पहचान अंतर्ग्रहण + चेकसम + संस्करण।
- प्रारूप, उर्फ शब्दकोश, साइन/लोकेल नीतियों द्वारा पार्सर्स।
- सामान्यीकृत परत और प्रमुख सूचकांक।
- सत्यापन नियम, सहिष्णुता, डीएलक्यू और रीप्ले।
- ऑर्केस्ट्रेटर (डीएजी), रेट्राई/बैकऑफ, संसाधन पूल।
- अवलोकन: मैट्रिक्स, डैशबोर्ड, अलर्ट।
- GDPR/PII मास्किंग, एक्सेस ऑडिट।
- परीक्षण मामले और नियमित स्कीमा-बहाव अभ्यास।
सारांश फिर से शुरू करें
पार्सिंग का स्वचालन "एक पार्सर लिखना" नहीं है, बल्कि एक औद्योगिक सर्किट का निर्माण करना है: विश्वसनीय वितरण और एन्क्रिप्शन, पहचान पाइपलाइनें, सख्त सामान्यीकरण, गुणवत्ता नियम और पारदर्शी अलर्ट। इस तरह की रूपरेखा किसी भी रजिस्टर को डेटा उपलब्धता पर गारंटीकृत एसएलए के साथ पूर्वानुमानित तालिकाओं में बदल देती है - सामंजस्य, राजकोष और प्रबंधन रिपोर्टिंग की नींव।