From 017a9c22f2a7f8ba1ead9a050473bf02a81230c1 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 4 Oct 2026 13:32:51 +0000 Subject: [PATCH] Webhook: System-Commits legen kein Auto-Ticket an Beim Anlegen mit Kunde (ohne Ticket) loeste der Commit der .webklar-preview.json durch webklar-system ein zusaetzliches Ticket "Website " aus. Co-Authored-By: Claude Opus 5.5 --- server/routes/webhook/gitea.js | 7 +++++-- test/giteaRoutes.test.js | 8 ++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/server/routes/webhook/gitea.js b/server/routes/webhook/gitea.js index dee6506..5e23f4a 100644 --- a/server/routes/webhook/gitea.js +++ b/server/routes/webhook/gitea.js @@ -10,7 +10,7 @@ import { buildPreviewUrl, } from '../../services/previewDeploy.js' import { ensureRepoPreviewConfig } from '../../services/giteaAdmin.js' -import { createGitPushWorksheet } from '../../services/gitWorksheet.js' +import { createGitPushWorksheet, isSystemPusher } from '../../services/gitWorksheet.js' import { sendPushTimeMail } from '../../services/pushTimeMail.js' import { ensureProjectTicket } from '../../services/ticketAdmin.js' import { invalidateProjectCache } from '../../services/projectInsights.js' @@ -177,7 +177,10 @@ router.post('/gitea', async (req, res) => { // (derselben wie assignProject/reconcileProject), damit ein gleichzeitiges Zuweisen nicht // dieselbe ticketId-Aufloesung doppelt anstoesst. let gitWorksheet = null - if (commitSha && commitSha !== '0000000000000000000000000000000000000000') { + // System-Commits (z. B. .webklar-preview.json beim Anlegen aus dem Ticketsystem) bekommen weder + // Arbeitsblatt noch Auto-Ticket - sonst entstand beim Anlegen mit Kunde ein zusaetzliches + // Ticket "Website " neben dem, das im Zuordnen-Assistenten gewaehlt wird. + if (commitSha && commitSha !== '0000000000000000000000000000000000000000' && !isSystemPusher(pusher)) { gitWorksheet = await withLocks( ['project:' + project.$id], async () => { diff --git a/test/giteaRoutes.test.js b/test/giteaRoutes.test.js index fd491ba..3bd6600 100644 --- a/test/giteaRoutes.test.js +++ b/test/giteaRoutes.test.js @@ -223,6 +223,14 @@ test('Webhook des System-Kontos', async () => { await webhook(pushPayload({ full_name: 'WEBklar/D-ner-Nation', sha: 'cafe0001', pusher: 'webklar-system' })) assert.equal(aw.all('worksheets').length, before) }) +test('System-Commit an Projekt mit Kunde ohne Ticket legt kein Auto-Ticket an', async () => { + gitea.addRepo({ full_name: 'WEBklar/neu-mit-kunde' }) + aw.insert('websiteProjects', { $id: 'p_sys', repoFullName: 'WEBklar/neu-mit-kunde', projectName: 'Neu', customerId: 'c1', ticketId: '' }) + const before = aw.all('workorders').length + await webhook(pushPayload({ full_name: 'WEBklar/neu-mit-kunde', sha: 'cafe0002', pusher: 'webklar-system' })) + assert.equal(aw.all('workorders').length, before) + assert.equal(aw.get('websiteProjects', 'p_sys').ticketId, '') +}) test('Webhook wartet auf laufenden Umzug', async () => { gitea.setTransferDelay(300) const move = post('/api/admin/website-projects/p5/assign', { customerId: 'c1', ticketId: 't1' }, 'jwt-admin') // p5: JUSN/langsam