Verbessere Fehlerbehandlung beim Import von TTR-Werten: Kürze Fehlermeldungen im CMS und schreibe vollständige Details ins Serverlog.
This commit is contained in:
@@ -43,6 +43,6 @@ const busy = ref(false); const message = ref(''); const error = ref(false)
|
|||||||
const formattedLastImport = computed(() => status.value.lastSuccessfulImportAt ? new Intl.DateTimeFormat('de-DE', { dateStyle: 'medium', timeStyle: 'short' }).format(new Date(status.value.lastSuccessfulImportAt)) : 'noch nie')
|
const formattedLastImport = computed(() => status.value.lastSuccessfulImportAt ? new Intl.DateTimeFormat('de-DE', { dateStyle: 'medium', timeStyle: 'short' }).format(new Date(status.value.lastSuccessfulImportAt)) : 'noch nie')
|
||||||
async function load() { status.value = await $fetch('/api/cms/mytischtennis') }
|
async function load() { status.value = await $fetch('/api/cms/mytischtennis') }
|
||||||
async function save() { busy.value = true; message.value = ''; error.value = false; try { status.value = await $fetch('/api/cms/mytischtennis', { method: 'PUT', body: form }); form.password = ''; message.value = 'Zugang verschlüsselt gespeichert.' } catch { error.value = true; message.value = 'Zugang konnte nicht gespeichert werden.' } finally { busy.value = false } }
|
async function save() { busy.value = true; message.value = ''; error.value = false; try { status.value = await $fetch('/api/cms/mytischtennis', { method: 'PUT', body: form }); form.password = ''; message.value = 'Zugang verschlüsselt gespeichert.' } catch { error.value = true; message.value = 'Zugang konnte nicht gespeichert werden.' } finally { busy.value = false } }
|
||||||
async function runImport() { busy.value = true; message.value = ''; error.value = false; try { const result = await $fetch('/api/cms/mytischtennis/import', { method: 'POST' }); message.value = `${result.rowCount} Werte wurden aktualisiert.`; await load() } catch (caught) { error.value = true; message.value = caught?.data?.statusMessage || 'Abruf fehlgeschlagen.'; await load().catch(() => {}) } finally { busy.value = false } }
|
async function runImport() { busy.value = true; message.value = ''; error.value = false; try { const result = await $fetch('/api/cms/mytischtennis/import', { method: 'POST' }); message.value = `${result.rowCount} Werte wurden aktualisiert.`; await load() } catch (caught) { error.value = true; message.value = caught?.data?.message || 'Abruf fehlgeschlagen. Details stehen im Serverlog.'; await load().catch(() => {}) } finally { busy.value = false } }
|
||||||
onMounted(load)
|
onMounted(load)
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -13,9 +13,12 @@ export default defineEventHandler(async (event) => {
|
|||||||
const result = await importQttrValues({ connection })
|
const result = await importQttrValues({ connection })
|
||||||
return { success: true, rowCount: result.rowCount, importedAt: result.importedAt }
|
return { success: true, rowCount: result.rowCount, importedAt: result.importedAt }
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
const detail = String(error.message || error).slice(0, 500)
|
const fullDetail = String(error.stack || error.message || error)
|
||||||
console.error('[mytischtennis] TTR-Abruf fehlgeschlagen:', detail)
|
const detail = fullDetail.slice(0, 500)
|
||||||
|
// Vollständig nur ins serverseitige PM2-Log schreiben; im CMS wird der Fehler
|
||||||
|
// bewusst gekürzt gespeichert, damit Browser-/Systempfade nicht öffentlich werden.
|
||||||
|
console.error('[mytischtennis] TTR-Abruf fehlgeschlagen:', fullDetail)
|
||||||
await saveMyTischtennisConnection({ ...connection, lastImportError: detail })
|
await saveMyTischtennisConnection({ ...connection, lastImportError: detail })
|
||||||
throw createError({ statusCode: 502, statusMessage: `TTR-Abruf fehlgeschlagen: ${detail}` })
|
throw createError({ statusCode: 502, message: 'TTR-Abruf fehlgeschlagen. Details stehen im Serverlog.' })
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user