feat: 补充报告评论集合与评论详情证据

This commit is contained in:
2026-04-07 19:58:27 +08:00
parent 4ea9eaf4a6
commit 41a42bca25
8 changed files with 1712 additions and 457 deletions
+50
View File
@@ -40,10 +40,59 @@ export const EvidenceSchema = z.object({
source_type: z.enum(evidenceSourceTypes),
source_url: z.string().url(),
review_ref: z.string().nullable(),
review_detail: z
.object({
content: z.string().min(1),
score: z.string().nullable(),
created_at: z.string().nullable(),
author_label: z.string().nullable(),
sku_labels: z.array(z.string().min(1)).optional(),
like_count: z.string().nullable().optional(),
reply: z.string().nullable().optional(),
append_content: z.string().nullable().optional(),
picture_urls: z.array(z.string().min(1)).optional(),
video_urls: z.array(z.string().min(1)).optional(),
append_picture_urls: z.array(z.string().min(1)).optional()
})
.optional(),
snippet: z.string().min(1),
captured_at: z.string().datetime()
});
const ReviewDetailSchema = z.object({
content: z.string().min(1),
score: z.string().nullable(),
created_at: z.string().nullable(),
author_label: z.string().nullable(),
sku_labels: z.array(z.string().min(1)).optional(),
like_count: z.string().nullable().optional(),
reply: z.string().nullable().optional(),
append_content: z.string().nullable().optional(),
picture_urls: z.array(z.string().min(1)).optional(),
video_urls: z.array(z.string().min(1)).optional(),
append_picture_urls: z.array(z.string().min(1)).optional()
});
const ReviewCollectionCommentSchema = ReviewDetailSchema.extend({
review_ref: z.string().min(1),
sample_bucket: z.enum(["latest", "hot", "negative"]).nullable().optional()
});
const ReviewCollectionSchema = z.object({
collection_id: z.string().min(1),
candidate_id: z.string().min(1),
product_evidence_id: z.string().min(1),
platform: z.enum(platforms),
source_url: z.string().url(),
title: z.string().min(1),
store_name: z.string().nullable(),
price_label: z.string().nullable(),
captured_at: z.string().datetime(),
review_count: z.number().int().nonnegative(),
sampled_review_refs: z.array(z.string().min(1)),
comments: z.array(ReviewCollectionCommentSchema)
});
export const PlatformInsightSchema = z.object({
platform: z.enum(platforms),
execution_status: z.enum(executionStatuses),
@@ -86,6 +135,7 @@ export const ReportSchema = z.object({
cross_platform_insights: z.array(InsightCardSchema),
recommendations: z.array(InsightCardSchema),
evidence_index: z.array(EvidenceSchema),
review_collections: z.array(ReviewCollectionSchema).optional(),
quality_flags: z.object({
sample_insufficient: z.boolean(),
partial_platform_failure: z.boolean(),