feat: add pricing observation API
Quality / test (push) Canceled after 0s

Add seller-owned pricing observation persistence, median market valuation calculation, admin routes, contracts, validation, migration, and focused tests.
This commit is contained in:
2026-09-09 01:05:41 -04:00
parent 455971431f
commit 721b590a89
14 changed files with 279 additions and 0 deletions
+1
View File
@@ -15,5 +15,6 @@
"./public-inventory": "./public-inventory.js",
"./public-product": "./public-product.js",
"./public-seller": "./public-seller.js"
,"./pricing": "./pricing.js"
}
}
+31
View File
@@ -0,0 +1,31 @@
function toIsoString(value) { return value instanceof Date ? value.toISOString() : value; }
export function toAdminPricingObservationDto(observation) {
return {
id: observation.id,
productId: observation.productId,
inventoryItemId: observation.inventoryItemId,
providerId: observation.providerId,
priceMinor: observation.priceMinor,
currency: observation.currency,
sourceIdentifier: observation.sourceIdentifier,
conditionId: observation.conditionId,
sourceUrl: observation.sourceUrl ?? null,
qualityScore: observation.qualityScore ?? null,
observedAt: toIsoString(observation.observedAt),
};
}
export function toAdminMarketValuationDto({ valuation, observations }) {
return {
id: valuation.id,
inventoryItemId: valuation.inventoryItemId,
valueMinor: valuation.valueMinor,
currency: valuation.currency,
strategy: valuation.strategy,
confidence: valuation.confidence,
sourceCount: valuation.sourceCount,
calculatedAt: toIsoString(valuation.calculatedAt),
observations: observations.map(toAdminPricingObservationDto),
};
}