feat: Kategorie-Vorschlag via on-device Modell (#173) #182

Merged
admin-mrrm merged 1 commit from 173-mail-tag-suggestion into main 2026-05-03 10:11:51 +02:00
Owner

Abhängigkeiten

Dieser PR baut auf #179 (#139), #180 (#171) und #181 (#172) auf. Merge-Reihenfolge: #179 → #180/#181 → dieser PR.

Was wurde umgesetzt

Backend

  • FullMessageDto + API-Response enthält jetzt die DB-UUID id der gecachten Nachricht
  • Wird benötigt um Tag-Endpoints aufzurufen

API-Client

  • fullMessageSchema um id: z.string().uuid() erweitert

Web + Mobile (identische Implementierung)

  • Tag-Hooks: useMessageTags, useAssignTag, useConfirmTag, useRemoveMessageTag, useMailTags
  • useAutoSuggestTags(messageId, subject, bodyText) — läuft beim ersten Öffnen einer Nachricht:
    1. Prüft ob bereits Tags vorhanden (wenn ja → kein Suggest)
    2. Ruft suggest(snippet, existingTags) on-device auf
    3. Speichert Vorschläge als status: suggested via API
    4. Fehler werden still ignoriert (non-critical)
  • Mail-Reader: Tags als Chips — gelb=vorgeschlagen (✓ zum Bestätigen), grün=bestätigt (✕ zum Entfernen)

Stubs

use-mail-model.ts als Stubs vorhanden — werden durch #171/#172 ersetzt sobald gemerged.

Closes #173

## Abhängigkeiten Dieser PR baut auf #179 (#139), #180 (#171) und #181 (#172) auf. Merge-Reihenfolge: #179 → #180/#181 → dieser PR. ## Was wurde umgesetzt ### Backend - `FullMessageDto` + API-Response enthält jetzt die DB-UUID `id` der gecachten Nachricht - Wird benötigt um Tag-Endpoints aufzurufen ### API-Client - `fullMessageSchema` um `id: z.string().uuid()` erweitert ### Web + Mobile (identische Implementierung) - Tag-Hooks: `useMessageTags`, `useAssignTag`, `useConfirmTag`, `useRemoveMessageTag`, `useMailTags` - `useAutoSuggestTags(messageId, subject, bodyText)` — läuft beim ersten Öffnen einer Nachricht: 1. Prüft ob bereits Tags vorhanden (wenn ja → kein Suggest) 2. Ruft `suggest(snippet, existingTags)` on-device auf 3. Speichert Vorschläge als `status: suggested` via API 4. Fehler werden still ignoriert (non-critical) - Mail-Reader: Tags als Chips — gelb=vorgeschlagen (✓ zum Bestätigen), grün=bestätigt (✕ zum Entfernen) ### Stubs `use-mail-model.ts` als Stubs vorhanden — werden durch #171/#172 ersetzt sobald gemerged. Closes #173
feat: Kategorie-Vorschlag via on-device Modell — Auto-Suggest im Mail-Reader (#173)
Some checks failed
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is passing
d7af6c3754
Backend: FullMessageDto enthält jetzt die DB-UUID (id) der gecachten
Nachricht. API-Client: fullMessageSchema um id-Feld erweitert.

Web + Mobile: Tag-Hooks (useMessageTags, useAssignTag, useConfirmTag,
useRemoveMessageTag, useMailTags). useAutoSuggestTags läuft beim ersten
Öffnen einer Nachricht im Hintergrund — liest bestehende Tags, ruft
suggest() auf und speichert Vorschläge mit Status "suggested".
Mail-Reader zeigt Tags als Chips an (gelb=vorgeschlagen, grün=bestätigt).

Stubs für use-mail-model werden durch #171/#172 ersetzt wenn gemerged.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
admin-mrrm force-pushed 173-mail-tag-suggestion from d7af6c3754
Some checks failed
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is passing
to ef275329e8
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2026-05-03 10:07:38 +02:00
Compare
admin-mrrm deleted branch 173-mail-tag-suggestion 2026-05-03 10:11:51 +02:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
admin-mrrm/mrrmlabapp!182
No description provided.