News: Kunden-API und öffentliche Lese-API

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
knsoandClaude Opus 5.5 committed 2026-09-30 16:49:39 +00:00
1 parent d320730251
commit 319f8937aa
5 files changed
+421 -1

No files matched your search

+13
View File
@@ -16,6 +16,7 @@ import funktionenRoutes from './routes/funktionen.js'
import takeoverCreditRoutes from './routes/takeoverCredits.js'
import { purgeExpiredUploads } from './services/takeoverCredits.js'
import { purgePendingChatUploads } from './services/chatAttachments.js'
import { purgeUnclaimedNewsImages } from './services/newsImages.js'
import { runActivation } from './services/siteFeatures.js'
import giteaWebhookRoutes from './routes/webhook/gitea.js'
import pushTimeRoutes from './routes/pushTime.js'
@@ -25,6 +26,8 @@ import adminCustomersRoutes from './routes/admin/customers.js'
import adminEmployeesRoutes from './routes/admin/employees.js'
import adminInvoiceClientsRoutes from './routes/admin/invoiceClients.js'
import adminPreviewOpenRoutes from './routes/admin/previewOpen.js'
import newsRoutes from './routes/news.js'
import publicNewsRoutes from './routes/publicNews.js'
import adminSwitchLinkRoutes from './routes/admin/switchLink.js'
const __dirname = path.dirname(fileURLToPath(import.meta.url))
@@ -58,6 +61,8 @@ app.use((req, res, next) => {
app.use('/api/auth', authRoutes)
app.use('/api/projects', projectsRoutes)
app.use('/api/features', featuresRoutes)
app.use('/api/public/news', publicNewsRoutes)
app.use('/api/news', newsRoutes)
app.use('/api', customerDataRoutes)
app.use('/api/chat', chatRoutes)
app.use('/api/abo/takeover-credits', takeoverCreditRoutes)
@@ -134,6 +139,14 @@ const server = app.listen(config.port, '0.0.0.0', () => {
setTimeout(purgeChat, 90 * 1000).unref()
setInterval(purgeChat, 60 * 60 * 1000).unref()
// News-Fotos, die nie an einen Beitrag gebunden wurden, nach 24 Stunden loeschen (stuendlich)
const purgeNewsImages = () =>
purgeUnclaimedNewsImages()
.then((n) => n && console.log(`[news] ${n} nicht verwendete Fotos gelöscht`))
.catch((err) => console.warn('[news] Aufräumen fehlgeschlagen:', err.message))
setTimeout(purgeNewsImages, 120 * 1000).unref()
setInterval(purgeNewsImages, 60 * 60 * 1000).unref()
// Funktionen (News-Pinnwand): geschlossene Einrichtungs-Tickets freischalten und den Kunden benachrichtigen (alle 5 Minuten)
const activateFeatures = () =>
runActivation()