import assert from 'node:assert/strict'; import test from 'node:test'; import { extractImportRecords, type ImportDataset, } from '../src/modules/domestic-voc/services/dataset-import.service.js'; test('dataset import extraction preserves full daily operating metrics', () => { const dataset = { caseName: 'Demashi', platform: 'jd', products: [{ platform: 'jd', productId: '1001', productKey: 'jd:1001', role: 'own', brand: 'Demashi', title: 'Product', model: 'Model', category1: 'A', category2: 'B', category3: 'C', source: 'case-file', trend: [{ date: '2026-07-23', gmv: 120, soldUnits: 3, transactionOrders: 2, transactionCustomers: 2, impressions: 100, clicks: 20, refundAmount: 10, }], }], mappingGroups: [], relations: [], } as unknown as ImportDataset; const records = extractImportRecords(dataset); assert.equal(records.products.length, 1); assert.equal(records.metrics.length, 1); assert.equal(records.metrics[0]?.impressions, 100); assert.equal(records.metrics[0]?.clicks, 20); assert.equal(records.metrics[0]?.refundAmount, 10); }); test('dataset import creates explicit relation stubs for missing mapping products', () => { const dataset = { caseName: 'Demashi', platform: 'jd', products: [], mappingGroups: [{ ownProductId: 'own-1', ownProductKey: 'jd:own-1', model: 'DM-1', category: 'Kitchen', competitors: [], }], relations: [{ relationKey: 'jd:own-1:competitor-1', ownProductKey: 'jd:own-1', ownProductId: 'own-1', competitorProductKey: 'jd:competitor-1', competitorProductId: 'competitor-1', competitorBrand: 'Competitor', category: 'Kitchen', }], } as unknown as ImportDataset; const records = extractImportRecords(dataset); assert.equal(records.products.length, 2); assert.deepEqual(records.products.map((product) => product.role), ['own', 'competitor']); assert.ok(records.products.every((product) => product.source === 'relation_stub')); });