SKU ರಚನೆ: ಹೈಫನ್-ವಿಭಜಿತ ಘಟಕ ವಿನ್ಯಾಸ

ಈ ಲೇಖನವು ನಮ್ಮ SKU (ಸ್ಟಾಕ್ ಕೀಪಿಂಗ್ ಯೂನಿಟ್) ವ್ಯವಸ್ಥೆಯು ಪ್ರತಿಯೊಂದು ಉತ್ಪನ್ನ ಸಂರಚನೆಯನ್ನು ಅನನ್ಯವಾಗಿ ಗುರುತಿಸಲು ಮತ್ತು ಶಕ್ತಿಶಾಲಿ ವೈಶಿಷ್ಟ್ಯ ಹೊರತೆಗೆಯುವಿಕೆ ಮತ್ತು ಫಿಲ್ಟರಿಂಗ್ ಅನ್ನು ಸಾಧ್ಯಗೊಳಿಸಲು ಹೈಫನ್-ವಿಭಜಿತ ರಚನೆಯನ್ನು ಹೇಗೆ ಬಳಸುತ್ತದೆ ಎಂಬುದನ್ನು ವಿವರಿಸುತ್ತದೆ.

ಸಮಸ್ಯೆ: ಉತ್ಪನ್ನ ಸಂರಚನೆಗಳನ್ನು ಗುರುತಿಸುವುದು

ಒಂದು ಮಿನಿ ಪಿಸಿಗೆ ಸಾವಿರಾರು ಸಂರಚನೆಗಳು ಇರಬಹುದು:

  • ಚೇಸಿಸ್: ಟ್ರಿಯೊ, ಎಸ್, ಎಚ್ (ವಿಭಿನ್ನ ರೂಪ ಅಂಶಗಳು)

  • ಬೋರ್ಡ್: ಎನ್100, i5-1335U, i7-1355U (ವಿಭಿನ್ನ ಪ್ರೊಸೆಸರ್ಗಳು)

  • ರ್ಯಾಮ್: 4GB, 8GB, 16GB, 32GB, 64GB

  • ಫ್ಲ್ಯಾಶ್: 128GB, 256GB, 512GB, 1TB, 2TB

  • ಅಡಾಪ್ಟರ್: 2H (2 HDMI), 2D (2 ಡಿಸ್ಪ್ಲೇಪೋರ್ಟ್), 1H1D (1 HDMI + 1 ಡಿಸ್ಪ್ಲೇಪೋರ್ಟ್)

  • WiFi: W6 (WiFi 6), W6E (WiFi 6E), ಯಾವುದೂ ಇಲ್ಲ

  • OS: 11P (ವಿಂಡೋಸ್ 11 ಪ್ರೋ), U (ಉಬುಂಟು), DOS (ಫ್ರೀಡಾಸ್)

  • ಆಕ್ಸೆಸರಿಗಳು: ಕೀಬೋರ್ಡ್, ಮೌಸ್, VESA ಮೌಂಟ್, ಇತ್ಯಾದಿ.

3 ಚೇಸಿಸ್ × 10 ಬೋರ್ಡ್ಗಳು × 5 ರ್ಯಾಮ್ × 5 ಫ್ಲ್ಯಾಶ್ × 5 ಅಡಾಪ್ಟರ್ಗಳು × 3 WiFi × 3 OS = 33,750 ಸಾಧ್ಯ ಸಂರಚನೆಗಳೊಂದಿಗೆ, ನಮಗೆ ಪ್ರತಿಯೊಂದನ್ನು ಗುರುತಿಸಲು ಒಂದು ವ್ಯವಸ್ಥಿತ ಮಾರ್ಗ ಬೇಕಾಗಿದೆ.

ಪರಿಹಾರ: ಹೈಫನ್-ವಿಭಜಿತ SKU

ನಾವು ಹೈಫನ್-ವಿಭಜಿತ ರಚನೆಯನ್ನು ಬಳಸುತ್ತೇವೆ, ಅಲ್ಲಿ ಪ್ರತಿ ಸ್ಥಾನವು ಒಂದು ಘಟಕ ವರ್ಗವನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ:

Treo-N100-8-256-2H-W6-11P

ಇದು ಪ್ರತಿ ಸಂರಚನೆಗೆ ಒಂದು ಅನನ್ಯ ಗುರುತಿಸುವಿಕೆಯನ್ನು ಸೃಷ್ಟಿಸುತ್ತದೆ.

SKU ವಿಭಜನೆ

graph LR
    SKU[Treo-N100-8-256-2H-W6-11P]
    SKU --> C[Treo
ಚೇಸಿಸ್] SKU --> B[N100
ಬೋರ್ಡ್/CPU] SKU --> R[8
ರ್ಯಾಮ್ GB] SKU --> F[256
ಫ್ಲ್ಯಾಶ್ GB] SKU --> A[2H
ಅಡಾಪ್ಟರ್] SKU --> W[W6
WiFi 6] SKU --> O[11P
ವಿಂಡೋಸ್ 11 ಪ್ರೋ]

ಭಾಗಗಳ ಅನುಕ್ರಮ

SKU ಕೋಡ್ನಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಸ್ಥಿರ ಅನುಕ್ರಮವನ್ನು ಅನುಸರಿಸುತ್ತದೆ:

part_sequence = [
    Categories.CHASSIS,      # ಸ್ಥಾನ 0
    Categories.BOARD,        # ಸ್ಥಾನ 1
# ... (ಅನುಷ್ಠಾನದ ವಿವರಗಳು ಬಿಟ್ಟುಬಿಡಲಾಗಿದೆ)

ಪ್ರತಿ SKU ಕನಿಷ್ಠ ಮೊದಲ 7 ಘಟಕಗಳನ್ನು ಹೊಂದಿರಬೇಕು (ಚೇಸಿಸ್ ಮೂಲಕ OS). ಆಕ್ಸೆಸರಿಗಳು ಐಚ್ಛಿಕ.

ಘಟಕ ವರ್ಗಗಳು

1. ಚೇಸಿಸ್

ಭೌತಿಕ ಆವರಣ ಮತ್ತು ರೂಪ ಅಂಶ:

  • ಟ್ರಿಯೊ: ಇತ್ತೀಚಿನ ಮಿನಿ ಪಿಸಿ ಚೇಸಿಸ್ (ಸಾಂದ್ರ, ಆಧುನಿಕ ವಿನ್ಯಾಸ)

  • ಎಸ್: ಸಣ್ಣ ರೂಪ ಅಂಶ (ಸಾಂದ್ರ ಡೆಸ್ಕ್ಟಾಪ್)

  • ಎಚ್: ಪ್ರಮಾಣಿತ ರೂಪ ಅಂಶ (ಸಾಂಪ್ರದಾಯಿಕ ಡೆಸ್ಕ್ಟಾಪ್)

ಚೇಸಿಸ್ ನಿರ್ಧರಿಸುತ್ತದೆ:

  • ಭೌತಿಕ ಆಯಾಮಗಳು

  • ಮೌಂಟಿಂಗ್ ಆಯ್ಕೆಗಳು (VESA, ಡೆಸ್ಕ್ಟಾಪ್)

  • ಉಷ್ಣ ವಿನ್ಯಾಸ (ಫ್ಯಾನ್ಲೆಸ್ vs ಫ್ಯಾನ್-ಕೂಲ್ಡ್)

  • ಪೋರ್ಟ್ ಲೇಔಟ್

2. ಬೋರ್ಡ್

ಪ್ರೊಸೆಸರ್ನೊಂದಿಗಿನ ಮದರ್ಬೋರ್ಡ್:

  • ಎನ್100: ಇಂಟೆಲ್ N100 (4 ಕೋರ್ಗಳು, 3.4GHz, 6W TDP)

  • ಎನ್150: ಇಂಟೆಲ್ N150 (4 ಕೋರ್ಗಳು, 3.6GHz, 6W TDP)

  • i5-1335U: ಇಂಟೆಲ್ ಕೋರ್ i5 13ನೇ ಜನರೇಶನ್ (10 ಕೋರ್ಗಳು, 4.6GHz, 15W TDP)

  • i7-1355U: ಇಂಟೆಲ್ ಕೋರ್ i7 13ನೇ ಜನರೇಶನ್ (10 ಕೋರ್ಗಳು, 5.0GHz, 15W TDP)

ಬೋರ್ಡ್ ನಿರ್ಧರಿಸುತ್ತದೆ:

  • ಪ್ರೊಸೆಸರ್ ಜನರೇಶನ್, ಸರಣಿ, ಮಾದರಿ

  • ಕೋರ್ ಎಣಿಕೆ

  • ಗರಿಷ್ಠ ಆವರ್ತನ

  • ಕ್ಯಾಶೆ ಗಾತ್ರ

  • ಸಂಯೋಜಿತ ಗ್ರಾಫಿಕ್ಸ್

3. ರ್ಯಾಮ್

ಮುಖ್ಯ ಮೆಮೊರಿ ಸಾಮರ್ಥ್ಯ:

  • 4: 4GB DDR4

  • 8: 8GB DDR4

  • 16: 16GB DDR4

  • 32: 32GB DDR4

  • 64: 64GB DDR4

ರ್ಯಾಮ್ ಅನ್ನು ಘಟಕವಿಲ್ಲದೆ GB ನಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗಿದೆ.

4. ಫ್ಲ್ಯಾಶ್

SSD ಸಂಗ್ರಹ ಸಾಮರ್ಥ್ಯ:

  • 128: 128GB SSD

  • 256: 256GB SSD

  • 512: 512GB SSD

  • 1024: 1TB SSD (1024GB)

  • 2048: 2TB SSD (2048GB)

ಫ್ಲ್ಯಾಶ್ ಅನ್ನು ಘಟಕವಿಲ್ಲದೆ GB ನಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗಿದೆ.

5. ಅಡಾಪ್ಟರ್

ಡಿಸ್ಪ್ಲೇ ಔಟ್ಪುಟ್ ಸಂರಚನೆ:

  • 2H: 2× HDMI ಪೋರ್ಟ್ಗಳು

  • 2D: 2× ಡಿಸ್ಪ್ಲೇಪೋರ್ಟ್

  • 1H1D: 1× HDMI + 1× ಡಿಸ್ಪ್ಲೇಪೋರ್ಟ್

  • 1H1V: 1× HDMI + 1× VGA

  • 3H: 3× HDMI ಪೋರ್ಟ್ಗಳು

ಅಡಾಪ್ಟರ್ ಲಭ್ಯವಿರುವ ಡಿಸ್ಪ್ಲೇ ಔಟ್ಪುಟ್ಗಳನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ.

6. WiFi

ವೈರ್ಲೆಸ್ ಸಂಪರ್ಕ:

  • W6: WiFi 6 (802.11ax) + ಬ್ಲೂಟೂತ್ 5.2

  • W6E: WiFi 6E (802.11ax 6GHz) + ಬ್ಲೂಟೂತ್ 5.2

  • ಯಾವುದೂ ಇಲ್ಲ: ವೈರ್ಲೆಸ್ ಇಲ್ಲ (ಈಥರ್ನೆಟ್ ಮಾತ್ರ)

7. OS

ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್:

  • 11P: ಮೈಕ್ರೋಸಾಫ್ಟ್ ವಿಂಡೋಸ್ 11 ಪ್ರೋ

  • U: ಉಬುಂಟು ಲಿನಕ್ಸ್ 24.04 LTS

  • DOS: ಫ್ರೀಡಾಸ್ (OS ಇಲ್ಲ)

  • Thinux: ಥಿನ್ವೆಂಟ್® ಥಿನಕ್ಸ್™ ಎಂಬೆಡೆಡ್ ಲಿನಕ್ಸ್

8. ಆಕ್ಸೆಸರಿಗಳು (ಐಚ್ಛಿಕ)

ಹೆಚ್ಚುವರಿ ಘಟಕಗಳು:

  • KM: ಕೀಬೋರ್ಡ್ + ಮೌಸ್ ಕಾಂಬೊ

  • MK: ಮೆಕ್ಯಾನಿಕಲ್ ಕೀಬೋರ್ಡ್

  • VESA: VESA ಮೌಂಟ್ ಬ್ರಾಕೆಟ್

  • ಸ್ಟ್ಯಾಂಡ್: ಸರಿಹೊಂದಿಸಬಹುದಾದ ಸ್ಟ್ಯಾಂಡ್

ಬಹು ಆಕ್ಸೆಸರಿಗಳನ್ನು ಸಂಯೋಜಿಸಬಹುದು: KM-VESA

SKU ಮೌಲ್ಯೀಕರಣ

ಎಲ್ಲಾ ಸಂಯೋಜನೆಗಳು ಮಾನ್ಯವಾಗಿರುವುದಿಲ್ಲ. ನಾವು ಹೊಂದಾಣಿಕೆಯ ನಿಯಮಗಳನ್ನು ಬಳಸಿಕೊಂಡು SKU ಗಳನ್ನು ಮೌಲ್ಯೀಕರಿಸುತ್ತೇವೆ:

SKU ಫಂಕ್ಷನ್ ಪರಿಶೀಲಿಸಿ

def check_sku(sku: str) -> bool:
    partids = sku.split("-")
    if len(partids) < len(part_sequence):
# ... (ಅನುಷ್ಠಾನದ ವಿವರಗಳು ಬಿಟ್ಟುಬಿಡಲಾಗಿದೆ)

ಹೊಂದಾಣಿಕೆಯ ನಿರ್ಬಂಧಗಳು

ಘಟಕಗಳು ಅವು ಯಾವ ಇತರ ಘಟಕಗಳೊಂದಿಗೆ ಹೊಂದಿಕೊಳ್ಳುತ್ತವೆ ಎಂಬುದನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಬಹುದು:

ಉದಾಹರಣೆ: ಟ್ರಿಯೊ ಚೇಸಿಸ್ ನಿರ್ದಿಷ್ಟ ಬೋರ್ಡ್ಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ

{
  "Treo": {
    "allows": {
      "Board": ["N100", "N150", "i5-1335U"],
      "RAM": ["4", "8", "16", "32"],
      "Adapter": ["2H", "1H1D"]
    }
  }
}

ಇದು "ಟ್ರಿಯೊ-i7-64-2048-3H" ನಂತಹ ಅಮಾನ್ಯ ಸಂಯೋಜನೆಗಳನ್ನು ತಡೆಯುತ್ತದೆ (ಟ್ರಿಯೊ i7 ಅಥವಾ 3H ಅಡಾಪ್ಟರ್ ಅನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ).

SKU ವಿಸ್ತರಣೆ

ನಾವು SKU ಗಳನ್ನು ಮಾನವ-ಓದಬಹುದಾದ ಹೆಸರುಗಳಿಗೆ ಪರಿವರ್ತಿಸುತ್ತೇವೆ:

def expand_sku(sku: str) -> str:
    part_ids = sku.split("-")
    part_names = [
        productdb[part_sequence[i].value][part_id]["external"] 
# ... (ಅನುಷ್ಠಾನದ ವಿವರಗಳು ಬಿಟ್ಟುಬಿಡಲಾಗಿದೆ)        
    ]

ಉದಾಹರಣೆ:

ಇನ್ಪುಟ್:  Treo-N100-8-256-2H-W6-11P
ಔಟ್ಪುಟ್: ಟ್ರಿಯೊ ಮಿನಿ ಪಿಸಿ, ಇಂಟೆಲ್ N100, 8GB DDR4, 256GB SSD, 2× HDMI, WiFi 6, ವಿಂಡೋಸ್ 11 ಪ್ರೋ

external ಕ್ಷೇತ್ರವು ಪ್ರತಿ ಘಟಕಕ್ಕೆ ಗ್ರಾಹಕ-ಮುಖಾಂತರದ ಹೆಸರನ್ನು ಹೊಂದಿರುತ್ತದೆ.

ವೈಶಿಷ್ಟ್ಯ ಹೊರತೆಗೆಯುವಿಕೆ

SKU ರಚನೆಯು ಸ್ವಯಂಚಾಲಿತ ವೈಶಿಷ್ಟ್ಯ ಹೊರತೆಗೆಯುವಿಕೆಯನ್ನು ಸಾಧ್ಯಗೊಳಿಸುತ್ತದೆ:

ವೈಶಿಷ್ಟ್ಯ ಅನುಕ್ರಮ

ಹೊರತೆಗೆಯಲು ವೈಶಿಷ್ಟ್ಯಗಳ ಅನುಕ್ರಮವನ್ನು ನಾವು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತೇವೆ:

feature_sequence = {
    "Generation": {"Unit": "", "Heading": "ಪ್ರೊಸೆಸಿಂಗ್"},
    "Series": {"Unit": "", "Heading": "ಪ್ರೊಸೆಸಿಂಗ್"},
# ... (ಅನುಷ್ಠಾನದ ವಿವರಗಳು ಬಿಟ್ಟುಬಿಡಲಾಗಿದೆ)

ಪ್ರತಿ ವೈಶಿಷ್ಟ್ಯವು ಹೊಂದಿದೆ:

  • ಯೂನಿಟ್: ಮಾಪನ ಘಟಕ (GB, GHz, Mbps)

  • ಹೆಡಿಂಗ್: ಗುಂಪು ಮಾಡಲು ವರ್ಗ (ಪ್ರೊಸೆಸಿಂಗ್, ಡಿಸ್ಪ್ಲೇ, ಕನೆಕ್ಟಿವಿಟಿ)

ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಹೊರತೆಗೆಯುವುದು

SKU ನಲ್ಲಿನ ಪ್ರತಿ ಘಟಕಕ್ಕೆ, ನಾವು ಅದರ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಹೊರತೆಗೆಯುತ್ತೇವೆ:

# ಬೋರ್ಡ್: N100
{
    "Generation": "12th",
# ... (ಅನುಷ್ಠಾನದ ವಿವರಗಳು ಬಿಟ್ಟುಬಿಡಲಾಗಿದೆ)

ಈ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಎಲ್ಲಾ ಘಟಕಗಳಾದ್ಯಂತ ಒಟ್ಟುಗೂಡಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಉತ್ಪನ್ನದ ಸಂಪೂರ್ಣ ವೈಶಿಷ್ಟ್ಯ ಸೆಟ್ ಅನ್ನು ರಚಿಸಲಾಗುತ್ತದೆ.

ಈ ರಚನೆಯ ಪ್ರಯೋಜನಗಳು

1. ಅನನ್ಯ ಗುರುತಿಸುವಿಕೆ

ಪ್ರತಿ ಸಂರಚನೆಗೆ ಒಂದು ಅನನ್ಯ SKU ಇರುತ್ತದೆ. ಯಾವುದೇ ಅಸ್ಪಷ್ಟತೆ ಇಲ್ಲ.

2. ಮಾನವ-ಓದಬಹುದಾದ

SKU ಮಾನವರಿಂದ ಓದಬಹುದಾದದಾಗಿದೆ:

  • Treo-N100-8-256-2H-W6-11P ಸಂರಚನೆಯನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ತೋರಿಸುತ್ತದೆ

  • ಅದು ಏನು ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಡೇ