Skip to content

SISTEMA 📦 PARA CALCULAR IMC NOS MEUS ESTUDO DE FLASK API, E AI GENERATIVA 👽

License

Notifications You must be signed in to change notification settings

dvizioon/SISTEMA-IMC

Repository files navigation

Body-health

PYTHON HTML5 TAILWINDCSS JQUERY FLASK SQLITE

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.

Funcionalidades

  • Cálculo de IMC: Permite aos usuários inserir seus dados (altura e peso) para calcular o IMC.
  • Interface Customizada: Componentes da interface do usuário personalizados para melhorar a experiência do usuário.
  • Metodo e Escolhas: Com Base na Escolha é possivel definir o tipo de processamento do servidor.
  • IA para Cálculo de IMC: Utiliza uma IA desenvolvida para calcular o IMC de forma precisa e fornecer recomendações personalizadas.
  • Roteamento: Implementação de roteamento no Flask para gerenciar as diferentes páginas da aplicação.
  • Banco de Dados SQLite: Armazenamento de dados dos usuários utilizando SQLite com estrutura em JSON.

Tecnologias Utilizadas

  • Python: Linguagem de programação principal utilizada no projeto.
  • Flask: Framework web utilizado para construir a aplicação.
  • HTML/CSS/JavaScript/Jquery: Tecnologias front-end para criar a interface do usuário.
  • SQLite: Banco de dados utilizado para armazenar informações dos usuários.
  • JSON: Formato de armazenamento de dados no banco de dados.
  • OPENIV (Engenharia Social): Implementação de uma IA para cálculos e recomendações de Atividades fisicas e Alimentação.

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.

Estrutura do Projeto

SISTEMA-IMC/
│
├── main.py
│
├── templates/
│ ├── ...
├── configuration/
│ ├── ...
├── Assets/
│ ├── ...
├── custom/
│ ├── ...
├── Components/
│ ├── ...
├── Router/
│ ├── ...
├── auth/
│ ├── ...
├── database/
│ ├── ...
├── Modules/
│ ├── ...
├── Plugins/
│ ├── ...
├── Router/
│ ├── ...
│
└── README.md 

Configuração de AI:

   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"
         })
  • Para Você implementar um nova AI com mais otimização você pode usar essa funçao para retonar as infomações coletadas nos componentes

Note

Observer que o Modelo principal é o Arquivo Components/OpenIV/index.py

Usando Micro Serviço API

-> `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",
}

Sistema de Roteamento

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)

GTTS

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
    

Usando Micro Serviço Som

`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

Instalação do Projeto

  1. Clone o repositório:

    git clone https://github.com/dvizioon/SISTEMA-IMC
    cd SISTEMA-IMC
    
  2. 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
    

Acões para API

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]

Loading

Instale as dependências:

Caution

Os Pacotes Necessarios ficam no Caminho plugins/requirements.txt

   pip install -r requirements.txt

Licença

Composer

Releases

No releases published

Packages

No packages published