Pain001

இந்தக் குறிப்பு pain001 v0.0.57-ன் கட்டளை-வரி இடைமுகம், Python API, REST நுண்சேவை, சரிபார்ப்புத் தொடர்வரிசை ஆகியவற்றை ஆவணப்படுத்துகிறது. இங்கு பட்டியலிடப்பட்டுள்ள ஒவ்வொரு ஃபிளாக், எண்ட்பாயிண்ட், நடத்தையும் வெளியிடப்பட்ட நிரலிலிருந்து எடுக்கப்பட்டவை, எதிர்பார்ப்புகளிலிருந்து அல்ல.

Pain001 11 ISO 20022 செய்தி வரையறைகளை ஆதரிக்கிறது: pain.001.001.03 முதல் pain.001.001.12 வரை (Customer Credit Transfer Initiation, பத்து பதிப்புகள்) மற்றும் pain.008.001.02 (Customer Direct Debit Initiation).


1. கட்டளை-வரி இடைமுகம்#

pain001 இயங்குகோப்பு தனது செயல்பாடுகளைத் துணைக்கட்டளைகளாகத் தொகுக்கிறது. உருவாக்க ஃபிளாக்குகளை மட்டும் கொடுத்து இயக்கினால் generate தானாகவே செயல்படுத்தப்படுகிறது; எனவே தற்போதைய தன்னியக்கமுறைகள் தொடர்ந்து இயங்கும்.

துணைக்கட்டளை நோக்கம்
generate தரவுக் கோப்பை ஸ்கீமா-சரிபார்க்கப்பட்ட ISO 20022 XML ஆக மாற்றுகிறது (இயல்புநிலைக் கட்டளை).
validate XML எழுதாமலேயே உள்ளீட்டுத் தரவைச் சரிபார்க்கிறது.
versions [--json] ஆதரிக்கப்படும் 11 செய்தி வரையறைகளையும் பட்டியலிடுகிறது.
inspect [--json] ஒரு செய்தி வகைக்கான கட்டாய மற்றும் விருப்பப் புலங்களைக் காட்டுகிறது.
init [-o DIR] ஒரு செய்தி வகைக்கான தொடக்க CSV வார்ப்புருவை உருவாக்குகிறது.
serve [--host] [--port] [--reload] FastAPI REST நுண்சேவையைத் தொடங்குகிறது (api கூடுதல் தேவை).
mcp உள்ளமைந்த Model Context Protocol சேவையகத்தைத் தொடங்குகிறது (5 கருவிகள்; முழுமையான 17-கருவி சேவையகம் pain001-mcp ஆக வழங்கப்படுகிறது).
plugins list / show / disable கண்டறியப்பட்ட லோடர், சரிபார்ப்பான், திட்டம், ரைட்டர் செருகுநிரல்களை ஆய்வு செய்து நிர்வகிக்கிறது.

generate விருப்பங்கள்

ஃபிளாக் விவரம்
-t, --xml-message-type செய்தி வரையறை, எடுத்துக்காட்டாக pain.001.001.09.
-d, --data உள்ளீட்டுத் தரவு: .csv, .json, .jsonl, .db / .sqlite, .parquet, அல்லது PGP-குறியாக்கப்பட்ட .gpg / .asc.
-o, --output-dir உருவாக்கப்பட்ட XML சேமிக்கப்படும் அடைவு.
-m, --template / -s, --schema உள்ளடக்கப்பட்ட Jinja2 வார்ப்புரு அல்லது XSD ஸ்கீமாவை மேலெழுதுகிறது.
-c, --config கட்டமைப்புச் சுயவிவரத்திலிருந்து இயல்புநிலை மதிப்புகளை ஏற்றுகிறது (--profile, --show-config).
--dry-run (மாற்றுப்பெயர் --validate-only) வெளியீட்டை எழுதாமல் JSON Schema, XSD, திட்ட விதிநூல் ஆகியவற்றுக்கு எதிராக உள்ளீட்டைச் சரிபார்க்கிறது.
--scheme ஒரு திட்ட விதிநூலைச் செயல்படுத்துகிறது: sepa-sct, sepa-inst, sepa-sdd, sepa-b2b, அல்லது xborder-ct.
--explain --scheme-format {text,json} தேர்ச்சி பெற்ற அல்லது தோல்வியடைந்த ஒவ்வொரு திட்ட விதியையும் மனிதர் அல்லது இயந்திரம் படிக்கும் வடிவில் அறிக்கையிடுகிறது.
--streaming / --chunk-size பெரிய தொகுதிகளுக்கான நினைவக-வரம்புடைய துண்டு வாரியான செயலாக்கம் (இயல்புநிலையாக ஒரு துண்டுக்கு 1,000 பரிவர்த்தனைகள்; ஒவ்வொரு துண்டும் மறுகணக்கிடப்பட்ட NbOfTxs மற்றும் CtrlSum உடன் தனித் XML கோப்பாக மாறுகிறது).
--emit-metrics கண்காணிப்புத் தொடர்வரிசைகளுக்காக இயந்திரம் படிக்கக்கூடிய இயக்க அளவீடுகளை வெளியிடுகிறது.

வெளியேற்றக் குறியீடுகள் CI-நட்பானவை: 0 வெற்றி, 1 சரிபார்ப்புத் தோல்வி, 2 பயன்பாட்டுப் பிழை.


2. Python API#

from pain001.core.core import process_files

# Generate a validated pain.001.001.09 file from CSV
process_files(
    xml_message_type="pain.001.001.09",
    xml_template_file_path="template.xml",
    xsd_schema_file_path="schema.xsd",
    data_file_path="payments.csv",
    output_dir="out",
)

உருவாக்கப்படும் ஒவ்வொரு ஆவணமும் எழுதப்படுவதற்கு முன் மூன்று அடுக்குகளைக் கடக்கிறது:

  1. உள்ளீட்டுச் சரிபார்ப்பு — ஒவ்வொரு பதிவும் அந்தச் செய்தி வகையின் JSON Schema-க்கு எதிராகச் சோதிக்கப்படுகிறது; உடன் புல-மாற்றுப்பெயர் இயல்பாக்கமும் IBAN/BIC தொடரியல் சோதனைகளும் நடைபெறுகின்றன.
  2. திட்ட விதிநூல் (விருப்பத் தேர்வு) — SEPA SCT, SEPA Instant, SEPA SDD Core, SEPA B2B, அல்லது எல்லை கடந்த வரவு பரிமாற்ற விதிகள்.
  3. XSD சரிபார்ப்பு — வட்டில் ஒரு பைட் கூட எழுதப்படுவதற்கு முன், உருவாக்கப்பட்ட XML xmlschema வழியாக அதிகாரப்பூர்வ ISO 20022 ஸ்கீமாவுக்கு எதிராகச் சரிபார்க்கப்படுகிறது.

XML உருவாக்கம் மற்றும் திட்டச் சரிபார்ப்பின் போது பணத் தொகைகள் decimal.Decimal ஆகவே கையாளப்படுகின்றன — ஒருபோதும் IEEE 754 ஃப்ளோட்டுகளாக அல்ல — மேலும் NbOfTxs / CtrlSum கட்டுப்பாட்டு மொத்தங்கள் உள்ளீட்டை நம்பாமல், சரிபார்க்கப்பட்ட பதிவுகளிலிருந்து மறுகணக்கிடப்படுகின்றன.

pain.001 உருவாக்கத்தைத் தாண்டி, மைய நூலகம் ஒரு pain.002 நிலை-அறிக்கைப் பாகுபடுத்தியையும் உருவாக்கியையும் (வங்கியின் ஏற்பு/நிராகரிப்புப் பதிலை நீங்கள் படிக்கும் வகையில்) மற்றும் நாள் இறுதி ஒப்புரவுக்கான camt.053 அறிக்கைப் பாகுபடுத்தியையும் உருவாக்கியையும் வழங்குகிறது; உடன், செய்திப் பதிப்புகளுக்கு இடையே பதிவுகளை இடம்பெயர்க்கும் VersionMapper-ஐயும் வழங்குகிறது.


3. REST நுண்சேவை#

pip install "pain001[api]"
pain001 serve --host 0.0.0.0 --port 8000

அனைத்து எண்ட்பாயிண்ட்களும் /api/v1-ன் கீழ் இணைக்கப்பட்டுள்ளன (பதிப்பு இல்லாத /api மாற்றுப்பெயருடன்):

முறை மற்றும் பாதை நோக்கம்
GET /api/v1/health இயங்குநிலைச் சோதனை.
POST /api/v1/validate பதிவுகளைச் சரிபார்க்கிறது; புல அளவிலான பிழைகளைத் திருப்பி அளிக்கிறது.
POST /api/v1/generate ஒத்திசைவான XML உருவாக்கம்.
POST /api/v1/generate/async பின்னணி உருவாக்கத்திற்காக ஒரு பெரிய தொகுதியை வரிசையில் சேர்க்கிறது.
GET /api/v1/status/{job_id} ஒத்திசைவற்ற பணியின் நிலையை வினவுகிறது.
GET /api/v1/download/{job_id} முடிக்கப்பட்ட XML-ஐப் பதிவிறக்குகிறது.
DELETE /api/v1/jobs/{job_id} முடிந்த பணியை அகற்றுகிறது.
GET /metrics Prometheus அளவீடுகள்.

ஊடாடும் ஆவணங்கள் /api/docs (Swagger UI), /api/redoc, /api/reference (Scalar) ஆகியவற்றில் வழங்கப்படுகின்றன; OpenAPI ஆவணம் /openapi.json-இல் உள்ளது.


4. உள்ளீட்டு இயல்பாக்கம்#

சரிபார்ப்புக்கு முன்பே Pain001 நிஜ உலக ஏற்றுமதிகளைச் செல்லுபடியாகும் பதிவுகளாக மாற்றுகிறது:

  • புல மாற்றுப்பெயர்கள் — வழக்கமான ERP நெடுவரிசைப் பெயர்கள் நியமப் புலங்களுடன் பொருத்தப்படுகின்றன (எடுத்துக்காட்டாக amountpayment_amount).
  • IBAN / BIC இயல்பாக்கம் — இடைவெளிகள் நீக்கப்பட்டு, எழுத்து வடிவம் ஒருங்கிணைக்கப்பட்டு, பின் சோதிக்கப்படுகிறது (IBAN-க்கு ISO 13616 mod-97, BIC-க்கு ISO 9362 அமைப்பு).
  • தேதிகள் — செயல்படுத்தும் தேதிகளுக்கு ISO 8601 YYYY-MM-DD பாகுபடுத்தல்.
  • தொகைகள்decimal.Decimal வழியாகக் கையாளப்படுகின்றன; தவறான வடிவிலான தொகைகள் அமைதியாக வட்டமிடப்படாமல் சரிபார்ப்பில் தோல்வியடைகின்றன.
  • எழுத்துத் தொகுப்பு — ஒலிபெயர்ப்பு உதவிகள் உள்ளடக்கத்தை SWIFT மற்றும் SEPA ஏற்கும் ISO 20022 லத்தீன் எழுத்துத் தொகுப்புக்குள் சுருக்குகின்றன.

5. செருகுநிரல் கட்டமைப்பு#

நான்கு நுழைவுப்புள்ளிக் குழுக்கள் வழியாக இந்தத் தொகுப்பை விரிவாக்கலாம்: pain001.loaders, pain001.validators, pain001.schemes, pain001.writers. pain001-loader-xlsx இதே வழிமுறையில் பதிவு செய்யப்பட்டு, நிறுவும்போதே தானாகக் கண்டறியப்படுகிறது; pain001-loader-mt101 என்பது நேரடியாகப் பயன்படுத்தப்படும் தனித்த பாகுபடுத்தல் நூலகம் (MCP சேவையகத்தின் convert_mt101 கருவியாலும் பயன்படுத்தப்படுகிறது). ஒரு நிறுத்த சுவிட்ச் — PAIN001_DISABLE_PLUGINS=1 — கடுமையாகக் கட்டுப்படுத்தப்பட்ட சூழல்களில் மூன்றாம் தரப்புச் செருகுநிரல் கண்டறிதலை முற்றிலுமாக முடக்குகிறது.


6. தர நுழைவாயில்கள்#

மைய நூலகம் கடுமையான, சரிபார்க்கக்கூடிய நுழைவாயில்களுக்கு எதிராக உருவாக்கப்படுகிறது: CI-இல் கட்டாயமாக்கப்பட்ட 100% வரி மற்றும் கிளை கவரேஜ் (--cov-fail-under=100), கடுமையான mypy வகைப்படுத்தல், 100% டாக்ஸ்ட்ரிங் கவரேஜ், பாதுகாப்பு லிண்டிங் (Bandit, pip-audit). ஒவ்வொரு வெளியீட்டு பில்டுக்கும் ஒரு CycloneDX SBOM உருவாக்கப்படுகிறது.

அடுத்ததாக நிறுவல் வழிகாட்டி, AI முகவர்களுக்கான MCP சேவையகம், அல்லது பணப்பரிவர்த்தனை சொற்களஞ்சியம் ஆகியவற்றைத் தொடரவும்.