update
This commit is contained in:
@@ -4,11 +4,14 @@ hier wird auf 400/404/409 gemappt."""
|
||||
from fastapi import APIRouter, HTTPException
|
||||
|
||||
import agents
|
||||
import auftrag
|
||||
import chat
|
||||
import features
|
||||
import projekte
|
||||
import planung
|
||||
import pruefung
|
||||
import recherche
|
||||
import verzeichnis
|
||||
|
||||
router = APIRouter(prefix="/api")
|
||||
|
||||
@@ -127,17 +130,64 @@ async def planung_starten(name: str):
|
||||
|
||||
@router.post("/projekte/{name}/planung/umsetzen")
|
||||
async def planung_umsetzen(name: str):
|
||||
"""Mit Arbeitsverzeichnis implementiert ein Agent die Änderungen; die Planung
|
||||
bleibt stehen und wird erst nach seinem Erfolg übernommen. Ohne Verzeichnis
|
||||
oder ohne Änderungen wird sofort übernommen."""
|
||||
try:
|
||||
planung.setze_um(name)
|
||||
anweisung, schritte = auftrag.bau_auftrag(name)
|
||||
agent = auftrag.starte(name, anweisung, schritte)
|
||||
if not agent:
|
||||
planung.setze_um(name)
|
||||
except FileNotFoundError as e:
|
||||
raise HTTPException(404, str(e))
|
||||
except ValueError as e:
|
||||
raise HTTPException(409, str(e))
|
||||
return {"ok": True}
|
||||
return {"ok": True, "agent": agent}
|
||||
|
||||
|
||||
@router.get("/projekte/{name}/auftrag")
|
||||
async def auftrag_status(name: str):
|
||||
return auftrag.status(name)
|
||||
|
||||
|
||||
@router.get("/system/ordner")
|
||||
async def ordner_liste(pfad: str = ""):
|
||||
"""Zum Durchblättern im Verzeichnis-Dialog — listet nur, schreibt nie."""
|
||||
try:
|
||||
return verzeichnis.ordner(pfad)
|
||||
except FileNotFoundError as e:
|
||||
raise HTTPException(404, str(e))
|
||||
except ValueError as e:
|
||||
raise HTTPException(400, str(e))
|
||||
|
||||
|
||||
@router.get("/projekte/{name}/verzeichnis")
|
||||
async def verzeichnis_lesen(name: str):
|
||||
try:
|
||||
return {"pfad": verzeichnis.lies(name)}
|
||||
except FileNotFoundError as e:
|
||||
raise HTTPException(404, str(e))
|
||||
|
||||
|
||||
@router.put("/projekte/{name}/verzeichnis")
|
||||
async def verzeichnis_setzen(name: str, body: dict):
|
||||
pfad = (body.get("pfad") or "").strip()
|
||||
try:
|
||||
if not pfad:
|
||||
verzeichnis.loesche(name)
|
||||
return {"pfad": ""}
|
||||
return {"pfad": verzeichnis.setze(name, pfad)}
|
||||
except FileNotFoundError as e:
|
||||
raise HTTPException(404, str(e))
|
||||
except ValueError as e:
|
||||
raise HTTPException(400, str(e))
|
||||
|
||||
|
||||
@router.delete("/projekte/{name}/planung")
|
||||
async def planung_abbrechen(name: str):
|
||||
# Solange der Agent auf der Planung arbeitet, darf sie ihm niemand wegziehen
|
||||
if auftrag.status(name)["laeuft"]:
|
||||
raise HTTPException(409, "Der Agent arbeitet noch an dieser Planung")
|
||||
try:
|
||||
planung.brich_ab(name)
|
||||
except FileNotFoundError as e:
|
||||
@@ -147,6 +197,8 @@ async def planung_abbrechen(name: str):
|
||||
|
||||
@router.post("/projekte/{name}/planung/zuruecksetzen")
|
||||
async def planung_zuruecksetzen(name: str, body: dict):
|
||||
if auftrag.status(name)["laeuft"]:
|
||||
raise HTTPException(409, "Der Agent arbeitet noch an dieser Planung")
|
||||
try:
|
||||
planung.zuruecksetzen(name, (body or {}).get("titel") or "")
|
||||
except FileNotFoundError as e:
|
||||
@@ -171,16 +223,6 @@ async def feature_loeschen(name: str, id: str):
|
||||
return {"ok": True}
|
||||
|
||||
|
||||
@router.put("/projekte/{name}/features/{id}/projekt")
|
||||
async def feature_verschieben(name: str, id: str, body: dict):
|
||||
try:
|
||||
return features.verschieben(name, id, (body.get("ziel") or "").strip())
|
||||
except FileNotFoundError as e:
|
||||
raise HTTPException(404, str(e))
|
||||
except ValueError as e:
|
||||
raise HTTPException(400, str(e))
|
||||
|
||||
|
||||
@router.get("/projekte/{name}/chat")
|
||||
async def chat_verlauf(name: str):
|
||||
try:
|
||||
@@ -208,3 +250,40 @@ async def chat_leeren(name: str):
|
||||
except FileNotFoundError as e:
|
||||
raise HTTPException(404, str(e))
|
||||
return {"ok": True}
|
||||
|
||||
|
||||
@router.get("/projekte/{name}/recherche")
|
||||
async def recherche_faeden(name: str):
|
||||
try:
|
||||
return {"faeden": recherche.liste(name)}
|
||||
except FileNotFoundError as e:
|
||||
raise HTTPException(404, str(e))
|
||||
|
||||
|
||||
@router.post("/projekte/{name}/recherche")
|
||||
async def recherche_anlegen(name: str):
|
||||
try:
|
||||
return recherche.anlegen(name)
|
||||
except FileNotFoundError as e:
|
||||
raise HTTPException(404, str(e))
|
||||
|
||||
|
||||
@router.post("/projekte/{name}/recherche/{id}")
|
||||
async def recherche_frage(name: str, id: str, body: dict):
|
||||
try:
|
||||
return await recherche.frage(name, id, body.get("text") or "")
|
||||
except FileNotFoundError as e:
|
||||
raise HTTPException(404, str(e))
|
||||
except agents.NichtKonfiguriert as e:
|
||||
raise HTTPException(400, str(e))
|
||||
except ValueError as e:
|
||||
raise HTTPException(400, str(e))
|
||||
|
||||
|
||||
@router.delete("/projekte/{name}/recherche/{id}")
|
||||
async def recherche_loeschen(name: str, id: str):
|
||||
try:
|
||||
recherche.loeschen(name, id)
|
||||
except FileNotFoundError as e:
|
||||
raise HTTPException(404, str(e))
|
||||
return {"ok": True}
|
||||
|
||||
Reference in New Issue
Block a user