2.8 KiB
2.8 KiB
FightRate — Sensor contínuo e histórico geral
Objetivo
Separar claramente três conceitos:
- Sensor: descobrir, mostrar disponibilidade e permitir conexão ao sensor BLE.
- Monitoramento contínuo: depois de conectado, receber, mostrar e salvar BPM real o tempo todo no app.
- Janela de treino: ação disponível somente em Captura; marca um intervalo dentro do fluxo contínuo para destaque no histórico.
Critérios de sucesso
- A tela Sensor não mostra botão de abrir/iniciar janela de treino.
- A tela Sensor mostra se o sensor está disponível/conectado e permite conectar/desconectar/monitorar pelo fluxo de sensor.
- Conectar o sensor inicia o recebimento contínuo via serviço nativo e os dados alimentam Captura, Sensor, Histórico e Insights.
- A janela de treino continua existindo apenas na tela Captura e não interrompe o monitoramento ao fechar.
- Histórico mantém a lista de janelas de treino e adiciona uma visão de uso total baseada em
continuous_heart_rate_samples. - O histórico geral não usa dados falsos: se não houver amostras contínuas, mostra estado vazio honesto.
- BLE services/characteristics ficam mais legíveis, com hierarquia compacta e sem espaçamento excessivo.
- Código visível ao usuário em PT-BR; identificadores em inglês.
Arquitetura recomendada
- Reusar
FightRateCaptureStorecomo fonte local-first. - Reusar
continuous_heart_rate_samplescomo verdade para histórico geral. - Criar uma pequena camada de domínio TS para agrupar amostras contínuas em blocos de uso por lacunas de tempo. Essa lógica é pura e testável.
- Expor do módulo nativo um método de leitura paginada/resumida das amostras contínuas, sem mudar o contrato BLE.
- Manter
workout_sessionsapenas para janelas destacadas.
Responsabilidades
Reusar
useHeartRateMonitor: estado app-wide recebido do módulo nativo.TrainingChart: gráfico real e interativo com amostras timestampadas.FightRateCaptureStore: persistência SQLite local.HistoryScreen: entrada natural para alternar entre janelas e uso total.
Criar/alterar
src/training/continuousUsage.ts: agrupar amostras contínuas em blocos de uso e sumarizar BPM/duração.- Teste Jest para
continuousUsage. - API nativa
getContinuousSamples(limit?). - Wrapper TS para
getContinuousSamples. - UI de Histórico com seção/alternância para “Janelas” e “Uso total”.
- UI de Sensor sem ação de treino e com diagnóstico BLE mais claro.
Fora de escopo
- Não trocar biblioteca BLE.
- Não adicionar dependências.
- Não mudar o design aprovado fora dos pontos pedidos.
- Não criar dados demo/fake.
- Não mexer no app Android legado.
Verificação
npm run typechecknpm run lintnpm test -- --runInBandnpm audit --audit-level=moderate./gradlew assembleRelease -PreactNativeArchitectures=arm64-v8a