Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 38s
Build & Deploy / 🧪 QA (push) Failing after 36s
Build & Deploy / 🏗️ Build (push) Has been skipped
Build & Deploy / 🚀 Deploy (push) Has been skipped
Build & Deploy / 🧪 Post-Deploy Verification (push) Has been skipped
Build & Deploy / 🔔 Notify (push) Successful in 3s
55 lines
2.0 KiB
TypeScript
55 lines
2.0 KiB
TypeScript
import { sendEmail } from '@/lib/mail/mailer';
|
|
import { getServerAppServices } from '@/lib/services/create-services.server';
|
|
|
|
export async function submitAnnotations(annotations: any[]) {
|
|
const services = getServerAppServices();
|
|
const logger = services.logger.child({ action: 'submitAnnotations' });
|
|
|
|
if (!annotations || annotations.length === 0) {
|
|
return { success: false, error: 'Keine Korrekturen vorhanden.' };
|
|
}
|
|
|
|
try {
|
|
const jsonContent = JSON.stringify(annotations, null, 2);
|
|
const htmlContent = `
|
|
<h2>Neue Website-Korrekturen (${annotations.length})</h2>
|
|
<p>Es wurden neue Korrekturen über den Annotator eingereicht.</p>
|
|
<ul>
|
|
${annotations.map(ann => `
|
|
<li>
|
|
<b>${new URL(ann.url).pathname}</b> [${ann.type}]<br />
|
|
Element: <code>${ann.selector}</code><br />
|
|
<i>${ann.type === 'image' ? 'Neues Bild: ' : 'Text: '}${ann.newContent}</i>
|
|
</li>
|
|
`).join('')}
|
|
</ul>
|
|
<p><i>Die genauen Daten (inkl. Scroll-Positionen, Viewport und Zeitstempel) befinden sich im JSON-Anhang.</i></p>
|
|
`;
|
|
|
|
const notificationResult = await sendEmail({
|
|
replyTo: 'info@e-tib.com', // Falls Rückfragen nötig
|
|
subject: `[Korrekturen] ${annotations.length} neue Anmerkungen für E-TIB`,
|
|
html: htmlContent,
|
|
attachments: [
|
|
{
|
|
filename: 'corrections.json',
|
|
content: jsonContent,
|
|
contentType: 'application/json',
|
|
}
|
|
]
|
|
});
|
|
|
|
if (!notificationResult.success) {
|
|
logger.error('Annotation email FAILED', { error: notificationResult.error });
|
|
return { success: false, error: notificationResult.error };
|
|
}
|
|
|
|
logger.info('Annotation email sent successfully', { count: annotations.length });
|
|
return { success: true };
|
|
} catch (error) {
|
|
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
logger.error('Failed to send annotations', { error: errorMsg });
|
|
return { success: false, error: errorMsg };
|
|
}
|
|
}
|