27 lines
826 B
TypeScript
27 lines
826 B
TypeScript
import { z } from 'zod';
|
|
|
|
/**
|
|
* 浏览器扩展与 API 共享的采集载荷最小契约。
|
|
* 领域字段会随采集模块实现逐步补全,不能在扩展侧绕过此契约直接构造 API 请求。
|
|
*/
|
|
export const collectedProductPayloadSchema = z.object({
|
|
source: z.object({
|
|
platform: z.enum(['ozon', '1688', 'taobao', 'tmall']),
|
|
itemKey: z.string().min(1),
|
|
canonicalUrl: z.url(),
|
|
collectedAt: z.iso.datetime(),
|
|
parserVersion: z.string().min(1),
|
|
}),
|
|
common: z.object({
|
|
title: z.string().min(1).optional(),
|
|
}),
|
|
variantAxes: z.array(z.unknown()),
|
|
variants: z.array(z.unknown()),
|
|
assets: z.array(z.unknown()),
|
|
evidence: z.array(z.unknown()),
|
|
});
|
|
|
|
export type CollectedProductPayload = z.infer<
|
|
typeof collectedProductPayloadSchema
|
|
>;
|