"""Auftragsbuch-Endpoints (Vorschlags-Inbox) — dünner REST-Layer über services/auftragsbuch.py. LAN-only wie alle MC2-Endpoints; das Gate ist der Klick des Commanders.""" from fastapi import APIRouter, HTTPException from pydantic import BaseModel from services import auftragsbuch router = APIRouter(prefix="/api") class BranchIn(BaseModel): branch: str repo: str = "mc2" # "mc2" (Box-Stack) oder "lucy" (Desktop-App, Annahme baut am PC) class KandidatIn(BaseModel): file: str @router.get("/auftragsbuch") def list_proposals() -> dict: return auftragsbuch.list_proposals() @router.get("/auftragsbuch/diff") def diff(branch: str, repo: str = "mc2") -> dict: res = auftragsbuch.diff_of(branch, repo) if not res.get("ok"): raise HTTPException(400, res.get("error", "Diff nicht verfügbar.")) return res @router.post("/auftragsbuch/annehmen") def accept(body: BranchIn) -> dict: res = auftragsbuch.accept(body.branch, body.repo) if not res.get("ok"): raise HTTPException(400, res.get("error", "Annehmen fehlgeschlagen.")) return res @router.post("/auftragsbuch/ablehnen") def reject(body: BranchIn) -> dict: res = auftragsbuch.reject(body.branch, body.repo) if not res.get("ok"): raise HTTPException(400, res.get("error", "Ablehnen fehlgeschlagen.")) return res @router.post("/auftragsbuch/skill/annehmen") def skill_accept(body: KandidatIn) -> dict: res = auftragsbuch.skill_accept(body.file) if not res.get("ok"): raise HTTPException(400, res.get("error", "Beauftragen fehlgeschlagen.")) return res @router.post("/auftragsbuch/skill/ablehnen") def skill_reject(body: KandidatIn) -> dict: res = auftragsbuch.skill_reject(body.file) if not res.get("ok"): raise HTTPException(400, res.get("error", "Verwerfen fehlgeschlagen.")) return res