12 lines
577 B
TypeScript
12 lines
577 B
TypeScript
import { collectedProductPayloadSchema } from '@atlas/contracts';
|
||
|
||
/** 先按共享契约校验采集载荷,失败时保留字段路径,不丢弃或截断真实 SKU。 */
|
||
export function validateCollectedPayload(payload: unknown) {
|
||
const result = collectedProductPayloadSchema.safeParse(payload);
|
||
if (result.success) return result.data;
|
||
const details = result.error.issues.slice(0, 3).map((issue) =>
|
||
`${issue.path.join('.') || '采集数据'}:${issue.message}`,
|
||
);
|
||
throw new Error(`采集数据不符合要求(${details.join(';')})`);
|
||
}
|