erste Fassung von Client und Server rein
This commit is contained in:
66
server/main.py
Normal file
66
server/main.py
Normal file
@@ -0,0 +1,66 @@
|
||||
"""
|
||||
PlantPlan FastAPI Backend
|
||||
- Symbolbibliothek ausliefern
|
||||
- Koordinaten normalisieren
|
||||
- JSON/SVG Export
|
||||
"""
|
||||
|
||||
import json
|
||||
from pathlib import Path
|
||||
from fastapi import FastAPI
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
from pydantic import BaseModel
|
||||
|
||||
app = FastAPI(title="PlantPlan API")
|
||||
|
||||
# CORS: Erlaubt Zugriff vom lokalen Frontend Dev-Server
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=["http://localhost:5173"],
|
||||
allow_methods=["*"],
|
||||
allow_headers=["*"],
|
||||
)
|
||||
|
||||
CATALOG_DIR = Path(__file__).parent / "catalog"
|
||||
|
||||
|
||||
# --- Models ---
|
||||
|
||||
class SketchPayload(BaseModel):
|
||||
shapes: list[dict]
|
||||
grid_size: int = 10
|
||||
|
||||
|
||||
# --- Endpoints ---
|
||||
|
||||
@app.get("/symbols")
|
||||
async def get_symbols():
|
||||
"""Symbolbibliothek als JSON ausliefern."""
|
||||
catalog_file = CATALOG_DIR / "symbols.json"
|
||||
with open(catalog_file, encoding="utf-8") as f:
|
||||
return json.load(f)
|
||||
|
||||
|
||||
@app.post("/normalize")
|
||||
async def normalize(payload: SketchPayload):
|
||||
"""Koordinaten auf Grid snappen und SVG-Pfade normalisieren."""
|
||||
cleaned = []
|
||||
for shape in payload.shapes:
|
||||
s = dict(shape)
|
||||
if "x" in s:
|
||||
s["x"] = round(s["x"] / payload.grid_size) * payload.grid_size
|
||||
if "y" in s:
|
||||
s["y"] = round(s["y"] / payload.grid_size) * payload.grid_size
|
||||
cleaned.append(s)
|
||||
return {"shapes": cleaned}
|
||||
|
||||
|
||||
@app.post("/export")
|
||||
async def export_sketch(payload: SketchPayload):
|
||||
"""Finales Projektfile als JSON exportieren."""
|
||||
return {
|
||||
"json": {
|
||||
"version": "1.0",
|
||||
"shapes": payload.shapes,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user