@hed-hog/operations 0.0.303 → 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.
Files changed (166) 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 +169 -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 +54 -0
  23. package/dist/controllers/operations-tasks.controller.d.ts.map +1 -0
  24. package/dist/controllers/operations-tasks.controller.js +79 -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 +8 -0
  43. package/dist/dto/create-task.dto.d.ts.map +1 -0
  44. package/dist/dto/create-task.dto.js +50 -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 +8 -0
  83. package/dist/dto/update-task.dto.d.ts.map +1 -0
  84. package/dist/dto/update-task.dto.js +51 -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 +373 -8
  94. package/dist/operations.service.d.ts.map +1 -1
  95. package/dist/operations.service.js +1598 -111
  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 +183 -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 +134 -49
  113. package/hedhog/frontend/app/_components/collaborator-form-screen.tsx.ejs +772 -93
  114. package/hedhog/frontend/app/_components/department-select-with-create.tsx.ejs +38 -16
  115. package/hedhog/frontend/app/_components/project-form-screen.tsx.ejs +875 -632
  116. package/hedhog/frontend/app/_components/timesheet-task-create-sheet.tsx.ejs +213 -0
  117. package/hedhog/frontend/app/_lib/api.ts.ejs +30 -1
  118. package/hedhog/frontend/app/_lib/types.ts.ejs +142 -39
  119. package/hedhog/frontend/app/_lib/utils/format.ts.ejs +33 -2
  120. package/hedhog/frontend/app/approvals/page.tsx.ejs +116 -98
  121. package/hedhog/frontend/app/collaborator-types/page.tsx.ejs +502 -0
  122. package/hedhog/frontend/app/collaborators/page.tsx.ejs +109 -68
  123. package/hedhog/frontend/app/contracts/templates/page.tsx.ejs +11 -9
  124. package/hedhog/frontend/app/departments/page.tsx.ejs +1 -1
  125. package/hedhog/frontend/app/projects/page.tsx.ejs +5 -1
  126. package/hedhog/frontend/app/schedule-adjustments/page.tsx.ejs +244 -120
  127. package/hedhog/frontend/app/team/page.tsx.ejs +15 -2
  128. package/hedhog/frontend/app/time-off/page.tsx.ejs +158 -82
  129. package/hedhog/frontend/app/timesheets/page.tsx.ejs +814 -357
  130. package/hedhog/frontend/messages/en.json +243 -51
  131. package/hedhog/frontend/messages/pt.json +458 -268
  132. package/hedhog/table/operations_collaborator.yaml +26 -13
  133. package/hedhog/table/operations_collaborator_equity_participation.yaml +43 -0
  134. package/hedhog/table/operations_collaborator_type.yaml +33 -0
  135. package/hedhog/table/operations_job_title.yaml +24 -0
  136. package/hedhog/table/operations_project_assignment.yaml +9 -0
  137. package/hedhog/table/operations_project_role.yaml +39 -0
  138. package/hedhog/table/operations_task.yaml +30 -0
  139. package/hedhog/table/operations_timesheet_entry.yaml +12 -0
  140. package/package.json +6 -6
  141. package/src/controllers/operations-approvals.controller.ts +24 -0
  142. package/src/controllers/operations-collaborators.controller.ts +60 -0
  143. package/src/controllers/operations-contracts.controller.ts +138 -0
  144. package/src/controllers/operations-org-structure.controller.ts +92 -0
  145. package/src/controllers/operations-projects.controller.ts +50 -0
  146. package/src/controllers/operations-tasks.controller.ts +52 -0
  147. package/src/controllers/operations-timesheets.controller.ts +100 -0
  148. package/src/dto/create-collaborator-type.dto.ts +43 -0
  149. package/src/dto/create-collaborator.dto.ts +223 -0
  150. package/src/dto/create-schedule-adjustment-request.dto.ts +91 -0
  151. package/src/dto/create-task.dto.ts +35 -0
  152. package/src/dto/create-time-off-request.dto.ts +53 -0
  153. package/src/dto/create-timesheet-entry.dto.ts +67 -0
  154. package/src/dto/list-collaborator-types.dto.ts +15 -0
  155. package/src/dto/list-collaborators.dto.ts +30 -0
  156. package/src/dto/list-project-options.dto.ts +3 -0
  157. package/src/dto/list-tasks.dto.ts +25 -0
  158. package/src/dto/list-timesheet-entries.dto.ts +40 -0
  159. package/src/dto/update-collaborator-type.dto.ts +3 -0
  160. package/src/dto/update-collaborator.dto.ts +3 -0
  161. package/src/dto/update-task.dto.ts +36 -0
  162. package/src/operations.controller.ts +1 -278
  163. package/src/operations.module.ts +23 -2
  164. package/src/operations.service.spec.ts +450 -0
  165. package/src/operations.service.ts +4641 -2163
  166. package/src/services/shared/operations-access.service.ts +52 -0
@@ -9,6 +9,7 @@
9
9
  "activate": "Ativar",
10
10
  "deactivate": "Desativar",
11
11
  "save": "Salvar",
12
+ "delete": "Excluir",
12
13
  "addLine": "Adicionar linha",
13
14
  "approve": "Aprovar",
14
15
  "reject": "Rejeitar",
@@ -16,6 +17,7 @@
16
17
  "loadMore": "Carregar mais",
17
18
  "clearSelection": "Limpar seleção",
18
19
  "manageDepartments": "Gerenciar departamentos",
20
+ "manageCollaboratorTypes": "Gerenciar tipos de colaborador",
19
21
  "manageTemplates": "Gerenciar templates",
20
22
  "useTemplate": "Usar template"
21
23
  },
@@ -52,6 +54,7 @@
52
54
  "totalHours": "Total de horas",
53
55
  "approver": "Aprovador",
54
56
  "noNotes": "Sem observações",
57
+ "decisionNote": "Nota da decisão",
55
58
  "lines": "linhas",
56
59
  "unassigned": "Sem vinculação",
57
60
  "viewOnly": "Somente leitura",
@@ -94,50 +97,50 @@
94
97
  },
95
98
  "DashboardPage": {
96
99
  "title": "Dashboard de Operacoes",
97
- "description": "Monitore entrega, solicitacoes e aprovacoes da equipe em um unico lugar.",
100
+ "description": "Monitore entrega, solicitações e aprovações da equipe em um único lugar.",
98
101
  "breadcrumb": "Dashboard",
99
102
  "cards": {
100
- "projects": "Projetos visiveis",
103
+ "projects": "Projetos visíveis",
101
104
  "projectsDescription": "{active} ativos no momento",
102
- "timesheets": "Timesheets visiveis",
103
- "timesheetsDescription": "{pending} aguardando aprovacao",
104
- "timeOff": "Solicitacoes de ausencia",
105
- "timeOffDescription": "Solicitacoes aprovadas, pendentes e rejeitadas",
106
- "approvals": "Aprovacoes pendentes",
107
- "approvalsDescription": "Itens que ainda dependem de decisao do supervisor"
105
+ "timesheets": "Timesheets visíveis",
106
+ "timesheetsDescription": "{pending} aguardando aprovação",
107
+ "timeOff": "Solicitações de ausência",
108
+ "timeOffDescription": "Solicitações aprovadas, pendentes e rejeitadas",
109
+ "approvals": "Aprovações pendentes",
110
+ "approvalsDescription": "Itens que ainda dependem de decisão do supervisor"
108
111
  },
109
112
  "actions": {
110
113
  "openTimesheets": "Abrir timesheets"
111
114
  },
112
115
  "scope": {
113
116
  "title": "Escopo de acesso",
114
- "description": "O dashboard respeita automaticamente a visao de colaborador, supervisor ou diretor.",
117
+ "description": "O dashboard respeita automaticamente a visão de colaborador, supervisor ou diretor.",
115
118
  "roleScope": "Escopo",
116
119
  "collaborator": "Colaborador vinculado",
117
120
  "teamSize": "Liderados diretos"
118
121
  },
119
122
  "recentTimesheets": {
120
123
  "title": "Timesheets recentes",
121
- "description": "Ultimos registros semanais visiveis para o seu papel.",
122
- "empty": "Ainda nao existem timesheets disponiveis."
124
+ "description": "Últimos registros semanais visíveis para o seu papel.",
125
+ "empty": "Ainda não existem timesheets disponíveis."
123
126
  },
124
127
  "nextSteps": {
125
- "title": "Proximas acoes",
126
- "description": "Acoes operacionais mais comuns disponiveis neste modulo.",
127
- "submitTimesheet": "Criar ou enviar sua timesheet semanal para revisao.",
128
- "requestTimeOff": "Abrir uma nova solicitacao de ferias ou ausencia.",
129
- "adjustSchedule": "Enviar um ajuste de horario semanal para aprovacao."
128
+ "title": "Próximas ações",
129
+ "description": "Ações operacionais mais comuns disponíveis neste módulo.",
130
+ "submitTimesheet": "Criar ou enviar sua timesheet semanal para revisão.",
131
+ "requestTimeOff": "Abrir uma nova solicitação de férias ou ausência.",
132
+ "adjustSchedule": "Enviar um ajuste de horário semanal para aprovação."
130
133
  },
131
134
  "team": {
132
135
  "title": "Resumo da equipe",
133
136
  "description": "Visibilidade de liderados diretos para supervisores e diretores.",
134
137
  "members": "Membros da equipe",
135
- "projects": "Projetos visiveis",
136
- "pendingApprovals": "Aprovacoes pendentes",
137
- "assignments": "alocacoes",
138
- "awaitingReview": "aguardando revisao",
139
- "empty": "Ainda nao existem liderados diretos vinculados a este supervisor.",
140
- "collaboratorMessage": "Os papeis de supervisor e diretor liberam a visao operacional da equipe."
138
+ "projects": "Projetos visíveis",
139
+ "pendingApprovals": "Aprovações pendentes",
140
+ "assignments": "Alocações",
141
+ "awaitingReview": "Aguardando revisão",
142
+ "empty": "Ainda não existem liderados diretos vinculados a este supervisor.",
143
+ "collaboratorMessage": "Os papéis de supervisor e diretor liberam a visão operacional da equipe."
141
144
  }
142
145
  },
143
146
  "CollaboratorsPage": {
@@ -153,9 +156,13 @@
153
156
  "viewModeCards": "Grade",
154
157
  "cards": {
155
158
  "total": "Total de colaboradores",
159
+ "totalDescription": "Todos os colaboradores operacionais registrados no sistema.",
156
160
  "active": "Colaboradores ativos",
161
+ "activeDescription": "Em atividade com status operacional ativo.",
157
162
  "onLeave": "Em afastamento",
158
- "withContracts": "Com contrato"
163
+ "onLeaveDescription": "Temporariamente afastados — incluídos na capacidade, mas não alocáveis.",
164
+ "withContracts": "Com contrato",
165
+ "withContractsDescription": "Colaboradores vinculados a pelo menos um contrato."
159
166
  },
160
167
  "sheet": {
161
168
  "createTitle": "Criar colaborador",
@@ -237,6 +244,8 @@
237
244
  "basicInfoDescription": "Dados principais de identificação usados em toda a operação.",
238
245
  "employmentInfo": "Informações de contratação",
239
246
  "employmentInfoDescription": "Defina o tipo do colaborador, o status do ciclo e as datas principais.",
247
+ "equity": "Detalhes de participação societária",
248
+ "equityDescription": "Preencha esta seção apenas quando a relação selecionada exigir dados de propriedade ou governança.",
240
249
  "supervisor": "Vínculo de supervisor",
241
250
  "supervisorDescription": "Associe o supervisor direto usado para visão de equipe e aprovações.",
242
251
  "contract": "Remuneração e contrato rascunho",
@@ -248,20 +257,26 @@
248
257
  "person": "Pessoa",
249
258
  "personEntityLabel": "pessoa",
250
259
  "personDescription": "Selecione uma pessoa existente ou cadastre uma nova sem sair desta tela.",
251
- "userId": "ID do usuário",
252
- "userIdOptional": "ID do usuário (opcional)",
253
- "userIdDescription": "Use este campo apenas quando precisar vincular uma conta de acesso depois do cadastro da pessoa.",
260
+ "userId": "Usuário do sistema",
261
+ "userIdOptional": "Usuário do sistema (opcional)",
262
+ "userIdDescription": "Vincule a conta da plataforma que este colaborador vai usar para login, apontamentos e ações de autosserviço.",
254
263
  "code": "Código",
255
264
  "displayName": "Nome exibido",
256
265
  "department": "Departamento",
257
266
  "departmentDescription": "Selecione um departamento existente ou cadastre um novo para este colaborador.",
258
267
  "title": "Cargo / função",
268
+ "titleDescription": "Selecione um cargo existente ou cadastre um novo para reutilizar nos próximos colaboradores.",
259
269
  "levelLabel": "Nível",
260
270
  "notes": "Observações",
261
271
  "collaboratorType": "Tipo de colaborador",
272
+ "collaboratorTypeDescription": "Selecione a natureza da relação com a empresa. Função e participação societária permanecem separadas.",
262
273
  "weeklyCapacityHours": "Carga horária semanal",
263
274
  "compensationAmount": "Valor da remuneração",
264
275
  "contractDescription": "Observações do contrato rascunho",
276
+ "equityParticipationType": "Tipo de participação",
277
+ "equityPercentage": "Percentual societário",
278
+ "votingPower": "Poder de voto (%)",
279
+ "equityNotes": "Observações societárias",
265
280
  "startTime": "Início",
266
281
  "endTime": "Fim",
267
282
  "breakMinutes": "Intervalo (min)",
@@ -277,6 +292,20 @@
277
292
  "intern": "Estagiário",
278
293
  "other": "Outro"
279
294
  },
295
+ "levels": {
296
+ "junior": "Júnior",
297
+ "mid": "Pleno",
298
+ "senior": "Sênior",
299
+ "coordinator": "Coordenador",
300
+ "manager": "Gerente"
301
+ },
302
+ "equityParticipationTypes": {
303
+ "partner_quota_holder": "Sócio quotista",
304
+ "common_shareholder": "Acionista ordinário",
305
+ "preferred_shareholder": "Acionista preferencial",
306
+ "administrator": "Administrador",
307
+ "other": "Outro"
308
+ },
280
309
  "statuses": {
281
310
  "active": "Ativo",
282
311
  "on_leave": "Em afastamento",
@@ -288,12 +317,23 @@
288
317
  "person": "Selecione ou cadastre uma pessoa",
289
318
  "department": "Selecione ou cadastre um departamento",
290
319
  "departmentCreate": "Nome do departamento",
320
+ "title": "Selecione ou cadastre um cargo / função",
321
+ "titleCreate": "Nome do cargo / função",
322
+ "collaboratorType": "Selecione o tipo de colaborador",
323
+ "equityPercentage": "Ex.: 25",
324
+ "votingPower": "Ex.: 50",
325
+ "equityNotes": "Observações sobre cotas, ações, prazo ou poderes",
326
+ "levelLabel": "Selecione um nível",
291
327
  "supervisor": "Busque um colaborador",
292
- "userIdOptional": "Vincule um usuário depois, se necessário"
328
+ "userIdOptional": "Selecione um usuário do sistema"
329
+ },
330
+ "states": {
331
+ "loadingCollaboratorTypes": "Carregando tipos de colaborador..."
293
332
  },
294
333
  "messages": {
295
334
  "userRequired": "O vínculo com usuário pode ser feito depois do cadastro inicial.",
296
335
  "personRequired": "Selecione ou cadastre uma pessoa para o colaborador.",
336
+ "collaboratorTypeRequired": "Selecione um tipo de colaborador.",
297
337
  "requiredFields": "O código do colaborador é obrigatório.",
298
338
  "createSuccess": "Colaborador criado com sucesso.",
299
339
  "createError": "Não foi possível criar o colaborador.",
@@ -301,6 +341,48 @@
301
341
  "updateError": "Não foi possível atualizar o colaborador."
302
342
  }
303
343
  },
344
+ "CollaboratorTypesPage": {
345
+ "title": "Tipos de colaborador",
346
+ "description": "Gerencie o catálogo de tipos de colaborador usado nos registros de colaboradores e nas regras operacionais.",
347
+ "breadcrumb": "Tipos de colaborador",
348
+ "searchPlaceholder": "Buscar tipo de colaborador, slug, categoria ou descrição...",
349
+ "emptyDescription": "Nenhum tipo de colaborador corresponde aos filtros atuais.",
350
+ "noAccessDescription": "Permissões de diretor são necessárias para gerenciar tipos de colaborador.",
351
+ "cards": {
352
+ "total": "Total de tipos",
353
+ "active": "Tipos ativos",
354
+ "linkedCollaborators": "Colaboradores vinculados",
355
+ "inactive": "Tipos inativos"
356
+ },
357
+ "columns": {
358
+ "name": "Nome",
359
+ "slug": "Slug",
360
+ "category": "Categoria",
361
+ "description": "Descrição",
362
+ "sortOrder": "Ordem",
363
+ "collaborators": "Colaboradores"
364
+ },
365
+ "sheet": {
366
+ "createTitle": "Criar tipo de colaborador",
367
+ "editTitle": "Editar tipo de colaborador",
368
+ "description": "Mantenha o catálogo de tipos de colaborador organizado para os registros de colaboradores e regras operacionais."
369
+ },
370
+ "form": {
371
+ "name": "Nome",
372
+ "slug": "Slug",
373
+ "category": "Categoria",
374
+ "description": "Descrição",
375
+ "sortOrder": "Ordem de exibição",
376
+ "status": "Status"
377
+ },
378
+ "messages": {
379
+ "requiredFields": "O nome do tipo de colaborador é obrigatório.",
380
+ "saveSuccess": "Tipo de colaborador salvo com sucesso.",
381
+ "saveError": "Não foi possível salvar o tipo de colaborador.",
382
+ "statusSuccess": "Status do tipo de colaborador atualizado com sucesso.",
383
+ "statusError": "Não foi possível atualizar o status do tipo de colaborador."
384
+ }
385
+ },
304
386
  "CollaboratorDetailsPage": {
305
387
  "title": "Detalhes do Colaborador",
306
388
  "breadcrumb": "Detalhes do Colaborador",
@@ -340,9 +422,13 @@
340
422
  "emptyDescription": "Nenhum projeto corresponde aos filtros atuais.",
341
423
  "cards": {
342
424
  "total": "Projetos",
425
+ "totalDescription": "Todos os projetos de entrega visíveis para o seu escopo de acesso.",
343
426
  "active": "Ativos",
427
+ "activeDescription": "Abertos para lançamentos de timesheet e trabalho da equipe.",
344
428
  "atRisk": "Em risco",
345
- "upcomingDeliveries": "Com prazo"
429
+ "atRiskDescription": "Sinalizados por problemas de entrega, equipe ou orçamento.",
430
+ "upcomingDeliveries": "Com prazo",
431
+ "upcomingDeliveriesDescription": "Projetos com data de entrega definida."
346
432
  },
347
433
  "actions": {
348
434
  "archive": "Arquivar"
@@ -371,20 +457,24 @@
371
457
  "newTitle": "Novo Projeto",
372
458
  "editTitle": "Editar Projeto",
373
459
  "breadcrumb": "Cadastro de Projeto",
374
- "description": "Cadastre projetos de clientes ou servicos e gere opcionalmente um contrato rascunho relacionado a partir do fluxo do projeto.",
375
- "noAccessDescription": "Permissoes de diretor sao necessarias para gerenciar projetos.",
460
+ "description": "Crie o projeto primeiro com as informações essenciais de cliente e entrega. Equipe, contrato e controles podem ser concluídos após salvar.",
461
+ "noAccessDescription": "Permissões de diretor são necessárias para gerenciar projetos.",
376
462
  "loading": "Carregando dados do projeto...",
377
463
  "sections": {
378
- "basicInfo": "Informacoes basicas do projeto",
464
+ "basicInfo": "Informações básicas do projeto",
379
465
  "basicInfoDescription": "Defina o engajamento com o cliente e o resumo operacional.",
380
- "governance": "Responsavel e datas",
381
- "governanceDescription": "Defina o responsavel, o status do ciclo e o periodo do projeto.",
382
- "team": "Alocacao inicial da equipe",
383
- "teamDescription": "{count} colaboradores selecionados para a equipe inicial.",
466
+ "basicInfoCreateDescription": "Comece apenas com o essencial para abrir o projeto e continue a configuração depois de salvar.",
467
+ "governance": "Responsável e datas",
468
+ "governanceDescription": "Defina o responsável, o status do ciclo e o período do projeto.",
469
+ "governanceCreateDescription": "Se quiser, defina agora o gestor e a data inicial. Progresso e controles do ciclo podem ser ajustados depois.",
470
+ "team": "Alocação inicial da equipe",
471
+ "teamDescription": "{count} colaboradores selecionados para a equipe inicial. Você pode refinar as alocações depois de salvar.",
384
472
  "financials": "Base financeira e contratual",
385
- "financialsDescription": "Dados base usados em controles operacionais e na geracao do contrato rascunho.",
386
- "contract": "Configuracoes do contrato",
387
- "contractDescription": "Escolha um template reutilizavel, vincule um contrato existente ou gere um novo rascunho com origem no projeto."
473
+ "financialsDescription": "Dados financeiros, faturamento e contrato podem ser preenchidos depois que o projeto for salvo.",
474
+ "contract": "Configurações do contrato",
475
+ "contractDescription": "Vincule um contrato existente ou configure a geração de rascunho após o primeiro salvamento do projeto.",
476
+ "nextSteps": "Continue após salvar",
477
+ "nextStepsDescription": "Depois de criar o projeto, você pode montar a equipe, conectar um contrato ou template e acompanhar controles detalhados de entrega pela tela do projeto."
388
478
  },
389
479
  "fields": {
390
480
  "code": "Codigo do projeto",
@@ -395,16 +485,16 @@
395
485
  "progressPercent": "Progresso %",
396
486
  "roleLabel": "Papel / responsabilidade",
397
487
  "weeklyHours": "Horas semanais",
398
- "allocationPercent": "Alocacao %",
399
- "isBillable": "Faturavel",
400
- "isBillableDescription": "Inclui esta alocacao na capacidade faturavel.",
401
- "contractCode": "Codigo do contrato rascunho",
488
+ "allocationPercent": "Alocação %",
489
+ "isBillable": "Faturável",
490
+ "isBillableDescription": "Inclui esta alocação na capacidade faturável.",
491
+ "contractCode": "Código do contrato rascunho",
402
492
  "contractName": "Nome do contrato rascunho",
403
- "contractDescription": "Observacoes do contrato rascunho",
493
+ "contractDescription": "Observações do contrato rascunho",
404
494
  "contractTemplate": "Template do contrato",
405
495
  "autoGenerateContractDraft": "Gerar contrato rascunho automaticamente",
406
- "autoGenerateContractDraftDescription": "Cria um contrato rascunho de cliente/servico com originType client_project vinculado a este projeto.",
407
- "existingContractSelected": "Ja existe um contrato selecionado para este projeto."
496
+ "autoGenerateContractDraftDescription": "Cria um contrato rascunho de cliente/serviço com base nos dados deste projeto e vincula como contrato relacionado.",
497
+ "existingContractSelected": " existe um contrato selecionado para este projeto."
408
498
  },
409
499
  "labels": {
410
500
  "enabled": "Ativado",
@@ -414,17 +504,17 @@
414
504
  "hints": {
415
505
  "summary": "Seja breve: escopo, objetivo e contexto principal da entrega.",
416
506
  "progressPercent": "Use uma estimativa simples de 0 a 100.",
417
- "monthlyHourCap": "Limite opcional usado no planejamento e na geracao do contrato rascunho.",
418
- "contract": "Ao selecionar um contrato existente, a geracao automatica do rascunho e desativada.",
419
- "contractTemplate": "Use um template para pre-preencher o novo contrato ou o rascunho automatico deste projeto.",
507
+ "monthlyHourCap": "Limite opcional usado no planejamento e na geração do contrato rascunho.",
508
+ "contract": "Ao selecionar um contrato existente, a geração automática do rascunho é desativada.",
509
+ "contractTemplate": "Use um template para pré-preencher o novo contrato ou o rascunho automático deste projeto.",
420
510
  "contractCode": "Usado apenas se um contrato rascunho for gerado a partir deste projeto.",
421
- "contractName": "Titulo visivel para o contrato rascunho gerado.",
422
- "contractDescription": "Observacoes comerciais ou clausulas opcionais para o rascunho."
511
+ "contractName": "ítulo visível para o contrato rascunho gerado.",
512
+ "contractDescription": "Observações comerciais ou cláusulas opcionais para o rascunho."
423
513
  },
424
514
  "placeholders": {
425
515
  "code": "Ex: PRJ-2026-001",
426
516
  "name": "Informe o nome do projeto",
427
- "clientName": "Informe o cliente ou conta",
517
+ "clientName": "Selecione ou cadastre a empresa/conta cliente",
428
518
  "summary": "Descreva escopo, objetivos e contexto da entrega",
429
519
  "progressPercent": "0 a 100",
430
520
  "managerSearch": "Buscar gestor...",
@@ -448,21 +538,22 @@
448
538
  "active": "Ativo",
449
539
  "at_risk": "Em risco",
450
540
  "paused": "Pausado",
451
- "completed": "Concluido",
541
+ "completed": "Concluído",
452
542
  "archived": "Arquivado"
453
543
  },
454
544
  "billingModels": {
455
545
  "time_and_material": "Tempo e material",
456
546
  "monthly_retainer": "Mensalidade fixa",
457
- "fixed_price": "Preco fechado"
547
+ "fixed_price": "Preço fechado"
458
548
  }
459
549
  },
460
550
  "messages": {
461
- "requiredFields": "Codigo, nome do projeto e nome do cliente sao obrigatorios.",
551
+ "requiredFields": "Somente código, nome do projeto e nome do cliente são obrigatórios para criar o projeto.",
552
+ "roleRequired": "Selecione ou informe um papel para cada colaborador alocado.",
462
553
  "createSuccess": "Projeto criado com sucesso.",
463
- "createError": "Nao foi possivel criar o projeto.",
554
+ "createError": "Não foi possível criar o projeto.",
464
555
  "updateSuccess": "Projeto atualizado com sucesso.",
465
- "updateError": "Nao foi possivel atualizar o projeto.",
556
+ "updateError": "Não foi possível atualizar o projeto.",
466
557
  "currentContractStatus": "Status atual do contrato relacionado: {status}"
467
558
  }
468
559
  },
@@ -470,16 +561,16 @@
470
561
  "title": "Detalhes do Projeto",
471
562
  "breadcrumb": "Detalhes do Projeto",
472
563
  "description": "Consulte dados de entrega, equipe, contrato relacionado, atividade de timesheets e indicadores operacionais do projeto.",
473
- "notFound": "O projeto solicitado nao foi encontrado ou nao esta visivel no seu escopo de acesso.",
564
+ "notFound": "O projeto solicitado não foi encontrado ou não está visível no seu escopo de acesso.",
474
565
  "cards": {
475
566
  "teamSize": "Tamanho da equipe",
476
567
  "teamSizeDescription": "Colaboradores atualmente vinculados a este projeto.",
477
568
  "timesheets": "Timesheets",
478
- "timesheetsDescription": "{pending} pendentes de revisao",
479
- "loggedHours": "Horas lancadas",
569
+ "timesheetsDescription": "{pending} pendentes de revisão",
570
+ "loggedHours": "Horas lançadas",
480
571
  "loggedHoursDescription": "Total de horas vinculadas a este projeto.",
481
- "allocation": "Alocacao media",
482
- "allocationDescription": "Media de alocacao das atribuicoes do projeto."
572
+ "allocation": "Alocação média",
573
+ "allocationDescription": "édia de alocação das atribuições do projeto."
483
574
  },
484
575
  "sections": {
485
576
  "overview": "Visao geral",
@@ -495,27 +586,27 @@
495
586
  "averageAllocation": "Alocacao media",
496
587
  "totalWeeklyHours": "Total de horas semanais"
497
588
  },
498
- "noContract": "Ainda nao existe contrato relacionado a este projeto.",
499
- "noAssignments": "Ainda nao existem colaboradores vinculados a este projeto."
589
+ "noContract": "Ainda não existe contrato relacionado a este projeto.",
590
+ "noAssignments": "Ainda não existem colaboradores vinculados a este projeto."
500
591
  },
501
592
  "ContractsPage": {
502
593
  "title": "Contratos",
503
- "description": "Registro central de contratos manuais e com origem de negocio, com ciclo de vida, documentos e visao financeira.",
594
+ "description": "Registro central de contratos manuais e com origem de negócio, com ciclo de vida, documentos e visão financeira.",
504
595
  "breadcrumb": "Contratos",
505
- "searchPlaceholder": "Buscar contrato, parte relacionada, cliente, tipo ou codigo...",
596
+ "searchPlaceholder": "Buscar contrato, parte relacionada, cliente, tipo ou código...",
506
597
  "emptyDescription": "Nenhum contrato corresponde aos filtros atuais.",
507
598
  "cards": {
508
599
  "total": "Total de contratos",
509
600
  "active": "Contratos ativos",
510
- "underReview": "Em revisao",
601
+ "underReview": "Em revisão",
511
602
  "withTemplate": "Com template"
512
603
  },
513
- "viewMode": "Visualizacao",
604
+ "viewMode": "Visualização",
514
605
  "viewModeTable": "Tabela",
515
606
  "viewModeCards": "Cards",
516
607
  "columns": {
517
- "title": "Titulo",
518
- "code": "Codigo",
608
+ "title": "Título",
609
+ "code": "Código",
519
610
  "type": "Tipo",
520
611
  "origin": "Origem",
521
612
  "template": "Template",
@@ -541,82 +632,82 @@
541
632
  "description": "Gerencie o contrato em uma lateral, sem sair da lista principal."
542
633
  },
543
634
  "wizard": {
544
- "title": "Assistente de criacao de contrato",
635
+ "title": "Assistente de criação de contrato",
545
636
  "description": "Escolha como deseja iniciar: enviar um documento existente, usar um template salvo ou criar do zero.",
546
637
  "options": {
547
638
  "upload": {
548
- "title": "Ja tenho um PDF ou Word",
639
+ "title": " tenho um PDF ou Word",
549
640
  "description": "Envie um contrato existente para extrair dados e revisar antes de salvar."
550
641
  },
551
642
  "template": {
552
643
  "title": "Quero usar um template",
553
- "description": "Comece com um modelo salvo e ajuste os campos conforme necessario."
644
+ "description": "Comece com um modelo salvo e ajuste os campos conforme necessário."
554
645
  },
555
646
  "blank": {
556
647
  "title": "Quero criar do zero",
557
- "description": "Abra o formulario em branco para montar um contrato totalmente personalizado."
648
+ "description": "Abra o formulário em branco para montar um contrato totalmente personalizado."
558
649
  }
559
650
  },
560
651
  "upload": {
561
652
  "title": "Enviar contrato existente",
562
- "description": "Adicione um PDF ou DOCX. A IA pode sugerir um rascunho, mas voce sempre revisa antes de salvar.",
653
+ "description": "Adicione um PDF ou DOCX. A IA pode sugerir um rascunho, mas você sempre revisa antes de salvar.",
563
654
  "selectFile": "Selecionar arquivo",
564
655
  "supportedFiles": "Formatos aceitos: PDF, DOC e DOCX.",
565
- "aiReady": "Extracao assistida pronta com {provider}.",
566
- "aiUnavailable": "Nenhum provedor de IA esta configurado. Voce ainda pode continuar manualmente com o arquivo anexado.",
656
+ "aiReady": "Extração assistida pronta com {provider}.",
657
+ "aiUnavailable": "Nenhum provedor de IA está configurado. Você ainda pode continuar manualmente com o arquivo anexado.",
567
658
  "promptMessage": "Analyze the attached contract and extract a structured draft for the contract form."
568
659
  },
569
660
  "template": {
570
- "title": "Comecar com um template",
571
- "description": "Selecione um template salvo para abrir o formulario ja preenchido com estrutura inicial.",
661
+ "title": "Começar com um template",
662
+ "description": "Selecione um template salvo para abrir o formulário preenchido com estrutura inicial.",
572
663
  "placeholder": "Selecione um template",
573
- "noDescription": "Este template ainda nao possui descricao."
664
+ "noDescription": "Este template ainda não possui descrição."
574
665
  },
575
666
  "blank": {
576
- "title": "Criacao personalizada",
577
- "description": "Abra um formulario vazio e preencha manualmente todas as informacoes do contrato.",
578
- "helper": "Ideal para contratos novos, cenarios fora do padrao ou quando voce quer controlar cada detalhe desde o inicio."
667
+ "title": "Criação personalizada",
668
+ "description": "Abra um formulário vazio e preencha manualmente todas as informações do contrato.",
669
+ "helper": "Ideal para contratos novos, cenários fora do padrão ou quando você quer controlar cada detalhe desde o início."
579
670
  },
580
671
  "review": {
581
- "title": "Revisao obrigatoria antes de salvar",
582
- "description": "Confira os dados sugeridos pela IA no formulario antes de concluir o contrato.",
583
- "missingFields": "Campos que ainda precisam de atencao",
584
- "warnings": "Alertas da extracao"
672
+ "title": "Revisão obrigatória antes de salvar",
673
+ "description": "Confira os dados sugeridos pela IA no formulário antes de concluir o contrato.",
674
+ "missingFields": "Campos que ainda precisam de atenção",
675
+ "warnings": "Alertas da extração"
585
676
  },
586
677
  "actions": {
587
678
  "extractWithAi": "Extrair dados com IA",
588
- "reviewInForm": "Revisar no formulario",
679
+ "reviewInForm": "Revisar no formulário",
589
680
  "continueManual": "Continuar manualmente",
590
- "skipToBlank": "Pular para formulario em branco",
681
+ "skipToBlank": "Pular para formulário em branco",
591
682
  "useTemplate": "Usar template",
592
- "startBlank": "Abrir formulario em branco"
683
+ "startBlank": "Abrir formulário em branco"
593
684
  },
594
685
  "messages": {
595
686
  "missingFile": "Selecione um arquivo PDF, DOC ou DOCX para continuar.",
596
- "missingAiConfiguration": "Configure OpenAI ou Gemini para usar a extracao assistida.",
597
- "extractSuccess": "Rascunho extraido com sucesso usando {provider}.",
598
- "extractError": "Nao foi possivel extrair os dados do documento. Voce ainda pode continuar manualmente."
687
+ "missingAiConfiguration": "Configure OpenAI ou Gemini para usar a extração assistida.",
688
+ "extractSuccess": "Rascunho extraído com sucesso usando {provider}.",
689
+ "extractError": "Não foi possível extrair os dados do documento. Você ainda pode continuar manualmente."
599
690
  }
600
691
  },
601
692
  "messages": {
602
693
  "statusSuccess": "Status do contrato atualizado com sucesso.",
603
- "statusError": "Nao foi possivel atualizar o status do contrato.",
694
+ "statusError": "Não foi possível atualizar o status do contrato.",
604
695
  "uploadSuccess": "PDF do contrato enviado com sucesso.",
605
- "uploadError": "Nao foi possivel enviar o PDF do contrato.",
606
- "noPdf": "Nenhum PDF esta disponivel para este contrato.",
607
- "deleteSuccess": "Contrato excluido com sucesso.",
608
- "deleteError": "Nao foi possivel excluir o contrato.",
696
+ "uploadError": "ão foi possível enviar o PDF do contrato.",
697
+ "noPdf": "Nenhum PDF está disponível para este contrato.",
698
+ "deleteSuccess": "Contrato excluído com sucesso.",
699
+ "deleteError": "Não foi possível excluir o contrato.",
609
700
  "confirmDeleteTitle": "Excluir contrato?",
610
- "confirmDeleteDescription": "Essa acao removera \"{name}\" da lista de contratos."
701
+ "confirmDeleteDescription": "Essa ação removerá \"{name}\" da lista de contratos."
611
702
  }
612
703
  },
613
704
  "ContractTemplatesPage": {
614
705
  "title": "Templates de Contrato",
615
- "description": "Gerencie modelos reutilizaveis com conteudo RichText, metadados padrao e apoio de IA.",
706
+ "description": "Gerencie modelos reutilizáveis com conteúdo RichText, metadados padrão e apoio de IA.",
616
707
  "breadcrumb": "Templates de Contrato",
617
- "searchPlaceholder": "Buscar template, codigo, descricao ou tipo...",
708
+ "searchPlaceholder": "Buscar template, código, descrição ou tipo...",
618
709
  "emptyDescription": "Nenhum template corresponde aos filtros atuais.",
619
- "noAccessDescription": "Permissoes de diretor sao necessarias para gerenciar templates de contrato.",
710
+ "noAccessDescription": "Permissões de diretor são necessárias para gerenciar templates de contrato.",
620
711
  "cards": {
621
712
  "total": "Total de templates",
622
713
  "active": "Templates ativos",
@@ -625,7 +716,7 @@
625
716
  },
626
717
  "columns": {
627
718
  "name": "Template",
628
- "code": "Codigo",
719
+ "code": "Código",
629
720
  "type": "Tipo",
630
721
  "usageCount": "Uso",
631
722
  "updatedAt": "Atualizado em"
@@ -636,47 +727,47 @@
636
727
  "sheet": {
637
728
  "createTitle": "Novo Template de Contrato",
638
729
  "editTitle": "Editar Template de Contrato",
639
- "description": "Mantenha modelos reutilizaveis para acelerar novos contratos e rascunhos de projeto."
730
+ "description": "Mantenha modelos reutilizáveis para acelerar novos contratos e rascunhos de projeto."
640
731
  },
641
732
  "messages": {
642
733
  "statusSuccess": "Status do template atualizado com sucesso.",
643
- "statusError": "Nao foi possivel atualizar o status do template."
734
+ "statusError": "Não foi possível atualizar o status do template."
644
735
  }
645
736
  },
646
737
  "ContractTemplateFormPage": {
647
738
  "newTitle": "Novo Template de Contrato",
648
739
  "editTitle": "Editar Template de Contrato",
649
740
  "breadcrumb": "Cadastro de Template de Contrato",
650
- "description": "Defina textos base e metadados padrao para acelerar novos contratos de projeto.",
651
- "noAccessDescription": "Permissoes de diretor sao necessarias para gerenciar templates de contrato.",
741
+ "description": "Defina textos base e metadados padrão para acelerar novos contratos de projeto.",
742
+ "noAccessDescription": "Permissões de diretor são necessárias para gerenciar templates de contrato.",
652
743
  "loading": "Carregando template...",
653
744
  "sections": {
654
745
  "overview": "Dados do template",
655
- "overviewDescription": "Metadados padrao aplicados quando um novo contrato nasce a partir deste template.",
656
- "editor": "Conteudo do template",
746
+ "overviewDescription": "Metadados padrão aplicados quando um novo contrato nasce a partir deste template.",
747
+ "editor": "Conteúdo do template",
657
748
  "editorDescription": "Edite o texto base em rich text e mantenha placeholders como client_name e project_name quando fizer sentido.",
658
- "preview": "Previa",
659
- "previewDescription": "Previa em tempo real do conteudo reutilizavel."
749
+ "preview": "Prévia",
750
+ "previewDescription": "Prévia em tempo real do conteúdo reutilizável."
660
751
  },
661
752
  "fields": {
662
- "code": "Codigo",
753
+ "code": "Código do template",
663
754
  "name": "Nome do template",
664
- "description": "Descricao",
755
+ "description": "Descrição do template",
665
756
  "contractCategory": "Categoria",
666
757
  "contractType": "Tipo",
667
- "signatureStatus": "Status de assinatura padrao",
758
+ "signatureStatus": "Status de assinatura padrão",
668
759
  "isActive": "Template ativo",
669
- "isActiveDescription": "Desative para retirar o template das selecoes sem perder o historico."
760
+ "isActiveDescription": "Desative para retirar o template das seleções sem perder o histórico."
670
761
  },
671
762
  "placeholders": {
672
763
  "code": "Ex: MSA-SAAS",
673
- "name": "Ex: Prestacao de servicos padrao",
764
+ "name": "Ex: Prestação de serviços padrão",
674
765
  "description": "Explique quando usar este template e quais dados ele cobre"
675
766
  },
676
767
  "messages": {
677
- "requiredFields": "O nome do template e obrigatorio.",
768
+ "requiredFields": "O nome do template é obrigatório.",
678
769
  "createSuccess": "Template criado com sucesso.",
679
- "createError": "Nao foi possivel criar o template.",
770
+ "createError": "ão foi possível criar o template.",
680
771
  "updateSuccess": "Template atualizado com sucesso.",
681
772
  "updateError": "Nao foi possivel atualizar o template."
682
773
  }
@@ -686,42 +777,42 @@
686
777
  "editTitle": "Editar Contrato",
687
778
  "duplicateTitle": "Duplicar Contrato",
688
779
  "breadcrumb": "Cadastro de Contrato",
689
- "description": "Crie ou atualize contratos manualmente gerenciando partes, assinaturas, financeiros, revisoes, documentos e conteudo editavel.",
690
- "noAccessDescription": "Permissoes de diretor sao necessarias para gerenciar contratos.",
780
+ "description": "Crie ou atualize contratos manualmente gerenciando partes, assinaturas, financeiros, revisões, documentos e conteúdo editável.",
781
+ "noAccessDescription": "Permissões de diretor são necessárias para gerenciar contratos.",
691
782
  "loading": "Carregando dados do contrato...",
692
783
  "tabs": {
693
- "overview": "Visao geral",
784
+ "overview": "Visão geral",
694
785
  "parties": "Partes",
695
786
  "signatures": "Assinaturas",
696
787
  "financials": "Financeiro",
697
788
  "documents": "Documentos",
698
- "revisions": "Revisoes",
789
+ "revisions": "Revisões",
699
790
  "editor": "Editor"
700
791
  },
701
792
  "sections": {
702
- "overview": "Visao geral",
793
+ "overview": "Visão geral",
703
794
  "overviewDescription": "Campos centrais de registro, ciclo de vida, origem e ownership.",
704
795
  "parties": "Partes",
705
796
  "partiesDescription": "Pessoas e empresas principais relacionadas ao contrato.",
706
797
  "signatures": "Assinaturas",
707
- "signaturesDescription": "Signatarios e andamento das assinaturas.",
798
+ "signaturesDescription": "Signatários e andamento das assinaturas.",
708
799
  "financials": "Termos financeiros",
709
800
  "financialsDescription": "Controle de valores, receitas, pagamentos e multas.",
710
801
  "documents": "Documentos",
711
802
  "documentsDescription": "Envie ou substitua o documento atual do contrato (PDF, DOC ou DOCX).",
712
- "revisions": "Aditivos / renovacoes",
713
- "revisionsDescription": "Acompanhe aditivos, emendas e renovacoes.",
803
+ "revisions": "Aditivos / renovações",
804
+ "revisionsDescription": "Acompanhe aditivos, emendas e renovações.",
714
805
  "editor": "Editor do contrato",
715
- "editorDescription": "Edite o conteudo do contrato em rich text.",
716
- "preview": "Previa",
717
- "previewDescription": "Previa em tempo real do conteudo do contrato."
806
+ "editorDescription": "Edite o conteúdo do contrato em rich text.",
807
+ "preview": "Prévia",
808
+ "previewDescription": "Prévia em tempo real do conteúdo do contrato."
718
809
  },
719
810
  "fields": {
720
- "code": "Codigo",
721
- "name": "Titulo do contrato",
811
+ "code": "Código",
812
+ "name": "Título do contrato",
722
813
  "clientName": "Nome do cliente",
723
814
  "contractTemplate": "Template do contrato",
724
- "contractTemplateDescription": "Selecione um template reutilizavel para preencher metadados e conteudo iniciais deste contrato.",
815
+ "contractTemplateDescription": "Selecione um template reutilizável para preencher metadados e conteúdo iniciais deste contrato.",
725
816
  "contractCategory": "Categoria",
726
817
  "contractType": "Tipo",
727
818
  "originType": "Tipo de origem",
@@ -729,35 +820,35 @@
729
820
  "signatureStatus": "Status da assinatura",
730
821
  "isActive": "Contrato ativo",
731
822
  "isActiveDescription": "Use isso para desativar ou reativar o contrato sem remover seu registro.",
732
- "budgetAmount": "Valor de orcamento",
823
+ "budgetAmount": "Valor de orçamento",
733
824
  "monthlyHourCap": "Limite mensal de horas",
734
- "effectiveDate": "Data de vigencia",
825
+ "effectiveDate": "Data de vigência",
735
826
  "signedAt": "Assinado em",
736
827
  "partyDisplayName": "Nome da parte",
737
828
  "partyRole": "Papel da parte",
738
829
  "partyType": "Tipo da parte",
739
- "documentNumber": "Numero do documento",
830
+ "documentNumber": "Número do documento",
740
831
  "email": "Email",
741
832
  "phone": "Telefone",
742
833
  "isPrimaryParty": "Parte principal",
743
- "signerName": "Nome do signatario",
744
- "signerRole": "Papel do signatario",
745
- "signerEmail": "Email do signatario",
834
+ "signerName": "Nome do signatário",
835
+ "signerRole": "Papel do signatário",
836
+ "signerEmail": "Email do signatário",
746
837
  "signatureItemStatus": "Status da assinatura",
747
- "financialLabel": "Rotulo financeiro",
838
+ "financialLabel": "Rótulo financeiro",
748
839
  "termType": "Tipo financeiro",
749
840
  "amount": "Valor",
750
- "recurrence": "Recorrencia",
841
+ "recurrence": "Recorrência",
751
842
  "dueDay": "Dia de vencimento",
752
- "notes": "Observacoes",
753
- "revisionTitle": "Titulo da revisao",
754
- "revisionType": "Tipo de revisao",
755
- "revisionStatus": "Status da revisao",
843
+ "notes": "Observações",
844
+ "revisionTitle": "Título da revisão",
845
+ "revisionType": "Tipo de revisão",
846
+ "revisionStatus": "Status da revisão",
756
847
  "summary": "Resumo"
757
848
  },
758
849
  "options": {
759
850
  "contractCategories": {
760
- "employee": "Funcionario",
851
+ "employee": "Funcionário",
761
852
  "contractor": "Contratado",
762
853
  "client": "Cliente",
763
854
  "supplier": "Fornecedor",
@@ -770,16 +861,16 @@
770
861
  "clt": "CLT",
771
862
  "pj": "PJ",
772
863
  "freelancer_agreement": "Acordo freelancer",
773
- "service_agreement": "Prestacao de servicos",
864
+ "service_agreement": "Prestação de serviços",
774
865
  "fixed_term": "Prazo determinado",
775
- "recurring_service": "Servico recorrente",
866
+ "recurring_service": "Serviço recorrente",
776
867
  "nda": "NDA",
777
868
  "amendment": "Emenda",
778
869
  "addendum": "Aditivo",
779
870
  "other": "Outro"
780
871
  },
781
872
  "signatureStatuses": {
782
- "not_started": "Nao iniciado",
873
+ "not_started": "Não iniciado",
783
874
  "pending": "Pendente",
784
875
  "partially_signed": "Parcialmente assinado",
785
876
  "signed": "Assinado",
@@ -789,26 +880,26 @@
789
880
  "billingModels": {
790
881
  "time_and_material": "Tempo e material",
791
882
  "monthly_retainer": "Mensalidade fixa",
792
- "fixed_price": "Preco fechado"
883
+ "fixed_price": "Preço fechado"
793
884
  },
794
885
  "statuses": {
795
886
  "draft": "Rascunho",
796
- "under_review": "Em revisao",
887
+ "under_review": "Em revisão",
797
888
  "active": "Ativo",
798
- "renewal": "Renovacao",
889
+ "renewal": "Renovação",
799
890
  "expired": "Expirado",
800
891
  "closed": "Encerrado",
801
892
  "archived": "Arquivado"
802
893
  },
803
894
  "partyRoles": {
804
- "employee": "Funcionario",
895
+ "employee": "Funcionário",
805
896
  "employer": "Empregador",
806
897
  "client": "Cliente",
807
898
  "supplier": "Fornecedor",
808
899
  "vendor": "Vendor",
809
900
  "partner": "Parceiro",
810
901
  "witness": "Testemunha",
811
- "internal_owner": "Responsavel interno",
902
+ "internal_owner": "Responsável interno",
812
903
  "other": "Outro"
813
904
  },
814
905
  "financialTermTypes": {
@@ -840,54 +931,54 @@
840
931
  }
841
932
  },
842
933
  "messages": {
843
- "requiredFields": "Codigo, titulo do contrato e nome do cliente sao obrigatorios.",
934
+ "requiredFields": "Codigo, título do contrato e nome do cliente são obrigatórios.",
844
935
  "createSuccess": "Contrato criado com sucesso.",
845
- "createError": "Nao foi possivel criar o contrato.",
936
+ "createError": "Não foi possível criar o contrato.",
846
937
  "updateSuccess": "Contrato atualizado com sucesso.",
847
- "updateError": "Nao foi possivel atualizar o contrato.",
938
+ "updateError": "Não foi possível atualizar o contrato.",
848
939
  "pdfHint": "Envie um PDF, DOC ou DOCX para anexar como documento atual do contrato.",
849
940
  "pdfReady": "Documento pronto para salvar: {name}"
850
941
  }
851
942
  },
852
943
  "ContractContentEditor": {
853
- "assistantTitle": "Assistente de conteudo por IA",
854
- "assistantDescription": "Descreva o que precisa e o texto sera gerado automaticamente usando {provider}.",
855
- "promptPlaceholder": "Ex: Gere um contrato mensal com escopo, pagamento, confidencialidade, SLA e clausula de rescisao.",
856
- "emptyPreview": "Ainda nao existe conteudo para este contrato.",
857
- "suggestedPrompt": "Crie um rascunho profissional para {subject}, com linguagem clara e secoes objetivas.",
944
+ "assistantTitle": "Assistente de conteúdo por IA",
945
+ "assistantDescription": "Descreva o que precisa e o texto será gerado automaticamente usando {provider}.",
946
+ "promptPlaceholder": "Ex: Gere um contrato mensal com escopo, pagamento, confidencialidade, SLA e cláusula de rescisão.",
947
+ "emptyPreview": "Ainda não existe conteúdo para este contrato.",
948
+ "suggestedPrompt": "Crie um rascunho profissional para {subject}, com linguagem clara e seções objetivas.",
858
949
  "actions": {
859
950
  "useSuggestion": "Sugerir prompt",
860
951
  "generate": "Gerar texto"
861
952
  },
862
953
  "messages": {
863
- "missingConfiguration": "Configure um provedor de IA nas settings para usar esta acao.",
954
+ "missingConfiguration": "Configure um provedor de IA nas settings para usar esta ação.",
864
955
  "missingPrompt": "Digite um prompt antes de gerar o texto.",
865
- "generateSuccess": "Conteudo atualizado com {provider}.",
866
- "generateError": "Nao foi possivel gerar o conteudo com IA."
956
+ "generateSuccess": "Conteúdo atualizado com {provider}.",
957
+ "generateError": "Não foi possível gerar o conteúdo com IA."
867
958
  }
868
959
  },
869
960
  "ContractDetailsPage": {
870
961
  "title": "Detalhes do Contrato",
871
962
  "breadcrumb": "Detalhes do Contrato",
872
- "description": "Consulte o registro do contrato, partes relacionadas, assinaturas, financeiro, documentos, revisoes e historico.",
873
- "notFound": "O contrato solicitado nao foi encontrado ou nao esta visivel no seu escopo de acesso.",
963
+ "description": "Consulte o registro do contrato, partes relacionadas, assinaturas, financeiro, documentos, revisões e histórico.",
964
+ "notFound": "O contrato solicitado não foi encontrado ou não está visível no seu escopo de acesso.",
874
965
  "tabs": {
875
- "overview": "Visao geral",
966
+ "overview": "Visão geral",
876
967
  "parties": "Partes",
877
968
  "signatures": "Assinaturas",
878
969
  "financials": "Financeiro",
879
970
  "documents": "Documentos",
880
- "revisions": "Revisoes",
881
- "history": "Historico"
971
+ "revisions": "Revisões",
972
+ "history": "Histórico"
882
973
  },
883
974
  "sections": {
884
- "overview": "Visao geral",
975
+ "overview": "Visão geral",
885
976
  "parties": "Partes",
886
977
  "signatures": "Assinaturas",
887
978
  "financials": "Financeiro",
888
979
  "documents": "Documentos",
889
- "revisions": "Aditivos / renovacoes",
890
- "history": "Historico / Auditoria"
980
+ "revisions": "Aditivos / renovações",
981
+ "history": "Histórico / Auditoria"
891
982
  },
892
983
  "actions": {
893
984
  "downloadPdf": "Baixar PDF",
@@ -910,63 +1001,127 @@
910
1001
  "payment": "Pagamentos",
911
1002
  "revenue": "Receita",
912
1003
  "fine": "Multas",
913
- "revision": "Revisao"
1004
+ "revision": "Revisão"
914
1005
  },
915
1006
  "states": {
916
- "noParties": "Ainda nao existem partes relacionadas a este contrato.",
917
- "noSignatures": "Ainda nao existem assinaturas registradas.",
918
- "noDocuments": "Ainda nao existem documentos para este contrato.",
919
- "noRevisions": "Ainda nao existem aditivos, renovacoes ou revisoes vinculados.",
920
- "noHistory": "Ainda nao existe historico de auditoria."
1007
+ "noParties": "Ainda não existem partes relacionadas a este contrato.",
1008
+ "noSignatures": "Ainda não existem assinaturas registradas.",
1009
+ "noDocuments": "Ainda não existem documentos para este contrato.",
1010
+ "noRevisions": "Ainda não existem aditivos, renovações ou revisões vinculados.",
1011
+ "noHistory": "Ainda não existe histórico de auditoria."
921
1012
  }
922
1013
  },
923
1014
  "TimesheetsPage": {
924
1015
  "title": "Timesheets",
925
- "description": "Crie timesheets semanais, organize lancamentos e envie para aprovacao.",
1016
+ "description": "Lance horas de projeto em segundos, mantenha os rascunhos semanais organizados e envie quando estiver pronto.",
926
1017
  "breadcrumb": "Timesheets",
927
- "searchPlaceholder": "Buscar colaborador, projeto, aprovador ou observacoes...",
928
- "emptyDescription": "Ainda nao existem timesheets disponiveis.",
1018
+ "searchPlaceholder": "Buscar colaborador, projeto, tarefa, aprovador ou observações...",
1019
+ "emptyDescription": "Nenhuma timesheet corresponde aos filtros atuais.",
929
1020
  "sheet": {
930
- "createTitle": "Criar timesheet",
931
- "editTitle": "Editar timesheet",
932
- "description": "Rascunhos continuam editaveis ate serem enviados para aprovacao."
1021
+ "createTitle": "Lançamento rápido",
1022
+ "editTitle": "Editar lançamento",
1023
+ "description": "Escolha projeto, tarefa, data e duração para registrar o trabalho com o mínimo de atrito.",
1024
+ "fields": {
1025
+ "project": "Projeto",
1026
+ "task": "Tarefa",
1027
+ "duration": "Duração",
1028
+ "unit": "Unidade",
1029
+ "hours": "Horas",
1030
+ "minutes": "Minutos"
1031
+ },
1032
+ "placeholders": {
1033
+ "project": "Busque por projeto ou cliente...",
1034
+ "projectSearch": "Digite para buscar projetos...",
1035
+ "task": "Busque ou selecione uma tarefa",
1036
+ "taskSearch": "Digite para buscar tarefas...",
1037
+ "duration": "Exemplo: 1.5",
1038
+ "description": "Contexto opcional para este lançamento"
1039
+ },
1040
+ "helper": {
1041
+ "task": "Apenas tarefas da alocação de projeto selecionada aparecem aqui.",
1042
+ "selectProjectFirst": "Selecione um projeto primeiro para carregar ou criar tarefas.",
1043
+ "keepContext": "Manter projeto, tarefa e data após salvar",
1044
+ "keepContextDescription": "Ideal para registrar vários lançamentos em sequência."
1045
+ },
1046
+ "validation": {
1047
+ "descriptionMaxLength": "A descrição pode ter no máximo 500 caracteres."
1048
+ },
1049
+ "task": {
1050
+ "title": "Tarefa rápida",
1051
+ "description": "Crie uma tarefa para a alocação atual sem sair do fluxo de lançamento.",
1052
+ "projectLabel": "Projeto selecionado",
1053
+ "name": "Nome da tarefa",
1054
+ "descriptionLabel": "Descrição da tarefa",
1055
+ "createAction": "Nova tarefa",
1056
+ "submit": "Criar tarefa",
1057
+ "placeholders": {
1058
+ "name": "Exemplo: Revisão com cliente, correção de bug, deploy",
1059
+ "description": "Detalhes opcionais sobre esta tarefa"
1060
+ },
1061
+ "validation": {
1062
+ "nameMinLength": "Informe ao menos 2 caracteres para o nome da tarefa.",
1063
+ "descriptionMaxLength": "A descrição da tarefa pode ter no máximo 500 caracteres."
1064
+ }
1065
+ }
933
1066
  },
934
1067
  "entries": {
935
- "title": "Lancamentos",
936
- "description": "Sempre que possivel, vincule as linhas de trabalho as suas alocacoes ativas.",
937
- "projectHint": "Projetos com alocacao ativa aparecem aqui automaticamente.",
938
- "activityPlaceholder": "Exemplo: Daily, implementacao, QA, alinhamento com cliente"
1068
+ "title": "Detalhes do lançamento",
1069
+ "description": "Vincule cada lançamento a uma alocação de projeto ativa e deixe a descrição como opcional.",
1070
+ "projectHint": "Projetos com alocação ativa aparecem aqui automaticamente.",
1071
+ "activityPlaceholder": "Exemplo: Daily, implementação, QA, alinhamento com cliente"
1072
+ },
1073
+ "recentEntries": {
1074
+ "title": "Lançamentos recentes",
1075
+ "description": "Seus registros mais recentes aparecem aqui logo após salvar.",
1076
+ "empty": "Seus lançamentos recentes aparecerão aqui.",
1077
+ "loading": "Carregando lançamentos recentes..."
939
1078
  },
940
1079
  "cards": {
941
- "visible": "Timesheets visiveis",
942
- "pending": "Aguardando revisao",
943
- "hours": "Horas lancadas"
1080
+ "visible": "Timesheets visíveis",
1081
+ "visibleDescription": "Registros semanais visíveis para o seu escopo de acesso.",
1082
+ "pending": "Aguardando revisão",
1083
+ "pendingDescription": "Enviados e aguardando decisão do supervisor.",
1084
+ "hours": "Horas lançadas",
1085
+ "hoursDescription": "Total de horas trabalhadas em todos os timesheets visíveis."
944
1086
  },
945
1087
  "messages": {
946
- "requiredFields": "Datas de inicio e fim da semana sao obrigatorias.",
947
- "entryValidation": "Cada linha preenchida precisa ter data de trabalho e horas.",
948
- "saveSuccess": "Timesheet salva com sucesso.",
949
- "saveError": "Nao foi possivel salvar a timesheet.",
1088
+ "requiredFields": "Projeto, tarefa, data e duração são obrigatórios.",
1089
+ "entryValidation": "Informe uma duração válida maior que zero.",
1090
+ "selectProjectRequired": "Selecione primeiro uma alocação de projeto.",
1091
+ "selectTaskRequired": "Selecione ou crie uma tarefa primeiro.",
1092
+ "selectProjectFirst": "Selecione um projeto antes de criar uma tarefa.",
1093
+ "saveSuccess": "Lançamento salvo com sucesso.",
1094
+ "saveError": "ão foi possível salvar o lançamento.",
1095
+ "deleteSuccess": "Lançamento excluído com sucesso.",
1096
+ "deleteError": "ão foi possível excluir o lançamento.",
1097
+ "confirmDeleteTitle": "Excluir lançamento?",
1098
+ "confirmDeleteDescription": "Isso removerá o lançamento de \"{name}\" do rascunho semanal atual.",
950
1099
  "submitSuccess": "Timesheet enviada com sucesso.",
951
- "submitError": "Nao foi possivel enviar a timesheet."
1100
+ "submitError": "Não foi possível enviar a timesheet.",
1101
+ "taskCreateSuccess": "Tarefa criada com sucesso.",
1102
+ "taskCreateError": "Não foi possível criar a tarefa."
952
1103
  }
953
1104
  },
954
1105
  "ApprovalsPage": {
955
- "title": "Aprovacoes",
956
- "description": "Revise solicitacoes enviadas e registre decisoes do supervisor.",
957
- "breadcrumb": "Aprovacoes",
958
- "searchPlaceholder": "Buscar solicitante, alvo, aprovador ou observacao...",
959
- "noAccessDescription": "Permissoes de supervisor ou diretor sao necessarias para revisar aprovacoes.",
960
- "emptyDescription": "Nenhuma aprovacao corresponde aos filtros atuais.",
1106
+ "title": "Aprovações",
1107
+ "description": "Revise solicitações enviadas e registre decisões do supervisor.",
1108
+ "breadcrumb": "Aprovações",
1109
+ "searchPlaceholder": "Buscar solicitante, alvo, aprovador ou observação...",
1110
+ "noAccessDescription": "Permissões de supervisor ou diretor são necessárias para revisar aprovações.",
1111
+ "emptyDescription": "Nenhuma aprovação corresponde aos filtros atuais.",
961
1112
  "cards": {
962
1113
  "pending": "Pendentes",
1114
+ "pendingDescription": "Solicitações enviadas aguardando decisão do supervisor.",
963
1115
  "approved": "Aprovadas",
964
- "rejected": "Rejeitadas"
1116
+ "approvedDescription": "Solicitações que receberam uma decisão positiva.",
1117
+ "rejected": "Rejeitadas",
1118
+ "rejectedDescription": "Solicitações que não foram aprovadas pelo supervisor."
965
1119
  },
966
1120
  "dialog": {
967
- "approveTitle": "Aprovar solicitacao",
968
- "rejectTitle": "Rejeitar solicitacao",
969
- "description": "Adicione uma observacao opcional para a solicitacao de {requester}: {target}."
1121
+ "approveTitle": "Aprovar solicitação",
1122
+ "rejectTitle": "Rejeitar solicitação",
1123
+ "description": "Adicione uma observação opcional para a solicitação de {requester}: {target}.",
1124
+ "notePlaceholder": "Ex.: Aprovado para o período solicitado. Verifique a disponibilidade da equipe no calendário."
970
1125
  },
971
1126
  "options": {
972
1127
  "statuses": {
@@ -977,133 +1132,168 @@
977
1132
  },
978
1133
  "targetTypes": {
979
1134
  "timesheet": "Timesheet",
980
- "time_off_request": "Solicitacao de ausencia",
981
- "schedule_adjustment_request": "Ajuste de horario"
1135
+ "time_off_request": "Solicitação de ausência",
1136
+ "schedule_adjustment_request": "Ajuste de horário"
982
1137
  },
983
1138
  "timeOffTypes": {
984
- "vacation": "Ferias",
1139
+ "vacation": "Férias",
985
1140
  "personal_time": "Folga pessoal",
986
- "sick_leave": "Licenca medica",
987
- "unpaid_leave": "Licenca sem remuneracao",
1141
+ "sick_leave": "Licença médica",
1142
+ "unpaid_leave": "Licença sem remuneração",
988
1143
  "other": "Outro"
989
1144
  },
990
1145
  "scheduleScopes": {
991
- "temporary": "Temporario",
1146
+ "temporary": "Temporário",
992
1147
  "permanent": "Permanente"
993
1148
  }
994
1149
  },
995
1150
  "messages": {
996
- "approveSuccess": "Aprovacao concluida com sucesso.",
997
- "approveError": "Nao foi possivel aprovar a solicitacao.",
998
- "rejectSuccess": "Solicitacao rejeitada com sucesso.",
999
- "rejectError": "Nao foi possivel rejeitar a solicitacao."
1151
+ "approveSuccess": "Aprovação concluída com sucesso.",
1152
+ "approveError": "Não foi possível aprovar a solicitação.",
1153
+ "rejectSuccess": "Solicitação rejeitada com sucesso.",
1154
+ "rejectError": "Não foi possível rejeitar a solicitação."
1000
1155
  }
1001
1156
  },
1002
1157
  "TimeOffPage": {
1003
- "title": "Ausencias",
1004
- "description": "Crie e acompanhe solicitacoes de ferias ou outras ausencias.",
1005
- "breadcrumb": "Ausencias",
1006
- "searchPlaceholder": "Buscar colaborador, aprovador, motivo ou tipo de solicitacao...",
1007
- "emptyDescription": "Nenhuma solicitacao de ausencia corresponde aos filtros atuais.",
1158
+ "title": "Ausências",
1159
+ "description": "Solicite férias ou outras ausências e acompanhe o que está aguardando análise, aprovado ou não aprovado.",
1160
+ "breadcrumb": "Ausências",
1161
+ "searchPlaceholder": "Buscar colaborador, aprovador, motivo ou tipo de solicitação...",
1162
+ "emptyDescription": "Nenhuma solicitação de ausência corresponde aos filtros atuais.",
1008
1163
  "sheet": {
1009
- "title": "Criar solicitacao de ausencia",
1010
- "description": "Novas solicitacoes entram diretamente no fluxo de aprovacao."
1164
+ "title": "Criar solicitação de ausência",
1165
+ "description": "As férias continuam neste mesmo fluxo. Escolha as datas, adicione contexto se necessário e o supervisor fará a análise.",
1166
+ "helperTitle": "Use o mesmo fluxo para férias",
1167
+ "helperDescription": "Férias, licença médica, folga pessoal e outras ausências continuam reunidas aqui para manter o histórico simples de acompanhar.",
1168
+ "reasonPlaceholder": "Adicione um contexto curto que ajude o supervisor a revisar esta solicitação."
1011
1169
  },
1012
1170
  "cards": {
1013
- "submitted": "Solicitacoes enviadas",
1014
- "approved": "Solicitacoes aprovadas",
1015
- "days": "Dias solicitados"
1171
+ "submitted": "Aguardando análise",
1172
+ "submittedDescription": "Solicitações enviadas e pendentes de decisão do supervisor.",
1173
+ "approved": "Solicitações aprovadas",
1174
+ "approvedDescription": "Solicitações aprovadas e contabilizadas na capacidade.",
1175
+ "days": "Dias solicitados",
1176
+ "daysDescription": "Total de dias corridos em todas as solicitações enviadas."
1016
1177
  },
1017
1178
  "options": {
1018
1179
  "requestTypes": {
1019
- "vacation": "Ferias",
1180
+ "vacation": "Férias",
1020
1181
  "personal_time": "Folga pessoal",
1021
- "sick_leave": "Licenca medica",
1022
- "unpaid_leave": "Licenca sem remuneracao",
1182
+ "sick_leave": "Licença médica",
1183
+ "unpaid_leave": "Licença sem remuneração",
1023
1184
  "other": "Outro"
1024
1185
  },
1025
1186
  "statuses": {
1026
1187
  "draft": "Rascunho",
1027
- "submitted": "Enviado",
1188
+ "submitted": "Aguardando análise",
1028
1189
  "approved": "Aprovado",
1029
- "rejected": "Rejeitado",
1190
+ "rejected": "Não aprovado",
1030
1191
  "cancelled": "Cancelado"
1031
1192
  }
1032
1193
  },
1194
+ "statusHelp": {
1195
+ "submitted": "Aguardando análise do supervisor.",
1196
+ "approved": "Aprovado e mantido no histórico.",
1197
+ "rejected": "Confira as observações do gestor para os próximos passos."
1198
+ },
1033
1199
  "messages": {
1034
- "requiredFields": "Datas inicial e final sao obrigatorias.",
1035
- "saveSuccess": "Solicitacao de ausencia enviada com sucesso.",
1036
- "saveError": "Nao foi possivel enviar a solicitacao de ausencia."
1200
+ "requiredFields": "Datas inicial e final são obrigatórias.",
1201
+ "saveSuccess": "Solicitação de ausência enviada com sucesso.",
1202
+ "saveError": "Não foi possível enviar a solicitação de ausência."
1037
1203
  }
1038
1204
  },
1039
1205
  "ScheduleAdjustmentsPage": {
1040
- "title": "Ajustes de Horario",
1041
- "description": "Solicite mudancas temporarias ou permanentes no horario semanal.",
1042
- "breadcrumb": "Ajustes de Horario",
1206
+ "title": "Ajustes de Horário",
1207
+ "description": "Solicite mudanças temporárias ou permanentes no horário semanal e compare com clareza o horário atual e o solicitado.",
1208
+ "breadcrumb": "Ajustes de Horário",
1043
1209
  "searchPlaceholder": "Buscar colaborador, aprovador, escopo ou motivo...",
1044
- "emptyDescription": "Nenhuma solicitacao de ajuste de horario corresponde aos filtros atuais.",
1210
+ "emptyDescription": "Nenhuma solicitação de ajuste de horário corresponde aos filtros atuais.",
1045
1211
  "sheet": {
1046
- "title": "Criar ajuste de horario",
1047
- "description": "Solicitacoes de horario semanal sao encaminhadas ao supervisor do colaborador."
1212
+ "title": "Criar ajuste de horário",
1213
+ "description": "Informe os dias e horários que deseja ajustar. O supervisor comparará esta solicitação com o seu horário semanal atual.",
1214
+ "reasonPlaceholder": "Explique brevemente por que esta mudança de horário é necessária."
1048
1215
  },
1049
1216
  "cards": {
1050
- "submitted": "Solicitacoes enviadas",
1051
- "approved": "Solicitacoes aprovadas",
1052
- "permanent": "Solicitacoes permanentes"
1217
+ "submitted": "Aguardando análise",
1218
+ "submittedDescription": "Solicitações de ajuste enviadas e aguardando aprovação.",
1219
+ "approved": "Solicitações aprovadas",
1220
+ "approvedDescription": "Ajustes aceitos e aplicados ao horário do colaborador.",
1221
+ "permanent": "Solicitações permanentes",
1222
+ "permanentDescription": "Solicitações de mudança permanente de horário (não apenas temporárias)."
1053
1223
  },
1054
1224
  "options": {
1055
1225
  "requestScopes": {
1056
- "temporary": "Temporario",
1057
- "permanent": "Permanente"
1226
+ "temporary": "Ajuste temporário",
1227
+ "permanent": "Atualização permanente"
1058
1228
  },
1059
1229
  "statuses": {
1060
1230
  "draft": "Rascunho",
1061
- "submitted": "Enviado",
1231
+ "submitted": "Aguardando análise",
1062
1232
  "approved": "Aprovado",
1063
- "rejected": "Rejeitado",
1233
+ "rejected": "Não aprovado",
1064
1234
  "cancelled": "Cancelado"
1065
1235
  }
1066
1236
  },
1067
1237
  "table": {
1068
- "currentSchedule": "Horario atual"
1238
+ "currentSchedule": "Horário atual",
1239
+ "requestedSchedule": "Horário solicitado"
1240
+ },
1241
+ "scheduleEditor": {
1242
+ "summaryLabel": "Resumo semanal solicitado",
1243
+ "daysPerWeek": "{count} dia(s) úteis selecionado(s)",
1244
+ "helper": "Desative o dia se não houver expediente. Os campos de início, fim e intervalo só valem para dias úteis ativos.",
1245
+ "startTime": "Início",
1246
+ "endTime": "Fim",
1247
+ "breakMinutes": "Intervalo (min)"
1248
+ },
1249
+ "statusHelp": {
1250
+ "submitted": "Aguardando análise do supervisor.",
1251
+ "approved": "Aprovado e mantido no histórico.",
1252
+ "rejected": "Confira as observações do gestor para os próximos passos."
1069
1253
  },
1070
1254
  "messages": {
1071
- "requiredFields": "Uma data inicial de vigencia e obrigatoria.",
1072
- "saveSuccess": "Ajuste de horario enviado com sucesso.",
1073
- "saveError": "Nao foi possivel enviar o ajuste de horario."
1255
+ "requiredFields": "Uma data inicial de vigência é obrigatória.",
1256
+ "saveSuccess": "Ajuste de horário enviado com sucesso.",
1257
+ "saveError": "Não foi possível enviar o ajuste de horário."
1074
1258
  }
1075
1259
  },
1076
1260
  "TeamPage": {
1077
1261
  "title": "Equipe",
1078
- "description": "Visao do supervisor sobre liderados diretos, alocacoes e aprovacoes pendentes.",
1262
+ "description": "Visão do supervisor sobre liderados diretos, alocações e aprovações pendentes.",
1079
1263
  "breadcrumb": "Equipe",
1080
- "noAccessDescription": "Permissoes de supervisor ou diretor sao necessarias para visualizar o painel da equipe.",
1081
- "emptyDescription": "Ainda nao existem liderados diretos vinculados a este supervisor.",
1264
+ "noAccessDescription": "Permissões de supervisor ou diretor são necessárias para visualizar o painel da equipe.",
1265
+ "emptyDescription": "Ainda não existem liderados diretos vinculados a este supervisor.",
1082
1266
  "cards": {
1083
1267
  "members": "Membros da equipe",
1084
- "projects": "Projetos visiveis",
1085
- "pendingApprovals": "Aprovacoes pendentes",
1086
- "timeOff": "Fila de ausencias",
1087
- "scheduleAdjustments": "Fila de horarios",
1088
- "timesheets": "Fila de timesheets"
1268
+ "membersDescription": "Liderados diretos vinculados a este supervisor.",
1269
+ "projects": "Projetos visíveis",
1270
+ "projectsDescription": "Projetos ativos vinculados a pelo menos um membro da equipe.",
1271
+ "pendingApprovals": "Aprovações pendentes",
1272
+ "pendingApprovalsDescription": "Solicitações aguardando ação do supervisor.",
1273
+ "timeOff": "Fila de ausências",
1274
+ "timeOffDescription": "Solicitações de ausência aguardando revisão.",
1275
+ "scheduleAdjustments": "Fila de horários",
1276
+ "scheduleAdjustmentsDescription": "Solicitações de ajuste de horário aguardando revisão.",
1277
+ "timesheets": "Fila de timesheets",
1278
+ "timesheetsDescription": "Timesheets enviados e aguardando decisão."
1089
1279
  },
1090
1280
  "sections": {
1091
- "requests": "Solicitacoes em aberto",
1092
- "pendingApprovals": "Fila de aprovacoes pendentes",
1281
+ "requests": "Solicitações em aberto",
1282
+ "pendingApprovals": "Fila de aprovações pendentes",
1093
1283
  "projects": "Cobertura de projetos da equipe",
1094
- "timeOff": "Solicitacoes pendentes de ausencia",
1095
- "scheduleAdjustments": "Solicitacoes pendentes de mudanca de horario"
1284
+ "timeOff": "Solicitações pendentes de ausência",
1285
+ "scheduleAdjustments": "Solicitações pendentes de mudança de horário"
1096
1286
  },
1097
1287
  "labels": {
1098
- "timeOffRequestsCount": "{count} solicitacao(oes) de ausencia",
1099
- "scheduleRequestsCount": "{count} solicitacao(oes) de mudanca de horario",
1288
+ "timeOffRequestsCount": "{count} solicitação(ões) de ausência",
1289
+ "scheduleRequestsCount": "{count} solicitação(ões) de mudança de horário",
1100
1290
  "projectSummary": "{teamSize} colaborador(es) vinculados • {pendingTimesheets} timesheet(s) pendente(s)"
1101
1291
  },
1102
1292
  "states": {
1103
- "noPendingApprovals": "Nao ha aprovacoes pendentes atribuidas a este supervisor no momento.",
1104
- "noProjects": "Ainda nao ha projetos ativos vinculados a equipe visiveis.",
1105
- "noTimeOff": "Nenhuma solicitacao pendente de ausencia foi encontrada.",
1106
- "noScheduleAdjustments": "Nenhuma solicitacao pendente de ajuste de horario foi encontrada."
1293
+ "noPendingApprovals": "Não aprovações pendentes atribuídas a este supervisor no momento.",
1294
+ "noProjects": "Ainda não projetos ativos vinculados à equipe visíveis.",
1295
+ "noTimeOff": "Nenhuma solicitação pendente de ausência foi encontrada.",
1296
+ "noScheduleAdjustments": "Nenhuma solicitação pendente de ajuste de horário foi encontrada."
1107
1297
  }
1108
1298
  }
1109
1299
  }