MÓDULO 3.2

🍽️ Comida e treino por foto

Registrar sem digitar macro: a foto da comida vira food_log por visão, o treino vira linha, e tudo isso volta na recuperação de amanhã. Mais pressão e peso.

7
Tópicos
~35
Minutos
Prático
Nível
Uso
Tipo
Seu progresso neste módulo 0% · 0 de 7
1

📸 Foto do café → macros

O jeito de registrar comida no HealthOS não é digitar gramas — é mandar a foto do prato. A visão (modelo Gemini) olha a imagem, estima proteína e os outros macros, levanta flags (ex.: gordura saturada alta) e grava tudo numa linha de food_log. Você só confere a resposta.

🟢 Novo aqui? Dois termos

  • Visão (Gemini) — é o modelo de IA que "enxerga" a foto. Em vez de você descrever, ele lê a imagem e devolve uma estimativa de comida e macros.
  • Macro — "macronutriente": proteína, carboidrato e gordura. São as três contas que o coach acompanha no dia a dia.
📷 Foto do pratovocê manda no chat 🧠 Visão (Gemini)estima macros + flags 🗄️ food_log1 linha gravada 🌙 Recovery amanhão dado volta você não digita grama nenhuma — a foto faz o registro

📊 Como ler: siga a foto da esquerda pra direita. A caixa roxa (a visão) é o passo que faz o trabalho: lê a imagem, estima e marca as flags. O fim da linha mostra que esse dado não morre no registro — ele reaparece na recuperação do dia seguinte (tópico 6).

1

📷 Você fotografa

Tira a foto do prato e manda no Telegram, com uma legenda curta se quiser ajudar ("ovos mexidos e abacate").

2

🧠 A visão estima

O Gemini identifica os itens, estima proteína/gordura/carbo e levanta flags relevantes (ex.: gordura saturada alta).

3

🗄️ Grava e confirma

A linha entra em food_log e o coach confirma em uma frase: "~38g proteína, baixa gordura saturada, registrado".

▶ Copie e use no Telegram

Objetivo: registrar o café da manhã sem digitar nenhum macro.

Você envia

[📷 foto do prato]  +  legenda: <ex.: ovos mexidos e abacate>

O coach responde

~38g proteína, baixa gordura saturada, registrado ✓
Como verificar: mande /today — a refeição aparece na lista de hoje; ou no servidor rode python3 agent/scripts/db.py select food_log --limit 1 e veja a linha gravada. Os números são ilustrativos.

Conceitos-chave

Foto, não grama

Você manda a imagem; a visão faz a conta.

Estimativa

Proteína e macros vêm aproximados, não pesados.

Flags

Avisos como "gordura saturada alta".

Confirmação

Uma frase fecha o registro no chat.

2

🗄️ food_log: o que fica gravado

Cada foto vira uma linha estruturada na tabela food_log. Não é só texto: são campos que o coach soma e cruza depois (intake do dia, tendência, padrão). É por isso que ele "lembra" o que você comeu — está tudo em linhas, não numa conversa que se perde.

🧾 O que costuma entrar na linha

quando — data e hora da refeição.
o que — descrição estimada ("ovos + abacate").
proteína — grama estimada (o macro mais acompanhado).
gordura / carbo — estimativas dos outros macros.
flags — avisos ("gordura saturada alta", "muito sódio").
origem — foto ou texto, p/ o coach saber a confiança.

✓ Ótimo para

  • Tendência: "sua proteína bateu a meta 5 dos últimos 7 dias".
  • Padrão: "toda vez que você janta tarde, o sono cai".
  • Registro sem fricção — a barreira é tirar uma foto.

✗ Não substitui

  • Pesar a comida — a foto é estimativa de visão, não balança.
  • Precisão clínica para dieta médica restrita.
  • Adivinhar o que está escondido no prato (molho, óleo).

💡 Boa para tendência, não para gramatura

As macros da foto são estimativas: ótimas para ver a direção ao longo de semanas, não para fechar uma conta exata de calorias. Se um número importa de verdade (dieta médica, cutting agressivo), pese e corrija a linha — o tópico 5 mostra como.

Conceitos-chave

Linha estruturada

Campos somáveis, não texto solto.

Flags

Avisos que o coach lê depois.

Tendência

O valor está no padrão de semanas.

Estimativa

Visão, não balança.

3

🏋️ Logar o treino

Treino também é uma mensagem. Você descreve em texto livre — tipo, duração e intensidade — e o coach grava uma linha na tabela workouts. Isso fecha o outro lado da conta: o que entra (comida) e o que gasta (treino), os dois ao lado da recuperação.

▶ Copie e use no Telegram

Objetivo: registrar a sessão de hoje como uma linha em workouts.

Você envia

treino: <tipo> <duração> intensidade <baixa|média|alta>
ex.: treino: push 45min intensidade alta

O coach responde

Push 45min, intensidade alta — registrado. Põe carbo perto da sessão. ✓
Como verificar: mande /today e veja o treino na lista; ou no servidor python3 agent/scripts/db.py select workouts --limit 1.
Tipo — push, pull, pernas, corrida, mobilidade… o rótulo que você usa.
Duração — quanto tempo durou (ex.: 45min). Entra como minutos na linha.
Intensidade — baixa / média / alta. É o que o coach cruza com a recuperação de amanhã.

💡 Texto livre, não formulário

Você não precisa decorar um formato. "Fiz uma corrida leve de meia hora" funciona igual — o agente extrai tipo, duração e intensidade da frase. O exemplo estruturado acima é só o caminho mais rápido.

Conceitos-chave

workouts

A tabela onde o treino vira linha.

3 campos

Tipo, duração, intensidade.

Texto livre

Descreva à vontade; o agente extrai.

Cruza com recovery

Carga de hoje pesa no amanhã.

4

🎬 Clipe demo do exercício (opcional)

Esse é um extra. O script exercise_clip.py usa ffmpeg para montar um clipe curto demonstrando um exercício — útil quando você não lembra a execução de um movimento. Não é parte do registro; é uma ajuda visual sob demanda.

🟢 Novo aqui?

ffmpeg — é uma ferramenta de linha de comando para processar vídeo e áudio. No HealthOS ela só aparece aqui, para gerar o clipe do exercício; o resto do coach não depende dela.

▶ Copie e rode no servidor

Objetivo: gerar um clipe demo de um exercício (precisa de ffmpeg instalado).

Comando

python3 agent/scripts/exercise_clip.py "<nome do exercício>"
ex.: python3 agent/scripts/exercise_clip.py "agachamento búlgaro"
Como verificar: o script termina e escreve um arquivo de vídeo curto; no checklist de build, o item "Workout demo clip generation works (exercise_clip.py)" passa quando o clipe é gerado sem erro.

🧭 Pode pular sem perder nada

Se você não instalou ffmpeg ou não usa clipes, o HealthOS continua 100% funcional — comida, treino, recovery e pressão não dependem deste passo. É conveniência, não fundação.

Conceitos-chave

exercise_clip.py

Gera o clipe demo do movimento.

ffmpeg

A ferramenta de vídeo por trás.

Opcional

O coach roda sem isso.

Sob demanda

Você gera quando precisa.

5

✏️ Corrigir o que a IA errou

A visão chuta — e o coach avisa quando está chutando. Isso é de propósito: o registro fica honesto e você fica no comando. Quando a estimativa estiver errada, você corrige em uma mensagem e a linha é atualizada. Você é a verificação humana.

✓ Vale corrigir quando

  • A visão errou a quantidade ("eram 2 ovos, não 3").
  • Faltou um item escondido (o azeite, o molho).
  • O coach disse explicitamente que estava incerto.

✗ Não precisa pirar quando

  • A estimativa está perto — é trend, não balança.
  • Você só quer a direção da semana, não o grama exato.
  • Buscar precisão clínica numa foto — para isso, pese.

▶ Copie e use no Telegram

Objetivo: corrigir uma estimativa que ficou errada.

Você envia

na verdade era <correção>
ex.: na verdade eram 2 ovos, não 3, e tinha azeite

O coach responde

Corrigido: ~30g proteína, gordura um pouco maior. Linha atualizada. ✓
Como verificar: mande /today de novo — a refeição aparece com os números corrigidos no lugar dos antigos.

⚠️ A IA pode estar confiante e errada

O coach é um modelo de IA: pode chutar com convicção. Trate a estimativa como ponto de partida, não verdade. Para qualquer coisa que importe de verdade na sua saúde, confira com um profissional — isto não é conselho médico.

Conceitos-chave

Avisa quando chuta

O coach sinaliza a incerteza.

Você corrige

Uma mensagem atualiza a linha.

Verificação humana

Você é o controle de qualidade.

Pode alucinar

Confiante não é correto.

6

🔁 Ontem no recovery de amanhã

Aqui o loop fecha. O jantar tarde, a taça de vinho, o treino pesado — tudo isso entra como linha hoje, e reaparece amanhã de manhã dentro da recuperação. O coach não só mostra o número: ele aponta a causa provável, usando o que você registrou. É por isso que registrar vale a pena.

🍽️ Comida + treinovira linha hoje 😴 Recuperação mudamanhã seguinte 🎯 Coach ajustaconselho do dia o ajuste de hoje muda o que você come amanhã — e o loop recomeça

📊 Como ler: as três caixas são uma volta. O que você registra (roxo) muda a recuperação (vermelho), que muda o conselho (ciano) — e a linha tracejada fecha o ciclo de volta na comida. É o mesmo loop do Módulo 1.1, agora visto do lado de quem registra.

19:00 (hoje) "Bife e uma taça de vinho" → registrado; o coach já nota que o álcool pode pesar na recuperação da noite.
07:00 (amanhã) "Recovery caiu para 48% (âmbar) — o vinho e o jantar tarde são a causa provável. Pega leve hoje, aposta em proteína, fibra e hidratação."
O elo A recuperação não "acusa" sozinha — ela explica a si mesma cruzando com o que você registrou ontem. Números ilustrativos.

💡 Registrar é o que dá causa ao número

Sem o registro de ontem, o recovery de amanhã seria só um número solto. Com ele, vira explicação: "foi o vinho", "foi o jantar tarde". Quanto mais você registra, mais o coach aprende os seus próprios botões.

Conceitos-chave

Loop fecha

A escolha de hoje vira o número de amanhã.

Causa provável

O coach aponta o porquê, não só o quê.

Registro = causa

Sem dado, o número fica órfão.

Seus botões

Você aprende o que mexe em você.

7

🩺 Pressão e peso

Os dois registros mais rápidos do dia: a pressão (BP) e o peso da manhã (weigh-in). Cada um é uma mensagem. A pressão entra na tabela vitals; o peso, em weigh_ins. Junto com a comida, eles deixam o coach ligar sal e pressão, ou jantar e peso.

🟢 Novo aqui?

  • BP — "blood pressure", pressão arterial. Vem em dois números: sistólica/diastólica (ex.: 120/80).
  • weigh-in — a pesagem, de preferência na mesma hora todo dia (de manhã, em jejum) para a tendência ser comparável.

▶ Copie e use no Telegram

Objetivo: registrar a pressão e o peso da manhã.

Você envia

pressão <sistólica>/<diastólica>
peso <kg>
ex.: pressão 124/79   ·   peso 78.4

O coach responde

BP 124/79 registrada (vitals). Peso 78,4kg registrado (weigh_ins). ✓
Como verificar: no checklist de build, "A BP reading writes a vitals row" e "A weight message writes a weigh_ins row"; ou python3 agent/scripts/db.py select vitals --limit 1.

🧂 O exemplo do autor: sal × pressão

No caso do autor, registrar comida e pressão juntos revelou um padrão: depois de refeições mais salgadas, a pressão dele subia cerca de 10-15%. Esse tipo de elo só aparece porque os dois dados moram no mesmo banco. É a experiência de uma pessoa, número ilustrativo — não vale como alvo para você.

⚠️ Não é conselho médico

Pressão é dado clínico sério. O coach não diagnostica nem mexe em medicação — ele registra e aponta padrões para você levar ao médico. Qualquer leitura fora do normal é assunto de um profissional de saúde, não do bot.

Conceitos-chave

vitals

A tabela da pressão (BP).

weigh_ins

A tabela do peso da manhã.

Sal × pressão

Padrão que só aparece cruzando dados.

Não diagnostica

Registra; o médico decide.

✅ Auto-checagem (opcional): por que as macros da foto são "boas para tendência, não para gramatura"?

📋 Resumo do módulo

Foto vira food_log — a visão (Gemini) estima macros e flags; você não digita grama.
Estimativa, não balança — ótima para tendência; pese quando o número importa de verdade.
Treino é uma linha — tipo, duração e intensidade em texto livre; o clipe demo é opcional.
Você é a verificação — o coach avisa quando chuta; você corrige numa mensagem.
O loop fecha — comida, treino, BP e peso de hoje voltam na recuperação de amanhã.

Próximo módulo:

3.3 — Memória, padrões e suplementos: como o coach lembra do histórico, enxerga padrões ao longo de semanas e organiza a agenda de suplementos.