Loading repository data…
Loading repository data…
dvizioon / repository
SISTEMA-IMC é uma aplicação web para cálculo de IMC que oferece recomendações de saúde personalizadas. Além de calcular o IMC, o sistema armazena os dados em um banco SQLite, possui um front-end customizado e integra uma IA para sugestões de atividades e alimentação. É uma solução completa para monitorar a saúde.
Este projeto é uma aplicação web desenvolvida em Python utilizando o framework Flask para calcular o Índice de Massa Corporal (IMC) 🍃. A aplicação possui componentes customizados e inclui uma IA 🤖 criada por você para calcular o IMC de forma inteligente. Além disso, utilizamos um banco de dados SQLite com estrutura em JSON para armazenar os dados dos usuários.
[!IMPORTANT] Observação o PHI-3 é um novo modelo generativo de IA, então será necessário 🫵 baixar: https://ollama.com/library/phi3
- IA (PHI-3): Implementação de uma IA para dar recomendações.
[!CAUTION] Uma "(IA - Inteligência Artificial)" Não substitui a orientação de um profissional real.
SISTEMA-IMC/
│
├── main.py
│
├── templates/
│ ├── ...
├── configuration/
│ ├── ...
├── Assets/
│ ├── ...
├── custom/
│ ├── ...
├── Components/
│ ├── ...
├── Router/
│ ├── ...
├── auth/
│ ├── ...
├── database/
│ ├── ...
├── Modules/
│ ├── ...
├── Plugins/
│ ├── ...
├── Router/
│ ├── ...
│
└── README.md
def modelAI():
Ai = LerYaml(".Yaml","openAI",index=0)
if Ai == "OpenIV":
return openVision()
elif Ai == "PHI3":
return jsonify({
"Model => PHI-3":"404" ,
"Disponiveis":"*OpenAi",
"Instalar":"https://ollama.com/library/phi3"
})
[!NOTE] Observer que o Modelo principal é o Arquivo
Components/OpenIV/index.py
-> `Usando o (ask)`
{
"altura": 170,
"peso": 70,
"imc": 24.2,
"tipo": "ask",
"question": "Oq é IMC?"
}
-> `Usando o (refeicao)`
{
"altura": 170,
"peso": 70,
"imc": 24.2,
"tipo": "refeicao",
}
-> `Usando o (atividadeFisica)`
{
"altura": 170,
"peso": 70,
"imc": 24.2,
"tipo": "atividadeFisica",
}
import sys
sys.path.append(".")
def RouterLink( url , method , function=False):
'''
@url = equivale ao path da metaLink ex: /home
@method = equivale ao tipo de processamento ex: [get,post,delete,patch,put]
@function = função que a rota recebe ex: rende_home
isso Sera o Equivalente há:
@app.route(</nome_link/>, methods=[</ metodos />])
def </nome_function/>:
...
'''
routes = [
{'url': url, 'method': method, 'function': function},
]
return routes
#Exemplo de uso do retorno
# def Home():
# print("Bem Vindo Rota /Home")
# RotaHome = RouterLink("/",["GET"],Home)
# print(RotaHome)
def create_sound_api(texts):
url_audio = f"{LerYaml('.Yaml','server',index=0)}://{LerYaml('.Yaml','configuration',index=0)}:{LerYaml('.Yaml','configuration',index=1)}/api/audios"
data = {'texts': texts}
headers = {'Content-Type': 'application/json'}
try:
response = requests.post(url_audio, data=json.dumps(data), headers=headers)
response.raise_for_status()
audio_data = response.json()
return audio_data
except requests.exceptions.RequestException as e:
print("Erro ao fazer a solicitação:", e)
return None
--------------------------------------------------------------
audio_files = {}
def createSound():
data = request.get_json()
texts = data.get('texts', [])
if not texts:
return jsonify({"error": "No texts provided"}), 400
for i, text in enumerate(texts):
audio_fp = create_sound(text)
key = f"audio_{i + 1}"
audio_files[key] = audio_fp
response = {key: f"/api/audio/{key}" for key in audio_files.keys()}
return jsonify(response)
---------------------------------------------------------------
def getSound(audio_key):
audio_fp = audio_files.get(audio_key)
if audio_fp:
audio_fp.seek(0)
return send_file(audio_fp, mimetype="audio/mpeg")
else:
return jsonify({"error": "Audio not found"}), 404
`Request`
{
"texts": [
"Dvizioon","Olá Tudo bem?"
]
}
`Response`
{
"audio_1": "/api/audio/audio_1",
"audio_2": "/api/audio/audio_2"
}
[!WARNING]
Observação: /roteamento {"url": f"/api/audio/<audio_key>", "method": ["GET"], "function":getSound} => MimeType:audio/mpeg
Clone o repositório:
git clone https://github.com/dvizioon/SISTEMA-IMC
cd SISTEMA-IMC
Crie um ambiente virtual e ative-o:
-------------------
> Linux:
python -m venv venv
source venv/bin/activate
-------------------
> Windows:
python -m venv venv
source imc/Scripts/activate
graph TD
A[Componente Select IMC - Abstraction] --> B[Normal]
B --> C[Simples Response]
C --> D[altura: 1.8, peso: 89, metodo: Normal]
A --> E[Diferencial]
E --> F["Calc Response 18 < || > 24"]
F --> G[categoria: Sobrepeso, imc: 27.47, peso_ideal: 77.76, categoria_ideal: acima do ideal, imc_atual: 27.47, peso_a_ajustar: 11.24, peso_atual: 89.0, porcentagem_ajuste: 12.63]
A --> H[Robusto]
H --> I[Voce pode Experimentar]
[!CAUTION] Os Pacotes Necessarios ficam no Caminho
plugins/requirements.txt
pip install -r requirements.txt