Add robust outlier detection, stale valuation metadata, and audited seller-scoped market-value overrides with migration and tests.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { toAdminMarketValuationDto, toAdminPricingObservationDto } from '@pokemon-inventory/contracts/pricing';
|
||||
import { createPricingObservationSchema } from '@pokemon-inventory/validation/pricing';
|
||||
import { createMarketValueOverrideSchema, createPricingObservationSchema } from '@pokemon-inventory/validation/pricing';
|
||||
|
||||
import { createApplicationError } from '../../../shared/errors/application-error.js';
|
||||
|
||||
@@ -40,4 +40,17 @@ export async function registerAdminPricingRoutes(app, options) {
|
||||
const valuation = await pricingService.calculate({ sellerId: request.admin.sellerId, inventoryItemId: request.params.id });
|
||||
return reply.code(200).send({ data: toAdminMarketValuationDto(valuation) });
|
||||
});
|
||||
|
||||
app.post('/inventory/:id/valuation/override', async (request, reply) => {
|
||||
await authorizeUnsafeRequest?.(request.cookies[sessionCookieName], request.headers['x-csrf-token']);
|
||||
const result = createMarketValueOverrideSchema.safeParse(request.body);
|
||||
if (!result.success) return validationError(reply, result);
|
||||
const override = await pricingService.override({
|
||||
...result.data,
|
||||
inventoryItemId: request.params.id,
|
||||
sellerId: request.admin.sellerId,
|
||||
actorUserId: request.admin.userId,
|
||||
});
|
||||
return reply.code(201).send({ data: override });
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user