Este é um excelente tema para um Projeto Integrador, pois une a lógica de programação de algoritmos de segurança com a persistência de dados e o desenvolvimento web, usando uma stack baseada em Python, Flask e MySQL.

Abaixo, apresenta-se a estrutura detalhada do projeto “SafePass Corporate”, seguindo os padrões acadêmicos usuais de um Projeto Integrador.


1. Contexto do Projeto


2. Engenharia de Software

2.1 Requisitos Funcionais (RF)

2.2 Requisitos Não Funcionais (RNF)

2.3 Orientação a Objetos (UML Mermaid)

Utilizando os princípios de SOLID e Clean Code que você aplica em suas aulas, a modelagem segue:

classDiagram
    class PasswordGenerator {
        +int length
        +String charset
        +generate() String
    }
    class PasswordEntry {
        +int id
        +String encryptedPassword
        +String annotation
        +DateTime createdAt
        +save() void
    }
    PasswordGenerator ..> PasswordEntry : creates


3. Banco de Dados (MySQL)

3.1 Modelo Entidade-Relacionamento (MER)

Conforme sua solicitação de dados iniciais:

erDiagram
    SENHA_GERADA {
        int id_senha PK
        string senha_texto
        string anotacao
        datetime data_hora_requisicao
    }

3.2 Script DDL (Criação das Tabelas)

CREATE DATABASE safepass_db;
USE safepass_db;

CREATE TABLE senhas (
    id_senha INT AUTO_INCREMENT PRIMARY KEY,
    senha_texto VARCHAR(255) NOT NULL,
    anotacao TEXT,
    data_hora_requisicao DATETIME DEFAULT CURRENT_TIMESTAMP
);


4. Protótipo da Interface (Sugestão para Google Stitch)

Para gerar a interface no Google Stitch, você pode utilizar este guia de componentes:


5. Próximos Passos (Sugestão de Pedagogia)

Como este projeto foca em segurança interna empresarial:

  1. Segurança Adicional: Sugerir aos alunos o uso da biblioteca cryptography.fernet do Python para não salvar a senha em “texto limpo” no MySQL.

  2. Integração: Criar um endpoint API em Flask que permita que outros sistemas da empresa solicitem senhas temporárias automaticamente.
  3. Refatoração: Aplicar o padrão MVC (Model-View-Controller), separando as rotas do Flask (Controller) da lógica do banco de dados (Model).

Este projeto está pronto para ser inserido no seu ecossistema de repositórios do Jekyll/MkDocs.


Com base nas diretrizes de Engenharia de Software e nos princípios de segurança para sistemas internos, apresento o detalhamento técnico avançado do projeto SafePass Corporate. Esta versão incorpora as melhorias de criptografia e arquitetura MVC para garantir que o sistema seja robusto para o ambiente empresarial.


2. Engenharia de Software (Avançada)

2.4 Diagrama de Casos de Uso

O diagrama ilustra as interações focadas na privacidade. O “Gestor” pode gerar senhas para colaboradores sem expor sua própria senha mestra.

flowchart LR
    User(("Colaborador/Gestor"))
    Audit(("Sistema de Auditoria"))

    subgraph Sistema ["SafePass Corporate"]
        direction TB
        UC1(["Configurar Parâmetros de Senha"])
        UC2(["Gerar Senha Aleatória"])
        UC3(["Adicionar Anotação de Contexto"])
        UC4(["Visualizar Histórico de Senhas"])
        UC5(["Criptografar Dados em Repouso"])
    end

    User --> UC1
    User --> UC2
    User --> UC3
    User --> UC4
    UC2 -.->|<<include>>| UC5
    Audit --> UC4

Versão em SVG (Diagrama de Casos de Uso): Diagrama de Casos de Uso

2.5 Arquitetura de Classes (Padrão MVC)

Para este projeto, estruturamos as classes separando a lógica de geração (Model) da interface e controle, conforme as boas práticas de Clean Code.

classDiagram
    class PasswordModel {
        -String raw_password
        -String encrypted_password
        +generate_random(length: int)
        +encrypt(key: String)
        +decrypt(key: String)
    }
    class PasswordController {
        +create_entry(length: int, note: String)
        +get_all_entries()
    }
    class PasswordView {
        +render_dashboard()
        +display_password_list()
    }

    PasswordController --> PasswordModel : gerencia
    PasswordController --> PasswordView : atualiza


3. Banco de Dados e Segurança

3.1 MER (Modelo Entidade-Relacionamento)

O modelo foi expandido para incluir o campo de hash/criptografia, garantindo que, mesmo em caso de vazamento do banco, as senhas não estejam em texto claro.

erDiagram
    USUARIO ||--o{ SENHA : "gera"
    SENHA {
        int id_senha PK
        string senha_criptografada
        string sal_hash
        string anotacao
        datetime criado_em
    }

3.2 Melhorias de Segurança Implementadas

  1. Criptografia em Repouso: As senhas não são salvas como VARCHAR comum, mas sim criptografadas com a biblioteca cryptography.fernet antes do INSERT no MySQL.
  2. Mascaramento de Interface: Na visualização ampla, as senhas aparecem ocultas (ex: ********), sendo reveladas apenas sob clique ou autenticação, garantindo conforto e segurança no ambiente interno.
  3. Rastreabilidade: O campo data_hora_requisicao funciona como uma trilha de auditoria para o uso empresarial.

4. Implementação da Lógica em Python (Flask)

Como você utiliza o ecossistema Python/Flask em suas aulas e projetos, a lógica principal de geração utiliza a biblioteca secrets, que é criptograficamente segura:

import secrets
import string

def generate_safe_password(length):
    # Unifica letras, números e símbolos conforme o requisito
    alphabet = string.ascii_letters + string.digits + string.punctuation
    password = ''.join(secrets.choice(alphabet) for i in range(length))
    return password


5. Cronograma de Desenvolvimento (Sugestão)

Semana Atividade Principal Foco Técnico
S1 Requisitos e Escopo Definição de tamanhos de senha e tipos de anotação.
S2 Modelagem de Dados Criação do banco MySQL e tabelas de log.
S3 Lógica de Backend Implementação do gerador e criptografia em Python.
S4 Interface Web Desenvolvimento do dashboard em Flask com templates HTML/CSS.
S5 Testes e Auditoria Validação da persistência e segurança dos dados salvos.

Este detalhamento está pronto para ser incorporado ao seu fluxo de documentação em Markdown.sim,