This commit is contained in:
@@ -8,7 +8,12 @@ import { createLocalImageStorage, resolveProjectImageStorageRoot } from '../../a
|
||||
import { createImageDerivativeProcessor } from '../../api/src/infrastructure/images/image-derivative-processor.js';
|
||||
import { createSharpImageRenderer } from '../../api/src/infrastructure/images/sharp-image-renderer.js';
|
||||
import { createImageDerivativeJobRepository } from '../../api/src/modules/inventory/repositories/image-derivative-job-repository.js';
|
||||
import { createPricingRepository } from '../../api/src/modules/pricing/repositories/pricing-repository.js';
|
||||
import { createPricingRefreshJobRepository } from '../../api/src/modules/pricing/repositories/pricing-refresh-job-repository.js';
|
||||
import { createPricingService } from '../../api/src/modules/pricing/services/pricing-service.js';
|
||||
import { createPricingProviderRegistry } from '../../api/src/modules/pricing/providers/pricing-provider.js';
|
||||
import { processNextPersistentImageDerivativeJob } from './image-derivative-worker.js';
|
||||
import { processNextPersistentPricingRefreshJob, runPricingRefreshJob } from './pricing-refresh-worker.js';
|
||||
|
||||
const pollIntervalMs = Number.parseInt(process.env.WORKER_POLL_INTERVAL_MS ?? '2000', 10);
|
||||
|
||||
@@ -17,6 +22,12 @@ async function runWorker() {
|
||||
const database = createDatabase();
|
||||
const imageStorage = createLocalImageStorage(imageStorageRoot);
|
||||
const jobRepository = createImageDerivativeJobRepository(database.db);
|
||||
const pricingRefreshJobRepository = createPricingRefreshJobRepository(database.db);
|
||||
const pricingProviderRegistry = createPricingProviderRegistry();
|
||||
const pricingService = createPricingService({
|
||||
pricingRepository: createPricingRepository(database.db),
|
||||
pricingProviderRegistry,
|
||||
});
|
||||
const processor = createImageDerivativeProcessor({
|
||||
imageStorage,
|
||||
renderer: createSharpImageRenderer(),
|
||||
@@ -32,6 +43,17 @@ async function runWorker() {
|
||||
});
|
||||
|
||||
if (result) console.log(`Image derivative job ${result.id} ${result.status.toLowerCase()}.`);
|
||||
|
||||
const pricingResult = await processNextPersistentPricingRefreshJob({
|
||||
jobRepository: pricingRefreshJobRepository,
|
||||
pricingRefreshJob: (job) => runPricingRefreshJob({
|
||||
job,
|
||||
providerRegistry: pricingProviderRegistry,
|
||||
pricingService,
|
||||
}),
|
||||
});
|
||||
|
||||
if (pricingResult) console.log(`Pricing refresh job ${pricingResult.id} ${pricingResult.status.toLowerCase()}.`);
|
||||
}
|
||||
|
||||
await processOne();
|
||||
|
||||
@@ -149,7 +149,7 @@ Work through one bounded vertical slice at a time. The linked documentation rema
|
||||
- No initial User/Seller is provisioned in the development database yet. Run `npm run provision:admin` after setting its required local `.env` variables.
|
||||
- Listings are partially implemented: draft creation, seller-scoped reads, publication gating, lifecycle writes, archive behavior, sold/archived inventory checks, and item-owned image metadata are complete; storage-backed processing remains.
|
||||
- Concrete provider adapters, asynchronous pricing refresh transport, richer exports/settings, full integration CI services, and deployment/backup automation remain incomplete to varying degrees.
|
||||
- The pricing refresh worker now has durable PostgreSQL refresh jobs with row-locked claim, completed/failed persistence, and provider observations routed through the pricing service; configured external providers remain deployment work.
|
||||
- The pricing refresh worker now claims durable PostgreSQL jobs with row locking, persists completed/failed outcomes, and routes provider observations through the pricing service; configured external providers remain deployment work.
|
||||
- Pricing refresh requests now enqueue seller-scoped jobs and expose a safe `GET /api/v1/admin/jobs/:id` polling contract instead of doing provider work inline.
|
||||
- `npm install` currently reports dependency audit findings. Review and remediate them before production deployment; do not use `npm audit fix --force` without reviewing its changes.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user