Pipeline abbrechen: Laufende Ticket-Verarbeitung stoppen können #79

Open
opened 2026-03-30 20:20:34 +00:00 by David · 0 comments
Collaborator

Beschreibung

Es gibt keinen Endpoint um eine laufende Pipeline-Verarbeitung abzubrechen. Wenn ein Ticket hängt oder falsch gestartet wurde, muss man auf den Watchdog-Timeout (15 Min) warten.

Hintergrund

Im Dashboard sieht man laufende Tickets, kann sie aber nicht stoppen. Der einzige Weg ist Server-Restart oder Warten. Bei falschen Ticket-Zuordnungen oder hängenden Claude-Prozessen ist ein manueller Abbruch nötig.

Akzeptanzkriterien

  • Neuer Endpoint: POST /api/tickets/{id}/cancel
  • Killt den laufenden Claude-Subprocess (SIGTERM, dann SIGKILL)
  • Setzt Ticket-Status auf cancelled mit Timestamp
  • Räumt temporäre Dateien (kontext.md, Branch) auf
  • Frontend: Cancel-Button im TicketDetail bei laufenden Tickets
  • Test: Laufendes Ticket kann abgebrochen werden

Technische Hinweise

  • Betroffene Dateien: backend/api/tickets.py, backend/services/pipeline.py, backend/services/claude_runner.py
  • Ansatz: PID des Subprocesses speichern, bei Cancel os.killpg() aufrufen
  • Frontend: frontend/src/pages/TicketDetail.tsx
  • Migration nötig: nein (cancelled als neuer Status-String)

Aufwand: M

## Beschreibung Es gibt keinen Endpoint um eine laufende Pipeline-Verarbeitung abzubrechen. Wenn ein Ticket hängt oder falsch gestartet wurde, muss man auf den Watchdog-Timeout (15 Min) warten. ## Hintergrund Im Dashboard sieht man laufende Tickets, kann sie aber nicht stoppen. Der einzige Weg ist Server-Restart oder Warten. Bei falschen Ticket-Zuordnungen oder hängenden Claude-Prozessen ist ein manueller Abbruch nötig. ## Akzeptanzkriterien - [ ] Neuer Endpoint: `POST /api/tickets/{id}/cancel` - [ ] Killt den laufenden Claude-Subprocess (SIGTERM, dann SIGKILL) - [ ] Setzt Ticket-Status auf `cancelled` mit Timestamp - [ ] Räumt temporäre Dateien (kontext.md, Branch) auf - [ ] Frontend: Cancel-Button im TicketDetail bei laufenden Tickets - [ ] Test: Laufendes Ticket kann abgebrochen werden ## Technische Hinweise - Betroffene Dateien: `backend/api/tickets.py`, `backend/services/pipeline.py`, `backend/services/claude_runner.py` - Ansatz: PID des Subprocesses speichern, bei Cancel `os.killpg()` aufrufen - Frontend: `frontend/src/pages/TicketDetail.tsx` - Migration nötig: nein (cancelled als neuer Status-String) ## Aufwand: M
Sign in to join this conversation.
No description provided.