refactor(admin): ApiCore-Synchronisierung nur noch einmal auf dem Dashboard
Docker Image bauen und veroeffentlichen / build-and-push (push) Successful in 2m25s

Derselbe "Alles synchronisieren"-Knopf stand auf /admin/produkte und
/admin/ernten und sah dadurch wie zwei verschiedene Abgleiche aus. Er
sitzt jetzt einmal auf dem Dashboard, das Ergebnis des Laufs erscheint
dort oben. Die Action springt standardmaessig nach /admin zurueck; die
alten Ziele bleiben in der Whitelist erlaubt.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
Nick SzaunigandClaude Opus 5.5 committed 2026-09-25 21:34:18 +02:00
1 parent 11eccec01b
commit ae2726b0ee
5 files changed
+21 -18

No files matched your search

+2 -6
View File
@@ -14,13 +14,11 @@ import {
AdminRowActions,
} from "@/components/admin-list";
import { createHarvestAction, toggleHarvestPublishedAction, deleteHarvestAction } from "../actions";
import { ApiCoreSyncPanel, ApiCoreSyncResult } from "@/components/apicore-sync-panel";
import { getLocale } from "@/i18n/locale";
import { getDictionary } from "@/i18n/get-dictionary";
export default async function AdminHarvestsPage(props: PageProps<"/admin/ernten">) {
export default async function AdminHarvestsPage() {
const t = getDictionary(await getLocale());
const searchParams = await props.searchParams;
const harvests = await prisma.harvest.findMany({
orderBy: [{ year: "desc" }, { harvestDate: "desc" }],
include: { _count: { select: { batches: true, products: true } } },
@@ -31,7 +29,6 @@ export default async function AdminHarvestsPage(props: PageProps<"/admin/ernten"
<BackLink href="/admin" label={t.adminHarvestsPage.backToDashboard} />
<AdminPageHeader title={t.adminHarvestsPage.title} />
<ApiCoreSyncResult searchParams={searchParams} />
<div className="overflow-x-auto bg-background border border-ink/10">
<table className="w-full text-sm">
@@ -94,7 +91,7 @@ export default async function AdminHarvestsPage(props: PageProps<"/admin/ernten"
{harvests.length === 0 ? <AdminEmptyState message={t.adminHarvestsPage.noHarvestsYet} /> : null}
</div>
<div className="mt-10 grid md:grid-cols-2 gap-6">
<div className="mt-10 max-w-xl">
<div className="bg-background border border-ink/10 p-6">
<h2 className="font-serif text-xl text-forest mb-4">{t.adminHarvestsPage.newHarvestHeading}</h2>
<form action={createHarvestAction} className="space-y-4">
@@ -112,7 +109,6 @@ export default async function AdminHarvestsPage(props: PageProps<"/admin/ernten"
</form>
</div>
<ApiCoreSyncPanel returnTo="/admin/ernten" />
</div>
</div>
);