Projektarten: Zuordnungs-Mail heisst T17 (T16 ist Funktion bestellt)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
c1f8ace348
commit
43c168ab54
4 files changed
+9
-8
No files matched your search
@@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<!--
|
||||
T16 · Neues Repo zuordnen
|
||||
T17 · Neues Repo zuordnen
|
||||
Betreff: {{betreff_vorsatz}}Neues Repo zuordnen: {{repo}}
|
||||
Absender: „WEBklar Kundenportal“ <Portal-Postfach>
|
||||
Empfänger: die Person, die das Repo in Gitea angelegt hat (employees.email)
|
||||
|
||||
@@ -5,7 +5,7 @@ import { sendStaffMail } from './mailer.js'
|
||||
import { findEmployeeForPusher } from './pushTimeMail.js'
|
||||
|
||||
/**
|
||||
* Mail "Neues Repo zuordnen" (Vorlage T16): wer in Gitea ein Repo anlegt, bekommt eine Mail mit
|
||||
* Mail "Neues Repo zuordnen" (Vorlage T17): wer in Gitea ein Repo anlegt, bekommt eine Mail mit
|
||||
* Knopf in die Zuordnung im Ticketsystem. Eine Erinnerung nach 24 Stunden, danach nichts mehr.
|
||||
*/
|
||||
|
||||
@@ -53,7 +53,7 @@ export async function sendRepoAssignMail(project, { giteaLogin, reminder = false
|
||||
const { date, time: hhmm } = berlinDateTime(Number.isNaN(created.getTime()) ? new Date() : created)
|
||||
const attempts = Number(project.assignMailAttempts || 0) + 1
|
||||
const message = {
|
||||
template: 'T16',
|
||||
template: 'T17',
|
||||
values: {
|
||||
betreff_vorsatz: reminder ? 'Erinnerung: ' : '',
|
||||
vorname: String(employee.displayName || '').trim().split(/\s+/)[0] || 'du',
|
||||
|
||||
@@ -6,7 +6,7 @@ import { contractAttachmentFor, termsDocFor } from '../server/services/products.
|
||||
|
||||
const DIR = new URL('../server/mail-templates/', import.meta.url)
|
||||
// K12, K14 und T12 (Wechsel ins Wartungs-Abo) aus Task 9, K13 und T13 (Zusatzspeicher) aus Task 8 (Fix 1);
|
||||
// Endfassung der Texte in Task 12; T14 „Löschfristen“ aus Task 21 (F39); T15 Push-Zeitmail; K15, K16, T16 Funktionen (News-Pinnwand)
|
||||
// Endfassung der Texte in Task 12; T14 „Löschfristen“ aus Task 21 (F39); T15 Push-Zeitmail; K15, K16, T16 Funktionen (News-Pinnwand); T17 Repo zuordnen
|
||||
const EXPECTED = [
|
||||
...Array.from({ length: 11 }, (_, i) => `K${String(i + 1).padStart(2, '0')}`),
|
||||
'K12',
|
||||
@@ -20,6 +20,7 @@ const EXPECTED = [
|
||||
'T14',
|
||||
'T15',
|
||||
'T16',
|
||||
'T17',
|
||||
]
|
||||
|
||||
const sampleValues = (tpl) => Object.fromEntries(tpl.placeholders.map((p) => [p, `Wert-${p}`]))
|
||||
@@ -36,7 +37,7 @@ for (const id of EXPECTED) {
|
||||
const title = source.match(/<title>([\s\S]*?)<\/title>/)[1]
|
||||
assert.equal(title, tpl.subject, 'Betreff im Kopf und <title> sind gleich')
|
||||
// F34: Team-Hinweise tragen [Abo], [Speicher] (Zusatzspeicher-Aufgaben), [Datenschutz] (Loeschfristen) oder [Zeit] (Push-Zeitmail)
|
||||
assert.equal(id.startsWith('T'), /^\[(Abo|Speicher|Datenschutz|Zeit)\]/.test(tpl.subject) || id === 'T01' || id === 'T16', 'Team-Hinweise ab T02 mit [Abo], [Speicher], [Datenschutz] oder [Zeit] (T16 Funktion bestellt ohne Kennung)')
|
||||
assert.equal(id.startsWith('T'), /^\[(Abo|Speicher|Datenschutz|Zeit)\]/.test(tpl.subject) || id === 'T01' || id === 'T16' || id === 'T17', 'Team-Hinweise ab T02 mit [Abo], [Speicher], [Datenschutz] oder [Zeit] (T16 Funktion bestellt und T17 Repo zuordnen ohne Kennung)')
|
||||
|
||||
const used = new Set([...tpl.body.matchAll(/\{\{(\w+)\}\}/g), ...tpl.subject.matchAll(/\{\{(\w+)\}\}/g)].map((m) => m[1]))
|
||||
assert.deepEqual([...used].sort(), [...tpl.placeholders].sort(), 'deklarierte = verwendete Platzhalter')
|
||||
|
||||
@@ -62,16 +62,16 @@ test('dueReminder: genau nach 24 h, ohne Art, ohne frühere Erinnerung', () => {
|
||||
assert.equal(dueReminder({ ...base, assignMailAttempts: 2 }, { now: NOW }), true)
|
||||
})
|
||||
|
||||
test('T16: rendert ohne Probleme, Betreff mit und ohne Erinnerung', () => {
|
||||
test('T17: rendert ohne Probleme, Betreff mit und ohne Erinnerung', () => {
|
||||
const values = {
|
||||
betreff_vorsatz: '', vorname: 'Kenso', repo: 'WEBklar/x', repo_link: 'https://git.webklar.com/WEBklar/x',
|
||||
angelegt_von: 'Kenso Grimm', angelegt_am: '30.09.2026 17:00', zuordnen_link: 'https://ticket.webklar.com/projects/zuordnen/p1',
|
||||
}
|
||||
const plain = renderMail('T16', values)
|
||||
const plain = renderMail('T17', values)
|
||||
assert.deepEqual(plain.problems, [])
|
||||
assert.equal(plain.subject, 'Neues Repo zuordnen: WEBklar/x')
|
||||
assert.doesNotMatch(plain.html, /einzige Erinnerung/)
|
||||
const rem = renderMail('T16', { ...values, betreff_vorsatz: 'Erinnerung: ' }, { erinnerung: true })
|
||||
const rem = renderMail('T17', { ...values, betreff_vorsatz: 'Erinnerung: ' }, { erinnerung: true })
|
||||
assert.equal(rem.subject, 'Erinnerung: Neues Repo zuordnen: WEBklar/x')
|
||||
assert.match(rem.html, /einzige Erinnerung/)
|
||||
})
|
||||
|
||||
Reference in new issue
Block a user