feat(platform): checkpoint current implementation state

This commit is contained in:
2026-04-01 07:42:03 +02:00
parent 3e53471f05
commit 8c5be51251
125 changed files with 10269 additions and 17808 deletions
@@ -1,6 +1,7 @@
import { NextResponse } from "next/server";
import { prisma } from "@capakraken/db";
import { checkChargeabilityAlerts } from "@capakraken/api";
import { logger } from "@capakraken/api/lib/logger";
export const dynamic = "force-dynamic";
export const runtime = "nodejs";
@@ -35,7 +36,7 @@ export async function GET(request: Request) {
checkedAt: new Date().toISOString(),
});
} catch (error) {
console.error("[cron/chargeability-alerts] Error:", error);
logger.error({ error, route: "/api/cron/chargeability-alerts" }, "Chargeability alert cron failed");
return NextResponse.json(
{ ok: false, error: "Internal error" },
{ status: 500 },
@@ -1,6 +1,7 @@
import { NextResponse } from "next/server";
import { prisma } from "@capakraken/db";
import { checkPendingEstimateReminders } from "@capakraken/api";
import { logger } from "@capakraken/api/lib/logger";
export const dynamic = "force-dynamic";
export const runtime = "nodejs";
@@ -37,7 +38,7 @@ export async function GET(request: Request) {
checkedAt: new Date().toISOString(),
});
} catch (error) {
console.error("[cron/estimate-reminders] Error:", error);
logger.error({ error, route: "/api/cron/estimate-reminders" }, "Estimate reminder cron failed");
return NextResponse.json(
{ ok: false, error: "Internal error" },
{ status: 500 },
@@ -1,6 +1,7 @@
import { NextResponse } from "next/server";
import { prisma } from "@capakraken/db";
import { createNotificationsForUsers } from "@capakraken/api";
import { logger } from "@capakraken/api/lib/logger";
import { createConnection } from "net";
export const dynamic = "force-dynamic";
@@ -123,7 +124,7 @@ export async function GET(request: Request) {
{ status: allHealthy ? 200 : 503 },
);
} catch (error) {
console.error("[cron/health-check] Error:", error);
logger.error({ error, route: "/api/cron/health-check" }, "Health check cron failed");
return NextResponse.json(
{ ok: false, error: "Internal error" },
{ status: 500 },
@@ -1,6 +1,7 @@
import { NextResponse } from "next/server";
import { prisma } from "@capakraken/db";
import { autoImportPublicHolidays } from "@capakraken/api";
import { logger } from "@capakraken/api/lib/logger";
export const dynamic = "force-dynamic";
export const runtime = "nodejs";
@@ -49,7 +50,7 @@ export async function GET(request: Request) {
skippedExisting: result.skippedExisting,
});
} catch (error) {
console.error("[cron/public-holidays] Error:", error);
logger.error({ error, route: "/api/cron/public-holidays", year }, "Public holiday import cron failed");
return NextResponse.json(
{ ok: false, error: "Internal error" },
{ status: 500 },
@@ -1,6 +1,7 @@
import { NextResponse } from "next/server";
import { prisma } from "@capakraken/db";
import { createNotificationsForUsers } from "@capakraken/api";
import { logger } from "@capakraken/api/lib/logger";
import { readFileSync } from "fs";
import { join } from "path";
@@ -87,7 +88,7 @@ function scanPackageJson(): Finding[] {
}
}
} catch (error) {
console.error("[security-audit] Error scanning package.json:", error);
logger.error({ error, route: "/api/cron/security-audit" }, "Failed to scan package manifests for security audit");
}
return findings;
@@ -149,7 +150,7 @@ export async function GET(request: Request) {
scannedAt: new Date().toISOString(),
});
} catch (error) {
console.error("[cron/security-audit] Error:", error);
logger.error({ error, route: "/api/cron/security-audit" }, "Security audit cron failed");
return NextResponse.json(
{ ok: false, error: "Internal error" },
{ status: 500 },