# Mobile Legacy Migration

## Objetivo

Migrar as chamadas do legado `cond/mob/cbMobRequest.php` para o `app8` sem alterar contrato HTTP, nomes de campos ou formato de resposta consumido pelos aplicativos iOS e Android.

## Fonte de verdade atual

- Dispatcher legado: `/Users/viniciusstenzel/workspace/webserver/cond/mob/cbMobRequest.php`
- Inventario inicial no app8: `/Users/viniciusstenzel/workspace/webserver/app8/config/mobile_legacy.php`
- Endpoint base de compatibilidade no app8: `POST /api/mobile/legacy/request`
- Endpoint de inventario: `GET /api/mobile/legacy/inventory`

## Estratégia

1. Manter uma borda de compatibilidade que aceite `POST` com `p1` e os mesmos campos legados.
2. Traduzir a request para services/repositories do Laravel.
3. Traduzir a resposta de volta para o formato legado.
4. Migrar por operação, com corte granular por `p1`.

## Priorizacao inicial

Primeira onda sugerida:

- `lm` -> `listMural.php` -> `MuralService`
- `ld` -> `listDocuments.php` -> `DocumentosService`
- `lr` -> `listReserva.php` -> `ReservasService`
- `lo` -> `listOcorrencia.php` -> `OcorrenciasService`
- `lf` -> `listForum.php` -> `ForumService`
- `lv` -> `listVisitante.php` -> `VisitantesService`
- `en` -> `listEnquete.php` -> `EnquetesService`
- `pd` -> `listProjeto.php` -> `ProjetosService`

Operacoes de maior risco para o fim:

- `la` e `laX` por causa de autenticacao, perfis e tokens
- `apn` e `gcm` por causa do registro de push
- `senha`, `NPwd`, `qr` e `bot` por dependerem de contratos menos padronizados

## Situacao desta primeira entrega

- Inventario centralizado criado em `config/mobile_legacy.php`
- Controller de entrada criado para iniciar os adapters
- Token legado `md5(concat(ds_email,id))` validado na borda de compatibilidade
- `lm` conectado ao adapter novo com suporte inicial a:
  - listagem simples
  - listagem completa com anexos
  - detalhe por `id_mural`
  - `listAtt`
  - `post`
  - `postAtt`
  - `addImgMural`
- Operacoes ainda nao migradas continuam respondendo `501`

## Proximo passo recomendado

Registrar testes de contrato do `lm` e depois seguir para `ld`:

- payload de entrada legado
- chaves de resposta
- tipos de dados
- mensagens de erro
