Τεκμηρίωση Καταλόγου Προϊόντων
Όλα τα αρχεία (μονός κατάλογος, ευρετηριασμένος κατάλογος, σελίδες) μπορούν (μελλοντικά απαραίτητο) να είναι συμπιεσμένα (gzip). Αυτό επιτρέπει την αποδοτικότερη μεταφορά και αποθήκευση των δεδομένων, δαπανώντας λιγότερους πόρους σε όλα τα συστήματα.
Μονός Κατάλογος (single catalog)
Ο μονός κατάλογος αποτελείται από μία συλλογή προϊόντων μέσα σε ένα JSON αρχείο, περιλαμβάνοντας λεπτομέρειες για κάθε προϊόν. Όλες οι πληροφορίες σε ένα αρχείο.
Προτείνεται για καταλόγους μέχρι ~10k προϊόντα.
Πεδία
- metadata (Αντικείμενο): Μεταδεδομένα του καταλόγου.
- totalProducts (Ακέραιος): Το συνολικό αριθμό προϊόντων.
- lastUpdated (Συμβολοσειρά): Ημερομηνία και ώρα τελευταίας ενημέρωσης σε μορφή ISO 8601.
- contactEmail (Συμβολοσειρά): Ηλεκτρονική διεύθυνση επικοινωνίας. Ενδεχομένως αυτόματες ενημερώσεις σε περίπτωση σφαλμάτων.
- generationIntervalSeconds (Ακέραιος): Διάστημα σε δευτερόλεπτα για την επόμενη παραγωγή του καταλόγου.
- version (Συμβολοσειρά): Έκδοση του καταλόγου.
- url (Συμβολοσειρά): URL του πλήρους καταλόγου. Χρησιμεύει για όταν πρόκειται να αλλάξετε url καταλόγου, ώστε να ανανεωθεί αυτόματα από το σύστημα επεξεργασίας.
- products (Πίνακας αντικειμένων): Λίστα προϊόντων, κάθε ένα με τα παρακάτω πεδία:
- id (Ακέραιος): Μοναδικό αναγνωριστικό για κάθε προϊόν.
- sku, mpn, ean (Συμβολοσειρές): Κωδικοί και ταυτότητες προϊόντων.
- name, description (Συμβολοσειρές): Όνομα και περιγραφή του προϊόντος.
- price, priceWithVat (Αριθμητικά): Τιμή πώλησης και τιμή με ΦΠΑ.
- currency (Συμβολοσειρά): Νόμισμα της τιμής, π.χ., "USD".
- manufacturer (Συμβολοσειρά): Όνομα κατασκευαστή.
- images (Πίνακας συμβολοσειρών): URLs εικόνων προϊόντος.
- width,height,length,weight (συμβολοσειρά|δεκαδικός): Διαστάσεις του προϊόντος (πλάτος, ύψος, μήκος) και βάρος.
- category (Αντικείμενα, Πίνακας αντικειμένων): Κατηγορία του προϊόντος.
- categories, categories (Αντικείμενα, Πίνακας αντικειμένων): Δευτερεύουσες κατηγορίες του προϊόντος.
- attributes (Πίνακας αντικειμένων): Χαρακτηριστικά προϊόντων, όπως υλικό, φύλο κτλπ.
- variations (Πίνακας αντικειμένων): Παραλλαγές του προϊόντος με διαφορετικά χαρακτηριστικά, τιμή (π.χ., χρώμα, μέγεθος).
- link (Συμβολοσειρά): Σύνδεσμος προς τη σελίδα του προϊόντος.
- lastUpdated (Συμβολοσειρά): Ημερομηνία τελευταίας ενημέρωσης του προϊόντος. Πρέπει να αλλάζει μόνο όταν αλλάξουν τα στοιχεία του.
Παράδειγμα
{
"metadata": {
"totalProducts": 15000,
"lastUpdated": "2024-02-08T15:03:27+02:00",
"contactEmail": "admin@example.com",
"generationIntervalSeconds": 86400,
"version": "1.0.0",
"url": "http:\/\/syncdrop.test\/storage\/indexed-catalog\/catalog.json.gz"
},
"products": [
{
"id": 90974453275,
"sku": "SH-RUNNING-002",
"mpn": "SH2434",
"ean": "1234567890123",
"name": "Running Shoes",
"description": "Lightweight and comfortable running shoes for everyday athletes.",
"price": 59.99,
"priceWithVat": 71.99,
"qty": 1,
"currency": "USD",
"manufacturer": "Company2",
"images": [
"https:\/\/example.com\/image-1.png",
"https:\/\/example.com\/image-1.png"
],
"width": "1.2",
"height": "2.2",
"length": "3.4",
"weight": "20",
"category": {
"id": 102,
"name": "Footwear"
},
"categories": [
{
"id": 113,
"name": "Other category"
},
{
"id": 199,
"name": "Other category"
}
],
"attributes": [
{
"name": "material",
"value": "Synthetic"
},
{
"name": "gender",
"value": "Unisex"
}
],
"variations": [
{
"id": 3,
"sku": "RS-BLUE-42",
"mpn": "SH2435",
"ean": "1234567890124",
"price": 64.99,
"priceWithVat": 77.99,
"qty": 1,
"attributes": [
{
"name": "color",
"value": "Blue"
},
{
"name": "size",
"value": "42"
}
],
"link": "https:\/\/example.com\/running-shoes?var=RS-BLUE-42",
"images": [
"https:\/\/example.com\/image-1.png",
"https:\/\/example.com\/image-1.png"
]
}
],
"link": "https:\/\/example.com\/running-shoes",
"lastUpdated": "2024-02-08T15:03:27+02:00"
},
]
}
Eυρετηριασμένος Κατάλογος (indexed catalog)
Επισκόπηση: Ο ευρετηριασμένος κατάλογος διαχωρίζει τα δεδομένα προϊόντων σε πολλαπλά αρχεία, με ένα κεντρικό index.json που περιλαμβάνει δείκτες σε κάθε αρχείο σελίδας.
Προτείνεται για καταλόγους πάνω από ~10k και μέχρι <=2m προϊόντα.
Το `ids` πεδίο στο index.json
Το πεδίο `ids` αναφέρεται στα μοναδικά αναγνωριστικά των προϊόντων που περιλαμβάνονται στη συγκεκριμένη σελίδα. Χρησιμεύει για τη γρήγορη αναφορά και εντοπισμό προϊόντων χωρίς την ανάγκη φόρτωσης όλων των δεδομένων τους από το αρχείο.
Πεδία και Τύποι Δεδομένων
- metadata, pageInfo: Αναφέρονται στα μεταδεδομένα και στις πληροφορίες κάθε σελίδας αντίστοιχα.
- pageInfo - checksum: sha256 του json αρχείου. Όχι του συμπιεσμένου.
- pageInfo - lastUpdated: αλλάζει μόνο όταν αλλάζει το json αρχείο
Παράδειγμα index.json
{
"metadata": {
"totalProducts": 15000,
"lastUpdated": "2024-02-08T15:48:42+02:00",
"contactEmail": "admin@example.com",
"generationIntervalSeconds": 86400,
"version": "1.0.0",
"url": "http:\/\/syncdrop.test\/storage\/indexed-catalog\/index.json.gz"
},
"pageInfo": [
{
"pageNumber": 1,
"url": "http:\/\/syncdrop.test\/storage\/indexed-catalog\/page-1.json.gz",
"lastUpdated": "2024-02-08T15:48:41+02:00",
"checksum": "064871eb0a4597eb2fb3f0d773abb0d7d23d3122948ebebc4c416acf71f263db",
"ids": [
66806803296,
48631261925,
9131472855,
74724860515,
]
},
]
}
Παράδειγμα page-x.json
{
"products": [
{
"id": 66806803296,
"sku": "SH-RUNNING-002",
"mpn": "SH2434",
"ean": "1234567890123",
"name": "Running Shoes",
"description": "Lightweight and comfortable running shoes for everyday athletes.",
"price": 59.99,
"priceWithVat": 71.99,
"currency": "USD",
"manufacturer": "Company2",
"images": [
"https:\/\/example.com\/image-1.png",
"https:\/\/example.com\/image-1.png"
],
"width": "1.2",
"height": "2.2",
"length": "3.4",
"weight": "20",
"category": {
"id": 102,
"name": "Footwear"
},
"categories": [
{
"id": 105,
"name": "Other category"
},
{
"id": 20,
"name": "Other category"
}
],
"attributes": [
{
"name": "material",
"value": "Synthetic"
},
{
"name": "gender",
"value": "Unisex"
}
],
"variations": [
{
"id": 3,
"sku": "RS-BLUE-42",
"mpn": "SH2435",
"ean": "1234567890124",
"price": 64.99,
"priceWithVat": 77.99,
"attributes": [
{
"name": "color",
"value": "Blue"
},
{
"name": "size",
"value": "42"
}
],
"link": "https:\/\/example.com\/running-shoes?var=RS-BLUE-42",
"images": [
"https:\/\/example.com\/image-1.png",
"https:\/\/example.com\/image-1.png"
]
}
],
"link": "https:\/\/example.com\/running-shoes",
"lastUpdated": "2024-02-08T15:48:41+02:00"
},
]
}