Make nightly analytics operational for active curator users
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
import { generateText, tool } from "ai";
|
||||
import { z } from "zod";
|
||||
import { desc, eq } from "drizzle-orm";
|
||||
import { desc, eq, gte } from "drizzle-orm";
|
||||
import { createClient, type Client } from "rivetkit/client";
|
||||
import { config } from "../../config.js";
|
||||
import type { Registry } from "../../actors/registry.js";
|
||||
import { getConversationModel } from "../../actors/conversation/agent.js";
|
||||
import { db } from "../../db/client.js";
|
||||
import { growConversationMessages, growEvents, users } from "../../db/schema.js";
|
||||
import { growConversationMessages, growEvents } from "../../db/schema.js";
|
||||
import { curatorActor } from "../curator/curator-actor.js";
|
||||
import { curatorImprovementSignalSchema } from "../curator/curator-types.js";
|
||||
|
||||
@@ -109,9 +109,14 @@ export const v1AnalyticsActor = {
|
||||
async runNightly(input: { date: string; userId?: string }) {
|
||||
const userRows = input.userId
|
||||
? [{ id: input.userId }]
|
||||
: await db.select({ id: users.id }).from(users).limit(500);
|
||||
: await db
|
||||
.selectDistinct({ id: growEvents.userId })
|
||||
.from(growEvents)
|
||||
.where(gte(growEvents.occurredAt, new Date(Date.now() - 7 * 86400000)))
|
||||
.limit(200);
|
||||
let improvementSignalsCreated = 0;
|
||||
for (const user of userRows) {
|
||||
if (!user.id) continue;
|
||||
const signals = await this.generateImprovementSignals({ userId: user.id, date: input.date });
|
||||
improvementSignalsCreated += signals.length;
|
||||
await this.applyImprovementSignals({ userId: user.id, date: input.date, signals });
|
||||
|
||||
Reference in New Issue
Block a user