# Migração FastAPI → PHP — SISPROM/REURBTEC

Esta é a primeira base funcional da API PHP para rodar localmente e substituir gradualmente o backend FastAPI.

## Objetivo

Manter o frontend React/Vite praticamente igual e trocar apenas a URL da API:

```env
VITE_API_BASE_URL=http://localhost:8081
```

## Rodar local com PHP embutido

Na pasta `sisprom-api-php`:

```bash
cp .env.example .env
php -S 127.0.0.1:8081 -t public
```

Teste:

```bash
curl http://127.0.0.1:8081/api/v1/health
```

## Rodar no XAMPP/Laragon

Coloque a pasta `sisprom-api-php` dentro do `htdocs` e configure o frontend com:

```env
VITE_API_BASE_URL=http://localhost/sisprom-api-php/public
```

Se configurar VirtualHost apontando para `public`, use:

```env
VITE_API_BASE_URL=http://sisprom-api.local
```

## Endpoints já criados

### Saúde

- `GET /api/v1/health`

### Autenticação

- `POST /api/v1/auth/login`
- `POST /api/v1/auth/logout`
- `GET /api/v1/auth/me`
- `GET /api/v1/auth/session`
- `GET /api/v1/auth/my-municipalities`
- `POST /api/v1/auth/select-municipality`
- `POST /api/v1/auth/signup`
- `POST /api/v1/auth/reset-password-email`
- `POST /api/v1/auth/update-user`

### Compatibilidade com Supabase/FastAPI

- `GET /api/v1/compat/{table}`
- `POST /api/v1/compat/{table}`
- `PATCH /api/v1/compat/{table}`
- `DELETE /api/v1/compat/{table}`

Tabelas liberadas inicialmente:

- `profiles`
- `user_roles`
- `municipios`
- `usuario_municipios`
- `branding_municipio`
- `auditoria`
- `sessoes_login`
- `tentativas_login`
- `grupos_trabalho`
- `secretarias`
- `departamentos`
- `setores`
- `modulos`
- `municipio_modulos`
- `permissoes`
- `role_permissoes`
- `perfis_customizados`
- `perfil_customizado_permissoes`
- `perfil_membros`
- `ctm_lotes`

### Functions/RPC

- `POST /api/v1/functions/lookup-municipios`
- `POST /api/v1/rpc/count_tentativas_falhas`

### Mapa

- `GET /api/v1/mapa/config`
- `GET /api/v1/mapa/fotos360`
- `POST /api/v1/mapa/fotos360/upload` — placeholder, ainda não migrado.

## Observações importantes

1. Esta primeira versão prioriza login, sessão, seleção de município e compatibilidade básica do frontend.
2. A API usa `PDO PostgreSQL`; no PHP local precisa estar habilitada a extensão `pdo_pgsql`.
3. Os hashes de senha do FastAPI foram gerados com Argon2. O PHP precisa ter suporte a Argon2 para `password_verify` funcionar com esses hashes.
4. BI/IPTU, GeoServer, exportação SHP, Consulta EL/GPI e upload 360 devem ser migrados nas próximas etapas.

## Próxima etapa sugerida

Testar localmente:

```bash
php -S 127.0.0.1:8081 -t public
```

Depois ajustar o frontend:

```env
VITE_API_BASE_URL=http://127.0.0.1:8081
```

Rodar:

```bash
npm run dev
```

E testar o login.
