Files
2025-12-17 14:26:54 +01:00

82 lines
2.8 KiB
TypeScript

import { storage } from '../server/storage';
import { db } from '../server/db';
import { users, tasks, labels } from '../shared/schema';
import { scrypt, randomBytes } from "crypto";
import { promisify } from "util";
const scryptAsync = promisify(scrypt);
async function hashPassword(password: string) {
const salt = randomBytes(16).toString("hex");
const buf = (await scryptAsync(password, salt, 64)) as Buffer;
return `${buf.toString("hex")}.${salt}`;
}
async function seedAiTest() {
console.log("🌱 Seeding AI Benchmark Tasks...");
// 1. Get User
let user = await storage.getUserByUsername('admin');
if (!user) user = await storage.getUserByUsername('paul');
if (!user) {
console.error("❌ No user found.");
process.exit(1);
}
// Reset Password
const newPass = await hashPassword('admin123');
await storage.updateUser(user.id, { password: newPass });
console.log(`🔑 Reset Password for ${user.username} to 'admin123'`);
// Check AI Settings
// Check AI Settings
const provider = await storage.getSystemSettings("ai_provider");
const key = await storage.getSystemSettings("ai_api_key");
const model = await storage.getSystemSettings("ai_model");
console.log(`🤖 AI Configuration: Provider=${provider || 'default(openai)'}, Model=${model || 'default'}, KeySet=${!!key}`);
// 3. Create Labels
let workLabel = await storage.createLabel({ name: 'Work', color: '#3b82f6', creatorId: user.id });
let personalLabel = await storage.createLabel({ name: 'Personal', color: '#10b981', creatorId: user.id });
// Handle potential duplication if labels already exist (storage.createLabel might return existing?)
// server/storage.ts doesn't dedupe by name usually?
// server/ai.ts createLabel tool logic specifically checks for existing.
// Let's assume for this script we just create them or continue.
// 4. Create Tasks
const tasksToCreate = [
{
title: "Review quarterly report",
status: "todo",
priority: "high",
labelId: workLabel.id,
userId: user.id
},
{
title: "Buy milk",
status: "todo",
priority: "medium",
labelId: personalLabel.id,
userId: user.id
},
{
title: "Review movie script",
status: "todo",
priority: "low",
labelId: personalLabel.id,
userId: user.id
}
];
for (const t of tasksToCreate) {
await storage.createTask(t);
console.log(`Created task: "${t.title}" [${t.labelId === workLabel.id ? 'Work' : 'Personal'}]`);
}
console.log("✅ Seeding Complete. ready for AI usage.");
process.exit(0);
}
seedAiTest();