From 1c1826d25d001399181f84e1947cc86ab4ce78b9 Mon Sep 17 00:00:00 2001 From: Kenso Grimm Date: Sat, 11 Jul 2026 18:14:41 +0000 Subject: [PATCH] fix: Repo-only-Projekte bekommen keine Subdomain vom Webhook; WOID numerisch - Webhook: Subdomain-Fallback auf Repo-Name nur noch bei aktivierter Preview, Projekte ohne Website behalten leere Subdomain/previewUrl - generateNextWoid: numerisches Maximum statt String-Sortierung (gemischt 5-/6-stellige WOIDs im Bestand) Co-Authored-By: Claude Fable 5 --- server/routes/webhook/gitea.js | 4 +++- server/services/ticketAdmin.js | 14 ++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/server/routes/webhook/gitea.js b/server/routes/webhook/gitea.js index 63dc5b1..69edde6 100644 --- a/server/routes/webhook/gitea.js +++ b/server/routes/webhook/gitea.js @@ -58,7 +58,9 @@ router.post('/gitea', async (req, res) => { const previewConfigFile = await fetchPreviewConfig(repoFullName, branch) const previewConfig = previewConfigFile || defaultPreviewConfig(repoFullName) const hasPreview = Boolean(previewConfigFile?.enabled !== false && previewConfigFile) - const subdomain = previewConfig.subdomain || repoFullName.split('/').pop() + // Nur Projekte mit aktivierter Preview bekommen eine Subdomain zugewiesen - + // Repo-only-Projekte (enabled:false, keine Subdomain) bleiben ohne Website. + const subdomain = hasPreview ? previewConfig.subdomain || repoFullName.split('/').pop() : '' const previewUrl = subdomain ? buildPreviewUrl(subdomain) : '' let deployResult = { deployed: false, skipped: true } diff --git a/server/services/ticketAdmin.js b/server/services/ticketAdmin.js index 65b749d..936cafa 100644 --- a/server/services/ticketAdmin.js +++ b/server/services/ticketAdmin.js @@ -11,12 +11,14 @@ import { const WOID_BASE = 9999 async function generateNextWoid() { - const docs = await listDocuments(config.collections.workorders, [ - Query.orderDesc('woid'), - Query.limit(1), - ]) - const highest = docs[0]?.woid ? parseInt(docs[0].woid, 10) : WOID_BASE - return String(Math.max(WOID_BASE, highest) + 1) + // Numerisches Maximum ueber alle Tickets - orderDesc('woid') sortiert Strings + // und liefert bei gemischt 5-/6-stelligen WOIDs falsche Ergebnisse. + const docs = await listDocuments(config.collections.workorders, [Query.limit(1000)]) + const highest = docs.reduce((max, doc) => { + const n = parseInt(doc.woid, 10) + return Number.isNaN(n) ? max : Math.max(max, n) + }, WOID_BASE) + return String(highest + 1) } /**