MarvinRoque commited on
Commit
fcf3f37
·
1 Parent(s): ffe8385
Files changed (2) hide show
  1. app.py +2 -2
  2. nutrition.py +58 -5
app.py CHANGED
@@ -7,7 +7,7 @@ import unicodedata
7
  import json
8
  import re
9
  import random
10
- from nutrition import UserProfile, build_basic_plan, gerar_plano_diario
11
 
12
  # Carregar o JSON
13
  with open("exercicios.json", "r", encoding="utf-8") as f:
@@ -1130,7 +1130,7 @@ def responder(prompt: str):
1130
  intensidade="moderada",
1131
  alergias=dados_usuario.get("alergias", []),
1132
  )
1133
- resposta_final["nutricao"] = {"resumo": resumo, "plano": plano}
1134
 
1135
  # 🚀 RECUPERAÇÃO
1136
  if any(c["tipo"] == "recuperacao" and c.get("score", 0) >= 0.5 for c in conceitos):
 
7
  import json
8
  import re
9
  import random
10
+ from nutrition import UserProfile, build_basic_plan, gerar_plano_diario, formatar_plano_nutricional
11
 
12
  # Carregar o JSON
13
  with open("exercicios.json", "r", encoding="utf-8") as f:
 
1130
  intensidade="moderada",
1131
  alergias=dados_usuario.get("alergias", []),
1132
  )
1133
+ resposta_final["nutricao"] = formatar_plano_nutricional(resumo, plano)
1134
 
1135
  # 🚀 RECUPERAÇÃO
1136
  if any(c["tipo"] == "recuperacao" and c.get("score", 0) >= 0.5 for c in conceitos):
nutrition.py CHANGED
@@ -335,9 +335,6 @@ def sugerir_alimentos_para_refeicao(nome_refeicao, macros_ref, restricoes=None,
335
  carb_restante -= macros_add["carboidrato"]
336
  gord_restante -= macros_add["gordura"]
337
 
338
- print(f"[DEBUG] Adicionado carboidrato: {carb['nome']} ({qtd_g:.1f}g) | "
339
- f"Calorias restantes: {calorias_restantes:.1f}")
340
-
341
  # Gordura
342
  gordura_opcoes = [
343
  a for a in alimentos_db
@@ -365,8 +362,6 @@ def sugerir_alimentos_para_refeicao(nome_refeicao, macros_ref, restricoes=None,
365
  carb_restante -= macros_add["carboidrato"]
366
  gord_restante -= macros_add["gordura"]
367
 
368
- print(f"[DEBUG] Adicionada gordura: {gord['nome']} ({qtd_g:.1f}g) | "
369
- f"Calorias restantes: {calorias_restantes:.1f}")
370
  else:
371
  break
372
 
@@ -424,3 +419,61 @@ def gerar_plano_diario(plano: PlanoNutricional, n_refeicoes: Optional[int] = Non
424
  plano_diario[ref] = sugestao
425
 
426
  return plano_diario
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
335
  carb_restante -= macros_add["carboidrato"]
336
  gord_restante -= macros_add["gordura"]
337
 
 
 
 
338
  # Gordura
339
  gordura_opcoes = [
340
  a for a in alimentos_db
 
362
  carb_restante -= macros_add["carboidrato"]
363
  gord_restante -= macros_add["gordura"]
364
 
 
 
365
  else:
366
  break
367
 
 
419
  plano_diario[ref] = sugestao
420
 
421
  return plano_diario
422
+
423
+ def formatar_plano_nutricional(nutricao: dict, formato: str = "markdown") -> str:
424
+ """
425
+ Formata o plano nutricional (dict) para texto humano legível em Markdown ou HTML.
426
+
427
+ Args:
428
+ nutricao: dicionário com chaves 'resumo' e 'plano'
429
+ formato: 'markdown' (default) ou 'html'
430
+
431
+ Returns:
432
+ str: texto formatado pronto para exibição
433
+ """
434
+ resumo = nutricao.get("resumo", "").strip()
435
+ plano = nutricao.get("plano", {})
436
+
437
+ linhas = [resumo, ""] # começa com o resumo
438
+
439
+ # Ícones por refeição
440
+ icones_refeicao = {
441
+ "matabicho": "🍳",
442
+ "lanche1": "🥪",
443
+ "almoco": "🍽️",
444
+ "lanche2": "🍎",
445
+ "lanche3": "🥛",
446
+ "jantar": "🌙",
447
+ }
448
+
449
+ for refeicao, alimentos in plano.items():
450
+ icone = icones_refeicao.get(refeicao, "🍴")
451
+ nome_fmt = refeicao.capitalize()
452
+
453
+ linhas.append(f"### {icone} {nome_fmt}")
454
+
455
+ for item in alimentos:
456
+ nome = item["alimento"]
457
+ qtd = round(item["quantidade_g"])
458
+ macros = item["macros"]
459
+
460
+ cal = round(macros["calorias"])
461
+ p = round(macros["proteina"], 1)
462
+ c = round(macros["carboidrato"], 1)
463
+ g = round(macros["gordura"], 1)
464
+
465
+ linhas.append(
466
+ f"- **{nome}** – {qtd}g "
467
+ f"({cal} kcal, P: {p}g, C: {c}g, G: {g}g)"
468
+ )
469
+
470
+ linhas.append("") # quebra entre refeições
471
+
472
+ texto = "\n".join(linhas).strip()
473
+
474
+ # Conversão opcional para HTML
475
+ if formato == "html":
476
+ import markdown
477
+ texto = markdown.markdown(texto)
478
+
479
+ return texto