docs(spec): fix F2-A graph isolation — ReportAgent queries graph_id_simulation only

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Ubuntu 2026-05-03 20:38:20 +00:00
parent a1862c1c86
commit bb80ec115a
1 changed files with 12 additions and 12 deletions

View File

@ -284,8 +284,12 @@ sim2 inclou converses de sim1.
### Solució ### Solució
Cada simulació té el seu propi `group_id` Neo4j (`graph_id_simulation`), creat Cada simulació té el seu propi `group_id` Neo4j (`graph_id_simulation`), creat
per clonatge APOC del `graph_document` just abans de llançar la simulació. per clonatge APOC de `graph_id_document` just abans de llançar la simulació.
El ReportAgent consulta `[graph_id_document, graph_id_simulation]`. `graph_id_simulation` conté una còpia exacta del document original, i és on els
agents escriuen les seves converses. `graph_id_document` queda immutable i serveix
de font per a futurs clonatges.
El ReportAgent consulta **únicament** `graph_id_simulation`.
### Flux ### Flux
@ -313,20 +317,17 @@ await session.run("""
Neo4j Aura Cloud inclou APOC de sèrie, per tant no cal cap dependència addicional. Neo4j Aura Cloud inclou APOC de sèrie, per tant no cal cap dependència addicional.
2. **Llançament de simulació**: `enable_graph_memory_update: true` usant `graph_id_simulation` 2. **Llançament de simulació**: `enable_graph_memory_update: true` usant `graph_id_simulation`.
(no el `graph_id_document`) Els agents escriuen converses a `graph_id_simulation`, que ja conté el contingut del document.
3. **Report**: `ReportAgent` rep `graph_ids=[graph_id_document, graph_id_simulation]`. 3. **Report**: `ReportAgent` rep i consulta únicament `graph_id_simulation`.
`ZepToolsService.search_graph_multi()` fa dues queries i fusiona resultats. No cal fusionar grafs ni canviar `ZepToolsService`.
### Canvis al backend ### Canvis al backend
**`graphiti_backend.py`** — nova funció `clone_graph(src_group_id, dst_group_id)` que **`graphiti_backend.py`** — nova funció `clone_graph(src_group_id, dst_group_id)` que
executa les dues queries APOC via `execute_query()`. executa les dues queries APOC via `execute_query()`.
**`ZepToolsService`** — nova funció `search_graph_multi(graph_ids: list, query, limit)`
que fa N queries i fusiona + deduplicar resultats.
**`POST /api/simulation/start`** — si `enable_graph_memory_update: true`: **`POST /api/simulation/start`** — si `enable_graph_memory_update: true`:
1. Genera `graph_id_simulation = f"mirofish_{sim_id}_sim"` 1. Genera `graph_id_simulation = f"mirofish_{sim_id}_sim"`
@ -334,9 +335,8 @@ que fa N queries i fusiona + deduplicar resultats.
3. Desa `graph_id_simulation` a la BD 3. Desa `graph_id_simulation` a la BD
4. Llança la simulació usant `graph_id_simulation` 4. Llança la simulació usant `graph_id_simulation`
**`POST /api/report/generate`** — passa `[graph_id_document, graph_id_simulation]` **`POST /api/report/generate`** — passa `graph_id_simulation` al `ReportAgent`
al `ReportAgent` si `graph_id_simulation` existeix; si no (simulació sense si existeix; si no (simulació sense graph update), passa `graph_id_document` com ara.
graph update), passa només `[graph_id_document]` com ara.
### Canvis al frontend (Step 3) ### Canvis al frontend (Step 3)