diff --git a/AGENTS.md b/AGENTS.md index f314a7a..c36fd27 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -183,6 +183,7 @@ locales/ 17. ~~Verifiable Listings~~ ✅ `verification.js` Service, `verification-widget.js` Component, Badge auf Cards + Listing-Detail 18. Selbstzerstörende Listings (siehe `docs/KILLER-FEATURES.md`) 19. Blind Meeting Points (siehe `docs/KILLER-FEATURES.md`) +20. Öffentliche Q&A pro Listing (siehe `docs/KILLER-FEATURES.md`) ### Reputation-System (Konzept) diff --git a/docs/KILLER-FEATURES.md b/docs/KILLER-FEATURES.md index 5ba9fe9..67cd330 100644 --- a/docs/KILLER-FEATURES.md +++ b/docs/KILLER-FEATURES.md @@ -429,10 +429,70 @@ destruct.destroyed = "Diese Anzeige wurde gelöscht" | 2 | Verifiable Listings | 1–2 Tage | Hoch — innovative Lösung ohne KYC | Mittel | | 3 | Selbstzerstörende Listings | 1.5–2 Tage | Hoch — starkes Privacy-Signal | Sehr hoch | -**Gesamt: ~5–7 Tage Implementierung** +| 4 | Öffentliche Q&A | 1–2 Tage | Mittel — reduziert Chat-Last, baut Vertrauen | Mittel | + +**Gesamt: ~6–9 Tage Implementierung** ### Empfohlene Reihenfolge -1. **Verifiable Listings** — geringster Aufwand, sofort sichtbarer Wert, keine neue Dependency +1. **Verifiable Listings** ✅ — geringster Aufwand, sofort sichtbarer Wert, keine neue Dependency 2. **Selbstzerstörende Listings** — baut auf bestehendem Flow auf, starkes Marketingmerkmal 3. **Blind Meeting Points** — höchster Aufwand, aber stärkstes Alleinstellungsmerkmal +4. **Öffentliche Q&A** — kein MVP-Blocker, sinnvoll ab Open Beta + +--- + +## 4. Öffentliche Q&A pro Listing + +**Problem:** Käufer stellen oft die gleichen Fragen per E2E-Chat. Der Verkäufer beantwortet sie immer wieder einzeln. Andere Interessenten sehen die Antworten nicht. + +**Lösung:** Öffentlicher Frage-Antwort-Bereich auf jeder Listing-Seite. Fragen werden unter Pseudonym gestellt (via `identity.js`), nur der Seller kann antworten. + +### Directus: Collection `listing_questions` + +| Feld | Typ | Hinweise | +|------|-----|----------| +| `id` | UUID (auto) | Primary Key | +| `listing` | M2O → `listings` | Zugehöriges Listing | +| `question_user` | UUID | Fragender User (für Pseudonym via `identity.js`) | +| `question_text` | Text | Fragetext | +| `answer_text` | Text, nullable | Antwort des Sellers | +| `date_created` | Timestamp (auto) | | +| `date_answered` | DateTime, nullable | Wann beantwortet | +| `status` | String, default `published` | `published` / `hidden` (Seller kann ausblenden) | + +### Permissions + +| Rolle | Read | Create | Update | Delete | +|-------|------|--------|--------|--------| +| Public | ✓ (status=published) | ✓ (nur `question_*`) | – | – | +| User | ✓ | ✓ | ✓ (nur eigene Antworten als Seller) | – | + +### UX-Flow + +``` +Listing-Detail-Seite: +┌─────────────────────────────────────┐ +│ 📸 Bilder, Titel, Preis ... │ +│ │ +│ ─── Fragen & Antworten (3) ───── │ +│ │ +│ 🐻 BlauerBär42: │ +│ "Funktioniert auch mit 220V?" │ +│ ↳ Seller: "Ja, 110–240V." │ +│ │ +│ 🦊 RoterFuchs17: │ +│ "Versand möglich?" │ +│ ↳ (noch nicht beantwortet) │ +│ │ +│ ┌─────────────────────────────┐ │ +│ │ Frage stellen... │ │ +│ └─────────────────────────────┘ │ +└─────────────────────────────────────┘ +``` + +### Anti-Spam + +- PoW-Captcha vor dem Absenden einer Frage +- Rate-Limit: max. 3 Fragen pro Listing pro User +- Seller kann Fragen ausblenden (`status → hidden`)