feat: campo confidence (high/medium/low, default medium) nei record

- gateway: MemoryIn + payload + risultati search; 422 su valore invalido
- estensione: confidence in qmem_store e qmem_correct (eredita dal superseduto), mostrato nei risultati
- backward compatible: record esistenti → confidence null
- verificato sul server: high/medium/default, 422 su invalida (istanza di test)
This commit is contained in:
Matteo Benedetto
2026-08-16 19:43:30 +02:00
parent 7abced1566
commit eba9c19179
2 changed files with 16 additions and 1 deletions
+3
View File
@@ -180,6 +180,7 @@ class MemoryIn(BaseModel):
project_id: str = Field(min_length=1, max_length=64, description="OBBLIGATORIO: progetto/dominio di appartenenza (kebab-case)")
scope: Literal["agent", "project", "org"] = "agent"
source: Optional[str] = Field(default=None, max_length=256)
confidence: Literal["high", "medium", "low"] = Field(default="medium", description="Affidabilità del record: high = verificato, medium = probabile, low = osservazione non confermata")
expires_at: Optional[str] = None # ISO 8601
supersedes_id: Optional[str] = None
supersede_reason: Optional[str] = Field(default=None, max_length=512)
@@ -369,6 +370,7 @@ async def add_memory(
"project_id": body.project_id,
"scope": body.scope,
"source": body.source,
"confidence": body.confidence,
"created_at": _now_iso(),
"expires_at": _parse_ts(body.expires_at),
"supersedes_id": superseded_id,
@@ -463,6 +465,7 @@ async def search_memories(body: SearchIn, key: str = Depends(require_auth)) -> d
"agent_id": h.payload.get("agent_id"),
"scope": h.payload.get("scope"),
"project_id": h.payload.get("project_id"),
"confidence": h.payload.get("confidence"),
"created_at": h.payload.get("created_at"),
"source": h.payload.get("source"),
"supersedes_id": h.payload.get("supersedes_id"),