تجزیه رجیستری و اتوماسیون
TL ؛ دکتر متخصص
اتوماسیون «تأیید» قابل اعتماد بر اساس سه ستون است: مصرف قطعی (تحویل ایمن، idemotence، کنترل یکپارچگی)، لایه داده های نرمال (طرح تک، کلید های تطبیق، واحد استاندارد زمان/ارز/علائم) و نظم دقیق کیفیت (اعتبار سنجی، تحمل، DLQ، هشدار، اصلاحات خودکار). هدف این است که فایل ها/وب سایت های رنگارنگ را به جداول پایدار برای آشتی، گزارش دهی و BI با SLA در دسترس تبدیل کنید.
1) چشم انداز منبع و فرمت
1. 1 منابع
PSP/acquirers/aggregators: معاملات، مجموعه ها، کمیسیون ها، اختلافات.
بانک ها: عصاره MT940، ISO 20022 CAMT. 052/053/054، پرداخت درد. 001/002.
AWS/کیف پول/پرداخت (OCT/RTP/SEPA): پرداخت ثبت، بازده.
Crypto-custom/exchanges: معاملات زنجیره ای، گزارش های تبدیل/کمیسیون.
مالیات/پورتال دولت: CSV/XLSX/PDF، گاهی اوقات از طریق یک مرورگر اسکریپت.
1. 2 فرمت ها
PDF (جدولی - تجزیه کننده ؛ اسکن - OCR)
CSV/TSV (جداکننده متغیر، محل، رمزگذاری).
XLSX (چند ورق، سلول های ادغام شده).
XML (ISO 20022 CAMT/PAIN، طرح های سفارشی XSD).
MT940/942 SWIFT (زمینه های موقعیت).
JSON-API/NDJSON (بارگذاری افزایشی، نمایشگرها).
زیپ/تار GZ (دسته چند فایل).
2) معماری خط لوله هضم
خطوط:1. فرود: پذیرش فایل امن (SFTP/FTPS/WebDAV/API/webhooks) → بلافاصله در نظر بگیرید checksum، نگه داشتن مواد خام همواره.
2. خام: طرح توسط تاریخ/ارائه دهندگان/butches، ذخیره سازی با نسخه.
3. Normalize: تجزیه → unifying types/units → جداول نرمال شده.
4. معتبر: پس از اعتبار سنجی (قوانین کیفیت) → پرچم, DLQ.
5. همسان: نقشه برداری به رویدادهای داخلی/بانک.
6. Serving/BI: موارد نمایش برای آشتی/امور مالی/معاملات.
الزامات کلیدی:- ایده آل بودن مصرف: (ارائه دهنده، file_name، file_size، checksum، statement_date) → یک کلید منحصر به فرد.
- Reruns/Retrays: بازنویسی یک فایل تکراری ایجاد نمی کند.
- DLQ (صف نامه مرده): همه قوانین ناشناخته/نقض - به یک صف جدا شده.
- Versioning: یک فایل جدید برای همان روز → یک نسخه جدید با یک لینک به قبلی.
3) امنیت تحویل و اسرار
کانال ها: SFTP با کلید های محدود ؛ FTPS - فقط با TLS سخت ؛ API - OAuth2/short نشانه های TTL.
رمزگذاری محتوا: PGP/GPG هنگام دانلود فایل ها ؛ S/مایم برای صندوق ورودی ایمیل (در صورت استفاده).
بررسی یکپارچگی: SHA-256/512 checksum، مقایسه با هش در مانیفست.
اسرار: ذخیره در Vault/KMS، چرخش، ممنوع در فایل های پیکربندی/سیاهههای مربوط.
دسترسی: RBAC + اصل «حداقل امتیازات»، حسابهای خدمات جداگانه.
4) نرمال سازی و طرح داده ها
4. 1 قوانین جهانی
زمان: همیشه UTC در ISO-8601 ؛ برای تاریخ حل و فصل، «تاریخ» بدون TZ.
مقادیر: 'DECIMAL (p, s)' در واحدهای جزئی + مقیاس فردی ؛ ثبت نام: دریافت/هزینه به شدت با توجه به فرهنگ لغت.
ارزها: ISO-4217، جدول نرخ ثابت با 'fx _ src'.
Locali: ممنوعیت تشخیص خودکار - تنظیم صریح جداکننده/نقطه اعشار/هزارم.
رمزگذاری: ورودی 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
صریحاً «مشخص کننده»، «quotechar»، «escapechar»، «رمزگذاری» را مشخص کنید.
5. 2 XLSX
خواندن توسط لیست سفید ورق ؛ مهار خودکار ادغام - سلول های ادغام شده Flattens.
تبدیل فرمولها به مقادیر ؛ اکسل → تاریخ UTC با TZ صریح.
5. 3 XML (ISO 20022 CAMT/PAIN)
اعتبار سنجی توسط XSD ؛ XPath نگاشت هویت ('<Ntry>', '<TxDtls>', '<Amt>', '<CdtDbtInd>').
عادی سازی اعتبار/بدهی → نشانه ؛ پشتیبانی از چندین '<Chrgs>'، '<RmtInf>'.
5. 4 MT940
تجزیه برچسبها ': 61:', ': 86:'; حمایت از توسعه ملی ؛ زمینه های موقعیت → برش قوانین.
ادغام چندین ': 61:' به یک دسته.
5. 5 JSON/NDJSON/API
5. 6 PDF/OCR
اول، تلاش در تجزیه جدول (آشکارساز جدول)، تنها پس از آن OCR (Tesseract) با شخصیت های لیست سفید.
پس از اعتبار: مقادیر، مجموع کنترل، آشتی از تعداد خطوط.
5. 7 آرشیو/دسته
باز کردن با حفظ ساختار ؛ هر پرونده - یک 'file _ id' جداگانه ؛ آشکار، کنترل تمام قطعات.
6) اعتبار سنجی و قوانین کیفیت داده
چک های اجباری:- Schema - تمام فیلدهای مورد نیاز وجود دارد.
- انواع: مقادیر - عددی، تاریخ - تجزیه.
- Checksums/Totals - مجموع ردیف = مجموع در فایل (در صورت وجود).
- محدوده: تاریخ در یک پنجره معقول ؛ sum> 0 (یا با توجه به فرهنگ لغت منفی مجاز).
- منحصر به فرد: (ارائه دهنده، provider_txid، دنباله) "در نرمال سازی تکرار نمی شود.
- تحمل اختلافات «مقدار/fx/زمان» مجاز است.
نتیجه: 'VALID', 'VALID _ WITH _ WARNING', 'INVALID → DLQ (reason_code)'.
7) هویت و تقسیم بندی
کلید خوردن: (ارائه دهنده، file_name، اندازه فایل، checksum، statement_date) → یک «file _ id» تک.
idem سطح سطر: 'row _ hash = sha256 (normalized_row_compact)'; بارگذاری مجدد سوابق جدیدی ایجاد نمی کند.
Webhooks/API: «idempotency _ key» ارائه دهنده + برچسب های خود را («exec _ id»)، فروشگاه TTL.
تکراری از ارائه دهنده: dedup توسط 'provider _ txid' + 'دنباله'، در صورت اختلاف - در DLQ_DUPLICATE.
8) ارکستراسیون و برنامه ها
Оркестратор: جریان هوا/Dagster (DAG: 'fetch → رمزگشایی → تجزیه → normalize → validate → publish → match').
SLA/SLO: 'زمان در دسترس بودن (TtA)' از وقوع فایل به 'normalized = READY'.
Retrai: عقب نشینی نمایشی + jitter ؛ محدودیت تلاش ؛ وضعیت های واضح
همزمانی و جداسازی: OCR سنگین/تجزیه XLSX - در یک استخر/کارگر جداگانه با محدودیت CPU/RAM.
DLQ-replay: پردازش دوره ای هنگام به روز رسانی قوانین/نقشه ها.
9) قابلیت مشاهده و هشدار
معیارها:- هضم موفقیت٪، تجزیه موفقیت٪ توسط منبع.
- TtA p50/p95، توان (خطوط/دقیقه).
- نرخ DLQ и پیری DLQ p50/p95.
- حوادث رانش طرح.
- نرخ تکراری по 'provider _ txid'.
- 'TtA p95> SLA' → P1.
- 'نرخ DLQ> 2٪' در هر ساعت برای → ارائه دهنده P1.
- 'Schema Drift detected' → P0 (توقف تطبیق خودکار توسط منبع).
- «اسپایک تکراری» → P2 (ارائه دهنده چک/webhooks).
Dashbord: a funnel 'files → → → → کارت DLQ به دلایل TtA-quantles.
10) تصحیح خودکار و نقشه برداری
نام مستعار عنوان: فرهنگ لغت با نسخه (به عنوان مثال، «مقدار» → «amt»، «مقدار» → «amt»).
11) لینک به «آشتی از پرداخت PSP و گزارش»
آماده لایه نرمال - ورودی برای تطبیق (provider_txid/merchant_ref/fuzzy), محاسبه تفاوت طبقه بندی, خودکار سیاهههای مربوط و settlement↔bank -stitching. فیلدهای کلیدی: «provider _ txid», «sequence», «kind», «amount _ minor», «value _ date», «account».
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
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 (برگشت):
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/phone → 'sha256 + salt', logs - بدون مقادیر اولیه.
سیاست نگهداری: «نگهداری» بر اساس نوع منبع (AML/حسابداری).
دسترسی PII - فقط با نقش ؛ حسابرسی از خواندن/صادرات.
15) KPI ها و اهداف (برای تجزیه/مصرف)
درصد موفقیت ≥ 99 5 درصد در روز برای هر منبع
تجزیه موفقیت٪ ≥ 99٪، DLQ ≤ 1٪.
TtA p95 (fayl → normalized) ≤ 15 دقیقه (CSV/XML)، ≤ 60 دقیقه (PDF/OCR).
حوادث رانش طرح: 0/ماه بدون هشدار/رفع.
نرخ تکراری по «provider _ txid» ≤ 0. 05%.
16) کتاب های حادثه
رانش طرح: توقف خودکار تطبیق، روشن کردن «نرم» تجزیه کننده با ML-تشخیص سخنرانان، آماده پچ نام مستعار، اجرای DLQ-پخش.
افزایش DLQ: اشکال زدایی آخرین فایل ها، چک کردن رمزگذاری/محلی/علامت، به طور موقت کاهش شدت تحمل (با پرچم).
تاخیر SFTP: تعویض به API polling/webhooks، افزایش retraces، ارتباط با ارائه دهنده.
Spikes تکراری: تأیید اضافی 'row _ hash' را فعال کنید، بلوک تکرار تا زمانی که روشن شود.
17) بسته بندی مورد آزمایش (UAT/Prod-Ready)
1. Idempotency: همان بار → 1 'file _ id'، 0 خط جدید را تکرار کنید.
2. Locales: فایلهایی با ', '/'. '/spaces = مبالغ صحیح.
3. جزئی/بازپرداخت: چند 'دنباله' به یک 'ارائه دهنده _ txid'.
4. XML XSD: نامعتبر است CAMT → 'نامعتبر' + DLQ.
5. تغییرات MT940: گسترش ملی → تجزیه و تحلیل صحیح.
6. PDF → OCR: اسکن با سر و صدا → استخراج و عبور از قوانین اساسی.
7. Schema drift: یک header → alias patch جدید و پردازش مجدد فایلهای تاریخی.
8. توانایی: تست بار N فایل/ساعت → انطباق با TtA SLA.
9. نسخه PII: سیاهههای مربوط بدون PAN/ایمیل، فقط هش.
18) چک لیست پیاده سازی
- منبع رجیستری: پروتکل، برنامه، SLA، فرمت، تماس.
- کانال های امن (SFTP/PGP/API)، Vault برای اسرار.
- خوردن idempotent + چک سام + نسخه.
- تجزیه کنندگان با فرمت، فرهنگ لغت نام مستعار، سیاست های ثبت نام/محلی.
- لایه نرمال و شاخص های کلیدی.
- قوانین اعتبار سنجی، تحمل، DLQ و پخش.
- ارکستر (DAG)، Retrai/Backoff، استخر منابع.
- قابلیت مشاهده: معیارها، داشبورد، هشدارها.
- GDPR/PII ماسک، ممیزی دسترسی.
- موارد آزمون و مته منظم طرح رانش.
خلاصه رزومه
اتوماسیون تجزیه به معنای «نوشتن یک تجزیه کننده» نیست، بلکه ساخت یک مدار صنعتی است: تحویل و رمزگذاری قابل اعتماد، خطوط لوله بی نظیر، عادی سازی دقیق، قوانین کیفیت و هشدارهای شفاف. چنین طرحی هر ثبات را به جداول قابل پیش بینی با SLA تضمین شده در دسترس بودن داده ها تبدیل می کند - پایه ای برای آشتی، خزانه داری و گزارش مدیریت.