@hed-hog/operations 0.0.302 → 0.0.304
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +200 -43
- package/dist/controllers/operations-approvals.controller.d.ts +9 -0
- package/dist/controllers/operations-approvals.controller.d.ts.map +1 -0
- package/dist/controllers/operations-approvals.controller.js +64 -0
- package/dist/controllers/operations-approvals.controller.js.map +1 -0
- package/dist/controllers/operations-collaborators.controller.d.ts +223 -0
- package/dist/controllers/operations-collaborators.controller.d.ts.map +1 -0
- package/dist/controllers/operations-collaborators.controller.js +96 -0
- package/dist/controllers/operations-collaborators.controller.js.map +1 -0
- package/dist/controllers/operations-contracts.controller.d.ts +683 -0
- package/dist/controllers/operations-contracts.controller.d.ts.map +1 -0
- package/dist/controllers/operations-contracts.controller.js +198 -0
- package/dist/controllers/operations-contracts.controller.js.map +1 -0
- package/dist/controllers/operations-org-structure.controller.d.ts +108 -0
- package/dist/controllers/operations-org-structure.controller.d.ts.map +1 -0
- package/dist/controllers/operations-org-structure.controller.js +143 -0
- package/dist/controllers/operations-org-structure.controller.js.map +1 -0
- package/dist/controllers/operations-projects.controller.d.ts +169 -0
- package/dist/controllers/operations-projects.controller.d.ts.map +1 -0
- package/dist/controllers/operations-projects.controller.js +87 -0
- package/dist/controllers/operations-projects.controller.js.map +1 -0
- package/dist/controllers/operations-tasks.controller.d.ts +54 -0
- package/dist/controllers/operations-tasks.controller.d.ts.map +1 -0
- package/dist/controllers/operations-tasks.controller.js +79 -0
- package/dist/controllers/operations-tasks.controller.js.map +1 -0
- package/dist/controllers/operations-timesheets.controller.d.ts +99 -0
- package/dist/controllers/operations-timesheets.controller.d.ts.map +1 -0
- package/dist/controllers/operations-timesheets.controller.js +154 -0
- package/dist/controllers/operations-timesheets.controller.js.map +1 -0
- package/dist/dto/create-collaborator-type.dto.d.ts +10 -0
- package/dist/dto/create-collaborator-type.dto.d.ts.map +1 -0
- package/dist/dto/create-collaborator-type.dto.js +56 -0
- package/dist/dto/create-collaborator-type.dto.js.map +1 -0
- package/dist/dto/create-collaborator.dto.d.ts +42 -0
- package/dist/dto/create-collaborator.dto.d.ts.map +1 -0
- package/dist/dto/create-collaborator.dto.js +228 -0
- package/dist/dto/create-collaborator.dto.js.map +1 -0
- package/dist/dto/create-schedule-adjustment-request.dto.d.ts +17 -0
- package/dist/dto/create-schedule-adjustment-request.dto.d.ts.map +1 -0
- package/dist/dto/create-schedule-adjustment-request.dto.js +89 -0
- package/dist/dto/create-schedule-adjustment-request.dto.js.map +1 -0
- package/dist/dto/create-task.dto.d.ts +8 -0
- package/dist/dto/create-task.dto.d.ts.map +1 -0
- package/dist/dto/create-task.dto.js +50 -0
- package/dist/dto/create-task.dto.js.map +1 -0
- package/dist/dto/create-time-off-request.dto.d.ts +9 -0
- package/dist/dto/create-time-off-request.dto.d.ts.map +1 -0
- package/dist/dto/create-time-off-request.dto.js +54 -0
- package/dist/dto/create-time-off-request.dto.js.map +1 -0
- package/dist/dto/create-timesheet-entry.dto.d.ts +12 -0
- package/dist/dto/create-timesheet-entry.dto.d.ts.map +1 -0
- package/dist/dto/create-timesheet-entry.dto.js +75 -0
- package/dist/dto/create-timesheet-entry.dto.js.map +1 -0
- package/dist/dto/list-collaborator-types.dto.d.ts +4 -0
- package/dist/dto/list-collaborator-types.dto.d.ts.map +1 -0
- package/dist/dto/list-collaborator-types.dto.js +29 -0
- package/dist/dto/list-collaborator-types.dto.js.map +1 -0
- package/dist/dto/list-collaborators.dto.d.ts +8 -0
- package/dist/dto/list-collaborators.dto.d.ts.map +1 -0
- package/dist/dto/list-collaborators.dto.js +42 -0
- package/dist/dto/list-collaborators.dto.js.map +1 -0
- package/dist/dto/list-project-options.dto.d.ts +4 -0
- package/dist/dto/list-project-options.dto.d.ts.map +1 -0
- package/dist/dto/list-project-options.dto.js +8 -0
- package/dist/dto/list-project-options.dto.js.map +1 -0
- package/dist/dto/list-tasks.dto.d.ts +7 -0
- package/dist/dto/list-tasks.dto.d.ts.map +1 -0
- package/dist/dto/list-tasks.dto.js +38 -0
- package/dist/dto/list-tasks.dto.js.map +1 -0
- package/dist/dto/list-timesheet-entries.dto.d.ts +10 -0
- package/dist/dto/list-timesheet-entries.dto.d.ts.map +1 -0
- package/dist/dto/list-timesheet-entries.dto.js +54 -0
- package/dist/dto/list-timesheet-entries.dto.js.map +1 -0
- package/dist/dto/update-collaborator-type.dto.d.ts +4 -0
- package/dist/dto/update-collaborator-type.dto.d.ts.map +1 -0
- package/dist/dto/update-collaborator-type.dto.js +8 -0
- package/dist/dto/update-collaborator-type.dto.js.map +1 -0
- package/dist/dto/update-collaborator.dto.d.ts +4 -0
- package/dist/dto/update-collaborator.dto.d.ts.map +1 -0
- package/dist/dto/update-collaborator.dto.js +8 -0
- package/dist/dto/update-collaborator.dto.js.map +1 -0
- package/dist/dto/update-task.dto.d.ts +8 -0
- package/dist/dto/update-task.dto.d.ts.map +1 -0
- package/dist/dto/update-task.dto.js +51 -0
- package/dist/dto/update-task.dto.js.map +1 -0
- package/dist/operations.controller.d.ts +0 -1045
- package/dist/operations.controller.d.ts.map +1 -1
- package/dist/operations.controller.js +0 -429
- package/dist/operations.controller.js.map +1 -1
- package/dist/operations.module.d.ts.map +1 -1
- package/dist/operations.module.js +23 -2
- package/dist/operations.module.js.map +1 -1
- package/dist/operations.service.d.ts +373 -8
- package/dist/operations.service.d.ts.map +1 -1
- package/dist/operations.service.js +1598 -111
- package/dist/operations.service.js.map +1 -1
- package/dist/operations.service.spec.js +315 -1
- package/dist/operations.service.spec.js.map +1 -1
- package/dist/services/shared/operations-access.service.d.ts +16 -0
- package/dist/services/shared/operations-access.service.d.ts.map +1 -0
- package/dist/services/shared/operations-access.service.js +48 -0
- package/dist/services/shared/operations-access.service.js.map +1 -0
- package/hedhog/data/dashboard.yaml +20 -0
- package/hedhog/data/dashboard_component.yaml +274 -0
- package/hedhog/data/dashboard_component_role.yaml +174 -0
- package/hedhog/data/dashboard_item.yaml +299 -0
- package/hedhog/data/dashboard_role.yaml +20 -0
- package/hedhog/data/menu.yaml +30 -13
- package/hedhog/data/operations_collaborator_type.yaml +76 -0
- package/hedhog/data/route.yaml +183 -0
- package/hedhog/frontend/app/_components/async-options-combobox.tsx.ejs +231 -0
- package/hedhog/frontend/app/_components/collaborator-details-screen.tsx.ejs +134 -49
- package/hedhog/frontend/app/_components/collaborator-form-screen.tsx.ejs +772 -93
- package/hedhog/frontend/app/_components/department-select-with-create.tsx.ejs +38 -16
- package/hedhog/frontend/app/_components/project-form-screen.tsx.ejs +875 -632
- package/hedhog/frontend/app/_components/timesheet-task-create-sheet.tsx.ejs +213 -0
- package/hedhog/frontend/app/_lib/api.ts.ejs +30 -1
- package/hedhog/frontend/app/_lib/types.ts.ejs +142 -39
- package/hedhog/frontend/app/_lib/utils/format.ts.ejs +33 -2
- package/hedhog/frontend/app/approvals/page.tsx.ejs +116 -98
- package/hedhog/frontend/app/collaborator-types/page.tsx.ejs +502 -0
- package/hedhog/frontend/app/collaborators/page.tsx.ejs +109 -68
- package/hedhog/frontend/app/contracts/page.tsx.ejs +99 -102
- package/hedhog/frontend/app/contracts/templates/page.tsx.ejs +98 -102
- package/hedhog/frontend/app/departments/page.tsx.ejs +96 -75
- package/hedhog/frontend/app/projects/page.tsx.ejs +137 -127
- package/hedhog/frontend/app/schedule-adjustments/page.tsx.ejs +244 -120
- package/hedhog/frontend/app/team/page.tsx.ejs +15 -2
- package/hedhog/frontend/app/time-off/page.tsx.ejs +158 -82
- package/hedhog/frontend/app/timesheets/page.tsx.ejs +814 -357
- package/hedhog/frontend/messages/en.json +243 -51
- package/hedhog/frontend/messages/pt.json +458 -268
- package/hedhog/table/operations_collaborator.yaml +26 -13
- package/hedhog/table/operations_collaborator_equity_participation.yaml +43 -0
- package/hedhog/table/operations_collaborator_type.yaml +33 -0
- package/hedhog/table/operations_job_title.yaml +24 -0
- package/hedhog/table/operations_project_assignment.yaml +9 -0
- package/hedhog/table/operations_project_role.yaml +39 -0
- package/hedhog/table/operations_task.yaml +30 -0
- package/hedhog/table/operations_timesheet_entry.yaml +12 -0
- package/package.json +6 -6
- package/src/controllers/operations-approvals.controller.ts +24 -0
- package/src/controllers/operations-collaborators.controller.ts +60 -0
- package/src/controllers/operations-contracts.controller.ts +138 -0
- package/src/controllers/operations-org-structure.controller.ts +92 -0
- package/src/controllers/operations-projects.controller.ts +50 -0
- package/src/controllers/operations-tasks.controller.ts +52 -0
- package/src/controllers/operations-timesheets.controller.ts +100 -0
- package/src/dto/create-collaborator-type.dto.ts +43 -0
- package/src/dto/create-collaborator.dto.ts +223 -0
- package/src/dto/create-schedule-adjustment-request.dto.ts +91 -0
- package/src/dto/create-task.dto.ts +35 -0
- package/src/dto/create-time-off-request.dto.ts +53 -0
- package/src/dto/create-timesheet-entry.dto.ts +67 -0
- package/src/dto/list-collaborator-types.dto.ts +15 -0
- package/src/dto/list-collaborators.dto.ts +30 -0
- package/src/dto/list-project-options.dto.ts +3 -0
- package/src/dto/list-tasks.dto.ts +25 -0
- package/src/dto/list-timesheet-entries.dto.ts +40 -0
- package/src/dto/update-collaborator-type.dto.ts +3 -0
- package/src/dto/update-collaborator.dto.ts +3 -0
- package/src/dto/update-task.dto.ts +36 -0
- package/src/operations.controller.ts +1 -278
- package/src/operations.module.ts +23 -2
- package/src/operations.service.spec.ts +450 -0
- package/src/operations.service.ts +4641 -2163
- package/src/services/shared/operations-access.service.ts +52 -0
package/README.md
CHANGED
|
@@ -2,70 +2,166 @@
|
|
|
2
2
|
|
|
3
3
|
## 1. Visão geral do módulo
|
|
4
4
|
|
|
5
|
-
O módulo `@hed-hog/operations`
|
|
5
|
+
O módulo `@hed-hog/operations` oferece funcionalidades completas para a gestão operacional dentro do ecossistema HedHog. Ele integra-se com módulos de paginação, localização, banco de dados via Prisma, além de módulos de AI, arquivos, integrações e configurações. Disponibiliza uma ampla gama de endpoints para gerenciamento de colaboradores, departamentos, cargos, projetos, tarefas, contratos, folhas de ponto, aprovações, entre outros recursos operacionais.
|
|
6
6
|
|
|
7
7
|
## 2. Escopo e responsabilidades
|
|
8
8
|
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
9
|
+
- Gerenciar colaboradores, departamentos e cargos.
|
|
10
|
+
- Controlar projetos, tarefas e alocações.
|
|
11
|
+
- Administrar contratos e modelos de contratos.
|
|
12
|
+
- Gerenciar folhas de ponto (timesheets) e entradas de timesheet.
|
|
13
|
+
- Controlar solicitações de folgas e ajustes de agenda.
|
|
14
|
+
- Gerenciar processos de aprovação.
|
|
15
|
+
- Integrar com sistemas externos via endpoints de integração.
|
|
16
|
+
- Garantir controle de acesso baseado em papéis (roles).
|
|
17
|
+
- Suportar operações administrativas e operacionais detalhadas.
|
|
13
18
|
|
|
14
19
|
## 3. Endpoints
|
|
15
20
|
|
|
16
|
-
Todos os endpoints
|
|
21
|
+
Todos os endpoints requerem autenticação via token JWT e controle de papéis conforme definido no módulo.
|
|
17
22
|
|
|
18
|
-
| Método | Path
|
|
19
|
-
|
|
20
|
-
| GET | `/operations`
|
|
21
|
-
| GET | `/operations/
|
|
22
|
-
| GET | `/operations/
|
|
23
|
-
| GET | `/operations/
|
|
24
|
-
| GET | `/operations/
|
|
25
|
-
|
|
|
26
|
-
|
|
|
27
|
-
| GET | `/operations/
|
|
28
|
-
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
23
|
+
| Método | Path | Autenticação | Descrição | Parâmetros / Body | Resposta | Erros Comuns |
|
|
24
|
+
|--------|----------------------------------------------|--------------|---------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------|--------------------------------------------|------------------------------------|
|
|
25
|
+
| GET | `/operations/dashboard` | Sim | Retorna dados resumidos do dashboard operacional para o usuário autenticado. | - | JSON com dados do dashboard | 401, 403, 500 |
|
|
26
|
+
| GET | `/operations/collaborators` | Sim | Lista colaboradores visíveis para o usuário. | - | Lista JSON de colaboradores | 401, 403, 500 |
|
|
27
|
+
| GET | `/operations/collaborators/me` | Sim | Retorna dados do colaborador associado ao usuário autenticado. | - | JSON do colaborador | 401, 403, 500 |
|
|
28
|
+
| GET | `/operations/collaborators/:id` | Sim | Retorna detalhes de um colaborador específico pelo ID. | Path param: `id` (integer) | JSON do colaborador | 401, 403, 404, 500 |
|
|
29
|
+
| GET | `/operations/collaborators/team` | Sim | Retorna o time do usuário autenticado. | - | Lista JSON de colaboradores do time | 401, 403, 500 |
|
|
30
|
+
| POST | `/operations/collaborators` | Sim | Cria um novo colaborador. | Body: dados do colaborador (não detalhado) | JSON do colaborador criado | 401, 403, 400, 500 |
|
|
31
|
+
| PATCH | `/operations/collaborators/:id` | Sim | Atualiza dados de um colaborador existente. | Path param: `id` (integer), Body: dados para atualização | JSON do colaborador atualizado | 401, 403, 404, 400, 500 |
|
|
32
|
+
| GET | `/operations/departments` | Sim | Lista departamentos disponíveis. | - | Lista JSON de departamentos | 401, 403, 500 |
|
|
33
|
+
| POST | `/operations/departments` | Sim | Cria um novo departamento. | Body: dados do departamento (não detalhado) | JSON do departamento criado | 401, 403, 400, 500 |
|
|
34
|
+
| PATCH | `/operations/departments/:id` | Sim | Atualiza um departamento existente. | Path param: `id` (integer), Body: dados para atualização | JSON do departamento atualizado | 401, 403, 404, 400, 500 |
|
|
35
|
+
| GET | `/operations/job-titles` | Sim | Lista cargos (job titles) disponíveis. | - | Lista JSON de cargos | 401, 403, 500 |
|
|
36
|
+
| POST | `/operations/job-titles` | Sim | Cria um novo cargo. | Body: dados do cargo (não detalhado) | JSON do cargo criado | 401, 403, 400, 500 |
|
|
37
|
+
| GET | `/operations/projects/options` | Sim | Lista opções de projetos com paginação. | Query params: paginação via `ListOperationsProjectOptionsDto` | Lista paginada JSON de projetos | 401, 403, 500 |
|
|
38
|
+
| GET | `/operations/projects` | Sim | Lista todos os projetos visíveis para o usuário. | - | Lista JSON de projetos | 401, 403, 500 |
|
|
39
|
+
| GET | `/operations/projects/:id` | Sim | Retorna detalhes de um projeto específico. | Path param: `id` (integer) | JSON do projeto | 401, 403, 404, 500 |
|
|
40
|
+
| POST | `/operations/projects` | Sim | Cria um novo projeto. | Body: dados do projeto (não detalhado) | JSON do projeto criado | 401, 403, 400, 500 |
|
|
41
|
+
| PATCH | `/operations/projects/:id` | Sim | Atualiza um projeto existente. | Path param: `id` (integer), Body: dados para atualização | JSON do projeto atualizado | 401, 403, 404, 400, 500 |
|
|
42
|
+
| GET | `/operations/tasks` | Sim | Lista tarefas com filtros e paginação. | Query params: `projectId` (int), `projectAssignmentId` (int), `status` (active|completed|archived), paginação | Lista paginada JSON de tarefas | 401, 403, 500 |
|
|
43
|
+
| POST | `/operations/tasks` | Sim | Cria uma nova tarefa. | Body: `CreateOperationsTaskDto` | JSON da tarefa criada | 401, 403, 400, 500 |
|
|
44
|
+
| GET | `/operations/contract-templates` | Sim | Lista modelos de contratos. | - | Lista JSON de modelos de contratos | 401, 403, 500 |
|
|
45
|
+
| GET | `/operations/contract-templates/:id` | Sim | Retorna detalhes de um modelo de contrato. | Path param: `id` (integer) | JSON do modelo de contrato | 401, 403, 404, 500 |
|
|
46
|
+
| POST | `/operations/contract-templates` | Sim | Cria um novo modelo de contrato. | Body: dados do modelo (não detalhado) | JSON do modelo criado | 401, 403, 400, 500 |
|
|
47
|
+
| PATCH | `/operations/contract-templates/:id` | Sim | Atualiza um modelo de contrato existente. | Path param: `id` (integer), Body: dados para atualização | JSON do modelo atualizado | 401, 403, 404, 400, 500 |
|
|
48
|
+
| GET | `/operations/contracts` | Sim | Lista contratos. | - | Lista JSON de contratos | 401, 403, 500 |
|
|
49
|
+
| GET | `/operations/contracts/:id` | Sim | Retorna detalhes de um contrato específico. | Path param: `id` (integer) | JSON do contrato | 401, 403, 404, 500 |
|
|
50
|
+
| POST | `/operations/contracts/drafts` | Sim | Cria um rascunho de contrato. | Body: dados do rascunho (não detalhado) | JSON do rascunho criado | 401, 403, 400, 500 |
|
|
51
|
+
| POST | `/operations/contracts` | Sim | Cria um novo contrato. | Body: dados do contrato (não detalhado) | JSON do contrato criado | 401, 403, 400, 500 |
|
|
52
|
+
| POST | `/operations/contracts/extract-draft` | Sim | Extrai dados de um rascunho de contrato. | Body: dados para extração (não detalhado) | JSON com dados extraídos | 401, 403, 400, 500 |
|
|
53
|
+
| POST | `/operations/contracts/:id/extract-source` | Sim | Extrai fonte de um contrato existente. | Path param: `id` (integer), Body: dados para extração | JSON com fonte extraída | 401, 403, 404, 400, 500 |
|
|
54
|
+
| POST | `/operations/contracts/:id/generate-content` | Sim | Gera conteúdo do contrato com base em dados. | Path param: `id` (integer), Body: dados para geração | JSON com conteúdo gerado | 401, 403, 404, 400, 500 |
|
|
55
|
+
| POST | `/operations/contracts/:id/legal-review` | Sim | Solicita revisão legal do contrato. | Path param: `id` (integer), Body: dados para revisão | JSON com status da revisão | 401, 403, 404, 400, 500 |
|
|
56
|
+
| PATCH | `/operations/contracts/:id` | Sim | Atualiza um contrato existente. | Path param: `id` (integer), Body: dados para atualização | JSON do contrato atualizado | 401, 403, 404, 400, 500 |
|
|
57
|
+
| DELETE | `/operations/contracts/:id` | Sim | Remove um contrato. | Path param: `id` (integer) | JSON com confirmação | 401, 403, 404, 500 |
|
|
58
|
+
| POST | `/operations/contracts/:id/generate-pdf` | Sim | Gera PDF do contrato especificado. | Path param: `id` (integer) | PDF ou link para download | 401, 403, 404, 500 |
|
|
59
|
+
| GET | `/operations/timesheets` | Sim | Lista folhas de ponto (timesheets). | - | Lista JSON de timesheets | 401, 403, 500 |
|
|
60
|
+
| GET | `/operations/timesheet-entries` | Sim | Lista entradas de timesheet com filtros e paginação. | Query params: `projectId`, `projectAssignmentId`, `taskId`, `status` (draft|submitted|approved|rejected), `fromDate`, `toDate`, paginação | Lista paginada JSON de entradas | 401, 403, 500 |
|
|
61
|
+
| POST | `/operations/timesheet-entries` | Sim | Cria uma nova entrada de timesheet. | Body: `CreateTimesheetEntryDto` | JSON da entrada criada | 401, 403, 400, 500 |
|
|
62
|
+
| DELETE | `/operations/timesheet-entries/:id` | Sim | Remove uma entrada de timesheet. | Path param: `id` (integer) | JSON com confirmação | 401, 403, 404, 500 |
|
|
63
|
+
| POST | `/operations/timesheets` | Sim | Cria uma nova folha de ponto. | Body: dados da timesheet (não detalhado) | JSON da timesheet criada | 401, 403, 400, 500 |
|
|
64
|
+
| PATCH | `/operations/timesheets/:id` | Sim | Atualiza uma folha de ponto existente. | Path param: `id` (integer), Body: dados para atualização | JSON da timesheet atualizada | 401, 403, 404, 400, 500 |
|
|
65
|
+
| POST | `/operations/timesheets/:id/submit` | Sim | Submete uma folha de ponto para aprovação. | Path param: `id` (integer) | JSON com status da submissão | 401, 403, 404, 500 |
|
|
66
|
+
| GET | `/operations/time-off` | Sim | Lista solicitações de folga. | - | Lista JSON de solicitações | 401, 403, 500 |
|
|
67
|
+
| POST | `/operations/time-off` | Sim | Cria uma nova solicitação de folga. | Body: dados da solicitação (não detalhado) | JSON da solicitação criada | 401, 403, 400, 500 |
|
|
68
|
+
| GET | `/operations/schedule-adjustments` | Sim | Lista solicitações de ajustes de agenda. | - | Lista JSON de solicitações | 401, 403, 500 |
|
|
69
|
+
| POST | `/operations/schedule-adjustments` | Sim | Cria uma solicitação de ajuste de agenda. | Body: dados da solicitação (não detalhado) | JSON da solicitação criada | 401, 403, 400, 500 |
|
|
70
|
+
| GET | `/operations/approvals` | Sim | Lista processos de aprovação. | - | Lista JSON de aprovações | 401, 403, 500 |
|
|
71
|
+
| POST | `/operations/approvals/:id/approve` | Sim | Aprova um processo de aprovação. | Path param: `id` (integer), Body: dados para aprovação (não detalhado) | JSON com status atualizado | 401, 403, 404, 400, 500 |
|
|
72
|
+
| POST | `/operations/approvals/:id/reject` | Sim | Rejeita um processo de aprovação. | Path param: `id` (integer), Body: dados para rejeição (não detalhado) | JSON com status atualizado | 401, 403, 404, 400, 500 |
|
|
73
|
+
| POST | `/operations/integration/examples/accounts-payable` | Sim | Publica referência para contas a pagar (exemplo de integração). | Body: dados da referência (não detalhado) | JSON com resultado da publicação | 401, 403, 400, 500 |
|
|
74
|
+
| GET | `/operations/team` | Sim | Retorna o time do supervisor (equivalente a `/operations/collaborators/team`). | - | Lista JSON de colaboradores do time | 401, 403, 500 |
|
|
37
75
|
|
|
38
76
|
## 4. Regras de autenticação e autorização
|
|
39
77
|
|
|
40
|
-
- Todos os endpoints
|
|
41
|
-
- O acesso é restrito a usuários com
|
|
42
|
-
- A verificação de papéis é
|
|
78
|
+
- Todos os endpoints requerem autenticação via token JWT.
|
|
79
|
+
- O acesso é restrito a usuários com papéis (`roles`) definidos, geralmente `admin` ou `admin-operations`.
|
|
80
|
+
- A verificação de papéis é realizada via decoradores e configurações no arquivo `route.yaml`.
|
|
81
|
+
- Usuários sem os papéis necessários recebem erro 403 Forbidden.
|
|
82
|
+
- Usuários não autenticados recebem erro 401 Unauthorized.
|
|
43
83
|
|
|
44
84
|
## 5. Estruturas de request/response
|
|
45
85
|
|
|
46
|
-
|
|
86
|
+
### DTOs principais para criação e listagem
|
|
87
|
+
|
|
88
|
+
- **CreateOperationsTaskDto**
|
|
89
|
+
|
|
90
|
+
```ts
|
|
91
|
+
{
|
|
92
|
+
projectId?: number; // opcional, inteiro
|
|
93
|
+
projectAssignmentId?: number; // opcional, inteiro
|
|
94
|
+
name: string; // obrigatório, string, máximo 180 caracteres
|
|
95
|
+
description?: string; // opcional, string, máximo 500 caracteres
|
|
96
|
+
status?: 'active' | 'completed' | 'archived'; // opcional, string enum
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
- **CreateTimesheetEntryDto**
|
|
101
|
+
|
|
102
|
+
```ts
|
|
103
|
+
{
|
|
104
|
+
projectId?: number; // opcional, inteiro
|
|
105
|
+
projectAssignmentId?: number; // opcional, inteiro
|
|
106
|
+
taskId?: number; // opcional, inteiro
|
|
107
|
+
taskName?: string; // opcional, string, máximo 180 caracteres
|
|
108
|
+
activityLabel?: string; // opcional, string, máximo 180 caracteres
|
|
109
|
+
workDate: string; // obrigatório, string ISO date
|
|
110
|
+
duration: number; // obrigatório, número > 0
|
|
111
|
+
unit?: 'hours' | 'minutes'; // opcional, string enum
|
|
112
|
+
description?: string; // opcional, string, máximo 500 caracteres
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
- **ListOperationsProjectOptionsDto**, **ListOperationsTasksDto** e **ListTimesheetEntriesDto** suportam paginação e filtros opcionais conforme descrito nos parâmetros dos endpoints.
|
|
117
|
+
|
|
118
|
+
### Respostas
|
|
119
|
+
|
|
120
|
+
- Respostas são JSON contendo listas ou objetos dos recursos solicitados.
|
|
121
|
+
- Para geração de PDF, a resposta pode ser um arquivo binário ou link para download.
|
|
47
122
|
|
|
48
123
|
## 6. Erros comuns
|
|
49
124
|
|
|
50
125
|
- **401 Unauthorized:** Usuário não autenticado.
|
|
51
|
-
- **403 Forbidden:** Usuário autenticado, mas sem os papéis necessários
|
|
126
|
+
- **403 Forbidden:** Usuário autenticado, mas sem os papéis necessários.
|
|
52
127
|
- **404 Not Found:** Recurso com o `id` especificado não encontrado.
|
|
128
|
+
- **400 Bad Request:** Dados inválidos ou incompletos no corpo da requisição.
|
|
53
129
|
- **500 Internal Server Error:** Erro inesperado no servidor.
|
|
54
130
|
|
|
55
131
|
## 7. Banco de dados (tabelas YAML)
|
|
56
132
|
|
|
57
|
-
Não foram fornecidos arquivos YAML
|
|
133
|
+
Não foram fornecidos arquivos YAML específicos para as tabelas do módulo `operations`. O acesso ao banco é realizado via Prisma, e as entidades envolvidas incluem:
|
|
134
|
+
|
|
135
|
+
- **Colaboradores:** informações pessoais, cargos, departamentos, times.
|
|
136
|
+
- **Departamentos:** nome, descrição, hierarquia.
|
|
137
|
+
- **Cargos (Job Titles):** nome, descrição, nível.
|
|
138
|
+
- **Projetos:** nome, descrição, datas, status.
|
|
139
|
+
- **Tarefas:** associadas a projetos e alocações, status, descrição.
|
|
140
|
+
- **Modelos de Contratos:** templates para contratos.
|
|
141
|
+
- **Contratos:** dados contratuais, status, datas, conteúdo gerado.
|
|
142
|
+
- **Folhas de Ponto (Timesheets):** períodos, status, entradas.
|
|
143
|
+
- **Entradas de Timesheet:** data, duração, tarefa, descrição.
|
|
144
|
+
- **Solicitações de Folga:** datas, tipo, status.
|
|
145
|
+
- **Ajustes de Agenda:** datas, motivo, status.
|
|
146
|
+
- **Processos de Aprovação:** tipo, status, histórico.
|
|
147
|
+
|
|
148
|
+
Cada entidade possui integridade referencial e índices para otimizar consultas, conforme modelagem Prisma interna.
|
|
58
149
|
|
|
59
150
|
## 8. Regras de negócio relevantes
|
|
60
151
|
|
|
61
|
-
- O módulo é destinado
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
152
|
+
- O módulo é destinado a uso administrativo e operacional, com acesso controlado por papéis.
|
|
153
|
+
- Colaboradores podem ser gerenciados, incluindo criação, atualização e consulta.
|
|
154
|
+
- Projetos e tarefas possuem status e podem ser filtrados e paginados.
|
|
155
|
+
- Contratos suportam rascunhos, extração de conteúdo, geração de PDF e revisão legal.
|
|
156
|
+
- Folhas de ponto e entradas de timesheet suportam criação, atualização, submissão e listagem com filtros.
|
|
157
|
+
- Solicitações de folga e ajustes de agenda são gerenciadas via endpoints específicos.
|
|
158
|
+
- Processos de aprovação podem ser aprovados ou rejeitados via endpoints dedicados.
|
|
159
|
+
- Integrações externas são suportadas por endpoints específicos para publicação de dados.
|
|
160
|
+
- Paginação e localização são integradas para melhor experiência e performance.
|
|
65
161
|
|
|
66
162
|
## 9. Guia rápido de uso (exemplos)
|
|
67
163
|
|
|
68
|
-
###
|
|
164
|
+
### Listar contratos
|
|
69
165
|
|
|
70
166
|
```http
|
|
71
167
|
GET /operations/contracts HTTP/1.1
|
|
@@ -74,19 +170,19 @@ Authorization: Bearer <token_de_acesso>
|
|
|
74
170
|
Accept: application/json
|
|
75
171
|
```
|
|
76
172
|
|
|
77
|
-
|
|
173
|
+
Resposta:
|
|
78
174
|
|
|
79
175
|
```json
|
|
80
176
|
[
|
|
81
177
|
{
|
|
82
|
-
"id":
|
|
178
|
+
"id": 123,
|
|
83
179
|
"name": "Contrato A",
|
|
84
180
|
"startDate": "2023-01-01",
|
|
85
181
|
"endDate": "2023-12-31",
|
|
86
182
|
"status": "ativo"
|
|
87
183
|
},
|
|
88
184
|
{
|
|
89
|
-
"id":
|
|
185
|
+
"id": 124,
|
|
90
186
|
"name": "Contrato B",
|
|
91
187
|
"startDate": "2023-02-01",
|
|
92
188
|
"endDate": "2023-11-30",
|
|
@@ -95,7 +191,7 @@ Accept: application/json
|
|
|
95
191
|
]
|
|
96
192
|
```
|
|
97
193
|
|
|
98
|
-
###
|
|
194
|
+
### Obter detalhes de um projeto
|
|
99
195
|
|
|
100
196
|
```http
|
|
101
197
|
GET /operations/projects/456 HTTP/1.1
|
|
@@ -104,11 +200,11 @@ Authorization: Bearer <token_de_acesso>
|
|
|
104
200
|
Accept: application/json
|
|
105
201
|
```
|
|
106
202
|
|
|
107
|
-
|
|
203
|
+
Resposta:
|
|
108
204
|
|
|
109
205
|
```json
|
|
110
206
|
{
|
|
111
|
-
"id":
|
|
207
|
+
"id": 456,
|
|
112
208
|
"name": "Projeto X",
|
|
113
209
|
"description": "Descrição detalhada do projeto X",
|
|
114
210
|
"startDate": "2023-03-01",
|
|
@@ -117,6 +213,67 @@ Accept: application/json
|
|
|
117
213
|
}
|
|
118
214
|
```
|
|
119
215
|
|
|
216
|
+
### Criar uma tarefa
|
|
217
|
+
|
|
218
|
+
```http
|
|
219
|
+
POST /operations/tasks HTTP/1.1
|
|
220
|
+
Host: api.hed-hog.com
|
|
221
|
+
Authorization: Bearer <token_de_acesso>
|
|
222
|
+
Content-Type: application/json
|
|
223
|
+
|
|
224
|
+
{
|
|
225
|
+
"projectId": 456,
|
|
226
|
+
"name": "Desenvolvimento Backend",
|
|
227
|
+
"description": "Implementar API REST",
|
|
228
|
+
"status": "active"
|
|
229
|
+
}
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
Resposta:
|
|
233
|
+
|
|
234
|
+
```json
|
|
235
|
+
{
|
|
236
|
+
"id": 789,
|
|
237
|
+
"projectId": 456,
|
|
238
|
+
"name": "Desenvolvimento Backend",
|
|
239
|
+
"description": "Implementar API REST",
|
|
240
|
+
"status": "active"
|
|
241
|
+
}
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### Criar uma entrada de timesheet
|
|
245
|
+
|
|
246
|
+
```http
|
|
247
|
+
POST /operations/timesheet-entries HTTP/1.1
|
|
248
|
+
Host: api.hed-hog.com
|
|
249
|
+
Authorization: Bearer <token_de_acesso>
|
|
250
|
+
Content-Type: application/json
|
|
251
|
+
|
|
252
|
+
{
|
|
253
|
+
"projectId": 456,
|
|
254
|
+
"taskId": 789,
|
|
255
|
+
"workDate": "2024-05-20",
|
|
256
|
+
"duration": 4,
|
|
257
|
+
"unit": "hours",
|
|
258
|
+
"description": "Desenvolvimento de endpoints"
|
|
259
|
+
}
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
Resposta:
|
|
263
|
+
|
|
264
|
+
```json
|
|
265
|
+
{
|
|
266
|
+
"id": 1011,
|
|
267
|
+
"projectId": 456,
|
|
268
|
+
"taskId": 789,
|
|
269
|
+
"workDate": "2024-05-20",
|
|
270
|
+
"duration": 4,
|
|
271
|
+
"unit": "hours",
|
|
272
|
+
"description": "Desenvolvimento de endpoints",
|
|
273
|
+
"status": "draft"
|
|
274
|
+
}
|
|
275
|
+
```
|
|
276
|
+
|
|
120
277
|
---
|
|
121
278
|
|
|
122
|
-
**Nota:** Para
|
|
279
|
+
**Nota:** Para acessar os endpoints, o token JWT deve conter os papéis `admin` ou `admin-operations`. Utilize os parâmetros de paginação e filtros conforme necessário para otimizar consultas.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { OperationsService } from '../operations.service';
|
|
2
|
+
export declare class OperationsApprovalsController {
|
|
3
|
+
private readonly operationsService;
|
|
4
|
+
constructor(operationsService: OperationsService);
|
|
5
|
+
listApprovals(user: any): Promise<Record<string, unknown>[]>;
|
|
6
|
+
approve(user: any, id: number, data: any): Promise<Record<string, unknown>>;
|
|
7
|
+
reject(user: any, id: number, data: any): Promise<Record<string, unknown>>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=operations-approvals.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations-approvals.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/operations-approvals.controller.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,qBAEa,6BAA6B;IAC5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAAjB,iBAAiB,EAAE,iBAAiB;IAGjE,aAAa,CAAS,IAAI,KAAA;IAK1B,OAAO,CAAS,IAAI,KAAA,EAA6B,EAAE,EAAE,MAAM,EAAU,IAAI,KAAA;IAKzE,MAAM,CAAS,IAAI,KAAA,EAA6B,EAAE,EAAE,MAAM,EAAU,IAAI,KAAA;CAGzE"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.OperationsApprovalsController = void 0;
|
|
16
|
+
const api_1 = require("@hed-hog/api");
|
|
17
|
+
const common_1 = require("@nestjs/common");
|
|
18
|
+
const operations_service_1 = require("../operations.service");
|
|
19
|
+
let OperationsApprovalsController = class OperationsApprovalsController {
|
|
20
|
+
constructor(operationsService) {
|
|
21
|
+
this.operationsService = operationsService;
|
|
22
|
+
}
|
|
23
|
+
listApprovals(user) {
|
|
24
|
+
return this.operationsService.listApprovals(Number((user === null || user === void 0 ? void 0 : user.id) || 0));
|
|
25
|
+
}
|
|
26
|
+
approve(user, id, data) {
|
|
27
|
+
return this.operationsService.approve(Number((user === null || user === void 0 ? void 0 : user.id) || 0), id, data);
|
|
28
|
+
}
|
|
29
|
+
reject(user, id, data) {
|
|
30
|
+
return this.operationsService.reject(Number((user === null || user === void 0 ? void 0 : user.id) || 0), id, data);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
exports.OperationsApprovalsController = OperationsApprovalsController;
|
|
34
|
+
__decorate([
|
|
35
|
+
(0, common_1.Get)('approvals'),
|
|
36
|
+
__param(0, (0, api_1.User)()),
|
|
37
|
+
__metadata("design:type", Function),
|
|
38
|
+
__metadata("design:paramtypes", [Object]),
|
|
39
|
+
__metadata("design:returntype", void 0)
|
|
40
|
+
], OperationsApprovalsController.prototype, "listApprovals", null);
|
|
41
|
+
__decorate([
|
|
42
|
+
(0, common_1.Post)('approvals/:id/approve'),
|
|
43
|
+
__param(0, (0, api_1.User)()),
|
|
44
|
+
__param(1, (0, common_1.Param)('id', common_1.ParseIntPipe)),
|
|
45
|
+
__param(2, (0, common_1.Body)()),
|
|
46
|
+
__metadata("design:type", Function),
|
|
47
|
+
__metadata("design:paramtypes", [Object, Number, Object]),
|
|
48
|
+
__metadata("design:returntype", void 0)
|
|
49
|
+
], OperationsApprovalsController.prototype, "approve", null);
|
|
50
|
+
__decorate([
|
|
51
|
+
(0, common_1.Post)('approvals/:id/reject'),
|
|
52
|
+
__param(0, (0, api_1.User)()),
|
|
53
|
+
__param(1, (0, common_1.Param)('id', common_1.ParseIntPipe)),
|
|
54
|
+
__param(2, (0, common_1.Body)()),
|
|
55
|
+
__metadata("design:type", Function),
|
|
56
|
+
__metadata("design:paramtypes", [Object, Number, Object]),
|
|
57
|
+
__metadata("design:returntype", void 0)
|
|
58
|
+
], OperationsApprovalsController.prototype, "reject", null);
|
|
59
|
+
exports.OperationsApprovalsController = OperationsApprovalsController = __decorate([
|
|
60
|
+
(0, api_1.Role)(),
|
|
61
|
+
(0, common_1.Controller)('operations'),
|
|
62
|
+
__metadata("design:paramtypes", [operations_service_1.OperationsService])
|
|
63
|
+
], OperationsApprovalsController);
|
|
64
|
+
//# sourceMappingURL=operations-approvals.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations-approvals.controller.js","sourceRoot":"","sources":["../../src/controllers/operations-approvals.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,sCAA0C;AAC1C,2CAAkF;AAClF,8DAA0D;AAInD,IAAM,6BAA6B,GAAnC,MAAM,6BAA6B;IACxC,YAA6B,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;IAAG,CAAC;IAGrE,aAAa,CAAS,IAAI;QACxB,OAAO,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE,KAAI,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC;IAGD,OAAO,CAAS,IAAI,EAA6B,EAAU,EAAU,IAAI;QACvE,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE,KAAI,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IACzE,CAAC;IAGD,MAAM,CAAS,IAAI,EAA6B,EAAU,EAAU,IAAI;QACtE,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE,KAAI,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IACxE,CAAC;CACF,CAAA;AAjBY,sEAA6B;AAIxC;IADC,IAAA,YAAG,EAAC,WAAW,CAAC;IACF,WAAA,IAAA,UAAI,GAAE,CAAA;;;;kEAEpB;AAGD;IADC,IAAA,aAAI,EAAC,uBAAuB,CAAC;IACrB,WAAA,IAAA,UAAI,GAAE,CAAA;IAAQ,WAAA,IAAA,cAAK,EAAC,IAAI,EAAE,qBAAY,CAAC,CAAA;IAAc,WAAA,IAAA,aAAI,GAAE,CAAA;;;;4DAEnE;AAGD;IADC,IAAA,aAAI,EAAC,sBAAsB,CAAC;IACrB,WAAA,IAAA,UAAI,GAAE,CAAA;IAAQ,WAAA,IAAA,cAAK,EAAC,IAAI,EAAE,qBAAY,CAAC,CAAA;IAAc,WAAA,IAAA,aAAI,GAAE,CAAA;;;;2DAElE;wCAhBU,6BAA6B;IAFzC,IAAA,UAAI,GAAE;IACN,IAAA,mBAAU,EAAC,YAAY,CAAC;qCAEyB,sCAAiB;GADtD,6BAA6B,CAiBzC"}
|