| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- 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'));
- });
|