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
@@ -0,0 +1,81 @@
|
||||
# FightRate Insights Científicos — Mini-spec
|
||||
|
||||
## Objetivo
|
||||
|
||||
Implementar uma nova visualização de cálculos e insights na aba `Insights`, usando métricas derivadas do relatório científico `docs/research/bpm-indicators-fightrate-2026-06-10.md`, sem inventar dados e sem abandonar o design Corner Instrument.
|
||||
|
||||
## Escopo
|
||||
|
||||
### Incluir agora
|
||||
|
||||
- Grade/tabela compacta de métricas com melhor aproveitamento vertical.
|
||||
- Cálculos com dados reais já disponíveis:
|
||||
- FC atual, média, mínima e máxima;
|
||||
- duração observada e contagem de amostras;
|
||||
- amplitude de BPM;
|
||||
- desvio padrão de BPM;
|
||||
- coeficiente de variação de BPM;
|
||||
- classificação operacional de estabilidade/oscilação;
|
||||
- tempo em zonas já calculadas;
|
||||
- carga observada existente;
|
||||
- tendência de deriva de FC quando a janela for longa o suficiente;
|
||||
- recuperação pós-janela quando houver amostras contínuas após o fim da sessão;
|
||||
- status de HRV/VFC baseado na presença de `rrIntervalsMs`.
|
||||
- Estados honestos para métricas que exigem perfil ou RR intervals.
|
||||
|
||||
### Não incluir agora
|
||||
|
||||
- Cadastro de perfil do atleta.
|
||||
- Diagnóstico médico.
|
||||
- LF/HF, frequência espectral, SampEn ou DFA reais sem pipeline de RR validado.
|
||||
- Mudanças amplas de design fora de `Insights`.
|
||||
- Novas dependências.
|
||||
|
||||
## Arquitetura
|
||||
|
||||
- Reutilizar `src/training/trainingMetrics.ts` para cálculos puros.
|
||||
- Estender `src/training/trainingTypes.ts` com tipos de resumo de insights.
|
||||
- Atualizar `src/screens/InsightsScreen.tsx` para renderizar uma tabela/grade de instrumentos, não lista simples.
|
||||
- Atualizar `src/app/FightRateApp.tsx` para passar `getContinuousSamples` ao Insights, permitindo cálculo de recuperação pós-janela com dados persistidos.
|
||||
- Testar cálculos puros em `__tests__/trainingMetrics.test.ts`.
|
||||
|
||||
## Critérios de sucesso
|
||||
|
||||
- Insights usa somente amostras reais ou mostra estado indisponível.
|
||||
- Visual evita cards genéricos; usa trilhos, linhas tabulares, separadores e linguagem Corner Instrument.
|
||||
- Métricas BPM-only aparecem com valor/unidade/status/leitura curta.
|
||||
- HRV/VFC aparece como disponível somente quando existirem RR intervals; caso contrário, informa que requer RR.
|
||||
- Recuperação pós-janela só aparece quando há amostras depois de `endedAt`.
|
||||
- Typecheck, lint e testes passam.
|
||||
- Build release Android é gerado e enviado ao Telegram ao final.
|
||||
|
||||
## Reuso vs criação
|
||||
|
||||
### Reutilizar
|
||||
|
||||
- `calculateLiveMetrics`, `calculateZones`, `formatDuration` em `trainingMetrics.ts`.
|
||||
- `HeartRateSample`, `CompletedTrainingSession` em `trainingTypes.ts`.
|
||||
- Tokens existentes em `src/theme`.
|
||||
- Fluxo nativo `getContinuousSamples` já exposto pelo hook.
|
||||
|
||||
### Criar/alterar
|
||||
|
||||
- Criar funções puras em `trainingMetrics.ts`:
|
||||
- `buildInsightDashboard()`;
|
||||
- `calculateBpmVariability()`;
|
||||
- `calculateHeartRateDrift()`;
|
||||
- `calculatePostSessionRecovery()`;
|
||||
- `summarizeRrAvailability()`.
|
||||
- Criar tipos em `trainingTypes.ts`:
|
||||
- `InsightMetricStatus`;
|
||||
- `InsightMetricRow`;
|
||||
- `InsightDashboard`.
|
||||
- Reescrever o layout interno de `InsightsScreen.tsx` para matriz tabular.
|
||||
|
||||
## Plano de execução
|
||||
|
||||
1. Escrever testes para cálculos puros.
|
||||
2. Implementar funções puras em `trainingMetrics.ts`.
|
||||
3. Passar `getContinuousSamples` para `InsightsScreen` e carregar amostras persistidas de forma segura.
|
||||
4. Recriar UI da aba Insights com tabela compacta e blocos de instrumentos.
|
||||
5. Rodar validação completa.
|
||||
Reference in new issue
Block a user