feat: complete inventory image and sales workflows
Quality / test (push) Canceled after 0s

Commit the working vertical slices for inventory image processing and the Sale workflow, including Sale history, audited voiding, multi-item persistence, admin UI, migrations, documentation, and tests.
This commit is contained in:
2026-09-09 00:35:57 -04:00
parent ea145191df
commit 8e5ce80196
32 changed files with 1092 additions and 226 deletions
+3 -2
View File
@@ -4,7 +4,7 @@ import { fileURLToPath } from 'node:url';
dotenv.config({ path: fileURLToPath(new URL('../../../.env', import.meta.url)) });
import { createDatabase } from '../../api/src/infrastructure/database/client.js';
import { createLocalImageStorage } from '../../api/src/infrastructure/images/local-image-storage.js';
import { createLocalImageStorage, resolveProjectImageStorageRoot } from '../../api/src/infrastructure/images/local-image-storage.js';
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';
@@ -13,8 +13,9 @@ import { processNextPersistentImageDerivativeJob } from './image-derivative-work
const pollIntervalMs = Number.parseInt(process.env.WORKER_POLL_INTERVAL_MS ?? '2000', 10);
async function runWorker() {
const imageStorageRoot = resolveProjectImageStorageRoot(process.env.IMAGE_STORAGE_ROOT ?? '.local/image-storage', import.meta.url);
const database = createDatabase();
const imageStorage = createLocalImageStorage(process.env.IMAGE_STORAGE_ROOT ?? '.local/image-storage');
const imageStorage = createLocalImageStorage(imageStorageRoot);
const jobRepository = createImageDerivativeJobRepository(database.db);
const processor = createImageDerivativeProcessor({
imageStorage,