R-005 — Feature flags para visitantes anônimos
TLDR: Requisições sem usuário identificado (ex.:
GET /api/v1/features/anonymous) recebem comoenabled: trueapenas as flags habilitadas globalmente no Flipper; flags habilitadas só para actors, grupos ou porcentagem de actors ficamenabled: false.
Given / When / Then
Dado um visitante não logado
Quando o front chama GET /api/v1/features/:user_id com um user_id que não corresponde a nenhum usuário (por convenção, anonymous)
Então FeatureFlag::FlipperAdapter#user_features retorna as flags em que Flipper.enabled?(feature) (sem actor) é verdadeiro, e a resposta lista todas as flags com enabled refletindo esse estado global
Tabela de decisão
| Usuário | Estado da flag no Flipper | enabled |
|---|---|---|
| ausente | habilitada globalmente (boolean gate) | true |
| ausente | habilitada só para actor/grupo/percentual | false |
| ausente | desabilitada | false |
| presente | qualquer | Flipper.enabled?(feature, user) |
Restrições
- O endpoint não exige autenticação; um
user_idinexistente é tratado igual aanonymous. - Para uma flag valer para visitantes anônimos (ex.:
scheduling_suspension), ela precisa ser habilitada globalmente — habilitar por actor não tem efeito para quem não está logado.
Testes vinculados
spec/services/feature_flag/flipper_adapter_spec.rbspec/requests/features_index_spec.rb