No reviewers
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!365
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/178-mail-candidate-writer"
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?
Summary
Phase 3 von Epic #360 (Day-Planner Multi-Source-Todo). Mail wird die erste neue Source auf dem Candidate-Pattern aus Phase 1/2.
Minimal-Variante ohne die volle Rule-Engine aus #177:
mail_tags.creates_candidate(defaultfalse, Migration0018)MailCandidateWriterServiceschreibt einen Candidate (source='mail',sourceRef=messageId) wenn ein Tag mitcreatesCandidate=truebestätigt wirdMailTagsService.assignTag(confirmed)undconfirmTagPATCH /mail/tags/:tagIdakzeptiert nunnameund/odercreatesCandidateON CONFLICT DO NOTHING→ idempotent pro Mail (erster aktionabler Tag gewinnt, zweite Confirmation ist No-op)(tagId, actionType, config)-TabelleOut of scope (gehört in #177)
Test plan
MailCandidateWriterService(5 Tests) + Hook-Tests inMailTagsService(2 Tests)createsCandidate=falseschreibt nicht, Idempotenz bei mehreren Tags, PATCH-Endpoint setzt Flagpnpm lint/pnpm typecheck/pnpm test/pnpm test:integrationgrün🤖 Generated with Claude Code