Fase 30: Mobile Avançado
Duração: 2 semanas (14 dias úteis)
Prioridade: 🟡 ALTA (Experiência mobile otimizada)
Depende de: Fase 9 (Push tokens), Sistema de Notificações
Estimativa Total: 56 horas
Status: ⏳ Pendente
Nota: Renumerada de Fase 29 para Fase 30 (Onda 6: Autonomia Digital).
🎯 Objetivo
Implementar suporte completo para funcionalidades mobile avançadas que melhoram significativamente a experiência do usuário no app Flutter, incluindo:
- Analytics mobile (app version, platform, device info)
- Deep linking avançado (universal links, app links)
- Background tasks otimizados (endpoints leves)
- Push notifications refinados (badges, ações customizadas)
Princípios:
- ✅ Performance: Endpoints otimizados para background fetch
- ✅ Experiência: Deep linking nativo e fluido
- ✅ Observabilidade: Rastreamento completo de uso mobile
- ✅ Notificações: Push notifications refinados e contextualizados
📋 Contexto e Requisitos
Estado Atual
- ✅ Push notifications básicos implementados (Fase 9)
- ✅ Deep linking básico funcionando
- ✅ Analytics básicos (Firebase Analytics)
- ❌ Analytics mobile específicos não existem
- ❌ Deep linking avançado não implementado
- ❌ Background tasks não otimizados
- ❌ Push notifications não refinados
Requisitos Funcionais
1. Analytics Mobile
- ✅ Rastreamento de app version
- ✅ Detecção de platform (iOS/Android)
- ✅ Device info (modelo, OS version)
- ✅ Session tracking mobile
- ✅ Screen view tracking mobile
2. Deep Linking Avançado
- ✅ Universal Links (iOS) com validação
- ✅ App Links (Android) com validação
- ✅ Dynamic links pelo backend (opcional)
- ✅ Fallback para web quando app não instalado
- ✅ Metadados customizados nos links
3. Background Tasks Otimizados
- ✅ Endpoints leves para background fetch
- ✅ Sumários de feed/notificações
- ✅ Status de sincronização
- ✅ Cache headers otimizados
- ✅ Compressão de respostas
4. Push Notifications Refinados
- ✅ Badges atualizados (contagem de notificações)
- ✅ Ações customizadas em notificações
- ✅ Agrupamento de notificações
- ✅ Categorização de notificações
- ✅ Priorização de notificações
📋 Tarefas Detalhadas
Semana 1: Analytics e Deep Linking
30.1 Analytics Mobile Avançado
Estimativa: 12 horas (1.5 dias)
Status: ❌ Não implementado
Tarefas:
- Criar endpoint
POST /api/v1/mobile/analytics/event:- Aceitar eventos mobile customizados
- Incluir:
appVersion,platform,deviceInfo,sessionId - Integrar com sistema de analytics existente
- Criar endpoint
GET /api/v1/mobile/analytics/session:- Retornar informações de sessão mobile
- Incluir:
sessionId,startTime,screenViews
- Atualizar
AuthControllerpara incluir device info no login:- Capturar
User-Agentheader - Extrair app version, platform
- Armazenar em
USER_DEVICE
- Capturar
- Criar modelo
MobileAnalyticsEvent:-
EventType(ScreenView, UserAction, Error, Performance) -
AppVersion,Platform,DeviceInfo -
Timestamp,SessionId,UserId
-
- Testes de integração
Arquivos a Criar:
backend/Arah.Api/Controllers/MobileAnalyticsController.csbackend/Arah.Api/Contracts/Mobile/MobileAnalyticsEventRequest.csbackend/Arah.Application/Models/MobileAnalyticsEvent.csbackend/Arah.Application/Services/MobileAnalyticsService.cs
Critérios de Sucesso:
- ✅ Analytics mobile funcionando
- ✅ Device info rastreado
- ✅ Sessões mobile registradas
- ✅ Testes passando
30.2 Deep Linking Avançado
Estimativa: 16 horas (2 dias)
Status: ❌ Não implementado
Tarefas:
- Criar endpoint
POST /api/v1/links/generate:- Aceitar:
type(post, event, territory),targetId,metadata - Gerar short link e long link
- Armazenar metadados do link
- Retornar QR code (opcional)
- Aceitar:
- Criar endpoint
GET /api/v1/links/{shortCode}:- Validar link
- Retornar metadados e redirecionamento
- Rastrear acesso (analytics)
- Criar validação de Universal Links:
- Endpoint para
.well-known/apple-app-site-association - Retornar JSON com app IDs e paths
- Endpoint para
- Criar validação de App Links:
- Endpoint para
.well-known/assetlinks.json - Retornar JSON com package names e fingerprints
- Endpoint para
- Integrar com Firebase Dynamic Links (opcional):
- Encurtar links via Firebase
- Fallback para web quando app não instalado
- Criar modelo
DynamicLink:-
ShortCode,LongLink,TargetType,TargetId -
Metadata,CreatedAt,ExpiresAt,AccessCount
-
- Testes de integração
Arquivos a Criar:
backend/Arah.Api/Controllers/LinksController.csbackend/Arah.Api/Contracts/Links/GenerateLinkRequest.csbackend/Arah.Api/Contracts/Links/LinkResponse.csbackend/Arah.Application/Models/DynamicLink.csbackend/Arah.Application/Services/LinkGenerationService.csbackend/Arah.Api/Controllers/WellKnownController.cs(para .well-known)
Critérios de Sucesso:
- ✅ Deep linking funcionando
- ✅ Universal Links validados (iOS)
- ✅ App Links validados (Android)
- ✅ Links rastreados (analytics)
- ✅ Testes passando
Semana 2: Background Tasks e Push Refinados
30.3 Background Tasks Otimizados
Estimativa: 12 horas (1.5 dias)
Status: ❌ Não implementado
Tarefas:
- Criar endpoint
GET /api/v1/feed/summary?territoryId={id}:- Retornar apenas:
lastUpdated,unreadCount,newPostsCount - Não incluir posts completos (economia de banda)
- Cache headers otimizados (5 minutos)
- Compressão de resposta (gzip)
- Retornar apenas:
- Criar endpoint
GET /api/v1/notifications/summary:- Retornar apenas:
unreadCount,lastNotificationAt - Não incluir notificações completas
- Cache headers otimizados (2 minutos)
- Retornar apenas:
- Criar endpoint
GET /api/v1/sync/status:- Retornar:
lastSyncAt,pendingActionsCount,conflictsCount - Status de sincronização do usuário
- Indicar se precisa sincronizar
- Retornar:
- Otimizar headers de cache em endpoints existentes:
- Feed:
Cache-Control: public, max-age=300(5 minutos) - Notificações:
Cache-Control: public, max-age=120(2 minutos) - Territórios:
Cache-Control: public, max-age=1800(30 minutos)
- Feed:
- Adicionar compressão gzip automática:
- Configurar middleware de compressão
- Comprimir respostas > 1KB
- Testes de performance
Arquivos a Modificar:
backend/Arah.Api/Controllers/FeedController.csbackend/Arah.Api/Controllers/NotificationsController.csbackend/Arah.Api/Controllers/SyncController.cs(novo)backend/Arah.Api/Program.cs(compressão)
Arquivos a Criar:
backend/Arah.Api/Contracts/Feed/FeedSummaryResponse.csbackend/Arah.Api/Contracts/Notifications/NotificationSummaryResponse.csbackend/Arah.Api/Contracts/Sync/SyncStatusResponse.cs
Critérios de Sucesso:
- ✅ Endpoints leves funcionando
- ✅ Tempo de resposta < 100ms
- ✅ Tamanho de resposta reduzido (> 50%)
- ✅ Cache headers funcionando
- ✅ Testes de performance passando
30.4 Push Notifications Refinados
Estimativa: 16 horas (2 dias)
Status: ❌ Não implementado
Tarefas:
- Criar endpoint
GET /api/v1/users/devices/{deviceId}/badge:- Retornar contagem de notificações não lidas
- Atualizar badge do dispositivo
- Criar endpoint
POST /api/v1/notifications/{id}/actions:- Aceitar ações customizadas em notificações
- Processar ação (ex: "Ver Post", "Participar Evento")
- Retornar resultado da ação
- Implementar agrupamento de notificações:
- Agrupar notificações do mesmo tipo (ex: múltiplos comentários)
- Criar notificação resumo quando > 3 notificações do mesmo tipo
- Endpoint
GET /api/v1/notifications/grouped
- Implementar categorização de notificações:
- Adicionar campo
Categoryao modelo de notificação - Categorias:
POST,EVENT,MEMBERSHIP,MARKETPLACE,MODERATION - Permitir filtro por categoria
- Adicionar campo
- Implementar priorização de notificações:
- Adicionar campo
Priorityao modelo - Prioridades:
LOW,NORMAL,HIGH,URGENT - Notificações urgentes sempre enviadas (ignorar preferências temporariamente)
- Adicionar campo
- Atualizar
NotificationDispatchService:- Incluir ações customizadas no payload
- Incluir categoria e prioridade
- Suportar agrupamento
- Testes de integração
Arquivos a Modificar:
backend/Arah.Domain/Notifications/Notification.cs(adicionar Category, Priority)backend/Arah.Application/Services/NotificationDispatchService.csbackend/Arah.Api/Controllers/NotificationsController.csbackend/Arah.Api/Controllers/DevicesController.cs(novo)
Arquivos a Criar:
backend/Arah.Api/Contracts/Notifications/BadgeResponse.csbackend/Arah.Api/Contracts/Notifications/NotificationActionRequest.csbackend/Arah.Api/Contracts/Notifications/GroupedNotificationsResponse.cs
Critérios de Sucesso:
- ✅ Badges atualizados
- ✅ Ações customizadas funcionando
- ✅ Agrupamento de notificações funcionando
- ✅ Categorização funcionando
- ✅ Priorização funcionando
- ✅ Testes passando
📊 Resumo da Fase 30
| Tarefa | Estimativa | Status | Prioridade |
|---|---|---|---|
| Analytics Mobile | 12h | ❌ Pendente | 🔴 Alta |
| Deep Linking Avançado | 16h | ❌ Pendente | 🔴 Alta |
| Background Tasks | 12h | ❌ Pendente | 🔴 Alta |
| Push Notifications | 16h | ❌ Pendente | 🔴 Alta |
| Total | 56h (14 dias) |
✅ Critérios de Sucesso da Fase 30
Funcionalidades
- ✅ Analytics mobile funcionando completamente
- ✅ Deep linking avançado funcionando (iOS e Android)
- ✅ Background tasks otimizados (< 100ms)
- ✅ Push notifications refinados (badges, ações, agrupamento)
Performance
- ✅ Endpoints leves < 100ms de resposta
- ✅ Tamanho de resposta reduzido > 50%
- ✅ Cache headers funcionando corretamente
- ✅ Compressão gzip funcionando
Qualidade
- ✅ Testes unitários: > 80% cobertura
- ✅ Testes de integração: todos passando
- ✅ Testes de performance: dentro dos limites
- ✅ Documentação atualizada
- Considerar Testcontainers + PostgreSQL para testes de integração (analytics mobile, push, deep linking) com banco real (estratégia na Fase 43; TESTCONTAINERS_POSTGRES_IMPACTO).
🔗 Integrações e Dependências
Dependências Externas
- Firebase Dynamic Links (opcional): Para encurtar links
- Apple App Store Connect: Para configurar Universal Links
- Google Play Console: Para configurar App Links
Integrações Internas
- Fase 9: Push tokens (devices), segurança
- Fase 10: Sincronização offline (sync status)
- Sistema de Notificações: Push notifications refinados
- Sistema de Analytics: Analytics mobile
📊 Métricas de Sucesso
Performance
- Tempo de resposta de endpoints leves: < 100ms ✅
- Redução de tamanho de resposta: > 50% ✅
- Taxa de cache hit: > 70% ✅
Funcionalidade
- Taxa de sucesso de deep linking: > 95% ✅
- Taxa de entrega de push notifications: > 98% ✅
- Precisão de badges: 100% ✅
Experiência do Usuário
- Tempo de atualização em background: < 30s ✅
- Taxa de cliques em ações customizadas: > 20% ✅
- Satisfação com notificações: > 4.5/5 ✅
🚀 Próximos Passos (Pós-Fase 30)
-
Analytics Avançado:
- Funnels de conversão
- Segmentação de usuários
- A/B testing
-
Deep Linking Avançado:
- Links temporários com expiração
- Links com autenticação
- Links com metadados complexos
-
Background Tasks:
- Pre-fetch inteligente
- Sync incremental
- Priorização de dados
-
Push Notifications:
- Notificações ricas (imagens, vídeos)
- Notificações interativas
- Notificações agendadas
Status: ⏳ FASE 30 PENDENTE
Depende de: Fase 9, Sistema de Notificações
Crítico para: Experiência Mobile Otimizada