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 { createImageDerivativeProcessor } from '../../api/src/infrastructure/images/image-derivative-processor.js';
|
||||||
import { createSharpImageRenderer } from '../../api/src/infrastructure/images/sharp-image-renderer.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 { 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 { 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);
|
const pollIntervalMs = Number.parseInt(process.env.WORKER_POLL_INTERVAL_MS ?? '2000', 10);
|
||||||
|
|
||||||
@@ -17,6 +22,12 @@ async function runWorker() {
|
|||||||
const database = createDatabase();
|
const database = createDatabase();
|
||||||
const imageStorage = createLocalImageStorage(imageStorageRoot);
|
const imageStorage = createLocalImageStorage(imageStorageRoot);
|
||||||
const jobRepository = createImageDerivativeJobRepository(database.db);
|
const jobRepository = createImageDerivativeJobRepository(database.db);
|
||||||
|
const pricingRefreshJobRepository = createPricingRefreshJobRepository(database.db);
|
||||||
|
const pricingProviderRegistry = createPricingProviderRegistry();
|
||||||
|
const pricingService = createPricingService({
|
||||||
|
pricingRepository: createPricingRepository(database.db),
|
||||||
|
pricingProviderRegistry,
|
||||||
|
});
|
||||||
const processor = createImageDerivativeProcessor({
|
const processor = createImageDerivativeProcessor({
|
||||||
imageStorage,
|
imageStorage,
|
||||||
renderer: createSharpImageRenderer(),
|
renderer: createSharpImageRenderer(),
|
||||||
@@ -32,6 +43,17 @@ async function runWorker() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (result) console.log(`Image derivative job ${result.id} ${result.status.toLowerCase()}.`);
|
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();
|
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.
|
- 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.
|
- 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.
|
- 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.
|
- 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.
|
- `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