feat(components): ActionButton stopAlert + typography type fixes
This commit is contained in:
1 parent
2c51fd2623
commit
bbe2919c2c
89 files changed
+75993
-9961
No files matched your search
+69
@@ -0,0 +1,69 @@
|
||||
# FightRate — monitoramento contínuo, histórico customizado e indicadores BPM
|
||||
|
||||
## Objetivo
|
||||
Corrigir o fluxo para que o FightRate se comporte como um monitor contínuo de sensor cardíaco, e não como um app dependente da janela de treino. A janela de treino deve apenas destacar um intervalo dentro do fluxo contínuo. Também adicionar consulta histórica customizada por data/hora/minuto, estabilizar a UI do histórico e documentar indicadores úteis derivados de BPM.
|
||||
|
||||
## Problemas relatados
|
||||
1. BPM em tempo real só aparece depois de abrir e fechar uma janela de treino.
|
||||
2. Histórico precisa consultar intervalo preciso por dia, hora e minuto, inclusive múltiplos dias.
|
||||
3. Histórico tem divisores redundantes entre controles, janelas salvas e registros.
|
||||
4. Em “Uso Total”, o item expandido colapsa quando entra novo dado em tempo real.
|
||||
5. É necessário mapear indicadores técnicos/científicos extraíveis de BPM para evolução futura.
|
||||
|
||||
## Critérios de sucesso
|
||||
- Ao abrir o app, se o monitor estava ativo ou há sensor salvo, o app retoma o monitoramento contínuo automaticamente.
|
||||
- Após conectar ao sensor peitoral, os dados começam a atualizar o app inteiro sem depender de janela de treino.
|
||||
- Abrir/fechar janela de treino não interrompe nem inicia artificialmente o stream contínuo; só marca um intervalo para histórico.
|
||||
- Histórico permite modo “Faixa” com início/fim definidos por dia, hora e minuto.
|
||||
- Faixa customizada funciona no mesmo dia e entre dias diferentes.
|
||||
- Uso Total mantém o item expandido mesmo quando novas amostras chegam em segundo plano.
|
||||
- Divisores do histórico ficam lineares: uma linha sutil por seção/registro, sem duplicação visual.
|
||||
- Pesquisa de indicadores BPM gera relatório com fórmulas, dados necessários, limites e recomendações.
|
||||
- Sem dados fake; gráficos e métricas continuam derivados de amostras reais.
|
||||
|
||||
## Arquitetura proposta
|
||||
### Monitoramento contínuo
|
||||
- Manter BLE e background capture no serviço nativo Android.
|
||||
- No hook RN, diferenciar claramente:
|
||||
- `isMonitoring`: stream contínuo ativo.
|
||||
- `isCapturing`: janela de treino ativa.
|
||||
- `samples`: amostras contínuas em memória recente.
|
||||
- Na inicialização do hook, depois de `getCaptureSnapshot`, se o snapshot indicar monitor ativo/sensor salvo, retomar/confirmar `startMonitoring` sem abrir janela.
|
||||
|
||||
### Histórico customizado
|
||||
- Criar lógica pura para filtrar amostras por intervalo `[start, end]`.
|
||||
- Usar a mesma fonte de verdade (`continuous_heart_rate_samples`) para “Uso Total” e faixa customizada.
|
||||
- Representar a seleção com componentes simples sem dependência nova: campos de data e hora/minuto via `TextInput`, com validação e presets.
|
||||
|
||||
### Estabilidade do Uso Total
|
||||
- Não usar ID derivado de `startedAt-endedAt-count` como única identidade quando blocos vivos mudam com novas amostras.
|
||||
- Manter expansão por `startedAt` do bloco e re-resolver o bloco depois de cada atualização.
|
||||
|
||||
### Indicadores BPM
|
||||
- Produzir documento separado com métricas implementáveis depois:
|
||||
- FC média/mínima/máxima;
|
||||
- zonas de intensidade;
|
||||
- tempo em zona;
|
||||
- carga interna/TRIMP;
|
||||
- recuperação pós-esforço;
|
||||
- deriva cardiovascular;
|
||||
- variabilidade de FC quando houver RR intervals;
|
||||
- alertas de limiar e anomalias.
|
||||
|
||||
## Fora de escopo
|
||||
- Trocar BLE stack.
|
||||
- Adicionar dependências nativas de calendário/data.
|
||||
- Alterar design aprovado fora dos pontos pedidos.
|
||||
- Criar diagnóstico médico automatizado sem validação clínica.
|
||||
|
||||
## Testes esperados
|
||||
- Testes unitários para agrupamento de uso contínuo estável.
|
||||
- Testes unitários para filtro de intervalo customizado.
|
||||
- Testes existentes continuam passando.
|
||||
|
||||
## Verificação
|
||||
- `npm run typecheck`
|
||||
- `npm run lint`
|
||||
- `npm test -- --runInBand`
|
||||
- `npm audit --audit-level=moderate`
|
||||
- `./gradlew assembleRelease -PreactNativeArchitectures=arm64-v8a`
|
||||
Reference in new issue
Block a user