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, seguindo o padrão de stacks que você costuma lecionar e desenvolver (Python, Flask e MySQL).

Abaixo, apresento a estrutura detalhada do projeto “SafePass Corporate”, formatada para os padrões acadêmicos da FATEC-Assis.


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 FATEC)

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,