chore(format): Prettier über das gesamte Repo
ci / quality (push) Failing after 45s
ci / build (push) Has been skipped
deploy / deploy (push) Successful in 53s

Behebt die rote CI (format:check schlug an 36 Alt-Bestand-Dateien fehl:
migrations/meta-Snapshots, seed.ts, schemas/lead.ts, README u. a.) und erzwingt
nebenbei einen frischen web-Build beim Auto-Deploy (apps/web-Dateien geaendert
-> COPY-Layer invalidiert -> Vite baut neu).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Raffael SheikhandClaude Opus 4.8 committed 2026-06-07 17:50:07 +02:00
1 parent b340b45110
commit a1cf6f3883
36 files changed
+1559 -3510

No files matched your search

+182 -26
View File
@@ -210,12 +210,48 @@ export async function seed(connectionString: string): Promise<void> {
if (proj1 && proj2 && proj3) {
await db.insert(milestone).values([
{ projectId: proj1.id, title: 'Auftragsformular Phase 1', due: isoDateOffset(-5), status: 'done', order: 0 },
{ projectId: proj1.id, title: 'Stripe Webhook-Tests', due: isoDateOffset(10), status: 'open', order: 1 },
{ projectId: proj1.id, title: 'Pilot mit Kunde', due: isoDateOffset(25), status: 'open', order: 2 },
{ projectId: proj2.id, title: 'Tagesrhythmus produktiv', due: isoDateOffset(5), status: 'open', order: 0 },
{ projectId: proj2.id, title: 'Pflicht-Minimum vollständig', due: isoDateOffset(20), status: 'open', order: 1 },
{ projectId: proj3.id, title: 'Token-Refresh Bugfix', due: isoDateOffset(-3), status: 'overdue', order: 0 },
{
projectId: proj1.id,
title: 'Auftragsformular Phase 1',
due: isoDateOffset(-5),
status: 'done',
order: 0,
},
{
projectId: proj1.id,
title: 'Stripe Webhook-Tests',
due: isoDateOffset(10),
status: 'open',
order: 1,
},
{
projectId: proj1.id,
title: 'Pilot mit Kunde',
due: isoDateOffset(25),
status: 'open',
order: 2,
},
{
projectId: proj2.id,
title: 'Tagesrhythmus produktiv',
due: isoDateOffset(5),
status: 'open',
order: 0,
},
{
projectId: proj2.id,
title: 'Pflicht-Minimum vollständig',
due: isoDateOffset(20),
status: 'open',
order: 1,
},
{
projectId: proj3.id,
title: 'Token-Refresh Bugfix',
due: isoDateOffset(-3),
status: 'overdue',
order: 0,
},
]);
}
}
@@ -225,10 +261,38 @@ export async function seed(connectionString: string): Promise<void> {
if (existingDeals.length === 0) {
const sales = areaBySlug.vertrieb!;
await db.insert(deal).values([
{ areaId: sales.id, name: 'Schmidt & Söhne Wartungsvertrag', ownerUserId: anna.id, valueEur: 1_200_000, probability: 70, stage: 'angebot' },
{ areaId: sales.id, name: 'Bauwerk AG Plattform', ownerUserId: anna.id, valueEur: 850_000, probability: 50, stage: 'demo' },
{ areaId: sales.id, name: 'Müller GmbH Onboarding', ownerUserId: anna.id, valueEur: 250_000, probability: 30, stage: 'erstgespraech' },
{ areaId: sales.id, name: 'Hartmann KG Pilot', ownerUserId: anna.id, valueEur: 180_000, probability: 80, stage: 'angebot' },
{
areaId: sales.id,
name: 'Schmidt & Söhne Wartungsvertrag',
ownerUserId: anna.id,
valueEur: 1_200_000,
probability: 70,
stage: 'angebot',
},
{
areaId: sales.id,
name: 'Bauwerk AG Plattform',
ownerUserId: anna.id,
valueEur: 850_000,
probability: 50,
stage: 'demo',
},
{
areaId: sales.id,
name: 'Müller GmbH Onboarding',
ownerUserId: anna.id,
valueEur: 250_000,
probability: 30,
stage: 'erstgespraech',
},
{
areaId: sales.id,
name: 'Hartmann KG Pilot',
ownerUserId: anna.id,
valueEur: 180_000,
probability: 80,
stage: 'angebot',
},
{
areaId: sales.id,
name: 'Becker Logistik Phase 1',
@@ -246,9 +310,27 @@ export async function seed(connectionString: string): Promise<void> {
const existingGtm = await db.select().from(gtmStep);
if (existingGtm.length === 0) {
await db.insert(gtmStep).values([
{ product: 'ToolCTRL Suite', title: 'Landingpage live', ownerUserId: marco.id, status: 'done', order: 0 },
{ product: 'ToolCTRL Suite', title: 'Pricing-Sheet final', ownerUserId: anna.id, status: 'in_progress', order: 1 },
{ product: 'ToolCTRL Suite', title: 'Demo-Video produzieren', ownerUserId: marco.id, status: 'open', order: 2 },
{
product: 'ToolCTRL Suite',
title: 'Landingpage live',
ownerUserId: marco.id,
status: 'done',
order: 0,
},
{
product: 'ToolCTRL Suite',
title: 'Pricing-Sheet final',
ownerUserId: anna.id,
status: 'in_progress',
order: 1,
},
{
product: 'ToolCTRL Suite',
title: 'Demo-Video produzieren',
ownerUserId: marco.id,
status: 'open',
order: 2,
},
]);
}
@@ -259,9 +341,27 @@ export async function seed(connectionString: string): Promise<void> {
const [c1, c2] = await db
.insert(campaign)
.values([
{ areaId: mkt.id, name: 'LinkedIn Q2 Outbound', status: 'active', reach: 18500, ownerUserId: marco.id },
{ areaId: mkt.id, name: 'Webinar-Serie „Workflows"', status: 'active', reach: 4200, ownerUserId: marco.id },
{ areaId: mkt.id, name: 'Newsletter Spring', status: 'done', reach: 2200, ownerUserId: marco.id },
{
areaId: mkt.id,
name: 'LinkedIn Q2 Outbound',
status: 'active',
reach: 18500,
ownerUserId: marco.id,
},
{
areaId: mkt.id,
name: 'Webinar-Serie „Workflows"',
status: 'active',
reach: 4200,
ownerUserId: marco.id,
},
{
areaId: mkt.id,
name: 'Newsletter Spring',
status: 'done',
reach: 2200,
ownerUserId: marco.id,
},
])
.returning();
if (c1 && c2) {
@@ -296,9 +396,33 @@ export async function seed(connectionString: string): Promise<void> {
.returning();
if (d1) {
await db.insert(todo).values([
{ dayEntryId: d1.id, userId: dejan.id, date: yesterday, title: 'Stripe-Webhook implementieren', order: 0, status: 'done', bezugKind: 'project' },
{ dayEntryId: d1.id, userId: dejan.id, date: yesterday, title: 'Pilot-Demo vorbereiten', order: 1, status: 'done', bezugKind: 'project' },
{ dayEntryId: d1.id, userId: dejan.id, date: yesterday, title: 'Marketing-Briefing review', order: 2, status: 'dropped', dropReason: 'Marco war krank' },
{
dayEntryId: d1.id,
userId: dejan.id,
date: yesterday,
title: 'Stripe-Webhook implementieren',
order: 0,
status: 'done',
bezugKind: 'project',
},
{
dayEntryId: d1.id,
userId: dejan.id,
date: yesterday,
title: 'Pilot-Demo vorbereiten',
order: 1,
status: 'done',
bezugKind: 'project',
},
{
dayEntryId: d1.id,
userId: dejan.id,
date: yesterday,
title: 'Marketing-Briefing review',
order: 2,
status: 'dropped',
dropReason: 'Marco war krank',
},
]);
}
@@ -310,7 +434,8 @@ export async function seed(connectionString: string): Promise<void> {
status: 'full',
checkedInAt: new Date(`${yesterday}T09:00:00+02:00`),
reflectedAt: new Date(`${yesterday}T18:00:00+02:00`),
reflectionText: 'Token-Refresh Bug reproduziert, Fix-Hypothese steht. Komme morgen weiter.',
reflectionText:
'Token-Refresh Bug reproduziert, Fix-Hypothese steht. Komme morgen weiter.',
ampel: 'red',
trend: 'schlechter',
publishedAt: new Date(),
@@ -318,8 +443,23 @@ export async function seed(connectionString: string): Promise<void> {
.returning();
if (d2) {
await db.insert(todo).values([
{ dayEntryId: d2.id, userId: lukas.id, date: yesterday, title: 'Token-Refresh debuggen', order: 0, status: 'open', bezugKind: 'project' },
{ dayEntryId: d2.id, userId: lukas.id, date: yesterday, title: 'PR Review für Anna', order: 1, status: 'done' },
{
dayEntryId: d2.id,
userId: lukas.id,
date: yesterday,
title: 'Token-Refresh debuggen',
order: 0,
status: 'open',
bezugKind: 'project',
},
{
dayEntryId: d2.id,
userId: lukas.id,
date: yesterday,
title: 'PR Review für Anna',
order: 1,
status: 'done',
},
]);
}
@@ -339,8 +479,24 @@ export async function seed(connectionString: string): Promise<void> {
.returning();
if (d3) {
await db.insert(todo).values([
{ dayEntryId: d3.id, userId: anna.id, date: yesterday, title: 'Hartmann-Angebot rausschicken', order: 0, status: 'done', bezugKind: 'deal' },
{ dayEntryId: d3.id, userId: anna.id, date: yesterday, title: 'Demo-Termin Schmidt fixieren', order: 1, status: 'done', bezugKind: 'deal' },
{
dayEntryId: d3.id,
userId: anna.id,
date: yesterday,
title: 'Hartmann-Angebot rausschicken',
order: 0,
status: 'done',
bezugKind: 'deal',
},
{
dayEntryId: d3.id,
userId: anna.id,
date: yesterday,
title: 'Demo-Termin Schmidt fixieren',
order: 1,
status: 'done',
bezugKind: 'deal',
},
]);
}
@@ -438,7 +594,8 @@ export async function seed(connectionString: string): Promise<void> {
datum: pickWerktag(2),
kanal: 'linkedin',
bearbeiterUserId: anna.id,
inhalt: 'Erste Nachricht über das MitApp-Profil geschickt, Bezug auf KI-Optimierung für PM.',
inhalt:
'Erste Nachricht über das MitApp-Profil geschickt, Bezug auf KI-Optimierung für PM.',
outcome: 'positiv geantwortet, Interesse an kurzem Austausch',
followUpBis: isoDateOffset(4),
},
@@ -582,7 +739,6 @@ export async function seed(connectionString: string): Promise<void> {
});
}
}
} finally {
await pool.end();
}