# 🕓 Sistema de Ponto Eletrônico (Django + Bootstrap)

Este projeto é a migração da aplicação existente para o **framework Django**, mantendo os nomes originais das tabelas e módulos (em português), com interface web baseada em **Bootstrap** e painel administrativo nativo do Django.

---

## ⚙️ Estrutura Geral do Projeto

```
ponto_eletronico/
├── manage.py
├── requirements.txt
├── README.md
├── .env
├── docker-compose.yml
├── Dockerfile
│
├── config/
│   ├── __init__.py
│   ├── asgi.py
│   ├── wsgi.py
│   ├── urls.py
│   └── settings/
│       ├── base.py
│       ├── dev.py
│       ├── prod.py
│       └── logging.py
│
├── empresa/
│   ├── admin.py
│   ├── models.py
│   ├── views.py
│   ├── urls.py
│   ├── templates/
│   │   └── empresa/
│   │       ├── empresa_list.html
│   │       └── empresa_form.html
│
├── usuario/
│   ├── admin.py
│   ├── models.py
│   ├── views.py
│   ├── urls.py
│   ├── templates/
│   │   └── usuario/
│   │       ├── usuario_list.html
│   │       ├── usuario_form.html
│   │       └── login.html
│
├── configuracoes/
│   ├── admin.py
│   ├── models.py
│   ├── views.py
│   ├── urls.py
│   ├── templates/
│   │   └── configuracoes/
│   │       └── configuracoes_form.html
│
├── feriados/
│   ├── admin.py
│   ├── models.py
│   ├── views.py
│   ├── urls.py
│   ├── templates/
│   │   └── feriados/
│   │       ├── feriado_list.html
│   │       └── feriado_form.html
│
├── pagamento/
│   ├── admin.py
│   ├── models.py
│   ├── views.py
│   ├── urls.py
│   ├── templates/
│   │   └── pagamento/
│   │       └── pagamento_status.html
│
├── turno/
│   ├── admin.py
│   ├── models.py
│   ├── views.py
│   ├── urls.py
│   ├── templates/
│   │   └── turno/
│   │       ├── turno_list.html
│   │       └── turno_form.html
│
├── turno_dia/
│   ├── models.py
│   ├── views.py
│   ├── urls.py
│   └── templates/
│       └── turno_dia/
│           └── turno_dia_form.html
│
├── marcacao/
│   ├── admin.py
│   ├── models.py
│   ├── views.py
│   ├── urls.py
│   ├── templates/
│   │   └── marcacao/
│   │       ├── marcacao_list.html
│   │       ├── marcacao_form.html
│   │       └── dashboard.html
│
├── ajuste_horario/
│   ├── admin.py
│   ├── models.py
│   ├── views.py
│   ├── urls.py
│   ├── templates/
│   │   └── ajuste_horario/
│   │       ├── ajuste_list.html
│   │       └── ajuste_form.html
│
├── ajuste_ausencia/
│   ├── admin.py
│   ├── models.py
│   ├── views.py
│   ├── urls.py
│   ├── templates/
│   │   └── ajuste_ausencia/
│   │       ├── ausencia_list.html
│   │       └── ausencia_form.html
│
├── templates/
│   ├── base.html
│   ├── includes/
│   │   ├── _navbar.html
│   │   ├── _footer.html
│   │   └── _messages.html
│   └── registration/
│       ├── login.html
│       └── logout.html
│
├── static/
│   ├── css/
│   │   ├── bootstrap.min.css
│   │   ├── estilo.css
│   ├── js/
│   │   ├── bootstrap.bundle.min.js
│   │   └── app.js
│   ├── img/
│   └── vendor/
│       └── bootstrap/
│
└── scripts/
    ├── migrate_legacy.py
    └── seed_demo_data.py
```

---

## 🔗 Relação entre apps e tabelas

| App Django           | Tabela original      | Função principal |
|----------------------|----------------------|------------------|
| `empresa`        | `tbl_empresa`            | dados da empresa |
| `usuario`        | `tbl_usuario`            | usuários e cargos |
| `configuracoes`  | `tbl_configuracoes`      | parâmetros de ponto |
| `feriados`       | `tbl_feriados`           | feriados e adicionais |
| `pagamento`      | `tbl_pagamento`          | controle de assinatura |
| `turno`          | `tbl_turno`              | turnos padrão |
| `turno_dia`      | `tbl_turno_dia`          | dias da semana do turno |
| `marcacao`       | `tbl_marcacao`           | marcações de ponto |
| `ajuste_horario` | `tbl_ajuste_horario`     | ajustes manuais de ponto |
| `ajuste_ausencia`| `tbl_ajuste_ausencia`    | ausências justificadas |

---

## 🧠 Criando um novo app Django

Para criar um novo aplicativo dentro do projeto, siga os passos abaixo:

1. Ative o ambiente virtual:
   ```bash
   venv\Scripts\activate      # No Windows
   source venv/bin/activate   # No Linux/macOS
   ```

2. Certifique-se de estar dentro da pasta do projeto (onde está o arquivo `manage.py`).

3. Execute o comando:
   ```bash
   python manage.py startapp nome_do_app
   ```
   Exemplo:
   ```bash
   python manage.py startapp usuario
   ```

4. Adicione o app em `INSTALLED_APPS` dentro do arquivo `settings.py`:
   ```python
   INSTALLED_APPS = [
       ...
       'usuario',
   ]
   ```

5. Crie os modelos e registre-os no admin:
   - Edite o arquivo `models.py` com suas tabelas.
   - Edite o `admin.py` para registrar os modelos.

6. Rode as migrações:
   ```bash
   python manage.py makemigrations
   python manage.py migrate
   ```

7. Teste o servidor:
   ```bash
   python manage.py runserver
   ```

---

## 💪 Frontend (Bootstrap)

O frontend utiliza **Bootstrap 5** integrado aos **templates Django**.

- Layout base: `templates/base.html`
- Navbar, rodapé e mensagens ficam em `templates/includes/`
- Cada app possui seus próprios templates HTML.
