SEO Data Flow Diagrams
1. Field Transformation
pbcopy < /Users/vova/Code/CROP/microservices/docs/DIAGRAM_SEO_FIELDS.txt
pbcopy < /Users/vova/Code/CROP/microservices/docs/DIAGRAM_SEO_DATA_FLOW.txt
| Layer | Component | Role |
|---|
| 1 | Data Sources | Vendor Website, Manual, Amazon |
| 2 | MongoDB Atlas | Source of truth |
| 3 | Transformers | Normalize, generate SKU/slug |
| 4 | Elasticsearch | Search index |
| 5 | Search API | REST endpoints |
| 6 | Frontend | SEO HTML output |
| Layer | Field | Value |
|---|
| Source | scraped | "Hydraulic Filter Element" |
| MongoDB | title | "Hydraulic Filter Element" |
| Elasticsearch | title | "Hydraulic Filter Element" |
| API | title | "Hydraulic Filter Element" |
| SEO | metaTitle | "Hydraulic Filter Element | New Holland" |
| Layer | Field | Value |
|---|
| Source | scraped | "00907566" |
| MongoDB | partNumber | "00907566" |
| Transform | pnNorm | "907566" |
| Elasticsearch | partNumber, pnNorm | "00907566", "907566" |
| API | partNumber | "00907566" |
| SEO | schemaData.mpn | "00907566" |
| Layer | Field | Value |
|---|
| Transform | generated | CT-{code}-{partNumber} |
| MongoDB | sku | "CT-NHL-00907566" |
| Elasticsearch | sku | "CT-NHL-00907566" |
| API | sku | "CT-NHL-00907566" |
| SEO | schemaData.sku | "CT-NHL-00907566" |
| Layer | Field | Value |
|---|
| Source | scraped/ERP | 45.99 |
| MongoDB | price.list | {value: 45.99, currency: "USD"} |
| Elasticsearch | price.list.value | 45.99 |
| API | price.list | {value: 45.99, currency: "USD", formatted: "$45.99"} |
| SEO | schemaData.offers.price | 45.99 |
| Layer | Field | Value |
|---|
| Source | scraped | ["Filters", "Hydraulic"] |
| Transform | normalized | "Parts > Filters > Hydraulic Filters" |
| MongoDB | categoryPath | ["Parts > Filters > Hydraulic Filters"] |
| Elasticsearch | categoryPath | ["Parts > Filters > Hydraulic Filters"] |
| API | categoryPath | ["Parts > Filters > Hydraulic Filters"] |
| SEO | BreadcrumbList | JSON-LD with positions |
| Collection | Database | Status | Use |
|---|
| parts | crop_stage | LIVE | Production (~10) |
| parts | crop_prod | READY | Production (3,740+) |
| nh_unified | crop_parts_archive | DEPRECATED | Archive only |
| Action | Input | Output |
|---|
| normalize | "00907566" | pnNorm: "907566" |
| generateSku | {code: "NHL", pn: "00907566"} | "CT-NHL-00907566" |
| generateSlug | {code, title, pn, id} | "nhl-hydraulic-filter-00907566-abc123" |
| processMedia | images[] | primaryImage, hasGcpImages |
| normalizeCategories | raw paths | CategoryNode[] |
All fields use camelCase naming:
| OK | Field | Layers |
|---|
| ✓ | partNumber | All |
| ✓ | categoryPath | All |
| ✓ | primaryImage | All |
| ✓ | metaTitle | SEO |
| ✓ | ogImage | SEO |
| ✓ | schemaData | SEO |