Fix candle layout, relax AI moderation, fix ReadableStream error
- Candles: clean grid layout with consistent sizing, no overlapping - AI moderation: much more lenient prompt - short descriptions, dates, locations are all valid memorial content - Fix ReadableStream error by clearing abort timeout after response Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -51,19 +51,32 @@ async function moderateWithAI(contributionId: number, content: string) {
|
||||
console.log(`[AI-Mod] No bad words, asking AI...`)
|
||||
|
||||
try {
|
||||
const prompt = `Ist dieser Text angemessen für eine Gedenkseite einer verstorbenen Großmutter?
|
||||
const prompt = `Du prüfst Beiträge für eine Gedenkseite einer verstorbenen Großmutter (Maria Malejka).
|
||||
|
||||
"${content}"
|
||||
Text: "${content}"
|
||||
|
||||
ERLAUBT: Liebe, Vermissen, Trauer, Erinnerungen, persönliche Geschichten, Beileidsbekundungen
|
||||
VERBOTEN: Beleidigungen, Spam, Hassrede, Werbung, völlig zusammenhanglose oder sinnlose Texte ohne Bezug
|
||||
WICHTIG: Sei SEHR großzügig! Die meisten Beiträge sind von Familienmitgliedern und Freunden.
|
||||
|
||||
ERLAUBT (immer appropriate=true):
|
||||
- Kurze Beschreibungen wie "Hochzeit", "Geburtstag", "Urlaub in..." - das sind Erinnerungen!
|
||||
- Namen, Orte, Daten - das sind Zeitstrahl-Einträge
|
||||
- Alles was eine Erinnerung, ein Ereignis oder ein Lebensmoment sein könnte
|
||||
- Persönliche Geschichten, Beileidsbekundungen, Liebe, Vermissen, Trauer
|
||||
- Auch sehr kurze Texte oder einzelne Wörter sind OK wenn sie ein Ereignis beschreiben
|
||||
|
||||
NUR VERBOTEN (appropriate=false):
|
||||
- Beleidigungen, Hassrede, Schimpfwörter
|
||||
- Offensichtlicher Spam oder Werbung mit Links
|
||||
- Komplett sinnloser Text (zufällige Buchstaben, Tastatur-Spam)
|
||||
|
||||
Im Zweifel: appropriate=true
|
||||
|
||||
Antworte NUR mit JSON:
|
||||
{"appropriate": true} oder {"appropriate": false, "reason": "kurze Begründung"}
|
||||
JSON:`
|
||||
|
||||
const controller = new AbortController()
|
||||
setTimeout(() => controller.abort(), 15000)
|
||||
const timeout = setTimeout(() => controller.abort(), 15000)
|
||||
|
||||
const ollamaUrl = process.env.OLLAMA_URL || 'http://localhost:11434'
|
||||
const res = await fetch(`${ollamaUrl}/api/generate`, {
|
||||
@@ -83,11 +96,13 @@ JSON:`
|
||||
})
|
||||
|
||||
if (!res.ok) {
|
||||
clearTimeout(timeout)
|
||||
console.warn(`[AI-Mod] Ollama error: ${res.status}`)
|
||||
return
|
||||
}
|
||||
|
||||
const data = await res.json()
|
||||
clearTimeout(timeout)
|
||||
const responseText = (data.response || '').trim()
|
||||
console.log(`[AI-Mod] Response: "${responseText}"`)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user