ઉત્પાદન અને SKU આર્કિટેક્ચર: સ્ટ્રક્ચર્ડ કૉન્ફિગરેશન સિસ્ટમ
આ લેખ સમજાવે છે કે કેવી રીતે અમે હજારો ઉત્પાદન કૉન્ફિગરેશન મેનેજ કરવા માટે સ્ટ્રક્ચર્ડ SKU સિસ્ટમનો ઉપયોગ કરીએ છીએ.
સમસ્યા: કોમ્બિનેટોરિયલ વિસ્ફોટ
કૉન્ફિગર કરી શકાય તેવા ઉત્પાદનમાં ઘણા વિકલ્પો હોય છે:
- 17 ચેસિસ પ્રકારો × 17 પ્રોસેસર × 8 RAM કદ × 19 સ્ટોરેજ કદ × 6 WiFi વિકલ્પો × 9 OS વિકલ્પો = 2,372,112 સંભવિત કૉન્ફિગરેશન્સ
દરેક કૉન્ફિગરેશનને મેન્યુઅલી મેનેજ કરવું અશક્ય છે:
-
2,372,112 ઉત્પાદન વર્ણનો લખવા
-
2,372,112 કિંમત ગણતરીઓ જાળવવી
-
2,372,112 ઇન્વેન્ટરી રેકોર્ડ્સ ટ્રેક કરવા
-
2,372,112 ઉત્પાદન પૃષ્ઠો બનાવવા
અમને એવી સિસ્ટમની જરૂર છે જે કૉન્ફિગરેશન્સને ડાયનેમિક રીતે જનરેટ કરે.
ઉકેલ: SKU-આધારિત આર્કિટેક્ચર
અમે હાઇફન-અલગ કરાયેલ SKU સ્ટ્રક્ચરનો ઉપયોગ કરીએ છીએ જ્યાં દરેક સેગમેન્ટ એક ઘટકનું પ્રતિનિધિત્વ કરે છે:
ફોર્મેટ: ચેસિસ-બોર્ડ-RAM-ફ્લેશ-એડેપ્ટર-WiFi-OS-ઍક્સેસરીઝ
ઉદાહરણ: Treo-97-8-512-65-ax200-W11P-KM
આ SKU થી, અમે આ કરી શકીએ છીએ:
-
લક્ષણો કાઢો (પ્રોસેસર, RAM, સ્ટોરેજ)
-
કિંમત ગણો (ઘટકોની કિંમતોનો સરવાળો)
-
વર્ણન જનરેટ કરો (ઘટકોના નામો જોડો)
-
સ્ટોક તપાસો (બધા ઘટકો ઉપલબ્ધ છે તે ચકાસો)
સિંગલ સોર્સ ઓફ ટ્રૂથ: productdb
ઉત્પાદન ડેટાબેઝ (productdb.json) એ તમામ ઉત્પાદન માહિતી માટે સિંગલ સોર્સ ઓફ ટ્રૂથ છે:
-
ફોર્મેટ: ટોપ-લેવલ કીઝ તરીકે શ્રેણીઓ સાથે JSON
-
શ્રેણીઓ: ચેસિસ, બોર્ડ, RAM, ફ્લેશ, એડેપ્ટર, WiFi BT, OS, ઍક્સેસરીઝ, ઘટક, કસ્ટમ
Productdb સ્ટ્રક્ચર
દરેક ઉત્પાદનમાં છે:
-
PartID: અનન્ય ઓળખકર્તા (દા.ત., "Treo", "97", "8")
-
internal: કર્મચારીઓ માટે આંતરિક નામ
-
external: ગ્રાહકો માટે બાહ્ય નામ
-
class: સુસંગતતા નિયમો માટે ઉત્પાદન વર્ગ
-
allows: સુસંગત ભાગો પરના નિયંત્રણો
-
provides: આ ભાગ દ્વારા પૂરા પાડવામાં આવેલી સુવિધાઓ
-
weight: ગ્રામમાં વજન
-
constituents: કમ્પોઝિટ ભાગો માટે, ઉપ-ઘટકોની સૂચિ
ઉદાહરણ Productdb એન્ટ્રી
Productdb એન્ટ્રીઓમાં તેમની સ્પેસિફિકેશન્સ સાથે ચેસિસ, બોર્ડ, RAM, ફ્લેશ, એડેપ્ટર, WiFi BT, OS અને ઍક્સેસરીઝનો સમાવેશ થાય છે.
SKU સ્ટ્રક્ચર
SKU એ Part ID ની હાઇફન-અલગ કરાયેલ સ્ટ્રિંગ છે:
-
ફોર્મેટ:
{ચેસિસ}-{બોર્ડ}-{RAM}-{ફ્લેશ}-{એડેપ્ટર}-{WiFi BT}-{OS}-{ઍક્સેસરીઝ} -
ઉદાહરણ:
Treo-97-8-512-65-ax200-W11P-KM -
લંબાઈ: હંમેશા 8 ભાગો (કેટલીક શ્રેણીઓ વૈકલ્પિક હોય ત્યારે ખાલી હોઈ શકે છે)
SKU પાર્સિંગ
SKU ને part_sequence નો ઉપયોગ કરીને પાર્સ કરવામાં આવે છે જે શ્રેણીઓનો ક્રમ વ્યાખ્યાયિત કરે છે.
લક્ષણો કાઢવા
લક્ષણોને find_features() નો ઉપયોગ કરીને productdb માંથી કાઢવામાં આવે છે:
- ભાગથી શરૂ કરો: productdb માંથી ભાગ મેળવો
- પૂરા પાડે છે ઉમેરો:
providesફીલ્ડમાંથી તમામ લક્ષણો કૉપી કરો - ઘટકો પ્રક્રિયા કરો: ઉપ-ઘટકોમાંથી લક્ષણો રિકર્સિવલી ઉમેરો
- સંખ્યાત્મક મૂલ્યો ગુણાકાર કરો: જથ્થા માટે (દા.ત., વજન, RAM)
લક્ષણ એગ્રિગેશન
સંપૂર્ણ SKU માટે, બધા ભાગોમાંથી લક્ષણો એકત્રિત કરવામાં આવે છે. એગ્રિગેશન પ્રક્રિયા SKU માંના તમામ ભાગોમાંથી લક્ષણોને જોડે છે.
લક્ષણ ક્રમ
feature_sequence વ્યાખ્યાયિત કરે છે કે લક્ષણો કેવી રીતે પ્રદર્શિત થાય છે:
-
કી: લક્ષણ નામ (દા.ત., "પ્રોસેસર મોડેલ", "સ્ક્રીન સાઇઝ")
-
વેલ્યુ:
UnitઅનેHeadingસાથે ડિક્ટ -
હેડિંગ્સ: પ્રોસેસિંગ, ડિસ્પ્લે, ઑડિયો, કનેક્ટિવિટી, નેટવર્કિંગ, પાવર, એન્વાયર્નમેન્ટલ, ફિઝિકલ, ઍક્સેસરીઝ, ઓપરેટિંગ સિસ્ટમ
લક્ષણ ક્રમ
feature_sequence તેમના એકમો અને હેડિંગ્સ સાથે લક્ષણો કેવી રીતે પ્રદર્શિત થાય છે તે વ્યાખ્યાયિત કરે છે.
ફિલ્ટરિંગ માટે ફેસેટ્સ
FACETS_FOR_FILTERING feature_sequence માંથી ડાયનેમિક રીતે જનરેટ થાય છે:
-
બાકાત રાખે છે: OS લક્ષણો, પરિમાણો, વજન, કેશ
-
હેડિંગ દ્વારા જૂથબદ્ધ કરે છે: પ્રોસેસિંગ, ડિસ્પ્લે, ઑડિયો, વગેરે.
-
માટે ઉપયોગ: ક્વેરી પૃષ્ઠ ફિલ્ટર્સ, ઉત્પાદન શોધ
ફિલ્ટર ફેસેટ્સ સ્ટ્રક્ચર
FACETS_FOR_FILTERING ક્વેરી પૃષ્ઠ ફિલ્ટર્સ માટે લક્ષણોને હેડિંગ દ્વારા જૂથબદ્ધ કરે છે.
લક્ષણ કોષ્ટકો
લક્ષણ કોષ્ટકો product_features() માંથી જનરેટ થાય છે:
- હેડિંગ દ્વારા જૂથબદ્ધ કરો: પ્રોસેસિંગ, ડિસ્પ્લે, વગેરે.
- મૂલ્યો ફોર્મેટ કરો: જ્યાં લાગુ પડે ત્યાં એકમો ઉમેરો
- 2-કૉલમ લેઆઉટમાં પ્રદર્શિત કરો: ઉત્પાદન પૃષ્ઠો માટે સંતુલિત
લક્ષણ કોષ્ટક ઉદાહરણ
| પ્રોસેસિંગ | |
|---|---|
| પ્રોસેસર મોડેલ | ઇન્ટેલ i5-12400 |
| કોર્સ | 6 |
| મહત્તમ ફ્રીક્વન્સી | 4.4 GHz |
| મુખ્ય મેમરી | 16 GB |
| ડિસ્પ્લે | |
|---|---|
| સ્ક્રીન સાઇઝ | 21.5 ઇંચ |
| રિઝોલ્યુશન | 1920 × 1080 |
| બ્રાઈટનેસ | 250 નિટ્સ |
ક્રોસ-રેફરન્સિસ
-
ઉત્પાદન પૃષ્ઠો અને ડેટાશીટ્સ - ઉત્પાદન પૃષ્ઠો માટે ઉત્પાદન માહિતી કેવી રીતે એસેમ્બલ કરવામાં આવે છે
-
ક્વેરી પૃષ્ઠ જનરેશન - શોધ ક્વેરીઓ ફિલ્ટરિંગ માટે લક્ષણોનો ઉપયોગ કેવી રીતે કરે છે
-
શોધ સેવા આર્કિટેક્ચર - શોધ ફિલ્ટરિંગમાં લક્ષણોનો ઉપયોગ કેવી રીતે થાય છે
-
અનુવાદ સિસ્ટમ - ઉત્પાદન લક્ષણોનું અનુવાદ કેવી રીતે થાય છે
બાહ્ય લિંક્સ
-
PynamoDB ડોક્યુમેન્ટેશન - ઉત્પાદન ડેટા માટે વપરાતો DynamoDB ORM
-
Flask ડોક્યુમેન્ટેશન - એપ્લિકેશન માટે વેબ ફ્રેમવર્ક
-
JSON.org - JSON ફોર્મેટ સ્પેસિફિકેશન
સારાંશ
ઉત્પાદન અને SKU આર્કિટેક્ચર પૂરી પાડે છે:
-
સિંગલ સોર્સ ઓફ ટ્રૂથ: તમામ ઉત્પાદન માહિતી માટે productdb.json
-
લક્ષણો કાઢવા: ભાગોમાંથી ઓટોમેટિક લક્ષણ એગ્રિગેશન
-
ફિલ્ટરિંગ: ક્વેરી પૃષ્ઠ ફિલ્ટર્સ માટે FACETS_FOR_FILTERING
-
લક્ષણ કોષ્ટકો: ઉત્પાદન પૃષ્ઠો માટે જૂથબદ્ધ લક્ષણો
-
SKU પાર્સિંગ: ઉત્પાદન રચના માટે હાઇફન-અલગ કરાયેલ Part ID