diff --git a/docs/work-orders/board-search-api.md b/docs/work-orders/board-search-api.md index 14323dd0..fde9438b 100644 --- a/docs/work-orders/board-search-api.md +++ b/docs/work-orders/board-search-api.md @@ -36,26 +36,27 @@ Paths no FE: `API_PATHS.workOrder.board`, `boardSearch`, `lookupsDispatchers`. | — | `weekEnd` | `weekStart + 4` (sexta) | | `dispatcherIds` | `dispatchers` | `__unassigned` → `__unassigned__` | | "My WOs" | `dispatchers={userId}` | Equivalente a `myWorkOrders=true` | -| `typeFilter` | `types` | PM=2, Emergency=3, Reactive=6, Add-On=7, **Overdue=99** | +| `typeFilter` | `types` / `overdue` | Tipos reais em `types`; past-due via `overdue=true` (OR) | ## Advanced → `GET /board/search` -| FE state | API param | Regra | -| ---------------- | --------------------- | ------------------------------------------ | -| `page` | `page` | **0-based** (primeira página = `0`) | -| `pageSize` | `pageSize` | Default `100`, max `100` | -| `sortBy` | `sortBy` | `scheduledDate` \| `woNumber` \| `dueDate` | -| `sortDir` | `sortDir` | `asc` \| `desc` | -| `search` | `search` | `>= 2` chars | -| `dateRange` | `datePreset` | PascalCase (ver abaixo) | -| `customFrom/To` | `dateFrom` / `dateTo` | Obrigatórios se `datePreset=Custom` | -| `sites` (IDs UI) | `sites` | **Site codes**, não location ID | -| `types` | `types` | Integers; Overdue → `99` | -| `dispatchers` | `dispatchers` | `__unassigned` → `__unassigned__` | -| `statuses` | `statuses` | Integers 1–10 | -| `pmTypes` | `pmTypes` | Strings (labels Problem dropdown) | -| `vendorTechs` | `vendorIds` | Integers (resolvidos por companyName) | -| `docs` | `docStatuses` | No=2, Yes=1, NN=3 | +| FE state | API param | Regra | +| ---------------- | --------------------- | ------------------------------------------- | +| `page` | `page` | **0-based** (primeira página = `0`) | +| `pageSize` | `pageSize` | Default `100`, max `100` | +| `sortBy` | `sortBy` | `scheduledDate` \| `woNumber` \| `dueDate` | +| `sortDir` | `sortDir` | `asc` \| `desc` | +| `search` | `search` | `>= 2` chars | +| `dateRange` | `datePreset` | PascalCase (ver abaixo) | +| `customFrom/To` | `dateFrom` / `dateTo` | Obrigatórios se `datePreset=Custom` | +| `sites` (IDs UI) | `sites` | **Site codes**, não location ID | +| `types` | `types` | Integers de `WorkOrderType` reais | +| overdue (UI) | `overdue` | `true` = past-due (`isPastDue`); ver abaixo | +| `dispatchers` | `dispatchers` | `__unassigned` → `__unassigned__` | +| `statuses` | `statuses` | Integers 1–10 | +| `pmTypes` | `pmTypes` | Strings (labels Problem dropdown) | +| `vendorTechs` | `vendorIds` | Integers (resolvidos por companyName) | +| `docs` | `docStatuses` | No=2, Yes=1, NN=3 | ### `datePreset` @@ -69,15 +70,31 @@ Paths no FE: `API_PATHS.workOrder.board`, `boardSearch`, `lookupsDispatchers`. | `next-month` | `NextMonth` | | `custom` | `Custom` | -### `types` — WorkOrderType / overdue +### `types` — WorkOrderType -| Label FE | API | -| --------- | ------------------------- | -| PM | `2` | -| Emergency | `3` | -| Reactive | `6` | -| Add-On | `7` | -| Overdue | `99` (filtra `isPastDue`) | +Somente tipos reais de work order. **Não** use sentinel `99` para overdue. + +| Label FE | API | +| --------- | -------------------------------------------- | +| PM | `2` | +| Emergency | `3` | +| Reactive | `6` | +| Add-On | `7` | +| Other | tipo real do enum (não é filtro de past-due) | + +### `overdue` — past-due + +| FE / UI | API param | Regra | +| ------- | -------------- | ----------------------------------------- | +| Overdue | `overdue=true` | Filtra work orders past-due (`isPastDue`) | + +`types` e `overdue` combinam com **OR**: uma WO entra no resultado se corresponder a algum `types` **ou** estiver overdue (quando `overdue=true`). + +Exemplos: + +- Só PM e Emergency: `types=2&types=3` +- Só past-due: `overdue=true` +- PM **ou** past-due: `types=2&overdue=true` ### `statuses` — LifecycleStatus