@mesh-sync/worker-backend-client 4.0.21 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -183,52 +183,6 @@ Used for:
183
183
 
184
184
 
185
185
 
186
- ### ekg-edge-batch-create-completed
187
-
188
- **Description:** Completion event for EKG edge batch creation with propagation results.
189
-
190
- **Method:** `client.ekgEdgeBatchCreateCompleted(data)`
191
-
192
- **Payload Type:** `EkgEdgeBatchCreateCompletedMessage`
193
-
194
- **Fields:**
195
-
196
- - `requestId` (string) [✓]: Original request ID from ekg-edge-batch-create-request
197
-
198
- - `success` (boolean) [✓]: Whether the batch operation succeeded
199
-
200
- - `statistics` (object) [✓]: Batch operation statistics
201
-
202
- - `conflicts` (array) [✗]: List of high-conflict edges requiring review
203
-
204
- - `errors` (array) [✗]: Errors encountered during processing
205
-
206
- - `graphMetrics` (object) [✗]: Overall graph state after this batch
207
-
208
-
209
-
210
- ### ekg-edge-batch-create-request
211
-
212
- **Description:** Create multiple EKG edges with Dempster-Shafer mass functions. Triggered by metamodel detection completion.
213
-
214
- **Method:** `client.ekgEdgeBatchCreateRequest(data)`
215
-
216
- **Payload Type:** `EkgEdgeBatchCreateRequestMessage`
217
-
218
- **Fields:**
219
-
220
- - `requestId` (string) [✓]: Unique request ID for tracking (e.g., metamodel detection job ID)
221
-
222
- - `source` (string) [✓]: Source of the edges: metamodel-heuristic, manual, taxonomy-import, etc.
223
-
224
- - `edges` (array) [✓]: Batch of edges to create/update in the EKG
225
-
226
- - `propagationOptions` (object) [✗]: Options for evidential edge propagation after edge creation
227
-
228
- - `webhookUrl` (string) [✗]: Optional webhook URL for async completion notification
229
-
230
-
231
-
232
186
  ### etsy-analytics-sync-completed
233
187
 
234
188
  **Description:** Contains synced analytics data for Etsy listings. Backend stores this in etsy_analytics_snapshots table and indexes to ELK.
@@ -464,6 +418,84 @@ Retry Configuration:
464
418
 
465
419
 
466
420
 
421
+ ### ip-check-completed
422
+
423
+ **Description:** Contains IP verification results including trademark risk, copyright risk, detected brands/franchises, and analysis confidence scores
424
+
425
+ **Method:** `client.ipCheckCompleted(data)`
426
+
427
+ **Payload Type:** `IpCheckCompletedMessage`
428
+
429
+ **Fields:**
430
+
431
+ - `modelId` (string) [✗]: Model UUID that was analyzed
432
+
433
+ - `ownerId` (string) [✗]: Owner user ID
434
+
435
+ - `entityType` (string) [✗]: Type of entity checked: 'model' or 'metamodel'
436
+
437
+ - `status` (string) [✗]: Overall IP check outcome: 'clear', 'flagged', or 'error'
438
+
439
+ - `trademarkRisk` (string) [✗]: Detected trademark infringement risk level: 'none', 'low', 'medium', 'high'
440
+
441
+ - `copyrightRisk` (string) [✗]: Detected copyright infringement risk level: 'none', 'low', 'medium', 'high'
442
+
443
+ - `matchedBrands` (array) [✗]: Brand names detected in model name or content
444
+
445
+ - `matchedFranchises` (array) [✗]: Franchise/character names detected
446
+
447
+ - `similarModelsCount` (integer) [✗]: Number of visually similar models found
448
+
449
+ - `confidence` (number) [✗]: Overall confidence score for the analysis (0.0-1.0)
450
+
451
+ - `riskScorePercent` (integer) [✗]: Risk score as 0-100 integer (FR-024: >70 HIGH, 40-70 MEDIUM, <40 LOW)
452
+
453
+ - `riskLevel` (string) [✗]: Overall risk level: 'none', 'low', 'medium', 'high'
454
+
455
+ - `recommendation` (string) [✗]: Recommended action: 'block' (HIGH risk), 'warn' (MEDIUM risk), 'allow' (LOW/NONE risk)
456
+
457
+ - `suggestedChanges` (object) [✗]: Suggested modifications to reduce IP risk
458
+
459
+ - `heuristicResults` (object) [✗]: Detailed results from each heuristic check
460
+
461
+ - `error` (object) [✗]: Error details if status is 'error'
462
+
463
+ - `processingDurationMs` (integer) [✗]: Total processing time in milliseconds
464
+
465
+
466
+
467
+ ### ip-check-request
468
+
469
+ **Description:** Triggers intellectual property verification analysis for a model thumbnail, detecting potential trademark and copyright issues using perceptual hashing, text analysis, and optional reverse image search.
470
+
471
+ **Method:** `client.ipCheckRequest(data)`
472
+
473
+ **Payload Type:** `IpCheckRequestMessage`
474
+
475
+ **Fields:**
476
+
477
+ - `modelId` (string) [✗]: Unique identifier for the model to analyze
478
+
479
+ - `ownerId` (string) [✗]: User ID who owns the model
480
+
481
+ - `entityType` (string) [✗]: Type of entity being checked: 'model' or 'metamodel'
482
+
483
+ - `modelName` (string) [✗]: Name of the model for trademark/franchise text detection
484
+
485
+ - `tags` (array) [✗]: Model tags for IP reference detection
486
+
487
+ - `description` (string) [✗]: Model description for text-based IP analysis
488
+
489
+ - `thumbnailUrl` (string) [✗]: URL to fetch the thumbnail image for visual analysis
490
+
491
+ - `minioPath` (string) [✗]: Path to thumbnail in MinIO if stored internally
492
+
493
+ - `additionalImageUrls` (array) [✗]: Optional additional images for more comprehensive analysis (e.g., 360° views)
494
+
495
+ - `analysisOptions` (object) [✗]: Optional analysis configuration
496
+
497
+
498
+
467
499
  ### marketplace-analytics-sync-completed
468
500
 
469
501
  **Description:** Contains synced analytics data for marketplace listings. Backend stores this in marketplace_analytics_snapshots table and indexes to ELK. Works with any marketplace provider.
@@ -667,6 +699,41 @@ This is typically triggered after initial connection or periodically to keep mar
667
699
 
668
700
 
669
701
 
702
+ ### marketplace-intelligence-completed
703
+
704
+ **Description:** Response from marketplace intelligence scraping.
705
+ Contains aggregated similarity data from marketplace searches.
706
+
707
+ Consumed by worker-backend to update pipeline context before
708
+ sellability analysis runs.
709
+
710
+
711
+ **Method:** `client.marketplaceIntelligenceCompleted(data)`
712
+
713
+ **Payload Type:** `MarketplaceIntelligenceCompletedMessage`
714
+
715
+ **Fields:**
716
+
717
+ - `modelId` (string) [✓]: UUID of the model that was researched
718
+
719
+ - `ownerId` (string) [✓]: UUID of the model owner
720
+
721
+ - `status` (string) [✓]: Result status
722
+
723
+ - `marketData` (object) [✗]: Aggregated market intelligence across all scraped marketplaces
724
+
725
+ - `marketplaceBreakdown` (array) [✗]: Results per marketplace
726
+
727
+ - `similarityScore` (number) [✗]: How saturated the market is for this model type (0=unique, 100=very common)
728
+
729
+ - `error` (object) [✗]: Error information if status is FAILED
730
+
731
+ - `analyzedAt` (string) [✗]: When the analysis completed
732
+
733
+ - `analysisVersion` (string) [✗]: Version of the intelligence collector
734
+
735
+
736
+
670
737
  ### marketplace-intelligence-event
671
738
 
672
739
  **Description:** Public marketplace intelligence data scraped from external marketplaces.
@@ -712,6 +779,43 @@ Used for market research, pricing optimization, and trend detection.
712
779
 
713
780
 
714
781
 
782
+ ### marketplace-intelligence-request
783
+
784
+ **Description:** Triggers automated marketplace scraping to find similar/competing listings
785
+ for a given model. This is a pipeline stage that runs after metadata generation
786
+ to inform sellability analysis with real market data.
787
+
788
+ The worker-analytic-collector (or marketplace-connectors worker) will:
789
+ 1. Use model metadata (title, tags, category) to build search queries
790
+ 2. Scrape connected marketplaces (Etsy, eBay, etc.) for similar listings
791
+ 3. Emit marketplace-intelligence-event results for Elasticsearch indexing
792
+ 4. Return aggregated similarity data to the pipeline context
793
+
794
+ Pipeline integration:
795
+ - Triggered after: metadata-generation (needs model title/tags/category)
796
+ - Results feed into: sellability-analysis (market positioning data)
797
+
798
+
799
+ **Method:** `client.marketplaceIntelligenceRequest(data)`
800
+
801
+ **Payload Type:** `MarketplaceIntelligenceRequestMessage`
802
+
803
+ **Fields:**
804
+
805
+ - `modelId` (string) [✓]: UUID of the model to research
806
+
807
+ - `ownerId` (string) [✓]: UUID of the model owner
808
+
809
+ - `searchContext` (object) [✗]: Model metadata used to build marketplace search queries
810
+
811
+ - `scrapingOptions` (object) [✗]: Configuration for the marketplace scraping
812
+
813
+ - `pipelineId` (string) [✗]: Pipeline execution ID for correlation
814
+
815
+ - `executionId` (string) [✗]: Pipeline execution UUID for correlation
816
+
817
+
818
+
715
819
  ### marketplace-listing-description-generation-completed
716
820
 
717
821
  **Description:** Notifies backend that marketplace description generation completed. Contains generated description with metadata tracking (AI model, confidence, generation timestamp) and suggested price.
@@ -1449,6 +1553,76 @@ and stores aggregated statistics in Elasticsearch for trend analysis.
1449
1553
 
1450
1554
 
1451
1555
 
1556
+ ### model-print-analysis-completed
1557
+
1558
+ **Description:** Reports completion of 3D print analysis — contains estimation, printability, and cost breakdown per FR-022
1559
+
1560
+ **Method:** `client.modelPrintAnalysisCompleted(data)`
1561
+
1562
+ **Payload Type:** `ModelPrintAnalysisCompletedMessage`
1563
+
1564
+ **Fields:**
1565
+
1566
+ - `originalJobId` (string) [✗]: ID of the original analysis request job
1567
+
1568
+ - `modelId` (string) [✗]: UUID of the analysed model
1569
+
1570
+ - `status` (string) [✗]: Analysis result status
1571
+
1572
+ - `errorMessage` (string) [✗]: Error description when status is FAILED
1573
+
1574
+ - `material` (string) [✗]: Material type used for estimation
1575
+
1576
+ - `quality` (string) [✗]: Quality preset used
1577
+
1578
+ - `printTimeMinutes` (number) [✗]: Estimated total print time in minutes
1579
+
1580
+ - `materialGrams` (number) [✗]: Estimated material consumption in grams (body only)
1581
+
1582
+ - `needsSupport` (boolean) [✗]: Whether the model requires support structures
1583
+
1584
+ - `supportMaterialGrams` (number) [✗]: Estimated support material in grams
1585
+
1586
+ - `overhangPercentage` (number) [✗]: Percentage of surface area with overhangs > 45°
1587
+
1588
+ - `minWallThicknessMm` (number) [✗]: Thinnest detected wall in millimeters
1589
+
1590
+ - `solidVolumeCm3` (number) [✗]: Solid volume of the mesh in cm³
1591
+
1592
+ - `surfaceAreaCm2` (number) [✗]: Total surface area in cm²
1593
+
1594
+ - `boundingBox` (object) [✗]: Bounding box in millimeters
1595
+
1596
+ - `estimatedCostEUR` (number) [✗]: Total estimated production cost in EUR
1597
+
1598
+ - `costBreakdown` (object) [✗]: Granular cost breakdown per WF-009 MaterialCostCalculatorService
1599
+
1600
+
1601
+
1602
+ ### model-print-analysis-request
1603
+
1604
+ **Description:** Triggers 3D print analysis for a model — estimates print time, material usage, support needs, and cost breakdown per FR-022
1605
+
1606
+ **Method:** `client.modelPrintAnalysisRequest(data)`
1607
+
1608
+ **Payload Type:** `ModelPrintAnalysisRequestMessage`
1609
+
1610
+ **Fields:**
1611
+
1612
+ - `modelId` (string) [✗]: UUID of the model to analyse
1613
+
1614
+ - `ownerId` (string) [✗]: UUID of the user who owns the model
1615
+
1616
+ - `material` (string) [✗]: Material type enum value (e.g. PLA, PETG, RESIN_STANDARD)
1617
+
1618
+ - `quality` (string) [✗]: Print quality preset
1619
+
1620
+ - `webhookUrl` (string) [✗]: URL called when analysis completes or fails
1621
+
1622
+ - `minioPath` (string) [✗]: Path to model in MinIO storage for geometry analysis (e.g. 'raw_models/{modelId}/original.glb')
1623
+
1624
+
1625
+
1452
1626
  ### model-sellability-analysis-completed
1453
1627
 
1454
1628
  **Description:** Contains sellability analysis results including Etsy-specific recommendations, material pricing, and marketplace compatibility scores
@@ -1629,6 +1803,8 @@ and stores aggregated statistics in Elasticsearch for trend analysis.
1629
1803
 
1630
1804
  - `recommendedOrientation` (object) [✗]: Recommended print orientation for minimal support material and best results
1631
1805
 
1806
+ - `slicerRecommendations` (object) [✗]: Slicer-derived recommended print settings based on model analysis (feeds into print job creation as defaults)
1807
+
1632
1808
  - `originalUnit` (string) [✗]: Original file format unit detected from metadata or inferred from scale
1633
1809
 
1634
1810
  - `formatVersion` (string) [✗]: File format version (e.g., 'STL Binary', 'OBJ v4', 'PLY 1.0')
@@ -1679,6 +1855,236 @@ and stores aggregated statistics in Elasticsearch for trend analysis.
1679
1855
 
1680
1856
 
1681
1857
 
1858
+ ### slicing-fdm-request
1859
+
1860
+ **Description:** Request FDM slicing simulation via OrcaSlicer (preferred) or heuristic fallback. Accepts OrcaSlicer-compatible printer/process/filament JSON profiles.
1861
+
1862
+ **Method:** `client.slicingFdmRequest(data)`
1863
+
1864
+ **Payload Type:** `SlicingFdmRequestMessage`
1865
+
1866
+ **Fields:**
1867
+
1868
+ - `modelId` (string) [✗]: UUID of the model
1869
+
1870
+ - `storageItemId` (string) [✗]: UUID or path of the storage item to download the STL/3MF
1871
+
1872
+ - `profileId` (string) [✗]: UUID of the user's slicer profile from the database
1873
+
1874
+ - `profileName` (string) [✗]: Human-readable profile name (e.g. 'My Bambu X1C - PLA Fine')
1875
+
1876
+ - `printerProfile` (object) [✗]: OrcaSlicer printer profile JSON: nozzle_diameter, bed_shape, max speeds, acceleration, retraction
1877
+
1878
+ - `processProfile` (object) [✗]: OrcaSlicer process profile JSON: layer_height, sparse_infill_density, wall_loops, speeds, support settings
1879
+
1880
+ - `filamentProfile` (object) [✗]: OrcaSlicer filament profile JSON: filament_type, filament_density, temperature, flow_ratio, retraction
1881
+
1882
+ - `layerHeight` (number) [✗]: Override: layer height in mm (takes precedence over processProfile)
1883
+
1884
+ - `infillPercentage` (number) [✗]: Override: infill percentage (0-100)
1885
+
1886
+ - `nozzleDiameter` (number) [✗]: Override: nozzle diameter in mm
1887
+
1888
+ - `printSpeed` (number) [✗]: Override: outer wall print speed in mm/s
1889
+
1890
+ - `wallCount` (integer) [✗]: Override: number of wall loops / perimeters
1891
+
1892
+ - `supportEnabled` (boolean) [✗]: Override: generate support structures
1893
+
1894
+ - `materialDensity` (number) [✗]: Override: filament density in g/cm³ (default: 1.24 PLA)
1895
+
1896
+ - `webhookUrl` (string) [✗]: URL to POST the slicing result back to
1897
+
1898
+
1899
+
1900
+ ### slicing-fdm-result
1901
+
1902
+ **Description:** Result of FDM slicing simulation from OrcaSlicer (toolpath) or heuristic fallback. Contains exact physical metrics for cost calculation.
1903
+
1904
+ **Method:** `client.slicingFdmResult(data)`
1905
+
1906
+ **Payload Type:** `SlicingFdmResultMessage`
1907
+
1908
+ **Fields:**
1909
+
1910
+ - `modelId` (string) [✗]: UUID of the model
1911
+
1912
+ - `status` (string) [✗]: Status of the simulation
1913
+
1914
+ - `printTimeHours` (number) [✗]: Exact print time in hours (from toolpath analysis)
1915
+
1916
+ - `materialWeightGrams` (number) [✗]: Total filament weight in grams (including supports)
1917
+
1918
+ - `materialVolumeCm3` (number) [✗]: Extruded material volume in cm³
1919
+
1920
+ - `maxZHeightMM` (number) [✗]: Maximum Z height in mm
1921
+
1922
+ - `supportMaterialWeightGrams` (number) [✗]: Support structure filament weight in grams
1923
+
1924
+ - `layerCount` (integer) [✗]: Total number of layers
1925
+
1926
+ - `totalExtrusionLengthMm` (number) [✗]: Total filament extrusion length in mm
1927
+
1928
+ - `slicingMethod` (string) [✗]: Engine that produced the result
1929
+
1930
+ - `slicerVersion` (string) [✗]: Version of the slicer engine used
1931
+
1932
+ - `profileUsed` (string) [✗]: Name or ID of the slicer profile used
1933
+
1934
+ - `errorCode` (string) [✗]: Error code if simulation failed
1935
+
1936
+ - `errorMessage` (string) [✗]: Error message if simulation failed
1937
+
1938
+
1939
+
1940
+ ### slicing-simulation-request
1941
+
1942
+ **Description:** DEPRECATED: Use slicing-fdm-request or slicing-sla-request instead. Unified contract kept for backward compatibility only.
1943
+
1944
+ **Method:** `client.slicingSimulationRequest(data)`
1945
+
1946
+ **Payload Type:** `SlicingSimulationRequestMessage`
1947
+
1948
+ **Fields:**
1949
+
1950
+ - `modelId` (string) [✗]: UUID of the model
1951
+
1952
+ - `storageItemId` (string) [✗]: UUID or path of the storage item to download the STL/3MF
1953
+
1954
+ - `technology` (string) [✗]: Printing technology: FDM, SLA, MSLA, SLS
1955
+
1956
+ - `slicerProfile` (object) [✗]: Complete slicer profile with user settings. For FDM: OrcaSlicer-compatible JSON profiles. For SLA: exposure/lift parameters.
1957
+
1958
+ - `slicerConfig` (object) [✗]: DEPRECATED: Legacy simple config format. Use slicerProfile instead.
1959
+
1960
+ - `slicerProfileId` (string) [✗]: DEPRECATED: UUID of the slicer profile. Use slicerProfile.profileId instead.
1961
+
1962
+ - `webhookUrl` (string) [✗]: URL to POST the slicing result back to
1963
+
1964
+
1965
+
1966
+ ### slicing-simulation-result
1967
+
1968
+ **Description:** DEPRECATED: Use slicing-fdm-result or slicing-sla-result instead. Unified contract kept for backward compatibility only.
1969
+
1970
+ **Method:** `client.slicingSimulationResult(data)`
1971
+
1972
+ **Payload Type:** `SlicingSimulationResultMessage`
1973
+
1974
+ **Fields:**
1975
+
1976
+ - `modelId` (string) [✗]: UUID of the model
1977
+
1978
+ - `status` (string) [✗]: Status of the simulation
1979
+
1980
+ - `printTimeHours` (number) [✗]: Exact print time in hours (from toolpath or cross-sectional analysis)
1981
+
1982
+ - `materialWeightGrams` (number) [✗]: Total material weight in grams (filament or resin, including supports)
1983
+
1984
+ - `materialVolumeCm3` (number) [✗]: Material volume in cm³
1985
+
1986
+ - `maxZHeightMM` (number) [✗]: Maximum Z height in mm
1987
+
1988
+ - `supportMaterialWeightGrams` (number) [✗]: Support structure material weight in grams
1989
+
1990
+ - `layerCount` (integer) [✗]: Total number of layers
1991
+
1992
+ - `totalExtrusionLengthMm` (number) [✗]: Total filament extrusion length in mm (FDM only)
1993
+
1994
+ - `slicingMethod` (string) [✗]: Engine that produced the result: orcaslicer_toolpath, pyslm_cross_section, heuristic_volumetric
1995
+
1996
+ - `slicerVersion` (string) [✗]: Version of the slicer engine used
1997
+
1998
+ - `profileUsed` (string) [✗]: Name or ID of the slicer profile used
1999
+
2000
+ - `errorCode` (string) [✗]: Error code if simulation failed
2001
+
2002
+ - `errorMessage` (string) [✗]: Error message if simulation failed
2003
+
2004
+
2005
+
2006
+ ### slicing-sla-request
2007
+
2008
+ **Description:** Request SLA/MSLA slicing simulation via PySLM cross-sectional analysis. Accepts resin printer profile with exposure, lift, and layer parameters.
2009
+
2010
+ **Method:** `client.slicingSlaRequest(data)`
2011
+
2012
+ **Payload Type:** `SlicingSlaRequestMessage`
2013
+
2014
+ **Fields:**
2015
+
2016
+ - `modelId` (string) [✗]: UUID of the model
2017
+
2018
+ - `storageItemId` (string) [✗]: UUID or path of the storage item to download the STL/3MF
2019
+
2020
+ - `technology` (string) [✗]: SLA or MSLA
2021
+
2022
+ - `profileId` (string) [✗]: UUID of the user's slicer profile from the database
2023
+
2024
+ - `profileName` (string) [✗]: Human-readable profile name (e.g. 'Elegoo Mars 3 - Standard Grey')
2025
+
2026
+ - `layerHeight` (number) [✗]: Layer height in mm (default: 0.05)
2027
+
2028
+ - `exposureTime` (number) [✗]: Normal layer UV exposure time in seconds (default: 2.5)
2029
+
2030
+ - `bottomExposureTime` (number) [✗]: Bottom/burn-in layer exposure time in seconds (default: 30)
2031
+
2032
+ - `bottomLayers` (integer) [✗]: Number of bottom/burn-in layers (default: 5)
2033
+
2034
+ - `liftHeight` (number) [✗]: Platform lift height in mm between layers (default: 5.0)
2035
+
2036
+ - `liftSpeed` (number) [✗]: Platform lift speed in mm/min (default: 60)
2037
+
2038
+ - `retractSpeed` (number) [✗]: Platform retract speed in mm/min (default: 150)
2039
+
2040
+ - `resinDensity` (number) [✗]: Resin density in g/cm³ (default: 1.1)
2041
+
2042
+ - `supportEnabled` (boolean) [✗]: Generate support structures (default: true for SLA)
2043
+
2044
+ - `webhookUrl` (string) [✗]: URL to POST the slicing result back to
2045
+
2046
+
2047
+
2048
+ ### slicing-sla-result
2049
+
2050
+ **Description:** Result of SLA/MSLA slicing simulation from PySLM cross-sectional analysis. Contains exact resin usage and print time metrics.
2051
+
2052
+ **Method:** `client.slicingSlaResult(data)`
2053
+
2054
+ **Payload Type:** `SlicingSlaResultMessage`
2055
+
2056
+ **Fields:**
2057
+
2058
+ - `modelId` (string) [✗]: UUID of the model
2059
+
2060
+ - `status` (string) [✗]: Status of the simulation
2061
+
2062
+ - `printTimeHours` (number) [✗]: Exact print time in hours (from cross-sectional analysis)
2063
+
2064
+ - `materialWeightGrams` (number) [✗]: Total resin weight in grams (including supports)
2065
+
2066
+ - `materialVolumeCm3` (number) [✗]: Cured resin volume in cm³ (from cross-sectional area integration)
2067
+
2068
+ - `maxZHeightMM` (number) [✗]: Maximum Z height in mm
2069
+
2070
+ - `supportMaterialWeightGrams` (number) [✗]: Support structure resin weight in grams
2071
+
2072
+ - `layerCount` (integer) [✗]: Total number of layers
2073
+
2074
+ - `maxCrossSectionAreaMm2` (number) [✗]: Maximum cross-sectional area in mm² (affects MSLA peel force)
2075
+
2076
+ - `slicingMethod` (string) [✗]: Engine that produced the result
2077
+
2078
+ - `slicerVersion` (string) [✗]: Version of PySLM / trimesh used
2079
+
2080
+ - `profileUsed` (string) [✗]: Name or ID of the slicer profile used
2081
+
2082
+ - `errorCode` (string) [✗]: Error code if simulation failed
2083
+
2084
+ - `errorMessage` (string) [✗]: Error message if simulation failed
2085
+
2086
+
2087
+
1682
2088
  ### thumbnail-generation-completed
1683
2089
 
1684
2090
  **Description:** Handles thumbnail generation completed.
@@ -1701,6 +2107,8 @@ and stores aggregated statistics in Elasticsearch for trend analysis.
1701
2107
 
1702
2108
  - `gltfPreviewPath` (string) [✗]: The path to the generated GLTF/GLB 3D preview file.
1703
2109
 
2110
+ - `animatedPreviewPath` (string) [✗]: The path to the generated animated MP4 preview file.
2111
+
1704
2112
  - `errorMessage` (string) [✗]: An error message if the thumbnail generation failed.
1705
2113
 
1706
2114
  - `storageLocation` (object) [✗]: The storage location of the model.
@@ -1969,12 +2377,6 @@ Used for:
1969
2377
  - Compliance and audit trails
1970
2378
 
1971
2379
 
1972
- - `ekgEdgeBatchCreateCompleted(data: EkgEdgeBatchCreateCompletedMessage): Promise<JobResponse>`
1973
- - Completion event for EKG edge batch creation with propagation results.
1974
-
1975
- - `ekgEdgeBatchCreateRequest(data: EkgEdgeBatchCreateRequestMessage): Promise<JobResponse>`
1976
- - Create multiple EKG edges with Dempster-Shafer mass functions. Triggered by metamodel detection completion.
1977
-
1978
2380
  - `etsyAnalyticsSyncCompleted(data: EtsyAnalyticsSyncCompletedMessage): Promise<JobResponse>`
1979
2381
  - Contains synced analytics data for Etsy listings. Backend stores this in etsy_analytics_snapshots table and indexes to ELK.
1980
2382
 
@@ -2014,6 +2416,12 @@ Retry Configuration:
2014
2416
  - `fileVectorizeRequest(data: FileVectorizeRequestMessage): Promise<JobResponse>`
2015
2417
  - Request to generate a vector embedding for an image file using CLIP.
2016
2418
 
2419
+ - `ipCheckCompleted(data: IpCheckCompletedMessage): Promise<JobResponse>`
2420
+ - Contains IP verification results including trademark risk, copyright risk, detected brands/franchises, and analysis confidence scores
2421
+
2422
+ - `ipCheckRequest(data: IpCheckRequestMessage): Promise<JobResponse>`
2423
+ - Triggers intellectual property verification analysis for a model thumbnail, detecting potential trademark and copyright issues using perceptual hashing, text analysis, and optional reverse image search.
2424
+
2017
2425
  - `marketplaceAnalyticsSyncCompleted(data: MarketplaceAnalyticsSyncCompletedMessage): Promise<JobResponse>`
2018
2426
  - Contains synced analytics data for marketplace listings. Backend stores this in marketplace_analytics_snapshots table and indexes to ELK. Works with any marketplace provider.
2019
2427
 
@@ -2037,6 +2445,14 @@ This is typically triggered after initial connection or periodically to keep mar
2037
2445
  - Requests rotation/refresh of marketplace connection credentials. This is used for: - OAuth token refresh when tokens are near expiry - API key rotation for enhanced security - Re-authentication after connection errors - Scheduled credential updates
2038
2446
 
2039
2447
 
2448
+ - `marketplaceIntelligenceCompleted(data: MarketplaceIntelligenceCompletedMessage): Promise<JobResponse>`
2449
+ - Response from marketplace intelligence scraping.
2450
+ Contains aggregated similarity data from marketplace searches.
2451
+
2452
+ Consumed by worker-backend to update pipeline context before
2453
+ sellability analysis runs.
2454
+
2455
+
2040
2456
  - `marketplaceIntelligenceEvent(data: MarketplaceIntelligenceEventMessage): Promise<JobResponse>`
2041
2457
  - Public marketplace intelligence data scraped from external marketplaces.
2042
2458
 
@@ -2055,6 +2471,22 @@ Consumed by worker-analytic-collector for Elasticsearch indexing.
2055
2471
  Used for market research, pricing optimization, and trend detection.
2056
2472
 
2057
2473
 
2474
+ - `marketplaceIntelligenceRequest(data: MarketplaceIntelligenceRequestMessage): Promise<JobResponse>`
2475
+ - Triggers automated marketplace scraping to find similar/competing listings
2476
+ for a given model. This is a pipeline stage that runs after metadata generation
2477
+ to inform sellability analysis with real market data.
2478
+
2479
+ The worker-analytic-collector (or marketplace-connectors worker) will:
2480
+ 1. Use model metadata (title, tags, category) to build search queries
2481
+ 2. Scrape connected marketplaces (Etsy, eBay, etc.) for similar listings
2482
+ 3. Emit marketplace-intelligence-event results for Elasticsearch indexing
2483
+ 4. Return aggregated similarity data to the pipeline context
2484
+
2485
+ Pipeline integration:
2486
+ - Triggered after: metadata-generation (needs model title/tags/category)
2487
+ - Results feed into: sellability-analysis (market positioning data)
2488
+
2489
+
2058
2490
  - `marketplaceListingDescriptionGenerationCompleted(data: MarketplaceListingDescriptionGenerationCompletedMessage): Promise<JobResponse>`
2059
2491
  - Notifies backend that marketplace description generation completed. Contains generated description with metadata tracking (AI model, confidence, generation timestamp) and suggested price.
2060
2492
 
@@ -2148,6 +2580,12 @@ and stores aggregated statistics in Elasticsearch for trend analysis.
2148
2580
  - `modelMetamodelDetectionRequest(data: ModelMetamodelDetectionRequestMessage): Promise<JobResponse>`
2149
2581
  - Handles model metamodel detection requests.
2150
2582
 
2583
+ - `modelPrintAnalysisCompleted(data: ModelPrintAnalysisCompletedMessage): Promise<JobResponse>`
2584
+ - Reports completion of 3D print analysis — contains estimation, printability, and cost breakdown per FR-022
2585
+
2586
+ - `modelPrintAnalysisRequest(data: ModelPrintAnalysisRequestMessage): Promise<JobResponse>`
2587
+ - Triggers 3D print analysis for a model — estimates print time, material usage, support needs, and cost breakdown per FR-022
2588
+
2151
2589
  - `modelSellabilityAnalysisCompleted(data: ModelSellabilityAnalysisCompletedMessage): Promise<JobResponse>`
2152
2590
  - Contains sellability analysis results including Etsy-specific recommendations, material pricing, and marketplace compatibility scores
2153
2591
 
@@ -2166,6 +2604,24 @@ and stores aggregated statistics in Elasticsearch for trend analysis.
2166
2604
  - `modelTechnicalMetadataRequest(data: ModelTechnicalMetadataRequestMessage): Promise<JobResponse>`
2167
2605
  - Triggers comprehensive technical analysis of a 3D model file to extract geometry, quality metrics, and print-readiness information
2168
2606
 
2607
+ - `slicingFdmRequest(data: SlicingFdmRequestMessage): Promise<JobResponse>`
2608
+ - Request FDM slicing simulation via OrcaSlicer (preferred) or heuristic fallback. Accepts OrcaSlicer-compatible printer/process/filament JSON profiles.
2609
+
2610
+ - `slicingFdmResult(data: SlicingFdmResultMessage): Promise<JobResponse>`
2611
+ - Result of FDM slicing simulation from OrcaSlicer (toolpath) or heuristic fallback. Contains exact physical metrics for cost calculation.
2612
+
2613
+ - `slicingSimulationRequest(data: SlicingSimulationRequestMessage): Promise<JobResponse>`
2614
+ - DEPRECATED: Use slicing-fdm-request or slicing-sla-request instead. Unified contract kept for backward compatibility only.
2615
+
2616
+ - `slicingSimulationResult(data: SlicingSimulationResultMessage): Promise<JobResponse>`
2617
+ - DEPRECATED: Use slicing-fdm-result or slicing-sla-result instead. Unified contract kept for backward compatibility only.
2618
+
2619
+ - `slicingSlaRequest(data: SlicingSlaRequestMessage): Promise<JobResponse>`
2620
+ - Request SLA/MSLA slicing simulation via PySLM cross-sectional analysis. Accepts resin printer profile with exposure, lift, and layer parameters.
2621
+
2622
+ - `slicingSlaResult(data: SlicingSlaResultMessage): Promise<JobResponse>`
2623
+ - Result of SLA/MSLA slicing simulation from PySLM cross-sectional analysis. Contains exact resin usage and print time metrics.
2624
+
2169
2625
  - `thumbnailGenerationCompleted(data: ThumbnailGenerationCompletedMessage): Promise<JobResponse>`
2170
2626
  - Handles thumbnail generation completed.
2171
2627