परिवर्तन लॉग
क्या नया है.
यह जहाज के रूप में, प्लेटफार्म के हर सुधार.
· kamo-internal
अपनी पंक्ति से एक सदस्य को ईमेल करें
एक सदस्य पंक्ति पर चैट, कॉल और प्रोफाइल के बगल में एक मेल एक्शन जोड़ता है, खुलता है पहले से ही भरा प्राप्तकर्ता के साथ संदेश उपकरण। यह तब तक छिपा हुआ है जब तक कि ऑर्ग है ईमेल सक्षम, दर्शक ACCESS MAIL रखती है, और सदस्य वास्तव में एक पता है फ़ाइल पर - एक ऐसी कार्रवाई जो खाली संगीतकार को खोलती है, कोई कार्रवाई से भी बदतर नहीं है। अनुमति को प्रति पंक्ति के बजाय NavTopPanel में एक बार हल किया जाता है: गहरा UseEmailAvailability () जांच की लागत एक OTK प्लस प्रदाता और मेलबॉक्स राउंड-ट्रिप्स है, और यह पैनल ऐप-वाइड को माउंट करता है। Recipients { startData: { to: [email] } }. DraftMessage.to एक है स्ट्रिंग [], इसलिए एक फ्लैट { to: '...' } चुपचाप गिरा दिया गया है और संगीतकार बिना किसी के खुलता है प्राप्तकर्ता - समान जाल HexHeadPopover दस्तावेज।.
· MediaService
उन्हें भंडारण के लिए स्ट्रीमिंग करके 3 जीआईबी संलग्नक स्वीकार करें
फ़ाइल.getBytes() इस बड़े अपलोड का प्रतिनिधित्व नहीं कर सकते - एक जावा सरणी सिर्फ बंद हो जाता है 2 गीगाब से ऊपर - इसलिए हर आसक्ति अतीत में जो एक OutOfMemoryError पर मर गया, भले ही किसी भी तरह की घटना हो हेप, और 1 जीबी एक को एक फ़ाइल स्प्रिंग को स्टोर करने के लिए 1 जीबी आवंटन की आवश्यकता थी डिस्क में spooled। MultipartFile अब फिर से खोलने योग्य स्रोत के रूप में इमेजिंग करने के लिए जाता है और सीधे माध्यम से स्ट्रीम किया जाता है। मैच करने के लिए बढ़ी हुई सीमाएं: प्रति फ़ाइल 3GB (3100MB प्रति अनुरोध, इसलिए सबसे बड़ी अनुमति प्राप्त फ़ाइल को अपनी सीमा और हेडर के लिए अस्वीकार नहीं किया जाता है। Media.attachment.max-bytes 3 GiB करने के लिए। Multipart spools एक स्पष्ट 24Gi खाली दिन कंटेनर की लिखने योग्य परत के बजाय। टॉमकैट मैक्सिको-आकार अब -1 है, इसलिए एक खारिज कर दिया अपलोड एक रीसेट कनेक्शन के बजाय अपने 4xx वितरित हो जाता है।.
· kamo-shared-library
स्ट्रीम कंटेंट-एड्रेस्ड स्टोरेज इसलिए कोई वस्तु हेप से अधिक हो सकती है
चैट संलग्नक एक 3 जीबी छत पर चल रहे हैं। स्टोरContentAddressed एक बाइट [] लिया, जो इस बात को व्यक्त नहीं कर सकता - एक जावा सरणी इंटेगर पर रुकती है। MAX VALUE — और MinIOStorageservice.upload तब पूरी वस्तु को एक दूसरे समय बफर कर सकता है ताकि यह पूरी तरह से एक दूसरे समय में बफर हो सके। अगले नोड के खिलाफ डाल दिया retry। दोनों के साथ एक स्ट्रीमिंग पथ जोड़ें: HashUtils.computeDigests derives Blake3 और एक पास से SHA3-256, अपलोडस्ट्रीमिंग ने प्रति नोड इनपुटस्ट्रीमसोर्स को फिर से खोल दिया बाइट्स रखने के बजाय प्रयास करें, और नए स्टोरContentAddressed अधिभार कभी सामग्री जमा किए बिना हैश, डेडअप और स्टोर। पीक मेमोरी है फ़ाइल आकार के बजाय मिनआईओ भाग बफर। यह जानबूझकर @transactional नहीं है: भंडारण गीगाबाइट मिनट लेता है, और पंक्ति केवल तभी प्रकाशित होता है जब वस्तु पूरी तरह से संग्रहीत होती है, इसलिए दुर्घटना उसी राज्य को बफर पथ छोड़ देता है।.
· kamo-internal
शीर्षक बंधक फार्म फलक उधारकर्ता(s)
लोन/बॉरोअर/सबजेक्ट प्रॉपर्टी फॉर्म हर उधारकर्ता को फ़ाइल पर काम करता है, इसलिए वह लोन/बॉरोवर/सबजेक्ट प्रॉपर्टी फॉर्म हर उधारकर्ता को फ़ाइल पर काम करता है। टैब और फलक शीर्षक अब अनुवाद से आते हैं और Borrower(s). ऋण और ऋण विषय संपत्ति हार्डकोडेड अंग्रेजी थी और अब अगली-intl के माध्यम से भी हल हो गई।.
· kamo-internal
एक ऑन / ऑफ स्विच के पीछे, पते से ईमेल टेम्पलेट को ड्राइव करें
संगीतकार पाद लेख में टेम्पलेट पिकर चला गया है। कौन सा टेम्पलेट एक संदेश पहनता है एक नहीं है जिस तरह से इसे भेजा जाता है, उससे अलग निर्णय: सदस्य का अपना प्राथमिक पता उनके रूप में इंगित करता है, एक डिपार्टमेंट मेलबॉक्स विभाग के संपर्क विवरण के साथ उस विभाग के रूप में संकेत करता है, संगठन के संपर्क मेलबॉक्स ने इसे संगठन के रूप में दर्शाया है, और अन्य सदस्य के मेलबॉक्स संकेत यह सदस्य है। वह सब जो चुनने के लिए छोड़ दिया जाता है वह क्या है? उसी कोने में स्विच करें। इसे बंद करने से शरीर को ठीक तरह टाइप किया जाता है। संपादक ने उस राज्य में एक हस्ताक्षर दिखाया जबकि भेजे गए संदेश में कोई नहीं था, क्योंकि एक नल टेम्पलेट DEFAULT CONFIG के लिए वापस गिर गया केवल पूर्वावलोकन करें; यह अब नंगे प्रस्तुत करता है, इसलिए स्क्रीन पर क्या है? इसके अलावा नौकरी शीर्षक और विभाग को कभी भी एक रचनात्मक हस्ताक्षर में दिखाई नहीं देता है - वे बंद लटकाते हैं टीम सदस्य और नौकरी के रूप में आते हैंतिलआधिकारिक / नौकरीशीर्षक और विभागशीर्षक, नौकरीशीर्षक और नहीं डिपार्टमेंट - और मोबाइल लाइन को पॉप्युलेट करता है उपयोगकर्तासेलफोन पहले से ही गेट हो गया।.
· kamo-internal
एक बार में हर उपलब्ध एजेंट को प्रतीक्षा टिकट प्रदान करें
· kamo-internal
Teal स्वीकार-request popup, नेत्रहीन नेतृत्व चेतावनी से अलग
· kamo-internal
उसी खोज योग्य पिकर से मेलबॉक्स स्विच करें संगीतकार का उपयोग करता है
स्विचर जोड़ी का कमजोर आधा था: एक चयन हर जगह होल्डिंग मेलबॉक्स सदस्य खुल सकता है, जो ऑर्ग-वाइड एक्सेस के लिए हर मेलबॉक्स में है org. यह भी कहा जाता है / दुर्गम, जो उनमें से सभी को बनाता है पेज लोड - प्रति सदस्य और प्रति मेलबॉक्स एक अन्य क्वेरी। अब एक बटन खुला मेलबॉक्स दिखा रहा है, MailboxPickerDialog खोलने के खिलाफ /sendable। कुछ भी पूरी सूची को लोड नहीं करता है, और स्विचर और से फ़ील्ड उसी शीर्षक के तहत समान मेलबॉक्स प्रदान करते हैं क्योंकि वे पढ़ते हैं समान समापन बिंदु। Aliases = झूठ के माध्यम से Aliase को बाहर रखा गया है। मेल में एक भूमि के लिए भेजा इसके पीछे मेलबॉक्स, इसलिए खोलने के लिए कुछ भी नहीं है; to OpenableMailbox मना कर दिया उन्हें रक्षा की दूसरी पंक्ति के रूप में जाना जाता है। चयन बहाल व्यवहार में अपरिवर्तित है: क्वेरी स्ट्रिंग पहले से ही आईडी और पता चला है, इसलिए बटन खुद को बिना इंतजार किए लेबल करता है एक लुकअप और केवल डिस्प्ले नाम को हल करता है अगर यह सस्ता है।.
· EmailService
चलो /सेंडेबल कॉलर्स के लिए उपनाम समूह को छोड़ दें जो मेलबॉक्स खोलते हैं
/ संदेश मेलबॉक्स स्विचर कम्पोज़र से समान सेट प्रदान करता है फ़ील्ड, माइनस एक चीज़: एक उपनाम खोला नहीं जा सकता है। मेल इसे संबोधित इसके पीछे मेलबॉक्स में भूमि, इसलिए इसमें कोई फ़ोल्डर नहीं है और दिखाने के लिए कुछ नहीं है। कॉलर द्वारा फ़िल्टर किए जाने के बजाय सर्वर-साइड को छोड़ दिया गया ताकि कुल ठहरें ईमानदार - एक पृष्ठ से एक ग्राहक ड्रॉपिंग पंक्तियों की रिपोर्ट होगी '24 of दिखाओ' 41234', जबकि 21.
· kamo-internal
शुद्ध स्वीकार्य-पॉपअप निर्णय मशीन और प्रति सदस्यीय स्नूज़
· kamo-internal
Queue-summary और दावा समापन बिंदुओं को प्रॉक्सी करें
· kamo-internal
निष्पादित दस्तावेज़ डाउनलोड करें और एक वास्तविक हस्ताक्षर ऑर्डर चुनें
प्रेषक के पास सभी पर समाप्त दस्तावेज़ के लिए कोई मार्ग नहीं था। EnvelopeSummary एक हस्ताक्षरितDocumentUrl ने कैमो-सिग्नर ऐप के स्वयं के अंदर इशारा किया BFF, एक हस्ताक्षरकर्ता सत्र द्वारा प्रमाणित - तो एकमात्र व्यक्ति जो सकता है कभी वापस आने के लिए आखिरी हस्ताक्षरकर्ता था, चार घंटे के लिए। जोड़ें OTK प्रॉक्सी मार्ग और हर पूरा लिफाफे पर एक डाउनलोड कार्रवाई। संवाद ने रूटिंगऑर्डर 1, 2, 3 भी भेजा ..., जो आदेश दिया गया था और किया गया था कभी लागू नहीं होता। इसलिए विकल्प स्पष्ट है: किसी भी आदेश (कभी कभी एक साथ आमंत्रित किया जाता है, आज के व्यवहार और डिफ़ॉल्ट) या एक समय में। Refusals अब "Action असफल" के बजाय अपना कारण दिखाते हैं - ESigService उन्हें शब्दों में कहते हैं और उन्हें फेंक दिया जा रहा था - और फिर से भेजें / शून्य जहाँ सेवा केवल 409 तक होगी वहां छिपे हुए हैं।.
· EmailService
E-signature टेम्पलेट्स के लिए चर पूर्वावलोकन
व्यवस्थापक टेम्पलेट संपादक एक कुंजी के लिए प्रत्येक प्लेसहोल्डर रिक्त प्रस्तुत करता है कोई नमूनाVariables हाथ नहीं, इसलिए सात esign टेम्पलेट्स एक पृष्ठ के रूप में पूर्वावलोकन खाली अंतराल - पांच नए जीवन चक्र नोटिस सहित। एक साझा हाथ लाइफसाइकिल पांच के लिए, निमंत्रण और स्टेप-अप कोड के लिए प्लस हथियार।.
· kamo-shared-library
पांच लिफाफे-lifecycle ईमेल टेम्पलेट्स जो कभी नहीं लिखा गया था
एक ई-हस्ताक्षर लिफाफे वास्तव में दो टेम्पलेट थे: निमंत्रण और निमंत्रण स्टेप-अप कोड जो कुछ भी होता है उसके लिए कुछ भी मौजूद नहीं है संकेत - यही कारण है कि हस्ताक्षरकर्ता ऐप "एक हस्ताक्षरित प्रतिलिपि होगी" का वादा करता है सभी पक्षों को ईमेल किया गया है और ऐसा कोई ईमेल कभी नहीं भेजा गया है। Esign.envelope fulld (प्रत्येक पार्टी की निष्पादित प्रतिलिपि) जोड़ता है, ************* esign.signer decoderd, esign.envelope voided और esign.envelope expired, CANONICAL KEYS के साथ प्रविष्टियाँ जिसके बिना प्रत्येक प्रेषक स्थायी 404 है। इसके अलावा दो मौजूदा प्रतीक निकायों में मुफ्त पाठ से बचे: टेम्पलेटरेंडरर कोई escaping के साथ विकल्प, और एक प्राप्तकर्ता नाम, दस्तावेज़ शीर्षक और स्टाफ-टाइप संदेश सभी मुफ्त टेक्स्ट हैं। सादे वेरिएंट की आपूर्ति की जाती है क्योंकि प्रति-ऑर्ग पंक्तियां केवल सम्मिलित होती हैं। EsignLifecycleTemplateटेस्ट पिन स्थिर -> डॉट-की -> भेजे गए कुंजी ट्रिपल और हर जगहधारक एक प्रेषक है जो वास्तव में भरता है।.
· MediaService
एक सशर्त अद्यतन के साथ टिकट दावा दौड़ तय
· kamo-internal
सात सुसंगत टैब में बंधक बाजार सेटिंग्स का पुनर्निर्माण
मोर्टगेज मार्केट पेज ने पंद्रह टैब, उनमें से बारह ऋणदाता विन्यास किया, और कई ने दो स्थानों में उसी सवाल का जवाब दिया: हेजिंग को स्विच किया गया था पूंजी बाजार के तहत जबकि इसकी सहिष्णुता नीतियों के तहत रहती थी, सर्विसिंग मॉडल और सर्विसिंग शर्तें अलग टैब थे, उत्पाद सक्षमता ने एक किया चैनल प्रतिबंध जबकि चैनल नियमों की अनुमति और अनुमति चैनल, और प्रतिनिधिमंडल को तीन स्थानों पर सेट किया गया था, जिसमें कुछ भी नहीं कहा गया था। प्रश्न द्वारा समूहित एक ऑपरेटर वास्तव में जवाब दे रहा है: संस्थान व्यवसाय मॉडल, underwriting प्राधिकरण, लाइसेंसिंग उत्पाद सक्षमता, चैनल नियमों, जोखिम ओवरले की पेशकश पूंजी बाजार निष्पादन मुद्रा, मूल्य निर्धारण नीति, पूंजी नीति निवेशकों और उनके प्रतिनिधिमंडल, ओवरले, वितरण, प्रतिबद्धता सर्विसिंग मुद्रा, सर्विसिंग नीति स्वचालन एआई स्वायत्तता, प्रति चरण विश्वास दीवारों सहयोगी प्रदाता कनेक्शन, विक्रेता निर्देशिका जहां एक सेटिंग वास्तव में कई स्थानों से हल हो जाती है, पृष्ठ अब इतना कहता है ऑपरेटर को अनुमान लगाने के बजाय: प्राधिकरण अनुभाग में कहा गया है कि ऑपरेटर को अनुमान लगाने के लिए छोड़ दिया जाए: प्रतिनिधिमंडल पूर्वता, चैनल-नियम संकेत कहते हैं कि निवेशक वितरण नियम बीट्स उन्हें, और सर्विसिंग प्रेषण लक्ष्य को ऑर्ग डिफ़ॉल्ट के रूप में लेबल किया गया है। प्रत्येक अनुभाग एक नए विन्यास किट से बनाया गया है, जो लगभग सौ लाइनों की जगह लेता है एक खंड खोल के साथ प्रति टैब डुप्लिकेट लोड / सेव / आतंकवाद / स्नैकबार प्लंबिंग, एक टेबल, एक बार बचाओ और एक टोस्ट प्रति टैब। लाइसेंस, जोखिम ओवरले और प्रदाता कनेक्शन प्राप्त इनलाइन संपादन - एपीआई हमेशा इसे समर्थित करता है, इसलिए एक टाइपो को ठीक करना जिसका मतलब पंक्ति को हटाने के लिए किया जाता है। चार निवेशक उप संपादक एक खंडित नियंत्रण के पीछे एक घटक बन गया, इसलिए निवेशक की लागत को खोलना चार के बजाय एक अनुरोध। अवलोकन lender-profile readout को lenderProfile के लिए वायर्ड बनाता है, lenderProfileValidation and changeLog: तीन समापन बिंदुओं के बाद से अस्तित्व में था सतह का निर्माण किया गया था और कुछ भी नहीं कहा गया था, इसलिए कोई रास्ता नहीं था यह देखने के लिए कि क्या एक प्रोफ़ाइल मान्य है या किस मॉड्यूल पर इसे स्विच किया गया है। पुराने स्लग के खिलाफ टकसाल लिंक को चुपचाप लैंडिंग के बजाय वापस ले लिया जाता है अवलोकन, चूंकि सेटिंग्स व्यू एक अज्ञात? टैब = सूचकांक 0 को हल करता है।.
· kamo-internal
एक खोज योग्य संवाद से पते को चुनें, ड्रॉपडाउन नहीं
एक चयन इस सूची को नहीं पकड़ सकता है। सब कुछ / संदेश स्विचर प्रदान करता है भेजने योग्य, और ACCESS ALL MEMBER MAILBOXES के साथ एक सदस्य के लिए जो हर एक है org में मेलबॉक्स - एक बड़े में दस हजार। अब संगीतकार वर्तमान प्रेषक को एक बटन के रूप में दिखाता है और एक पिकर खुलता है जो खोजता है और उसे खोलता है। सर्वर पर पृष्ठ, इसलिए कुछ भी नहीं पूरे सेट को लोड करता है। पिकर शेल को सदस्य पिकर डायलॉग से निकाला जाता है, जो पहले से ही हल हो गया। यह org निर्देशिका के लिए: debouncing, पेजिंग, आउट-ऑर्डर प्रतिक्रियाओं, अनंत स्क्रॉल, कीबोर्ड नेविगेशन, ग्रुप हेडिंग्स और खाली, त्रुटि और लोडिंग स्क्रीन। SearchablePickerDialog अब यह सब मालिक है और एक लेता है लांचर प्लस एक पंक्ति रेंडरर। MemberPickerDialog इसके साथ एक रैपर है इसके मालिक अपरिवर्तित, इसलिए प्रबंधक क्षेत्र, चैट सदस्य जोड़ें और ई-सिग्न खोज untouched हैं; MailboxPickerDialog दूसरा रैपर है। ग्रुप हेडिंग्स स्विचर की अपनी अनुवाद कुंजी का फिर से उपयोग करते हैं, इसलिए वही मेलबॉक्स दो स्थानों में नामित दो अलग-अलग चीजों को समाप्त नहीं कर सकता है। किसी अन्य सदस्य के रूप में पालन करना अभी भी उस सदस्य के उपनाम प्रदान करता है: वे हैं मेलबॉक्स के बजाय एक पहचान पर संबोधित करते हैं, इसलिए समापन बिंदु — जो लॉग-इन सदस्य के लिए उत्तर - उन्हें नहीं जानते। संगीतकार विलय उन्हें पिकर के विजेता हुक के माध्यम से पहले पृष्ठ पर जाना जाता है।.
· EmailService
खोज योग्य, पते के लिए पृष्ठबद्ध समापन बिंदु एक सदस्य से भेज सकते हैं
GET/api/email/mailboxes/sendable उत्तर समान प्रश्न के रूप में /accessible — प्रत्येक पता सदस्य के रूप में भेज सकते हैं - लेकिन एक विलय धारा के रूप में जो है डेटाबेस में खोजा और पेज किया गया। / दुर्गम एक पिकर की सेवा नहीं कर सकता। यह प्रत्येक समूह को पूर्ण रूप से भौतिक बनाता है, और ACCESS ALL MEMBER MAILBOXES को रखने वाले सदस्य के लिए जिसका मतलब है हर किसी को चलना ऑर्ग में सदस्य और फिर प्रति सदस्य और दूसरा प्रति सदस्य एक क्वेरी जारी करना मेलबॉक्स कर्मचारियों के पांच आंकड़ों में यह दस हजार प्रश्नों और एक के दस है प्रत्येक कॉल पर मैच के लिए पेलोड। केवल विशेषाधिकार प्राप्त पूंछ SQL में है; सदस्य के अपने मेलबॉक्स, Aliases और साझा मेलबॉक्स जावा में गिना जाता है और हमेशा पहले सॉर्ट किया जाता है, इसलिए अपने स्वयं के पते की खोज कभी पृष्ठ 40 पर उत्तर नहीं दी जाती है। मेलबॉक्स कई अनुदानों के माध्यम से पहुंच योग्य एक बार सूचीबद्ध किया गया है, जो कि सबसे कम है - एक ही नियम लागू होता है, इसलिए कोई पहचान दो बार दिखाई देती है। पंक्तियाँ उन समूह को ले जाती हैं, जो वे दूसरे सदस्य के मेलबॉक्स के लिए आए थे, इसके लिए मालिक, इसलिए ग्राहक मेलबॉक्स स्विचर के उपयोग के समान हेडिंग प्रदान कर सकता है। नाम संकल्प बिल्कुल सदस्य के रूप में गिरावट करता हैDisplayName करता है; दोनों को करना है सहमत या उसी व्यक्ति दो स्थानों में अलग-अलग पढ़ता है।.
· MediaService
कॉलर के दावे योग्य टिकट कतार की रिपोर्ट करें
· MediaService
GET/types/{typeId}/slots इसलिए सेटिंग्स संपादक स्लॉट सूची कर सकते हैं
सेटिंग्स यूआई ने हमेशा इस पथ को प्राप्त किया है, लेकिन केवल POST/PUT/DELETE थे। मैप किया गया, इसलिए उपलब्धता स्लॉट टैब को 405 मिली और खाली कर दिया गया। विपरीत /slots / उपलब्ध यह फ़िल्टरिंग के बिना प्रकार पर हर सक्रिय स्लॉट को रिटर्न देता है अग्रिम बुकिंग नोटिस या चाइल्ड-ऑर्ग प्रतिबंधों द्वारा - एक व्यवस्थापक को देखने की जरूरत है स्लॉट वे कॉन्फ़िगर किए गए हैं, जिनमें कोई भी वर्तमान में बुक नहीं कर सकता है। प्रतिबंध प्रत्येक स्लॉट के बच्चे में सवारी करते हैंसंगठन, इसलिए यह भी यूआई को पढ़ा गया/स्लॉट/प्रतिबंधों को प्रतिस्थापित करता है।.
· MediaService
एक सेवा में दावा करने योग्य टिकट भविष्यवाणी के मालिक
· kamo-internal
किसी विभाग और संगठन को मेलबॉक्स सौंप दें
डिपार्टमेंट संवाद का संपर्क ईमेल मुफ्त टेक्स्ट था, इसलिए यह एक पता नाम दे सकता था org मालिक नहीं है। यह ऑर्ग के वास्तविक मेलबॉक्स पर एक पिकर बन जाता है - एक ही सूची ********** प्रदान करता है, इसलिए "साइन करने योग्य मेलबॉक्स" का मतलब है जहां भी यह पेशकश की जाती है उसी सेट। वैकल्पिक, और "नॉन" दोनों डिफ़ॉल्ट हैं और कैसे आप unassign; क्षेत्र में एक स्पष्ट बटन यह एक क्लिक में करता है। Behavior-labeling संपर्क जानकारी अपने ईमेल टेक्स्ट फ़ील्ड को वास्तव में रखता है जैसा कि यह था और इसके नीचे एक ही पिकर प्राप्त होता है। दोनों स्वतंत्र हैं: पाठ क्षेत्र क्या है? org प्रकाशन, मेलबॉक्स में से एक का नाम है org खुद. एक मेलबॉक्सचयन दोनों स्क्रीन पर कार्य करता है ताकि वे एक साझा कैश प्राप्त करने पर बहाव नहीं कर सकें इसलिए संपर्क जानकारी की पठन पंक्ति और उसके पिकर प्रत्येक अनुरोध सूची नहीं है। The राज्यों को उद्देश्य पर अलग रखा गया है: कोई मेलबॉक्स के साथ एक org, एक मेल बैकेंड जो है नीचे, और एक मेलबॉक्स हटा प्रदाता-साइड अन्यथा सभी को खाली के रूप में प्रस्तुत किया जाएगा क्षेत्र। पिछले एक को "अब उपलब्ध नहीं" के रूप में दिखाया गया है, बजाय unassigned लग रहा है, क्योंकि एक कहानी सूचक जिसे भी ठीक करने के लिए दिखाई देना पड़ता है। विभाग सूचक के साथ हल पते को भेजता है। एक सुरक्षा सेवा मेलबॉक्स में मौजूद होने से पहले निर्मित इसे अनदेखा करता है और ईमेल पढ़ता है, इसलिए इसके बिना यह परिवर्तन प्रत्येक विभाग के पते को साफ़ करने के लिए पहली बार एक के खिलाफ बचाया गया था वर्तमान में निर्माण को तैनात किया गया। पुनर्निर्माण सेवा क्षेत्र को अनदेखा करती है; पुल को हटा दें एक बार जब हर वातावरण का निर्माण होता है।.
· InitializerService
विभागों और अंग के लिए मेलबॉक्स पॉइंटर्स, और विभागों को वापस भरें
DEPTS.MAILBOX ID और ORGS.CONTACT MAILBOX ID, दोनों सादे UUID के साथ कोई FK नहीं है। email provider.mailboxes: मेलबॉक्स बाहरी प्रदाताओं से सिंक होते हैं और हटाया जा सकता है प्रदाता-साइड, और मेलबॉक्स डिलीट एंडपॉइंट डिपार्टमेंट्स के बारे में कुछ नहीं जानता, इसलिए एक वास्तविक FK उन दोनों को विफलताओं में बदल देगा। DEPTS.EMAIL मुक्त पाठ था और एक मिश्रण धारण किया। पता है कि वास्तव में ऑर्ग के एक हैं मेलबॉक्स से जुड़े हुए हैं और मेलबॉक्स के अपने आवरण में फिर से लिखा जाता है - Support@KamoCRM.com कभी नहीं कि मेलबॉक्स को कैसे संबोधित किया जाता है। मेलबॉक्स के साथ कोई पता नहीं लगाया जा सकता है पिकर द्वारा व्यक्त किया गया जो क्षेत्र को प्रतिस्थापित करता है, इसलिए उन्हें मंजूरी दी जाती है; यही वह है विनाशकारी बयान और यह सोच रहा है कि Sales@ और Corporate@ को कवर किया गया है। ORGS.CONTACT EMAIL को अकेले छोड़ दिया जाता है। यह अपना टेक्स्ट इनपुट रखता है और मेलबॉक्स बैठता है इसे बदलने के बजाय इसके बगल में।.
· kamo-shared-library
अपने मेलबॉक्स में से एक में एक विभाग और एक ओरग बिंदु दें
एक विभाग का संपर्क ईमेल मुफ्त टेक्स्ट था, इसलिए यह एक पता का नाम दे सकता था कि ऑर्ग करता है नहीं -- आज एक सेट के साथ तीन विभागों में से दो बिल्कुल ऐसा करते हैं। अब ऑर्ग के मेलबॉक्स में से एक के लिए एक सूचक रखती है, और संगठन उसी को प्राप्त करता है सूचक अपने मौजूदा contactEmail के बगल में, जो अनछिपे हुए है। असाइनमेंट एक सूचक है और अधिक कुछ नहीं है: यह रिकॉर्ड करता है जो विभाग को मेलबॉक्स करता है या org पर पहुंच जाता है, और इसमें कोई भी पहुंच नहीं देता है। दोनों कॉलम सादे UUID हैं, जिनमें ईमेल provider.mailboxes के लिए कोई FK नहीं है, जानबूझकर। मेलबॉक्स बाहरी प्रदाताओं से सिंक होते हैं और प्रदाता-साइड को हटा सकते हैं, और उन्हें हटा दिया जा सकता है। मेलबॉक्स डिलीट एंडपॉइंट डिपार्टमेंट्स के बारे में कुछ नहीं जानता - एक वास्तविक FK दोनों को बदल देगा उन लोगों की विफलताओं में से। एक कहानी सूचक स्वीकार्य लागत है और यूआई इसे सतहों पर है। विभाग.email ठहरता है, पते को निर्दिष्ट मेलबॉक्स को हल करता है। उपभोक्ता एक पता चाहते हैं, आईडी नहीं और मेलबॉक्स पते immutable हैं (UpdateMailbox केवल एक डिस्प्ले नाम और पासवर्ड स्वीकार करता है), इसलिए प्रति नहीं बहती है। असाइनिंग दोनों लिखते हैं; क्लियरिंग नल दोनों। किसी अन्य संगठन से मेलबॉक्स है इनकार कर दिया - पिकर केवल इस ओरग को प्रदान करता है, लेकिन इसके बिना अनुरोध किया जा सकता है, और एक क्रॉस-टेंडेंट पॉइंटर ने दूसरे के आउटबाउंड मेल पर एक ओरग का पता लगाया।.
· kamo-internal
स्थिति पर एक प्रबंधक क्षेत्र, और पूरे ऐप के लिए एक व्यक्ति पिकर
स्थिति कार्ड लाभ प्रबंधक, वैकल्पिक। यह एक खोज है, ड्रॉपडाउन नहीं: एक org पकड़ सकता है हजारों नाम, और उनमें से सभी के साथ चयन करने वाली एकमात्र चीज एक स्क्रॉल है। एक अस्वीकृत प्रबंधक - एक रिपोर्टिंग पाश कहते हैं - सर्वर के कारण को बल्कि सर्वर के कारण को दर्शाता है सामान्य विफलता सदस्य पर कार्य नहीं कर सकता। MemberPickerDialog पिकर है। सर्वर पर रन खोजें, परिणाम एक पृष्ठ पर एक पृष्ठ पर पहुंचें समय और स्क्रॉल अगले एक के लिए पूछता है, इसलिए यहां कुछ भी निर्देशिका नहीं रखती है। यह पढ़ता है एक कमांड पैलेट क्योंकि यह किसी व्यक्ति के लिए सबसे तेज़ मार्ग है जो नाम जानता है, जबकि ब्राउज़िंग अभी भी उन लोगों के लिए काम करता है जो नहीं करते हैं: तीर चालें, एंटर पिक्स, एस्केप बंद हो जाते हैं, और पाद लेख ऐसा कहते हैं। पंक्तियाँ शीर्षक, विभाग, ईमेल और रिपोर्ट गिनती - के लिए पर्याप्त एक ही नाम के साथ दो लोगों को बताएं। जो किसी को नहीं चुना जा सकता है, वह दिखाई दे सकता है कारण संलग्न; एक नाम जो चुपचाप सूची में नहीं है, एक बग के रूप में पढ़ता है। दो पिकर्स पहले से ही अस्तित्व में थे और न ही एक बड़ी ओर जीवित रह सकता था। ई-सिग्न हस्ताक्षरकर्ता संवाद और चैट के ऐड-मेम्बर्स पॉपओवर दोनों ने हर सदस्य को आकर्षित किया और इसमें फ़िल्टर किया। ब्राउज़र दोनों अब इस संवाद को प्रस्तुत करते हैं, अपने स्वयं के स्रोतों को बनाए रखते हुए - एक हस्ताक्षरकर्ता किसी भी हो सकता है सदस्य, चैट की निर्देशिका सिर्फ स्टाफ नहीं है - और उसी खोज, कीबोर्ड प्राप्त करना हैंडलिंग और देखो। पॉपओवर AddChatMembersDialog बन गया, क्योंकि यह अब एक नहीं है पॉपओवर.
· SecurityService
प्रबंधक को सेट करें, और निर्देशिका को एक समय में एक पृष्ठ पर खोजें
GET ******************* सत्र org की निर्देशिका के एक पृष्ठ का उत्तर देता है। डेटाबेस में खोज, ऑर्डरिंग और पेजिंग होती है; एक छात्रावास ? आकार = कैप्ड है। शब्द हैं एंडेड और लाइके मेटाcharacters भाग गए, इसलिए अंडरस्कोर के साथ एक पेस्टेड ईमेल ने संकीर्ण किया इसे चौड़ा करने के बजाय खोज करें। प्लेटफॉर्म सिस्टम उपयोगकर्ता कभी दिखाई नहीं देता है। सदस्य-सुरक्षा अब प्रबंधक को पढ़ा और लिखते हैं। तीन अस्वीकृति, आदेश में एक कॉलर उन्हें मारो: इस ओर के एक टीम सदस्य नहीं, खुद को, या जो पहले से ही रिपोर्ट करता है इस सदस्य के माध्यम से - अंतिम रिपोर्टिंग लाइन को लूप में बंद कर देगा, कोई क्वेरी नहीं चल रही है। यह समाप्त हो सकता है, यही कारण है कि यह स्कीमा में नहीं रह सकता। प्रबंधक को किसी भी चीज से पहले हल किया जाता है। बचाना एक लेनदेन है भूमिकाओं, अधिकारों, टाइमआउट और स्थिति; 400 भाग के माध्यम से वापस लौटना अभी भी प्रतिबद्ध होगा उस बिंदु तक सब कुछ लिखा जाता है, इसलिए जवाब एक खारिज प्रबंधक की रिपोर्ट करेगा जबकि भूमिकाओं को चुपचाप बदल दिया। MemberAvatarUrlService नए कोड में अवतार यूआरएल निर्माण का घर है। कई नियंत्रक उन निजी प्रतियों को ले जाते हैं जो बहती हैं - लेखा नियंत्रक अभी भी उठाता है उदाहरण के साथ फोटो एक्सटेंशन, जो एक हाइबरनेट प्रॉक्सी के लिए झूठी है और एक .png कार्य करता है। एक JPEG के लिए यूआरएल।.
· kamo-shared-library
एक प्रबंधक, और एक निर्देशिका खोज जो एक बड़ा org जीवित रहता है
TeamMember, जो यह रिपोर्ट करता है, उसके लिए एक वैकल्पिक आत्मनिर्भरता प्राप्त करता है। कॉलम परिभाषा है INT8 के लिए पिन किया गया ताकि हाइबरनेट सदस्य की प्रतिलिपि नहीं कर सके। आईडी के DEFAULT unique rowid () में शामिल होने पर कॉलम और बैकफिल हर पंक्ति में एक प्रबंधक जो मौजूद नहीं है। TeamMemberRepo gains searchDirectory: org की निर्देशिका का एक पृष्ठ, फ़िल्टर किया गया, आदेश दिया और डेटाबेस में विंडो किया गया। यह कर्मचारियों के पांच आंकड़ों के साथ orgs के लिए लिखा जाता है, इसलिए कॉलर कभी एक पृष्ठ से अधिक नहीं रखता है - पिकर यह बैक हर कीस्ट्रोक पर चलता है। नियम एक concatenated haystack के खिलाफ हैं, जो कि "ana lending" खोजने की अनुमति देता है An in Lending; ORed LIKE की एक श्रृंखला नहीं, क्योंकि LIKE केवल विवादास्पद से मेल खाती है। पाठ प्रत्येक संघ एक स्पष्ट LEFT के साथ जुड़ा हुआ है: एक अवैध पथ में शामिल होने वाला INNER है जेपीक्यूएल में और चुपचाप एक विभाग के बिना सभी को छोड़ देंगे। चक्र स्कीमा में व्यक्त नहीं किया जा सकता है, इसलिए findManagerId लेखक को चलना प्रबंधक को स्वीकार करने से पहले एक समय में एक लिंक की रिपोर्टिंग करना।.
· InitializerService
एक टीम के सदस्य को प्रबंधक देना
सदस्य team member को MANAGER ID जोड़ता है, रिपोर्टिंग के लिए एक विनम्र आत्म-प्राप्ति रेखा। कुछ भी नहीं है backfilled: कोई प्रबंधक एक पूरा जवाब है, दोनों के शीर्ष पर चार्ट और किसी के लिए बस असाइन नहीं किया गया। DROP DEFAULT लोड-असर बयान है, नहीं ADD COLUMN — ddl-auto: अद्यतन पहले स्तंभ बनाता है। सदस्य के लिए कॉलम में शामिल हों, जिनके आईडी INT8 DEFAULT है अद्वितीय rowid(), उस डिफ़ॉल्ट को तब तक विरासत में मिलती है जब तक कि इकाई स्तंभ परिभाषा को पिन नहीं करती है, जो प्रत्येक मौजूदा पंक्ति को यादृच्छिक प्रबंधक आईडी के साथ मुद्रित करेगा। अनाथ और आत्मसम्मान स्पष्ट ids कि एक डिफ़ॉल्ट स्तंभ पहले से ही लिखा होगा स्वीप।.
· InitializerService
DEPTS.PARENT DEPT ID को नेस्टेड डिपार्टमेंट्स के लिए जोड़ें
नो बैकफिल के साथ उपलब्ध - शून्य का मतलब शीर्ष स्तर है, जो हर मौजूदा है विभाग था और सबसे अधिक रहना होगा। एक स्पष्ट DROP DEFAULT के साथ घोषित सादे UUID। विभागों की कुंजी बंद UUID DEFAULT gen random uuid(), और एक FK स्तंभ जो उस डिफ़ॉल्ट को प्राप्त करता है प्रत्येक मौजूदा पंक्ति पर एक यादृच्छिक माता-पिता के साथ मुद्रांकित, उनमें से सभी को अनाथन और इस प्रकार की बाधा को विफल करना।.
· SecurityService
मूल विभाग को बनाने और अद्यतन करने के माध्यम से थ्रेड करें
डिपार्टमेंट सर्विस अब आठ पोजीशनल तर्कों के बजाय अपना अनुरोध डीटीओ लेता है, इसलिए माता-पिता एक ही प्रकार की पंक्ति में नौवें बनने के बजाय पेलोड में शामिल हो जाता है तार। उत्परिवर्ती समापन बिंदुओं पर ऑर्ग स्कोपिंग अपरिवर्तित है; माता-पिता की अपनी दृढ़ता साइकिल गार्ड के साथ सेवा में जीवन की जांच करें।.

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