MarvinRoque commited on
Commit
a7387c2
·
1 Parent(s): 78bb3eb
Files changed (2) hide show
  1. alimentos.json +15 -15
  2. nutrition.py +4 -24
alimentos.json CHANGED
@@ -447,7 +447,7 @@
447
  "categoria": "laticinio",
448
  "porcao": 100,
449
  "macros": { "calorias": 61, "proteina": 3.2, "carboidrato": 4.8, "gordura": 3.3, "fibra": 0.0 },
450
- "alergias": ["lactose", "proteína do leite"],
451
  "refeicao": ["matabicho", "lanche1","lanche2"]
452
  },
453
  {
@@ -455,7 +455,7 @@
455
  "categoria": "laticínio",
456
  "porcao": 100,
457
  "macros": { "calorias": 145, "proteina": 12.0, "carboidrato": 5.4, "gordura": 8.3, "fibra": 0.0 },
458
- "alergias": ["lactose", "laticínio"],
459
  "refeicao": ["pequeno-almoço", "lanche", "jantar"]
460
  },
461
  {
@@ -463,7 +463,7 @@
463
  "categoria": "laticinio",
464
  "porcao": 100,
465
  "macros": { "calorias": 42, "proteina": 3.4, "carboidrato": 5.0, "gordura": 0.1, "fibra": 0.0 },
466
- "alergias": ["lactose", "proteína do leite"],
467
  "refeicao": ["matabicho", "lanche1","lanche2"]
468
  },
469
  {
@@ -471,7 +471,7 @@
471
  "categoria": "laticinio",
472
  "porcao": 100,
473
  "macros": { "calorias": 61, "proteina": 3.5, "carboidrato": 4.7, "gordura": 3.3, "fibra": 0.0 },
474
- "alergias": ["lactose", "proteína do leite"],
475
  "refeicao": ["matabicho", "lanche1","lanche2"]
476
  },
477
  {
@@ -479,7 +479,7 @@
479
  "categoria": "laticinio",
480
  "porcao": 100,
481
  "macros": { "calorias": 44, "proteina": 4.5, "carboidrato": 6.0, "gordura": 0.2, "fibra": 0.0 },
482
- "alergias": ["lactose", "proteína do leite"],
483
  "refeicao": ["matabicho", "lanche1","lanche2"]
484
  },
485
  {
@@ -607,7 +607,7 @@
607
  "categoria": "batido",
608
  "porcao": 400,
609
  "macros": { "calorias": 425, "proteina": 35.0, "carboidrato": 56.0, "gordura": 7.0, "fibra": 4.0 },
610
- "alergias": ["lactose", "proteína do leite", "glúten"],
611
  "refeicao": ["lanche1","lanche2", "matabicho"]
612
  },
613
  {
@@ -615,7 +615,7 @@
615
  "categoria": "batido",
616
  "porcao": 400,
617
  "macros": { "calorias": 320, "proteina": 31.0, "carboidrato": 39.0, "gordura": 5.0, "fibra": 2.0 },
618
- "alergias": ["lactose", "proteína do leite"],
619
  "refeicao": ["lanche1","lanche2", "matabicho"]
620
  },
621
  {
@@ -623,7 +623,7 @@
623
  "categoria": "batido",
624
  "porcao": 450,
625
  "macros": { "calorias": 310, "proteina": 31.0, "carboidrato": 36.0, "gordura": 5.0, "fibra": 5.0 },
626
- "alergias": ["lactose", "proteína do leite"],
627
  "refeicao": ["lanche1","lanche2", "matabicho"]
628
  },
629
  {
@@ -631,7 +631,7 @@
631
  "categoria": "batido",
632
  "porcao": 350,
633
  "macros": { "calorias": 305, "proteina": 11.0, "carboidrato": 53.0, "gordura": 5.0, "fibra": 3.0 },
634
- "alergias": ["lactose", "glúten"],
635
  "refeicao": ["lanche1","lanche2", "matabicho"]
636
  },
637
  {
@@ -639,7 +639,7 @@
639
  "categoria": "batido",
640
  "porcao": 350,
641
  "macros": { "calorias": 260, "proteina": 8.0, "carboidrato": 42.0, "gordura": 4.0, "fibra": 2.5 },
642
- "alergias": ["lactose"],
643
  "refeicao": ["lanche1","lanche2", "matabicho"]
644
  },
645
  {
@@ -647,7 +647,7 @@
647
  "categoria": "batido",
648
  "porcao": 350,
649
  "macros": { "calorias": 265, "proteina": 11.0, "carboidrato": 52.0, "gordura": 5.0, "fibra": 5.0 },
650
- "alergias": ["glúten", "lactose"],
651
  "refeicao": ["lanche1","lanche2", "matabicho"]
652
  },
653
  {
@@ -655,7 +655,7 @@
655
  "categoria": "batido",
656
  "porcao": 350,
657
  "macros": { "calorias": 250, "proteina": 11.0, "carboidrato": 42.0, "gordura": 4.0, "fibra": 3.0 },
658
- "alergias": ["lactose", "glúten"],
659
  "refeicao": ["lanche1","lanche2", "matabicho"]
660
  },
661
  {
@@ -663,7 +663,7 @@
663
  "categoria": "sandes",
664
  "porcao": 140,
665
  "macros": { "calorias": 280, "proteina": 13.0, "carboidrato": 40.0, "gordura": 8.0, "fibra": 3.0 },
666
- "alergias": ["glúten", "lactose", "proteína do leite"],
667
  "refeicao": ["matabicho", "lanche1","lanche2"]
668
  },
669
  {
@@ -695,7 +695,7 @@
695
  "categoria": "sandes",
696
  "porcao": 130,
697
  "macros": { "calorias": 300, "proteina": 15.0, "carboidrato": 34.0, "gordura": 10.0, "fibra": 2.5 },
698
- "alergias": ["glúten", "lactose", "proteína do leite", "ovo"],
699
  "refeicao": ["matabicho", "lanche1","lanche2"]
700
  },
701
  {
@@ -759,7 +759,7 @@
759
  "categoria": "sandes",
760
  "porcao": 150,
761
  "macros": { "calorias": 260, "proteina": 11.0, "carboidrato": 44.0, "gordura": 3.5, "fibra": 2.5 },
762
- "alergias": ["glúten", "lactose", "proteína do leite"],
763
  "refeicao": ["matabicho","lanche1","lanche2"]
764
  }
765
 
 
447
  "categoria": "laticinio",
448
  "porcao": 100,
449
  "macros": { "calorias": 61, "proteina": 3.2, "carboidrato": 4.8, "gordura": 3.3, "fibra": 0.0 },
450
+ "alergias": ["leite", "proteína do leite"],
451
  "refeicao": ["matabicho", "lanche1","lanche2"]
452
  },
453
  {
 
455
  "categoria": "laticínio",
456
  "porcao": 100,
457
  "macros": { "calorias": 145, "proteina": 12.0, "carboidrato": 5.4, "gordura": 8.3, "fibra": 0.0 },
458
+ "alergias": ["leite", "laticínio"],
459
  "refeicao": ["pequeno-almoço", "lanche", "jantar"]
460
  },
461
  {
 
463
  "categoria": "laticinio",
464
  "porcao": 100,
465
  "macros": { "calorias": 42, "proteina": 3.4, "carboidrato": 5.0, "gordura": 0.1, "fibra": 0.0 },
466
+ "alergias": ["leite", "proteína do leite"],
467
  "refeicao": ["matabicho", "lanche1","lanche2"]
468
  },
469
  {
 
471
  "categoria": "laticinio",
472
  "porcao": 100,
473
  "macros": { "calorias": 61, "proteina": 3.5, "carboidrato": 4.7, "gordura": 3.3, "fibra": 0.0 },
474
+ "alergias": ["leite", "proteína do leite"],
475
  "refeicao": ["matabicho", "lanche1","lanche2"]
476
  },
477
  {
 
479
  "categoria": "laticinio",
480
  "porcao": 100,
481
  "macros": { "calorias": 44, "proteina": 4.5, "carboidrato": 6.0, "gordura": 0.2, "fibra": 0.0 },
482
+ "alergias": ["leite", "proteína do leite"],
483
  "refeicao": ["matabicho", "lanche1","lanche2"]
484
  },
485
  {
 
607
  "categoria": "batido",
608
  "porcao": 400,
609
  "macros": { "calorias": 425, "proteina": 35.0, "carboidrato": 56.0, "gordura": 7.0, "fibra": 4.0 },
610
+ "alergias": ["leite", "proteína do leite", "glúten"],
611
  "refeicao": ["lanche1","lanche2", "matabicho"]
612
  },
613
  {
 
615
  "categoria": "batido",
616
  "porcao": 400,
617
  "macros": { "calorias": 320, "proteina": 31.0, "carboidrato": 39.0, "gordura": 5.0, "fibra": 2.0 },
618
+ "alergias": ["leite", "proteína do leite"],
619
  "refeicao": ["lanche1","lanche2", "matabicho"]
620
  },
621
  {
 
623
  "categoria": "batido",
624
  "porcao": 450,
625
  "macros": { "calorias": 310, "proteina": 31.0, "carboidrato": 36.0, "gordura": 5.0, "fibra": 5.0 },
626
+ "alergias": ["leite", "proteína do leite"],
627
  "refeicao": ["lanche1","lanche2", "matabicho"]
628
  },
629
  {
 
631
  "categoria": "batido",
632
  "porcao": 350,
633
  "macros": { "calorias": 305, "proteina": 11.0, "carboidrato": 53.0, "gordura": 5.0, "fibra": 3.0 },
634
+ "alergias": ["leite", "glúten"],
635
  "refeicao": ["lanche1","lanche2", "matabicho"]
636
  },
637
  {
 
639
  "categoria": "batido",
640
  "porcao": 350,
641
  "macros": { "calorias": 260, "proteina": 8.0, "carboidrato": 42.0, "gordura": 4.0, "fibra": 2.5 },
642
+ "alergias": ["leite"],
643
  "refeicao": ["lanche1","lanche2", "matabicho"]
644
  },
645
  {
 
647
  "categoria": "batido",
648
  "porcao": 350,
649
  "macros": { "calorias": 265, "proteina": 11.0, "carboidrato": 52.0, "gordura": 5.0, "fibra": 5.0 },
650
+ "alergias": ["glúten", "leite"],
651
  "refeicao": ["lanche1","lanche2", "matabicho"]
652
  },
653
  {
 
655
  "categoria": "batido",
656
  "porcao": 350,
657
  "macros": { "calorias": 250, "proteina": 11.0, "carboidrato": 42.0, "gordura": 4.0, "fibra": 3.0 },
658
+ "alergias": ["leite", "glúten"],
659
  "refeicao": ["lanche1","lanche2", "matabicho"]
660
  },
661
  {
 
663
  "categoria": "sandes",
664
  "porcao": 140,
665
  "macros": { "calorias": 280, "proteina": 13.0, "carboidrato": 40.0, "gordura": 8.0, "fibra": 3.0 },
666
+ "alergias": ["glúten", "leite", "proteína do leite"],
667
  "refeicao": ["matabicho", "lanche1","lanche2"]
668
  },
669
  {
 
695
  "categoria": "sandes",
696
  "porcao": 130,
697
  "macros": { "calorias": 300, "proteina": 15.0, "carboidrato": 34.0, "gordura": 10.0, "fibra": 2.5 },
698
+ "alergias": ["glúten", "leite", "proteína do leite", "ovo"],
699
  "refeicao": ["matabicho", "lanche1","lanche2"]
700
  },
701
  {
 
759
  "categoria": "sandes",
760
  "porcao": 150,
761
  "macros": { "calorias": 260, "proteina": 11.0, "carboidrato": 44.0, "gordura": 3.5, "fibra": 2.5 },
762
+ "alergias": ["glúten", "leite", "proteína do leite"],
763
  "refeicao": ["matabicho","lanche1","lanche2"]
764
  }
765
 
nutrition.py CHANGED
@@ -258,11 +258,6 @@ def sugerir_alimentos_para_refeicao(nome_refeicao, macros_ref, restricoes=None,
258
  carb_restante = macros_ref["carboidrato"]
259
  gord_restante = macros_ref["gordura"]
260
 
261
- print(f"\n=== [DEBUG] Início da função para refeição: {nome_refeicao.upper()} ===")
262
- print(f"Alvos: {macros_ref}")
263
- print(f"Restrições: {restricoes}")
264
- print(f"Usados inicialmente: {usados}\n")
265
-
266
  # Limites por categoria
267
  limites_categoria = {
268
  "proteina_rica": (100, 350),
@@ -282,25 +277,22 @@ def sugerir_alimentos_para_refeicao(nome_refeicao, macros_ref, restricoes=None,
282
  and not (nome_refeicao == "almoco" and a.get("categoria") == "sandes")
283
  ]
284
 
285
- print(f"[DEBUG] Encontradas {len(proteinas_rica)} opções de proteína rica para {nome_refeicao}")
286
  if proteinas_rica:
287
  proteinas_rica = sorted(proteinas_rica, key=lambda x: x["macros"]["calorias"])
288
  top_prot_rica = proteinas_rica[:7] if len(proteinas_rica) > 7 else proteinas_rica
289
  prot_rica = random.choice(top_prot_rica)
290
 
291
- print(f"[DEBUG] Proteína escolhida: {prot_rica['nome']} | Porção base: {prot_rica['porcao']}g")
292
- print(f"[DEBUG] Macros por porção: {prot_rica['macros']}")
293
 
294
  qtd_g = prot_restante / prot_rica["macros"]["proteina"] * prot_rica["porcao"]
295
- print(f"[DEBUG] Quantidade calculada antes de limitar: {qtd_g:.2f}g")
296
 
297
  qtd_g = max(limites_categoria["proteina_rica"][0],
298
  min(qtd_g, limites_categoria["proteina_rica"][1]))
299
- print(f"[DEBUG] Quantidade final (após limites {limites_categoria['proteina_rica']}): {qtd_g:.2f}g")
300
 
301
  fator = qtd_g / prot_rica["porcao"]
302
  macros_add = {k: fator * v for k, v in prot_rica["macros"].items()}
303
- print(f"[DEBUG] Macros adicionados da proteína rica: {macros_add}")
304
 
305
  sugestao.append({
306
  "alimento": prot_rica["nome"],
@@ -314,14 +306,6 @@ def sugerir_alimentos_para_refeicao(nome_refeicao, macros_ref, restricoes=None,
314
  carb_restante -= macros_add["carboidrato"]
315
  gord_restante -= macros_add["gordura"]
316
 
317
- print(f"[DEBUG] Após proteína rica → Restantes: "
318
- f"{calorias_restantes:.1f} kcal, {prot_restante:.1f}g prot, "
319
- f"{carb_restante:.1f}g carb, {gord_restante:.1f}g gord\n")
320
- else:
321
- print("[WARN] Nenhuma proteína rica encontrada!\n")
322
-
323
- # -------------------- 2 & 3. CARBO + GORDURA --------------------
324
- print(f"[DEBUG] Iniciando loop de carboidratos/gorduras (calorias restantes = {calorias_restantes:.1f})")
325
  while calorias_restantes > 50:
326
  # Carboidrato
327
  carb_opcoes = [
@@ -390,16 +374,13 @@ def sugerir_alimentos_para_refeicao(nome_refeicao, macros_ref, restricoes=None,
390
  # -------------------- 4. AJUSTE FINAL --------------------
391
  total_cal = sum(item["macros"]["calorias"] for item in sugestao)
392
  dif_cal = macros_ref["calorias"] - total_cal
393
- print(f"[DEBUG] Total atual da refeição: {total_cal:.1f} kcal | Diferença: {dif_cal:.1f}\n")
394
 
395
  if dif_cal > 0:
396
- print("[DEBUG] Tentando ajustar com gordura extra...")
397
  gorduras_disponiveis = [item for item in sugestao if item["macros"].get("gordura", 0) > 0]
398
  if gorduras_disponiveis:
399
  gord_item = random.choice(gorduras_disponiveis)
400
  cal_gordura_por_g = 9
401
  qtd_extra = min(dif_cal / cal_gordura_por_g, 60)
402
- print(f"[DEBUG] Aumentando {gord_item['alimento']} em {qtd_extra:.1f}g para ajustar calorias")
403
 
404
  original_g = gord_item["quantidade_g"]
405
  gord_item["quantidade_g"] += round(qtd_extra)
@@ -408,9 +389,8 @@ def sugerir_alimentos_para_refeicao(nome_refeicao, macros_ref, restricoes=None,
408
  gord_item["macros"][k] *= fator
409
  total_cal = sum(item["macros"]["calorias"] for item in sugestao)
410
  dif_cal = macros_ref["calorias"] - total_cal
411
- print(f"[DEBUG] Novo total após ajuste: {total_cal:.1f} kcal | Diferença: {dif_cal:.1f}")
412
 
413
- print(f"=== [DEBUG] Fim da refeição {nome_refeicao.upper()} ===\n")
414
  return sugestao
415
 
416
 
 
258
  carb_restante = macros_ref["carboidrato"]
259
  gord_restante = macros_ref["gordura"]
260
 
 
 
 
 
 
261
  # Limites por categoria
262
  limites_categoria = {
263
  "proteina_rica": (100, 350),
 
277
  and not (nome_refeicao == "almoco" and a.get("categoria") == "sandes")
278
  ]
279
 
 
280
  if proteinas_rica:
281
  proteinas_rica = sorted(proteinas_rica, key=lambda x: x["macros"]["calorias"])
282
  top_prot_rica = proteinas_rica[:7] if len(proteinas_rica) > 7 else proteinas_rica
283
  prot_rica = random.choice(top_prot_rica)
284
 
 
 
285
 
286
  qtd_g = prot_restante / prot_rica["macros"]["proteina"] * prot_rica["porcao"]
287
+
288
 
289
  qtd_g = max(limites_categoria["proteina_rica"][0],
290
  min(qtd_g, limites_categoria["proteina_rica"][1]))
291
+
292
 
293
  fator = qtd_g / prot_rica["porcao"]
294
  macros_add = {k: fator * v for k, v in prot_rica["macros"].items()}
295
+
296
 
297
  sugestao.append({
298
  "alimento": prot_rica["nome"],
 
306
  carb_restante -= macros_add["carboidrato"]
307
  gord_restante -= macros_add["gordura"]
308
 
 
 
 
 
 
 
 
 
309
  while calorias_restantes > 50:
310
  # Carboidrato
311
  carb_opcoes = [
 
374
  # -------------------- 4. AJUSTE FINAL --------------------
375
  total_cal = sum(item["macros"]["calorias"] for item in sugestao)
376
  dif_cal = macros_ref["calorias"] - total_cal
 
377
 
378
  if dif_cal > 0:
 
379
  gorduras_disponiveis = [item for item in sugestao if item["macros"].get("gordura", 0) > 0]
380
  if gorduras_disponiveis:
381
  gord_item = random.choice(gorduras_disponiveis)
382
  cal_gordura_por_g = 9
383
  qtd_extra = min(dif_cal / cal_gordura_por_g, 60)
 
384
 
385
  original_g = gord_item["quantidade_g"]
386
  gord_item["quantidade_g"] += round(qtd_extra)
 
389
  gord_item["macros"][k] *= fator
390
  total_cal = sum(item["macros"]["calorias"] for item in sugestao)
391
  dif_cal = macros_ref["calorias"] - total_cal
 
392
 
393
+
394
  return sugestao
395
 
396