# ADR 002 — Carrinho persistente para usuários logados

## Status

Aceito (2025-03)

## Contexto

Usuários logados perdiam o carrinho ao fechar o navegador ou trocar de dispositivo. O carrinho era armazenado apenas em sessão PHP.

## Decisão

Persistir o carrinho no banco para usuários autenticados:

- **Tabela:** `carrinho_usuario` (id_cliente PK, itens LONGTEXT, updated_at)
- **DAO:** CarrinhoUsuarioCoreDAO
- **Service:** CarrinhoService carrega do banco ao obter itens (se sessão vazia) e persiste após add/remove/limpar
- **Formato:** Serialização PHP (compatível com CarrinhoUtil)
- **Expiração:** Itens com data_sorteio_ymd < hoje são removidos ao carregar

## Consequências

- Usuários logados mantêm carrinho entre sessões
- Não autenticados continuam com carrinho em sessão
- Migração 002_carrinho_usuario.sql necessária
- Sem impacto em usuários anônimos

## Referências

- api/src/Service/CarrinhoService.php
- src/Core/Dao/CarrinhoUsuarioCoreDAO.php
- db/migrations/002_carrinho_usuario.sql
- ideias-melhorias.md §4
