feat(#298): Sender→Label Memory — Auto-Decay alter Einträge #306
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!306
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/298-sender-memory-decay"
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
SenderMemoryService.decayStaleEntries({ cutoffDays, factor }): halbiertconfirmCount/removeCount(Integer-Division im SQL) für Einträge mitlastSeenAt < now() - cutoffDays, dann hard-prune aller Einträge die danach auf(0, 0)stehen.SenderMemoryDecayCron: wöchentlich (default Sonntag 03:00), analog zu den bestehenden Crons.ScheduleModule.forRoot()ins MailModule gehoben.SENDER_MEMORY_DECAY_CRON,_DISABLED,_AFTER_DAYS(default 60),_FACTOR(default 2, ≥2).Designentscheidung — Soft-Decay statt Hard-Delete
Der Match-Threshold im Categorizer ist
confirmCount ≥ 2 AND confirm > remove. Halbieren reicht, damit ein lange unangefasster Eintrag seinen Einfluss verliert; der User sieht ihn aber noch in der UI, bis er auf 0 fällt. Erst dann wird er entfernt. Adaptionsgeschwindigkeit + Sichtbarkeit ohne unnötigen Speicher-Wachstum.Test plan
decayStaleEntries(Halbierung, Prune, no-op, rowCount-undefined, Input-Validation)pnpm vitest run— 245/245 grünpnpm typecheckcleanpnpm lintcleanSENDER_MEMORY_DECAY_FACTOR=2, manuellerrunOnce()-Trigger via Logger-CheckCloses #298