fix: build and test stability for design overhaul
Some checks failed
Dev Deployment (Zero Downtime) / deploy-dev (push) Failing after 9m19s

Fixed missing types, import errors, and updated test suites to match the new editorial design. Verified Docker container build.
This commit is contained in:
2026-02-16 02:54:02 +01:00
parent 6213a4875a
commit 6f62b37c3a
17 changed files with 296 additions and 577 deletions

View File

@@ -3,7 +3,8 @@ import ProjectDetailClient from "@/app/_ui/ProjectDetailClient";
import { notFound } from "next/navigation";
import type { Metadata } from "next";
import { getLanguageAlternates, toAbsoluteUrl } from "@/lib/seo";
import { getProjectBySlug } from "@/lib/directus";
import { getProjectBySlug, Project } from "@/lib/directus";
import { ProjectDetailData } from "@/app/_ui/ProjectDetailClient";
export const revalidate = 300;
@@ -53,7 +54,7 @@ export default async function ProjectPage({
},
});
let projectData: any = null;
let projectData: ProjectDetailData | null = null;
if (dbProject) {
const trPreferred = dbProject.translations?.find((t) => t.locale === locale && (t?.title || t?.description));
@@ -75,7 +76,7 @@ export default async function ProjectPage({
title: tr?.title ?? dbProject.title,
description: tr?.description ?? dbProject.description,
content: localizedContent,
};
} as ProjectDetailData;
} else {
// Try Directus fallback
const directusProject = await getProjectBySlug(slug, locale);
@@ -83,7 +84,7 @@ export default async function ProjectPage({
projectData = {
...directusProject,
id: parseInt(directusProject.id) || 0,
};
} as ProjectDetailData;
}
}
@@ -102,7 +103,7 @@ export default async function ProjectPage({
},
"dateCreated": projectData.date || projectData.created_at,
"url": toAbsoluteUrl(`/${locale}/projects/${slug}`),
"image": projectData.imageUrl || projectData.image_url ? toAbsoluteUrl(projectData.imageUrl || projectData.image_url) : undefined,
"image": (projectData.imageUrl || projectData.image_url) ? toAbsoluteUrl((projectData.imageUrl || projectData.image_url)!) : undefined,
};
return (

View File

@@ -1,5 +1,5 @@
import { prisma } from "@/lib/prisma";
import ProjectsPageClient from "@/app/_ui/ProjectsPageClient";
import ProjectsPageClient, { ProjectListItem } from "@/app/_ui/ProjectsPageClient";
import type { Metadata } from "next";
import { getLanguageAlternates, toAbsoluteUrl } from "@/lib/seo";
import { getProjects as getDirectusProjects } from "@/lib/directus";
@@ -40,14 +40,14 @@ export default async function ProjectsPage({
});
// Fetch from Directus
let directusProjects: any[] = [];
let directusProjects: ProjectListItem[] = [];
try {
const fetched = await getDirectusProjects(locale, { published: true });
if (fetched) {
directusProjects = fetched.map(p => ({
...p,
id: parseInt(p.id) || 0,
}));
})) as ProjectListItem[];
}
} catch (err) {
console.error("Directus projects fetch failed:", err);
@@ -68,7 +68,7 @@ export default async function ProjectsPage({
});
// Merge projects, prioritizing DB ones if slugs match
const allProjects = [...localizedDb];
const allProjects: any[] = [...localizedDb];
const dbSlugs = new Set(localizedDb.map(p => p.slug));
for (const dp of directusProjects) {