Skip to content

Documentação do Projeto CRM de Vendas

Bases: str, Enum

Modelo de produtos.

Source code in src\contrato.py
 5
 6
 7
 8
 9
10
11
class ProdutoEnum(str, Enum):
    """
    Modelo de produtos.
    """
    produto1 = "FlowDisk com Gemini"
    produto2 = "FlowDisk com ChatGPT"
    produto3 = "FlowDisk com Llama 3.0"

Bases: BaseModel

Modelo de dados para vendas.

Parameters:

Name Type Description Default
email EmailStr

Email do vendedor

required
data datetime

Data da venda

required
valor PositiveFloat

Valor da venda

required
quantidade PositiveInt

Unidades vendidas

required
produto ProdutoEnum

Nome do produto vendido

required
Source code in src\contrato.py
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class Vendas(BaseModel):
    """
    Modelo de dados para vendas.

    Args:
        email (EmailStr): Email do vendedor
        data (datetime): Data da venda
        valor (PositiveFloat): Valor da venda
        quantidade (PositiveInt): Unidades vendidas
        produto (ProdutoEnum): Nome do produto vendido
    """
    email: EmailStr
    data: datetime
    valor: PositiveFloat
    quantidade: PositiveInt
    produto: ProdutoEnum

Função para criar a tabela vendas e salvar os dados no banco de dados PostgreSQL.

Source code in src\database.py
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
def salvar_no_postgres(dados: Vendas):
    """
    Função para criar a tabela vendas e salvar os dados no banco de dados PostgreSQL.
    """
    try:
        conn = psycopg2.connect(
            host=DB_HOST,
            database=DB_NAME,
            user=DB_USER,
            password=DB_PASS,
            port=DB_PORT
        )
        cursor = conn.cursor()

        create_table = sql.SQL(
            "CREATE TABLE IF NOT EXISTS vendas (id SERIAL PRIMARY KEY, email VARCHAR(255) NOT NULL, data TIMESTAMP NOT NULL, valor NUMERIC NOT NULL, quantidade INTEGER NOT NULL, produto VARCHAR(50) NOT NULL)"
        )
        cursor.execute(create_table)

        insert_query = sql.SQL(
            "INSERT INTO vendas (email, data, valor, quantidade, produto) VALUES (%s, %s, %s, %s, %s)"
        )
        cursor.execute(insert_query, (
            dados.email,
            dados.data,
            dados.valor,
            dados.quantidade,
            dados.produto.value,
        ))

        conn.commit()
        cursor.close()
        conn.close()
        st.success("Dados salvos com sucesso no banco de dados!")
    except Exception as exc:
        st.error(f"Erro ao salvar no banco de dados: {exc}")

Função para criar o frontend do CRM de Vendas.

Source code in src\frontend.py
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
def main():
    """
    Função para criar o frontend do CRM de Vendas.
    """
    st.title("CRM De Vendas - Frontend Simples")
    email = st.text_input("Email do vendedor")
    produto = st.selectbox("Selecione o produto", options=["FlowDisk com Gemini", "FlowDisk com ChatGPT", "FlowDisk com Llama 3.0"])
    data = st.date_input("Data da venda", datetime.now())
    hora = st.time_input("Hora da venda", value=time(9, 0))
    quantidade = st.number_input("Unidades vendidas", min_value=1, step=1)
    valor = st.number_input("Valor da venda", min_value=0.0, format="%.2f")

    if st.button("Salvar"):
        try:
            data_hora = datetime.combine(data, hora)
            venda = Vendas(
                email=email,
                data=data_hora,
                valor=valor,
                quantidade=quantidade,
                produto=produto,
            )
            st.write(venda)
            salvar_no_postgres(venda)
        except ValidationError as exc:
            st.error(f"Erro: {exc}")