fix curator sprint to use canonical onboarding

This commit is contained in:
-Puter
2026-07-13 04:28:27 +05:30
parent 982942fa6e
commit b93cc81d93
2 changed files with 16 additions and 8 deletions

View File

@@ -189,6 +189,10 @@ async function runFetchUserProfileAfterBodyConsumed(): Promise<{
assert.equal(auth, "Bearer test-a2a-key", "A2A key must be used downstream");
assert.equal(forwardedScope, null, "user scope must be encoded in URL, not forwarded as trust header");
assert.equal((profile.preferences as Record<string, any>).onboarding.revision, 10);
const onboarding = (profile.preferences as Record<string, any>).onboarding;
assert.equal(onboarding.status, "completed");
assert.equal(onboarding.profile.icp, "experienced");
assert.equal(onboarding.access_choice, "trial");
} finally {
Object.assign(mutableConfig, savedConfig);
globalThis.fetch = originalFetch;

View File

@@ -1,11 +1,9 @@
import { Hono } from "hono";
import { z } from "zod";
import { eq } from "drizzle-orm";
import { createClient, type Client } from "rivetkit/client";
import { requireUser, type AuthContext } from "../../auth/clerk.js";
import { config } from "../../config.js";
import { db } from "../../db/client.js";
import { onboarding } from "../../db/schema.js";
import { fetchOnboardingReadProfile } from "../../services/user-profile.js";
import type { Registry } from "../../actors/registry.js";
import { buildCuratorSprint, buildCuratorSprintReport, buildCuratorTasks } from "./curator-store.js";
@@ -38,13 +36,19 @@ export function v1CuratorRoutes() {
app.get("/sprint", async (c) => {
const userId = c.get("userId");
const savedOnboarding = await db.query.onboarding.findFirst({
where: eq(onboarding.userId, userId),
});
if (savedOnboarding?.data?.status !== "completed") {
const profile = await fetchOnboardingReadProfile(c.req.raw, userId);
const preferences = profile.preferences && typeof profile.preferences === "object" && !Array.isArray(profile.preferences)
? profile.preferences as Record<string, unknown>
: {};
const onboarding = preferences.onboarding && typeof preferences.onboarding === "object" && !Array.isArray(preferences.onboarding)
? preferences.onboarding as Record<string, unknown>
: {};
if (onboarding.status !== "completed") {
return c.json({ error: "onboarding_incomplete" }, 409);
}
return c.json(await buildCuratorSprint(userId, c.req.query("date")));
return c.json(await buildCuratorSprint(userId, c.req.query("date"), {
onboardingContext: { preferences, onboarding },
}));
});
app.get("/sprint/report", async (c) => {