新增统一案例存储仓储

This commit is contained in:
czj
2026-07-08 13:19:35 +08:00
parent 01c02049d4
commit ee98c3304b
11 changed files with 1497 additions and 51 deletions
+10 -5
View File
@@ -1,4 +1,5 @@
import type { PublishPlatform, QaReport } from "../domain/types";
import type { OptimizationCaseType } from "../cases/types";
export type CalibrationDirection =
| "better_than_expected"
@@ -27,8 +28,10 @@ export interface RubricVersion {
export interface ScoringRun {
id: string;
job_id: string;
revision: number;
result_version_id?: string | null;
case_type?: OptimizationCaseType;
job_id: string | null;
revision: number | null;
rubric_version_id: string;
dimension_scores: Record<string, number>;
composite_score: number;
@@ -38,9 +41,11 @@ export interface ScoringRun {
export interface PublicationRecord {
id: string;
job_id: string;
revision: number;
platform: PublishPlatform;
result_version_id: string | null;
job_id: string | null;
revision: number | null;
publish_target: string;
platform?: PublishPlatform;
url: string;
published_at: string;
status: "draft" | "published" | "archived";
+18 -7
View File
@@ -44,11 +44,18 @@ export const performanceMetricsSchema = z
);
export const publicationInputSchema = z.object({
platform: publishPlatformSchema,
platform: publishPlatformSchema.optional(),
publish_target: z.string().trim().min(1).optional(),
url: z.string().trim().url(),
published_at: z.string().datetime(),
notes: optionalTextSchema.default(""),
});
}).transform((input) => ({
platform: input.platform,
publish_target: input.publish_target ?? input.platform ?? "未指定",
url: input.url,
published_at: input.published_at,
notes: input.notes,
}));
export const manualPerformanceInputSchema = z
.object({
@@ -100,8 +107,10 @@ export const rubricVersionSchema = z.object({
export const scoringRunSchema = z.object({
id: z.string().trim().min(1),
job_id: z.string().trim().min(1),
revision: z.number().int().positive(),
result_version_id: z.string().trim().min(1).nullable().optional(),
case_type: z.enum(["article", "human_copy"]).optional(),
job_id: z.string().trim().min(1).nullable(),
revision: z.number().int().positive().nullable(),
rubric_version_id: z.string().trim().min(1),
dimension_scores: z.record(z.string(), z.number().min(0).max(5)),
composite_score: z.number().min(0).max(10),
@@ -111,9 +120,11 @@ export const scoringRunSchema = z.object({
export const publicationRecordSchema = z.object({
id: z.string().trim().min(1),
job_id: z.string().trim().min(1),
revision: z.number().int().positive(),
platform: publishPlatformSchema,
result_version_id: z.string().trim().min(1).nullable(),
job_id: z.string().trim().min(1).nullable(),
revision: z.number().int().positive().nullable(),
publish_target: z.string().trim().min(1),
platform: publishPlatformSchema.optional(),
url: z.string().trim().url(),
published_at: z.string().datetime(),
status: z.enum(["draft", "published", "archived"]),