productdb.json: தயாரிப்பு தரவிற்கான ஒற்றை மூலத்தின் உண்மை
இந்த கட்டுரை productdb எவ்வாறு அனைத்து தயாரிப்பு தரவிற்கும் ஒற்றை மூலத்தின் உண்மையாக செயல்படுகிறது என்பதை விளக்குகிறது, இது கூறுகள், அம்சங்கள், பொருந்தக்கூடிய விதிகள் மற்றும் பொருட்களின் பட்டியல் ஆகியவற்றை ஒரு மையப்படுத்தப்பட்ட கோப்பில் வரையறுக்கிறது.
சிக்கல்: சிதறிய தயாரிப்பு தரவு
தயாரிப்பு தரவு பல அமைப்புகளில் சிதறி இருக்கலாம்:
-
சரக்கு முறைமை: பாக செலவுகள் மற்றும் இருப்பு நிலைகள்
-
ERP முறைமை: BOMகள் மற்றும் உற்பத்தி தரவு
-
வலைத்தளம்: தயாரிப்பு விளக்கங்கள் மற்றும் விவரக்குறிப்புகள்
-
கணக்கியல்: விலை நிர்ணயம் மற்றும் செலவு கணக்கீட்டு விதிகள்
தரவு சிதறியிருக்கும் போது, முரண்பாடுகள் எழுகின்றன:
-
வலைத்தளம் 16GB ரேம் காட்டுகிறது, ஆனால் ERP 8GB என்று கூறுகிறது
-
விலை நிர்ணயம் பழைய செலவு தரவைப் பயன்படுத்துகிறது
-
BOMகள் உண்மையான தயாரிப்புகளுடன் ஒத்துப்போவதில்லை
-
அம்சங்கள் உண்மையுடன் பொருந்துவதில்லை
அனைத்து அமைப்புகளும் குறிப்பிடும் ஒரு ஒற்றை மூலத்தின் உண்மை நமக்குத் தேவை.
தீர்வு: productdb.json
productdb.json என்பது ஒவ்வொரு கூறு, அதன் அம்சங்கள், பொருந்தக்கூடிய விதிகள் மற்றும் அங்கங்கள் ஆகியவற்றை வரையறுக்கும் ஒரு JSON கோப்பு ஆகும். அனைத்து அமைப்புகளும் துவக்கத்தில் இந்த கோப்பை ஏற்றுகின்றன.
இந்த கோப்பு Git இல் பதிப்பு கட்டுப்பாட்டில் உள்ளது, இது அனைத்து மாற்றங்களும் கண்காணிக்கப்பட்டு தணிக்கை செய்யப்படுவதை உறுதி செய்கிறது.
கோப்பு அமைப்பு
கோப்பு கூறு வகைப்பாட்டின் அடிப்படையில் ஒழுங்கமைக்கப்பட்டுள்ளது:
{
"Chassis": { ... },
"Board": { ... },
# ... (செயல்படுத்தல் விவரங்கள் தவிர்க்கப்பட்டன)
ஒவ்வொரு வகையிலும் அவற்றின் பண்புகளுடன் கூறுகள் உள்ளன.
கூறு வரையறை
ஒவ்வொரு கூறுக்கும் பல பண்புகள் உள்ளன:
அடிப்படை பண்புகள்
class: பொருந்தக்கூடிய பொருத்தத்திற்கான கூறு வகுப்பு
"class": "THIN_MINI_ITX"
internal: சரக்கு மற்றும் உற்பத்திக்கான உள் பெயர்
"internal": "Chassis, Treo"
external: வலைத்தளம் மற்றும் சந்தைப்படுத்தலுக்கான வாடிக்கையாளர்-சார்ந்த பெயர்
"external": "Thinvent® Treo Mini PC"
weight: கிராம்களில் உடல் எடை
"weight": 590
பொருந்தக்கூடிய விதிகள் (allows)
allows புலம் எந்த கூறுகளை ஒன்றாகப் பயன்படுத்தலாம் என்பதை வரையறுக்கிறது:
"allows": {
"Board": [
{"class": "THIN_MINI_ITX"}
# ... (செயல்படுத்தல் விவரங்கள் தவிர்க்கப்பட்டன)
இதன் பொருள்:
-
Board:
THIN_MINI_ITXவகுப்புடன் கூடிய போர்டுகள் மட்டுமே பொருந்தும் -
Flash:
m.2_SATAவகுப்புடன் கூடிய ஃப்ளாஷ் சேமிப்பகம் மட்டுமே பொருந்தும் -
Accessories: அனைத்து உபகரணங்களும் பொருந்தும்
பொருந்தக்கூடிய தன்மையை பின்வருமாறு குறிப்பிடலாம்:
வகுப்பு-அடிப்படையிலான (மாறும்):
{"class": "THIN_MINI_ITX"}
பாக ID-அடிப்படையிலான (வெளிப்படையான):
["N100", "N150", "i5-1335U"]
பொருட்களின் பட்டியல் (constituents)
constituents புலம் இந்த கூறு எந்த பாகங்களைக் கொண்டுள்ளது என்பதை வரையறுக்கிறது:
"constituents": [
{
"Category": "Custom",
# ... (செயல்படுத்தல் விவரங்கள் தவிர்க்கப்பட்டன)
இது இவற்றை இயலுமைப்படுத்துகிறது:
-
செலவு கணக்கீடு: அனைத்து அங்கங்களின் செலவுகளையும் கூட்டுதல்
-
உற்பத்தி: அசெம்பிளிக்கான தேர்வு பட்டியலை உருவாக்குதல்
-
சரக்கு: கூறு பயன்பாட்டைக் கண்காணித்தல்
அம்ச வழங்கல் (provides)
provides புலம் இந்த கூறு வழங்கும் அம்சங்களை வரையறுக்கிறது:
"provides": {
"Operating Temperature": "0°C ~ 40°C",
"Operating Humidity": "20% ~ 80% RH, non condensing",
# ... (செயல்படுத்தல் விவரங்கள் தவிர்க்கப்பட்டன)
இந்த அம்சங்கள் ஒரு SKU இல் உள்ள அனைத்து கூறுகளிலும் தொகுக்கப்பட்டு, தயாரிப்பின் முழுமையான விவரக்குறிப்பை உருவாக்குகின்றன.
எடுத்துக்காட்டு: ட்ரியோ சேசிஸ்
{
"Treo": {
"class": "THIN_MINI_ITX",
# ... (செயல்படுத்தல் விவரங்கள் தவிர்க்கப்பட்டன)
எடுத்துக்காட்டு: N100 போர்டு
{
"N100": {
"class": "THIN_MINI_ITX",
# ... (செயல்படுத்தல் விவரங்கள் தவிர்க்கப்பட்டன)
productdb.json ஐ ஏற்றுதல்
பயன்பாடு துவக்கத்தில் கோப்பு ஏற்றப்படுகிறது:
import json
with open(PRODUCTDB_JSON_PATH, "r", encoding="utf-8") as productdb_file:
productdb = json.load(productdb_file)
இது நினைவகத்தில் ஒரு அகராதியை உருவாக்குகிறது:
productdb = {
"Chassis": {
"Treo": { ... },
# ... (செயல்படுத்தல் விவரங்கள் தவிர்க்கப்பட்டன)
தயாரிப்பு தரவிற்கான அனைத்து குறியீடுகளும் இந்த அகராதியைக் குறிப்பிடுகின்றன.
கூறு தரவை அணுகுதல்
வகை மற்றும் ID மூலம் கூறைப் பெறுதல்
chassis = productdb["Chassis"]["Treo"]
board = productdb["Board"]["N100"]
ram = productdb["RAM"]["8"]
வெளிப்புற பெயரைப் பெறுதல்
name = productdb["Board"]["N100"]["external"]
# Result: "Intel® N100 Processor"
அம்சங்களைப் பெறுதல்
features = productdb["Board"]["N100"]["provides"]
# Result: {"Generation": "12th", "Series": "N", ...}
அங்கங்களைப் பெறுதல்
constituents = productdb["Chassis"]["Treo"]["constituents"]
# Result: [{"Category": "Custom", "PartID": "base_treo", "qty": 1}, ...]
SKU சரிபார்ப்பு
SKUகளை சரிபார்க்க productdb.json ஐப் பயன்படுத்துகிறோம்:
def check_sku(sku:str) -> bool:
parts = sku.split("-")
mapped_parts = map_parts_to_fields(parts)
# ... (செயல்படுத்தல் விவரங்கள் தவிர்க்கப்பட்டன)
விவரங்களுக்கு SKU அமைப்பு பார்க்கவும்.
அம்ச ஒருங்கிணைப்பு
ஒரு SKU இல் உள்ள அனைத்து கூறுகளிலிருந்தும் அம்சங்களை நாங்கள் ஒருங்கிணைக்கிறோம்:
def get_product_features(sku: str) -> dict:
partids = sku.split("-")
features = {}
# ... (செயல்படுத்தல் விவரங்கள் தவிர்க்கப்பட்டன)
எடுத்துக்காட்டு:
SKU: Treo-N100-8-256-2H-W6-11P
Features:
- Form Factor: Mini PC (from Treo)
- Generation: 12th (from N100)
- Series: N (from N100)
- Cores: 4 (from N100)
- Main Memory: 8 (from 8)
- SSD Storage: 256 (from 256)
- HDMI: 2 (from 2H)
- Operating System: Windows 11 Pro (from 11P)
விவரங்களுக்கு அம்ச பிரித்தெடுத்தல் பார்க்கவும்.
செலவு கணக்கீடு
அங்கங்களின் செலவுகளைக் கூட்டி SKU செலவைக் கணக்கிடுகிறோம்:
def calculate_cost(item: dict, partid: str) -> tuple:
if "constituents" in item:
# Composite item: sum constituent costs
# ... (செயல்படுத்தல் விவரங்கள் தவிர்க்கப்பட்டன)
இந்த மீள் சுழற்சி கணக்கீடு கூடு கட்டிய அங்கங்களைக் கையாள்கிறது.
கூட்டு உருப்படிகள்
சில கூறுகள் கூட்டு உருப்படிகள் (மற்ற கூறுகளால் ஆனவை):
எடுத்துக்காட்டு: விசைப்பலகை + சுட்டி கூட்டு
{
"KM": {
"internal": "Keyboard + Mouse",
# ... (செயல்படுத்தல் விவரங்கள் தவிர்க்கப்பட்டன)
இது இவற்றை இயலுமைப்படுத்துகிறது:
-
BOM உருவாக்கம்: தேவையான அனைத்து கூறுகளையும் பட்டியலிடுதல்
-
செலவு கணக்கீடு: விசைப்பலகை + சுட்டி + டாஙிளின் செலவுகளைக் கூட்டுதல்
-
சரக்கு கண்காணிப்பு: கூறு பயன்பாட்டைக் கண்காணித்தல்
productdb.json ஐப் புதுப்பித்தல்
கையால் திருத்துதல்
கோப்பு ஒரு உரை திருத்தியில் அல்லது IDE இல் கையால் திருத்தப்படுகிறது. மாற்றங்கள் Git இல் கமிட் செய்யப்படுகின்றன:
git add PATH_TO_FILE/productdb.json
git commit -m "Add new N150 board configuration"
git push
சரிபார்ப்பு
திருத்திய பின், JSON தொடரியலைச் சரிபார்க்கவும்:
python -m json.tool PATH_TO_FILE/productdb.json > /dev/null
இது தொடரியல் பிழைகளைச் சரிபார்க்கிறது.
விநியோகித்தல்
Git இல் தள்ளிய பின், கோப்பு உற்பத்திக்கு விநியோகிக்கப்படுகிறது
பயன்பாடு மீண்டும் தொடங்கும் போது கோப்பை மீண்டும் ஏற்றுகிறது.
பிற அமைப்புகளுடன் ஒருங்கிணைப்பு
வலைத்தளம்
வலைத்தளம் productdb.json ஐப் பயன்படுத்துகிறது:
-
தயாரிப்பு பக்கங்களை உருவாக்க
-
விவரக்குறிப்புகளைக் காண்பிக்க
-
அம்சங்களால் தயாரிப்புகளை வடிகட்ட
-
ஒப்பீட்டு அட்டவணைகளை உருவாக்க
ERP
ERP productdb.json ஐப் பயன்படுத்துகிறது:
-
SKUகளை சரிபார்க்க
-
BOMகளை உருவாக்க
-
செலவுகளைக் கணக்கிட
-
சரக்கைக் கண்காணிக்க
கணக்கியல்
கணக்கியல் productdb.json ஐப் பயன்படுத்துகிறது:
-
தயாரிப்பு செலவுகளைக் கணக்கிட
-
விலைப்பட்டியல்களை உருவாக்க
-
COGS (விற்கப்பட்ட பொருட்களின் விலை) ஐக் கண்காணிக்க
SEO குழாய்வழி
SEO குழாய்வழி productdb.json ஐப் பயன்படுத்துகிறது:
-
சொற்றொடர் ஒப்பீடுகள் க்கான அம்சங்களைப் பிரித்தெடுக்க
-
வடிகட்டி பிரித்தெடுத்தல் க்கான வடிகட்டிகளை உருவாக்க
-
அம்சங்களால் வினவல்களை தயாரிப்புகளுடன் பொருத்த
விவரங்களுக்கு SEO குழாய்வழி கண்ணோட்டம் பார்க்கவும்.
ஒற்றை மூலத்தின் உண்மையின் நன்மைகள்
1. ஒருமைப்பாடு
அனைத்து அமைப்புகளும் ஒரே தரவைப் பயன்படுத்துகின்றன. முரண்பாடுகள் இல்லை.
2. பராமரிப்பு எளிமை
ஒருமுறை புதுப்பிக்கவும், எல்லா இடங்களிலும் பரப்பவும். பல அமைப்புகளைப் புதுப்பிக்க வேண்டியதில்லை.
3. தணிக்கை செய்யத்தக்க தன்மை
அனைத்து மாற்றங்களும் Git இல் கண்காணிக்கப்படுகின்றன. யார் எப்போது என்ன மாற்றினார் என்பதைப் பார்ப்பது எளிது.
4. சோதனை செய்யத்தக்க தன்மை
உற்பத்தி விநியோகத்திற்கு முன் மாற்றங்களை ஸ்டேஜிங்கில் சோதிக்கலாம்.
5. எளிமை
புரிந்துகொள்ள ஒரு கோப்பு. சிக்கலான தரவுத்தள திட்டங்கள் அல்லது