chore(tracking): Verifizierung Tracking→Todo-Pipeline (manueller Smoke-Test) #328
Labels
No labels
app/archiv
app/einkaufslisten
app/imap-client
app/wissensbasis
arch-answered
arch-question
area/api
area/auth
area/infra
area/mobile
area/shared
area/ui
area/web
portfolio-status
prio/high
prio/low
prio/medium
roadmap/public
size/l
size/m
size/s
size/xl
size/xs
status/blocked
status/needs-info
type/bug
type/chore
type/docs
type/feature
type/idea
type/refactor
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
admin-mrrm/mrrmlabapp#328
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Ziel
Verifizieren, dass die in #143 / #144 / #145 implementierte Pipeline „Tracking-Status-Änderung → Todo in Liste 'Pakete'" end-to-end funktioniert.
Hintergrund: Beim Testen war für den User nie sichtbar, ob das Feature greift. Code ist da (
TrackingTodoWriterService.writeForTracking()wird intracking-sync.service.ts:103aufgerufen), aber es gibt keine UI-Anzeige darüber.Checks
docker logs <api-container> 2>&1 | grep -i tracking)TRACK17_API_KEY/AFTERSHIP_API_KEYist im API-Container gesetzt (docker exec ... env | grep TRACK17_API_KEY)InTransit→ späterDelivered)type='todo'undtitle='Pakete'für den Owner angelegt? (SELECT * FROM lists WHERE type='todo' AND title='Pakete';)data->>'title' LIKE '%Paket%'in dieser Liste erzeugt? (SELECT * FROM list_items WHERE list_id = '<id>' ORDER BY created_at DESC;)/einkaufenbzw./listenBereich auf, lässt sich öffnen, zeigt das Todo mit korrekter PriorityErwartung
Wenn alle Checks ✓ → Feature funktioniert, der Folge-Issue UX-Bug (Discoverability) bleibt sinnvoll.
Wenn ein Check fehlschlägt → Root-Cause identifizieren, ggf. neuen Bug anlegen (z.B. Cron-Permission, Owner-Mismatch, Listen-Filter in UI).
Hinweise
TrackingTodoWriterServiceschreibt nur dann, wennTodoGeneratorService.toTodo()nicht null zurückgibt. Aktuell sind Rules nur für:availableforpickup,pickup,delivered,exception,attemptfail,outfordelivery— bei anderen Status (z.B.InfoReceived) entsteht kein Todo (by design).hasStatusChanged()) → identischer Re-Sync erzeugt keine Duplikate.Verwandt
Verwandt: #330 ([Bug] ensureTodoList findet falsche Liste)
Smoke-Test verifiziert (2026-05-19, prod-alt)
0 * * * *, Logs zeigen stündliche LäufeTRACK17_API_KEY/AFTERSHIP_API_KEYDelivered, owner68518d77…, erstellt 2026-05-12)HaushaltRoot-Cause des falschen Ziels: Das ist der pre-#330-Bug. Damals wählte
tracking-todo-writer.service.tsdie erste todo-Liste (find((l) => l.type === 'todo')), nicht die mit Titel'Pakete'. Existierte für den Owner schonHaushalt, landeten die Auto-Todos dort.Post-#330 (gemerged): Lookup ist jetzt
l.type === 'todo' && l.title === 'Pakete'→ bei nächstem Tracking-Status-Wechsel wird eine neue ListePaketeautomatisch angelegt (verifiziert durch 5 Unit-Tests intracking-todo-writer.service.spec.ts, inkl. dem #330-Regression-Test).Pipeline-Funktionalität ist damit bestätigt — die End-to-End-Verifikation der Liste-Wahl post-#330 erfolgt automatisch beim nächsten echten Status-Change (oder kann durch manuelles Anlegen eines neuen Trackings mit absehbarem Status-Wechsel erzwungen werden).
Empfehlung: Die 4 historischen Auto-Todos in
Haushaltbleiben bestehen (echte Daten); User kann sie manuell verschieben/abhaken.Issue geschlossen.