Refactor pipeline task handling and UI flows
This commit is contained in:
@@ -139,16 +139,22 @@ test("structured output schemas avoid optional top-level fields for OpenAI stric
|
||||
() =>
|
||||
qualityReviewSchema.parse({
|
||||
isValid: true,
|
||||
severity: "ok",
|
||||
issues: [],
|
||||
suggestions: [],
|
||||
rewriteRequired: false,
|
||||
revisedCopy: null,
|
||||
}),
|
||||
/notes|invalid|required/i,
|
||||
);
|
||||
assert.equal(
|
||||
qualityReviewSchema.parse({
|
||||
isValid: true,
|
||||
severity: "ok",
|
||||
issues: [],
|
||||
suggestions: [],
|
||||
rewriteRequired: false,
|
||||
revisedCopy: null,
|
||||
notes: null,
|
||||
}).notes,
|
||||
null,
|
||||
@@ -338,8 +344,11 @@ test("outreach schemas parse German customer-facing payloads", () => {
|
||||
});
|
||||
const qualityParsed = qualityReviewSchema.parse({
|
||||
isValid: true,
|
||||
severity: "ok",
|
||||
issues: [],
|
||||
suggestions: ["Mehr Kundennutzen konkret beschreiben."],
|
||||
rewriteRequired: false,
|
||||
revisedCopy: null,
|
||||
notes: null,
|
||||
});
|
||||
|
||||
@@ -350,6 +359,46 @@ test("outreach schemas parse German customer-facing payloads", () => {
|
||||
assert.equal(Array.isArray(qualityParsed.suggestions), true);
|
||||
});
|
||||
|
||||
test("quality review schema accepts one-shot revised copy payloads", () => {
|
||||
const parsed: QualityReview = qualityReviewSchema.parse({
|
||||
isValid: false,
|
||||
severity: "warning",
|
||||
issues: ["Betreff klingt noch etwas generisch."],
|
||||
suggestions: ["Betreff konkreter machen."],
|
||||
rewriteRequired: true,
|
||||
revisedCopy: {
|
||||
publicSummary: "Mir ist aufgefallen, dass die mobile Seite etwas traege wirkt.",
|
||||
publicBody:
|
||||
"Mein Vorschlag waere, zuerst die sichtbaren Ladebremsen der Startseite zu pruefen.",
|
||||
emailSubject: "Kurzer Hinweis zur mobilen Seite",
|
||||
emailBody:
|
||||
"Guten Tag, mir ist beim Blick auf Ihre Website aufgefallen, dass die mobile Seite etwas traege wirkt.",
|
||||
phoneScript: {
|
||||
openingLine: "Guten Tag, hier ist Matthias Meister.",
|
||||
callScript: [
|
||||
"Mir ist bei Ihrer mobilen Website ein konkreter Ladezeitpunkt aufgefallen.",
|
||||
"Mein Vorschlag waere, diesen Punkt kurz zu priorisieren.",
|
||||
],
|
||||
closeLine: "Soll ich Ihnen den Hinweis kurz per E-Mail senden?",
|
||||
},
|
||||
followUpDraft: {
|
||||
message:
|
||||
"Ich wollte kurz nachfassen, ob der Hinweis zur mobilen Seite fuer Sie relevant ist.",
|
||||
followInDays: 7,
|
||||
goals: ["kurze Rueckmeldung", "Interesse klaeren"],
|
||||
},
|
||||
},
|
||||
notes: ["Ein Rewrite ist sinnvoll."],
|
||||
});
|
||||
|
||||
assert.equal(parsed.rewriteRequired, true);
|
||||
assert.equal(parsed.revisedCopy?.emailSubject, "Kurzer Hinweis zur mobilen Seite");
|
||||
assert.deepEqual(parsed.revisedCopy?.followUpDraft.goals, [
|
||||
"kurze Rueckmeldung",
|
||||
"Interesse klaeren",
|
||||
]);
|
||||
});
|
||||
|
||||
test("schema-inferred types are exported for Convex action wiring", () => {
|
||||
const typedFindings: InternalFindings = {
|
||||
findings: [
|
||||
@@ -393,8 +442,11 @@ test("schema-inferred types are exported for Convex action wiring", () => {
|
||||
|
||||
const typedQuality: QualityReview = {
|
||||
isValid: true,
|
||||
severity: "ok",
|
||||
issues: [],
|
||||
suggestions: [],
|
||||
rewriteRequired: false,
|
||||
revisedCopy: null,
|
||||
notes: null,
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user