# Planejamento do Sistema de Recepção

## 1. Arquitetura e Tecnologias

- **Backend:** PHP puro (sem frameworks)
- **Frontend:** HTML, CSS, JavaScript
- **Estilização:** Bootstrap 5 e Tailwind CSS (integrados)
- **Banco de Dados:** MySQL/MariaDB

## 2. Estrutura de Diretórios

```
/reception_system
├── public/                  # Raiz pública, onde o index.php principal reside
│   ├── index.php            # Ponto de entrada principal (roteador)
│   ├── css/
│   │   ├── bootstrap.min.css
│   │   └── tailwind.css
│   └── js/
│       └── bootstrap.bundle.min.js
├── src/                     # Código-fonte da aplicação
│   ├── config/              # Configurações (banco de dados, etc.)
│   │   └── database.php
│   ├── controllers/         # Lógica de controle (processamento de formulários)
│   │   ├── AuthController.php
│   │   ├── AdminController.php
│   │   └── ReceptionistController.php
│   ├── models/              # Lógica de negócio e interação com o BD
│   │   ├── User.php
│   │   └── Visitor.php
│   ├── views/               # Arquivos de template (HTML com PHP)
│   │   ├── auth/
│   │   │   └── login.php
│   │   ├── admin/
│   │   │   ├── dashboard.php
│   │   │   └── manage_users.php
│   │   ├── receptionist/
│   │   │   ├── dashboard.php
│   │   │   └── register_visitor.php
│   │   └── partials/
│   │       ├── header.php
│   │       └── footer.php
│   └── core/                # Funções centrais (roteamento, autenticação)
│       ├── Router.php
│       └── Auth.php
└── composer.json            # Dependências (se necessário, ex: para autoload)
```

## 3. Esquema do Banco de Dados

**Tabela `users`:**
- `id` (INT, PK, AI)
- `username` (VARCHAR, UNIQUE)
- `password` (VARCHAR, HASHED)
- `role` (ENUM('admin', 'receptionist'))
- `created_at` (TIMESTAMP)

**Tabela `visitors`:**
- `id` (INT, PK, AI)
- `full_name` (VARCHAR)
- `document_id` (VARCHAR)
- `check_in` (TIMESTAMP)
- `check_out` (TIMESTAMP, NULLABLE)
- `destination` (VARCHAR) # Setor ou gabinete
- `registered_by` (INT, FK to users.id)

## 4. Funcionalidades por Perfil

### Administrador (`admin`):
- Login/Logout.
- Dashboard com estatísticas gerais (visitantes hoje, etc.).
- Gerenciar usuários (criar, editar, deletar recepcionistas).
- Visualizar todos os registros de visitantes com filtros (data, setor, etc.).
- Gerar relatórios simples.

### Recepcionista (`receptionist`):
- Login/Logout.
- Dashboard com visão dos visitantes do dia.
- Cadastrar novos visitantes (nome, documento, destino).
- Registrar saída (check-out) de visitantes.
- Visualizar os visitantes que ele(a) cadastrou.

## 5. Roteamento (Simples)

O `index.php` na pasta `public/` atuará como um roteador simples, analisando a URL (ex: `index.php?page=admin_dashboard`) para incluir os controllers e views apropriados.
