upgrade architecture
This commit is contained in:
@@ -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)}
|
||||
|
||||
Reference in New Issue
Block a user