"""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)
    grund: str = ""    # nur beim Ablehnen: optionaler Grund → Lern-Gedächtnis des Kreislaufs


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, body.grund)
    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
