@hed-hog/operations 0.0.330 → 0.0.332

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 (320) hide show
  1. package/README.md +5 -5
  2. package/dist/controllers/operations-collaborators.controller.d.ts +58 -213
  3. package/dist/controllers/operations-collaborators.controller.d.ts.map +1 -1
  4. package/dist/controllers/operations-collaborators.controller.js +100 -0
  5. package/dist/controllers/operations-collaborators.controller.js.map +1 -1
  6. package/dist/controllers/operations-contracts.controller.d.ts +6 -6
  7. package/dist/controllers/operations-projects.controller.d.ts +25 -0
  8. package/dist/controllers/operations-projects.controller.d.ts.map +1 -1
  9. package/dist/controllers/operations-projects.controller.js +48 -0
  10. package/dist/controllers/operations-projects.controller.js.map +1 -1
  11. package/dist/controllers/operations-reports.controller.d.ts +1 -1
  12. package/dist/controllers/operations-tasks.controller.d.ts +34 -9
  13. package/dist/controllers/operations-tasks.controller.d.ts.map +1 -1
  14. package/dist/controllers/operations-tasks.controller.js +43 -32
  15. package/dist/controllers/operations-tasks.controller.js.map +1 -1
  16. package/dist/controllers/operations-timesheets.controller.d.ts +9 -9
  17. package/dist/dashboard/components/DashboardLayout.d.ts +30 -0
  18. package/dist/dashboard/components/DashboardLayout.d.ts.map +1 -0
  19. package/dist/dashboard/components/DashboardLayout.js +87 -0
  20. package/dist/dashboard/components/DashboardLayout.js.map +1 -0
  21. package/dist/dashboard/components/widget-registry.d.ts +23 -0
  22. package/dist/dashboard/components/widget-registry.d.ts.map +1 -0
  23. package/dist/dashboard/components/widget-registry.js +245 -0
  24. package/dist/dashboard/components/widget-registry.js.map +1 -0
  25. package/dist/dashboard/hooks/useDashboardData.d.ts +20 -0
  26. package/dist/dashboard/hooks/useDashboardData.d.ts.map +1 -0
  27. package/dist/dashboard/hooks/useDashboardData.js +24 -0
  28. package/dist/dashboard/hooks/useDashboardData.js.map +1 -0
  29. package/dist/dashboard/types/widgets.types.d.ts +233 -0
  30. package/dist/dashboard/types/widgets.types.d.ts.map +1 -0
  31. package/dist/dashboard/types/widgets.types.js +6 -0
  32. package/dist/dashboard/types/widgets.types.js.map +1 -0
  33. package/dist/dashboard/widgets/CapacityDistribution.d.ts +23 -0
  34. package/dist/dashboard/widgets/CapacityDistribution.d.ts.map +1 -0
  35. package/dist/dashboard/widgets/CapacityDistribution.js +11 -0
  36. package/dist/dashboard/widgets/CapacityDistribution.js.map +1 -0
  37. package/dist/dashboard/widgets/EffortByProject.d.ts +22 -0
  38. package/dist/dashboard/widgets/EffortByProject.d.ts.map +1 -0
  39. package/dist/dashboard/widgets/EffortByProject.js +11 -0
  40. package/dist/dashboard/widgets/EffortByProject.js.map +1 -0
  41. package/dist/dashboard/widgets/HeadcountByArea.d.ts +24 -0
  42. package/dist/dashboard/widgets/HeadcountByArea.d.ts.map +1 -0
  43. package/dist/dashboard/widgets/HeadcountByArea.js +11 -0
  44. package/dist/dashboard/widgets/HeadcountByArea.js.map +1 -0
  45. package/dist/dashboard/widgets/ManagedProjectsStatus.d.ts +18 -0
  46. package/dist/dashboard/widgets/ManagedProjectsStatus.d.ts.map +1 -0
  47. package/dist/dashboard/widgets/ManagedProjectsStatus.js +12 -0
  48. package/dist/dashboard/widgets/ManagedProjectsStatus.js.map +1 -0
  49. package/dist/dashboard/widgets/MyHoursPeriodKpi.d.ts +22 -0
  50. package/dist/dashboard/widgets/MyHoursPeriodKpi.d.ts.map +1 -0
  51. package/dist/dashboard/widgets/MyHoursPeriodKpi.js +12 -0
  52. package/dist/dashboard/widgets/MyHoursPeriodKpi.js.map +1 -0
  53. package/dist/dashboard/widgets/MyOpenRequestsKpi.d.ts +19 -0
  54. package/dist/dashboard/widgets/MyOpenRequestsKpi.d.ts.map +1 -0
  55. package/dist/dashboard/widgets/MyOpenRequestsKpi.js +17 -0
  56. package/dist/dashboard/widgets/MyOpenRequestsKpi.js.map +1 -0
  57. package/dist/dashboard/widgets/MyPendingRequestsList.d.ts +23 -0
  58. package/dist/dashboard/widgets/MyPendingRequestsList.d.ts.map +1 -0
  59. package/dist/dashboard/widgets/MyPendingRequestsList.js +14 -0
  60. package/dist/dashboard/widgets/MyPendingRequestsList.js.map +1 -0
  61. package/dist/dashboard/widgets/MyProjectAllocationsKpi.d.ts +22 -0
  62. package/dist/dashboard/widgets/MyProjectAllocationsKpi.d.ts.map +1 -0
  63. package/dist/dashboard/widgets/MyProjectAllocationsKpi.js +11 -0
  64. package/dist/dashboard/widgets/MyProjectAllocationsKpi.js.map +1 -0
  65. package/dist/dashboard/widgets/MyQuickActions.d.ts +23 -0
  66. package/dist/dashboard/widgets/MyQuickActions.d.ts.map +1 -0
  67. package/dist/dashboard/widgets/MyQuickActions.js +18 -0
  68. package/dist/dashboard/widgets/MyQuickActions.js.map +1 -0
  69. package/dist/dashboard/widgets/MyRelevantDeadlines.d.ts +23 -0
  70. package/dist/dashboard/widgets/MyRelevantDeadlines.d.ts.map +1 -0
  71. package/dist/dashboard/widgets/MyRelevantDeadlines.js +22 -0
  72. package/dist/dashboard/widgets/MyRelevantDeadlines.js.map +1 -0
  73. package/dist/dashboard/widgets/MyTimesheetStatusKpi.d.ts +17 -0
  74. package/dist/dashboard/widgets/MyTimesheetStatusKpi.d.ts.map +1 -0
  75. package/dist/dashboard/widgets/MyTimesheetStatusKpi.js +11 -0
  76. package/dist/dashboard/widgets/MyTimesheetStatusKpi.js.map +1 -0
  77. package/dist/dashboard/widgets/MyWeeklyJourney.d.ts +21 -0
  78. package/dist/dashboard/widgets/MyWeeklyJourney.d.ts.map +1 -0
  79. package/dist/dashboard/widgets/MyWeeklyJourney.js +19 -0
  80. package/dist/dashboard/widgets/MyWeeklyJourney.js.map +1 -0
  81. package/dist/dashboard/widgets/PortfolioCostsKpi.d.ts +19 -0
  82. package/dist/dashboard/widgets/PortfolioCostsKpi.d.ts.map +1 -0
  83. package/dist/dashboard/widgets/PortfolioCostsKpi.js +12 -0
  84. package/dist/dashboard/widgets/PortfolioCostsKpi.js.map +1 -0
  85. package/dist/dashboard/widgets/PortfolioEffortKpi.d.ts +18 -0
  86. package/dist/dashboard/widgets/PortfolioEffortKpi.d.ts.map +1 -0
  87. package/dist/dashboard/widgets/PortfolioEffortKpi.js +8 -0
  88. package/dist/dashboard/widgets/PortfolioEffortKpi.js.map +1 -0
  89. package/dist/dashboard/widgets/PortfolioProjectsKpi.d.ts +22 -0
  90. package/dist/dashboard/widgets/PortfolioProjectsKpi.d.ts.map +1 -0
  91. package/dist/dashboard/widgets/PortfolioProjectsKpi.js +56 -0
  92. package/dist/dashboard/widgets/PortfolioProjectsKpi.js.map +1 -0
  93. package/dist/dashboard/widgets/PortfolioRiskKpi.d.ts +19 -0
  94. package/dist/dashboard/widgets/PortfolioRiskKpi.d.ts.map +1 -0
  95. package/dist/dashboard/widgets/PortfolioRiskKpi.js +11 -0
  96. package/dist/dashboard/widgets/PortfolioRiskKpi.js.map +1 -0
  97. package/dist/dashboard/widgets/ProjectStatusOverview.d.ts +19 -0
  98. package/dist/dashboard/widgets/ProjectStatusOverview.d.ts.map +1 -0
  99. package/dist/dashboard/widgets/ProjectStatusOverview.js +18 -0
  100. package/dist/dashboard/widgets/ProjectStatusOverview.js.map +1 -0
  101. package/dist/dashboard/widgets/StrategicDeadlines.d.ts +24 -0
  102. package/dist/dashboard/widgets/StrategicDeadlines.d.ts.map +1 -0
  103. package/dist/dashboard/widgets/StrategicDeadlines.js +22 -0
  104. package/dist/dashboard/widgets/StrategicDeadlines.js.map +1 -0
  105. package/dist/dashboard/widgets/TeamApprovalQueue.d.ts +24 -0
  106. package/dist/dashboard/widgets/TeamApprovalQueue.d.ts.map +1 -0
  107. package/dist/dashboard/widgets/TeamApprovalQueue.js +12 -0
  108. package/dist/dashboard/widgets/TeamApprovalQueue.js.map +1 -0
  109. package/dist/dashboard/widgets/TeamCapacityKpi.d.ts +18 -0
  110. package/dist/dashboard/widgets/TeamCapacityKpi.d.ts.map +1 -0
  111. package/dist/dashboard/widgets/TeamCapacityKpi.js +19 -0
  112. package/dist/dashboard/widgets/TeamCapacityKpi.js.map +1 -0
  113. package/dist/dashboard/widgets/TeamHeadcountKpi.d.ts +22 -0
  114. package/dist/dashboard/widgets/TeamHeadcountKpi.d.ts.map +1 -0
  115. package/dist/dashboard/widgets/TeamHeadcountKpi.js +56 -0
  116. package/dist/dashboard/widgets/TeamHeadcountKpi.js.map +1 -0
  117. package/dist/dashboard/widgets/TeamHoursKpi.d.ts +19 -0
  118. package/dist/dashboard/widgets/TeamHoursKpi.d.ts.map +1 -0
  119. package/dist/dashboard/widgets/TeamHoursKpi.js +13 -0
  120. package/dist/dashboard/widgets/TeamHoursKpi.js.map +1 -0
  121. package/dist/dashboard/widgets/TeamPendingApprovalsKpi.d.ts +20 -0
  122. package/dist/dashboard/widgets/TeamPendingApprovalsKpi.d.ts.map +1 -0
  123. package/dist/dashboard/widgets/TeamPendingApprovalsKpi.js +11 -0
  124. package/dist/dashboard/widgets/TeamPendingApprovalsKpi.js.map +1 -0
  125. package/dist/dashboard/widgets/TeamUtilizationOverview.d.ts +18 -0
  126. package/dist/dashboard/widgets/TeamUtilizationOverview.d.ts.map +1 -0
  127. package/dist/dashboard/widgets/TeamUtilizationOverview.js +17 -0
  128. package/dist/dashboard/widgets/TeamUtilizationOverview.js.map +1 -0
  129. package/dist/dashboard/widgets/TeamWorkloadAlerts.d.ts +24 -0
  130. package/dist/dashboard/widgets/TeamWorkloadAlerts.d.ts.map +1 -0
  131. package/dist/dashboard/widgets/TeamWorkloadAlerts.js +19 -0
  132. package/dist/dashboard/widgets/TeamWorkloadAlerts.js.map +1 -0
  133. package/dist/dashboard/widgets/index.d.ts +24 -0
  134. package/dist/dashboard/widgets/index.d.ts.map +1 -0
  135. package/dist/dashboard/widgets/index.js +54 -0
  136. package/dist/dashboard/widgets/index.js.map +1 -0
  137. package/dist/dto/create-collaborator-invoice.dto.d.ts +11 -0
  138. package/dist/dto/create-collaborator-invoice.dto.d.ts.map +1 -0
  139. package/dist/dto/create-collaborator-invoice.dto.js +55 -0
  140. package/dist/dto/create-collaborator-invoice.dto.js.map +1 -0
  141. package/dist/dto/create-collaborator-payment.dto.d.ts +10 -0
  142. package/dist/dto/create-collaborator-payment.dto.d.ts.map +1 -0
  143. package/dist/dto/create-collaborator-payment.dto.js +50 -0
  144. package/dist/dto/create-collaborator-payment.dto.js.map +1 -0
  145. package/dist/dto/create-collaborator.dto.d.ts +0 -1
  146. package/dist/dto/create-collaborator.dto.d.ts.map +1 -1
  147. package/dist/dto/create-collaborator.dto.js +0 -6
  148. package/dist/dto/create-collaborator.dto.js.map +1 -1
  149. package/dist/dto/list-collaborator-invoice.dto.d.ts +4 -0
  150. package/dist/dto/list-collaborator-invoice.dto.d.ts.map +1 -0
  151. package/dist/dto/list-collaborator-invoice.dto.js +8 -0
  152. package/dist/dto/list-collaborator-invoice.dto.js.map +1 -0
  153. package/dist/dto/list-collaborator-payment.dto.d.ts +4 -0
  154. package/dist/dto/list-collaborator-payment.dto.d.ts.map +1 -0
  155. package/dist/dto/list-collaborator-payment.dto.js +8 -0
  156. package/dist/dto/list-collaborator-payment.dto.js.map +1 -0
  157. package/dist/dto/update-collaborator-invoice.dto.d.ts +6 -0
  158. package/dist/dto/update-collaborator-invoice.dto.d.ts.map +1 -0
  159. package/dist/dto/update-collaborator-invoice.dto.js +9 -0
  160. package/dist/dto/update-collaborator-invoice.dto.js.map +1 -0
  161. package/dist/dto/update-collaborator-payment.dto.d.ts +6 -0
  162. package/dist/dto/update-collaborator-payment.dto.d.ts.map +1 -0
  163. package/dist/dto/update-collaborator-payment.dto.js +9 -0
  164. package/dist/dto/update-collaborator-payment.dto.js.map +1 -0
  165. package/dist/index.d.ts +2 -0
  166. package/dist/index.d.ts.map +1 -1
  167. package/dist/index.js +2 -0
  168. package/dist/index.js.map +1 -1
  169. package/dist/operations.controller.d.ts +42 -0
  170. package/dist/operations.controller.d.ts.map +1 -1
  171. package/dist/operations.service.d.ts +258 -268
  172. package/dist/operations.service.d.ts.map +1 -1
  173. package/dist/operations.service.js +2381 -1341
  174. package/dist/operations.service.js.map +1 -1
  175. package/dist/operations.service.spec.js +345 -174
  176. package/dist/operations.service.spec.js.map +1 -1
  177. package/hedhog/data/dashboard_component.yaml +66 -0
  178. package/hedhog/data/dashboard_item.yaml +25 -25
  179. package/hedhog/data/menu.yaml +27 -8
  180. package/hedhog/data/route.yaml +133 -0
  181. package/hedhog/frontend/app/_components/collaborator-form-screen.tsx.ejs +78 -102
  182. package/hedhog/frontend/app/_components/collaborator-invoices-tab.tsx.ejs +443 -0
  183. package/hedhog/frontend/app/_components/collaborator-payment-history-tab.tsx.ejs +429 -0
  184. package/hedhog/frontend/app/_components/collaborator-picker.tsx.ejs +158 -0
  185. package/hedhog/frontend/app/_components/my-project-summary-screen.tsx.ejs +247 -50
  186. package/hedhog/frontend/app/_components/project-assignments-tab.tsx.ejs +643 -450
  187. package/hedhog/frontend/app/_components/project-details-screen.tsx.ejs +992 -431
  188. package/hedhog/frontend/app/_components/project-file-attachments.tsx.ejs +371 -0
  189. package/hedhog/frontend/app/_components/project-form-screen.tsx.ejs +558 -386
  190. package/hedhog/frontend/app/_components/task-detail-sheet.tsx.ejs +383 -157
  191. package/hedhog/frontend/app/_components/task-file-attachments.tsx.ejs +4 -1
  192. package/hedhog/frontend/app/_components/task-form-fields.tsx.ejs +406 -0
  193. package/hedhog/frontend/app/_components/task-form-sheet.tsx.ejs +629 -784
  194. package/hedhog/frontend/app/_components/task-info-display.tsx.ejs +137 -0
  195. package/hedhog/frontend/app/_components/timesheet-entry-create-sheet.tsx.ejs +306 -0
  196. package/hedhog/frontend/app/_lib/api.ts.ejs +155 -0
  197. package/hedhog/frontend/app/_lib/types.ts.ejs +62 -0
  198. package/hedhog/frontend/app/_lib/utils/format.ts.ejs +0 -2
  199. package/hedhog/frontend/app/_lib/utils/task-ui.ts.ejs +61 -0
  200. package/hedhog/frontend/app/approvals/page.tsx.ejs +6 -1
  201. package/hedhog/frontend/app/collaborator-types/page.tsx.ejs +6 -1
  202. package/hedhog/frontend/app/collaborators/page.tsx.ejs +59 -8
  203. package/hedhog/frontend/app/contracts/page.tsx.ejs +29 -8
  204. package/hedhog/frontend/app/dashboard/widgets/CapacityDistribution.tsx.ejs +84 -0
  205. package/hedhog/frontend/app/dashboard/widgets/EffortByProject.tsx.ejs +85 -0
  206. package/hedhog/frontend/app/dashboard/widgets/HeadcountByArea.tsx.ejs +101 -0
  207. package/hedhog/frontend/app/dashboard/widgets/ManagedProjectsStatus.tsx.ejs +113 -0
  208. package/hedhog/frontend/app/dashboard/widgets/MyHoursPeriodKpi.tsx.ejs +87 -0
  209. package/hedhog/frontend/app/dashboard/widgets/MyOpenRequestsKpi.tsx.ejs +97 -0
  210. package/hedhog/frontend/app/dashboard/widgets/MyPendingRequestsList.tsx.ejs +99 -0
  211. package/hedhog/frontend/app/dashboard/widgets/MyProjectAllocationsKpi.tsx.ejs +78 -0
  212. package/hedhog/frontend/app/dashboard/widgets/MyQuickActions.tsx.ejs +130 -0
  213. package/hedhog/frontend/app/dashboard/widgets/MyRelevantDeadlines.tsx.ejs +144 -0
  214. package/hedhog/frontend/app/dashboard/widgets/MyTimesheetStatusKpi.tsx.ejs +78 -0
  215. package/hedhog/frontend/app/dashboard/widgets/MyWeeklyJourney.tsx.ejs +99 -0
  216. package/hedhog/frontend/app/dashboard/widgets/PortfolioCostsKpi.tsx.ejs +112 -0
  217. package/hedhog/frontend/app/dashboard/widgets/PortfolioEffortKpi.tsx.ejs +93 -0
  218. package/hedhog/frontend/app/dashboard/widgets/PortfolioProjectsKpi.tsx.ejs +96 -0
  219. package/hedhog/frontend/app/dashboard/widgets/PortfolioRiskKpi.tsx.ejs +115 -0
  220. package/hedhog/frontend/app/dashboard/widgets/ProjectStatusOverview.tsx.ejs +120 -0
  221. package/hedhog/frontend/app/dashboard/widgets/StrategicDeadlines.tsx.ejs +146 -0
  222. package/hedhog/frontend/app/dashboard/widgets/TeamApprovalQueue.tsx.ejs +108 -0
  223. package/hedhog/frontend/app/dashboard/widgets/TeamCapacityKpi.tsx.ejs +97 -0
  224. package/hedhog/frontend/app/dashboard/widgets/TeamHeadcountKpi.tsx.ejs +100 -0
  225. package/hedhog/frontend/app/dashboard/widgets/TeamHoursKpi.tsx.ejs +104 -0
  226. package/hedhog/frontend/app/dashboard/widgets/TeamPendingApprovalsKpi.tsx.ejs +110 -0
  227. package/hedhog/frontend/app/dashboard/widgets/TeamUtilizationOverview.tsx.ejs +115 -0
  228. package/hedhog/frontend/app/dashboard/widgets/TeamWorkloadAlerts.tsx.ejs +117 -0
  229. package/hedhog/frontend/app/dashboard/widgets/index.ts.ejs +26 -0
  230. package/hedhog/frontend/app/departments/page.tsx.ejs +6 -1
  231. package/hedhog/frontend/app/my-projects/page.tsx.ejs +30 -12
  232. package/hedhog/frontend/app/my-tasks/page.tsx.ejs +286 -125
  233. package/hedhog/frontend/app/project-cost-categories/page.tsx.ejs +58 -52
  234. package/hedhog/frontend/app/project-cost-types/page.tsx.ejs +58 -51
  235. package/hedhog/frontend/app/projects/page.tsx.ejs +415 -33
  236. package/hedhog/frontend/app/schedule-adjustments/page.tsx.ejs +6 -1
  237. package/hedhog/frontend/app/tasks-gantt/page.tsx.ejs +953 -0
  238. package/hedhog/frontend/app/time-off/page.tsx.ejs +6 -1
  239. package/hedhog/frontend/app/timesheets/page.tsx.ejs +10 -4
  240. package/hedhog/frontend/messages/en.json +332 -46
  241. package/hedhog/frontend/messages/operations/en.json +61 -52
  242. package/hedhog/frontend/messages/operations/pt.json +59 -43
  243. package/hedhog/frontend/messages/pt.json +332 -46
  244. package/hedhog/frontend/widgets/capacity-distribution.tsx.ejs +17 -0
  245. package/hedhog/frontend/widgets/effort-by-project.tsx.ejs +17 -0
  246. package/hedhog/frontend/widgets/headcount-by-area.tsx.ejs +17 -0
  247. package/hedhog/frontend/widgets/index.ts.ejs +25 -0
  248. package/hedhog/frontend/widgets/managed-projects-status.tsx.ejs +17 -0
  249. package/hedhog/frontend/widgets/my-hours-period-kpi.tsx.ejs +17 -0
  250. package/hedhog/frontend/widgets/my-open-requests-kpi.tsx.ejs +17 -0
  251. package/hedhog/frontend/widgets/my-pending-requests-list.tsx.ejs +17 -0
  252. package/hedhog/frontend/widgets/my-project-allocations-kpi.tsx.ejs +17 -0
  253. package/hedhog/frontend/widgets/my-quick-actions.tsx.ejs +17 -0
  254. package/hedhog/frontend/widgets/my-relevant-deadlines.tsx.ejs +17 -0
  255. package/hedhog/frontend/widgets/my-timesheet-status-kpi.tsx.ejs +17 -0
  256. package/hedhog/frontend/widgets/my-weekly-journey.tsx.ejs +17 -0
  257. package/hedhog/frontend/widgets/portfolio-costs-kpi.tsx.ejs +17 -0
  258. package/hedhog/frontend/widgets/portfolio-effort-kpi.tsx.ejs +17 -0
  259. package/hedhog/frontend/widgets/portfolio-projects-kpi.tsx.ejs +17 -0
  260. package/hedhog/frontend/widgets/portfolio-risk-kpi.tsx.ejs +17 -0
  261. package/hedhog/frontend/widgets/project-status-overview.tsx.ejs +17 -0
  262. package/hedhog/frontend/widgets/shared-operations-widget.tsx.ejs +170 -0
  263. package/hedhog/frontend/widgets/strategic-deadlines.tsx.ejs +17 -0
  264. package/hedhog/frontend/widgets/team-approval-queue.tsx.ejs +17 -0
  265. package/hedhog/frontend/widgets/team-capacity-kpi.tsx.ejs +17 -0
  266. package/hedhog/frontend/widgets/team-headcount-kpi.tsx.ejs +17 -0
  267. package/hedhog/frontend/widgets/team-hours-kpi.tsx.ejs +17 -0
  268. package/hedhog/frontend/widgets/team-pending-approvals-kpi.tsx.ejs +17 -0
  269. package/hedhog/frontend/widgets/team-utilization-overview.tsx.ejs +17 -0
  270. package/hedhog/frontend/widgets/team-workload-alerts.tsx.ejs +17 -0
  271. package/hedhog/table/operations_collaborator.yaml +8 -13
  272. package/hedhog/table/operations_collaborator_invoice.yaml +35 -0
  273. package/hedhog/table/operations_collaborator_payment.yaml +32 -0
  274. package/hedhog/table/operations_project.yaml +1 -1
  275. package/hedhog/table/operations_project_file.yaml +23 -0
  276. package/hedhog/table/operations_task.yaml +76 -69
  277. package/hedhog/table/operations_task_activity.yaml +51 -0
  278. package/package.json +6 -5
  279. package/src/controllers/operations-collaborators.controller.ts +117 -8
  280. package/src/controllers/operations-projects.controller.ts +41 -8
  281. package/src/controllers/operations-tasks.controller.ts +156 -166
  282. package/src/dashboard/README.md +214 -0
  283. package/src/dashboard/components/DashboardLayout.tsx +131 -0
  284. package/src/dashboard/components/widget-registry.ts +255 -0
  285. package/src/dashboard/hooks/useDashboardData.ts +29 -0
  286. package/src/dashboard/types/widgets.types.ts +237 -0
  287. package/src/dashboard/widgets/CapacityDistribution.tsx +56 -0
  288. package/src/dashboard/widgets/EffortByProject.tsx +51 -0
  289. package/src/dashboard/widgets/HeadcountByArea.tsx +57 -0
  290. package/src/dashboard/widgets/ManagedProjectsStatus.tsx +53 -0
  291. package/src/dashboard/widgets/MyHoursPeriodKpi.tsx +87 -0
  292. package/src/dashboard/widgets/MyOpenRequestsKpi.tsx +51 -0
  293. package/src/dashboard/widgets/MyPendingRequestsList.tsx +63 -0
  294. package/src/dashboard/widgets/MyProjectAllocationsKpi.tsx +57 -0
  295. package/src/dashboard/widgets/MyQuickActions.tsx +62 -0
  296. package/src/dashboard/widgets/MyRelevantDeadlines.tsx +84 -0
  297. package/src/dashboard/widgets/MyTimesheetStatusKpi.tsx +65 -0
  298. package/src/dashboard/widgets/MyWeeklyJourney.tsx +57 -0
  299. package/src/dashboard/widgets/PortfolioCostsKpi.tsx +48 -0
  300. package/src/dashboard/widgets/PortfolioEffortKpi.tsx +41 -0
  301. package/src/dashboard/widgets/PortfolioRiskKpi.tsx +50 -0
  302. package/src/dashboard/widgets/ProjectStatusOverview.tsx +52 -0
  303. package/src/dashboard/widgets/StrategicDeadlines.tsx +93 -0
  304. package/src/dashboard/widgets/TeamApprovalQueue.tsx +70 -0
  305. package/src/dashboard/widgets/TeamCapacityKpi.tsx +50 -0
  306. package/src/dashboard/widgets/TeamHoursKpi.tsx +51 -0
  307. package/src/dashboard/widgets/TeamPendingApprovalsKpi.tsx +53 -0
  308. package/src/dashboard/widgets/TeamUtilizationOverview.tsx +62 -0
  309. package/src/dashboard/widgets/TeamWorkloadAlerts.tsx +81 -0
  310. package/src/dashboard/widgets/index.ts +26 -0
  311. package/src/dto/create-collaborator-invoice.dto.ts +39 -0
  312. package/src/dto/create-collaborator-payment.dto.ts +35 -0
  313. package/src/dto/create-collaborator.dto.ts +4 -11
  314. package/src/dto/list-collaborator-invoice.dto.ts +3 -0
  315. package/src/dto/list-collaborator-payment.dto.ts +3 -0
  316. package/src/dto/update-collaborator-invoice.dto.ts +6 -0
  317. package/src/dto/update-collaborator-payment.dto.ts +6 -0
  318. package/src/index.ts +3 -0
  319. package/src/operations.service.spec.ts +988 -764
  320. package/src/operations.service.ts +4689 -2624
@@ -0,0 +1,17 @@
1
+ 'use client';
2
+
3
+ import SharedOperationsWidget from './operations.shared-operations-widget';
4
+
5
+ interface WidgetLayoutLike {
6
+ name?: string;
7
+ slug?: string;
8
+ }
9
+
10
+ interface OperationsWidgetProps {
11
+ widget?: WidgetLayoutLike;
12
+ onRemove?: () => void;
13
+ }
14
+
15
+ export default function OperationsWidget(props: OperationsWidgetProps) {
16
+ return <SharedOperationsWidget {...props} slug='my-hours-period-kpi' />;
17
+ }
@@ -0,0 +1,17 @@
1
+ 'use client';
2
+
3
+ import SharedOperationsWidget from './operations.shared-operations-widget';
4
+
5
+ interface WidgetLayoutLike {
6
+ name?: string;
7
+ slug?: string;
8
+ }
9
+
10
+ interface OperationsWidgetProps {
11
+ widget?: WidgetLayoutLike;
12
+ onRemove?: () => void;
13
+ }
14
+
15
+ export default function OperationsWidget(props: OperationsWidgetProps) {
16
+ return <SharedOperationsWidget {...props} slug='my-open-requests-kpi' />;
17
+ }
@@ -0,0 +1,17 @@
1
+ 'use client';
2
+
3
+ import SharedOperationsWidget from './operations.shared-operations-widget';
4
+
5
+ interface WidgetLayoutLike {
6
+ name?: string;
7
+ slug?: string;
8
+ }
9
+
10
+ interface OperationsWidgetProps {
11
+ widget?: WidgetLayoutLike;
12
+ onRemove?: () => void;
13
+ }
14
+
15
+ export default function OperationsWidget(props: OperationsWidgetProps) {
16
+ return <SharedOperationsWidget {...props} slug='my-pending-requests-list' />;
17
+ }
@@ -0,0 +1,17 @@
1
+ 'use client';
2
+
3
+ import SharedOperationsWidget from './operations.shared-operations-widget';
4
+
5
+ interface WidgetLayoutLike {
6
+ name?: string;
7
+ slug?: string;
8
+ }
9
+
10
+ interface OperationsWidgetProps {
11
+ widget?: WidgetLayoutLike;
12
+ onRemove?: () => void;
13
+ }
14
+
15
+ export default function OperationsWidget(props: OperationsWidgetProps) {
16
+ return <SharedOperationsWidget {...props} slug='my-project-allocations-kpi' />;
17
+ }
@@ -0,0 +1,17 @@
1
+ 'use client';
2
+
3
+ import SharedOperationsWidget from './operations.shared-operations-widget';
4
+
5
+ interface WidgetLayoutLike {
6
+ name?: string;
7
+ slug?: string;
8
+ }
9
+
10
+ interface OperationsWidgetProps {
11
+ widget?: WidgetLayoutLike;
12
+ onRemove?: () => void;
13
+ }
14
+
15
+ export default function OperationsWidget(props: OperationsWidgetProps) {
16
+ return <SharedOperationsWidget {...props} slug='my-quick-actions' />;
17
+ }
@@ -0,0 +1,17 @@
1
+ 'use client';
2
+
3
+ import SharedOperationsWidget from './operations.shared-operations-widget';
4
+
5
+ interface WidgetLayoutLike {
6
+ name?: string;
7
+ slug?: string;
8
+ }
9
+
10
+ interface OperationsWidgetProps {
11
+ widget?: WidgetLayoutLike;
12
+ onRemove?: () => void;
13
+ }
14
+
15
+ export default function OperationsWidget(props: OperationsWidgetProps) {
16
+ return <SharedOperationsWidget {...props} slug='my-relevant-deadlines' />;
17
+ }
@@ -0,0 +1,17 @@
1
+ 'use client';
2
+
3
+ import SharedOperationsWidget from './operations.shared-operations-widget';
4
+
5
+ interface WidgetLayoutLike {
6
+ name?: string;
7
+ slug?: string;
8
+ }
9
+
10
+ interface OperationsWidgetProps {
11
+ widget?: WidgetLayoutLike;
12
+ onRemove?: () => void;
13
+ }
14
+
15
+ export default function OperationsWidget(props: OperationsWidgetProps) {
16
+ return <SharedOperationsWidget {...props} slug='my-timesheet-status-kpi' />;
17
+ }
@@ -0,0 +1,17 @@
1
+ 'use client';
2
+
3
+ import SharedOperationsWidget from './operations.shared-operations-widget';
4
+
5
+ interface WidgetLayoutLike {
6
+ name?: string;
7
+ slug?: string;
8
+ }
9
+
10
+ interface OperationsWidgetProps {
11
+ widget?: WidgetLayoutLike;
12
+ onRemove?: () => void;
13
+ }
14
+
15
+ export default function OperationsWidget(props: OperationsWidgetProps) {
16
+ return <SharedOperationsWidget {...props} slug='my-weekly-journey' />;
17
+ }
@@ -0,0 +1,17 @@
1
+ 'use client';
2
+
3
+ import SharedOperationsWidget from './operations.shared-operations-widget';
4
+
5
+ interface WidgetLayoutLike {
6
+ name?: string;
7
+ slug?: string;
8
+ }
9
+
10
+ interface OperationsWidgetProps {
11
+ widget?: WidgetLayoutLike;
12
+ onRemove?: () => void;
13
+ }
14
+
15
+ export default function OperationsWidget(props: OperationsWidgetProps) {
16
+ return <SharedOperationsWidget {...props} slug='portfolio-costs-kpi' />;
17
+ }
@@ -0,0 +1,17 @@
1
+ 'use client';
2
+
3
+ import SharedOperationsWidget from './operations.shared-operations-widget';
4
+
5
+ interface WidgetLayoutLike {
6
+ name?: string;
7
+ slug?: string;
8
+ }
9
+
10
+ interface OperationsWidgetProps {
11
+ widget?: WidgetLayoutLike;
12
+ onRemove?: () => void;
13
+ }
14
+
15
+ export default function OperationsWidget(props: OperationsWidgetProps) {
16
+ return <SharedOperationsWidget {...props} slug='portfolio-effort-kpi' />;
17
+ }
@@ -0,0 +1,17 @@
1
+ 'use client';
2
+
3
+ import SharedOperationsWidget from './operations.shared-operations-widget';
4
+
5
+ interface WidgetLayoutLike {
6
+ name?: string;
7
+ slug?: string;
8
+ }
9
+
10
+ interface OperationsWidgetProps {
11
+ widget?: WidgetLayoutLike;
12
+ onRemove?: () => void;
13
+ }
14
+
15
+ export default function OperationsWidget(props: OperationsWidgetProps) {
16
+ return <SharedOperationsWidget {...props} slug='portfolio-projects-kpi' />;
17
+ }
@@ -0,0 +1,17 @@
1
+ 'use client';
2
+
3
+ import SharedOperationsWidget from './operations.shared-operations-widget';
4
+
5
+ interface WidgetLayoutLike {
6
+ name?: string;
7
+ slug?: string;
8
+ }
9
+
10
+ interface OperationsWidgetProps {
11
+ widget?: WidgetLayoutLike;
12
+ onRemove?: () => void;
13
+ }
14
+
15
+ export default function OperationsWidget(props: OperationsWidgetProps) {
16
+ return <SharedOperationsWidget {...props} slug='portfolio-risk-kpi' />;
17
+ }
@@ -0,0 +1,17 @@
1
+ 'use client';
2
+
3
+ import SharedOperationsWidget from './operations.shared-operations-widget';
4
+
5
+ interface WidgetLayoutLike {
6
+ name?: string;
7
+ slug?: string;
8
+ }
9
+
10
+ interface OperationsWidgetProps {
11
+ widget?: WidgetLayoutLike;
12
+ onRemove?: () => void;
13
+ }
14
+
15
+ export default function OperationsWidget(props: OperationsWidgetProps) {
16
+ return <SharedOperationsWidget {...props} slug='project-status-overview' />;
17
+ }
@@ -0,0 +1,170 @@
1
+ 'use client';
2
+
3
+ import { WidgetWrapper } from '@/app/(app)/(libraries)/core/dashboard/components';
4
+ import { Card, CardContent } from '@/components/ui/card';
5
+ import { useWidgetData } from '@/hooks/use-widget-data';
6
+
7
+ interface WidgetLayoutLike {
8
+ name?: string;
9
+ slug?: string;
10
+ }
11
+
12
+ interface OperationsWidgetProps {
13
+ widget?: WidgetLayoutLike;
14
+ onRemove?: () => void;
15
+ }
16
+
17
+ interface OperationsDashboardData {
18
+ actor: {
19
+ roleScope: 'self' | 'team' | 'full';
20
+ collaboratorId: number | null;
21
+ collaboratorName: string | null;
22
+ teamSize: number;
23
+ };
24
+ cards: {
25
+ projectsTotal: number;
26
+ activeProjects: number;
27
+ visibleTimesheets: number;
28
+ pendingTimesheets: number;
29
+ timeOffRequests: number;
30
+ scheduleAdjustmentRequests: number;
31
+ pendingApprovals: number;
32
+ };
33
+ recentTimesheets: Array<{
34
+ id: number;
35
+ collaboratorName: string;
36
+ weekStartDate: string;
37
+ weekEndDate: string;
38
+ totalHours: number | null;
39
+ status: string;
40
+ }>;
41
+ }
42
+
43
+ interface SharedOperationsWidgetProps extends OperationsWidgetProps {
44
+ slug: string;
45
+ }
46
+
47
+ const buildSummary = (slug: string, data: OperationsDashboardData | undefined) => {
48
+ const cards = data?.cards;
49
+ const actor = data?.actor;
50
+
51
+ const fallback = {
52
+ value: 0,
53
+ caption: 'Sem dados disponiveis',
54
+ detail: 'Aguardando sincronizacao com o dashboard.',
55
+ };
56
+
57
+ if (!cards || !actor) {
58
+ return fallback;
59
+ }
60
+
61
+ const map: Record<string, { value: number; caption: string; detail: string }> = {
62
+ 'my-hours-period-kpi': {
63
+ value: cards.visibleTimesheets,
64
+ caption: 'Lacamentos visiveis',
65
+ detail: `Timesheets pendentes: ${cards.pendingTimesheets}`,
66
+ },
67
+ 'my-timesheet-status-kpi': {
68
+ value: cards.pendingTimesheets,
69
+ caption: 'Timesheets pendentes',
70
+ detail: `Timesheets visiveis: ${cards.visibleTimesheets}`,
71
+ },
72
+ 'my-project-allocations-kpi': {
73
+ value: cards.activeProjects,
74
+ caption: 'Projetos ativos',
75
+ detail: `Projetos visiveis: ${cards.projectsTotal}`,
76
+ },
77
+ 'my-open-requests-kpi': {
78
+ value: cards.timeOffRequests + cards.scheduleAdjustmentRequests,
79
+ caption: 'Solicitacoes abertas',
80
+ detail: `Folgas: ${cards.timeOffRequests} · Ajustes: ${cards.scheduleAdjustmentRequests}`,
81
+ },
82
+ 'team-headcount-kpi': {
83
+ value: actor.teamSize,
84
+ caption: 'Tamanho da equipe',
85
+ detail: `Escopo atual: ${actor.roleScope}`,
86
+ },
87
+ 'team-pending-approvals-kpi': {
88
+ value: cards.pendingApprovals,
89
+ caption: 'Aprovacoes pendentes',
90
+ detail: `Timesheets pendentes: ${cards.pendingTimesheets}`,
91
+ },
92
+ 'team-hours-kpi': {
93
+ value: cards.visibleTimesheets,
94
+ caption: 'Horas em timesheets',
95
+ detail: `Escopo atual: ${actor.roleScope}`,
96
+ },
97
+ 'team-capacity-kpi': {
98
+ value: actor.teamSize,
99
+ caption: 'Capacidade monitorada',
100
+ detail: `Solicitacoes em aberto: ${cards.timeOffRequests + cards.scheduleAdjustmentRequests}`,
101
+ },
102
+ 'portfolio-projects-kpi': {
103
+ value: cards.projectsTotal,
104
+ caption: 'Projetos do portfolio',
105
+ detail: `Projetos ativos: ${cards.activeProjects}`,
106
+ },
107
+ 'portfolio-costs-kpi': {
108
+ value: cards.pendingApprovals,
109
+ caption: 'Itens aguardando aprovacao',
110
+ detail: 'Use este KPI para identificar impacto operacional imediato.',
111
+ },
112
+ 'portfolio-effort-kpi': {
113
+ value: cards.visibleTimesheets,
114
+ caption: 'Esforco registrado',
115
+ detail: `Timesheets pendentes: ${cards.pendingTimesheets}`,
116
+ },
117
+ 'portfolio-risk-kpi': {
118
+ value: cards.pendingApprovals,
119
+ caption: 'Risco operacional',
120
+ detail: 'Pendencias de aprovacao podem indicar gargalos.',
121
+ },
122
+ };
123
+
124
+ if (map[slug]) {
125
+ return map[slug];
126
+ }
127
+
128
+ return {
129
+ value: data.recentTimesheets.length,
130
+ caption: 'Atualizacoes recentes',
131
+ detail: `Escopo ${actor.roleScope} · ${data.recentTimesheets.length} registros recentes`,
132
+ };
133
+ };
134
+
135
+ export default function SharedOperationsWidget({
136
+ widget,
137
+ onRemove,
138
+ slug,
139
+ }: SharedOperationsWidgetProps) {
140
+ const { data, isLoading, isAccessDenied, isError } =
141
+ useWidgetData<OperationsDashboardData>({
142
+ endpoint: '/operations/dashboard',
143
+ queryKey: 'operations-dashboard-shared',
144
+ });
145
+
146
+ const summary = buildSummary(slug, data);
147
+ const title = widget?.name || slug;
148
+
149
+ return (
150
+ <WidgetWrapper
151
+ isLoading={isLoading}
152
+ isAccessDenied={isAccessDenied}
153
+ isError={isError}
154
+ widgetName={title}
155
+ onRemove={onRemove}
156
+ >
157
+ <Card className="h-full border-border/60 bg-linear-to-br from-background to-slate-50/40 shadow-sm">
158
+ <CardContent className="flex h-full flex-col justify-between gap-3 p-4">
159
+ <div>
160
+ <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground">
161
+ {summary.caption}
162
+ </p>
163
+ <p className="mt-2 text-3xl font-bold text-foreground">{summary.value}</p>
164
+ </div>
165
+ <p className="text-xs text-muted-foreground">{summary.detail}</p>
166
+ </CardContent>
167
+ </Card>
168
+ </WidgetWrapper>
169
+ );
170
+ }
@@ -0,0 +1,17 @@
1
+ 'use client';
2
+
3
+ import SharedOperationsWidget from './operations.shared-operations-widget';
4
+
5
+ interface WidgetLayoutLike {
6
+ name?: string;
7
+ slug?: string;
8
+ }
9
+
10
+ interface OperationsWidgetProps {
11
+ widget?: WidgetLayoutLike;
12
+ onRemove?: () => void;
13
+ }
14
+
15
+ export default function OperationsWidget(props: OperationsWidgetProps) {
16
+ return <SharedOperationsWidget {...props} slug='strategic-deadlines' />;
17
+ }
@@ -0,0 +1,17 @@
1
+ 'use client';
2
+
3
+ import SharedOperationsWidget from './operations.shared-operations-widget';
4
+
5
+ interface WidgetLayoutLike {
6
+ name?: string;
7
+ slug?: string;
8
+ }
9
+
10
+ interface OperationsWidgetProps {
11
+ widget?: WidgetLayoutLike;
12
+ onRemove?: () => void;
13
+ }
14
+
15
+ export default function OperationsWidget(props: OperationsWidgetProps) {
16
+ return <SharedOperationsWidget {...props} slug='team-approval-queue' />;
17
+ }
@@ -0,0 +1,17 @@
1
+ 'use client';
2
+
3
+ import SharedOperationsWidget from './operations.shared-operations-widget';
4
+
5
+ interface WidgetLayoutLike {
6
+ name?: string;
7
+ slug?: string;
8
+ }
9
+
10
+ interface OperationsWidgetProps {
11
+ widget?: WidgetLayoutLike;
12
+ onRemove?: () => void;
13
+ }
14
+
15
+ export default function OperationsWidget(props: OperationsWidgetProps) {
16
+ return <SharedOperationsWidget {...props} slug='team-capacity-kpi' />;
17
+ }
@@ -0,0 +1,17 @@
1
+ 'use client';
2
+
3
+ import SharedOperationsWidget from './operations.shared-operations-widget';
4
+
5
+ interface WidgetLayoutLike {
6
+ name?: string;
7
+ slug?: string;
8
+ }
9
+
10
+ interface OperationsWidgetProps {
11
+ widget?: WidgetLayoutLike;
12
+ onRemove?: () => void;
13
+ }
14
+
15
+ export default function OperationsWidget(props: OperationsWidgetProps) {
16
+ return <SharedOperationsWidget {...props} slug='team-headcount-kpi' />;
17
+ }
@@ -0,0 +1,17 @@
1
+ 'use client';
2
+
3
+ import SharedOperationsWidget from './operations.shared-operations-widget';
4
+
5
+ interface WidgetLayoutLike {
6
+ name?: string;
7
+ slug?: string;
8
+ }
9
+
10
+ interface OperationsWidgetProps {
11
+ widget?: WidgetLayoutLike;
12
+ onRemove?: () => void;
13
+ }
14
+
15
+ export default function OperationsWidget(props: OperationsWidgetProps) {
16
+ return <SharedOperationsWidget {...props} slug='team-hours-kpi' />;
17
+ }
@@ -0,0 +1,17 @@
1
+ 'use client';
2
+
3
+ import SharedOperationsWidget from './operations.shared-operations-widget';
4
+
5
+ interface WidgetLayoutLike {
6
+ name?: string;
7
+ slug?: string;
8
+ }
9
+
10
+ interface OperationsWidgetProps {
11
+ widget?: WidgetLayoutLike;
12
+ onRemove?: () => void;
13
+ }
14
+
15
+ export default function OperationsWidget(props: OperationsWidgetProps) {
16
+ return <SharedOperationsWidget {...props} slug='team-pending-approvals-kpi' />;
17
+ }
@@ -0,0 +1,17 @@
1
+ 'use client';
2
+
3
+ import SharedOperationsWidget from './operations.shared-operations-widget';
4
+
5
+ interface WidgetLayoutLike {
6
+ name?: string;
7
+ slug?: string;
8
+ }
9
+
10
+ interface OperationsWidgetProps {
11
+ widget?: WidgetLayoutLike;
12
+ onRemove?: () => void;
13
+ }
14
+
15
+ export default function OperationsWidget(props: OperationsWidgetProps) {
16
+ return <SharedOperationsWidget {...props} slug='team-utilization-overview' />;
17
+ }
@@ -0,0 +1,17 @@
1
+ 'use client';
2
+
3
+ import SharedOperationsWidget from './operations.shared-operations-widget';
4
+
5
+ interface WidgetLayoutLike {
6
+ name?: string;
7
+ slug?: string;
8
+ }
9
+
10
+ interface OperationsWidgetProps {
11
+ widget?: WidgetLayoutLike;
12
+ onRemove?: () => void;
13
+ }
14
+
15
+ export default function OperationsWidget(props: OperationsWidgetProps) {
16
+ return <SharedOperationsWidget {...props} slug='team-workload-alerts' />;
17
+ }
@@ -1,11 +1,8 @@
1
- columns:
2
- - type: pk
3
- - name: user_id
4
- type: int
5
- isNullable: true
6
- - name: person_id
7
- type: fk
8
- isNullable: true
1
+ columns:
2
+ - type: pk
3
+ - name: person_id
4
+ type: fk
5
+ isNullable: true
9
6
  references:
10
7
  table: person
11
8
  column: id
@@ -86,11 +83,9 @@ columns:
86
83
  - type: created_at
87
84
  - type: updated_at
88
85
 
89
- indices:
90
- - columns: [user_id]
91
- isUnique: true
92
- - columns: [person_id]
93
- isUnique: true
86
+ indices:
87
+ - columns: [person_id]
88
+ isUnique: true
94
89
  - columns: [code]
95
90
  isUnique: true
96
91
  - columns: [collaborator_type_id]
@@ -0,0 +1,35 @@
1
+ columns:
2
+ - type: pk
3
+ - name: collaborator_id
4
+ type: fk
5
+ references:
6
+ table: operations_collaborator
7
+ column: id
8
+ onDelete: CASCADE
9
+ onUpdate: CASCADE
10
+ - name: invoice_number
11
+ type: varchar
12
+ length: 50
13
+ isNullable: true
14
+ - name: amount
15
+ type: decimal
16
+ precision: 14
17
+ scale: 2
18
+ - name: issue_date
19
+ type: date
20
+ - name: due_date
21
+ type: date
22
+ isNullable: true
23
+ - name: status
24
+ type: enum
25
+ values: [pending, paid, cancelled, overdue]
26
+ default: pending
27
+ - name: description
28
+ type: text
29
+ isNullable: true
30
+ - type: created_at
31
+
32
+ indices:
33
+ - columns: [collaborator_id]
34
+ - columns: [issue_date]
35
+ - columns: [status]
@@ -0,0 +1,32 @@
1
+ columns:
2
+ - type: pk
3
+ - name: collaborator_id
4
+ type: fk
5
+ references:
6
+ table: operations_collaborator
7
+ column: id
8
+ onDelete: CASCADE
9
+ onUpdate: CASCADE
10
+ - name: amount
11
+ type: decimal
12
+ precision: 14
13
+ scale: 2
14
+ - name: payment_date
15
+ type: date
16
+ - name: reference_month
17
+ type: varchar
18
+ length: 7
19
+ isNullable: true
20
+ - name: payment_method
21
+ type: enum
22
+ values: [bank_transfer, pix, check, other]
23
+ default: pix
24
+ - name: notes
25
+ type: text
26
+ isNullable: true
27
+ - type: created_at
28
+
29
+ indices:
30
+ - columns: [collaborator_id]
31
+ - columns: [payment_date]
32
+ - columns: [reference_month]
@@ -39,7 +39,7 @@ columns:
39
39
  isNullable: true
40
40
  - name: status
41
41
  type: enum
42
- values: [planning, active, at_risk, paused, completed, archived]
42
+ values: [planning, active, paused, completed, archived]
43
43
  default: planning
44
44
  - name: progress_percent
45
45
  type: decimal