@hed-hog/operations 0.0.303 → 0.0.305

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.
Files changed (178) hide show
  1. package/README.md +200 -43
  2. package/dist/controllers/operations-approvals.controller.d.ts +9 -0
  3. package/dist/controllers/operations-approvals.controller.d.ts.map +1 -0
  4. package/dist/controllers/operations-approvals.controller.js +64 -0
  5. package/dist/controllers/operations-approvals.controller.js.map +1 -0
  6. package/dist/controllers/operations-collaborators.controller.d.ts +223 -0
  7. package/dist/controllers/operations-collaborators.controller.d.ts.map +1 -0
  8. package/dist/controllers/operations-collaborators.controller.js +96 -0
  9. package/dist/controllers/operations-collaborators.controller.js.map +1 -0
  10. package/dist/controllers/operations-contracts.controller.d.ts +683 -0
  11. package/dist/controllers/operations-contracts.controller.d.ts.map +1 -0
  12. package/dist/controllers/operations-contracts.controller.js +198 -0
  13. package/dist/controllers/operations-contracts.controller.js.map +1 -0
  14. package/dist/controllers/operations-org-structure.controller.d.ts +108 -0
  15. package/dist/controllers/operations-org-structure.controller.d.ts.map +1 -0
  16. package/dist/controllers/operations-org-structure.controller.js +143 -0
  17. package/dist/controllers/operations-org-structure.controller.js.map +1 -0
  18. package/dist/controllers/operations-projects.controller.d.ts +184 -0
  19. package/dist/controllers/operations-projects.controller.d.ts.map +1 -0
  20. package/dist/controllers/operations-projects.controller.js +87 -0
  21. package/dist/controllers/operations-projects.controller.js.map +1 -0
  22. package/dist/controllers/operations-tasks.controller.d.ts +85 -0
  23. package/dist/controllers/operations-tasks.controller.d.ts.map +1 -0
  24. package/dist/controllers/operations-tasks.controller.js +90 -0
  25. package/dist/controllers/operations-tasks.controller.js.map +1 -0
  26. package/dist/controllers/operations-timesheets.controller.d.ts +99 -0
  27. package/dist/controllers/operations-timesheets.controller.d.ts.map +1 -0
  28. package/dist/controllers/operations-timesheets.controller.js +154 -0
  29. package/dist/controllers/operations-timesheets.controller.js.map +1 -0
  30. package/dist/dto/create-collaborator-type.dto.d.ts +10 -0
  31. package/dist/dto/create-collaborator-type.dto.d.ts.map +1 -0
  32. package/dist/dto/create-collaborator-type.dto.js +56 -0
  33. package/dist/dto/create-collaborator-type.dto.js.map +1 -0
  34. package/dist/dto/create-collaborator.dto.d.ts +42 -0
  35. package/dist/dto/create-collaborator.dto.d.ts.map +1 -0
  36. package/dist/dto/create-collaborator.dto.js +228 -0
  37. package/dist/dto/create-collaborator.dto.js.map +1 -0
  38. package/dist/dto/create-schedule-adjustment-request.dto.d.ts +17 -0
  39. package/dist/dto/create-schedule-adjustment-request.dto.d.ts.map +1 -0
  40. package/dist/dto/create-schedule-adjustment-request.dto.js +89 -0
  41. package/dist/dto/create-schedule-adjustment-request.dto.js.map +1 -0
  42. package/dist/dto/create-task.dto.d.ts +14 -0
  43. package/dist/dto/create-task.dto.d.ts.map +1 -0
  44. package/dist/dto/create-task.dto.js +83 -0
  45. package/dist/dto/create-task.dto.js.map +1 -0
  46. package/dist/dto/create-time-off-request.dto.d.ts +9 -0
  47. package/dist/dto/create-time-off-request.dto.d.ts.map +1 -0
  48. package/dist/dto/create-time-off-request.dto.js +54 -0
  49. package/dist/dto/create-time-off-request.dto.js.map +1 -0
  50. package/dist/dto/create-timesheet-entry.dto.d.ts +12 -0
  51. package/dist/dto/create-timesheet-entry.dto.d.ts.map +1 -0
  52. package/dist/dto/create-timesheet-entry.dto.js +75 -0
  53. package/dist/dto/create-timesheet-entry.dto.js.map +1 -0
  54. package/dist/dto/list-collaborator-types.dto.d.ts +4 -0
  55. package/dist/dto/list-collaborator-types.dto.d.ts.map +1 -0
  56. package/dist/dto/list-collaborator-types.dto.js +29 -0
  57. package/dist/dto/list-collaborator-types.dto.js.map +1 -0
  58. package/dist/dto/list-collaborators.dto.d.ts +8 -0
  59. package/dist/dto/list-collaborators.dto.d.ts.map +1 -0
  60. package/dist/dto/list-collaborators.dto.js +42 -0
  61. package/dist/dto/list-collaborators.dto.js.map +1 -0
  62. package/dist/dto/list-project-options.dto.d.ts +4 -0
  63. package/dist/dto/list-project-options.dto.d.ts.map +1 -0
  64. package/dist/dto/list-project-options.dto.js +8 -0
  65. package/dist/dto/list-project-options.dto.js.map +1 -0
  66. package/dist/dto/list-tasks.dto.d.ts +7 -0
  67. package/dist/dto/list-tasks.dto.d.ts.map +1 -0
  68. package/dist/dto/list-tasks.dto.js +38 -0
  69. package/dist/dto/list-tasks.dto.js.map +1 -0
  70. package/dist/dto/list-timesheet-entries.dto.d.ts +10 -0
  71. package/dist/dto/list-timesheet-entries.dto.d.ts.map +1 -0
  72. package/dist/dto/list-timesheet-entries.dto.js +54 -0
  73. package/dist/dto/list-timesheet-entries.dto.js.map +1 -0
  74. package/dist/dto/update-collaborator-type.dto.d.ts +4 -0
  75. package/dist/dto/update-collaborator-type.dto.d.ts.map +1 -0
  76. package/dist/dto/update-collaborator-type.dto.js +8 -0
  77. package/dist/dto/update-collaborator-type.dto.js.map +1 -0
  78. package/dist/dto/update-collaborator.dto.d.ts +4 -0
  79. package/dist/dto/update-collaborator.dto.d.ts.map +1 -0
  80. package/dist/dto/update-collaborator.dto.js +8 -0
  81. package/dist/dto/update-collaborator.dto.js.map +1 -0
  82. package/dist/dto/update-task.dto.d.ts +14 -0
  83. package/dist/dto/update-task.dto.d.ts.map +1 -0
  84. package/dist/dto/update-task.dto.js +84 -0
  85. package/dist/dto/update-task.dto.js.map +1 -0
  86. package/dist/operations.controller.d.ts +0 -1045
  87. package/dist/operations.controller.d.ts.map +1 -1
  88. package/dist/operations.controller.js +0 -429
  89. package/dist/operations.controller.js.map +1 -1
  90. package/dist/operations.module.d.ts.map +1 -1
  91. package/dist/operations.module.js +23 -2
  92. package/dist/operations.module.js.map +1 -1
  93. package/dist/operations.service.d.ts +429 -8
  94. package/dist/operations.service.d.ts.map +1 -1
  95. package/dist/operations.service.js +1931 -165
  96. package/dist/operations.service.js.map +1 -1
  97. package/dist/operations.service.spec.js +315 -1
  98. package/dist/operations.service.spec.js.map +1 -1
  99. package/dist/services/shared/operations-access.service.d.ts +16 -0
  100. package/dist/services/shared/operations-access.service.d.ts.map +1 -0
  101. package/dist/services/shared/operations-access.service.js +48 -0
  102. package/dist/services/shared/operations-access.service.js.map +1 -0
  103. package/hedhog/data/dashboard.yaml +20 -0
  104. package/hedhog/data/dashboard_component.yaml +274 -0
  105. package/hedhog/data/dashboard_component_role.yaml +174 -0
  106. package/hedhog/data/dashboard_item.yaml +299 -0
  107. package/hedhog/data/dashboard_role.yaml +20 -0
  108. package/hedhog/data/menu.yaml +30 -13
  109. package/hedhog/data/operations_collaborator_type.yaml +76 -0
  110. package/hedhog/data/route.yaml +196 -0
  111. package/hedhog/frontend/app/_components/async-options-combobox.tsx.ejs +231 -0
  112. package/hedhog/frontend/app/_components/collaborator-details-screen.tsx.ejs +125 -40
  113. package/hedhog/frontend/app/_components/collaborator-form-screen.tsx.ejs +740 -106
  114. package/hedhog/frontend/app/_components/collaborator-select-with-create.tsx.ejs +256 -256
  115. package/hedhog/frontend/app/_components/contract-form-screen.tsx.ejs +7 -7
  116. package/hedhog/frontend/app/_components/contract-template-form-screen.tsx.ejs +306 -306
  117. package/hedhog/frontend/app/_components/contract-template-select-with-create.tsx.ejs +247 -247
  118. package/hedhog/frontend/app/_components/contract-wizard-sheet.tsx.ejs +3520 -3520
  119. package/hedhog/frontend/app/_components/department-select-with-create.tsx.ejs +38 -16
  120. package/hedhog/frontend/app/_components/project-details-screen.tsx.ejs +1504 -52
  121. package/hedhog/frontend/app/_components/project-form-screen.tsx.ejs +1017 -649
  122. package/hedhog/frontend/app/_components/section-card.tsx.ejs +25 -18
  123. package/hedhog/frontend/app/_components/system-user-select-with-create.tsx.ejs +609 -0
  124. package/hedhog/frontend/app/_components/timesheet-task-create-sheet.tsx.ejs +213 -0
  125. package/hedhog/frontend/app/_lib/api.ts.ejs +30 -1
  126. package/hedhog/frontend/app/_lib/types.ts.ejs +147 -39
  127. package/hedhog/frontend/app/_lib/utils/format.ts.ejs +40 -9
  128. package/hedhog/frontend/app/_lib/utils/forms.ts.ejs +48 -1
  129. package/hedhog/frontend/app/approvals/page.tsx.ejs +116 -98
  130. package/hedhog/frontend/app/collaborator-types/page.tsx.ejs +502 -0
  131. package/hedhog/frontend/app/collaborators/page.tsx.ejs +116 -72
  132. package/hedhog/frontend/app/contracts/page.tsx.ejs +938 -938
  133. package/hedhog/frontend/app/contracts/templates/page.tsx.ejs +11 -9
  134. package/hedhog/frontend/app/departments/page.tsx.ejs +1 -1
  135. package/hedhog/frontend/app/projects/[id]/edit/page.tsx.ejs +1 -1
  136. package/hedhog/frontend/app/projects/page.tsx.ejs +364 -133
  137. package/hedhog/frontend/app/schedule-adjustments/page.tsx.ejs +244 -120
  138. package/hedhog/frontend/app/team/page.tsx.ejs +15 -2
  139. package/hedhog/frontend/app/time-off/page.tsx.ejs +158 -82
  140. package/hedhog/frontend/app/timesheets/page.tsx.ejs +814 -357
  141. package/hedhog/frontend/messages/en.json +268 -53
  142. package/hedhog/frontend/messages/pt.json +484 -271
  143. package/hedhog/table/operations_collaborator.yaml +26 -13
  144. package/hedhog/table/operations_collaborator_equity_participation.yaml +43 -0
  145. package/hedhog/table/operations_collaborator_type.yaml +33 -0
  146. package/hedhog/table/operations_job_title.yaml +24 -0
  147. package/hedhog/table/operations_project.yaml +9 -0
  148. package/hedhog/table/operations_project_assignment.yaml +9 -0
  149. package/hedhog/table/operations_project_role.yaml +39 -0
  150. package/hedhog/table/operations_task.yaml +69 -0
  151. package/hedhog/table/operations_timesheet_entry.yaml +12 -0
  152. package/package.json +6 -6
  153. package/src/controllers/operations-approvals.controller.ts +24 -0
  154. package/src/controllers/operations-collaborators.controller.ts +60 -0
  155. package/src/controllers/operations-contracts.controller.ts +138 -0
  156. package/src/controllers/operations-org-structure.controller.ts +92 -0
  157. package/src/controllers/operations-projects.controller.ts +50 -0
  158. package/src/controllers/operations-tasks.controller.ts +63 -0
  159. package/src/controllers/operations-timesheets.controller.ts +100 -0
  160. package/src/dto/create-collaborator-type.dto.ts +43 -0
  161. package/src/dto/create-collaborator.dto.ts +223 -0
  162. package/src/dto/create-schedule-adjustment-request.dto.ts +91 -0
  163. package/src/dto/create-task.dto.ts +75 -0
  164. package/src/dto/create-time-off-request.dto.ts +53 -0
  165. package/src/dto/create-timesheet-entry.dto.ts +67 -0
  166. package/src/dto/list-collaborator-types.dto.ts +15 -0
  167. package/src/dto/list-collaborators.dto.ts +30 -0
  168. package/src/dto/list-project-options.dto.ts +3 -0
  169. package/src/dto/list-tasks.dto.ts +25 -0
  170. package/src/dto/list-timesheet-entries.dto.ts +40 -0
  171. package/src/dto/update-collaborator-type.dto.ts +3 -0
  172. package/src/dto/update-collaborator.dto.ts +3 -0
  173. package/src/dto/update-task.dto.ts +76 -0
  174. package/src/operations.controller.ts +1 -278
  175. package/src/operations.module.ts +23 -2
  176. package/src/operations.service.spec.ts +450 -0
  177. package/src/operations.service.ts +4507 -1561
  178. 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` é responsável por fornecer funcionalidades relacionadas à gestão operacional dentro do ecossistema HedHog. Ele integra-se com módulos de paginação, localização e acesso a banco de dados via Prisma, oferecendo endpoints para consulta de operações, contratos, projetos, alocações, tarefas, folhas de ponto e aprovações.
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
- - Disponibilizar endpoints para consulta de dados operacionais.
10
- - Garantir controle de acesso baseado em papéis (roles) específicos.
11
- - Integrar-se com módulos de configuração, paginação, localização e banco de dados.
12
- - Suportar operações administrativas relacionadas a contratos, projetos, alocações, tarefas, timesheets e aprovações.
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 são protegidos e requerem autenticação com papéis específicos (`admin` ou `admin-operations`).
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 | Autenticação | Descrição |
19
- |--------|---------------------------|--------------|------------------------------------------------|
20
- | GET | `/operations` | Sim | Retorna lista geral de operações. |
21
- | GET | `/operations/contracts` | Sim | Retorna lista de contratos. |
22
- | GET | `/operations/contracts/:id` | Sim | Retorna detalhes de um contrato específico. |
23
- | GET | `/operations/projects` | Sim | Retorna lista de projetos. |
24
- | GET | `/operations/projects/:id` | Sim | Retorna detalhes de um projeto específico. |
25
- | GET | `/operations/allocations` | Sim | Retorna lista de alocações. |
26
- | GET | `/operations/tasks` | Sim | Retorna lista de tarefas. |
27
- | GET | `/operations/timesheets` | Sim | Retorna lista de folhas de ponto (timesheets). |
28
- | GET | `/operations/approvals` | Sim | Retorna lista de aprovações. |
29
-
30
- ### Parâmetros e Respostas
31
-
32
- - **Parâmetros Path:** Para endpoints com `:id`, espera-se um identificador único do recurso.
33
- - **Query Parameters:** Possível suporte a paginação e filtros via módulos integrados (não detalhado no código fornecido).
34
- - **Body:** Não aplicável para os endpoints GET listados.
35
- - **Resposta:** Listas ou objetos JSON representando os recursos solicitados.
36
- - **Erros:** Autorização negada, recurso não encontrado, erros internos do servidor.
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 são protegidos e requerem autenticação.
41
- - O acesso é restrito a usuários com os papéis (`roles`) `admin` ou `admin-operations`.
42
- - A verificação de papéis é feita via relações definidas no arquivo `route.yaml`.
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
- Não definições explícitas de estruturas de request ou response no código fornecido, pois todos os endpoints são do tipo GET e não recebem corpo. Espera-se que as respostas sejam JSON contendo listas ou objetos dos recursos solicitados.
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 (`admin` ou `admin-operations`).
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 de tabelas específicas para o módulo `operations`. O módulo depende do `PrismaModule` para acesso ao banco de dados, mas detalhes das tabelas não estão disponíveis no código fornecido.
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 exclusivamente para uso administrativo, conforme papéis definidos.
62
- - O papel `admin-operations` é descrito como "Administrador com acesso total à gestão de operações".
63
- - O acesso aos dados operacionais é restrito e controlado via papéis.
64
- - Integração com módulos de paginação e localização sugere suporte a consultas paginadas e internacionalizadas, embora não detalhado.
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
- ### Exemplo de requisição para listar contratos
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
- ### Exemplo de resposta
173
+ Resposta:
78
174
 
79
175
  ```json
80
176
  [
81
177
  {
82
- "id": "123",
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": "124",
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
- ### Exemplo de requisição para obter detalhes de um projeto
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
- ### Exemplo de resposta
203
+ Resposta:
108
204
 
109
205
  ```json
110
206
  {
111
- "id": "456",
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 utilizar os endpoints, o token JWT deve conter os papéis `admin` ou `admin-operations` para garantir acesso autorizado.
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"}