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