# Launch प्लान उत्पाद मैपिंग समवर्ती सुधार

प्राधिकरण समीक्षा का AUTH-03 ठीक किया गया। केवल Launch सर्वर और संबंधित रिग्रेशन परीक्षण बदले गए, SDK डिप्लॉय या प्रकाशित नहीं हुआ; Licentivo और SDK के प्राधिकरण निर्णय की सीमा अपरिवर्तित है।

## बदलें

- मैपिंग सहेजते समय लेनदेन में पहले साझा Launch उत्पाद रिकॉर्ड, फिर प्लान संस्करण लॉक करें। अलग प्लान या प्रक्रिया के सेव अनुरोध इस तरह एक ही उत्पाद लॉक का पालन करते हैं; टकराव अनुरोध HTTP 409 `PRODUCT_MAPPING_CONFLICT` लौटाता है।
- `products.licentivo_product_id` स्थिर सार्वजनिक उत्पाद रूट सहेजता है। पहली सफल मैपिंग सेव के बाद उसी Launch उत्पाद के अन्य प्लान केवल यही Licentivo उत्पाद चुन सकते हैं; उसकी अलग नीतियाँ चुनना अनुमत है। यह फ़ील्ड सुविधा अधिकार, डिवाइस कोटा या ग्राहक प्राधिकरण स्थिति नहीं रखता।
- ग्राहक पहचान स्थिर रूट पढ़ती है, सभी प्लान का अधिकतम संस्करण देखकर उत्पाद नहीं चुनती। प्लान प्रकाशित करने और SDK एकीकरण कॉन्फ़िगरेशन बनाने पर भी वही बाइंडिंग जाँची जाती है।
- पुराने डेटाबेस में स्वतः nullable फ़ील्ड जोड़ा जाता है। स्थिर फ़ील्ड न होने वाले डेटा में क्रम से भुगतान आदि खरीद इतिहास, पुराने प्रकाशन रिकॉर्ड और शेष मैपिंग देखी जाती हैं; समान प्राथमिकता पर कई उत्पाद होने से स्पष्ट टकराव दिखता है, अनुमान नहीं लगाया जाता। अद्वितीय खरीदा उत्पाद असंबंधित ड्राफ़्ट से प्राथमिक है, फिर संगत मैपिंग सहेजने से बाइंडिंग स्थिर हो सकती है। उत्पाद सामग्री संपादन बाइंडिंग बनाए रखता है।

ऐतिहासिक त्रुटिपूर्ण डेटा जो कई Licentivo उत्पादों पर बेचा गया था, अब भी मैनुअल जाँच माँगता है; यह परिवर्तन खरीद रिकॉर्ड या दूरस्थ लाइसेंस नहीं बदलता। दूसरे Licentivo उत्पाद पर जाने के लिए नया Launch उत्पाद बनाना चाहिए, नए प्लान से पुराने उत्पाद का रूट नहीं बदला जा सकता।

कार्यान्वयन [मैपिंग सहेजना](https://github.com/spf86/licentivo-launch/blob/main/internal/app/connections.go), [उत्पाद रूट](https://github.com/spf86/licentivo-launch/blob/main/internal/app/product_mapping.go), [पहचान जारी करना](https://github.com/spf86/licentivo-launch/blob/main/internal/app/identity.go), [प्रकाशन सत्यापन](https://github.com/spf86/licentivo-launch/blob/main/internal/app/catalog.go), [एकीकरण जाँच](https://github.com/spf86/licentivo-launch/blob/main/internal/app/integration.go), [डेटा मॉडल](https://github.com/spf86/licentivo-launch/blob/main/internal/storage/models.go) में देखें।

## स्थानीय सत्यापन

| जाँचें | परिणाम |
| --- | --- |
| सुधार से पहले के कार्यान्वयन से तुलना | वही रिग्रेशन परीक्षण दो टकराते सेव एक साथ सफल होना लगातार पकड़ता है और अपेक्षा अनुसार विफल होता है |
| सुधार के बाद मैपिंग विशेष रिग्रेशन | टकराते अनुरोधों में एक सफल, एक 409; दोनों संगत सेव सफल; भुगतान सिंक के बाद पहचान गलत ड्राफ़्ट से प्रभावित नहीं; SDK एकीकरण परत सही उत्पाद संदर्भ स्वीकार करती है |
| ऐतिहासिक डेटा सुरक्षा | खरीदा रूट प्राथमिक, अस्पष्टता पर त्रुटि, गलत ड्राफ़्ट प्रकाशन निषिद्ध, गलत ऐतिहासिक प्रकाशन SDK कॉन्फ़िगरेशन नहीं बना सकता, सामग्री संपादन बाइंडिंग रखता है: सभी सफल |
| सभी Go स्रोत पैकेज और MySQL रिग्रेशन | 192 परीक्षण सफलता रिकॉर्ड, उप-परीक्षण सहित; कोई विफलता नहीं। `TestProductUploadRoundTrip` छोड़ा गया, सफलता में नहीं गिना गया |
| पुराने डेटाबेस संरचना अपग्रेड | रूट कॉलम रहित संरचना आरंभीकरण से nullable फ़ील्ड प्राप्त करती है; बार-बार आरंभीकरण सफल |
| वास्तविक Launch, Licentivo और Go SDK संयुक्त परीक्षण | 13 व्यावसायिक चरण सफल, खरीद, वास्तविक हस्ताक्षरित सुविधा निष्पादन, सामान्य बंद कर बहाली, लॉगआउट, दूरस्थ अनलिंक, पुरानी पीढ़ी, नवीनीकरण रिफ़ंड, खाता निरस्तीकरण और रिफ़ंड/चार्जबैक के बाद निष्पादन अस्वीकृति सहित |
| अंतिम अतिरिक्त परीक्षण | नए खाली डेटाबेस में मैपिंग विशेष रिग्रेशन सफल, ऐतिहासिक प्रकाशन की एकीकरण कॉन्फ़िगरेशन जाँच सहित; `go vet` सफल |

पूर्ण रिग्रेशन और वास्तविक सेवा संयुक्त परीक्षण के बाद अंत में SDK एकीकरण जाँच की संगति जाँच जोड़ी गई और इस परिदृश्य वाला विशेष रिग्रेशन तथा `go vet` अलग दोबारा चलाए गए। पुराने कार्यान्वयन की अपेक्षित विफलता यह प्रमाणित करती है कि परीक्षण मूल रेस पकड़ता है, यह अनसुलझी रिग्रेशन विफलता नहीं है।

संयुक्त परीक्षण में स्थानीय अलग MySQL 8.0.32, वर्तमान Licentivo सेवा और वास्तविक Go SDK उपयोग हुए; भुगतान चैनल और DeepL अलग सिमुलेटेड सेवाएँ थीं, वास्तविक शुल्क या भुगतान अनुवाद नहीं हुआ। समवर्ती और ऐतिहासिक गलत मैपिंग विशेष परीक्षण वास्तविक Launch व्यवसाय, MySQL और प्रोटोकॉल सिमुलेटर उपयोग करते हैं; नौ SDK के लिए इस दौर में वास्तविक सेवा संयुक्त परीक्षण पूरा होने का दावा नहीं है।

इस दौर में `192.168.2.177` तक पहुँच नहीं की गई। इस बार शुरू MySQL और Licentivo अस्थायी प्रक्रियाएँ बंद की गईं, मौजूदा सेवाएँ रखी गईं। मूल सामग्री अनदेखी निर्देशिका `.local/mapping-fix-20261024/` में है, साझा योग्य सारांश [सत्यापन प्रमाण](https://github.com/spf86/licentivo-launch/blob/main/docs/product-mapping-fix-evidence-2026-10-24.json) देखें।
