परिवर्तन लॉग
क्या नया है.
यह जहाज के रूप में, प्लेटफार्म के हर सुधार.
· DocsService
पैकेज का निरीक्षण खत्म होने पर, और विस्तारित / प्रतीक्षा अन्य विभाजित
WORM LegalPackageAttestation: attestationTextSha256 from FROZEN संस्करण (पैकेज का मसौदा शब्दकरण mutable है और पहले से ही किया जा सकता है) Reworded), घोषणाSha256 आदेश पर [{documentUid, contentSha256, orderIndex} वास्तव में प्रस्तुत, attestedAt application-set, sourceIp from a दाएं से बाएं X-Forwarded-For walk, सबूतBlobatim इसलिए पाचन हो सकता है बाद में प्रतिष्ठित। ग्राहक को पूरा करने के लिए भरोसा नहीं है। कुछ भी लिखने से पहले, प्रत्येक हस्ताक्षर करने योग्य दस्तावेज़ के लिफाफे को ESigService से फिर से पढ़ना चाहिए; मेरे प्राप्तकर्ता को होना चाहिए हस्ताक्षरित, और आंशिक रूप से SIGNED इस तरह से पतन नहीं है DisclosureEnvelopeSyncService इसलिए एक लंबित काउंटर-सिग्नचर पैदावार AWAITING OTHERs बल्कि एक के बजाय पैकेज जो निष्पादित होने का दावा करता है। एक असफल पढ़ने से इनकार कर दिया - एक समय-समय पर कॉल इस बात का सबूत नहीं है कि किसी ने हस्ताक्षर किए हैं। शून्य संकेत योग्य दस्तावेजों के साथ एक पैकेज में कोई लिफाफा नहीं है, ESigService नहीं है सभी पर, और सत्यापन इसके एकमात्र निष्पादन सबूत है। दूसरा खत्म वर्तमान पंक्ति लौटता है: इकाई का @PreUpdate डिजाइन और डिजाइन द्वारा फेंकता है The UniquE इंडेक्स on the same number of the same number of the same number.
· DocsService
पहचान-लेखित सदस्य असाइनमेंट के लिए सतह पढ़ते हैं
LegalAssignmentOwnership कानूनी PackageAccess का उद्देश्य है: एक सदस्य अपने स्वयं के समझौते को निष्पादित करने के पास कोई एचआर अधिकार नहीं है, और एचआर को चौड़ा करना उन्हें स्वीकार करने के लिए सेट किए गए प्रत्येक सदस्य को टेम्प्लेट ग्रिड और प्रत्येक सदस्य को भेजा जाएगा। दर्शकों का पूर्वावलोकन ईमेल के साथ पूर्ण रोस्टर है। वह सब जो कॉलर का नहीं है स्वयं का असाइनमेंट एक समान 404 का उत्तर देता है - एक 403 यूआईडी की पुष्टि करेगा। विस्तार () मानव संसाधन पंक्ति (firstViewedAt,) पर पहला दृश्य बहीखाता करता है। PENDING -> IN PROGRESS) के बजाय ESigService, इसलिए प्राप्तकर्ता-status मशीन असंतुलित है और बैज ईमानदार रहता है। सत्यापन शब्द आता है FROZEN संस्करण से, कभी पैकेज के mutable ड्राफ्ट से नहीं। दस्तावेज़ पीडीएफ ACKNOWLEDGE-ONLY दस्तावेजों की सेवा करता है और सेवा की गई ImgDat को सत्यापित करता है जमी हुई सामग्री के खिलाफ सामग्री-एड्रेस को पचाने से पहले Sha256; सेवImgContent हर Docs सेव पर img.setDat इंगित करता है, इसलिए बहाव लाइव है। हस्ताक्षर करने योग्य दस्तावेजों को एक 409 नाम देने से इनकार कर दिया जाता है - वे बाइट्स उन्हें समतल करने वाली सेवा से आना चाहिए। KToken's orgID/memberID प्राइमिटिव लॉन्ग हैं, इसलिए योजना की "== null" पहचान इसके बजाय जांच 0 है; एक अनुपस्थित सत्र क्षेत्र के लिए KToken 0 पीछे छोड़ देता है।.
· DocsService
मैनिफेस्ट कैनोनिकल फॉर्म और एक स्पूफ-प्रतिरोधी क्लाइंट आईपी
प्रकटनSha256 hashes आदेश दिया [{documentUid, contentSha256, orderIndex}] सदस्य को वास्तव में दिखाया गया था, लंबाई-समाप्त इसलिए एक तैयार की गई uid एक की नकल नहीं कर सकता फ़ील्ड सीमा और दो अलग-अलग दस्तावेज़ सेट हैश समान हैं। प्रमाण जेसन है मौखिक रूप से संग्रहीत और गोल-trips एक ही पाचन के लिए वापस - एक सबूत blob कि अपनी खुद की हैश को फिर से उत्पन्न नहीं कर सकता है। LegalClientIp वॉक X-Forwarded-For ight-to-LEFT के लिए और पहली सार्वजनिक हॉप लेता है। दस्तावेज़AccessAuditor ने इसे बाएं-टू-राइट पढ़ा, जो क्लाइंट-नियंत्रित है; कि पूर्व मौजूदा दोष यहाँ तय नहीं है, लेकिन यह एक स्रोत नहीं होना चाहिए स्पष्ट स्रोत.
· ESigService
स्टाफ-authenticated सदस्य साइनिंग सतह पर /api/esig/member/**
OTKAuth Filter बाईपास केवल /actuator, /api/esig/public and/api/esig/internal, इसलिए यह उपसर्ग पहले से ही orgId/memberId के साथ स्टाफ OTK के पीछे है। अनुरोध प्राप्तकर्ता कभी एक पथ चर नहीं है: यह मिलान करके हल हो जाता है EsignEnvelopeRecipient.memberId to OTK Member id, इसलिए कोई पैरामीटर नहीं है सदस्य एक सहयोगी की पंक्ति तक पहुंचने के लिए बदल सकते हैं। Not-found, not-your-org और नहीं-on-this-envelope सभी एक समान 404 जवाब देते हैं। यह एक मध्यस्थ बाह्य ईमेल के लिए एक अनुपालन दस्तावेज़ है कोई अनुमोदन और कोई अक्षम ध्वज के साथ; चूक से बाहर नहीं, ध्वज द्वारा नहीं। नहीं / डिकोडर और कोई / stepup भी: प्राप्तकर्ता-स्किप्ड डिकोडर मानव संसाधन के शून्य से संबंधित है पथ, और स्टेप-अप एक रेडिस साइनर सत्र पर कुंजी है, इस सतह के पास नहीं है। हस्ताक्षरकर्ताIpAddress एक राइट-टू-LEFT X-Forwarded-For walk से आता है। EsignPublicController.clientIp ने बाएं-टू-राइट पढ़ा, जो क्लाइंट-नियंत्रित है इसलिए spoofable, और यह मान एक स्पष्ट क्षेत्र पर उतरता है।.
· kamo-internal
असाइन किए गए पैकेज उप-टैब और वितरित / वितरित / शून्य कार्रवाई
AG ग्रिड समुदाय एक MUI-paginated लाने पर समुदाय के पास सर्वर-साइड रो मॉडल नहीं है, इसलिए सर्वर पृष्ठ और ग्रिड वास्तव में वही प्रस्तुत करता है जो इसे सौंपा गया था। निष्पादित स्तंभ समान स्थिति से प्राप्त सर्वर-साइड है चिप प्रस्तुत करता है, इसलिए दो नहीं कर सकते असहमत, और कोई लिफ़ाफ़ाफ़ा के साथ एक संकेतनीय दस्तावेज बैठने की बजाय चेतावनी बढ़ाता है हमेशा के लिए "पेंडिंग" के रूप में। दाहिने हाथ फिल्टर कॉलम की अध्यक्षता ऑर्ग के अपने बहुवचन टीम-सदस्य शब्द से की जाती है, से डेटा, एक स्टैंडअलोन "सभी" पंक्ति के साथ - जानबूझकर नहीं एक interpolated "सभी {Team" सदस्य}" स्ट्रिंग, क्योंकि शब्दकोश में एकमात्र ऐसा संदेश टूट गया है 12 में 22 स्थानीय लोगों और नई कुंजियों को यहां आविष्कार नहीं किया जा सकता है। रोस्टर एक लिखने के बजाय मौजूदा दर्शकों की समीक्षा समापन बिंदु का पुन: उपयोग करता है सदस्यों के सदस्यताकर्ताओं की तेरहवीं प्रति + टीम-सदस्य-संविदाकारों की दोहरी प्राप्ति, जो रिटर्न प्रॉस्पेक्ट, कैण्डिडेट, टेर्मिनेटेड और रिज़िगेटेड सदस्य। पेगिनेटर का "1-25 / 100" आम के बजाय डेटा से बनाया गया है। मूल्य pl.json में एक EMPTY स्ट्रिंग है - कुंजी गार्ड केवल एक कुंजी को साबित करता है। Void एक निश्चित VOID चुनौती शब्द का उपयोग करता है: यह लाइव कानूनी उपकरणों org-wide को रद्द कर देता है।.
· kamo-internal
कानूनी पैकेज वितरित / वितरित / शून्य प्रॉक्सी और असाइनमेंट क्लाइंट
1:1 आगे ToApi मार्गों — एक अपस्ट्रीम अनुरोध प्रत्येक, क्योंकि OTKAuth Filter करता है getAndDelete और एक अगले मार्ग में एक प्रति सदस्यीय पाश प्रति सदस्य एक OTK की आवश्यकता होगी। The लिस्टिंग केवल एक PATH पारित हो जाती है; आगे ToApi ब्राउज़र के क्वेरी स्ट्रिंग को ही विलय कर देती है। स्टेटस-टू-i18n मैपिंग वास्तविक गार्ड है, चेक-i18n-keys.mjs नहीं: केवल स्क्रिप्ट यह साबित करता है कि एक कुंजी एन में मौजूद है, और संदेश / gitignored है, इसलिए स्थानीय रूप से जोड़ा गया कुंजी पास और फिर डोकर बिल्ड को विफल कर देता है। यहां प्रत्येक कुंजी को सभी 22 स्थानीय लोगों के लिए सत्यापित किया गया था उपस्थिति और प्लेसहोल्डर सेट समानता, और एक परीक्षण पिन जो चार ज्ञात में से कोई नहीं है क्षतिग्रस्त कुंजी कभी वापस आ जाती है। एक खाली शून्य चयन सभी पर कोई टीम सदस्य आईडी कुंजी भेजता है - यह अनुपस्थिति क्या चयन करती है org-wide शाखा; एक खाली सरणी कुछ भी नहीं शून्य होगी और कुछ भी रिपोर्ट नहीं करेगी। RedeliverResult DeliverResult का विस्तार नहीं करता: RedeliverResultDto का कोई संस्करण नहीं हैNumber क्षेत्र, केवल **************** यह कहकर कि यह घोषणा करेगा संपत्ति बैकेंड कभी नहीं भेजता है, इसलिए वितरितSummaryParts ने एक नए के लिए नयाVersionNumber पढ़ा रिपोर्टिंग v0 के बजाय पुनर्वितरण।.
· DocsService
ऑर्ग-स्कैप्ड, पेजेड, फिल्टर करने योग्य कानूनी पैकेज असाइनमेंट लिस्ट
एक साझा-lib भंडार विधि के बजाय EntityManager पर निर्मित: फिल्टर सेट गतिशील है और इसे कैमो-शेयर्ड-library में जोड़कर साझा-artifact पुनर्निर्माण को मजबूर किया जाएगा प्रत्येक उपभोक्ता पर केवल डॉक्ससेवा मुद्दों के लिए। संगठन भविष्यवाणी बिना शर्त और पहले है, और एक परीक्षण साबित करता है कि यह जीवित रहता है हर फिल्टर संयोजन - समापन बिंदु कोई org पैरामीटर नहीं लेता है, इसलिए एक गिरा हुआ खंड एक अन्य किरायेदार के कार्य को सूचीबद्ध करेगा। पेजिंग एक uid टाई ब्रेक है क्योंकि एक 200 सदस्यीय डिलीवरी एक मिलीसेकंड के अंदर वितरित लिखती है। दस्तावेज़ गिनती दो हैं ग्रुप बाय क्वेरीज़, 25 प्रति-पंक्ति लुकअप नहीं। एक अज्ञात स्थिति 400 है, कभी चुपचाप नहीं एक अनुपालन ग्रिड पर फिल्टर को नजरअंदाज कर दिया।.
· DocsService
शून्य कानूनी पैकेज असाइनमेंट, org-wide या नामित सदस्यों के लिए
प्रति असाइनमेंट परिणाम — voided, छोड़ दिया-executed, नहीं पाया — क्योंकि एक व्यवस्थापक छह नामित लोगों के लिए एक पैकेज को शून्य करने की आवश्यकता है, जिसे पहले से ही निष्पादित किया गया था (उनके लिए) सबूत खड़ा है और जो कभी नहीं सौंपा गया (एक कहानी रोस्टर आईडी)। 200 नहीं कहते हैं। असाइनमेंट संक्रमण तुल्यकालिक होते हैं: असाइनमेंट पंक्ति, ई-सिग्न स्थिति नहीं, है क्या सदस्य को फाटक देता है और बैज को चलाता है। लिफाफे voids दूर जाना और कर रहे हैं SIGNED/VOIDED पर पूर्व-filtered, क्योंकि voidEnvelope 409s एक पूरा लिफाफा और एक स्वीकार-केवल दस्तावेज़ में बिल्कुल भी कोई लिफाफा नहीं है। एक सदस्य कई पंक्तियों को पकड़ सकता है इसलिए हर पंक्ति को अपना निर्णय मिलता है।.
· DocsService
एक बदल पैकेज को फिर से वितरित करें, खुले असाइनमेंट की देखरेख करें
जब तक लाइव फिंगरप्रिंट प्रकाशित नहीं होता तब तक मना किया जाता है। Binder.dateUpdated मृत है और Img में कोई संशोधन काउंटर नहीं है, ताकि फिंगरप्रिंट एकमात्र परिवर्तन संकेत है वहाँ है - गेट के बिना, Redeliver एक ऐसा बटन है जो चुपचाप सभी को शून्य करता है इन-प्रगति कार्य और एक समान साधन जारी करता है। मौजूदा प्रकाशन पथ (एक लेखक के संस्करण पंक्तियों), अंक के माध्यम से प्रकाशित होता है प्रत्येक OPEN असाइनमेंट SUPERSEDED, उनके गैर-टर्मिनल लिफाफे को voiding के लिए कतार बनाता है, और supersed सदस्य सेट करने के लिए reissues साथ किसी भी नए मिलान - फिर से भंग माध्यम से इसलिए पहले प्रसव के बाद से एक सदस्य समाप्त हो गया। निष्पादित असाइनमेंट असंतुष्ट हैं; वे सबूत हैं।.
· DocsService
अपने दर्शकों को कानूनी पैकेज प्रदान करें, अनुरोध धागे से बंद करें
अनुरोध धागे (दो सस्ते प्रश्नों) पर योजना, इसलिए प्रतिक्रिया सटीक है कि कौन है इसमें शामिल और कौन छोड़ दिया गया था और क्यों), इसे लिखना: 200 सदस्य x 8 दस्तावेज़ हैं 1,600 पंक्तियों के साथ-साथ कई ESigService कॉल और DocsService WOPI की सेवा करता है। पूल एक स्प्रिंग एक्यूटर बीन नहीं है। ApplicationTaskExecutor है ******************* और Docsservice पहले से ही @Async पर नंगे है KSessionService and DocumentService -- एक Executor बीन प्रकाशित चुपचाप स्थानांतरित हो जाएगा WOPI सत्र इस छोटे से सीमित पूल पर स्पर्श करता है। किसी भी लेन-देन के बाहर लिफाफे बनाए जाते हैं; एक 20s ने टाइमआउट को पढ़ने के दौरान एक बार पढ़ा Hikari संबंध यह है कि दस तारों का एक पूल कैसे है। एक संकेतनीय दस्तावेज जिसका लिफाफाफा असफल एक null लिफाफा uid रहता है, जो ग्रिड के एकमात्र संकेत है। रेडलीवर / शून्य / असाइनमेंट-ग्रिड मैपिंग यहां भी हैं, इसलिए नियंत्रक में एक है प्राधिकरण फ़नल लिखित और बाद में एक बोल्ट के बजाय एक बार साबित हुआ; उनकी सेवाओं का उत्तर 501 जब तक कार्य 4-6 शरीर को भरने.
· DocsService
डिलिवरी प्लानर - वृद्धिशील लक्ष्यीकरण, ईमेल प्री-फिल्टर, देय तिथियां
डिलिवर एक नया मार्ग है और यह फिर से शुरू होने का मतलब है, इसलिए जो सदस्य पहले से ही एक पकड़ लेते हैं उसी साधन की दूसरी प्रति देने के बजाय असाइनमेंट को घटा दिया जाता है। कोई ईमेल के साथ सदस्यों की गिनती की जाती है और सामने छोड़ दी जाती है क्योंकि EsignEnvelopeservice लूप के अंदर से एक के बिना एक हस्ताक्षरकर्ता 400s, पहले से ही सदस्यों के बाद लाइव लिफाफे। दर्शक क्वेरी ORs तीन भविष्यवाणी, तो डुप्लिकेट पतन कर रहे हैं। एक स्वीकार-only दस्तावेज़ जानबूझकर सभी पर कोई लिफाफा नहीं मिलता है।.
· DocsService
कानूनी पैकेज वितरण के लिए ESigService आंतरिक ग्राहक
Docsservice की पहली आउटबाउंड सर्विस-टू-सर्विस क्लाइंट। पोस्ट ************* (मूल MANUAL, कभी नहीं मीटर) के साथ दबानाInvite=true — HR एक अधिसूचना भेजता है, प्रति सदस्य प्रति दस्तावेज नहीं। टाइमआउट स्पष्ट हैं: EsignEmailClient किसी के साथ एक नंगे RestTemplate बनाता है, और एक एक अजीब फली पिन एक कार्यकर्ता धागे को फिर से शुरू करने तक पढ़ने के लिए untimed। कुछ नहीं एक पर फेंक अपस्ट्रीम त्रुटि, क्योंकि प्रशंसक आउट प्रति सदस्य एक कॉल प्रति हस्ताक्षर योग्य दस्तावेज़ जारी करता है और एक बुरा टेम्पलेट पर बैच को गर्भपात नहीं करना चाहिए। शून्य मानचित्र 409 से एक रिपोर्ट करने योग्य एक त्रुटि के बजाय छोड़ दिया संकेत दिया। प्रतिक्रिया रिकॉर्ड अज्ञात क्षेत्रों को अनदेखा करते हैं - अभी भी FAIL ON UNKNOWN PROPERTIES है।.
· kamo-internal
कानूनी और अनुपालन के लिए पैकेज टेम्पलेट्स सब-टैब
केवल HrTabPlaceholder शरीर को बदल देता है - मार्ग, टैब प्रविष्टि और गेट पहले से ही hrTabs.ts में मौजूद हैं। AG ग्रिड सामुदायिक सूची प्लस एक के साथ एक बनाने / संपादित संवाद आदेशित बाइंडर पिकर HR RESOURCE (ordinal 13, id 15 नहीं), ऊपर / नीचे आदेश, और विभाग/Job प्रकार बहु-चयनित करता है कि ऑल-टीम-मेम्बर्स निष्क्रियता को टॉगल करते हैं। The टॉगल का लेबल ऑर्ग का अपना बहुल टीम-सदस्य शब्द है, कभी भी हार्डकोडेड स्ट्रिंग नहीं है। कोई नया i18n कुंजी नहीं: हर लेबल पहले से ही परिभाषित शब्दकोश की कुंजी का पुन: उपयोग करता है, और गिनती करता है डेटा से प्रस्तुत करना।.
· kamo-internal
कानूनी पैकेज प्रॉक्सी मार्ग, ग्राहक एपी और शुद्ध सहायक
पतला 1:1 आगे ToApi मार्गों के तहत /api/docs/legal - एक अपस्ट्रीम अनुरोध प्रत्येक, क्योंकि OTKAuth Filter getAndDelete करता है और अगले रास्ते में एक प्रशंसक आउट लूप होगा प्रति सदस्य एक OTK की आवश्यकता है। Ids end to end (unique rowid). पुनर्व्यवस्था रैपिंग के बजाय क्लैंप किया गया, और दर्शकों की सूची खाली हो जाती है जब सभी टीम सदस्य इतने पर हैं कि एक कहानी संकीर्ण दर्शक वापस नहीं आ सकते हैं।.
· DocsService
ऑडियंस रेज़ोल्यूशन पूर्वावलोकन
TeamMemberRepo.findAudience, जो है के माध्यम से एक बचाया या ड्राफ्ट दर्शकों को हल केवल पाठक अनिवार्य ACTIVE + रिकॉर्ड स्टेट एलिजिबिलिटी प्रेसिडीट ले जाता है - टीम-सदस्य-संविदाकार एंडपॉइंट रिटर्न प्रॉस्पेक्ट, कैण्डिडेट, टेर्मिनेटेड और रीजन्ड। कोई ईमेल के साथ झंडे सदस्यों (EsignEnvelopeService hard-400s without one) और सदस्यों नीचे TEAM MEMBER सुरक्षा (ImagingController चुपचाप दायर प्रतिलिपि छोड़ देता है)। An दर्शकों को किसी को कोई भी हल करने के लिए कुछ भी नहीं है, और खाली आईडी सूचियों को भेजे गए हैं, इसलिए OR'd IN खंड मान्य SQL रहते हैं।.
· DocsService
Byte-pinned दस्तावेजों के साथ एक संस्करण फ्रीज प्रकाशित करें
पिन img dat id प्लस एक सामग्री हैश, img id नहीं: सेवImgContent उसी को दोहराता है हर Docs पर नए बाइट्स पर Img बचाता है, और हल करता हैसोर्स डेटी लाइव में चलता है सत्र निर्माण और समतल पर। छोड़ने के बजाय जमे हुए डिजाइन को स्नैपशॉट करें हल करनाडिजॉन सबसे नये में वापस आ गया, एक दस्तावेज़ को बिना किसी परिवर्तित के अस्वीकार कर देता है पीडीएफ, और एक प्रकाश जिसके फिंगरप्रिंट नहीं ले जाया गया है मना कर दिया।.
· DocsService
कानूनी पैकेज CRUD at /api/docs/legal/package
सूची, निर्माण, प्राप्त करें, अद्यतन और हटाएँ, आदेशित बाइंडर रेफरी और दर्शकों की पंक्तियों के साथ एक सेट के रूप में बदल दिया। संगठन हर पथ पर सत्र से आता है - डॉक्स सर्विस है परमिटसभी और OTKPreAuth Filter बिना किसी टोकन के श्रृंखला जारी रखता है, इसलिए नियंत्रक का अर्कKToken प्रमाणीकरण है। क्रॉस-ऑर्ग विभाग, नौकरी का शीर्षक, सदस्य और बाइंडर 400 स्पष्ट रूप से चुपचाप कुछ भी लिखने के बजाय।.
· DocsService
कानूनी पैकेज तार अनुबंध और अनुरोध सामान्यीकरण
Ids क्रॉस स्ट्रिंग्स (unique rowid MAX SAFE INTEGER) से अधिक है। बाइंडर ऑर्डर है सूची आदेश, de-duplicated, और एक गैर संख्यात्मक प्रविष्टि 400s बजाय छोड़ दिया जा रहा है — मूक स्किपिंग यह है कि कैसे एक पुनर्व्यवस्था एक बाइंडर खो देती है। खाली दर्शकों की सूची एक के लिए पतन Sendinel तो OR'd IN क्लॉज in findAudience stay मान्य SQL.
· DocsService
कानूनी पैकेज के लिए सामग्री फिंगरप्रिंट
Binder.dateUpdated कभी नहीं चल पाता है, इसलिए एक पैकेज की सामग्री में कोई बदलाव नहीं होता है। तुलना करने का संकेत। कैनोनिकल ऑर्डर्ड बाइंडर/item tuple पर SHA-256 को जोड़ता है - ImgDatId सहित, क्योंकि saveImgContent नए बाइट्स पर समान Img को इंगित करता है हर Docs बचाते हैं - साथ ही प्रयास पाठ हैश। एन्कोडिंग लंबाई निर्धारित है इसलिए एक तैयार विन्यास जेसन एक अलग लेआउट तैयार नहीं कर सकता है। इसके अलावा com.kamo.z.shared.hr.legal repository स्कैन करने के लिए कहते हैं।.
· SecurityService
उनके लिए मतदान के बजाय पुश प्लेटफॉर्म व्यवस्थापक राज्य में परिवर्तन
इस सेवा द्वारा समर्थित हर प्लेटफ़ॉर्म स्क्रीन एक टाइमर पर ताज़ा होती है, क्योंकि यह सेवा में कोई WebSocket नहीं है और इसलिए किसी को कुछ भी बताने का कोई तरीका नहीं है: क्लोन ट्रेनर टैब हर 4 सेकंड में फिर से पढ़ता है जबकि एक रन लाइव था, डीएनएस प्रत्येक 15, वाणिज्य सिंक लॉग और वीओआईपी रिकॉर्डिंग प्रत्येक 30 आँकड़े का प्रावधान, और डोमेन सेटअप पेज ने प्रति ओपन टैब एक मिनट में एक बार सत्यापित-डीएनएस से पूछा। प्लेटफ़ॉर्मEventPublisher उन्हें कोर NATS और MediaService के नए को भेजता है प्लेटफार्मStompRelayController उन्हें STOMP पर डाल देता है। जेटस्ट्रीम के बजाय कोर NATS, मेलिंग ThemeProvisionPublisher: इस सेवा की धारा CHAT MESSAGES/chat है। इसलिए एक जेटस्ट्रीम सुरक्षा के लिए प्रकाशित होता है।* उम्मीद की धारा सत्यापन में विफल हो जाएगा और उम्मीद की धारा सत्यापन हो जाएगा। गिरा दिया। At-most-once सही व्यापार है - हर उपभोक्ता REST पर भी लोड करता है जब यह माउंट करता है, तो एक खोई घटना में एक ताज़ा खर्च होता है, कभी भी सही नहीं होता है। उस बिंदु पर वायर्ड जहां राज्य वास्तव में चल रहा है: - प्रत्येक प्रगति पर बंद लोनट्रेनर सर्विस, दावे पर, और हर तरफ टर्मिनल स्टेट, इसलिए जब वॉक करता है तो मॉनिटर बिल्कुल आगे बढ़ता है। - DnsProvision प्रत्येक रिकॉर्ड के रूप में सेवा, बजाय पैनल फिर से पढ़ने के लिए पूरा लॉग हो रहा है कुछ उतरा। - प्रत्येक सिंक-लॉग पंक्ति पर RetailSyncLogBroadcaster, नए साझा-lib श्रोता के माध्यम से सीवन, प्रदाता विन्यास द्वारा कुंजी तो एक org सिंकिंग कई प्रदाताओं नहीं करता है उनमें से सभी को वापस लेने के लिए क्योंकि कोई चल रहा है। दो काउंटरों में कोई ऐसा क्षण नहीं होता है और यह नाटक करने के बजाय ईमानदारी से संभाला जाता है घटनाओं में: - वीओआईपी रिकॉर्डिंग बैकलॉग पूरी तरह से किसी अन्य सेवा द्वारा लिखा जाता है, इसलिए प्लेटफ़ॉर्मStatWatcher इसे नमूने देता है - लेकिन सर्वर पर, एक बार, और यह प्रकाशित करता है केवल जब संख्या वास्तव में बदल जाती है, तो एक शांत बैकलॉग यातायात पैदा नहीं करता है जहां पुरानी व्यवस्था ने प्रत्येक दर्शक को दो बार एक समान पेलोड भेजा हमेशा के लिए मिनट। ट्रिगर-सिंक तुरंत प्रकाशित होता है, क्योंकि यह बैकलॉग जानता है आगे बढ़ना - निदान लाइव JVM/host/database रीडिंग है जहां अनिवार्य रूप से हर क्षेत्र में दूसरे से दूसरे भिन्न होते हैं, इसलिए पुश करने के लिए कुछ भी नहीं है। यह एक नंगे हो जाता है टिक: एक सर्वर टाइमर जब "अब" फिर से पढ़ने लायक है, एक के बजाय प्रति खुला टैब प्रत्येक पूर्ण स्नैपशॉट खींच रहा है। डोमेन सत्यापन वाकर सेटअप पृष्ठ के मतदान को प्रतिस्थापित करता है। DNS प्रचार प्रमाणपत्र जारी करना वास्तव में बाहरी स्थिति है जिसमें सदस्यता लेने की कोई घटना नहीं है, इसलिए जाँच कहीं हो सकती है - लेकिन हर ब्राउज़र में नहीं। एक स्वीप प्रत्येक प्रतीक्षा डोमेन को कवर करता है, 25 कम से कम पुन: चेक किया जाता है ताकि बैकलॉग ऑफ़ गलत तरीके से कॉन्फ़िगर किए गए डोमेन पूरी तरह से फिर से खरीदे जाने के बजाय घूमते हैं, केवल जांच एक बार DNS हल करता है और केवल तभी प्रकाशित होता है जब कोई डोमेन वास्तव में आगे बढ़ता है। दो मौजूदा परीक्षण सीधे इन वर्गों का निर्माण करते हैं और नए के लिए अद्यतन किए गए हैं निर्माता पैरामीटर। ध्यान दें: ************* पहले से ही मुख्य रूप से विफल रहता है (परीक्षण के हाथ से निर्मित सेवा में इकाई प्रबंधक) और इस बदलाव से असंतुष्ट है - एक स्वच्छ HEAD worktree के खिलाफ सत्यापित।.
· EmailService
मेलबॉक्स परिवर्तन की घटनाओं को प्रकाशित करें ताकि मेल विचार मतदान बंद हो जाए
फ़ोल्डर पेड़, वार्तालाप सूची और संदेश सूची प्रत्येक अपने खुद के 30 सेकंड भाग गया टाइमर, उस अवसर पर पुनः लोड हो रहा है जो कुछ स्थानांतरित हो गया था। पहले से ही WebSocket मेल आने पर उन्हें बताया गया, लेकिन यह केवल उन तरीकों में से एक है जो मेलबॉक्स में बदलाव करते हैं। - राउंडक्यूब में या एक फोन पर एक संदेश पढ़ना, इसे स्थानांतरित करना, इसे हटा देना, या इसे छोड़कर सामग्री पर बढ़ने के लिए, कृपया ध्यान दें। EmailMailboxChanged कहते हैं कि एक फ़ोल्डर अब नहीं है जो आप दिखा रहे हैं, और वहन करता है इसलिए एक उपभोक्ता इस प्रकार की उपेक्षा कर सकता है कि यह परवाह नहीं करता है। प्रकाशित E-mail.changed.<addr> और ******************* from IDLE श्रोता (arrival, expunge, ध्वज परिवर्तन) और मार्क-रीड, झंडे से, कदम, हटाने, स्पैम, भेजने और ड्राफ्ट समापन बिंदुओं। Deliberately not folded into emailUnreadPublisher: कि एक गिनती का मालिक है, तो यह सस्ती रहने के लिए प्रदाता और कोलेस फटने तक पहुंचना है। यह करता है कोई गिनती नहीं है और कुछ भी नहीं पढ़ता है, इसलिए हर बदलाव पर भेजने के लिए पर्याप्त सस्ता है। एक खिड़की के पीछे एक गिनती की जरूरत नहीं है। एक चाल की रिपोर्ट नहीं फ़ोल्डर क्योंकि यह दो को छूता है और स्रोत हमेशा नहीं होता है कॉलर के लिए जाना जाता है - उपभोक्ता मानते हैं कि "आप जो दिखा रहे हैं उसे फिर से लोड करें"।.
· MediaService
STOMP पर रिले सुरक्षा सेवा मंच की घटनाओं
सुरक्षा सेवा मंच व्यवस्थापक सतह का मालिक है - सिस्टम विन्यास, DNS प्रावधान, वाणिज्य सिंक - लेकिन कोई WebSocket समापन बिंदु नहीं है, इसलिए हर स्क्रीन इसके द्वारा समर्थित किसी भी चीज को बताने और इसके बजाय एक टाइमर पर ताज़ा करने का कोई तरीका नहीं था: हर 4 सेकंड में बंद लोन ट्रेनर टैब, DNS हर 15, commerce हर 30 में लॉग और वीओआईपी रिकॉर्डिंग आँकड़े सिंक करें। यह कोर NATS को प्रकाशित करता है; यह उन संदेशों को STOMP पर डालता है, वही व्यवस्था समर्थनStompRelayController और **************** पहले से ही उपयोग करें। गंतव्य के अधीन यांत्रिक है - प्रमुख "सुरक्षा" को छोड़ दें। slashes के लिए डॉट्स, इसलिए Security.dns.log.42 /topic/dns/log/42 पर आता है - जो इसका मतलब है कि एक नए घटना के प्रकार को एक प्रकाशक और एक ग्राहक और यहां कुछ भी नहीं है। Prefixs स्पष्ट रूप से सुरक्षा के बजाय बाध्य हैं। Double-deliver Security.theme.provision.*, जो ThemeProvisionStompRelay पहले से ही उसी विषय के आकार को रिले करता है।.
· kamo-shared-library
मतदान के बजाय सिंक प्रगति और डोमेन राज्य की घोषणा की जाएगी
सुरक्षा सेवा में पुश रूपांतरण के लिए दो हुक, जहां कई प्लेटफॉर्म स्क्रीन टाइमर पर ताज़ा क्योंकि उन्हें कुछ भी बताने का कोई तरीका नहीं था। RetailSyncLogListener खुदराSyncOrchestrator पर एक वैकल्पिक अधिसूचना सीवन है, जब एक सिंक रन अपनी IN PROGRESS पंक्ति लिखता है और फिर जब यह लिखता है टर्मिनल एक। ऑर्केस्ट्रेटर इस बात से अनजान रहता है कि कैसे अधिसूचना यात्रा करती है, और कोई कार्यान्वयन के साथ यह पहले की तरह व्यवहार करता है। प्रदाता सिंक डैशबोर्ड ने अपनी पूरी लॉग सूची को हर 30 सेकंड में रीलोड किया ताकि वह सिर्फ़ चल सके खुद शुरू कर दिया। ************* शीर्ष स्तर डोमेन है कि नहीं है सूचीबद्ध करता है समाप्त हो रहा है - डीएनएस की पुष्टि नहीं हुई, या कोई प्रमाण पत्र की पुष्टि के साथ सत्यापित नहीं किया गया। यह सर्वर-साइड वेरिफिकेशन वॉचर के लिए मौजूद है: डोमेन सेटअप पेज पर मतदान सार्वजनिक DNS प्रचार पर प्रतीक्षा करते समय प्रति ओपन टैब एक मिनट में सत्यापित करें और प्रमाणन सबसे पहले ऑर्डर किया गया और एक पेजेबल के साथ लिया गया इसलिए एक स्वीप स्थायी रूप से एकीकृत डोमेन की संख्या के साथ नहीं बढ़ सकता है।.
· ESigService
एक प्रेषक को प्रति लिफाफे को दबाने की अनुमति दें ईमेल आमंत्रित करें
एक लिफाफा बनाने के लिए बिना शर्त एक निमंत्रण ईमेल किया, तो एक कॉलर बैचिंग कई एक अधिसूचना के पीछे लिफाफे शांत रहने का कोई रास्ता नहीं था। Null संरक्षित मौजूदा व्यवहार; एक्सेस टोकन अभी भी जारी किया गया है।.
· EmailService
पुश INBOX ने मतदान के बजाय NATS/WebSocket पर अनगिनत गिनती जारी की
कामो-आंतरिक में नेव-टॉप मेल बैज ने कॉल करके खुद को ताज़ा किया /api/email/folders हर 30 सेकंड, प्रति ब्राउज़र टैब। कि समापन बिंदु चल रहा है पूरे फ़ोल्डर पेड़ और हर फ़ोल्डर को केवल जवाब देने के लिए खुलता है, इसलिए लागत की लागत एक पूर्ण मेलबॉक्स सारांश था, जिसे अनिश्चित काल तक दोहराया गया था। WebSocket पहले से ही अस्तित्व में केवल घोषणा की कि मेल आया था और कोई गिनती नहीं की थी। इसलिए इसका एक काम एक अन्य मतदान को ट्रिगर करना था। गिनती खुद को प्रकाशित करें: - EmailUnreadSnapshot on NATS email.unread. /topic/email/unread/<memberId> NATS पथ में है क्योंकि फली यह है कि एक बदलाव का निरीक्षण नियमित रूप से नहीं होता है जो सदस्य के WebSocket को पकड़ता है। - मेलबॉक्स प्रति ईमेल UnreadPublisher Coalesces, तो एक दस संदेश IDLE वितरण या मेल का एक पेज पढ़ने के लिए एक IMAP राउंड ट्रिप और एक प्रकाशन है, बंद कॉलर का धागा। - MailReader.getUnreadCount एक फ़ोल्डर पढ़ता है। ग्राफ़ इसे फ़ोल्डर से उत्तर देता है यह पहले से ही रिटर्न सूची; IMAP-backed प्रदाताओं ने इसे एक साथ ओवरराइड किया STATUS (UNSEEN). - एक स्नैपशॉट सब्सक्राइब पर प्रकाशित किया जाता है, IDLE संदेशAdded/messageRemoved पर, IMAP ध्वज परिवर्तन पर और मार्क-रीड / झंडे / मूव / डिलीट / स्पैम से समापन बिंदु यह भी बंद कर देता है: - ध्वज परिवर्तन अदृश्य थे। राउंडक्यूब में या एक फोन सेट पर मेल पढ़ना बिना संदेश को जोड़ने या हटाने के बजाय, इसलिए बैज हमेशा गिर गया जब ब्राउज़र अगले मतदान किया। आईडीएलई अब एक संदेश केंद्र है। - क्लाउड मेलबॉक्स को सभी पर कोई धक्का नहीं मिला। EmailWebSocketController Kamomail virtual users तालिका के माध्यम से क्रेडेंशियल, जिसमें कोई पंक्ति नहीं है Microsoft 365 या Google Workspace पर सदस्य, इसलिए सदस्यता () ने चेतावनी दी और लौटे। यह अब MailProviderResolver और IDLE कनेक्ट के माध्यम से हल करता है एक साझा के माध्यम से क्रेडेंशियल स्पेक (होस्ट/पोर्ट/TLS/XOAUTH2) के साथ ImapStoreफैक्टरी.कनेक्ट करने के बजाय KamoMail होस्ट और एक पासवर्ड - सत्र लीक हो गया। एक बंद टैब कभी / ईमेल / सदस्यता नहीं भेजता है, इसलिए मेलबॉक्स अब प्रति STOMP सत्र की गिनती की जाती है और जारी की जाती है सत्र डिस्कनेक्ट कोई लाइव IDLE श्रोता के साथ मेलबॉक्स - ग्राफ, 50-कनेक्शन कैप के पास, या एक मृत IDLE धागा - हर 60 के दशक में सर्वर-साइड को घुमाया जाता है और उसी में प्रकाशित होता है। विषय यह प्रति टैब मतदान के बजाय पुश की जगह लेता है: एक स्वीप हर जगह पर काम करता है एक सदस्य खुला है टैब, सदस्यता प्रत्येक पास फिर से परीक्षण किया जाता है इसलिए एक मृत श्रोता है उठाया, और ब्राउज़र अभी भी WebSocket पर गिनती प्राप्त करता है। MessageIndexer ईमेल बांधता है।> और उस पर सब कुछ एक संदेश के रूप में deserialized, इसलिए यह अब ईमेल के बाहर विषयों को छोड़ देता है। सदस्यता को संकीर्ण करने की तुलना में, क्योंकि ईमेल-metadata-indexer एक टिकाऊ है उपभोक्ता और उसके फिल्टर विषय को बदलने से सब्सक्राइब हो जाएगा जब तक टिकाऊ हाथ से हटा दिया गया था तब तक फली।.
· InitializerService
कानूनी पैकेज स्कीमा
Adds com.kamo.z.shared.hr.legal to repository स्कैन सूची और सुनिश्चित करता है अद्वितीयता और लुकअप सूचकांक इकाई मैपिंग सुरक्षित रूप से व्यक्त नहीं कर सकता है।.
· kamo-shared-library
रिकॉर्ड पैकेज सत्यापन के रूप में append-only सबूत
पैकेज-स्तर 'मैंने पढ़ा है और सहमत हूँ' से एक अलग कानूनी साधन है E-SIGN सहमति लेनदेन करने के लिए और किसी भी प्रति दस्तावेज हस्ताक्षर से, और यह है केवल एक पैकेज के लिए कोई संकेतनीय दस्तावेज नहीं है। गार्ड अद्यतन मना कर दिया और जिस तरह से PhiAccessLog करता है उसे हटा दें।.
· kamo-shared-library
प्रति सदस्यीय असाइनमेंट और प्रति दस्तावेज प्रगति जोड़ें
दस्तावेज़ पंक्ति वह जुड़ना है जो एन ई-सिग्न लिफाफे को एक पैकेज के रूप में पढ़ा जाता है। बैज गिनती असाइनमेंट स्टेटस से आती है, नहीं ई-सिग्न स्टेटस: प्राप्तकर्ता स्थिति में कोई VOIDED या EXPIRED नहीं है, शून्य प्राप्तकर्ता पंक्तियों को कभी नहीं छूता है, और एक केवल पैकेज में कोई लिफाफे नहीं है।.
· kamo-shared-library
पैकेज सामग्री को अपरिवर्तनीय संस्करणों में फ्रीज करें
ImgDat blob आईडी और इसके SHA-256 पिन, सिर्फ imgId नहीं - एक डॉक सेव नए बाइट्स पर समान Img को इंगित करता है, इसलिए अकेले imgId दो सदस्यों को संकेत देगा समान आईडी के तहत विभिन्न दस्तावेज़। डिज़ाइन को भी स्नैपशॉट करता है, इसलिए निष्पादन कभी हल पर निर्भर नहीं हैडिजाइन जेसन की नवीनतम लेआउट के लिए गिरावट।.
· kamo-shared-library
विभागों, नौकरी के प्रकार या नामित सदस्यों पर एक पैकेज लक्षित करें
SystemUserAccess. TeamMemberRepo में दर्शकों के हलकों को जोड़ता है, जो एक खाली इंटरफ़ेस था; सक्रिय + रिकॉर्डस्टेट भविष्यवाणी क्या रखता है कर्मचारियों को समाप्त कर दिया गया और बिना किसी उम्मीदवार को प्रसव से बाहर निकाल दिया गया।.

तुम्हारा ब्रह्मांड इंतजार कर रहा है.
मिनटों में मुफ्त शुरू करें. जब भी आप तैयार हों तो उत्पाद जोड़ें - कोई माइग्रेशन नहीं, कोई नया लॉगइन नहीं.
हमेशा के लिए मुफ्त - कोई क्रेडिट कार्ड की आवश्यकता नहीं