IDE-Intake: Ziel-Plattform waehlbar (LXC oder Docker) + Infrastruktur-Steckbrief
Zweiter, dezenter Schalter (nur bei IDE): Ziel = LXC (Standard) oder Docker. Die Wahl fliesst als 'ZIEL-PLATTFORM'-Zeile in den Auftrag, dazu immer ein Infrastruktur-Steckbrief (Proxmox/LXC, PBS-Backups, systemd, self-hosted Gitea, alles lokal) — sonst plant jedes Modell nach Industrie-Default Docker/Cloud. Skill: Ziel + Infrastruktur sind bindend; traegt die Wahl nicht, muss das Konzept es ausdruecklich sagen statt sie still zu ignorieren. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -14,6 +14,7 @@ class IdeeIn(BaseModel):
|
||||
notiz: str = ""
|
||||
welt: str = "box" # "box" = Werkstatt baut · "ide" = vorbereiten für Zed
|
||||
tiefe: str = "" # nur ide: "simpel" | "gruendlich" (leer = Box schätzt selbst)
|
||||
ziel: str = "" # nur ide: "lxc" | "docker" (leer = Box entscheidet)
|
||||
|
||||
|
||||
class TaskIn(BaseModel):
|
||||
@@ -32,7 +33,7 @@ def list_queue() -> dict:
|
||||
|
||||
@router.post("/ideen")
|
||||
def add_idea(body: IdeeIn) -> dict:
|
||||
res = ideen.add_idea(body.titel, body.notiz, welt=body.welt, tiefe=body.tiefe)
|
||||
res = ideen.add_idea(body.titel, body.notiz, welt=body.welt, tiefe=body.tiefe, ziel=body.ziel)
|
||||
if not res.get("ok"):
|
||||
raise HTTPException(400, res.get("error", "Idee konnte nicht angelegt werden."))
|
||||
return res
|
||||
|
||||
@@ -287,8 +287,29 @@ _AUFWAND = {
|
||||
}
|
||||
|
||||
|
||||
# Infrastruktur des Commanders — ohne das plant jedes Modell nach Industrie-Default
|
||||
# (Docker/Cloud) statt für die reale Umgebung.
|
||||
_INFRA = ("INFRASTRUKTUR des Commanders (plane DAFUER, nicht nach Industrie-Default): Proxmox (pve) "
|
||||
"mit LXC-Containern; ein Proxmox Backup Server sichert die LXCs automatisch; Dienste laufen "
|
||||
"als systemd-Units, moeglichst sudo-frei; Gitea ist self-hosted. Alles laeuft lokal im "
|
||||
"Heimnetz — KEINE Cloud, kein fremder Hoster, keine Bezahl-Dienste.")
|
||||
|
||||
# Ziel-Plattform je Projekt (vom Commander gewaehlt) — ueberstimmt die Annahmen des Modells.
|
||||
_ZIEL = {
|
||||
"lxc": ("ZIEL-PLATTFORM (vom Commander gewaehlt): LXC — plane die Umsetzung als Dienst in einem "
|
||||
"eigenen Proxmox-LXC-Container: systemd-Unit, Dateien im Container, KEIN Docker und KEIN "
|
||||
"docker compose. Der LXC wird vom Proxmox Backup Server automatisch mitgesichert."),
|
||||
"docker": ("ZIEL-PLATTFORM (vom Commander gewaehlt): DOCKER — plane docker compose, laufend "
|
||||
"INNERHALB eines Proxmox-LXC mit aktiviertem Nesting (kein separater Docker-Host). "
|
||||
"Sag im Konzept, wo die Volumes liegen und wie sie ins LXC-Backup kommen."),
|
||||
}
|
||||
_ZIEL_EHRLICH = ("Traegt die gewaehlte Ziel-Plattform fuer dieses Projekt NICHT (z. B. eine noetige "
|
||||
"Komponente gibt es nur als Docker-Image), dann sag das im Konzept AUSDRUECKLICH mit "
|
||||
"Begruendung — ignoriere die Wahl nicht still und scheitere nicht daran.")
|
||||
|
||||
|
||||
def add_idea(titel: str, notiz: str = "", created_by: str = "mc2-ui",
|
||||
welt: str = "box", tiefe: str = "") -> dict:
|
||||
welt: str = "box", tiefe: str = "", ziel: str = "") -> dict:
|
||||
"""Idee in die Queue legen.
|
||||
|
||||
welt='box' (Default): triage — der Specifier arbeitet sie aus, die Werkstatt baut,
|
||||
@@ -299,7 +320,9 @@ def add_idea(titel: str, notiz: str = "", created_by: str = "mc2-ui",
|
||||
Zed selbst baut (IDE-Welt). Bewusst KEIN --triage: so fasst der Auto-Zerleger die
|
||||
Karte nie an und die Werkstatt baut sie nie (der Fan-out-Fehler vom 20.07.).
|
||||
tiefe (nur ide): 'simpel' | 'gruendlich' — vom Knopf gewaehlte Konzept-Tiefe; leer =
|
||||
die Box schaetzt selbst (Fallback fuer Telegram/Lucy)."""
|
||||
die Box schaetzt selbst (Fallback fuer Telegram/Lucy).
|
||||
ziel (nur ide): 'lxc' | 'docker' — Ziel-Plattform des Projekts; leer = die Box
|
||||
entscheidet (bekommt aber immer den Infrastruktur-Steckbrief)."""
|
||||
if not _available():
|
||||
return {"ok": False, "error": "Die Ideen-Queue lebt auf der Box."}
|
||||
titel = (titel or "").strip()
|
||||
@@ -309,9 +332,13 @@ def add_idea(titel: str, notiz: str = "", created_by: str = "mc2-ui",
|
||||
notiz = (notiz or "").strip()
|
||||
if welt == "ide":
|
||||
args = ["create", titel, "--assignee", "projektstart", "--created-by", created_by, "--json"]
|
||||
aufwand = _AUFWAND.get(str(tiefe).lower())
|
||||
if aufwand:
|
||||
notiz = aufwand + ("\n\n" + notiz if notiz else "")
|
||||
# Vorspann: Aufwand (Tiefe) + Ziel-Plattform + Infrastruktur — überstimmt die
|
||||
# Annahmen des Modells und macht das Konzept auf die reale Umgebung passend.
|
||||
vorspann = [p for p in (_AUFWAND.get(str(tiefe).lower()),
|
||||
_ZIEL.get(str(ziel).lower())) if p]
|
||||
zielwahl = _ZIEL.get(str(ziel).lower())
|
||||
vorspann.append(_INFRA + (" " + _ZIEL_EHRLICH if zielwahl else ""))
|
||||
notiz = "\n\n".join(vorspann) + ("\n\n" + notiz if notiz else "")
|
||||
else:
|
||||
args = ["create", titel, "--triage", "--created-by", created_by, "--json"]
|
||||
if notiz:
|
||||
|
||||
Reference in New Issue
Block a user