Seed historical completed meetings through Feb 20 for all contacts
This commit is contained in:
@@ -19,7 +19,7 @@ function loadEnvFromDotEnv() {
|
|||||||
}
|
}
|
||||||
if (!key) continue;
|
if (!key) continue;
|
||||||
if (key === "DATABASE_URL") {
|
if (key === "DATABASE_URL") {
|
||||||
process.env[key] = val;
|
if (!process.env[key]) process.env[key] = val;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (!process.env[key]) process.env[key] = val;
|
if (!process.env[key]) process.env[key] = val;
|
||||||
@@ -33,6 +33,7 @@ const prisma = new PrismaClient();
|
|||||||
const LOGIN_PHONE = "+15550000001";
|
const LOGIN_PHONE = "+15550000001";
|
||||||
const LOGIN_PASSWORD = "ConnectFlow#2026";
|
const LOGIN_PASSWORD = "ConnectFlow#2026";
|
||||||
const LOGIN_NAME = "Connect Owner";
|
const LOGIN_NAME = "Connect Owner";
|
||||||
|
const REF_DATE_ISO = "2026-02-20T12:00:00.000Z";
|
||||||
|
|
||||||
const SCRYPT_KEY_LENGTH = 64;
|
const SCRYPT_KEY_LENGTH = 64;
|
||||||
|
|
||||||
@@ -43,7 +44,7 @@ function hashPassword(password) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function atOffset(days, hour, minute) {
|
function atOffset(days, hour, minute) {
|
||||||
const d = new Date();
|
const d = new Date(REF_DATE_ISO);
|
||||||
d.setDate(d.getDate() + days);
|
d.setDate(d.getDate() + days);
|
||||||
d.setHours(hour, minute, 0, 0);
|
d.setHours(hour, minute, 0, 0);
|
||||||
return d;
|
return d;
|
||||||
@@ -221,8 +222,9 @@ async function main() {
|
|||||||
|
|
||||||
await prisma.calendarEvent.createMany({
|
await prisma.calendarEvent.createMany({
|
||||||
data: contacts.flatMap((c, idx) => {
|
data: contacts.flatMap((c, idx) => {
|
||||||
const firstStart = atOffset((idx % 21) - 3, 10 + (idx % 6), (idx * 5) % 60);
|
// Historical week ending on 20 Feb 2026: all seeded meetings are completed.
|
||||||
const secondStart = atOffset((idx % 28) + 1, 14 + (idx % 4), (idx * 3) % 60);
|
const firstStart = atOffset(-6 + (idx % 5), 10 + (idx % 6), (idx * 5) % 60);
|
||||||
|
const secondStart = atOffset(-5 + (idx % 5), 14 + (idx % 4), (idx * 3) % 60);
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
teamId: team.id,
|
teamId: team.id,
|
||||||
@@ -231,7 +233,7 @@ async function main() {
|
|||||||
startsAt: firstStart,
|
startsAt: firstStart,
|
||||||
endsAt: plusMinutes(firstStart, 30),
|
endsAt: plusMinutes(firstStart, 30),
|
||||||
note: "Confirm integration scope, current stack, and pilot success metrics.",
|
note: "Confirm integration scope, current stack, and pilot success metrics.",
|
||||||
status: "planned",
|
status: "done",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
teamId: team.id,
|
teamId: team.id,
|
||||||
@@ -240,7 +242,7 @@ async function main() {
|
|||||||
startsAt: secondStart,
|
startsAt: secondStart,
|
||||||
endsAt: plusMinutes(secondStart, 45),
|
endsAt: plusMinutes(secondStart, 45),
|
||||||
note: "Review API mapping, ETL boundaries, and AI assistant guardrails.",
|
note: "Review API mapping, ETL boundaries, and AI assistant guardrails.",
|
||||||
status: idx % 6 === 0 ? "done" : "planned",
|
status: "done",
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
}),
|
}),
|
||||||
|
|||||||
Reference in New Issue
Block a user