feat: reconcile application vertical slices

Backfill the completed acquisitions, sales, dashboard, pricing, search, public detail, worker, migration, contracts, validation, tests, and implementation-status changes into one verified application slice.
This commit is contained in:
2026-09-09 22:12:53 -04:00
parent b9ff7445a6
commit b8f089a5d9
78 changed files with 4561 additions and 2057 deletions
+1 -1
View File
@@ -21,4 +21,4 @@ export function toAdminAcquisitionDto(acquisition) {
createdAt: toIsoString(acquisition.createdAt),
updatedAt: toIsoString(acquisition.updatedAt),
};
}
}
+19 -10
View File
@@ -2,15 +2,24 @@ export function toAdminDashboardDto(dashboard) {
return {
counts: dashboard.counts,
financials: dashboard.financials,
recentSales: dashboard.recentSales.map(({ sale, saleItem, inventoryItem, productName, netProceedsMinor, profitMinor }) => ({
id: sale.id,
productName: productName ?? inventoryItem.id,
saleDate: sale.saleDate,
soldPriceMinor: sale.soldPriceMinor,
netProceedsMinor,
profitMinor,
inventoryItemId: saleItem.inventoryItemId,
})),
recentSales: dashboard.recentSales.map(
({
sale,
saleItem,
inventoryItem,
productName,
netProceedsMinor,
profitMinor,
}) => ({
id: sale.id,
productName: productName ?? inventoryItem.id,
saleDate: sale.saleDate,
soldPriceMinor: sale.soldPriceMinor,
netProceedsMinor,
profitMinor,
inventoryItemId: saleItem.inventoryItemId,
}),
),
recentAcquisitions: dashboard.recentAcquisitions.map((acquisition) => ({
id: acquisition.id,
inventoryItemId: acquisition.inventoryItemId,
@@ -18,4 +27,4 @@ export function toAdminDashboardDto(dashboard) {
costBasisMinor: acquisition.costBasisMinor ?? null,
})),
};
}
}
+3 -3
View File
@@ -14,8 +14,8 @@
"./public-listing": "./public-listing.js",
"./public-inventory": "./public-inventory.js",
"./public-product": "./public-product.js",
"./public-seller": "./public-seller.js"
,"./pricing": "./pricing.js",
"./public-seller": "./public-seller.js",
"./pricing": "./pricing.js",
"./provider-mapping": "./provider-mapping.js"
}
}
}
+7 -3
View File
@@ -1,4 +1,6 @@
function toIsoString(value) { return value instanceof Date ? value.toISOString() : value; }
function toIsoString(value) {
return value instanceof Date ? value.toISOString() : value;
}
export function toAdminPricingObservationDto(observation) {
return {
@@ -28,7 +30,9 @@ export function toAdminMarketValuationDto({ valuation, observations }) {
confidence: valuation.confidence,
sourceCount: valuation.sourceCount,
calculatedAt: toIsoString(valuation.calculatedAt),
stale: Date.now() - new Date(valuation.calculatedAt).getTime() > 7 * 24 * 60 * 60 * 1000,
stale:
Date.now() - new Date(valuation.calculatedAt).getTime() >
7 * 24 * 60 * 60 * 1000,
observations: observations.map(toAdminPricingObservationDto),
};
}
}
+8 -2
View File
@@ -9,7 +9,13 @@ export function toAdminProviderMappingDto(mapping) {
sourceUrl: mapping.sourceUrl ?? null,
status: mapping.status,
metadata: mapping.metadata ?? {},
createdAt: mapping.createdAt instanceof Date ? mapping.createdAt.toISOString() : mapping.createdAt,
updatedAt: mapping.updatedAt instanceof Date ? mapping.updatedAt.toISOString() : mapping.updatedAt,
createdAt:
mapping.createdAt instanceof Date
? mapping.createdAt.toISOString()
: mapping.createdAt,
updatedAt:
mapping.updatedAt instanceof Date
? mapping.updatedAt.toISOString()
: mapping.updatedAt,
};
}
+1 -1
View File
@@ -19,4 +19,4 @@ export function toPublicListingDto(listing) {
createdAt: toIsoString(listing.createdAt),
updatedAt: toIsoString(listing.updatedAt),
};
}
}
+15 -3
View File
@@ -2,7 +2,16 @@ function toIsoString(value) {
return value instanceof Date ? value.toISOString() : value;
}
export function toAdminSaleDto({ sale, saleItem, inventoryItem, saleItems = [saleItem], inventoryItems = [inventoryItem], netProceedsMinor, profitMinor, productName }) {
export function toAdminSaleDto({
sale,
saleItem,
inventoryItem,
saleItems = [saleItem],
inventoryItems = [inventoryItem],
netProceedsMinor,
profitMinor,
productName,
}) {
return {
id: sale.id,
sellerId: sale.sellerId,
@@ -40,8 +49,11 @@ export function toAdminSaleDto({ sale, saleItem, inventoryItem, saleItems = [sal
id: inventoryItem.id,
status: inventoryItem.status,
},
inventoryItems: inventoryItems.map((item) => ({ id: item.id, status: item.status })),
inventoryItems: inventoryItems.map((item) => ({
id: item.id,
status: item.status,
})),
createdAt: toIsoString(sale.createdAt),
updatedAt: toIsoString(sale.updatedAt),
};
}
}