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ಸಂರಚನೆಯನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ತೋರಿಸುತ್ತದೆ -
ಅದು ಏನು ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಡೇ