{"id":50536877,"url":"https://github.com/gabriel04alves/psi-1","last_synced_at":"2026-06-03T17:01:30.946Z","repository":{"id":360188563,"uuid":"1245703624","full_name":"gabriel04alves/psi-1","owner":"gabriel04alves","description":"Plataforma para gestão e diagnóstico de conformidade com normas de segurança da informação.","archived":false,"fork":false,"pushed_at":"2026-05-25T12:09:44.000Z","size":206,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-25T12:26:23.819Z","etag":null,"topics":["iso","pandas","python","sqlite3","streamlit"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gabriel04alves.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-21T13:26:23.000Z","updated_at":"2026-05-25T12:09:48.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/gabriel04alves/psi-1","commit_stats":null,"previous_names":["gabriel04alves/psi-1"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/gabriel04alves/psi-1","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabriel04alves%2Fpsi-1","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabriel04alves%2Fpsi-1/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabriel04alves%2Fpsi-1/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabriel04alves%2Fpsi-1/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gabriel04alves","download_url":"https://codeload.github.com/gabriel04alves/psi-1/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabriel04alves%2Fpsi-1/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33874679,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-03T02:00:06.370Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["iso","pandas","python","sqlite3","streamlit"],"created_at":"2026-06-03T17:01:29.973Z","updated_at":"2026-06-03T17:01:30.940Z","avatar_url":"https://github.com/gabriel04alves.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PSI — Plataforma de Segurança da Informação\n\n\u003e Projeto desenvolvido como atividade da disciplina de Segurança da Informação.  \n\u003e Especificação: [PSI.md](https://github.com/mehranmisaghi/cybersecurity/blob/main/projetos/PSI.md)\n\n---\n\n## O que é o PSI?\n\nO **Projeto de Segurança de Informação** é uma plataforma web para gestão e diagnóstico de conformidade com normas de segurança da informação, como **ISO/IEC 27002** e **ISO/IEC 27701**.\n\n### Principais vantagens\n\n- **Local-first e seguro** — toda a aplicação roda na máquina do próprio usuário. Nenhum dado é enviado a servidores externos; o banco de dados (SQLite) fica armazenado localmente.\n- **Portável** — funciona para diferentes normas.\n- **Sem dependências de nuvem** — funciona completamente offline após a instalação.\n\n### Funcionalidades\n\n| Módulo             | Descrição                                                         |\n| ------------------ | ----------------------------------------------------------------- |\n| Empresas           | Cadastro e gerenciamento de perfis de conformidade por empresa    |\n| Ingestão de Normas | Importação de controles ISO diretamente de PDFs ou bases internas |\n| Nova Auditoria     | Diagnóstico guiado controle a controle                            |\n| Dashboard          | Acompanhamento do nível de conformidade com gráficos interativos  |\n| Comparativo        | Comparação entre auditorias ao longo do tempo para medir evolução |\n| Relatórios         | Geração de relatórios em PDF prontos para apresentação            |\n\n![|Fluxograma](./fluxograma.png)\n\n### Status de conformidade\n\n| Status            | Descrição                                  |\n| ----------------- | ------------------------------------------ |\n| **Conforme**      | O controle está plenamente implementado    |\n| **Não Conforme**  | O controle não foi implementado            |\n| **Em Andamento**  | Existe trabalho em curso para adequação    |\n| **Não se Aplica** | O controle não é relevante para o contexto |\n\n---\n\n## Stack tecnológica\n\n- **Python 3.11+** com [Streamlit](https://streamlit.io/) como framework web\n- **SQLite** para persistência local de dados\n- **Plotly** para visualizações interativas\n- **ReportLab** para geração de relatórios PDF\n- **pdfplumber / pdfminer** para extração de controles a partir de PDFs ISO\n- **PyInstaller** para empacotamento como executável standalone\n\n---\n\n## Instalação (modo desenvolvimento)\n\n### Pré-requisitos\n\n- Python 3.11 ou superior\n\n### Passos\n\n```bash\n# 1. Clone o repositório\ngit clone https://github.com/gabriel04alves/psi-1\ncd psi-1\n\n# 2. Instale o Graphviz (requisito do sistema)\n# Linux (Fedora/RHEL):\nsudo dnf install -y python3 python3-pip python3-virtualenv graphviz graphviz-devel\n\n# Linux (Ubuntu/Debian):\nsudo apt install -y python3 python3-pip python3-venv graphviz libgraphviz-dev\n\n# macOS:\nbrew install python@3.11 graphviz\n\n# Windows: instale o Python e o Graphviz em https://graphviz.org/download/\n# e adicione ambos ao PATH\n```\n\n\u003e **Atenção:** o Graphviz precisa estar disponível no PATH do sistema operacional — o pacote Python `graphviz` (incluído em `requirements.txt`) é apenas uma interface e depende do binário `dot` instalado nativamente. Verifique com `dot -V` antes de iniciar a aplicação.\n\n```bash\n# 3. Crie e ative o ambiente virtual\npython3 -m venv venv\nsource venv/bin/activate      # Linux / macOS\n# venv\\Scripts\\activate       # Windows\n\n# 4. Instale as dependências\npip install -r requirements.txt\n\n# 5. Inicie a aplicação\nstreamlit run streamlit_app.py\n```\n\nA interface abre automaticamente em `http://localhost:8501`.\n\n### Dados de demonstração (opcional)\n\nPara explorar a plataforma sem cadastrar dados manualmente, execute o script de populate. Ele cria 3 empresas, importa as normas ISO 27002 e ISO 27701 e gera múltiplas auditorias com respostas fictícias simulando evolução de conformidade ao longo do tempo.\n\n```bash\n# Insere dados sem apagar o que já existe\npython utils/populate.py\n\n# Limpa o banco e recria tudo do zero\npython utils/populate.py --reset\n```\n\nO terminal exibe um resumo do que foi inserido — em seguida basta abrir qualquer empresa na página **Empresas** para explorar dashboards, comparativos e relatórios já populados.\n\n---\n\n## Guia de uso\n\n### Pré-condição: norma ISO atualizada\n\nO sistema não distribui o texto das normas ISO por questões de licenciamento. Antes de iniciar uma auditoria você precisa ter em mãos o **PDF oficial e atualizado** da norma desejada (ex.: ABNT NBR ISO/IEC 27002:2022).\n\n### Passo 1 — Cadastrar a empresa\n\nAcesse **Empresas** e registre o perfil da organização que será auditada (nome, CNPJ, setor, porte, responsável).\n\n### Passo 2 — Formatar a ISO (obrigatório para PDFs novos)\n\n\u003e A plataforma precisa dos controles em formato estruturado. Se você já tiver um arquivo `.json`, `.csv` ou `.py` com os controles, pule para o Passo 3.\n\n1. Acesse **🧰 Formatar ISO a partir de PDF** no menu lateral.\n2. Faça upload do PDF da norma.\n3. Clique em **Extrair conteúdo do PDF** — o sistema identifica automaticamente os controles no padrão ABNT.\n4. Baixe o arquivo **JSON** gerado.\n\nO arquivo exportado segue a estrutura:\n\n```json\n[\n  {\n    \"id\": \"5.1\",\n    \"tema\": \"5\",\n    \"tema_nome\": \"Controles Organizacionais\",\n    \"nome\": \"Políticas para segurança da informação\",\n    \"descricao\": \"...\"\n  }\n]\n```\n\nTambém são aceitos **CSV** e **Python (`.py`)** com a mesma estrutura de campos (`id`, `tema`, `nome` são obrigatórios):\n\n```csv\nid,tema,tema_nome,nome,descricao\n5.1,5,Organizacional,Políticas de SI,...\n```\n\n```python\nCONTROLES = [\n  {\"id\": \"5.1\", \"tema\": \"5\", \"nome\": \"Políticas de SI\", \"descricao\": \"...\"}\n]\n```\n\n### Passo 3 — Importar a norma\n\n1. Acesse **📥 Ingestão de Normas**.\n2. Preencha o nome e a versão da norma (ex.: `ISO 27002`, `2022`).\n3. Faça upload do arquivo gerado no passo anterior (`.json`, `.csv` ou `.py`).\n4. Confira o preview dos controles e clique em **Salvar no banco de dados**.\n\n### Passo 4 — Conduzir a auditoria\n\n1. Acesse **🔍 Nova Auditoria**, selecione a empresa e a norma importada.\n2. Responda cada controle com um dos status: **Conforme**, **Não Conforme**, **Em Andamento** ou **Não se Aplica**, adicionando observações quando necessário.\n3. Finalize a auditoria ao concluir todos os controles.\n\n### Passo 5 — Acompanhar e exportar resultados\n\n| Página             | O que fazer                                                        |\n| ------------------ | ------------------------------------------------------------------ |\n| **📊 Dashboard**   | Visualize o nível de conformidade por tema e controle              |\n| **📈 Comparativo** | Compare duas ou mais auditorias da mesma empresa ao longo do tempo |\n| **📄 Relatórios**  | Gere e baixe o relatório em PDF para apresentação                  |\n\n---\n\n## Estrutura do projeto\n\n```\npsi-1/\n├── streamlit_app.py        # Página inicial / ponto de entrada\n├── pages/                  # Páginas da aplicação (Streamlit multipage)\n│   ├── 1_Empresas.py\n│   ├── 2_Ingestão_de_Normas.py\n│   ├── 3_Nova_Auditoria.py\n│   ├── 4_Dashboard.py\n│   ├── 5_Comparativo.py\n│   └── 6_Relatorios.py\n├── database/\n│   └── db.py               # Camada de acesso ao banco SQLite\n├── data/                   # Bases de controles ISO e banco local\n├── utils/                  # Utilitários (PDF, gráficos, relatórios)\n├── requirements.txt\n```\n\n![Diagrama ER](./diagrama_modelo.png)\n\n---\n\n## Armazenamento de dados\n\nO banco de dados é armazenado localmente, sem nenhuma comunicação com serviços externos e pode ser importado e exportado.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabriel04alves%2Fpsi-1","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgabriel04alves%2Fpsi-1","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabriel04alves%2Fpsi-1/lists"}