feat: Enhance task filtering, smart scheduling, audit logs and translations
continuous-integration/drone/push Build is passing
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
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();
|
||||
Reference in New Issue
Block a user