feat(ai): P1.3 IDataSource-Interface + Adapter für Mails, Listen, Notizen #441

Closed
opened 2026-06-06 16:28:53 +02:00 by pm-bot · 1 comment
Collaborator

Phase-1-Sub-Issue zu #122 (Decision Record 2026-06-06).

Ziel

Abstraktes IDataSource-Interface in @mrrmlab/shared-types (oder neuer Package @mrrmlab/ai-core) definieren — Folge-Effekt 6 aus #438: damit Day-Planner (#360), Wissensbasis (#258), Urlaubs-Modul (#323) später ohne Pipeline-Umbau plugbar sind.

Scope

  • TypeScript-Interface:
interface IDataSource {
  readonly sourceType: string;                       // 'mail' | 'shopping-list' | 'note' | ...
  extractChunks(sourceId: string): Promise<Chunk[]>; // Text-Splitting + Metadaten
  getIndexKey(sourceId: string): string;             // stabile ID für Vec-Tabelle
  subscribeToUpdates(): Observable<UpdateEvent>;     // Re-Indexing-Trigger
}
interface Chunk { text: string; metadata: Record<string, unknown>; }
interface UpdateEvent { sourceId: string; kind: 'created'|'updated'|'deleted'; }
  • Drei Adapter-Implementierungen:
    • MailDataSource — liest aus bestehender Mail-DB-Tabelle, chunked nach Mail-Body (z.B. ~500 char Splits).
    • ShoppingListDataSource — chunked nach Listen-Item-Gruppen.
    • NoteDataSource — chunked nach Note-Body (Markdown-Sections).
  • Re-Indexing-Trigger: TanStack-Query-Cache-Invalidation als subscribeToUpdates-Quelle (oder Drizzle-Subscriber-Pattern).

Akzeptanzkriterien

  • Interface in @mrrmlab/shared-types (oder neuem Package) exportiert.
  • Drei Adapter implementiert + Vitest-Suite je Adapter mit mocked DB-Daten.
  • DataSource-Registry-Pattern: dataSources.register(adapter) für spätere Erweiterung.
  • Update-Event-Stream funktional verifiziert (Insert→Event, Update→Event, Delete→Event).

Out-of-Scope

  • Konkrete Indexierung (P1.4)
  • Suche (P1.5)
  • Web-Implementation der Adapter (folgt in Web-Sub-Epic)
Phase-1-Sub-Issue zu #122 (Decision Record 2026-06-06). ## Ziel Abstraktes `IDataSource`-Interface in `@mrrmlab/shared-types` (oder neuer Package `@mrrmlab/ai-core`) definieren — Folge-Effekt 6 aus #438: damit Day-Planner (#360), Wissensbasis (#258), Urlaubs-Modul (#323) später ohne Pipeline-Umbau plugbar sind. ## Scope - TypeScript-Interface: ```ts interface IDataSource { readonly sourceType: string; // 'mail' | 'shopping-list' | 'note' | ... extractChunks(sourceId: string): Promise<Chunk[]>; // Text-Splitting + Metadaten getIndexKey(sourceId: string): string; // stabile ID für Vec-Tabelle subscribeToUpdates(): Observable<UpdateEvent>; // Re-Indexing-Trigger } interface Chunk { text: string; metadata: Record<string, unknown>; } interface UpdateEvent { sourceId: string; kind: 'created'|'updated'|'deleted'; } ``` - Drei Adapter-Implementierungen: - `MailDataSource` — liest aus bestehender Mail-DB-Tabelle, chunked nach Mail-Body (z.B. ~500 char Splits). - `ShoppingListDataSource` — chunked nach Listen-Item-Gruppen. - `NoteDataSource` — chunked nach Note-Body (Markdown-Sections). - Re-Indexing-Trigger: TanStack-Query-Cache-Invalidation als `subscribeToUpdates`-Quelle (oder Drizzle-Subscriber-Pattern). ## Akzeptanzkriterien - [ ] Interface in `@mrrmlab/shared-types` (oder neuem Package) exportiert. - [ ] Drei Adapter implementiert + Vitest-Suite je Adapter mit mocked DB-Daten. - [ ] DataSource-Registry-Pattern: `dataSources.register(adapter)` für spätere Erweiterung. - [ ] Update-Event-Stream funktional verifiziert (Insert→Event, Update→Event, Delete→Event). ## Out-of-Scope - Konkrete Indexierung (P1.4) - Suche (P1.5) - Web-Implementation der Adapter (folgt in Web-Sub-Epic)
Author
Collaborator

Implementation komplett — integriert in PR #444 (wireup/ai-foundation-phase1). Device-Pass läuft am übergeordneten Epic #122. Issue wird geschlossen.

Implementation komplett — integriert in PR #444 (`wireup/ai-foundation-phase1`). Device-Pass läuft am übergeordneten Epic #122. Issue wird geschlossen.
Sign in to join this conversation.
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#441
No description provided.