Ανάλυση και αυτοματοποίηση μητρώου
TL· DR
Η αξιόπιστη αυτοματοποίηση «επαλήθευσης» βασίζεται σε τρεις πυλώνες: προσδιοριστική κατάποση (ασφαλής παροχή, ταυτότητα, έλεγχος ακεραιότητας), κανονικοποιημένο επίπεδο δεδομένων (ενιαίο σχήμα, κλειδιά αντιστοίχισης, τυποποιημένες μονάδες χρόνου/νομισμάτων/σημάτων) και αυστηρή πειθαρχία ποιότητας (επικυρώσεις, ανοχές, DLQ, ειδοποιήσεις, αυτόματες διορθώσεις). Στόχος είναι να μετατραπούν τα αρχεία motley/webhooks σε σταθερούς πίνακες συμφιλίωσης, αναφοράς και BI με SLA σχετικά με τη διαθεσιμότητα.
1) Πηγή και μορφότυπο τοπίου
1. 1 Πηγές
PSP/αποκτώντες/συγκεντρωτές: συναλλαγές, σύνολα, προμήθειες, διαφορές.
Τράπεζες: αποσπάσματα MT940, ISO 20022 CAMT. , πληρωμές PAIN. 001/002.
AWS/πορτοφόλια/πληρωμές (OCT/RTP/SEPA): μητρώα πληρωμών, επιστροφές.
Crypto-custom/χρηματιστήρια: συναλλαγές εντός αλυσίδας, εκθέσεις μετατροπής/προμήθειας.
Φόροι/Κρατικές πύλες: CSV/XLSX/PDF, μερικές φορές μέσω ενός scripted browser.
1. 2 Μορφότυποι
CSV/TSV (διαχωριστές μεταβλητών, τοποθεσίες, κωδικοποιήσεις).
XLSX (πολλαπλά φύλλα, συγχωνευμένα κελιά).
XML (ISO 20022 CAMT/PAIN, προσαρμοσμένα σχήματα XSD).
SWIFT MT940/942 (πεδία θέσης).
JSON-API/NDJSON (πρόσθετα φορτία, δρομείς).
PDF (πίνακας - parser; σάρωση - OCR).
ZIP/TAR. GZ (παρτίδες πολλαπλών αρχείων).
2) Αρχιτεκτονική αγωγών κατάποσης
Περιγράμματα:1. Προσγείωση: ασφαλής αποδοχή αρχείων (SFTP/FTPS/WebDAV/API/webhooks) → αμέσως εξετάστε το checksum, κρατήστε τις πρώτες ύλες πάντοτε.
2. Ακατέργαστη: διάταξη κατά ημερομηνίες/παρόχους/γλουτούς, αποθήκευση με εκδόσεις.
3. Κανονικοποιήστε: ανάλυση → ενοποίηση τύπων/μονάδων → κανονικοποιημένους πίνακες.
4. Επικυρωμένη: μετά την επικύρωση (κανόνες ποιότητας) → σημαίες, DLQ.
5. Αντιστοιχίζεται: χαρτογράφηση εσωτερικών γεγονότων/τράπεζα.
6. Εξυπηρετεί/ΔΙ: εμφανίζει υποθέσεις για συμφωνία/χρηματοοικονομικά στοιχεία/συναλλαγές.
Βασικές απαιτήσεις:- Η ιδιαιτερότητα της κατάποσης: '(πάροχος, file_name, file_size, checksum, statement_date)' → ένα μοναδικό κλειδί.
- Reruns/Retrays: η επανάληψη ενός αρχείου δεν δημιουργεί αντίγραφα.
- DLQ (ουρά αναμονής νεκρών γραμμάτων): όλοι οι κανόνες που δεν αναγνωρίζονται/παραβιάζουν - σε μια απομονωμένη ουρά αναμονής.
- Έκδοση: ένα νέο αρχείο για την ίδια ημέρα → μια νέα έκδοση με σύνδεσμο με την προηγούμενη.
3) Ασφάλεια παράδοσης και απόρρητα
Κανάλια: SFTP με περιορισμένα κλειδιά. FTPS - μόνο με αυστηρό TLS· API - OAuth2/short μάρκες TTL.
Κρυπτογράφηση περιεχομένου: PGP/GPG κατά τη λήψη αρχείων. S/MIME για εισερχόμενα ηλεκτρονικά μηνύματα (εάν χρησιμοποιείται).
Έλεγχος ακεραιότητας: SHA-256/512 checksum, σύγκριση με το hash in provident.
Απόρρητα: αποθήκευση σε θησαυροφυλάκιο/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
Προσδιορίστε ρητά τον «οριοθετητή», τον «ποσόστωση», τον «δραπέτη», την «κωδικοποίηση».
5. 2 XLSX
Ανάγνωση με λευκόχρυσο φύλλο. Auto Merge Αναστολή - Flattens συγχωνευμένα κύτταρα.
Μετατροπή τύπων σε τιμές. Excel → 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 Αρχεία/παρτίδες
Αποσυσκευασία με συντήρηση δομής. κάθε αρχείο - ξεχωριστό «αρχείο _ id»· δηλωτικό, έλεγχο όλων των μερών.
6) Επικυρώσεις και κανόνες για την ποιότητα των δεδομένων
Υποχρεωτικοί έλεγχοι:- Σχήμα - Υπάρχουν όλα τα απαιτούμενα πεδία.
- Τύποι: ποσά - αριθμητικά, ημερομηνίες - ανάλυση.
- Checksums/Σύνολα - Άθροισμα γραμμών = Σύνολο αρχείων (εάν υπάρχουν).
- Εύρος: ημερομηνία σε εύλογο παράθυρο. άθροισμα> 0 (ή σύμφωνα με το λεξικό των επιτρεπόμενων αρνητικών).
- Μοναδικότητα: '(πάροχος, provider_txid, ακολουθία)' δεν αναπαράγεται σε κανονικοποιημένη μορφή.
- Επιτρέπονται ανοχές «ποσότητα/fx/χρόνο» αποκλίσεις.
Αποτέλεσμα: 'Έγκυρο', 'Έγκυρο _ ΜΕ _ ΠΡΟΕΙΔΟΠΟΙΗΣΕΙΣ', 'ΆΚΥΡΟ → DLQ (reason_code)'.
7) Ταυτότητα και αφαίρεση
Πλήκτρο κατάποσης: '(πάροχος, file_name, αρχειοθέτηση, checksum, statement_date)' → ένα ενιαίο 'αρχείο _ id'.
Ιδιαιτερότητα επιπέδου γραμμής: 'row _ hash = sha256 (normalized_row_compact)', η επαναφόρτωση δεν δημιουργεί νέα αρχεία.
Webhooks/API: 'idempotency _ key' provider + your tags ('exec _ id'), store TTL.
Αντίγραφα του παρόχου: dedup by 'provider _ txid' + 'sequence', σε περίπτωση ασυμφωνίας - in DLQ_DUPLICATE.
8) Ενορχήστρωση και χρονοδιαγράμματα
: Airflow/Dagster (DAG: 'fetch decrypt parse normalize validate publish').
SLA/SLO: 'Time-to-Availability (TtA)' από την εμφάνιση αρχείων στο 'normalized = READY'.
Retrai: εκθετική backoff + jitter; όρια απόπειρας· σαφείς καταστάσεις.
Συγχώνευση και απομόνωση: βαριά OCR/ανάλυση XLSX - σε ξεχωριστή δεξαμενή/εργαζόμενο με όριο CPU/RAM.
Επανάληψη DLQ: περιοδική επανεπεξεργασία κατά την επικαιροποίηση κανόνων/χαρτογραφήσεων.
9) Παρατηρησιμότητα και προειδοποιήσεις
Μετρήσεις:- Επιτυχία κατάποσης%, επιτυχία ανάλυσης% κατά πηγή.
- TtA p50/p95, Throughput (γραμμές/min).
- Ρυθμός DLQ и γήρανση DLQ p50/p95.
- Περιστατικά παρασυρόμενων σχημάτων.
- Διπλή τιμή по 'πάροχος _ txid'.
- 'TtA p95> SLA' → P1.
- Συντελεστής DLQ> 2% ανά ώρα για → πάροχο P1.
- Ανιχνεύθηκε 'Schema Drift' → P0 (διακοπή αυτόματης αντιστοίχισης ανά πηγή).
- 'Διπλή ακίδα' → P2 (check provider/webhooks).
Dashbord: ένα χωνί 'αρχεία , η κάρτα DLQ για τους λόγους, TtA-ποσοτικά.
10) Αυτόματες διορθώσεις και χαρτογραφήσεις
Ψευδώνυμα κεφαλίδας: λεξικό με εκδόσεις (π.χ., 'Amount'→'amt', 'AMOUNT'→'amt').
11) Σύνδεσμος με τη «Συμφωνία πληρωμών και εκθέσεων των ΠΥΠ»
Έτοιμο κανονικοποιημένο στρώμα - είσοδος για αντιστοίχιση (provider_txid/merchant_ref/fuzzy), υπολογισμός diff-ταξινομικής, αυτόματων αρχείων καταγραφής και settlement↔bank -titching. Βασικά πεδία: 'provider _ txid', 'sequence', 'είδος', 'ποσό _ 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) Ψευδοκώδικας Parser
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 και καταγραφής
Κάλυψη/hashing: PAN/email/phone → 'sha256 + salt', logs - χωρίς πρωτογενείς τιμές.
Πολιτική διατήρησης: «διατήρηση» ανά τύπο πηγής (AML/λογιστική).
Πρόσβαση στο PII - μόνο κατά ρόλο έλεγχος των αναγνώσεων/εξαγωγών.
15) ΒΔΕ και στόχοι (για ανάλυση/κατάποση)
Επιτυχία κατάποσης% ≥ 99. 5 %/ημέρα ανά πηγή.
Ανάλυση επιτυχίας% ≥ 99%, DLQ ≤ 1%.
TtA p95 (fayl→normalized) ≤ 15 λεπτά (CSV/XML), ≤ 60 λεπτά (PDF/OCR).
Περιστατικά παρασυρόμενου σχήματος: 0/μήνας χωρίς συναγερμό/διόρθωση.
Διπλή τιμή по 'πάροχος _ txid' ≤ 0. 05%.
16) Βιβλία παιχνιδιών για περιστατικά
Σχηματική μετατόπιση: σταματήστε την αυτόματη αντιστοίχιση, ενεργοποιήστε το «μαλακό» parser με την ανίχνευση της ML των ηχείων, ετοιμάστε ένα ψευδώνυμο patch, εκτελέστε επανάληψη DLQ.
Κύμα DLQ: αποσφαλμάτωση των τελευταίων αρχείων, έλεγχος της κωδικοποίησης/τοποθεσίας/πινακίδας, προσωρινή μείωση της σοβαρότητας των ανοχών (με μια σημαία).
Καθυστερήσεις SFTP: μετάβαση σε δημοσκοπήσεις/webhooks API, αύξηση των επαναλήψεων, επικοινωνία με τον πάροχο.
Αντίγραφα καρφιών: ενεργοποιήστε πρόσθετη επαλήθευση 'row _ hash', μπλοκ επαναλήψεων μέχρι να αποσαφηνιστεί.
17) Δέσμη περιπτώσεων δοκιμής (UAT/Prod-Ready)
1. Ταυτότητα: Επαναλάβετε το ίδιο φορτίο → 1 'αρχείο _ id', 0 νέες γραμμές.
2. Τοπικοί χώροι: αρχεία με ', '/'. '/χώροι → ορθά ποσά.
3. Μερική/επιστροφή: πολλαπλή «ακολουθία» σε έναν «πάροχο _ txid».
4. XML XSD: άκυρο CAMT → 'INVALID' + DLQ.
5. παραλλαγές: εθνικές επεκτάσεις ορθή ανάλυση.
6. σάρωση με θόρυβο εξαγωγή και εφαρμογή βασικών κανόνων.
7. Μετατόπιση σχήματος: νέα κεφαλίδα → ψευδώνυμο patch και επανεπεξεργασία ιστορικών αρχείων.
8. Δοκιμή φόρτισης των αρχείων N/ώρα → συμμόρφωση με το TtA SLA.
9. Έκδοση PII: αρχεία καταγραφής χωρίς PAN/e-mail, μόνο hashes.
18) Κατάλογος ελέγχου εφαρμογής
- Μητρώο Πηγών: Πρωτόκολλο, Πρόγραμμα, SLA, Μορφή, Επικοινωνία.
- Ασφαλή κανάλια (SFTP/PGP/API), θησαυροφυλάκιο για μυστικά.
- Idempotent κατάποση + checksum + εκδόσεις.
- Παριστάμενοι ανά μορφή, ψευδώνυμο λεξικό, υπογραφή/τοπική πολιτική.
- Κανονικοποιημένο στρώμα και βασικοί δείκτες.
- Κανόνες επικύρωσης, ανοχές, DLQ και αναπαραγωγή.
- Orchestrator (DAG), Retrai/Backoff, Resource Pools.
- Παρατηρησιμότητα: μετρήσεις, ταμπλό, ειδοποιήσεις.
- Συγκάλυψη GDPR/PII, έλεγχοι πρόσβασης.
- Κιβώτια δοκιμής και τακτικές ασκήσεις παρασυρόμενων σχημάτων.
Επανάληψη σύνοψης
Η αυτοματοποίηση της ανάλυσης δεν είναι να «γράψεις ένα parser», αλλά να κατασκευάσεις ένα βιομηχανικό κύκλωμα: αξιόπιστη παράδοση και κρυπτογράφηση, ευφυείς αγωγούς, αυστηρή ομαλοποίηση, κανόνες ποιότητας και διαφανείς ειδοποιήσεις. Ένα τέτοιο σχέδιο μετατρέπει κάθε μητρώο σε προβλέψιμους πίνακες με εγγυημένη SLA για τη διαθεσιμότητα των δεδομένων - τη βάση για τη συμφωνία, την υποβολή εκθέσεων από το δημόσιο ταμείο και τη διοίκηση.