💻

ModOS PRO

Documentação Oficial

Sistema de Gestão de TI e Helpdesk

Este projeto é um sistema web desenvolvido em Django para a gestão completa de departamentos de TI, focado em ambientes multi-empresa (multi-tenant). O sistema integra controlo de acesso, inventário detalhado de hardware e gestão de chamados (Service Desk).

Progresso de Atualizações

Ajustes e Melhorias em Curso

  • Painel do Utilizador
  • Painel do Administrador
  • Painel do Técnico
  • Envio de e-mail e PDFs automáticos
  • Módulo de Orçamentos (Avulsos e Registados)
  • Portal Público de Consulta Segura (Hash)
  • Integração com sistemas externos (Unifi/Mikrotik)
  • Integração de Meios de Pagamento (Futuro)

Arquitetura e Funcionalidades Principais

Explore os módulos centrais da plataforma. Clique nos cartões para visualizar os detalhes técnicos e as regras de negócio aplicadas.

🏢

Gestão Corporativa

  • Multi-tenant: Estrutura preparada para gerir múltiplas empresas na mesma base de dados.
  • Hierarquia: Empresa ➔ Setores ➔ Utilizadores.
  • Segurança: Mixins de proteção para garantir o isolamento de dados (cada utilizador só vê os dados da sua empresa).
🖥️

Inventário de Ativos

  • Herança (Models): Classe Base `Equipamento` herdada por `Computador` e `Periferico`.
  • Armazenamento: Vínculo 1:N para múltiplos discos por PC (SSD/HDD).
  • Rastreabilidade: Periféricos podem ser "plugados" num PC específico ou geridos no stock geral.
🎫

Service Desk (O.S.)

  • Tickets: Manutenção corretiva, preventiva ou requisições.
  • Comentários: Interação com upload de anexos; formulário bloqueado após o fecho do chamado.
  • Workflow: Registo automático de transferência de técnicos e mudança automática de status operacionais.
📊

Dashboards

  • Utilizador: Visão consolidada de chamados e cancelamento seguro protegido por CSRF.
  • Administrador/Técnico: Fila de espera (Não Atribuídos), opção para "Puxar O.S." e gráficos dinâmicos.
⚙️

Configurações Base

  • Singleton: Alteração de identidade visual diretamente pelo Admin, refletindo globalmente.
  • SMTP Dinâmico: Backend de e-mail customizado que lê configurações diretamente da BD.
  • Notificações: Disparo via Django Signals em tempo real.
💰

Orçamentos & PDFs

  • Calculadora: Processamento automático de lucro, markup e vendas.
  • Dupla Exportação: PDF Gerencial (com custos) e PDF Cliente (só valor de venda).
  • Portal Público: Acesso sem login com validação de expiração usando Hash segura de 6 caracteres.

Guia de Instalação Rápida

Siga os passos abaixo para configurar o ambiente de desenvolvimento local (Python 3.8+ e Django 4.0+ recomendados).

terminal - bash

# 1. Clonar e Instalar Dependências

$ pip install django django-stubs django-tailwind xhtml2pdf celery redis

# 2. Configurar Django settings.py (Modelo e CSRF)

AUTH_USER_MODEL = 'accounts.Usuario'

CSRF_TRUSTED_ORIGINS = ['https://seusite.com']

# 3. Base de Dados e Configurações Core

$ python manage.py makemigrations accounts equipamentos orders core dashboard orcamentos

$ python manage.py migrate

# 4. Criar Superutilizador

$ python manage.py createsuperuser

# 5. Correr o Servidor e o Tailwind (Em terminais separados)

$ python manage.py runserver

# Noutro terminal:

$ python manage.py tailwind start

Markdown da Documentação

Este é o código cru do `README.md` solicitado. Pode copiá-lo diretamente.

# Sistema de Gestão de TI e Helpdesk (Django)

Este projeto é um sistema web desenvolvido em Django para gestão completa de departamentos de TI, focado em ambientes multi-empresa (multi-tenant). O sistema integra controlo de acesso, inventário detalhado de hardware e gestão de chamados (Service Desk).

<img src="screenshot/dashboard.png" alt="dashboard">

### Ajustes e melhorias

O projeto ainda está em desenvolvimento e as próximas atualizações serão voltadas para as seguintes tarefas:

- [x] Painel do Utilizador
- [x] Painel do Administrador
- [x] Painel do Tecnico
- [x] Envio de e-mail
- [x] Filtro de Relatorios
- [x] Envio de relatórios em PDF por email
- [x] Orcamentos avulsos
- [x] Orcamentos para empresas cadastradas
- [x] Portal Público de Consulta de Orçamentos (Acesso via Link Seguro e Hash)
- [ ] Integração com sistemas externos (unifi)
- [ ] Integração com sistemas externos (Mikrotik)
- [ ] Integração de Meios de Pagamento (Futuro)

---

## 🚀 Funcionalidades Principais

### 1. Gestão Corporativa (App `accounts`)
* **Multi-tenant**: Estrutura preparada para gerir múltiplas empresas na mesma base de dados.
* **Hierarquia**: Empresa -> Setores -> Utilizadores.
* **Utilizadores Personalizados**: Login com vínculo obrigatório a uma Empresa e Setor.
* **Segurança**: Mixins de proteção para garantir que os utilizadores só vejam dados da sua própria empresa.

### 2. Inventário de Ativos (App `equipamentos`)
* **Herança de Modelos**:
  * `Equipamento` (Base): Serial, Marca, Modelo, Responsável.
  * `Computador` (Filho): Processador, RAM + Discos.
  * `Periferico` (Filho): Monitores, Teclados, Impressoras.
* **Gestão de Armazenamento**: Vínculo *One-to-Many* para múltiplos discos (SSD/HDD) por computador.
* **Rastreabilidade**: Periféricos podem ser vinculados ("plugados") a um computador específico ou ficarem livres no stock.

### 3. Service Desk / Chamados (App `orders` / `chamados`)
* **Tickets e O.S.**: Abertura de chamados para manutenção corretiva, preventiva ou requisições.
* **Sistema de Comentários**: Interação contínua entre utilizador e técnico na página de detalhes da O.S., com suporte a upload de anexos (imagens/documentos). O formulário é bloqueado automaticamente quando o chamado é encerrado.
* **Fluxo de Trabalho**:
  * Atribuição de técnicos (apenas utilizadores `Staff`).
  * Registo automático de transferência de técnicos (Auditoria).
  * Mudança automática de status (Aberto -> Em Atendimento).
  * Categorização por tipo de serviço (Hardware, Software, Rede).

### 4. Dashboards e Gráficos (App `dashboard`)
* **Painel do Utilizador**: Visão consolidada de chamados em aberto, andamento e histórico. Inclui cancelamento seguro via Modal (protegido por CSRF).
* **Painel do Administrador/Técnico**:
  * Fila de espera de chamados (Não Atribuídos).
  * Opção rápida para o técnico "Puxar O.S." para si.
  * Gráficos dinâmicos (via Chart.js) exibindo o volume de chamados por status.
  * Filtros em tempo real na listagem.

### 5. Configurações Globais e Notificações (App `core`)
* **Design Dinâmico (Singleton)**: Alteração do Título do Sistema, texto de Rodapé e URL Base do sistema diretamente pelo Django Admin, refletindo instantaneamente em todo o site.
* **Servidor de E-mail (SMTP) no Admin**: Backend de e-mail customizado que lê as configurações (Host, Porta, Utilizador, Password, TLS) diretamente da base de dados. Permite trocar a conta de disparo sem alterar o código-fonte ou reiniciar o servidor.
* **Notificações Automáticas**: Disparo de e-mails em tempo real (utilizando Django Signals) para alertar solicitantes e técnicos sempre que um chamado for aberto ou atualizado.

### 6. Gestão de Orçamentos e Vendas (App `orcamentos`)
* **Catálogo de Produtos:** Base de dados centralizada de equipamentos e serviços com gestão de custo base de compra.
* **Calculadora de Margens:** Cálculo automático de lucro, markup e valor de venda na adição de itens aos orçamentos.
* **Múltiplos Perfis de Cliente:** Suporte flexível tanto para empresas já registadas no sistema como para clientes avulsos.
* **Exportação Dinâmica em PDF:**
  * **Via Gerencial:** Relatório confidencial com exposição de custos e lucros (acesso restrito à equipa técnica).
  * **Via do Cliente:** Documento profissional otimizado para o cliente final, exibindo apenas os valores de venda.
* **Portal Público de Consulta:** Acesso independente sem necessidade de login, onde o cliente introduz o Número da O.S. e um Código de Acesso (Hash de 6 caracteres) para consultar a proposta em PDF. Inclui validação automática de data de expiração da proposta.

---

## 🛠️ Instalação e Configuração

### Pré-requisitos
* Python 3.8+
* Django 4.0+
* `django-localflavor` (Opcional, para validação de CNPJ)
* `django-tailwind` (Para a renderização do frontend)
* `xhtml2pdf` (Para geração de relatórios e orçamentos em PDF)

### Passo a Passo

1. **Clonar e Instalar Dependências**
   ```bash
   pip install django django-stubs django-tailwind xhtml2pdf celery redis
   ```

2. **Configuração Inicial**
   No ficheiro `settings.py`, certifique-se de definir o modelo de utilizador personalizado e as permissões de CSRF para o seu domínio (se estiver em produção):
   ```python
   AUTH_USER_MODEL = 'accounts.Usuario'
   CSRF_TRUSTED_ORIGINS = ['[https://seusite.com](https://seusite.com)']
   ```

3. **Base de Dados e Configurações Core**
   ```bash
   python manage.py makemigrations accounts equipamentos orders core dashboard orcamentos
   python manage.py migrate
   ```

4. **Criar Superutilizador**
   ```bash
   python manage.py createsuperuser
   ```

5. **Correr o Servidor e Tailwind**
   Num terminal, inicie o servidor Django:
   ```bash
   python manage.py runserver
   ```

   Noutro terminal, inicie o compilador do Tailwind:
   ```bash
   python manage.py tailwind start
   ```
✅ Markdown copiado com sucesso!