refactor(tracking): TrackingTodoWriter → TrackingCandidateWriter (Phase 2 von #360) #363
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#363
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
Phase 2 von Epic #360 (Day-Planner). Den bestehenden
tracking-todo-writerso refactoren, dass er Candidates erzeugt (Tabelle aus #361) statt direktlist_itemsin eine 'Pakete'-Liste zu schreiben. Damit ist Tracking die erste Source, die dem Candidate-Pattern aus ADR 0001 folgt.Begründung
docs/adr/0001-candidate-model.md) verbietet Direct-Write —tracking-todo-writerist die letzte Direct-Write-Source und blockt #178 (Mail→Todo), das das Candidate-Pattern erst dann erzwingen kann, wenn Tracking als Vorbild dient.Scope
Code
TrackingTodoWriterService→TrackingCandidateWriterService(umbenennen, in eigenes Modulcandidates/ziehen — bleibt intracking/Modul referenziert)source = 'tracking'sourceRef = '<trackingId>:<statusKey>'— encodiert die Status-Transition; mehrere Status-Wechsel desselben Pakets erzeugen verschiedene Candidates (z.B.OutForDeliveryund späterDelivered)title,priorityausTodoGeneratorService.toTodo()trackingIdals Ref (FK aufparcel_trackings)lifecycleState = 'pending'(Default)completionPolicy = 'manual'(User markiert als done)ON CONFLICT (owner_sub, source, source_ref) DO NOTHING→ idempotent gegenüber Re-SyncTrackingSyncServiceruft den neuen Writer auf statt todoWriterWas wegfällt
ensureTodoList()und die 'Pakete'-Liste-Logik — wir schreiben nicht mehr inlists/list_itemsTests
Out-of-scope
obsoletebei Status-Wechsel (kommt in Phase 5+ wenn der Planner Lifecycle steuert)Acceptance
TrackingCandidateWriterServiceerzeugt Candidates statt TodosTrackingSyncServiceruft neuen WriterTrackingTodoWriterService-Datei gelöscht, alle Verweise sauberBezug