बैंक से सुंदर पार्सिंग ईमेल अलर्ट

हम आपको दिलचस्प तकनीकी समाधान के साथ प्रसन्न करना जारी रखते हैं।

आज, अगली बारी बैंक से ईमेल अलर्ट की है, जो कुछ इस तरह दिखता है:
  पोकुपका, शेल एज़ल्स ओलेगिनो 1133, कर्ता * 347788, 07.23.11 12:09, 300.25 रगड़।  दोस्तोप्नो = 421.61 रगड़ 
या तो
  1000.00 RUR आपके खाते से ** 77876 पर डेबिट कर दिया गया है।
 बिक्री के बिंदु: ZAO GAMMAEKSPER
 दिनांक: 07/12/2011
 उपलब्ध शेष राशि: 12344.11 RUR 


आपको क्या लगता है कि पर्सनल फाइनेंस अकाउंटिंग सर्विस में इस तरह के नोटिफिकेशन की एक सुंदर प्रोसेसिंग की तरह दिखना चाहिए?


राजा मर चुका है


मैं कहानी से शुरू करता हूँ। ईमेल प्रसंस्करण ज़ेन मणि में एक साल से अधिक समय पहले दिखाई दिया। लेकिन तब वह खामियों का एक समूह था:

ईमेल अलर्ट के साथ काम करने की असुविधा और हमारे विदेशी भाई मिंट की सफलता के लिए (इसका उपयोग करने के लिए आपको किसी भी खर्च और आय दर्ज करने की आवश्यकता नहीं है (वह एक क्रेडिट कार्ड से सभी डेटा प्राप्त करता है और कृपया उन्हें श्रेणियों के भोजन, गैस, मनोरंजन में सॉर्ट करता है ...) ने हमें प्रसंस्करण तंत्र को फिर से लिखने के लिए प्रेरित किया ईमेल अलर्ट।

चलो छोटे से शुरू करते हैं, चार के लिए बैंक समर्थन बढ़ाएँ: VTB24, सिटी बैंक, बैंक सेंट पीटर्सबर्ग और Bank24.ru। यह स्मार्ट नियमित अभिव्यक्ति और कठिन परीक्षण द्वारा किया जाता है :)

फिर पहला दिलचस्प समाधान, हम एक ईमेल पता (ड्रॉपबॉक्स) छोड़ते हैं। सामान्य तौर पर, सभी खातों और सभी बैंकों के लिए (एक उपयोगकर्ता के लिए)। खातों में अंतर अंतिम चार अंकों में होता है। खाता बनाने के चरण में उपयोगकर्ता उनमें प्रवेश करता है:



सूचना पत्रों के नुकसान के साथ आखिरी असुविधा, हमने उपयोगकर्ता के व्यक्तिगत ईमेल पर सभी संदेश भेजकर फैसला किया। और यह हमारे लिए बहुत कठिन निर्णय था। इस समारोह से पहले, हमने व्यक्तिगत वित्त जैसी संवेदनशील जानकारी की गोपनीयता को अधिकतम करने के लिए ई-मेल नहीं मांगा था। अब आपके पास मेल इंगित करने या न करने का विकल्प है।

ये तीन सुधार एक _beautiful_ समाधान के लिए पर्याप्त नहीं हैं। उपयोगकर्ता को अभी भी यह निर्धारित करना है कि प्रत्येक लेनदेन पर क्या खर्च किया गया था: गैसोलीन, प्रशिक्षण या कुछ और। मैं आपको सुझाव देता हूं कि हम क्या लेकर आए हैं : "हाइलाइट" शीर्षक के नीचे एक अनुमान, लेकिन अब थोड़ा कोड के लिए।

पार्सर इंजन


संदेश पार्सर दो चरणों में काम करता है:

हम इस पत्र को पार्स करेंगे:
  प्रिय ग्राहक,

 1000.00 RUR आपके खाते से ** 77876 पर डेबिट कर दिया गया है।
 बिक्री के बिंदु: ZAO GAMMAEKSPERT
 दिनांक: 07/12/2011
 उपलब्ध शेष राशि: 12344.11 RUR
 कृपया ध्यान दें कि वर्तमान रूबल खाते पर उपलब्ध शेष राशि में क्रेडिट सीमा शामिल है।

 यदि आप प्राप्त जानकारी से सहमत नहीं हैं, तो कृपया (495) 775 75 75 (मॉस्को में), (812) 336 75 75 (सेंट पीटर्सबर्ग में), 8 (800) 700 38 38 (अन्य में) एक सिटीफोन कर्मचारी से संपर्क करें। (रूसी संघ के शहर) आठ दिनों के भीतर।

 हमारी सेवाओं के बारे में अधिक जानकारी के लिए, www.citibank.ru पर इंटरनेट पर हमारी वेबसाइट देखें। 


यह निर्धारित करने के लिए कि पत्र किस बैंक से आया है, और अंदर क्या उम्मीद करनी है, हम निम्नलिखित प्लेट का उपयोग करते हैं:
  आईडी विदेशी_फॉर्मेट चेक_ऑर्डर मार्कर_लेक्शन मार्कर_पैटर्न डेटाटाइप
 ४३ ३३ ० १० / १०/२०१२.itibank\.ru/ मेल
 44 33 1 2 / ^ \ d / मेल 


प्रत्येक अक्षर के लिए, हम चेक_ऑर्डर में प्रत्येक प्रारूप की जाँच करते हैं और लाइनों में मार्कर_पाटन की तलाश करते हैं। ऊपर दिए गए सिटी बैंक के पत्र की जांच करना कितना आसान है, यह हमें 33 प्रारूप देता है।

दूसरी प्लेट से, 33 प्रारूप के लिए फ़ील्ड पार्सर का चयन करें:
  id column_name value_offset विदेशी_फॉर्मेट
 49 परिणाम 2 / ^ ([\ d \।] +) / "33
 50 दिनांक 4 # (\ d {2} / \ d {2} / \ d {4}) $ # 33
 51 भुगतानकर्ता 3 / :: ^ :: ++: (। *) $ / "33 


रेगेक्सप से पहले की संख्या का अर्थ है पत्र की पंक्ति संख्या। हम फिर से पत्र के माध्यम से जाते हैं और हमें आवश्यक डेटा प्राप्त होता है।

जेस्ट: ऑटो-डिटेक्ट श्रेणियां


इसलिए हमें सबसे दिलचस्प हिस्सा मिला - मानचित्र पर खर्च की श्रेणियों के स्वचालित मिलान का हमारा कार्यान्वयन।

पहला, दूसरा उदाहरण:
  हम आपको सूचित करते हैं कि 07/21/2011 11:12:05 पर RUR 1959.00 की राशि में एक भुगतान लेनदेन आपके VTB24 ... 7780 बैंक कार्ड पर किया गया था।
 उपयोग के लिए उपलब्ध: 2274.35 RUR।  भुगतान विवरण: HITZONA।  प्राधिकरण कोड 222635 


अब देखिए, प्रत्येक भुगतान में हमारे पास एक स्टोर कोड है:

यही है, यह हमारे लिए हमारी श्रेणियों के लिए स्टोर कोड से मेल खाने के लिए पर्याप्त है। लेकिन यह डेटा कहां से मिलेगा? क्राउडसोर्सिंग बचाव के लिए आता है।

प्रत्येक ज़ेन-मैन उपयोगकर्ता किसी एक श्रेणी के कार्ड भुगतान की तुलना करता है, जो सामान्य कारण में योगदान देता है। और हमें कुछ ऐसा मिलता है (उपयोगकर्ता स्वयं श्रेणी के नाम दर्ज करते हैं)।
  10 शेल AZS पेट्रोल
 3 शेल AZS कारें
 1 शेल AZS मिठाई 


जब कोई उपयोगकर्ता SHELL AZS में भुगतान सूचना प्राप्त करता है, तो हम अपनी श्रेणियों के साथ आधार के प्रतिच्छेदन की तलाश करते हैं और सबसे लोकप्रिय का चयन करते हैं। "गैसोलीन" की एक श्रेणी है - इसे चुनें, यदि नहीं, तो "कार" चुनें।

दूसरे शब्दों में, हम ज़ेन मणि में वह सब कुछ कर रहे हैं जो हम आपके लिए घर की बहीखाता पद्धति को आसान बना सकते हैं। आज यह छह बैंकों से डेटा प्राप्त कर रहा है: अल्फा-बैंक, राइफेनबैंक, वीटीबी 24, सिटी बैंक, बैंक सेंट पीटर्सबर्ग, बैंक 24.ru और यांडेक्स। मनी सिस्टम।

आज इसे आजमाएं :)

Source: https://habr.com/ru/post/In125397/


All Articles