Avoid duplicate Course scoring events
This commit is contained in:
@@ -30,9 +30,8 @@ try {
|
||||
assert.equal(recorded.length, 1);
|
||||
assert.equal((recorded[0].mission as Record<string, unknown>).missionId, "mission-1");
|
||||
const progress = buildCourseGatewayEvent({ userId: "user_test", action: "record_swipe", body: { params: { video_id: "video-1", anchor_id: "anchor-1", curatorTaskId: "task-3", missionId: "mission-3" } }, result: { status: "completed", messages: [{ type: "agent_data", data: { watch_pct: 0.8 } }] } });
|
||||
assert.equal(progress.type, "course.progress_recorded");
|
||||
const projected = extractQscoreSignals({ type: progress.type, payload: progress.payload, id: "evt-course", userId: "user_test", source: progress.source, category: "service", mission: progress.mission ?? null, subject: progress.subject ?? null, correlation: progress.correlation ?? null } as never);
|
||||
assert.ok(projected.some((signal) => signal.signalId === "courses.completion_rate"), "record_swipe must project course progress");
|
||||
assert.equal(progress.type, "course.task_finished");
|
||||
assert.equal(extractQscoreSignals({ type: progress.type, payload: progress.payload, id: "evt-course", userId: "user_test", source: progress.source, category: "service", mission: progress.mission ?? null, subject: progress.subject ?? null, correlation: progress.correlation ?? null } as never).length, 0);
|
||||
assert.equal(progress.payload.courseId, "anchor-1");
|
||||
assert.equal(progress.payload.lessonId, "video-1");
|
||||
const nonProgress = buildCourseGatewayEvent({ userId: "user_test", action: "get_feed", body: { params: {} }, result: { status: "completed", messages: [] } });
|
||||
|
||||
@@ -24,7 +24,7 @@ export function buildCourseGatewayEvent(input: { userId: string; action: string;
|
||||
return {
|
||||
userId: input.userId,
|
||||
source: "course-a2a-gateway",
|
||||
type: input.result.status === "error" ? "course.request.failed" : progressAction ? "course.progress_recorded" : "course.task_finished",
|
||||
type: input.result.status === "error" ? "course.request.failed" : "course.task_finished",
|
||||
payload,
|
||||
correlation,
|
||||
mission: missionId || missionInstanceId || stageId ? { missionId, instanceId: missionInstanceId, stageId, source: pick(params.source) ?? "curator-v1" } : undefined,
|
||||
|
||||
Reference in New Issue
Block a user