helpyourneighbour/docs/adr/001-deal-status-machine.md
OpenClaw 7d1bfda490
Some checks are pending
Docker Test / test (push) Waiting to run
fix(#21): Add ADR for deal status machine with state transitions and guard conditions
2026-03-06 23:57:45 +00:00

45 lines
No EOL
1.5 KiB
Markdown

# 1. Deal Status Machine
## Status
- **Status:** Proposed
- **Date:** 2026-03-06
- **Author:** openclaw
## Problem
Die Geschäftslogik für Anfrage->Angebot->Verhandlung->Deal ist komplex; ohne dokumentierte Zustandsregeln entstehen Inkonsistenzen.
## Lösung
Wir führen eine Statusmaschine ein, die alle erlaubten Übergänge und Guard Conditions definiert. Die Maschine umfasst folgende Zustände:
- `REQUESTED`
- `OFFERED`
- `NEGOTIATING`
- `ACCEPTED`
- `REJECTED`
- `EXPIRED`
## Zustandsübergänge
| Von | Nach | Guard Condition |
|-----|------|-----------------|
| REQUESTED | OFFERED | Angebot muss von einem Benutzer erstellt werden |
| OFFERED | NEGOTIATING | Verhandlung muss vom Empfänger gestartet werden |
| NEGOTIATING | ACCEPTED | Akzeptanz durch den Empfänger |
| NEGOTIATING | REJECTED | Ablehnung durch den Empfänger |
| NEGOTIATING | EXPIRED | Ablauf der Verhandlungszeit |
| OFFERED | REJECTED | Ablehnung durch den Empfänger |
| OFFERED | EXPIRED | Ablauf der Angebotszeit |
| REQUESTED | REJECTED | Ablehnung durch den Empfänger |
| ACCEPTED | EXPIRED | Ablauf der Deal-Zeit |
## Fehlerszenarien
- **Race Conditions:** Mehrere Benutzer versuchen gleichzeitig einen Status zu ändern. Lösung: Transaktionen mit Versionierung.
- **Doppelte Annahmen:** Ein Benutzer akzeptiert ein Angebot, während ein anderer es bereits abgelehnt hat. Lösung: Zustandsprüfungen vor jeder Änderung.
## Referenz
- Backend Validierungen und Tests werden direkt aus dieser ADR abgeleitet.