# 🚀 Novo Sistema ERP V2 - Backend

Sistema ERP moderno e escalável com arquitetura limpa.

## 📋 Características

- ✅ **Arquitetura Limpa**: Separação de responsabilidades
- ✅ **Autenticação JWT**: Segurança robusta
- ✅ **Multi-tenant**: Suporte a múltiplas empresas
- ✅ **API RESTful**: Endpoints padronizados
- ✅ **Logs**: Sistema completo de logging
- ✅ **PHP 8+**: Código moderno e performático

## 🗂️ Estrutura

```
backend/
├── config/
│   ├── database.php      # Configurações do banco
│   └── cors.php          # Configurações CORS
├── core/
│   ├── Database.php      # Conexão singleton
│   ├── Response.php      # Respostas padronizadas
│   ├── Logger.php        # Sistema de logs
│   └── Auth.php          # Autenticação JWT
├── api/
│   ├── index.php         # Roteador principal
│   ├── auth.php          # Endpoints de autenticação
│   ├── products.php      # Endpoints de produtos
│   └── ...               # Outros endpoints
├── database/
│   ├── schema.sql        # Schema do banco
│   └── seeds.sql         # Dados de teste
└── logs/                 # Logs da aplicação
```

## 🚀 Deploy

### 1. Upload dos Arquivos

Faça upload da pasta `backend` para o subdomínio:
```
https://sis.mactan.com.br/api/
```

### 2. Criar o Banco de Dados

Execute o script SQL para criar as tabelas:

```bash
mysql -u mactan_erpsis2025 -p mactan_erpsis2025 < database/schema.sql
```

Ou via phpMyAdmin:
1. Acesse phpMyAdmin
2. Selecione o banco `mactan_erpsis2025`
3. Vá em "SQL"
4. Cole o conteúdo de `database/schema.sql`
5. Execute

### 3. Inserir Dados de Teste (Opcional)

```bash
mysql -u mactan_erpsis2025 -p mactan_erpsis2025 < database/seeds.sql
```

Isso criará:
- Empresa demo
- Usuário admin (email: `admin@empresademo.com`, senha: `admin123`)
- Categorias padrão
- Produtos de exemplo
- Clientes de exemplo

### 4. Configurar Permissões

Certifique-se de que a pasta `logs/` tem permissão de escrita:

```bash
chmod 755 logs/
```

### 5. Testar a API

Acesse:
```
https://sis.mactan.com.br/api/
```

Você deve ver uma resposta JSON indicando que o endpoint não foi encontrado (isso é normal).

### 6. Testar Login

Faça uma requisição POST para:
```
POST https://sis.mactan.com.br/api/auth/login
Content-Type: application/json

{
  "email": "admin@empresademo.com",
  "password": "admin123"
}
```

Resposta esperada:
```json
{
  "success": true,
  "data": {
    "token": "eyJ0eXAiOiJKV1QiLCJhbGc...",
    "user": {
      "id": "user_admin_001",
      "name": "Administrador",
      "email": "admin@empresademo.com",
      ...
    }
  },
  "message": "Login successful"
}
```

## 📡 Endpoints Disponíveis

### Autenticação
- `POST /api/auth/login` - Login
- `POST /api/auth/register` - Registro
- `GET /api/auth/me` - Dados do usuário atual

### Produtos
- `GET /api/products` - Listar produtos
- `GET /api/products/:id` - Buscar produto
- `POST /api/products` - Criar produto
- `PUT /api/products/:id` - Atualizar produto
- `DELETE /api/products/:id` - Deletar produto

### Vendas
- `GET /api/sales` - Listar vendas
- `GET /api/sales/:id` - Buscar venda
- `POST /api/sales` - Criar venda
- `PUT /api/sales/:id` - Atualizar venda
- `DELETE /api/sales/:id` - Deletar venda

### Transações
- `GET /api/transactions` - Listar transações
- `GET /api/transactions/:id` - Buscar transação
- `POST /api/transactions` - Criar transação
- `PUT /api/transactions/:id` - Atualizar transação
- `DELETE /api/transactions/:id` - Deletar transação

### Clientes
- `GET /api/customers` - Listar clientes
- `GET /api/customers/:id` - Buscar cliente
- `POST /api/customers` - Criar cliente
- `PUT /api/customers/:id` - Atualizar cliente
- `DELETE /api/customers/:id` - Deletar cliente

## 🔐 Autenticação

Todos os endpoints (exceto `/auth/login` e `/auth/register`) requerem autenticação via JWT.

Inclua o token no header:
```
Authorization: Bearer {seu_token_aqui}
```

## 📝 Logs

Os logs são salvos em `logs/YYYY-MM-DD.log` com o formato:
```
[2025-11-24 20:30:00] [INFO] User logged in: admin@empresademo.com
[2025-11-24 20:31:15] [ERROR] Database connection failed
```

## 🛠️ Configurações

Edite `config/database.php` para alterar:
- Credenciais do banco
- URL da API
- Chave secreta do JWT
- Modo de debug

## ⚠️ Segurança

- ✅ Senhas hasheadas com bcrypt
- ✅ Prepared statements (SQL Injection protection)
- ✅ JWT tokens com expiração
- ✅ CORS configurado
- ✅ Headers de segurança
- ✅ Validação de inputs

## 🐛 Troubleshooting

### Erro 500
- Verifique os logs em `logs/`
- Verifique permissões da pasta `logs/`
- Verifique credenciais do banco em `config/database.php`

### Erro 404
- Verifique se o `.htaccess` está configurado
- Verifique se mod_rewrite está ativado no Apache

### Token inválido
- Verifique se o token está sendo enviado no header
- Verifique se o token não expirou (24h)
- Verifique a chave JWT_SECRET em `config/database.php`

## 📞 Suporte

Para problemas ou dúvidas, verifique os logs da aplicação.
