docs(agenten): Fallakte Livia und Agenten-Briefing sichern
`LIVIA_PROFIL_UND_PROMPT.md` hält Livia als Exposé Master fest, wie sie vor Runde 8 war: Personalblatt, Aufgabenkatalog, Kanäle und Systeme, das Exposé-Dossier mit elf Bereichen und neun Pflichtfeldern, die `missingFacts`-Regel der Textmaschine — dazu ein System-Prompt, mit dem sich diese Fassung ausserhalb des Repositories rekonstruieren lässt. `archive/livia/` ergänzt die Beschreibung um die Wiederherstellung: die 23 Dateien der Exposé-Funktion als wörtliche Kopie im Original-Pfadlayout sowie ein Manifest jeder Stelle, an der Livia in geteilten Dateien verdrahtet war. Beides ist mit Runde 8 nicht überholt, sondern der Referenzstand: die Exposé-Funktion wurde nicht entfernt, sondern nachgeordnet. Das Manifest beschreibt allerdings den Rückbau eines vollständigen Entfernens und damit ein Szenario, das so nicht eingetreten ist. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
ba8dc39483
commit
2037e5a463
33 files changed
+4431
No files matched your search
@@ -0,0 +1,56 @@
|
||||
import { MockupExposeLeadProvider } from '../provider/MockupExposeLeadProvider'
|
||||
import type { CreateExposeLeadInput, ExposeLead } from '../domain/exposeLead'
|
||||
import type { ItemResponse, ListResponse } from './types'
|
||||
import { throwServiceError } from './errors'
|
||||
import { useSessionStore } from '../stores/sessionStore'
|
||||
|
||||
const provider = MockupExposeLeadProvider
|
||||
|
||||
export const exposeLeadService = {
|
||||
async getAll(): Promise<ListResponse<ExposeLead>> {
|
||||
try {
|
||||
const data = await provider.getAll()
|
||||
return { data, meta: { total: data.length, page: 1, pageSize: data.length, hasMore: false } }
|
||||
} catch (err) {
|
||||
throwServiceError(err)
|
||||
}
|
||||
},
|
||||
|
||||
async getById(id: string): Promise<ItemResponse<ExposeLead | null>> {
|
||||
try {
|
||||
return { data: await provider.getById(id) }
|
||||
} catch (err) {
|
||||
throwServiceError(err)
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Weiterleitung von Nora an Livia.
|
||||
*
|
||||
* Ohne mindestens ein Objekt hätte Livia nichts, woraus sie ein Exposé bauen
|
||||
* könnte — deshalb ist die Objektempfehlung Pflicht und keine Kür.
|
||||
*/
|
||||
async create(input: CreateExposeLeadInput): Promise<ItemResponse<ExposeLead>> {
|
||||
try {
|
||||
if (input.propertyIds.length === 0) {
|
||||
throw new Error('Bitte mindestens ein Objekt auswählen.')
|
||||
}
|
||||
const user = useSessionStore.getState().currentUser
|
||||
const data = await provider.create({
|
||||
...input,
|
||||
forwardedBy: input.forwardedBy ?? user?.name,
|
||||
})
|
||||
return { data }
|
||||
} catch (err) {
|
||||
throwServiceError(err)
|
||||
}
|
||||
},
|
||||
|
||||
async archive(id: string): Promise<ItemResponse<ExposeLead>> {
|
||||
try {
|
||||
return { data: await provider.archive(id) }
|
||||
} catch (err) {
|
||||
throwServiceError(err)
|
||||
}
|
||||
},
|
||||
}
|
||||
Reference in new issue
Block a user