Saturday, March 28, 2026

bmart-test

 यूज़र स्टोरी: ऑर्डर बुकिंग वर्कफ़्लो

यूज़र स्टोरी

एक ऑर्डर बुकिंग एजेंट / एडमिन के तौर पर, मेरे पास ऑर्डर बुकिंग UI का एक्सेस है जो दो मोड में काम करता है, यानी "Current Order Mode" और "Pending Orders Mode",


मैं Section-1A में कीवर्ड्स के ज़रिए कस्टमर्स को खोजना चाहता हूँ, और फिर Section-2 में प्रोडक्ट्स खोजना, कैटेगरी के हिसाब से फ़िल्टर करना, और क्वांटिटी (स्टैंडर्ड और लूज़ आइटम दोनों) एडजस्ट करना चाहता हूँ,


ताकि मैं Section-3 में रियल-टाइम स्टॉक की उपलब्धता और कीमत के आधार पर कस्टमर का ऑर्डर सही-सही तैयार कर सकूँ।


एक्सेप्टेंस सिनेरियो

सिनेरियो 1: कीवर्ड के ज़रिए कस्टमर्स को खोजना

यह देखते हुए कि मैं ऑर्डर बुकिंग विंडो के अंदर Current Order Mode में "Customer Info" टैब पर हूँ,


जब मैं कस्टमर सर्च बॉक्स में CustomerDatabase में सेव किए गए कस्टमर के डेटा का पूरा या कोई हिस्सा या कीवर्ड(s) डालता हूँ,


तो सिस्टम को डाले गए कीवर्ड्स से जुड़े कस्टमर(s) दिखाना शुरू कर देना चाहिए, हर लाइन में एक कस्टमर,


और मैं उस पर क्लिक करके उसे चुनता हूँ,


और सिस्टम CustomerDatabase से कस्टमर का उपलब्ध डेटा निकालता है और उसे अपने-आप संबंधित फ़ील्ड्स में लोड कर देता है,


और सिस्टम अपने-आप CustomerType को "Saved" पर सेट कर देता है,


और कुछ भी (न तो फ़ील्ड(s) और न ही बटन(s)) लॉक नहीं होना चाहिए ताकि मैं बदलाव कर सकूँ।


सिनेरियो 2: नए कस्टमर्स का डेटा रिकॉर्ड करना


यह देखते हुए कि मैं ऑर्डर बुकिंग विंडो के अंदर Current Order Mode में "Customer Info" टैब पर हूँ,


जब मैं कीवर्ड(s) डालकर खोजने की कोशिश करता हूँ, अगर CustomerDatabase में किसी कस्टमर का डेटा नहीं मिलता है, तो सर्च बॉक्स में कुछ भी नहीं आता है,


तो मैं इनपुट फ़ील्ड्स को मैन्युअली भरता हूँ,


और मैं रेडियो-बटन्स को मैन्युअली चुनता हूँ,


और सिस्टम अपने-आप CustomerType को "Unsaved" पर सेट कर देता है,


और सिस्टम को नए कस्टमर का डेटा CustomerDatabase में सेव नहीं करना चाहिए, बल्कि सिर्फ़ OrdersDatabase में CustomerType को "Unsaved" के तौर पर सेव करना चाहिए।


 सिनेरियो 3: कीवर्ड से प्रोडक्ट खोजना

यह देखते हुए कि मैं Order Booking UI के "Stock Info" टैब पर हूँ, जबकि सिस्टम Section-2 में StockDatabase से उपलब्ध सभी प्रोडक्ट्स की लिस्ट दिखा रहा है,


जब मैं प्रोडक्ट सर्च बॉक्स में टेक्स्ट या डिजिट के रूप में कोई पूरा कीवर्ड या उसका कोई हिस्सा डालना शुरू करता हूँ,


तो सिस्टम को प्रोडक्ट्स दिखाना शुरू कर देना चाहिए; हर प्रोडक्ट एक कार्ड में दिखेगा, जिसमें StockDatabase में उसकी संबंधित रो (row) के किसी भी कॉलम में वह टेक्स्ट या डिजिट मौजूद होगा।


सिनेरियो 4: कैटेगरी और सब-कैटेगरी के हिसाब से प्रोडक्ट्स को फ़िल्टर करना

यह देखते हुए कि कई प्रोडक्ट कैटेगरी हैं, जैसे "Food", "Personal Care", "Pet Care", वगैरह।


जब मैं "Food" फ़िल्टर चिप पर क्लिक करता हूँ,


तो प्रोडक्ट्स की लिस्ट में सिर्फ़ वही प्रोडक्ट्स दिखने चाहिए जो "Food" कैटेगरी से जुड़े हैं,


और "Food" चिप हाइलाइट होनी चाहिए, जिससे पता चले कि फ़िल्टर चालू है।


सिनेरियो 5: ऑर्डर में कोई स्टैंडर्ड (यूनिट-आधारित) आइटम जोड़ना

यह देखते हुए कि कोई प्रोडक्ट, जैसे "Salt", "50" के स्टॉक के साथ उपलब्ध है,


जब मैं मात्रा (quantity) को कम-ज़्यादा करने के लिए "+" या "-" बटन पर क्लिक करता हूँ, या मात्रा एडजस्टर में मात्रा खुद डालता हूँ—जैसे "2"—और फिर "+Add to Order" बटन पर क्लिक करता हूँ,


तो दाईं ओर के पैनल में Section-3 (यानी "Order Summary") में "Salt" की बदली हुई यूनिट्स, तय की गई मात्रा और ज़रूरी जानकारियों के साथ अपडेट हो जाना चाहिए,


और सिस्टम StockDatabase में बदली हुई/तय की गई मात्रा को 10 मिनट के लिए 'सॉफ्ट-फ़्रीज़' कर देता है,


और कुल कीमत (running total) में उसका खर्च (2 * SellPrice) दिखना चाहिए।


परिदृश्य 6: खुली चीज़ों के चयन को संभालना (वज़न/आयतन)

मान लीजिए कोई उत्पाद, उदाहरण के लिए, "सरसों का तेल" एक खुली चीज़ के रूप में बेचा जाता है,


जब मैं माप इकाई ड्रॉपडाउन से माप इकाई "L" (लीटर) चुनता हूँ, और मैं मात्रा समायोजक फ़ील्ड में "1.5" डालता हूँ, और मैं "+Add to Order" पर क्लिक करता हूँ,


तो Section-3 में ऑर्डर सारांश में "सरसों के तेल" की "1.5 L" मात्रा सही-सही दर्ज होनी चाहिए, और सिस्टम StockDatabase में समायोजित/निर्धारित मात्रा को 10 मिनट के लिए अस्थायी रूप से फ़्रीज़ कर देता है,


और कुल योग में लागत (1.5 * विक्रय मूल्य) दिखाई देनी चाहिए।


परिदृश्य 7: किसी ऑर्डर को सहेजना / "ऑर्डर लंबित" के रूप में चिह्नित करना

मान लीजिए मैं "वर्तमान ऑर्डर" मोड में हूँ, और Section-1A यानी ग्राहक जानकारी में केवल अनिवार्य या सभी फ़ील्ड भरे हुए हैं, और Section-3 यानी ऑर्डर सारांश में एक या अधिक उत्पाद जोड़े गए हैं,


जब मैं Section-3 में "Mark as Pending" बटन पर क्लिक करता हूँ,


तो सिस्टम को चाहिए कि-


ऑर्डर को सभी उपलब्ध विवरणों के साथ OrdersDatabase में "Order Pending" स्थिति के साथ सहेजे

उस दिनांक/समय को OrdersDatabase में "OrderPendingTimestamp" कॉलम में लिखे (न कि OrderDate में)

ग्राहक प्रकार ("Saved" या "Unsaved") को OrdersDatabase में कॉलम B में लिखे

ब्राउज़र कैश से BookerID प्राप्त करे और उसे OrdersDatabase के "BookerID" कॉलम में अपडेट करे

"ORD-YYYYMMDD-OrderNumber" फ़ॉर्मेट में एक अद्वितीय Order ID बनाए,

और Order Booking UI स्वयं खाली होकर रीसेट हो जाए ताकि "वर्तमान ऑर्डर" मोड में नया ऑर्डर स्वीकार किया जा सके या "लंबित ऑर्डर" मोड से कोई ऑर्डर लोड किया जा सके।


परिदृश्य 8 (A): "लंबित ऑर्डर" मोड के माध्यम से सूची से कोई ऑर्डर प्राप्त करना

यह मानते हुए कि मैं Order Booking UI के अंदर Pending Orders मोड में Order Info टैब पर हूँ, सिस्टम OrdersDatabase से लाए गए सभी ऑर्डरों की सूची दिखाता है; सभी ऑर्डरों की स्थिति अलग-अलग रंग कोड में दिखाई जाती है, जिन पर "Order Pending", "Order Booked", "Order In-transit", "Order Reached", "Order Rescheduled", "Delivery Success" या "Delivery Failed" लिखा होता है।


जब मैं किसी ऑर्डर पर क्लिक करता हूँ,


तब सिस्टम OrdersDatabase से उपलब्ध सभी विवरणों के साथ उस ऑर्डर को Current Order मोड में लोड करता है,


और मैं पूरे ऑर्डर या उसके किसी भी विवरण को अपडेट या संपादित करता हूँ,


और मैं उस ऑर्डर को Pending के रूप में चिह्नित करता हूँ या उसे बुक करता हूँ,


और सिस्टम उस ऑर्डर को उसकी स्थिति (OrderStatus) के अनुसार OrdersDatabase में भेजता है, और स्थिति के आधार पर संबंधित टाइमस्टैम्प कॉलम (AI-AQ) को अपडेट करता है।


परिदृश्य 8 (B): Pending Order Mode में Search का उपयोग करके किसी ऑर्डर को पुनः प्राप्त करना

यह मानते हुए कि मैं Order Booking UI के अंदर Pending Orders मोड में Order Info टैब पर हूँ, सिस्टम डेटाबेस से लाए गए सभी ऑर्डरों की सूची दिखाता है; सभी ऑर्डरों की स्थिति अलग-अलग रंग कोड में दिखाई जाती है, जिन पर "Order Pending", "Order Booked", "Order In-transit", "Order Reached", "Order Rescheduled", "Delivery Success" या "Delivery Failed" लिखा होता है।


जब मैं Search-cum-suggestion बॉक्स में ग्राहक से संबंधित (ग्राहक का नाम / ग्राहक का फ़ोन नंबर / ग्राहक ID आदि) या ऑर्डर से संबंधित (ऑर्डर ID / ऑर्डर की कुल राशि आदि) कीवर्ड डालता हूँ,


तब सिस्टम डाले गए कीवर्ड के आधार पर विवरण प्राप्त करता है, और चुने गए (shortlisted) ऑर्डरों की सूची दिखाता है,


और मैं किसी ऑर्डर पर क्लिक करता हूँ,


और सिस्टम डेटाबेस से उपलब्ध सभी विवरणों के साथ उस ऑर्डर को Current Order मोड में लोड करता है,


और मैं उस ऑर्डर या उसके किसी भी विवरण को अपडेट या संपादित करता हूँ,


और मैं उस ऑर्डर को Pending के रूप में चिह्नित करता हूँ या उसे बुक करता हूँ,


और सिस्टम उस ऑर्डर को उसकी स्थिति (OrderStatus) के अनुसार OrdersDatabase में भेजता है, और स्थिति के आधार पर संबंधित टाइमस्टैम्प कॉलम (AI-AQ) को अपडेट करता है।

परिदृश्य 9: किसी ऑर्डर को "Order Booked" के रूप में चिह्नित करना

यह मानते हुए कि मैं "Current Order" मोड में हूँ, और Section-1A (यानी Customer Information) में केवल अनिवार्य फ़ील्ड या सभी फ़ील्ड भरे हुए हैं, और Section-3 (यानी Order Summary) में एक या एक से अधिक उत्पाद जोड़े गए हैं,


जब मैं "Book Order" बटन पर क्लिक करता हूँ,


तो सिस्टम को निम्नलिखित कार्य करने चाहिए-


ब्राउज़र कैश से BookerID प्राप्त करना और उसे OrdersDatabase के "BookerID" कॉलम में अपडेट करना

"ORD-YYYYMMDD-OrderNumber" फ़ॉर्मेट में एक अद्वितीय Order ID जेनरेट करना

छह-अंकों के फ़ॉर्मेट में एक रैंडम और अद्वितीय Delivery Code जेनरेट करना

छह-अंकों के फ़ॉर्मेट में एक रैंडम और अद्वितीय Cancel Code जेनरेट करना

एक अद्वितीय ऑर्डर ट्रैकिंग लिंक जेनरेट करना

उस Date/Time को OrdersDatabase के "OrderBookedTimestamp" कॉलम में लिखना (न कि OrderDate में)

CustomerType ("Saved" या "Unsaved") को OrdersDatabase के Column B में लिखना,

और सिस्टम, सभी उपलब्ध विवरणों के साथ ऑर्डर डेटा को "Order Booked" स्थिति के साथ डेटाबेस में भेजता है,


और Order Booking UI स्वयं को खाली (empty) के रूप में रीसेट कर लेता है, ताकि "Current Order" मोड में नया ऑर्डर स्वीकार किया जा सके या "Pending Orders" मोड से कोई ऑर्डर लोड किया जा सके।


परिदृश्य 10: स्टॉक से बाहर (out-of-stock) वस्तुओं के चयन को रोकना

यह मानते हुए कि किसी उत्पाद, उदाहरण के लिए "Sugar" (चीनी), का स्टॉक स्तर "0" या "Out of stock" है,


जब मैं Order Booking UI के Section-2 (यानी Stock/Products Information सूची) में उस उत्पाद को देखता हूँ,


तो उस उत्पाद का कार्ड (product card) देखने में धुंधला (dimmed) दिखाई देना चाहिए (opacity 0.5),


और स्टॉक स्तर "0" या "Out of stock" का स्पष्ट संकेत दिखाना चाहिए,


और "+Add to Order" बटन निष्क्रिय (disabled) होना चाहिए।


परिदृश्य 11: मौजूदा ग्राहकों के लिए CustomerType का स्वतः पता लगाना (auto-detection)

यह मानते हुए कि मैं "Current Order" मोड में "Customer Info" टैब पर हूँ,


जब मैं "Smart Search" का उपयोग करके CustomerDatabase से किसी मौजूदा ग्राहक को खोजता और चुनता हूँ,


तो सिस्टम स्वचालित रूप से आंतरिक CustomerType फ़्लैग को "Saved" पर सेट कर देता है,


और जब ऑर्डर सहेजा जाता है (चाहे "Pending" के रूप में या "Booked" के रूप में), तो सिस्टम OrdersDatabase के Column B (CustomerType) में "Saved" लिख देता है।

परिदृश्य 12: नए ग्राहकों के लिए CustomerType का अपने-आप पता लगाना

यह मानते हुए कि मैं "Current Order Mode" में "Customer Info" टैब पर हूँ,


जब मैं एक ऐसा फ़ोन नंबर डालता हूँ जो CustomerDatabase में मौजूद नहीं है और ग्राहक की जानकारी खुद भरता हूँ,


तो सिस्टम अपने-आप अंदरूनी CustomerType फ़्लैग को "Unsaved" पर सेट कर देता है,


और जब ऑर्डर सेव किया जाता है (चाहे Pending के तौर पर या Booked के तौर पर), तो सिस्टम OrdersDatabase में Column B (CustomerType) में "Unsaved" लिख देता है।


परिदृश्य 13: Pending Orders Mode में डिफ़ॉल्ट Order Status फ़िल्टर

यह मानते हुए कि मैं अभी "Current Order Mode" में हूँ,


जब मैं "Pending Orders Mode" पर जाता हूँ,


तो सिस्टम अपने-आप डिफ़ॉल्ट रूप से "Order Pending" स्टेटस चिप चुन लेता है,


और ऑर्डर की सूची में केवल वे ऑर्डर दिखाई देते हैं जिनका OrderStatus = "Order Pending" है।


परिदृश्य 14: स्टेटस चिप्स के आधार पर ऑर्डर फ़िल्टर करना

यह मानते हुए कि मैं Pending Orders mode में "Order Info" टैब पर हूँ,


जब मैं "Order Booked" स्टेटस चिप पर क्लिक करता हूँ,


तो ऑर्डर की सूची में केवल वे ऑर्डर दिखाई देने चाहिए जिनका OrderStatus = "Order Booked" है,


और "Order Booked" चिप को हाइलाइट किया जाना चाहिए ताकि पता चले कि फ़िल्टर चालू है,


और पहले से चुनी गई "Order Pending" चिप को हटा दिया जाना चाहिए (अगर single selection mode में है)।


परिदृश्य 15: संयुक्त स्थिति फ़िल्टर और खोज कार्यक्षमता

यह मानते हुए कि मैं "लंबित ऑर्डर" मोड में "ऑर्डर जानकारी" टैब पर हूँ और "ऑर्डर लंबित" स्थिति चिप (status chip) चुनी हुई है,


जब मैं खोज बॉक्स में ग्राहक का फ़ोन नंबर "9876543210" डालता हूँ,


तब सिस्टम केवल वे ऑर्डर दिखाता है जिनका OrderStatus = "ऑर्डर लंबित" है और जो फ़ोन नंबर "9876543210" से मेल खाते हैं,


और जैसे-जैसे मैं टाइप करता हूँ (कम से कम 3 अक्षरों के बाद), परिणाम वास्तविक समय में अपडेट होते रहते हैं।


परिदृश्य 16: सभी ऑर्डर दिखाने के लिए स्थिति चिप्स को अचयनित करना

यह मानते हुए कि मैं "लंबित ऑर्डर" मोड में "ऑर्डर जानकारी" टैब पर हूँ और "ऑर्डर बुक किया गया" स्थिति चिप वर्तमान में चुनी हुई है,


जब मैं पहले से चुनी हुई "ऑर्डर बुक किया गया" चिप पर क्लिक करके उसे अचयनित करता हूँ,


तब स्थिति चाहे जो भी हो, सभी ऑर्डर ऑर्डर सूची में दिखाई देने चाहिए (बशर्ते कोई सक्रिय खोज कीवर्ड न हो),


और कोई भी स्थिति चिप हाइलाइट नहीं होनी चाहिए।


परिदृश्य 17: एकाधिक स्थिति चयन (यदि लागू हो)

यह मानते हुए कि मैं "लंबित ऑर्डर" मोड में "ऑर्डर जानकारी" टैब पर हूँ,


जब मैं "ऑर्डर लंबित" चिप (जो पहले से चुनी हुई है) पर Ctrl+क्लिक करता हूँ और फिर "ऑर्डर बुक किया गया" चिप पर क्लिक करता हूँ,


तब वे ऑर्डर दिखाई देने चाहिए जिनका OrderStatus = "ऑर्डर लंबित" है या OrderStatus = "ऑर्डर बुक किया गया" है,


और सक्रिय फ़िल्टर को इंगित करने के लिए दोनों चिप्स हाइलाइट होनी चाहिए।

No comments:

Post a Comment