upgrade architecture

This commit is contained in:
2026-02-07 19:33:05 +01:00
parent 4eb3defa59
commit 497ab1550b
10 changed files with 1525 additions and 1454 deletions

View File

@@ -45,8 +45,13 @@ class ArchitectureNodeResponse(BaseModel):
class ArchitectureWorldPayload(BaseModel):
items: List[Dict[str, Any]]
# Format v1 (legacy)
items: Optional[List[Dict[str, Any]]] = None
splines: Optional[List[Dict[str, Any]]] = None
# Format v2 (Vue Flow)
nodes: Optional[List[Dict[str, Any]]] = None
edges: Optional[List[Dict[str, Any]]] = None
version: Optional[int] = None
@router.get("/nodes", response_model=List[ArchitectureNodeResponse])
@@ -122,11 +127,25 @@ async def get_world():
@router.post("/world")
async def save_world(payload: ArchitectureWorldPayload):
"""Sauvegarde les éléments du world dans architecture.json."""
"""Sauvegarde les éléments du world dans architecture.json.
Accepte le format v1 (items/splines) ou v2 (nodes/edges)."""
ensure_world_file()
splines = payload.splines or []
WORLD_FILE.write_text(
json.dumps({"items": payload.items, "splines": splines}, indent=2),
encoding="utf-8"
)
return {"status": "ok", "count": len(payload.items), "splines": len(splines)}
if payload.version and payload.version >= 2:
# Format v2 (Vue Flow)
data = {
"nodes": payload.nodes or [],
"edges": payload.edges or [],
"version": payload.version,
}
WORLD_FILE.write_text(json.dumps(data, indent=2), encoding="utf-8")
return {"status": "ok", "nodes": len(data["nodes"]), "edges": len(data["edges"])}
else:
# Format v1 (legacy)
items = payload.items or []
splines = payload.splines or []
WORLD_FILE.write_text(
json.dumps({"items": items, "splines": splines}, indent=2),
encoding="utf-8"
)
return {"status": "ok", "count": len(items), "splines": len(splines)}