Livia arbeitet nicht mehr neben dem Leadbestand, sondern in ihn hinein. - Systemzugänge tragen Titel, Beschreibung und Adresse; die Liste zeigt je Eintrag nur noch Aktiv/Inaktiv und Lesen/Schreiben — kein Berechtigungsbalken, kein Auge-Icon, keine Lese-/Schreibgruppen - Die Quellenregistry ist dynamisch: Der Lauf liest genau die aktiven Lesezugänge mit Adresse aus Livias Personalblatt. Für die drei gepflegten Quellen greift weiterhin ihr eigener Leser, für alles andere ein allgemeiner — eine Übersichtsseite, bis zu zehn Unterseiten, kein Spider. Freie Adressen werden auf http/https geprüft und gegen interne Netze gesperrt - Manuell abgelegte PDF- und Word-Dokumente fliessen in denselben Lauf. Text wird beim Ablegen nativ extrahiert (ZIP + Flate über DecompressionStream, ohne neue Abhängigkeit), Datei und Text liegen in IndexedDB - Neuer harter Filter «Zeitliche Relevanz»: das Modell beurteilt die Ereigniszeit der Veränderung, nicht das Publikationsdatum. «unknown» fällt bewusst nicht durch — ein erfundenes Datum wäre die schlechtere Antwort - Quellentypen und Beobachtungsraum sind Chips mit Freitext; jeder Wert lässt sich einzeln entfernen, auch die vorgegebenen - Info-Knopf bei «Zeitliche Relevanz» und «Mindestrelevanz» erklärt, wie der Wert entsteht — ohne erfundene Prozentgewichte - Gefundene Leads gehen in den zentralen Signalbestand statt in eine zweite Ergebnisliste; die Herkunft steht am Signal (origin: RESEARCH_RUN) - Der Lauf erzeugt einen echten Protokolleintrag mit den Zahlen des Laufs - Lead-Detail: zeitliche Einordnung mit Fundstelle, semantisches Suchprofil bei Chancen mit «Matching starten», und bei Risiko ausdrücklich «Kein internes Objekt eindeutig zugeordnet» statt einer beliebigen Mock-Immobilie - Aufgabenliste nach §11 bereinigt, «Unsichere Signale in Review Queue legen» von Nora übernommen Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
19 lines
778 B
TypeScript
19 lines
778 B
TypeScript
import type { ResearchDocument } from '../domain/researchDocument'
|
|
|
|
/**
|
|
* Ablage der manuell hinterlegten Newsquellen (Runde 10, §2.6).
|
|
*
|
|
* Eine eigene Schnittstelle, obwohl die übrigen Demo-Bestände im Local Storage
|
|
* liegen: Dokumente sind um Grössenordnungen grösser als eine Konfiguration,
|
|
* und der Local Storage ist bei rund fünf Megabyte zu Ende. Eine PDF-Ablage
|
|
* dort hinein zu zwingen hiesse, beim dritten Dokument stillschweigend nichts
|
|
* mehr zu speichern.
|
|
*/
|
|
export interface IResearchDocumentProvider {
|
|
getAll(): Promise<ResearchDocument[]>
|
|
add(doc: ResearchDocument, blob: Blob): Promise<void>
|
|
remove(id: string): Promise<void>
|
|
/** Die Originaldatei — für das Herunterladen aus der Liste. */
|
|
getBlob(id: string): Promise<Blob | null>
|
|
}
|