Contexto
Nossos decks (Deck/DeckCard) não têm histórico de versões. O Archidekt tem snapshots/versionamento. Sem isso, alterações no deck são destrutivas — não dá pra ver "como o deck estava na semana passada" nem reverter.
Pedido
Histórico de versões/snapshots dos decks do usuário: criar um snapshot (manual e/ou automático em mudanças grandes), listar versões e reverter.
Escopo
- Model novo
DeckSnapshot(deck_id, label, cards_json, created_at) (serializa a decklist no momento) + migração.
- Endpoints:
POST /api/decks/{id}/snapshots, GET /api/decks/{id}/snapshots, POST /api/decks/{id}/snapshots/{sid}/restore.
- Frontend (
DeckDetailPage): seção "Versões" — criar snapshot, ver diff básico (cartas +/-), restaurar.
- Decisões: snapshot manual vs automático; limite de versões por deck (ex.: últimas 20).
Refs: backend/app/api/routes/decks.py, backend/app/models/__init__.py, frontend/src/pages/DeckDetailPage.tsx
Contexto
Nossos decks (
Deck/DeckCard) não têm histórico de versões. O Archidekt tem snapshots/versionamento. Sem isso, alterações no deck são destrutivas — não dá pra ver "como o deck estava na semana passada" nem reverter.Pedido
Histórico de versões/snapshots dos decks do usuário: criar um snapshot (manual e/ou automático em mudanças grandes), listar versões e reverter.
Escopo
DeckSnapshot(deck_id, label, cards_json, created_at)(serializa a decklist no momento) + migração.POST /api/decks/{id}/snapshots,GET /api/decks/{id}/snapshots,POST /api/decks/{id}/snapshots/{sid}/restore.DeckDetailPage): seção "Versões" — criar snapshot, ver diff básico (cartas +/-), restaurar.Refs:
backend/app/api/routes/decks.py,backend/app/models/__init__.py,frontend/src/pages/DeckDetailPage.tsx