@open-mercato/core 0.7.1-develop.7178.1.ab93fbaf4e → 0.7.1-develop.7180.1.9717fbbb43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +2 -2
- package/dist/generated/entities/staff_time_entry/index.js +14 -0
- package/dist/generated/entities/staff_time_entry/index.js.map +2 -2
- package/dist/generated/entities/staff_time_entry_tag/index.js +15 -0
- package/dist/generated/entities/staff_time_entry_tag/index.js.map +7 -0
- package/dist/generated/entities/staff_time_project/index.js +16 -0
- package/dist/generated/entities/staff_time_project/index.js.map +2 -2
- package/dist/generated/entities/staff_time_report/index.js +57 -0
- package/dist/generated/entities/staff_time_report/index.js.map +7 -0
- package/dist/generated/entities/staff_time_report_entry/index.js +27 -0
- package/dist/generated/entities/staff_time_report_entry/index.js.map +7 -0
- package/dist/generated/entities/staff_time_report_event/index.js +21 -0
- package/dist/generated/entities/staff_time_report_event/index.js.map +7 -0
- package/dist/generated/entities/staff_time_report_project/index.js +15 -0
- package/dist/generated/entities/staff_time_report_project/index.js.map +7 -0
- package/dist/generated/entities/staff_time_tag/index.js +21 -0
- package/dist/generated/entities/staff_time_tag/index.js.map +7 -0
- package/dist/generated/entities/staff_time_task/index.js +37 -0
- package/dist/generated/entities/staff_time_task/index.js.map +7 -0
- package/dist/generated/entities/staff_time_task_comment/index.js +21 -0
- package/dist/generated/entities/staff_time_task_comment/index.js.map +7 -0
- package/dist/generated/entities/staff_time_task_status/index.js +29 -0
- package/dist/generated/entities/staff_time_task_status/index.js.map +7 -0
- package/dist/generated/entities/staff_time_task_tag/index.js +15 -0
- package/dist/generated/entities/staff_time_task_tag/index.js.map +7 -0
- package/dist/generated/entities.ids.generated.js +11 -1
- package/dist/generated/entities.ids.generated.js.map +2 -2
- package/dist/generated/entity-fields-registry.js +149 -0
- package/dist/generated/entity-fields-registry.js.map +2 -2
- package/dist/helpers/integration/timesheetFixtures.js +7 -0
- package/dist/helpers/integration/timesheetFixtures.js.map +2 -2
- package/dist/modules/auth/cli.js +16 -0
- package/dist/modules/auth/cli.js.map +2 -2
- package/dist/modules/auth/lib/backendChrome.js +1 -0
- package/dist/modules/auth/lib/backendChrome.js.map +2 -2
- package/dist/modules/customer_accounts/lib/customerRoleAcls.js +44 -0
- package/dist/modules/customer_accounts/lib/customerRoleAcls.js.map +7 -0
- package/dist/modules/customer_accounts/setup.js +1 -28
- package/dist/modules/customer_accounts/setup.js.map +2 -2
- package/dist/modules/data_sync/api/options.js +2 -0
- package/dist/modules/data_sync/api/options.js.map +2 -2
- package/dist/modules/data_sync/backend/data-sync/page.js +39 -17
- package/dist/modules/data_sync/backend/data-sync/page.js.map +2 -2
- package/dist/modules/data_sync/lib/start-controls.js +42 -0
- package/dist/modules/data_sync/lib/start-controls.js.map +7 -0
- package/dist/modules/staff/acl.js +9 -1
- package/dist/modules/staff/acl.js.map +2 -2
- package/dist/modules/staff/ai-agents.js +142 -0
- package/dist/modules/staff/ai-agents.js.map +7 -0
- package/dist/modules/staff/ai-tools/time-tracking-pack.js +348 -0
- package/dist/modules/staff/ai-tools/time-tracking-pack.js.map +7 -0
- package/dist/modules/staff/ai-tools/types.js +54 -0
- package/dist/modules/staff/ai-tools/types.js.map +7 -0
- package/dist/modules/staff/ai-tools.js +8 -0
- package/dist/modules/staff/ai-tools.js.map +7 -0
- package/dist/modules/staff/analytics.js +84 -1
- package/dist/modules/staff/analytics.js.map +2 -2
- package/dist/modules/staff/api/guards.js +37 -3
- package/dist/modules/staff/api/guards.js.map +2 -2
- package/dist/modules/staff/api/leave-requests/accept/route.js +1 -3
- package/dist/modules/staff/api/leave-requests/accept/route.js.map +2 -2
- package/dist/modules/staff/api/leave-requests/reject/route.js +1 -3
- package/dist/modules/staff/api/leave-requests/reject/route.js.map +2 -2
- package/dist/modules/staff/api/portal/time-reports/[id]/route.js +131 -0
- package/dist/modules/staff/api/portal/time-reports/[id]/route.js.map +7 -0
- package/dist/modules/staff/api/portal/time-reports/route.js +179 -0
- package/dist/modules/staff/api/portal/time-reports/route.js.map +7 -0
- package/dist/modules/staff/api/team-members/self/route.js +1 -3
- package/dist/modules/staff/api/team-members/self/route.js.map +2 -2
- package/dist/modules/staff/api/team-members/tags/assign/route.js +1 -3
- package/dist/modules/staff/api/team-members/tags/assign/route.js.map +2 -2
- package/dist/modules/staff/api/team-members/tags/unassign/route.js +1 -3
- package/dist/modules/staff/api/team-members/tags/unassign/route.js.map +2 -2
- package/dist/modules/staff/api/timesheets/_shared/withTimesheetInterceptors.js +174 -0
- package/dist/modules/staff/api/timesheets/_shared/withTimesheetInterceptors.js.map +7 -0
- package/dist/modules/staff/api/timesheets/access-requests/route.js +226 -0
- package/dist/modules/staff/api/timesheets/access-requests/route.js.map +7 -0
- package/dist/modules/staff/api/timesheets/my-projects/[projectId]/route.js +15 -8
- package/dist/modules/staff/api/timesheets/my-projects/[projectId]/route.js.map +2 -2
- package/dist/modules/staff/api/timesheets/my-projects/route.js +13 -1
- package/dist/modules/staff/api/timesheets/my-projects/route.js.map +2 -2
- package/dist/modules/staff/api/timesheets/my-work/myWorkAggregate.js +42 -0
- package/dist/modules/staff/api/timesheets/my-work/myWorkAggregate.js.map +7 -0
- package/dist/modules/staff/api/timesheets/my-work/route.js +383 -0
- package/dist/modules/staff/api/timesheets/my-work/route.js.map +7 -0
- package/dist/modules/staff/api/timesheets/projects/kpis/route.js +14 -2
- package/dist/modules/staff/api/timesheets/projects/kpis/route.js.map +2 -2
- package/dist/modules/staff/api/timesheets/reports/[id]/close/route.js +168 -0
- package/dist/modules/staff/api/timesheets/reports/[id]/close/route.js.map +7 -0
- package/dist/modules/staff/api/timesheets/reports/[id]/export/route.js +246 -0
- package/dist/modules/staff/api/timesheets/reports/[id]/export/route.js.map +7 -0
- package/dist/modules/staff/api/timesheets/reports/[id]/sheet/route.js +183 -0
- package/dist/modules/staff/api/timesheets/reports/[id]/sheet/route.js.map +7 -0
- package/dist/modules/staff/api/timesheets/reports/[id]/unlock/route.js +164 -0
- package/dist/modules/staff/api/timesheets/reports/[id]/unlock/route.js.map +7 -0
- package/dist/modules/staff/api/timesheets/reports/preview/route.js +360 -0
- package/dist/modules/staff/api/timesheets/reports/preview/route.js.map +7 -0
- package/dist/modules/staff/api/timesheets/reports/route.js +316 -0
- package/dist/modules/staff/api/timesheets/reports/route.js.map +7 -0
- package/dist/modules/staff/api/timesheets/reports/shared.js +63 -0
- package/dist/modules/staff/api/timesheets/reports/shared.js.map +7 -0
- package/dist/modules/staff/api/timesheets/settings/reapply-rounding/route.js +164 -0
- package/dist/modules/staff/api/timesheets/settings/reapply-rounding/route.js.map +7 -0
- package/dist/modules/staff/api/timesheets/settings/rounding-impact/route.js +168 -0
- package/dist/modules/staff/api/timesheets/settings/rounding-impact/route.js.map +7 -0
- package/dist/modules/staff/api/timesheets/settings/route.js +199 -0
- package/dist/modules/staff/api/timesheets/settings/route.js.map +7 -0
- package/dist/modules/staff/api/timesheets/tags/access.js +76 -0
- package/dist/modules/staff/api/timesheets/tags/access.js.map +7 -0
- package/dist/modules/staff/api/timesheets/tags/entry-assignments/route.js +235 -0
- package/dist/modules/staff/api/timesheets/tags/entry-assignments/route.js.map +7 -0
- package/dist/modules/staff/api/timesheets/tags/route.js +160 -0
- package/dist/modules/staff/api/timesheets/tags/route.js.map +7 -0
- package/dist/modules/staff/api/timesheets/tags/task-assignments/route.js +233 -0
- package/dist/modules/staff/api/timesheets/tags/task-assignments/route.js.map +7 -0
- package/dist/modules/staff/api/timesheets/task-statuses/route.js +188 -0
- package/dist/modules/staff/api/timesheets/task-statuses/route.js.map +7 -0
- package/dist/modules/staff/api/timesheets/tasks/[id]/comments/route.js +399 -0
- package/dist/modules/staff/api/timesheets/tasks/[id]/comments/route.js.map +7 -0
- package/dist/modules/staff/api/timesheets/tasks/[id]/status/route.js +210 -0
- package/dist/modules/staff/api/timesheets/tasks/[id]/status/route.js.map +7 -0
- package/dist/modules/staff/api/timesheets/tasks/route.js +333 -0
- package/dist/modules/staff/api/timesheets/tasks/route.js.map +7 -0
- package/dist/modules/staff/api/timesheets/time-entries/[id]/duplicate/route.js +228 -0
- package/dist/modules/staff/api/timesheets/time-entries/[id]/duplicate/route.js.map +7 -0
- package/dist/modules/staff/api/timesheets/time-entries/[id]/segments/[segmentId]/route.js +29 -10
- package/dist/modules/staff/api/timesheets/time-entries/[id]/segments/[segmentId]/route.js.map +2 -2
- package/dist/modules/staff/api/timesheets/time-entries/[id]/segments/route.js +31 -18
- package/dist/modules/staff/api/timesheets/time-entries/[id]/segments/route.js.map +2 -2
- package/dist/modules/staff/api/timesheets/time-entries/[id]/timer-start/route.js +21 -7
- package/dist/modules/staff/api/timesheets/time-entries/[id]/timer-start/route.js.map +2 -2
- package/dist/modules/staff/api/timesheets/time-entries/[id]/timer-stop/route.js +27 -7
- package/dist/modules/staff/api/timesheets/time-entries/[id]/timer-stop/route.js.map +2 -2
- package/dist/modules/staff/api/timesheets/time-entries/bulk/route.js +215 -32
- package/dist/modules/staff/api/timesheets/time-entries/bulk/route.js.map +2 -2
- package/dist/modules/staff/api/timesheets/time-entries/copy-day/route.js +378 -0
- package/dist/modules/staff/api/timesheets/time-entries/copy-day/route.js.map +7 -0
- package/dist/modules/staff/api/timesheets/time-entries/overlaps/route.js +340 -0
- package/dist/modules/staff/api/timesheets/time-entries/overlaps/route.js.map +7 -0
- package/dist/modules/staff/api/timesheets/time-entries/route.js +238 -26
- package/dist/modules/staff/api/timesheets/time-entries/route.js.map +2 -2
- package/dist/modules/staff/api/timesheets/time-entries/start-timer/route.js +23 -8
- package/dist/modules/staff/api/timesheets/time-entries/start-timer/route.js.map +2 -2
- package/dist/modules/staff/api/timesheets/time-projects/[id]/change-currency/route.js +209 -0
- package/dist/modules/staff/api/timesheets/time-projects/[id]/change-currency/route.js.map +7 -0
- package/dist/modules/staff/api/timesheets/time-projects/[id]/employees/route.js +59 -2
- package/dist/modules/staff/api/timesheets/time-projects/[id]/employees/route.js.map +2 -2
- package/dist/modules/staff/api/timesheets/time-projects/route.js +264 -22
- package/dist/modules/staff/api/timesheets/time-projects/route.js.map +2 -2
- package/dist/modules/staff/backend/staff/time-tracking/board/page.js +110 -0
- package/dist/modules/staff/backend/staff/time-tracking/board/page.js.map +7 -0
- package/dist/modules/staff/backend/staff/time-tracking/board/page.meta.js +18 -0
- package/dist/modules/staff/backend/staff/time-tracking/board/page.meta.js.map +7 -0
- package/dist/modules/staff/backend/staff/time-tracking/entries/page.js +981 -0
- package/dist/modules/staff/backend/staff/time-tracking/entries/page.js.map +7 -0
- package/dist/modules/staff/backend/staff/time-tracking/entries/page.meta.js +18 -0
- package/dist/modules/staff/backend/staff/time-tracking/entries/page.meta.js.map +7 -0
- package/dist/modules/staff/backend/staff/time-tracking/page.js +583 -0
- package/dist/modules/staff/backend/staff/time-tracking/page.js.map +7 -0
- package/dist/modules/staff/backend/staff/time-tracking/page.meta.js +15 -0
- package/dist/modules/staff/backend/staff/time-tracking/page.meta.js.map +7 -0
- package/dist/modules/staff/backend/staff/time-tracking/projects/[id]/board/page.js +65 -0
- package/dist/modules/staff/backend/staff/time-tracking/projects/[id]/board/page.js.map +7 -0
- package/dist/modules/staff/backend/staff/time-tracking/projects/[id]/board/page.meta.js +16 -0
- package/dist/modules/staff/backend/staff/time-tracking/projects/[id]/board/page.meta.js.map +7 -0
- package/dist/modules/staff/backend/staff/time-tracking/projects/[id]/edit/page.js +229 -0
- package/dist/modules/staff/backend/staff/time-tracking/projects/[id]/edit/page.js.map +7 -0
- package/dist/modules/staff/backend/staff/time-tracking/projects/[id]/edit/page.meta.js +16 -0
- package/dist/modules/staff/backend/staff/time-tracking/projects/[id]/edit/page.meta.js.map +7 -0
- package/dist/modules/staff/backend/staff/time-tracking/projects/[id]/page.js +1014 -0
- package/dist/modules/staff/backend/staff/time-tracking/projects/[id]/page.js.map +7 -0
- package/dist/modules/staff/backend/staff/time-tracking/projects/[id]/page.meta.js +16 -0
- package/dist/modules/staff/backend/staff/time-tracking/projects/[id]/page.meta.js.map +7 -0
- package/dist/modules/staff/backend/staff/time-tracking/projects/create/page.js +97 -0
- package/dist/modules/staff/backend/staff/time-tracking/projects/create/page.js.map +7 -0
- package/dist/modules/staff/backend/staff/time-tracking/projects/create/page.meta.js +16 -0
- package/dist/modules/staff/backend/staff/time-tracking/projects/create/page.meta.js.map +7 -0
- package/dist/modules/staff/backend/staff/time-tracking/projects/page.js +1040 -0
- package/dist/modules/staff/backend/staff/time-tracking/projects/page.js.map +7 -0
- package/dist/modules/staff/backend/staff/time-tracking/projects/page.meta.js +19 -0
- package/dist/modules/staff/backend/staff/time-tracking/projects/page.meta.js.map +7 -0
- package/dist/modules/staff/backend/staff/time-tracking/projects/projectFormConfig.js +353 -0
- package/dist/modules/staff/backend/staff/time-tracking/projects/projectFormConfig.js.map +7 -0
- package/dist/modules/staff/backend/staff/time-tracking/reports/[id]/page.js +457 -0
- package/dist/modules/staff/backend/staff/time-tracking/reports/[id]/page.js.map +7 -0
- package/dist/modules/staff/backend/staff/time-tracking/reports/[id]/page.meta.js +16 -0
- package/dist/modules/staff/backend/staff/time-tracking/reports/[id]/page.meta.js.map +7 -0
- package/dist/modules/staff/backend/staff/time-tracking/reports/create/page.js +697 -0
- package/dist/modules/staff/backend/staff/time-tracking/reports/create/page.js.map +7 -0
- package/dist/modules/staff/backend/staff/time-tracking/reports/create/page.meta.js +16 -0
- package/dist/modules/staff/backend/staff/time-tracking/reports/create/page.meta.js.map +7 -0
- package/dist/modules/staff/backend/staff/time-tracking/reports/page.js +174 -0
- package/dist/modules/staff/backend/staff/time-tracking/reports/page.js.map +7 -0
- package/dist/modules/staff/backend/staff/time-tracking/reports/page.meta.js +18 -0
- package/dist/modules/staff/backend/staff/time-tracking/reports/page.meta.js.map +7 -0
- package/dist/modules/staff/backend/staff/time-tracking/settings/page.js +546 -0
- package/dist/modules/staff/backend/staff/time-tracking/settings/page.js.map +7 -0
- package/dist/modules/staff/backend/staff/time-tracking/settings/page.meta.js +18 -0
- package/dist/modules/staff/backend/staff/time-tracking/settings/page.meta.js.map +7 -0
- package/dist/modules/staff/backend/staff/time-tracking/timesheet/GridView.js +710 -0
- package/dist/modules/staff/backend/staff/time-tracking/timesheet/GridView.js.map +7 -0
- package/dist/modules/staff/backend/staff/time-tracking/timesheet/page.js +646 -0
- package/dist/modules/staff/backend/staff/time-tracking/timesheet/page.js.map +7 -0
- package/dist/modules/staff/backend/staff/time-tracking/timesheet/page.meta.js +18 -0
- package/dist/modules/staff/backend/staff/time-tracking/timesheet/page.meta.js.map +7 -0
- package/dist/modules/staff/backend/staff/timesheets/page.js +4 -793
- package/dist/modules/staff/backend/staff/timesheets/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/timesheets/page.meta.js +2 -7
- package/dist/modules/staff/backend/staff/timesheets/page.meta.js.map +2 -2
- package/dist/modules/staff/backend/staff/timesheets/projects/[id]/edit/page.js +5 -136
- package/dist/modules/staff/backend/staff/timesheets/projects/[id]/edit/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/timesheets/projects/[id]/edit/page.meta.js +1 -7
- package/dist/modules/staff/backend/staff/timesheets/projects/[id]/edit/page.meta.js.map +2 -2
- package/dist/modules/staff/backend/staff/timesheets/projects/[id]/page.js +5 -445
- package/dist/modules/staff/backend/staff/timesheets/projects/[id]/page.js.map +3 -3
- package/dist/modules/staff/backend/staff/timesheets/projects/[id]/page.meta.js +1 -7
- package/dist/modules/staff/backend/staff/timesheets/projects/[id]/page.meta.js.map +2 -2
- package/dist/modules/staff/backend/staff/timesheets/projects/create/page.js +4 -76
- package/dist/modules/staff/backend/staff/timesheets/projects/create/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/timesheets/projects/create/page.meta.js +1 -7
- package/dist/modules/staff/backend/staff/timesheets/projects/create/page.meta.js.map +2 -2
- package/dist/modules/staff/backend/staff/timesheets/projects/page.js +4 -613
- package/dist/modules/staff/backend/staff/timesheets/projects/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/timesheets/projects/page.meta.js +2 -17
- package/dist/modules/staff/backend/staff/timesheets/projects/page.meta.js.map +2 -2
- package/dist/modules/staff/ce.js +40 -0
- package/dist/modules/staff/ce.js.map +2 -2
- package/dist/modules/staff/cli.js +166 -1
- package/dist/modules/staff/cli.js.map +2 -2
- package/dist/modules/staff/commands/index.js +5 -0
- package/dist/modules/staff/commands/index.js.map +2 -2
- package/dist/modules/staff/commands/timesheets-entries.js +569 -21
- package/dist/modules/staff/commands/timesheets-entries.js.map +3 -3
- package/dist/modules/staff/commands/timesheets-projects.js +450 -7
- package/dist/modules/staff/commands/timesheets-projects.js.map +2 -2
- package/dist/modules/staff/commands/timesheets-reports.js +1036 -0
- package/dist/modules/staff/commands/timesheets-reports.js.map +7 -0
- package/dist/modules/staff/commands/timesheets-tags.js +1015 -0
- package/dist/modules/staff/commands/timesheets-tags.js.map +7 -0
- package/dist/modules/staff/commands/timesheets-task-comments.js +438 -0
- package/dist/modules/staff/commands/timesheets-task-comments.js.map +7 -0
- package/dist/modules/staff/commands/timesheets-task-statuses.js +723 -0
- package/dist/modules/staff/commands/timesheets-task-statuses.js.map +7 -0
- package/dist/modules/staff/commands/timesheets-tasks.js +834 -0
- package/dist/modules/staff/commands/timesheets-tasks.js.map +7 -0
- package/dist/modules/staff/data/enrichers.js +426 -12
- package/dist/modules/staff/data/enrichers.js.map +2 -2
- package/dist/modules/staff/data/entities.js +552 -3
- package/dist/modules/staff/data/entities.js.map +2 -2
- package/dist/modules/staff/data/extensions.js +41 -0
- package/dist/modules/staff/data/extensions.js.map +7 -0
- package/dist/modules/staff/data/validators.js +254 -9
- package/dist/modules/staff/data/validators.js.map +2 -2
- package/dist/modules/staff/di.js +42 -1
- package/dist/modules/staff/di.js.map +2 -2
- package/dist/modules/staff/events.js +84 -6
- package/dist/modules/staff/events.js.map +2 -2
- package/dist/modules/staff/events.payloads.js +158 -0
- package/dist/modules/staff/events.payloads.js.map +7 -0
- package/dist/modules/staff/extension-points.js +261 -0
- package/dist/modules/staff/extension-points.js.map +7 -0
- package/dist/modules/staff/frontend/[orgSlug]/portal/time-reports/[id]/page.js +138 -0
- package/dist/modules/staff/frontend/[orgSlug]/portal/time-reports/[id]/page.js.map +7 -0
- package/dist/modules/staff/frontend/[orgSlug]/portal/time-reports/[id]/page.meta.js +12 -0
- package/dist/modules/staff/frontend/[orgSlug]/portal/time-reports/[id]/page.meta.js.map +7 -0
- package/dist/modules/staff/frontend/[orgSlug]/portal/time-reports/page.js +133 -0
- package/dist/modules/staff/frontend/[orgSlug]/portal/time-reports/page.js.map +7 -0
- package/dist/modules/staff/frontend/[orgSlug]/portal/time-reports/page.meta.js +19 -0
- package/dist/modules/staff/frontend/[orgSlug]/portal/time-reports/page.meta.js.map +7 -0
- package/dist/modules/staff/lib/crud.js +11 -1
- package/dist/modules/staff/lib/crud.js.map +2 -2
- package/dist/modules/staff/lib/time-tracking/access.js +92 -0
- package/dist/modules/staff/lib/time-tracking/access.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking/billability.js +39 -0
- package/dist/modules/staff/lib/time-tracking/billability.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking/capacity.js +68 -0
- package/dist/modules/staff/lib/time-tracking/capacity.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking/componentContracts.js +15 -0
- package/dist/modules/staff/lib/time-tracking/componentContracts.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking/cost.js +82 -0
- package/dist/modules/staff/lib/time-tracking/cost.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking/duration.js +55 -0
- package/dist/modules/staff/lib/time-tracking/duration.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking/featureAccess.js +41 -0
- package/dist/modules/staff/lib/time-tracking/featureAccess.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking/interval.js +72 -0
- package/dist/modules/staff/lib/time-tracking/interval.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking/migrateProjectCodes.js +88 -0
- package/dist/modules/staff/lib/time-tracking/migrateProjectCodes.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking/moneyVisibility.js +10 -0
- package/dist/modules/staff/lib/time-tracking/moneyVisibility.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking/overlap.js +87 -0
- package/dist/modules/staff/lib/time-tracking/overlap.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking/portalRecipients.js +27 -0
- package/dist/modules/staff/lib/time-tracking/portalRecipients.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking/portalReports.js +16 -0
- package/dist/modules/staff/lib/time-tracking/portalReports.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking/projectCode.js +135 -0
- package/dist/modules/staff/lib/time-tracking/projectCode.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking/reapplyRounding.js +187 -0
- package/dist/modules/staff/lib/time-tracking/reapplyRounding.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking/recalculationRunner.js +80 -0
- package/dist/modules/staff/lib/time-tracking/recalculationRunner.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking/recalculations.js +56 -0
- package/dist/modules/staff/lib/time-tracking/recalculations.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking/registries/invoke.js +63 -0
- package/dist/modules/staff/lib/time-tracking/registries/invoke.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking/registries/registry.js +62 -0
- package/dist/modules/staff/lib/time-tracking/registries/registry.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking/registries/scope.js +21 -0
- package/dist/modules/staff/lib/time-tracking/registries/scope.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking/rollup.js +34 -0
- package/dist/modules/staff/lib/time-tracking/rollup.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking/rounding.js +66 -0
- package/dist/modules/staff/lib/time-tracking/rounding.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking/roundingImpact.js +39 -0
- package/dist/modules/staff/lib/time-tracking/roundingImpact.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking/settingKeys.js +214 -0
- package/dist/modules/staff/lib/time-tracking/settingKeys.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking/settings.js +87 -0
- package/dist/modules/staff/lib/time-tracking/settings.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking/sqlInClause.js +9 -0
- package/dist/modules/staff/lib/time-tracking/sqlInClause.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking/timeEntrySources.js +48 -0
- package/dist/modules/staff/lib/time-tracking/timeEntrySources.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/BoardFilterChips.js +283 -0
- package/dist/modules/staff/lib/time-tracking-ui/BoardFilterChips.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/CustomerPicker.js +324 -0
- package/dist/modules/staff/lib/time-tracking-ui/CustomerPicker.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/DurationInput.js +121 -0
- package/dist/modules/staff/lib/time-tracking-ui/DurationInput.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/EntryDetailsFields.js +188 -0
- package/dist/modules/staff/lib/time-tracking-ui/EntryDetailsFields.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/EntryFilterBar.js +89 -0
- package/dist/modules/staff/lib/time-tracking-ui/EntryFilterBar.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/KanbanBoard.js +855 -0
- package/dist/modules/staff/lib/time-tracking-ui/KanbanBoard.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/KanbanCard.js +360 -0
- package/dist/modules/staff/lib/time-tracking-ui/KanbanCard.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/KanbanColumn.js +259 -0
- package/dist/modules/staff/lib/time-tracking-ui/KanbanColumn.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/NewTaskDialog.js +238 -0
- package/dist/modules/staff/lib/time-tracking-ui/NewTaskDialog.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/NoProjectAccess.js +130 -0
- package/dist/modules/staff/lib/time-tracking-ui/NoProjectAccess.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/PeriodSelector.js +98 -0
- package/dist/modules/staff/lib/time-tracking-ui/PeriodSelector.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/PhasePlaceholder.js +27 -0
- package/dist/modules/staff/lib/time-tracking-ui/PhasePlaceholder.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/ProjectCodeField.js +166 -0
- package/dist/modules/staff/lib/time-tracking-ui/ProjectCodeField.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/ProjectCurrencyField.js +295 -0
- package/dist/modules/staff/lib/time-tracking-ui/ProjectCurrencyField.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/ProjectFormSections.js +212 -0
- package/dist/modules/staff/lib/time-tracking-ui/ProjectFormSections.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/ProjectTeamDrawer.js +729 -0
- package/dist/modules/staff/lib/time-tracking-ui/ProjectTeamDrawer.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/ReportSheet.js +217 -0
- package/dist/modules/staff/lib/time-tracking-ui/ReportSheet.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/TagPicker.js +158 -0
- package/dist/modules/staff/lib/time-tracking-ui/TagPicker.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/TaskBoardScreen.js +224 -0
- package/dist/modules/staff/lib/time-tracking-ui/TaskBoardScreen.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/TaskCommentThread.js +93 -0
- package/dist/modules/staff/lib/time-tracking-ui/TaskCommentThread.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/TaskDrawer.js +1196 -0
- package/dist/modules/staff/lib/time-tracking-ui/TaskDrawer.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/TaskListView.js +176 -0
- package/dist/modules/staff/lib/time-tracking-ui/TaskListView.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/TaskPicker.js +307 -0
- package/dist/modules/staff/lib/time-tracking-ui/TaskPicker.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/TaskQuickLog.js +284 -0
- package/dist/modules/staff/lib/time-tracking-ui/TaskQuickLog.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/TimeEntriesSummaryFooter.js +73 -0
- package/dist/modules/staff/lib/time-tracking-ui/TimeEntriesSummaryFooter.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/TimeEntryDialog.js +1499 -0
- package/dist/modules/staff/lib/time-tracking-ui/TimeEntryDialog.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/TimeEntryDurationCell.js +95 -0
- package/dist/modules/staff/lib/time-tracking-ui/TimeEntryDurationCell.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/TimesheetCalendar.js +188 -0
- package/dist/modules/staff/lib/time-tracking-ui/TimesheetCalendar.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/TimesheetPeriodFooter.js +61 -0
- package/dist/modules/staff/lib/time-tracking-ui/TimesheetPeriodFooter.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/TimesheetViewSwitch.js +45 -0
- package/dist/modules/staff/lib/time-tracking-ui/TimesheetViewSwitch.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/boardDirectory.js +176 -0
- package/dist/modules/staff/lib/time-tracking-ui/boardDirectory.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/boardFilters.js +82 -0
- package/dist/modules/staff/lib/time-tracking-ui/boardFilters.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/boardSummary.js +5 -0
- package/dist/modules/staff/lib/time-tracking-ui/boardSummary.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/kanbanBoardData.js +152 -0
- package/dist/modules/staff/lib/time-tracking-ui/kanbanBoardData.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/projectTeamAssignment.js +92 -0
- package/dist/modules/staff/lib/time-tracking-ui/projectTeamAssignment.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/taskDrawerData.js +111 -0
- package/dist/modules/staff/lib/time-tracking-ui/taskDrawerData.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/timeEntryDialogState.js +243 -0
- package/dist/modules/staff/lib/time-tracking-ui/timeEntryDialogState.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/timeEntryListData.js +151 -0
- package/dist/modules/staff/lib/time-tracking-ui/timeEntryListData.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/timeTrackingSettingsForm.js +105 -0
- package/dist/modules/staff/lib/time-tracking-ui/timeTrackingSettingsForm.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/timesheetData.js +132 -0
- package/dist/modules/staff/lib/time-tracking-ui/timesheetData.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/timesheetPeriod.js +205 -0
- package/dist/modules/staff/lib/time-tracking-ui/timesheetPeriod.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/timesheetTargets.js +53 -0
- package/dist/modules/staff/lib/time-tracking-ui/timesheetTargets.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/useBoardFilters.js +77 -0
- package/dist/modules/staff/lib/time-tracking-ui/useBoardFilters.js.map +7 -0
- package/dist/modules/staff/lib/time-tracking-ui/useTimesheetPreferences.js +151 -0
- package/dist/modules/staff/lib/time-tracking-ui/useTimesheetPreferences.js.map +7 -0
- package/dist/modules/staff/lib/timeTrackingSeeds.js +809 -0
- package/dist/modules/staff/lib/timeTrackingSeeds.js.map +7 -0
- package/dist/modules/staff/lib/timesheets/timeEntryCacheInvalidation.js +2 -3
- package/dist/modules/staff/lib/timesheets/timeEntryCacheInvalidation.js.map +2 -2
- package/dist/modules/staff/lib/timesheets/timeEntryDecoration.js +152 -0
- package/dist/modules/staff/lib/timesheets/timeEntryDecoration.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-projects/budgetBurn.js +36 -0
- package/dist/modules/staff/lib/timesheets-projects/budgetBurn.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-projects/budgetThreshold.js +66 -0
- package/dist/modules/staff/lib/timesheets-projects/budgetThreshold.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-projects/budgetThresholdState.js +78 -0
- package/dist/modules/staff/lib/timesheets-projects/budgetThresholdState.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-projects/computeProjectFinancials.js +81 -0
- package/dist/modules/staff/lib/timesheets-projects/computeProjectFinancials.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-projects/reportSelection.js +44 -0
- package/dist/modules/staff/lib/timesheets-projects/reportSelection.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-projects-ui/AssignMembersDialog.js +169 -0
- package/dist/modules/staff/lib/timesheets-projects-ui/AssignMembersDialog.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-projects-ui/ProjectBudgetCell.js +22 -0
- package/dist/modules/staff/lib/timesheets-projects-ui/ProjectBudgetCell.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-projects-ui/ProjectCard.js +51 -1
- package/dist/modules/staff/lib/timesheets-projects-ui/ProjectCard.js.map +2 -2
- package/dist/modules/staff/lib/timesheets-projects-ui/ProjectsBulkActionsBar.js +70 -0
- package/dist/modules/staff/lib/timesheets-projects-ui/ProjectsBulkActionsBar.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-reports/buildReportSheet.js +63 -0
- package/dist/modules/staff/lib/timesheets-reports/buildReportSheet.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-reports/loadReportData.js +170 -0
- package/dist/modules/staff/lib/timesheets-reports/loadReportData.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-reports/pdf.js +205 -0
- package/dist/modules/staff/lib/timesheets-reports/pdf.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-reports/reportApprovalPolicies.js +68 -0
- package/dist/modules/staff/lib/timesheets-reports/reportApprovalPolicies.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-reports/reportConfigData.js +135 -0
- package/dist/modules/staff/lib/timesheets-reports/reportConfigData.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-reports/reportConfigState.js +48 -0
- package/dist/modules/staff/lib/timesheets-reports/reportConfigState.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-reports/reportExport.js +262 -0
- package/dist/modules/staff/lib/timesheets-reports/reportExport.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-reports/reportExportFormats.js +34 -0
- package/dist/modules/staff/lib/timesheets-reports/reportExportFormats.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-reports/reportGroupings.js +79 -0
- package/dist/modules/staff/lib/timesheets-reports/reportGroupings.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-reports/reportLabels.js +11 -0
- package/dist/modules/staff/lib/timesheets-reports/reportLabels.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-reports/reportReference.js +83 -0
- package/dist/modules/staff/lib/timesheets-reports/reportReference.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-reports/reportRows.js +42 -0
- package/dist/modules/staff/lib/timesheets-reports/reportRows.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-reports/reportSheetData.js +107 -0
- package/dist/modules/staff/lib/timesheets-reports/reportSheetData.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-reports/reportTotals.js +289 -0
- package/dist/modules/staff/lib/timesheets-reports/reportTotals.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-reports/xlsx.js +145 -0
- package/dist/modules/staff/lib/timesheets-reports/xlsx.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-tasks/computeTaskRollups.js +116 -0
- package/dist/modules/staff/lib/timesheets-tasks/computeTaskRollups.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-tasks/defaultStatusTemplate.js +50 -0
- package/dist/modules/staff/lib/timesheets-tasks/defaultStatusTemplate.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-tasks/seedProjectStatuses.js +27 -0
- package/dist/modules/staff/lib/timesheets-tasks/seedProjectStatuses.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-tasks/statusPositions.js +65 -0
- package/dist/modules/staff/lib/timesheets-tasks/statusPositions.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-tasks/statusSlug.js +31 -0
- package/dist/modules/staff/lib/timesheets-tasks/statusSlug.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-tasks/taskHierarchy.js +31 -0
- package/dist/modules/staff/lib/timesheets-tasks/taskHierarchy.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-tasks/taskHoursTotals.js +17 -0
- package/dist/modules/staff/lib/timesheets-tasks/taskHoursTotals.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-tasks/taskReference.js +51 -0
- package/dist/modules/staff/lib/timesheets-tasks/taskReference.js.map +7 -0
- package/dist/modules/staff/lib/timesheets-ui/CreateProjectDialog.js +11 -4
- package/dist/modules/staff/lib/timesheets-ui/CreateProjectDialog.js.map +2 -2
- package/dist/modules/staff/lib/timesheets-ui/ListView.js +369 -111
- package/dist/modules/staff/lib/timesheets-ui/ListView.js.map +2 -2
- package/dist/modules/staff/lib/timesheets-ui/TimerBar.js +47 -2
- package/dist/modules/staff/lib/timesheets-ui/TimerBar.js.map +2 -2
- package/dist/modules/staff/migrations/Migration20260813073131_staff.js +79 -0
- package/dist/modules/staff/migrations/Migration20260813073131_staff.js.map +7 -0
- package/dist/modules/staff/migrations/Migration20260824143357_staff.js +15 -0
- package/dist/modules/staff/migrations/Migration20260824143357_staff.js.map +7 -0
- package/dist/modules/staff/notifications.client.js +16 -0
- package/dist/modules/staff/notifications.client.js.map +7 -0
- package/dist/modules/staff/notifications.handlers.js +80 -0
- package/dist/modules/staff/notifications.handlers.js.map +7 -0
- package/dist/modules/staff/notifications.js +168 -0
- package/dist/modules/staff/notifications.js.map +2 -2
- package/dist/modules/staff/search.js +159 -1
- package/dist/modules/staff/search.js.map +2 -2
- package/dist/modules/staff/setup.js +20 -1
- package/dist/modules/staff/setup.js.map +2 -2
- package/dist/modules/staff/subscribers/time-project-access-requested-notification.js +68 -0
- package/dist/modules/staff/subscribers/time-project-access-requested-notification.js.map +7 -0
- package/dist/modules/staff/subscribers/time-project-budget-threshold-notification.js +149 -0
- package/dist/modules/staff/subscribers/time-project-budget-threshold-notification.js.map +7 -0
- package/dist/modules/staff/subscribers/time-report-approved-notification.js +78 -0
- package/dist/modules/staff/subscribers/time-report-approved-notification.js.map +7 -0
- package/dist/modules/staff/subscribers/time-report-portal-broadcast.js +78 -0
- package/dist/modules/staff/subscribers/time-report-portal-broadcast.js.map +7 -0
- package/dist/modules/staff/translations.js +4 -1
- package/dist/modules/staff/translations.js.map +2 -2
- package/dist/modules/staff/widgets/components.js +7 -0
- package/dist/modules/staff/widgets/components.js.map +7 -0
- package/dist/modules/staff/widgets/injection/timer-sidebar-indicator/widget.js +5 -4
- package/dist/modules/staff/widgets/injection/timer-sidebar-indicator/widget.js.map +2 -2
- package/dist/modules/staff/widgets/notifications/TimeProjectAccessRequestedRenderer.js +135 -0
- package/dist/modules/staff/widgets/notifications/TimeProjectAccessRequestedRenderer.js.map +7 -0
- package/dist/modules/staff/widgets/notifications/index.js +5 -0
- package/dist/modules/staff/widgets/notifications/index.js.map +7 -0
- package/dist/modules/staff/workers/timesheets-reapply-rounding.js +43 -0
- package/dist/modules/staff/workers/timesheets-reapply-rounding.js.map +7 -0
- package/generated/entities/staff_time_entry/index.ts +7 -0
- package/generated/entities/staff_time_entry_tag/index.ts +6 -0
- package/generated/entities/staff_time_project/index.ts +8 -0
- package/generated/entities/staff_time_report/index.ts +27 -0
- package/generated/entities/staff_time_report_entry/index.ts +12 -0
- package/generated/entities/staff_time_report_event/index.ts +9 -0
- package/generated/entities/staff_time_report_project/index.ts +6 -0
- package/generated/entities/staff_time_tag/index.ts +9 -0
- package/generated/entities/staff_time_task/index.ts +17 -0
- package/generated/entities/staff_time_task_comment/index.ts +9 -0
- package/generated/entities/staff_time_task_status/index.ts +13 -0
- package/generated/entities/staff_time_task_tag/index.ts +6 -0
- package/generated/entities.ids.generated.ts +11 -1
- package/generated/entity-fields-registry.ts +149 -0
- package/package.json +7 -7
- package/src/helpers/integration/timesheetFixtures.ts +31 -1
- package/src/modules/auth/README.md +1 -1
- package/src/modules/auth/cli.ts +35 -1
- package/src/modules/auth/i18n/de.json +7 -0
- package/src/modules/auth/i18n/en.json +7 -0
- package/src/modules/auth/i18n/es.json +7 -0
- package/src/modules/auth/i18n/ko.json +7 -0
- package/src/modules/auth/i18n/pl.json +7 -0
- package/src/modules/auth/lib/backendChrome.tsx +1 -0
- package/src/modules/customer_accounts/lib/customerRoleAcls.ts +79 -0
- package/src/modules/customer_accounts/setup.ts +1 -45
- package/src/modules/data_sync/AGENTS.md +34 -0
- package/src/modules/data_sync/api/options.ts +2 -0
- package/src/modules/data_sync/backend/data-sync/page.tsx +82 -33
- package/src/modules/data_sync/i18n/de.json +1 -0
- package/src/modules/data_sync/i18n/en.json +1 -0
- package/src/modules/data_sync/i18n/es.json +1 -0
- package/src/modules/data_sync/i18n/ko.json +1 -0
- package/src/modules/data_sync/i18n/pl.json +1 -0
- package/src/modules/data_sync/lib/adapter.ts +45 -0
- package/src/modules/data_sync/lib/start-controls.ts +89 -0
- package/src/modules/staff/AGENTS.md +769 -1
- package/src/modules/staff/acl.ts +9 -0
- package/src/modules/staff/ai-agents.ts +189 -0
- package/src/modules/staff/ai-tools/time-tracking-pack.ts +494 -0
- package/src/modules/staff/ai-tools/types.ts +82 -0
- package/src/modules/staff/ai-tools.ts +13 -0
- package/src/modules/staff/analytics.ts +113 -0
- package/src/modules/staff/api/guards.ts +85 -3
- package/src/modules/staff/api/leave-requests/accept/route.ts +0 -2
- package/src/modules/staff/api/leave-requests/reject/route.ts +0 -2
- package/src/modules/staff/api/portal/time-reports/[id]/route.ts +182 -0
- package/src/modules/staff/api/portal/time-reports/route.ts +270 -0
- package/src/modules/staff/api/team-members/self/route.ts +0 -2
- package/src/modules/staff/api/team-members/tags/assign/route.ts +0 -2
- package/src/modules/staff/api/team-members/tags/unassign/route.ts +0 -2
- package/src/modules/staff/api/timesheets/_shared/withTimesheetInterceptors.ts +292 -0
- package/src/modules/staff/api/timesheets/access-requests/route.ts +299 -0
- package/src/modules/staff/api/timesheets/my-projects/[projectId]/route.ts +15 -7
- package/src/modules/staff/api/timesheets/my-projects/route.ts +14 -1
- package/src/modules/staff/api/timesheets/my-work/myWorkAggregate.ts +90 -0
- package/src/modules/staff/api/timesheets/my-work/route.ts +475 -0
- package/src/modules/staff/api/timesheets/projects/kpis/route.ts +15 -2
- package/src/modules/staff/api/timesheets/reports/[id]/close/route.ts +203 -0
- package/src/modules/staff/api/timesheets/reports/[id]/export/route.ts +315 -0
- package/src/modules/staff/api/timesheets/reports/[id]/sheet/route.ts +220 -0
- package/src/modules/staff/api/timesheets/reports/[id]/unlock/route.ts +208 -0
- package/src/modules/staff/api/timesheets/reports/preview/route.ts +449 -0
- package/src/modules/staff/api/timesheets/reports/route.ts +386 -0
- package/src/modules/staff/api/timesheets/reports/shared.ts +121 -0
- package/src/modules/staff/api/timesheets/settings/reapply-rounding/route.ts +205 -0
- package/src/modules/staff/api/timesheets/settings/rounding-impact/route.ts +226 -0
- package/src/modules/staff/api/timesheets/settings/route.ts +242 -0
- package/src/modules/staff/api/timesheets/tags/access.ts +134 -0
- package/src/modules/staff/api/timesheets/tags/entry-assignments/route.ts +290 -0
- package/src/modules/staff/api/timesheets/tags/route.ts +177 -0
- package/src/modules/staff/api/timesheets/tags/task-assignments/route.ts +294 -0
- package/src/modules/staff/api/timesheets/task-statuses/route.ts +232 -0
- package/src/modules/staff/api/timesheets/tasks/[id]/comments/route.ts +532 -0
- package/src/modules/staff/api/timesheets/tasks/[id]/status/route.ts +271 -0
- package/src/modules/staff/api/timesheets/tasks/route.ts +443 -0
- package/src/modules/staff/api/timesheets/time-entries/[id]/duplicate/route.ts +306 -0
- package/src/modules/staff/api/timesheets/time-entries/[id]/segments/[segmentId]/route.ts +32 -10
- package/src/modules/staff/api/timesheets/time-entries/[id]/segments/route.ts +32 -17
- package/src/modules/staff/api/timesheets/time-entries/[id]/timer-start/route.ts +27 -6
- package/src/modules/staff/api/timesheets/time-entries/[id]/timer-stop/route.ts +36 -6
- package/src/modules/staff/api/timesheets/time-entries/bulk/route.ts +331 -34
- package/src/modules/staff/api/timesheets/time-entries/copy-day/route.ts +533 -0
- package/src/modules/staff/api/timesheets/time-entries/overlaps/route.ts +457 -0
- package/src/modules/staff/api/timesheets/time-entries/route.ts +378 -24
- package/src/modules/staff/api/timesheets/time-entries/start-timer/route.ts +31 -9
- package/src/modules/staff/api/timesheets/time-projects/[id]/change-currency/route.ts +246 -0
- package/src/modules/staff/api/timesheets/time-projects/[id]/employees/route.ts +62 -2
- package/src/modules/staff/api/timesheets/time-projects/route.ts +397 -22
- package/src/modules/staff/backend/staff/time-tracking/board/page.meta.ts +14 -0
- package/src/modules/staff/backend/staff/time-tracking/board/page.tsx +151 -0
- package/src/modules/staff/backend/staff/time-tracking/entries/page.meta.ts +14 -0
- package/src/modules/staff/backend/staff/time-tracking/entries/page.tsx +1229 -0
- package/src/modules/staff/backend/staff/time-tracking/page.meta.ts +11 -0
- package/src/modules/staff/backend/staff/time-tracking/page.tsx +823 -0
- package/src/modules/staff/backend/staff/time-tracking/projects/[id]/board/page.meta.ts +12 -0
- package/src/modules/staff/backend/staff/time-tracking/projects/[id]/board/page.tsx +81 -0
- package/src/modules/staff/backend/staff/time-tracking/projects/[id]/edit/page.meta.ts +12 -0
- package/src/modules/staff/backend/staff/time-tracking/projects/[id]/edit/page.tsx +275 -0
- package/src/modules/staff/backend/staff/time-tracking/projects/[id]/page.meta.ts +12 -0
- package/src/modules/staff/backend/staff/time-tracking/projects/[id]/page.tsx +1420 -0
- package/src/modules/staff/backend/staff/time-tracking/projects/create/page.meta.ts +12 -0
- package/src/modules/staff/backend/staff/time-tracking/projects/create/page.tsx +109 -0
- package/src/modules/staff/backend/staff/time-tracking/projects/page.meta.ts +15 -0
- package/src/modules/staff/backend/staff/time-tracking/projects/page.tsx +1254 -0
- package/src/modules/staff/backend/staff/time-tracking/projects/projectFormConfig.ts +466 -0
- package/src/modules/staff/backend/staff/time-tracking/reports/[id]/page.meta.ts +12 -0
- package/src/modules/staff/backend/staff/time-tracking/reports/[id]/page.tsx +632 -0
- package/src/modules/staff/backend/staff/time-tracking/reports/create/page.meta.ts +12 -0
- package/src/modules/staff/backend/staff/time-tracking/reports/create/page.tsx +867 -0
- package/src/modules/staff/backend/staff/time-tracking/reports/page.meta.ts +14 -0
- package/src/modules/staff/backend/staff/time-tracking/reports/page.tsx +246 -0
- package/src/modules/staff/backend/staff/time-tracking/settings/page.meta.ts +14 -0
- package/src/modules/staff/backend/staff/time-tracking/settings/page.tsx +701 -0
- package/src/modules/staff/backend/staff/time-tracking/timesheet/GridView.tsx +953 -0
- package/src/modules/staff/backend/staff/time-tracking/timesheet/page.meta.ts +14 -0
- package/src/modules/staff/backend/staff/time-tracking/timesheet/page.tsx +800 -0
- package/src/modules/staff/backend/staff/timesheets/page.meta.ts +6 -6
- package/src/modules/staff/backend/staff/timesheets/page.tsx +12 -1010
- package/src/modules/staff/backend/staff/timesheets/projects/[id]/edit/page.meta.ts +0 -6
- package/src/modules/staff/backend/staff/timesheets/projects/[id]/edit/page.tsx +4 -158
- package/src/modules/staff/backend/staff/timesheets/projects/[id]/page.meta.ts +0 -6
- package/src/modules/staff/backend/staff/timesheets/projects/[id]/page.tsx +4 -609
- package/src/modules/staff/backend/staff/timesheets/projects/create/page.meta.ts +0 -6
- package/src/modules/staff/backend/staff/timesheets/projects/create/page.tsx +3 -89
- package/src/modules/staff/backend/staff/timesheets/projects/page.meta.ts +2 -19
- package/src/modules/staff/backend/staff/timesheets/projects/page.tsx +3 -778
- package/src/modules/staff/ce.ts +63 -0
- package/src/modules/staff/cli.ts +207 -1
- package/src/modules/staff/commands/index.ts +5 -0
- package/src/modules/staff/commands/timesheets-entries.ts +1006 -28
- package/src/modules/staff/commands/timesheets-projects.ts +593 -7
- package/src/modules/staff/commands/timesheets-reports.ts +1329 -0
- package/src/modules/staff/commands/timesheets-tags.ts +1315 -0
- package/src/modules/staff/commands/timesheets-task-comments.ts +583 -0
- package/src/modules/staff/commands/timesheets-task-statuses.ts +889 -0
- package/src/modules/staff/commands/timesheets-tasks.ts +1121 -0
- package/src/modules/staff/data/enrichers.ts +675 -10
- package/src/modules/staff/data/entities.ts +494 -2
- package/src/modules/staff/data/extensions.ts +68 -0
- package/src/modules/staff/data/validators.ts +348 -3
- package/src/modules/staff/di.ts +96 -0
- package/src/modules/staff/events.payloads.ts +268 -0
- package/src/modules/staff/events.ts +87 -5
- package/src/modules/staff/extension-points.ts +308 -0
- package/src/modules/staff/frontend/[orgSlug]/portal/time-reports/[id]/page.meta.ts +10 -0
- package/src/modules/staff/frontend/[orgSlug]/portal/time-reports/[id]/page.tsx +225 -0
- package/src/modules/staff/frontend/[orgSlug]/portal/time-reports/page.meta.ts +17 -0
- package/src/modules/staff/frontend/[orgSlug]/portal/time-reports/page.tsx +182 -0
- package/src/modules/staff/i18n/de.json +899 -0
- package/src/modules/staff/i18n/en.json +899 -0
- package/src/modules/staff/i18n/es.json +899 -0
- package/src/modules/staff/i18n/ko.json +899 -0
- package/src/modules/staff/i18n/pl.json +899 -0
- package/src/modules/staff/lib/crud.ts +14 -3
- package/src/modules/staff/lib/time-tracking/access.ts +155 -0
- package/src/modules/staff/lib/time-tracking/billability.ts +68 -0
- package/src/modules/staff/lib/time-tracking/capacity.ts +124 -0
- package/src/modules/staff/lib/time-tracking/componentContracts.ts +26 -0
- package/src/modules/staff/lib/time-tracking/cost.ts +144 -0
- package/src/modules/staff/lib/time-tracking/duration.ts +68 -0
- package/src/modules/staff/lib/time-tracking/featureAccess.ts +115 -0
- package/src/modules/staff/lib/time-tracking/interval.ts +90 -0
- package/src/modules/staff/lib/time-tracking/migrateProjectCodes.ts +161 -0
- package/src/modules/staff/lib/time-tracking/moneyVisibility.ts +37 -0
- package/src/modules/staff/lib/time-tracking/overlap.ts +159 -0
- package/src/modules/staff/lib/time-tracking/portalRecipients.ts +76 -0
- package/src/modules/staff/lib/time-tracking/portalReports.ts +31 -0
- package/src/modules/staff/lib/time-tracking/projectCode.ts +221 -0
- package/src/modules/staff/lib/time-tracking/reapplyRounding.ts +313 -0
- package/src/modules/staff/lib/time-tracking/recalculationRunner.ts +118 -0
- package/src/modules/staff/lib/time-tracking/recalculations.ts +135 -0
- package/src/modules/staff/lib/time-tracking/registries/invoke.ts +122 -0
- package/src/modules/staff/lib/time-tracking/registries/registry.ts +124 -0
- package/src/modules/staff/lib/time-tracking/registries/scope.ts +56 -0
- package/src/modules/staff/lib/time-tracking/rollup.ts +59 -0
- package/src/modules/staff/lib/time-tracking/rounding.ts +126 -0
- package/src/modules/staff/lib/time-tracking/roundingImpact.ts +75 -0
- package/src/modules/staff/lib/time-tracking/settingKeys.ts +274 -0
- package/src/modules/staff/lib/time-tracking/settings.ts +168 -0
- package/src/modules/staff/lib/time-tracking/sqlInClause.ts +22 -0
- package/src/modules/staff/lib/time-tracking/timeEntrySources.ts +85 -0
- package/src/modules/staff/lib/time-tracking-ui/BoardFilterChips.tsx +360 -0
- package/src/modules/staff/lib/time-tracking-ui/CustomerPicker.tsx +427 -0
- package/src/modules/staff/lib/time-tracking-ui/DurationInput.tsx +192 -0
- package/src/modules/staff/lib/time-tracking-ui/EntryDetailsFields.tsx +224 -0
- package/src/modules/staff/lib/time-tracking-ui/EntryFilterBar.tsx +144 -0
- package/src/modules/staff/lib/time-tracking-ui/KanbanBoard.tsx +1065 -0
- package/src/modules/staff/lib/time-tracking-ui/KanbanCard.tsx +435 -0
- package/src/modules/staff/lib/time-tracking-ui/KanbanColumn.tsx +316 -0
- package/src/modules/staff/lib/time-tracking-ui/NewTaskDialog.tsx +291 -0
- package/src/modules/staff/lib/time-tracking-ui/NoProjectAccess.tsx +162 -0
- package/src/modules/staff/lib/time-tracking-ui/PeriodSelector.tsx +149 -0
- package/src/modules/staff/lib/time-tracking-ui/PhasePlaceholder.tsx +31 -0
- package/src/modules/staff/lib/time-tracking-ui/ProjectCodeField.tsx +230 -0
- package/src/modules/staff/lib/time-tracking-ui/ProjectCurrencyField.tsx +432 -0
- package/src/modules/staff/lib/time-tracking-ui/ProjectFormSections.tsx +323 -0
- package/src/modules/staff/lib/time-tracking-ui/ProjectTeamDrawer.tsx +930 -0
- package/src/modules/staff/lib/time-tracking-ui/ReportSheet.tsx +357 -0
- package/src/modules/staff/lib/time-tracking-ui/TagPicker.tsx +195 -0
- package/src/modules/staff/lib/time-tracking-ui/TaskBoardScreen.tsx +243 -0
- package/src/modules/staff/lib/time-tracking-ui/TaskCommentThread.tsx +137 -0
- package/src/modules/staff/lib/time-tracking-ui/TaskDrawer.tsx +1405 -0
- package/src/modules/staff/lib/time-tracking-ui/TaskListView.tsx +260 -0
- package/src/modules/staff/lib/time-tracking-ui/TaskPicker.tsx +435 -0
- package/src/modules/staff/lib/time-tracking-ui/TaskQuickLog.tsx +296 -0
- package/src/modules/staff/lib/time-tracking-ui/TimeEntriesSummaryFooter.tsx +97 -0
- package/src/modules/staff/lib/time-tracking-ui/TimeEntryDialog.tsx +1929 -0
- package/src/modules/staff/lib/time-tracking-ui/TimeEntryDurationCell.tsx +126 -0
- package/src/modules/staff/lib/time-tracking-ui/TimesheetCalendar.tsx +265 -0
- package/src/modules/staff/lib/time-tracking-ui/TimesheetPeriodFooter.tsx +78 -0
- package/src/modules/staff/lib/time-tracking-ui/TimesheetViewSwitch.tsx +70 -0
- package/src/modules/staff/lib/time-tracking-ui/boardDirectory.ts +231 -0
- package/src/modules/staff/lib/time-tracking-ui/boardFilters.ts +128 -0
- package/src/modules/staff/lib/time-tracking-ui/boardSummary.ts +20 -0
- package/src/modules/staff/lib/time-tracking-ui/kanbanBoardData.ts +228 -0
- package/src/modules/staff/lib/time-tracking-ui/projectTeamAssignment.ts +143 -0
- package/src/modules/staff/lib/time-tracking-ui/taskDrawerData.ts +194 -0
- package/src/modules/staff/lib/time-tracking-ui/timeEntryDialogState.ts +400 -0
- package/src/modules/staff/lib/time-tracking-ui/timeEntryListData.ts +271 -0
- package/src/modules/staff/lib/time-tracking-ui/timeTrackingSettingsForm.ts +168 -0
- package/src/modules/staff/lib/time-tracking-ui/timesheetData.ts +225 -0
- package/src/modules/staff/lib/time-tracking-ui/timesheetPeriod.ts +278 -0
- package/src/modules/staff/lib/time-tracking-ui/timesheetTargets.ts +93 -0
- package/src/modules/staff/lib/time-tracking-ui/useBoardFilters.ts +107 -0
- package/src/modules/staff/lib/time-tracking-ui/useTimesheetPreferences.ts +245 -0
- package/src/modules/staff/lib/timeTrackingSeeds.ts +1037 -0
- package/src/modules/staff/lib/timesheets/timeEntryCacheInvalidation.ts +11 -10
- package/src/modules/staff/lib/timesheets/timeEntryDecoration.ts +256 -0
- package/src/modules/staff/lib/timesheets-projects/budgetBurn.ts +60 -0
- package/src/modules/staff/lib/timesheets-projects/budgetThreshold.ts +135 -0
- package/src/modules/staff/lib/timesheets-projects/budgetThresholdState.ts +137 -0
- package/src/modules/staff/lib/timesheets-projects/computeProjectFinancials.ts +142 -0
- package/src/modules/staff/lib/timesheets-projects/reportSelection.ts +82 -0
- package/src/modules/staff/lib/timesheets-projects-ui/AssignMembersDialog.tsx +237 -0
- package/src/modules/staff/lib/timesheets-projects-ui/ProjectBudgetCell.tsx +33 -0
- package/src/modules/staff/lib/timesheets-projects-ui/ProjectCard.tsx +56 -1
- package/src/modules/staff/lib/timesheets-projects-ui/ProjectsBulkActionsBar.tsx +90 -0
- package/src/modules/staff/lib/timesheets-reports/buildReportSheet.ts +125 -0
- package/src/modules/staff/lib/timesheets-reports/loadReportData.ts +251 -0
- package/src/modules/staff/lib/timesheets-reports/pdf.ts +263 -0
- package/src/modules/staff/lib/timesheets-reports/reportApprovalPolicies.ts +137 -0
- package/src/modules/staff/lib/timesheets-reports/reportConfigData.ts +247 -0
- package/src/modules/staff/lib/timesheets-reports/reportConfigState.ts +89 -0
- package/src/modules/staff/lib/timesheets-reports/reportExport.ts +373 -0
- package/src/modules/staff/lib/timesheets-reports/reportExportFormats.ts +71 -0
- package/src/modules/staff/lib/timesheets-reports/reportGroupings.ts +153 -0
- package/src/modules/staff/lib/timesheets-reports/reportLabels.ts +23 -0
- package/src/modules/staff/lib/timesheets-reports/reportReference.ts +146 -0
- package/src/modules/staff/lib/timesheets-reports/reportRows.ts +89 -0
- package/src/modules/staff/lib/timesheets-reports/reportSheetData.ts +196 -0
- package/src/modules/staff/lib/timesheets-reports/reportTotals.ts +544 -0
- package/src/modules/staff/lib/timesheets-reports/xlsx.ts +207 -0
- package/src/modules/staff/lib/timesheets-tasks/computeTaskRollups.ts +238 -0
- package/src/modules/staff/lib/timesheets-tasks/defaultStatusTemplate.ts +90 -0
- package/src/modules/staff/lib/timesheets-tasks/seedProjectStatuses.ts +43 -0
- package/src/modules/staff/lib/timesheets-tasks/statusPositions.ts +132 -0
- package/src/modules/staff/lib/timesheets-tasks/statusSlug.ts +43 -0
- package/src/modules/staff/lib/timesheets-tasks/taskHierarchy.ts +99 -0
- package/src/modules/staff/lib/timesheets-tasks/taskHoursTotals.ts +42 -0
- package/src/modules/staff/lib/timesheets-tasks/taskReference.ts +108 -0
- package/src/modules/staff/lib/timesheets-ui/CreateProjectDialog.tsx +18 -4
- package/src/modules/staff/lib/timesheets-ui/ListView.tsx +504 -149
- package/src/modules/staff/lib/timesheets-ui/TimerBar.tsx +50 -2
- package/src/modules/staff/migrations/.snapshot-open-mercato.json +3244 -228
- package/src/modules/staff/migrations/Migration20260813073131_staff.ts +94 -0
- package/src/modules/staff/migrations/Migration20260824143357_staff.ts +17 -0
- package/src/modules/staff/notifications.client.ts +16 -0
- package/src/modules/staff/notifications.handlers.ts +88 -0
- package/src/modules/staff/notifications.ts +163 -0
- package/src/modules/staff/search.ts +191 -1
- package/src/modules/staff/setup.ts +22 -0
- package/src/modules/staff/subscribers/time-project-access-requested-notification.ts +95 -0
- package/src/modules/staff/subscribers/time-project-budget-threshold-notification.ts +226 -0
- package/src/modules/staff/subscribers/time-report-approved-notification.ts +116 -0
- package/src/modules/staff/subscribers/time-report-portal-broadcast.ts +120 -0
- package/src/modules/staff/translations.ts +17 -0
- package/src/modules/staff/widgets/components.ts +34 -0
- package/src/modules/staff/widgets/injection/timer-sidebar-indicator/widget.tsx +6 -5
- package/src/modules/staff/widgets/notifications/TimeProjectAccessRequestedRenderer.tsx +138 -0
- package/src/modules/staff/widgets/notifications/index.ts +1 -0
- package/src/modules/staff/workers/timesheets-reapply-rounding.ts +59 -0
- package/dist/modules/staff/backend/staff/timesheets/projects/projectFormConfig.js +0 -123
- package/dist/modules/staff/backend/staff/timesheets/projects/projectFormConfig.js.map +0 -7
- package/src/modules/staff/backend/staff/timesheets/projects/projectFormConfig.ts +0 -138
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { PROJECT_COLOR_KEYS } from "../lib/timesheets-ui/colors.js";
|
|
3
|
+
import { hasTimeEntrySource, timeEntrySourceIds } from "../lib/time-tracking/timeEntrySources.js";
|
|
4
|
+
import { hasReportGrouping, reportGroupingIds } from "../lib/timesheets-reports/reportGroupings.js";
|
|
5
|
+
import {
|
|
6
|
+
buildTimeTrackingSettingsSchema,
|
|
7
|
+
timeTrackingRoundingDirectionSchema,
|
|
8
|
+
timeTrackingRoundingUnitMinutesSchema
|
|
9
|
+
} from "../lib/time-tracking/settingKeys.js";
|
|
3
10
|
const projectColorSchema = z.string().refine(
|
|
4
11
|
(value) => PROJECT_COLOR_KEYS.includes(value),
|
|
5
12
|
{ message: "Invalid project color key." }
|
|
@@ -172,11 +179,34 @@ const staffTeamMemberSelfCreateSchema = z.object({
|
|
|
172
179
|
displayName: z.string().min(1),
|
|
173
180
|
description: z.string().max(2e3).optional().nullable()
|
|
174
181
|
});
|
|
175
|
-
const timeEntrySourceSchema = z.
|
|
182
|
+
const timeEntrySourceSchema = z.string().superRefine((value, ctx) => {
|
|
183
|
+
if (hasTimeEntrySource(value)) return;
|
|
184
|
+
ctx.addIssue({
|
|
185
|
+
code: z.ZodIssueCode.custom,
|
|
186
|
+
message: `[internal] unknown time entry source: ${value}`,
|
|
187
|
+
params: { accepted: timeEntrySourceIds() }
|
|
188
|
+
});
|
|
189
|
+
});
|
|
176
190
|
const timeProjectStatusSchema = z.enum(["active", "on_hold", "completed"]);
|
|
177
191
|
const timeProjectMemberStatusSchema = z.enum(["active", "inactive"]);
|
|
178
192
|
const timeEntrySegmentTypeSchema = z.enum(["work", "break"]);
|
|
179
193
|
const projectCodeSchema = z.string().min(1).max(50).regex(/^[a-zA-Z0-9-]+$/);
|
|
194
|
+
const moneyAmountSchema = z.number().min(0).max(99999999);
|
|
195
|
+
const timeProjectBudgetKindSchema = z.enum(["none", "hours", "amount"]);
|
|
196
|
+
const currencyCodeSchema = z.string().trim().length(3).transform((value) => value.toUpperCase());
|
|
197
|
+
const numericAmountPattern = /^\d{1,10}(?:\.\d{1,4})?$/;
|
|
198
|
+
const numericAmountSchema = z.union([z.number(), z.string()]).transform((value, ctx) => {
|
|
199
|
+
const raw = typeof value === "number" ? String(value) : value.trim().replace(",", ".");
|
|
200
|
+
if (raw.length === 0) return null;
|
|
201
|
+
if (!numericAmountPattern.test(raw)) {
|
|
202
|
+
ctx.addIssue({
|
|
203
|
+
code: z.ZodIssueCode.custom,
|
|
204
|
+
message: "Expected a non-negative amount with at most 10 digits and 4 decimals."
|
|
205
|
+
});
|
|
206
|
+
return z.NEVER;
|
|
207
|
+
}
|
|
208
|
+
return raw;
|
|
209
|
+
});
|
|
180
210
|
const staffTimeEntryCreateSchema = z.object({
|
|
181
211
|
...scopedCreateFields,
|
|
182
212
|
staffMemberId: z.string().uuid(),
|
|
@@ -189,31 +219,59 @@ const staffTimeEntryCreateSchema = z.object({
|
|
|
189
219
|
dealId: z.string().uuid().optional().nullable(),
|
|
190
220
|
orderId: z.string().uuid().optional().nullable(),
|
|
191
221
|
notes: z.string().max(2e3).optional().nullable(),
|
|
192
|
-
source: timeEntrySourceSchema.optional().default("manual")
|
|
222
|
+
source: timeEntrySourceSchema.optional().default("manual"),
|
|
223
|
+
taskId: z.string().uuid().optional().nullable(),
|
|
224
|
+
description: z.string().max(2e3).optional().nullable(),
|
|
225
|
+
isBillable: z.boolean().optional(),
|
|
226
|
+
tagIds: z.array(z.string().uuid()).max(50).optional(),
|
|
227
|
+
rateOverrideAmount: moneyAmountSchema.optional().nullable()
|
|
193
228
|
});
|
|
194
229
|
const staffTimeEntryUpdateSchema = z.object({
|
|
195
230
|
...scopedUpdateFields,
|
|
196
231
|
date: z.coerce.date().optional(),
|
|
197
232
|
durationMinutes: z.number().int().min(0).max(1440).optional(),
|
|
233
|
+
startedAt: z.coerce.date().optional().nullable(),
|
|
234
|
+
endedAt: z.coerce.date().optional().nullable(),
|
|
198
235
|
timeProjectId: z.string().uuid().optional().nullable(),
|
|
199
236
|
customerId: z.string().uuid().optional().nullable(),
|
|
200
237
|
dealId: z.string().uuid().optional().nullable(),
|
|
201
238
|
orderId: z.string().uuid().optional().nullable(),
|
|
202
|
-
notes: z.string().max(2e3).optional().nullable()
|
|
239
|
+
notes: z.string().max(2e3).optional().nullable(),
|
|
240
|
+
taskId: z.string().uuid().optional().nullable(),
|
|
241
|
+
description: z.string().max(2e3).optional().nullable(),
|
|
242
|
+
isBillable: z.boolean().optional(),
|
|
243
|
+
tagIds: z.array(z.string().uuid()).max(50).optional(),
|
|
244
|
+
rateOverrideAmount: moneyAmountSchema.optional().nullable()
|
|
203
245
|
});
|
|
204
246
|
const staffTimeEntryStartTimerSchema = z.object({
|
|
205
247
|
...scopedCreateFields,
|
|
206
248
|
staffMemberId: z.string().uuid(),
|
|
207
249
|
date: z.coerce.date(),
|
|
208
250
|
timeProjectId: z.string().uuid().optional().nullable(),
|
|
251
|
+
taskId: z.string().uuid().optional().nullable(),
|
|
209
252
|
notes: z.string().max(2e3).optional().nullable()
|
|
210
253
|
});
|
|
211
254
|
const staffTimeEntryBulkItemSchema = z.object({
|
|
212
255
|
id: z.string().uuid().optional().nullable(),
|
|
213
256
|
date: z.coerce.date(),
|
|
214
|
-
|
|
257
|
+
// Optional only because a task carries its project: a row naming a `taskId`
|
|
258
|
+
// inherits the project from it, exactly as the single-entry path does. The
|
|
259
|
+
// route refuses a row that names neither with `staff.timesheets.errors.projectRequired`,
|
|
260
|
+
// so every stored row still lands on a project — the (project, date) cell the
|
|
261
|
+
// lock gate addresses is never blank.
|
|
262
|
+
timeProjectId: z.string().uuid().optional().nullable(),
|
|
215
263
|
durationMinutes: z.number().int().min(0).max(1440),
|
|
216
|
-
notes: z.string().max(2e3).optional().nullable()
|
|
264
|
+
notes: z.string().max(2e3).optional().nullable(),
|
|
265
|
+
taskId: z.string().uuid().optional().nullable(),
|
|
266
|
+
description: z.string().max(2e3).optional().nullable(),
|
|
267
|
+
isBillable: z.boolean().optional(),
|
|
268
|
+
// Accepted by the schema and REFUSED by the route with 422: assigning tags
|
|
269
|
+
// means dispatching the tag commands, which fork their own EntityManager and
|
|
270
|
+
// cannot participate in this route's per-row transaction. Kept in the schema
|
|
271
|
+
// so the refusal is explicit — dropping the key would let zod strip it and
|
|
272
|
+
// restore the silent no-op.
|
|
273
|
+
tagIds: z.array(z.string().uuid()).max(50).optional(),
|
|
274
|
+
rateOverrideAmount: moneyAmountSchema.optional().nullable()
|
|
217
275
|
});
|
|
218
276
|
const staffTimeEntryBulkSaveSchema = z.object({
|
|
219
277
|
entries: z.array(staffTimeEntryBulkItemSchema).min(1).max(200)
|
|
@@ -234,7 +292,11 @@ const staffTimeEntrySegmentUpdateSchema = z.object({
|
|
|
234
292
|
const staffTimeProjectCreateSchema = z.object({
|
|
235
293
|
...scopedCreateFields,
|
|
236
294
|
name: z.string().min(1).max(255),
|
|
237
|
-
|
|
295
|
+
// D-9 / US-B1: time is organised per customer, so a new project always names one.
|
|
296
|
+
// Rows created before this change keep their null customer and stay editable
|
|
297
|
+
// (see the update schema below), which is why only create is constrained.
|
|
298
|
+
customerId: z.string().uuid(),
|
|
299
|
+
customerSnapshot: z.record(z.string(), z.unknown()).optional().nullable(),
|
|
238
300
|
code: projectCodeSchema,
|
|
239
301
|
description: z.string().max(2e3).optional().nullable(),
|
|
240
302
|
projectType: z.string().max(100).optional().nullable(),
|
|
@@ -242,12 +304,22 @@ const staffTimeProjectCreateSchema = z.object({
|
|
|
242
304
|
status: timeProjectStatusSchema.optional().default("active"),
|
|
243
305
|
ownerUserId: z.string().uuid().optional().nullable(),
|
|
244
306
|
costCenter: z.string().max(100).optional().nullable(),
|
|
245
|
-
startDate: z.coerce.date().optional().nullable()
|
|
307
|
+
startDate: z.coerce.date().optional().nullable(),
|
|
308
|
+
hourlyRate: numericAmountSchema.optional().nullable(),
|
|
309
|
+
// D-3: the currency may be chosen once, at creation. Every later change goes
|
|
310
|
+
// through `POST .../change-currency`, which carries the non-conversion
|
|
311
|
+
// acknowledgement and refuses while entries sit frozen in a closed report.
|
|
312
|
+
currencyCode: currencyCodeSchema.optional().nullable(),
|
|
313
|
+
billableByDefault: z.boolean().optional(),
|
|
314
|
+
budgetKind: timeProjectBudgetKindSchema.optional().default("none"),
|
|
315
|
+
budgetValue: numericAmountSchema.optional().nullable(),
|
|
316
|
+
budgetWarnAtPercent: z.number().int().min(1).max(100).optional()
|
|
246
317
|
});
|
|
247
318
|
const staffTimeProjectUpdateSchema = z.object({
|
|
248
319
|
...scopedUpdateFields,
|
|
249
320
|
name: z.string().min(1).max(255).optional(),
|
|
250
321
|
customerId: z.string().uuid().optional().nullable(),
|
|
322
|
+
customerSnapshot: z.record(z.string(), z.unknown()).optional().nullable(),
|
|
251
323
|
code: projectCodeSchema.optional(),
|
|
252
324
|
description: z.string().max(2e3).optional().nullable(),
|
|
253
325
|
projectType: z.string().max(100).optional().nullable(),
|
|
@@ -255,7 +327,12 @@ const staffTimeProjectUpdateSchema = z.object({
|
|
|
255
327
|
status: timeProjectStatusSchema.optional(),
|
|
256
328
|
ownerUserId: z.string().uuid().optional().nullable(),
|
|
257
329
|
costCenter: z.string().max(100).optional().nullable(),
|
|
258
|
-
startDate: z.coerce.date().optional().nullable()
|
|
330
|
+
startDate: z.coerce.date().optional().nullable(),
|
|
331
|
+
hourlyRate: numericAmountSchema.optional().nullable(),
|
|
332
|
+
billableByDefault: z.boolean().optional(),
|
|
333
|
+
budgetKind: timeProjectBudgetKindSchema.optional(),
|
|
334
|
+
budgetValue: numericAmountSchema.optional().nullable(),
|
|
335
|
+
budgetWarnAtPercent: z.number().int().min(1).max(100).optional()
|
|
259
336
|
});
|
|
260
337
|
const staffTimeProjectMemberAssignSchema = z.object({
|
|
261
338
|
...scopedCreateFields,
|
|
@@ -275,6 +352,156 @@ const staffTimeProjectMemberUpdateSchema = z.object({
|
|
|
275
352
|
const staffMyProjectVisibilityUpdateSchema = z.object({
|
|
276
353
|
showInGrid: z.boolean()
|
|
277
354
|
});
|
|
355
|
+
const timeSlugSchema = z.string().trim().min(1).max(60).regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/);
|
|
356
|
+
const timeReportPeriodKindSchema = z.enum(["week", "month", "year", "custom"]);
|
|
357
|
+
const timeReportGroupingSchema = z.string().superRefine((value, ctx) => {
|
|
358
|
+
if (hasReportGrouping(value)) return;
|
|
359
|
+
ctx.addIssue({
|
|
360
|
+
code: z.ZodIssueCode.custom,
|
|
361
|
+
message: `[internal] unknown report grouping: ${value}`,
|
|
362
|
+
params: { accepted: reportGroupingIds() }
|
|
363
|
+
});
|
|
364
|
+
});
|
|
365
|
+
const timeReportNonbillableModeSchema = z.enum(["separate", "exclude"]);
|
|
366
|
+
const timeRoundingDirectionSchema = timeTrackingRoundingDirectionSchema;
|
|
367
|
+
const timeRoundingUnitMinutesSchema = timeTrackingRoundingUnitMinutesSchema;
|
|
368
|
+
const positionSchema = z.number().int().min(0).max(1e6);
|
|
369
|
+
const staffTimeTaskStatusCreateSchema = z.object({
|
|
370
|
+
...scopedCreateFields,
|
|
371
|
+
timeProjectId: z.string().uuid(),
|
|
372
|
+
name: z.string().trim().min(1).max(100),
|
|
373
|
+
slug: timeSlugSchema.optional(),
|
|
374
|
+
color: projectColorSchema.optional().nullable(),
|
|
375
|
+
position: positionSchema.optional(),
|
|
376
|
+
isDefault: z.boolean().optional(),
|
|
377
|
+
isDone: z.boolean().optional()
|
|
378
|
+
});
|
|
379
|
+
const staffTimeTaskStatusUpdateSchema = z.object({
|
|
380
|
+
...scopedUpdateFields,
|
|
381
|
+
name: z.string().trim().min(1).max(100).optional(),
|
|
382
|
+
color: projectColorSchema.optional().nullable(),
|
|
383
|
+
position: positionSchema.optional(),
|
|
384
|
+
isDefault: z.boolean().optional(),
|
|
385
|
+
isDone: z.boolean().optional()
|
|
386
|
+
});
|
|
387
|
+
const staffTimeTaskStatusReorderSchema = z.object({
|
|
388
|
+
statuses: z.array(
|
|
389
|
+
z.object({
|
|
390
|
+
id: z.string().uuid(),
|
|
391
|
+
position: positionSchema
|
|
392
|
+
})
|
|
393
|
+
).min(1).max(100)
|
|
394
|
+
});
|
|
395
|
+
const staffTimeTaskCreateSchema = z.object({
|
|
396
|
+
...scopedCreateFields,
|
|
397
|
+
timeProjectId: z.string().uuid(),
|
|
398
|
+
parentTaskId: z.string().uuid().optional().nullable(),
|
|
399
|
+
taskStatusId: z.string().uuid().optional().nullable(),
|
|
400
|
+
title: z.string().trim().min(1).max(255),
|
|
401
|
+
description: z.string().max(8e3).optional().nullable(),
|
|
402
|
+
assigneeStaffMemberId: z.string().uuid().optional().nullable(),
|
|
403
|
+
position: positionSchema.optional(),
|
|
404
|
+
tagIds: z.array(z.string().uuid()).max(50).optional()
|
|
405
|
+
});
|
|
406
|
+
const staffTimeTaskUpdateSchema = z.object({
|
|
407
|
+
...scopedUpdateFields,
|
|
408
|
+
parentTaskId: z.string().uuid().optional().nullable(),
|
|
409
|
+
taskStatusId: z.string().uuid().optional(),
|
|
410
|
+
title: z.string().trim().min(1).max(255).optional(),
|
|
411
|
+
description: z.string().max(8e3).optional().nullable(),
|
|
412
|
+
assigneeStaffMemberId: z.string().uuid().optional().nullable(),
|
|
413
|
+
position: positionSchema.optional(),
|
|
414
|
+
tagIds: z.array(z.string().uuid()).max(50).optional()
|
|
415
|
+
});
|
|
416
|
+
const staffTimeTaskStatusChangeSchema = z.object({
|
|
417
|
+
taskStatusId: z.string().uuid(),
|
|
418
|
+
position: positionSchema.optional()
|
|
419
|
+
});
|
|
420
|
+
const staffTimeTaskCommentCreateSchema = z.object({
|
|
421
|
+
...scopedCreateFields,
|
|
422
|
+
taskId: z.string().uuid(),
|
|
423
|
+
body: z.string().trim().min(1).max(5e3),
|
|
424
|
+
authorUserId: z.string().uuid().optional().nullable()
|
|
425
|
+
});
|
|
426
|
+
const staffTimeTaskCommentUpdateSchema = z.object({
|
|
427
|
+
...scopedUpdateFields,
|
|
428
|
+
body: z.string().trim().min(1).max(5e3)
|
|
429
|
+
});
|
|
430
|
+
const staffTimeTagCreateSchema = z.object({
|
|
431
|
+
...scopedCreateFields,
|
|
432
|
+
slug: timeSlugSchema,
|
|
433
|
+
label: z.string().trim().min(1).max(100),
|
|
434
|
+
color: projectColorSchema.optional().nullable()
|
|
435
|
+
});
|
|
436
|
+
const staffTimeTaskTagAssignmentSchema = z.object({
|
|
437
|
+
...scopedCreateFields,
|
|
438
|
+
taskId: z.string().uuid(),
|
|
439
|
+
tagIds: z.array(z.string().uuid()).max(50)
|
|
440
|
+
});
|
|
441
|
+
const staffTimeEntryTagAssignmentSchema = z.object({
|
|
442
|
+
...scopedCreateFields,
|
|
443
|
+
timeEntryId: z.string().uuid(),
|
|
444
|
+
tagIds: z.array(z.string().uuid()).max(50)
|
|
445
|
+
});
|
|
446
|
+
const validateStaffTimeReportPeriod = (value, ctx) => {
|
|
447
|
+
if (!value.periodFrom || !value.periodTo) return;
|
|
448
|
+
if (value.periodTo < value.periodFrom) {
|
|
449
|
+
ctx.addIssue({
|
|
450
|
+
code: z.ZodIssueCode.custom,
|
|
451
|
+
message: "Period end must be after period start.",
|
|
452
|
+
path: ["periodTo"]
|
|
453
|
+
});
|
|
454
|
+
}
|
|
455
|
+
};
|
|
456
|
+
const staffTimeReportCreateSchema = z.object({
|
|
457
|
+
...scopedCreateFields,
|
|
458
|
+
customerId: z.string().uuid(),
|
|
459
|
+
title: z.string().trim().min(1).max(255),
|
|
460
|
+
periodKind: timeReportPeriodKindSchema,
|
|
461
|
+
periodFrom: z.coerce.date(),
|
|
462
|
+
periodTo: z.coerce.date(),
|
|
463
|
+
grouping: timeReportGroupingSchema.optional().default("project_task"),
|
|
464
|
+
nonbillableMode: timeReportNonbillableModeSchema.optional().default("separate"),
|
|
465
|
+
includeAlreadyReported: z.boolean().optional().default(false),
|
|
466
|
+
showRates: z.boolean().optional().default(true),
|
|
467
|
+
timeProjectIds: z.array(z.string().uuid()).min(1).max(100)
|
|
468
|
+
}).superRefine(validateStaffTimeReportPeriod);
|
|
469
|
+
const staffTimeReportUpdateSchema = z.object({
|
|
470
|
+
...scopedUpdateFields,
|
|
471
|
+
customerId: z.string().uuid().optional(),
|
|
472
|
+
title: z.string().trim().min(1).max(255).optional(),
|
|
473
|
+
periodKind: timeReportPeriodKindSchema.optional(),
|
|
474
|
+
periodFrom: z.coerce.date().optional(),
|
|
475
|
+
periodTo: z.coerce.date().optional(),
|
|
476
|
+
grouping: timeReportGroupingSchema.optional(),
|
|
477
|
+
nonbillableMode: timeReportNonbillableModeSchema.optional(),
|
|
478
|
+
includeAlreadyReported: z.boolean().optional(),
|
|
479
|
+
showRates: z.boolean().optional(),
|
|
480
|
+
timeProjectIds: z.array(z.string().uuid()).min(1).max(100).optional()
|
|
481
|
+
}).superRefine(validateStaffTimeReportPeriod);
|
|
482
|
+
const staffTimeReportPreviewSchema = z.object({
|
|
483
|
+
customerId: z.string().uuid().optional().nullable(),
|
|
484
|
+
periodKind: timeReportPeriodKindSchema.optional().default("custom"),
|
|
485
|
+
periodFrom: z.coerce.date(),
|
|
486
|
+
periodTo: z.coerce.date(),
|
|
487
|
+
grouping: timeReportGroupingSchema.optional().default("project_task"),
|
|
488
|
+
nonbillableMode: timeReportNonbillableModeSchema.optional().default("separate"),
|
|
489
|
+
includeAlreadyReported: z.boolean().optional().default(false),
|
|
490
|
+
showRates: z.boolean().optional().default(true),
|
|
491
|
+
timeProjectIds: z.array(z.string().uuid()).min(1).max(100)
|
|
492
|
+
}).superRefine(validateStaffTimeReportPeriod);
|
|
493
|
+
const staffTimeReportCloseSchema = z.object({
|
|
494
|
+
id: z.string().uuid()
|
|
495
|
+
});
|
|
496
|
+
const staffTimeReportUnlockSchema = z.object({
|
|
497
|
+
id: z.string().uuid(),
|
|
498
|
+
reason: z.string().trim().min(1).max(2e3)
|
|
499
|
+
});
|
|
500
|
+
const staffTimeProjectChangeCurrencySchema = z.object({
|
|
501
|
+
currencyCode: currencyCodeSchema,
|
|
502
|
+
acknowledged: z.literal(true)
|
|
503
|
+
});
|
|
504
|
+
const staffTimeTrackingSettingsSchema = buildTimeTrackingSettingsSchema();
|
|
278
505
|
export {
|
|
279
506
|
optimisticUpdatedAtSchema,
|
|
280
507
|
staffLeaveRequestCreateSchema,
|
|
@@ -303,10 +530,28 @@ export {
|
|
|
303
530
|
staffTimeEntrySegmentCreateSchema,
|
|
304
531
|
staffTimeEntrySegmentUpdateSchema,
|
|
305
532
|
staffTimeEntryStartTimerSchema,
|
|
533
|
+
staffTimeEntryTagAssignmentSchema,
|
|
306
534
|
staffTimeEntryUpdateSchema,
|
|
535
|
+
staffTimeProjectChangeCurrencySchema,
|
|
307
536
|
staffTimeProjectCreateSchema,
|
|
308
537
|
staffTimeProjectMemberAssignSchema,
|
|
309
538
|
staffTimeProjectMemberUpdateSchema,
|
|
310
|
-
staffTimeProjectUpdateSchema
|
|
539
|
+
staffTimeProjectUpdateSchema,
|
|
540
|
+
staffTimeReportCloseSchema,
|
|
541
|
+
staffTimeReportCreateSchema,
|
|
542
|
+
staffTimeReportPreviewSchema,
|
|
543
|
+
staffTimeReportUnlockSchema,
|
|
544
|
+
staffTimeReportUpdateSchema,
|
|
545
|
+
staffTimeTagCreateSchema,
|
|
546
|
+
staffTimeTaskCommentCreateSchema,
|
|
547
|
+
staffTimeTaskCommentUpdateSchema,
|
|
548
|
+
staffTimeTaskCreateSchema,
|
|
549
|
+
staffTimeTaskStatusChangeSchema,
|
|
550
|
+
staffTimeTaskStatusCreateSchema,
|
|
551
|
+
staffTimeTaskStatusReorderSchema,
|
|
552
|
+
staffTimeTaskStatusUpdateSchema,
|
|
553
|
+
staffTimeTaskTagAssignmentSchema,
|
|
554
|
+
staffTimeTaskUpdateSchema,
|
|
555
|
+
staffTimeTrackingSettingsSchema
|
|
311
556
|
};
|
|
312
557
|
//# sourceMappingURL=validators.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/modules/staff/data/validators.ts"],
|
|
4
|
-
"sourcesContent": ["import { z } from 'zod'\nimport { PROJECT_COLOR_KEYS } from '../lib/timesheets-ui/colors'\n\nconst projectColorSchema = z\n .string()\n .refine(\n (value) => (PROJECT_COLOR_KEYS as readonly string[]).includes(value),\n { message: 'Invalid project color key.' },\n )\n\nconst tagsSchema = z.array(z.string().min(1)).optional().default([])\n\nexport const optimisticUpdatedAtSchema = z.string().refine(\n (value) => !Number.isNaN(new Date(value).getTime()),\n { message: 'Invalid datetime' },\n)\n\nconst scopedCreateFields = {\n tenantId: z.string().uuid(),\n organizationId: z.string().uuid(),\n}\n\nconst scopedUpdateFields = {\n id: z.string().uuid(),\n}\n\nexport const staffTeamCreateSchema = z.object({\n ...scopedCreateFields,\n name: z.string().min(1),\n description: z.string().optional().nullable(),\n isActive: z.boolean().optional(),\n})\n\nexport const staffTeamUpdateSchema = z.object({\n ...scopedUpdateFields,\n name: z.string().min(1).optional(),\n description: z.string().optional().nullable(),\n isActive: z.boolean().optional(),\n})\n\nexport const staffTeamRoleCreateSchema = z.object({\n ...scopedCreateFields,\n teamId: z.string().uuid().optional().nullable(),\n name: z.string().min(1),\n description: z.string().optional().nullable(),\n appearanceIcon: z.string().trim().max(100).optional().nullable(),\n appearanceColor: z\n .string()\n .trim()\n .regex(/^#([0-9a-fA-F]{6})$/)\n .optional()\n .nullable(),\n})\n\nexport const staffTeamRoleUpdateSchema = z.object({\n ...scopedUpdateFields,\n teamId: z.string().uuid().optional().nullable(),\n name: z.string().min(1).optional(),\n description: z.string().optional().nullable(),\n appearanceIcon: z.string().trim().max(100).optional().nullable(),\n appearanceColor: z\n .string()\n .trim()\n .regex(/^#([0-9a-fA-F]{6})$/)\n .optional()\n .nullable(),\n})\n\nexport const staffTeamMemberCreateSchema = z.object({\n ...scopedCreateFields,\n teamId: z.string().uuid().optional().nullable(),\n displayName: z.string().min(1),\n description: z.string().optional().nullable(),\n userId: z.string().uuid().optional().nullable(),\n roleIds: z.array(z.string().uuid()).optional().default([]),\n tags: tagsSchema,\n availabilityRuleSetId: z.string().uuid().optional().nullable(),\n isActive: z.boolean().optional(),\n})\n\nexport const staffTeamMemberUpdateSchema = z.object({\n ...scopedUpdateFields,\n teamId: z.string().uuid().optional().nullable(),\n displayName: z.string().min(1).optional(),\n description: z.string().optional().nullable(),\n userId: z.string().uuid().optional().nullable(),\n roleIds: z.array(z.string().uuid()).optional(),\n tags: z.array(z.string().min(1)).optional(),\n availabilityRuleSetId: z.string().uuid().optional().nullable(),\n isActive: z.boolean().optional(),\n})\n\nexport const staffTeamMemberActivityCreateSchema = z.object({\n ...scopedCreateFields,\n entityId: z.string().uuid(),\n activityType: z.string().min(1).max(100),\n subject: z.string().max(200).optional(),\n body: z.string().max(8000).optional(),\n occurredAt: z.coerce.date().optional(),\n authorUserId: z.string().uuid().optional(),\n appearanceIcon: z.string().trim().max(100).optional().nullable(),\n appearanceColor: z\n .string()\n .trim()\n .regex(/^#([0-9a-fA-F]{6})$/)\n .optional()\n .nullable(),\n})\n\nexport const staffTeamMemberActivityUpdateSchema = z\n .object({\n id: z.string().uuid(),\n })\n .merge(staffTeamMemberActivityCreateSchema.partial())\n\nexport const staffTeamMemberJobHistoryCreateSchema = z.object({\n ...scopedCreateFields,\n entityId: z.string().uuid(),\n name: z.string().min(1).max(200),\n companyName: z.string().max(200).optional().nullable(),\n description: z.string().max(2000).optional().nullable(),\n startDate: z.coerce.date(),\n endDate: z.coerce.date().optional().nullable(),\n})\n\nexport const staffTeamMemberJobHistoryUpdateSchema = z\n .object({\n id: z.string().uuid(),\n updatedAt: optimisticUpdatedAtSchema.optional(),\n })\n .merge(staffTeamMemberJobHistoryCreateSchema.partial())\n\nexport const staffTeamMemberCommentCreateSchema = z.object({\n ...scopedCreateFields,\n entityId: z.string().uuid(),\n body: z.string().min(1).max(8000),\n authorUserId: z.string().uuid().optional(),\n appearanceIcon: z.string().trim().max(100).optional().nullable(),\n appearanceColor: z\n .string()\n .trim()\n .regex(/^#([0-9a-fA-F]{6})$/)\n .optional()\n .nullable(),\n})\n\nexport const staffTeamMemberCommentUpdateSchema = z\n .object({\n id: z.string().uuid(),\n })\n .merge(staffTeamMemberCommentCreateSchema.partial())\n\nexport const staffTeamMemberAddressCreateSchema = z.object({\n ...scopedCreateFields,\n entityId: z.string().uuid(),\n name: z.string().max(150).optional(),\n purpose: z.string().max(150).optional(),\n companyName: z.string().max(200).optional(),\n addressLine1: z.string().min(1).max(300),\n addressLine2: z.string().max(300).optional(),\n buildingNumber: z.string().max(50).optional(),\n flatNumber: z.string().max(50).optional(),\n city: z.string().max(150).optional(),\n region: z.string().max(150).optional(),\n postalCode: z.string().max(30).optional(),\n country: z.string().max(150).optional(),\n latitude: z.coerce.number().optional(),\n longitude: z.coerce.number().optional(),\n isPrimary: z.boolean().optional(),\n})\n\nexport const staffTeamMemberAddressUpdateSchema = z\n .object({\n id: z.string().uuid(),\n })\n .merge(staffTeamMemberAddressCreateSchema.partial())\n\nexport const staffTeamMemberTagAssignmentSchema = z.object({\n ...scopedCreateFields,\n memberId: z.string().uuid(),\n tag: z.string().min(1),\n})\n\nconst staffLeaveRequestStatusSchema = z.enum(['pending', 'approved', 'rejected'])\n\nconst validateStaffLeaveRequestDateRange = (\n value: { startDate?: Date; endDate?: Date },\n ctx: z.RefinementCtx,\n) => {\n if (!value.startDate || !value.endDate) return\n if (value.endDate < value.startDate) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'End date must be after start date.',\n path: ['endDate'],\n })\n }\n}\n\nexport const staffLeaveRequestCreateSchema = z\n .object({\n ...scopedCreateFields,\n memberId: z.string().uuid(),\n timezone: z.string().min(1),\n startDate: z.coerce.date(),\n endDate: z.coerce.date(),\n unavailabilityReasonEntryId: z.string().uuid().optional().nullable(),\n unavailabilityReasonValue: z.string().trim().min(1).max(150).optional().nullable(),\n note: z.string().max(2000).optional().nullable(),\n submittedByUserId: z.string().uuid().optional().nullable(),\n })\n .superRefine(validateStaffLeaveRequestDateRange)\n\nexport const staffLeaveRequestUpdateSchema = z\n .object({\n ...scopedUpdateFields,\n timezone: z.string().min(1).optional(),\n memberId: z.string().uuid().optional(),\n startDate: z.coerce.date().optional(),\n endDate: z.coerce.date().optional(),\n unavailabilityReasonEntryId: z.string().uuid().optional().nullable(),\n unavailabilityReasonValue: z.string().trim().min(1).max(150).optional().nullable(),\n note: z.string().max(2000).optional().nullable(),\n })\n .superRefine(validateStaffLeaveRequestDateRange)\n\nexport const staffLeaveRequestDecisionSchema = z.object({\n id: z.string().uuid(),\n decisionComment: z.string().max(2000).optional().nullable(),\n decidedByUserId: z.string().uuid().optional().nullable(),\n})\n\nexport const staffTeamMemberSelfCreateSchema = z.object({\n ...scopedCreateFields,\n displayName: z.string().min(1),\n description: z.string().max(2000).optional().nullable(),\n})\n\nexport type StaffTeamCreateInput = z.infer<typeof staffTeamCreateSchema>\nexport type StaffTeamUpdateInput = z.infer<typeof staffTeamUpdateSchema>\nexport type StaffTeamRoleCreateInput = z.infer<typeof staffTeamRoleCreateSchema>\nexport type StaffTeamRoleUpdateInput = z.infer<typeof staffTeamRoleUpdateSchema>\nexport type StaffTeamMemberCreateInput = z.infer<typeof staffTeamMemberCreateSchema>\nexport type StaffTeamMemberUpdateInput = z.infer<typeof staffTeamMemberUpdateSchema>\nexport type StaffTeamMemberTagAssignmentInput = z.infer<typeof staffTeamMemberTagAssignmentSchema>\nexport type StaffTeamMemberActivityCreateInput = z.infer<typeof staffTeamMemberActivityCreateSchema>\nexport type StaffTeamMemberActivityUpdateInput = z.infer<typeof staffTeamMemberActivityUpdateSchema>\nexport type StaffTeamMemberJobHistoryCreateInput = z.infer<typeof staffTeamMemberJobHistoryCreateSchema>\nexport type StaffTeamMemberJobHistoryUpdateInput = z.infer<typeof staffTeamMemberJobHistoryUpdateSchema>\nexport type StaffTeamMemberCommentCreateInput = z.infer<typeof staffTeamMemberCommentCreateSchema>\nexport type StaffTeamMemberCommentUpdateInput = z.infer<typeof staffTeamMemberCommentUpdateSchema>\nexport type StaffTeamMemberAddressCreateInput = z.infer<typeof staffTeamMemberAddressCreateSchema>\nexport type StaffTeamMemberAddressUpdateInput = z.infer<typeof staffTeamMemberAddressUpdateSchema>\nexport type StaffLeaveRequestStatus = z.infer<typeof staffLeaveRequestStatusSchema>\nexport type StaffLeaveRequestCreateInput = z.infer<typeof staffLeaveRequestCreateSchema>\nexport type StaffLeaveRequestUpdateInput = z.infer<typeof staffLeaveRequestUpdateSchema>\nexport type StaffLeaveRequestDecisionInput = z.infer<typeof staffLeaveRequestDecisionSchema>\nexport type StaffTeamMemberSelfCreateInput = z.infer<typeof staffTeamMemberSelfCreateSchema>\n\n// --- Timesheets validators (Phase 1) ---\n\nconst timeEntrySourceSchema = z.enum(['manual', 'timer', 'kiosk', 'mobile'])\nconst timeProjectStatusSchema = z.enum(['active', 'on_hold', 'completed'])\nconst timeProjectMemberStatusSchema = z.enum(['active', 'inactive'])\nconst timeEntrySegmentTypeSchema = z.enum(['work', 'break'])\nconst projectCodeSchema = z.string().min(1).max(50).regex(/^[a-zA-Z0-9-]+$/)\n\nexport const staffTimeEntryCreateSchema = z.object({\n ...scopedCreateFields,\n staffMemberId: z.string().uuid(),\n date: z.coerce.date(),\n durationMinutes: z.number().int().min(0).max(1440),\n startedAt: z.coerce.date().optional().nullable(),\n endedAt: z.coerce.date().optional().nullable(),\n timeProjectId: z.string().uuid().optional().nullable(),\n customerId: z.string().uuid().optional().nullable(),\n dealId: z.string().uuid().optional().nullable(),\n orderId: z.string().uuid().optional().nullable(),\n notes: z.string().max(2000).optional().nullable(),\n source: timeEntrySourceSchema.optional().default('manual'),\n})\n\nexport const staffTimeEntryUpdateSchema = z.object({\n ...scopedUpdateFields,\n date: z.coerce.date().optional(),\n durationMinutes: z.number().int().min(0).max(1440).optional(),\n timeProjectId: z.string().uuid().optional().nullable(),\n customerId: z.string().uuid().optional().nullable(),\n dealId: z.string().uuid().optional().nullable(),\n orderId: z.string().uuid().optional().nullable(),\n notes: z.string().max(2000).optional().nullable(),\n})\n\nexport const staffTimeEntryStartTimerSchema = z.object({\n ...scopedCreateFields,\n staffMemberId: z.string().uuid(),\n date: z.coerce.date(),\n timeProjectId: z.string().uuid().optional().nullable(),\n notes: z.string().max(2000).optional().nullable(),\n})\n\nexport const staffTimeEntryBulkItemSchema = z.object({\n id: z.string().uuid().optional().nullable(),\n date: z.coerce.date(),\n timeProjectId: z.string().uuid(),\n durationMinutes: z.number().int().min(0).max(1440),\n notes: z.string().max(2000).optional().nullable(),\n})\n\nexport const staffTimeEntryBulkSaveSchema = z.object({\n entries: z.array(staffTimeEntryBulkItemSchema).min(1).max(200),\n})\n\nexport const staffTimeEntrySegmentCreateSchema = z.object({\n ...scopedCreateFields,\n timeEntryId: z.string().uuid(),\n startedAt: z.coerce.date(),\n endedAt: z.coerce.date().optional().nullable(),\n segmentType: timeEntrySegmentTypeSchema.optional().default('work'),\n})\n\nexport const staffTimeEntrySegmentUpdateSchema = z.object({\n ...scopedUpdateFields,\n startedAt: z.coerce.date().optional(),\n endedAt: z.coerce.date().optional().nullable(),\n segmentType: timeEntrySegmentTypeSchema.optional(),\n})\n\nexport const staffTimeProjectCreateSchema = z.object({\n ...scopedCreateFields,\n name: z.string().min(1).max(255),\n customerId: z.string().uuid().optional().nullable(),\n code: projectCodeSchema,\n description: z.string().max(2000).optional().nullable(),\n projectType: z.string().max(100).optional().nullable(),\n color: projectColorSchema.optional().nullable(),\n status: timeProjectStatusSchema.optional().default('active'),\n ownerUserId: z.string().uuid().optional().nullable(),\n costCenter: z.string().max(100).optional().nullable(),\n startDate: z.coerce.date().optional().nullable(),\n})\n\nexport const staffTimeProjectUpdateSchema = z.object({\n ...scopedUpdateFields,\n name: z.string().min(1).max(255).optional(),\n customerId: z.string().uuid().optional().nullable(),\n code: projectCodeSchema.optional(),\n description: z.string().max(2000).optional().nullable(),\n projectType: z.string().max(100).optional().nullable(),\n color: projectColorSchema.optional().nullable(),\n status: timeProjectStatusSchema.optional(),\n ownerUserId: z.string().uuid().optional().nullable(),\n costCenter: z.string().max(100).optional().nullable(),\n startDate: z.coerce.date().optional().nullable(),\n})\n\nexport const staffTimeProjectMemberAssignSchema = z.object({\n ...scopedCreateFields,\n timeProjectId: z.string().uuid(),\n staffMemberId: z.string().uuid(),\n role: z.string().max(100).optional().nullable(),\n status: timeProjectMemberStatusSchema.optional().default('active'),\n assignedStartDate: z.coerce.date(),\n assignedEndDate: z.coerce.date().optional().nullable(),\n})\n\nexport const staffTimeProjectMemberUpdateSchema = z.object({\n ...scopedUpdateFields,\n role: z.string().max(100).optional().nullable(),\n status: timeProjectMemberStatusSchema.optional(),\n assignedEndDate: z.coerce.date().optional().nullable(),\n})\n\nexport const staffMyProjectVisibilityUpdateSchema = z.object({\n showInGrid: z.boolean(),\n})\n\nexport type StaffTimeEntryCreateInput = z.infer<typeof staffTimeEntryCreateSchema>\nexport type StaffTimeEntryUpdateInput = z.infer<typeof staffTimeEntryUpdateSchema>\nexport type StaffTimeEntryStartTimerInput = z.infer<typeof staffTimeEntryStartTimerSchema>\nexport type StaffTimeEntryBulkSaveInput = z.infer<typeof staffTimeEntryBulkSaveSchema>\nexport type StaffTimeEntrySegmentCreateInput = z.infer<typeof staffTimeEntrySegmentCreateSchema>\nexport type StaffTimeEntrySegmentUpdateInput = z.infer<typeof staffTimeEntrySegmentUpdateSchema>\nexport type StaffTimeProjectCreateInput = z.infer<typeof staffTimeProjectCreateSchema>\nexport type StaffTimeProjectUpdateInput = z.infer<typeof staffTimeProjectUpdateSchema>\nexport type StaffTimeProjectMemberAssignInput = z.infer<typeof staffTimeProjectMemberAssignSchema>\nexport type StaffTimeProjectMemberUpdateInput = z.infer<typeof staffTimeProjectMemberUpdateSchema>\nexport type StaffMyProjectVisibilityUpdateInput = z.infer<typeof staffMyProjectVisibilityUpdateSchema>\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import { z } from 'zod'\nimport { PROJECT_COLOR_KEYS } from '../lib/timesheets-ui/colors'\nimport { hasTimeEntrySource, timeEntrySourceIds } from '../lib/time-tracking/timeEntrySources'\nimport { hasReportGrouping, reportGroupingIds } from '../lib/timesheets-reports/reportGroupings'\nimport {\n buildTimeTrackingSettingsSchema,\n timeTrackingRoundingDirectionSchema,\n timeTrackingRoundingUnitMinutesSchema,\n} from '../lib/time-tracking/settingKeys'\n\nconst projectColorSchema = z\n .string()\n .refine(\n (value) => (PROJECT_COLOR_KEYS as readonly string[]).includes(value),\n { message: 'Invalid project color key.' },\n )\n\nconst tagsSchema = z.array(z.string().min(1)).optional().default([])\n\nexport const optimisticUpdatedAtSchema = z.string().refine(\n (value) => !Number.isNaN(new Date(value).getTime()),\n { message: 'Invalid datetime' },\n)\n\nconst scopedCreateFields = {\n tenantId: z.string().uuid(),\n organizationId: z.string().uuid(),\n}\n\nconst scopedUpdateFields = {\n id: z.string().uuid(),\n}\n\nexport const staffTeamCreateSchema = z.object({\n ...scopedCreateFields,\n name: z.string().min(1),\n description: z.string().optional().nullable(),\n isActive: z.boolean().optional(),\n})\n\nexport const staffTeamUpdateSchema = z.object({\n ...scopedUpdateFields,\n name: z.string().min(1).optional(),\n description: z.string().optional().nullable(),\n isActive: z.boolean().optional(),\n})\n\nexport const staffTeamRoleCreateSchema = z.object({\n ...scopedCreateFields,\n teamId: z.string().uuid().optional().nullable(),\n name: z.string().min(1),\n description: z.string().optional().nullable(),\n appearanceIcon: z.string().trim().max(100).optional().nullable(),\n appearanceColor: z\n .string()\n .trim()\n .regex(/^#([0-9a-fA-F]{6})$/)\n .optional()\n .nullable(),\n})\n\nexport const staffTeamRoleUpdateSchema = z.object({\n ...scopedUpdateFields,\n teamId: z.string().uuid().optional().nullable(),\n name: z.string().min(1).optional(),\n description: z.string().optional().nullable(),\n appearanceIcon: z.string().trim().max(100).optional().nullable(),\n appearanceColor: z\n .string()\n .trim()\n .regex(/^#([0-9a-fA-F]{6})$/)\n .optional()\n .nullable(),\n})\n\nexport const staffTeamMemberCreateSchema = z.object({\n ...scopedCreateFields,\n teamId: z.string().uuid().optional().nullable(),\n displayName: z.string().min(1),\n description: z.string().optional().nullable(),\n userId: z.string().uuid().optional().nullable(),\n roleIds: z.array(z.string().uuid()).optional().default([]),\n tags: tagsSchema,\n availabilityRuleSetId: z.string().uuid().optional().nullable(),\n isActive: z.boolean().optional(),\n})\n\nexport const staffTeamMemberUpdateSchema = z.object({\n ...scopedUpdateFields,\n teamId: z.string().uuid().optional().nullable(),\n displayName: z.string().min(1).optional(),\n description: z.string().optional().nullable(),\n userId: z.string().uuid().optional().nullable(),\n roleIds: z.array(z.string().uuid()).optional(),\n tags: z.array(z.string().min(1)).optional(),\n availabilityRuleSetId: z.string().uuid().optional().nullable(),\n isActive: z.boolean().optional(),\n})\n\nexport const staffTeamMemberActivityCreateSchema = z.object({\n ...scopedCreateFields,\n entityId: z.string().uuid(),\n activityType: z.string().min(1).max(100),\n subject: z.string().max(200).optional(),\n body: z.string().max(8000).optional(),\n occurredAt: z.coerce.date().optional(),\n authorUserId: z.string().uuid().optional(),\n appearanceIcon: z.string().trim().max(100).optional().nullable(),\n appearanceColor: z\n .string()\n .trim()\n .regex(/^#([0-9a-fA-F]{6})$/)\n .optional()\n .nullable(),\n})\n\nexport const staffTeamMemberActivityUpdateSchema = z\n .object({\n id: z.string().uuid(),\n })\n .merge(staffTeamMemberActivityCreateSchema.partial())\n\nexport const staffTeamMemberJobHistoryCreateSchema = z.object({\n ...scopedCreateFields,\n entityId: z.string().uuid(),\n name: z.string().min(1).max(200),\n companyName: z.string().max(200).optional().nullable(),\n description: z.string().max(2000).optional().nullable(),\n startDate: z.coerce.date(),\n endDate: z.coerce.date().optional().nullable(),\n})\n\nexport const staffTeamMemberJobHistoryUpdateSchema = z\n .object({\n id: z.string().uuid(),\n updatedAt: optimisticUpdatedAtSchema.optional(),\n })\n .merge(staffTeamMemberJobHistoryCreateSchema.partial())\n\nexport const staffTeamMemberCommentCreateSchema = z.object({\n ...scopedCreateFields,\n entityId: z.string().uuid(),\n body: z.string().min(1).max(8000),\n authorUserId: z.string().uuid().optional(),\n appearanceIcon: z.string().trim().max(100).optional().nullable(),\n appearanceColor: z\n .string()\n .trim()\n .regex(/^#([0-9a-fA-F]{6})$/)\n .optional()\n .nullable(),\n})\n\nexport const staffTeamMemberCommentUpdateSchema = z\n .object({\n id: z.string().uuid(),\n })\n .merge(staffTeamMemberCommentCreateSchema.partial())\n\nexport const staffTeamMemberAddressCreateSchema = z.object({\n ...scopedCreateFields,\n entityId: z.string().uuid(),\n name: z.string().max(150).optional(),\n purpose: z.string().max(150).optional(),\n companyName: z.string().max(200).optional(),\n addressLine1: z.string().min(1).max(300),\n addressLine2: z.string().max(300).optional(),\n buildingNumber: z.string().max(50).optional(),\n flatNumber: z.string().max(50).optional(),\n city: z.string().max(150).optional(),\n region: z.string().max(150).optional(),\n postalCode: z.string().max(30).optional(),\n country: z.string().max(150).optional(),\n latitude: z.coerce.number().optional(),\n longitude: z.coerce.number().optional(),\n isPrimary: z.boolean().optional(),\n})\n\nexport const staffTeamMemberAddressUpdateSchema = z\n .object({\n id: z.string().uuid(),\n })\n .merge(staffTeamMemberAddressCreateSchema.partial())\n\nexport const staffTeamMemberTagAssignmentSchema = z.object({\n ...scopedCreateFields,\n memberId: z.string().uuid(),\n tag: z.string().min(1),\n})\n\nconst staffLeaveRequestStatusSchema = z.enum(['pending', 'approved', 'rejected'])\n\nconst validateStaffLeaveRequestDateRange = (\n value: { startDate?: Date; endDate?: Date },\n ctx: z.RefinementCtx,\n) => {\n if (!value.startDate || !value.endDate) return\n if (value.endDate < value.startDate) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'End date must be after start date.',\n path: ['endDate'],\n })\n }\n}\n\nexport const staffLeaveRequestCreateSchema = z\n .object({\n ...scopedCreateFields,\n memberId: z.string().uuid(),\n timezone: z.string().min(1),\n startDate: z.coerce.date(),\n endDate: z.coerce.date(),\n unavailabilityReasonEntryId: z.string().uuid().optional().nullable(),\n unavailabilityReasonValue: z.string().trim().min(1).max(150).optional().nullable(),\n note: z.string().max(2000).optional().nullable(),\n submittedByUserId: z.string().uuid().optional().nullable(),\n })\n .superRefine(validateStaffLeaveRequestDateRange)\n\nexport const staffLeaveRequestUpdateSchema = z\n .object({\n ...scopedUpdateFields,\n timezone: z.string().min(1).optional(),\n memberId: z.string().uuid().optional(),\n startDate: z.coerce.date().optional(),\n endDate: z.coerce.date().optional(),\n unavailabilityReasonEntryId: z.string().uuid().optional().nullable(),\n unavailabilityReasonValue: z.string().trim().min(1).max(150).optional().nullable(),\n note: z.string().max(2000).optional().nullable(),\n })\n .superRefine(validateStaffLeaveRequestDateRange)\n\nexport const staffLeaveRequestDecisionSchema = z.object({\n id: z.string().uuid(),\n decisionComment: z.string().max(2000).optional().nullable(),\n decidedByUserId: z.string().uuid().optional().nullable(),\n})\n\nexport const staffTeamMemberSelfCreateSchema = z.object({\n ...scopedCreateFields,\n displayName: z.string().min(1),\n description: z.string().max(2000).optional().nullable(),\n})\n\nexport type StaffTeamCreateInput = z.infer<typeof staffTeamCreateSchema>\nexport type StaffTeamUpdateInput = z.infer<typeof staffTeamUpdateSchema>\nexport type StaffTeamRoleCreateInput = z.infer<typeof staffTeamRoleCreateSchema>\nexport type StaffTeamRoleUpdateInput = z.infer<typeof staffTeamRoleUpdateSchema>\nexport type StaffTeamMemberCreateInput = z.infer<typeof staffTeamMemberCreateSchema>\nexport type StaffTeamMemberUpdateInput = z.infer<typeof staffTeamMemberUpdateSchema>\nexport type StaffTeamMemberTagAssignmentInput = z.infer<typeof staffTeamMemberTagAssignmentSchema>\nexport type StaffTeamMemberActivityCreateInput = z.infer<typeof staffTeamMemberActivityCreateSchema>\nexport type StaffTeamMemberActivityUpdateInput = z.infer<typeof staffTeamMemberActivityUpdateSchema>\nexport type StaffTeamMemberJobHistoryCreateInput = z.infer<typeof staffTeamMemberJobHistoryCreateSchema>\nexport type StaffTeamMemberJobHistoryUpdateInput = z.infer<typeof staffTeamMemberJobHistoryUpdateSchema>\nexport type StaffTeamMemberCommentCreateInput = z.infer<typeof staffTeamMemberCommentCreateSchema>\nexport type StaffTeamMemberCommentUpdateInput = z.infer<typeof staffTeamMemberCommentUpdateSchema>\nexport type StaffTeamMemberAddressCreateInput = z.infer<typeof staffTeamMemberAddressCreateSchema>\nexport type StaffTeamMemberAddressUpdateInput = z.infer<typeof staffTeamMemberAddressUpdateSchema>\nexport type StaffLeaveRequestStatus = z.infer<typeof staffLeaveRequestStatusSchema>\nexport type StaffLeaveRequestCreateInput = z.infer<typeof staffLeaveRequestCreateSchema>\nexport type StaffLeaveRequestUpdateInput = z.infer<typeof staffLeaveRequestUpdateSchema>\nexport type StaffLeaveRequestDecisionInput = z.infer<typeof staffLeaveRequestDecisionSchema>\nexport type StaffTeamMemberSelfCreateInput = z.infer<typeof staffTeamMemberSelfCreateSchema>\n\n// --- Timesheets validators (Phase 1) ---\n\n/**\n * EP-37: validated against the time-entry source registry rather than a literal\n * enum, so a contributed source is accepted on write the moment its module is\n * enabled. `superRefine` rather than `z.enum(...)` because the accepted set is\n * only known at call time.\n */\nconst timeEntrySourceSchema = z\n .string()\n .superRefine((value, ctx) => {\n if (hasTimeEntrySource(value)) return\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `[internal] unknown time entry source: ${value}`,\n params: { accepted: timeEntrySourceIds() },\n })\n })\nconst timeProjectStatusSchema = z.enum(['active', 'on_hold', 'completed'])\nconst timeProjectMemberStatusSchema = z.enum(['active', 'inactive'])\nconst timeEntrySegmentTypeSchema = z.enum(['work', 'break'])\nconst projectCodeSchema = z.string().min(1).max(50).regex(/^[a-zA-Z0-9-]+$/)\nconst moneyAmountSchema = z.number().min(0).max(99_999_999)\nconst timeProjectBudgetKindSchema = z.enum(['none', 'hours', 'amount'])\n\n// Upper-cased at the boundary so every writer stores canonical ISO 4217. The report\n// single-currency assertion compares codes case-sensitively, so `pln` and `PLN` would\n// otherwise read as two currencies and wrongly block a customer report.\nconst currencyCodeSchema = z.string().trim().length(3).transform((value) => value.toUpperCase())\n\n// numeric(14,4): ten integer digits, four decimals, never negative.\nconst numericAmountPattern = /^\\d{1,10}(?:\\.\\d{1,4})?$/\n\n/**\n * `numeric(14,4)` columns are surfaced by MikroORM as strings, and the project\n * form posts a typed decimal string, so the canonical representation for a stored\n * amount is a STRING end to end \u2014 a JSON number would push a 14-significant-digit\n * amount through a float on the way in. Plain numbers stay accepted for API\n * callers and are normalized to the same decimal string. (Entry-level money keeps\n * `moneyAmountSchema` above: `rate_override_amount` is consumed by the cost\n * calculator as a number, not written straight onto a numeric column.)\n */\nconst numericAmountSchema = z\n .union([z.number(), z.string()])\n .transform((value, ctx) => {\n const raw = typeof value === 'number' ? String(value) : value.trim().replace(',', '.')\n if (raw.length === 0) return null\n if (!numericAmountPattern.test(raw)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Expected a non-negative amount with at most 10 digits and 4 decimals.',\n })\n return z.NEVER\n }\n return raw\n })\n\nexport const staffTimeEntryCreateSchema = z.object({\n ...scopedCreateFields,\n staffMemberId: z.string().uuid(),\n date: z.coerce.date(),\n durationMinutes: z.number().int().min(0).max(1440),\n startedAt: z.coerce.date().optional().nullable(),\n endedAt: z.coerce.date().optional().nullable(),\n timeProjectId: z.string().uuid().optional().nullable(),\n customerId: z.string().uuid().optional().nullable(),\n dealId: z.string().uuid().optional().nullable(),\n orderId: z.string().uuid().optional().nullable(),\n notes: z.string().max(2000).optional().nullable(),\n source: timeEntrySourceSchema.optional().default('manual'),\n taskId: z.string().uuid().optional().nullable(),\n description: z.string().max(2000).optional().nullable(),\n isBillable: z.boolean().optional(),\n tagIds: z.array(z.string().uuid()).max(50).optional(),\n rateOverrideAmount: moneyAmountSchema.optional().nullable(),\n})\n\n/**\n * `startedAt` / `endedAt` mirror the create schema key for key: without them zod\n * strips the two clocks the entry form sends on every save, so correcting a start\n * or an end reported success and changed nothing. Nullable because clearing a\n * clock is a real edit, optional because omitting one must leave it alone \u2014 the\n * update command reads `undefined` as \"not part of this write\" and `null` as\n * \"clear it\". US-D3 keeps the three time fields consistent in the command, not\n * here: a request may legitimately carry all three and let the clocks win.\n */\nexport const staffTimeEntryUpdateSchema = z.object({\n ...scopedUpdateFields,\n date: z.coerce.date().optional(),\n durationMinutes: z.number().int().min(0).max(1440).optional(),\n startedAt: z.coerce.date().optional().nullable(),\n endedAt: z.coerce.date().optional().nullable(),\n timeProjectId: z.string().uuid().optional().nullable(),\n customerId: z.string().uuid().optional().nullable(),\n dealId: z.string().uuid().optional().nullable(),\n orderId: z.string().uuid().optional().nullable(),\n notes: z.string().max(2000).optional().nullable(),\n taskId: z.string().uuid().optional().nullable(),\n description: z.string().max(2000).optional().nullable(),\n isBillable: z.boolean().optional(),\n tagIds: z.array(z.string().uuid()).max(50).optional(),\n rateOverrideAmount: moneyAmountSchema.optional().nullable(),\n})\n\n/**\n * `taskId` is what makes starting a timer from a board card or the task drawer a\n * single write. Without it the surface has to start a project-level timer and\n * then PATCH the task onto it, and a failure between the two leaves a running\n * timer filed against the wrong thing.\n */\nexport const staffTimeEntryStartTimerSchema = z.object({\n ...scopedCreateFields,\n staffMemberId: z.string().uuid(),\n date: z.coerce.date(),\n timeProjectId: z.string().uuid().optional().nullable(),\n taskId: z.string().uuid().optional().nullable(),\n notes: z.string().max(2000).optional().nullable(),\n})\n\nexport const staffTimeEntryBulkItemSchema = z.object({\n id: z.string().uuid().optional().nullable(),\n date: z.coerce.date(),\n // Optional only because a task carries its project: a row naming a `taskId`\n // inherits the project from it, exactly as the single-entry path does. The\n // route refuses a row that names neither with `staff.timesheets.errors.projectRequired`,\n // so every stored row still lands on a project \u2014 the (project, date) cell the\n // lock gate addresses is never blank.\n timeProjectId: z.string().uuid().optional().nullable(),\n durationMinutes: z.number().int().min(0).max(1440),\n notes: z.string().max(2000).optional().nullable(),\n taskId: z.string().uuid().optional().nullable(),\n description: z.string().max(2000).optional().nullable(),\n isBillable: z.boolean().optional(),\n // Accepted by the schema and REFUSED by the route with 422: assigning tags\n // means dispatching the tag commands, which fork their own EntityManager and\n // cannot participate in this route's per-row transaction. Kept in the schema\n // so the refusal is explicit \u2014 dropping the key would let zod strip it and\n // restore the silent no-op.\n tagIds: z.array(z.string().uuid()).max(50).optional(),\n rateOverrideAmount: moneyAmountSchema.optional().nullable(),\n})\n\nexport const staffTimeEntryBulkSaveSchema = z.object({\n entries: z.array(staffTimeEntryBulkItemSchema).min(1).max(200),\n})\n\nexport const staffTimeEntrySegmentCreateSchema = z.object({\n ...scopedCreateFields,\n timeEntryId: z.string().uuid(),\n startedAt: z.coerce.date(),\n endedAt: z.coerce.date().optional().nullable(),\n segmentType: timeEntrySegmentTypeSchema.optional().default('work'),\n})\n\nexport const staffTimeEntrySegmentUpdateSchema = z.object({\n ...scopedUpdateFields,\n startedAt: z.coerce.date().optional(),\n endedAt: z.coerce.date().optional().nullable(),\n segmentType: timeEntrySegmentTypeSchema.optional(),\n})\n\nexport const staffTimeProjectCreateSchema = z.object({\n ...scopedCreateFields,\n name: z.string().min(1).max(255),\n // D-9 / US-B1: time is organised per customer, so a new project always names one.\n // Rows created before this change keep their null customer and stay editable\n // (see the update schema below), which is why only create is constrained.\n customerId: z.string().uuid(),\n customerSnapshot: z.record(z.string(), z.unknown()).optional().nullable(),\n code: projectCodeSchema,\n description: z.string().max(2000).optional().nullable(),\n projectType: z.string().max(100).optional().nullable(),\n color: projectColorSchema.optional().nullable(),\n status: timeProjectStatusSchema.optional().default('active'),\n ownerUserId: z.string().uuid().optional().nullable(),\n costCenter: z.string().max(100).optional().nullable(),\n startDate: z.coerce.date().optional().nullable(),\n hourlyRate: numericAmountSchema.optional().nullable(),\n // D-3: the currency may be chosen once, at creation. Every later change goes\n // through `POST .../change-currency`, which carries the non-conversion\n // acknowledgement and refuses while entries sit frozen in a closed report.\n currencyCode: currencyCodeSchema.optional().nullable(),\n billableByDefault: z.boolean().optional(),\n budgetKind: timeProjectBudgetKindSchema.optional().default('none'),\n budgetValue: numericAmountSchema.optional().nullable(),\n budgetWarnAtPercent: z.number().int().min(1).max(100).optional(),\n})\n\n/**\n * Deliberately has NO `currencyCode`: D-3 routes every post-creation currency\n * change through the dedicated change-currency action, so a plain PUT that\n * carries the key has it stripped here rather than relabelling the project\n * behind the acknowledgement and the locked-entry check.\n */\nexport const staffTimeProjectUpdateSchema = z.object({\n ...scopedUpdateFields,\n name: z.string().min(1).max(255).optional(),\n customerId: z.string().uuid().optional().nullable(),\n customerSnapshot: z.record(z.string(), z.unknown()).optional().nullable(),\n code: projectCodeSchema.optional(),\n description: z.string().max(2000).optional().nullable(),\n projectType: z.string().max(100).optional().nullable(),\n color: projectColorSchema.optional().nullable(),\n status: timeProjectStatusSchema.optional(),\n ownerUserId: z.string().uuid().optional().nullable(),\n costCenter: z.string().max(100).optional().nullable(),\n startDate: z.coerce.date().optional().nullable(),\n hourlyRate: numericAmountSchema.optional().nullable(),\n billableByDefault: z.boolean().optional(),\n budgetKind: timeProjectBudgetKindSchema.optional(),\n budgetValue: numericAmountSchema.optional().nullable(),\n budgetWarnAtPercent: z.number().int().min(1).max(100).optional(),\n})\n\nexport const staffTimeProjectMemberAssignSchema = z.object({\n ...scopedCreateFields,\n timeProjectId: z.string().uuid(),\n staffMemberId: z.string().uuid(),\n role: z.string().max(100).optional().nullable(),\n status: timeProjectMemberStatusSchema.optional().default('active'),\n assignedStartDate: z.coerce.date(),\n assignedEndDate: z.coerce.date().optional().nullable(),\n})\n\nexport const staffTimeProjectMemberUpdateSchema = z.object({\n ...scopedUpdateFields,\n role: z.string().max(100).optional().nullable(),\n status: timeProjectMemberStatusSchema.optional(),\n assignedEndDate: z.coerce.date().optional().nullable(),\n})\n\nexport const staffMyProjectVisibilityUpdateSchema = z.object({\n showInGrid: z.boolean(),\n})\n\nexport type StaffTimeEntryCreateInput = z.infer<typeof staffTimeEntryCreateSchema>\nexport type StaffTimeEntryUpdateInput = z.infer<typeof staffTimeEntryUpdateSchema>\nexport type StaffTimeEntryStartTimerInput = z.infer<typeof staffTimeEntryStartTimerSchema>\nexport type StaffTimeEntryBulkSaveInput = z.infer<typeof staffTimeEntryBulkSaveSchema>\nexport type StaffTimeEntrySegmentCreateInput = z.infer<typeof staffTimeEntrySegmentCreateSchema>\nexport type StaffTimeEntrySegmentUpdateInput = z.infer<typeof staffTimeEntrySegmentUpdateSchema>\nexport type StaffTimeProjectCreateInput = z.infer<typeof staffTimeProjectCreateSchema>\nexport type StaffTimeProjectUpdateInput = z.infer<typeof staffTimeProjectUpdateSchema>\nexport type StaffTimeProjectMemberAssignInput = z.infer<typeof staffTimeProjectMemberAssignSchema>\nexport type StaffTimeProjectMemberUpdateInput = z.infer<typeof staffTimeProjectMemberUpdateSchema>\nexport type StaffMyProjectVisibilityUpdateInput = z.infer<typeof staffMyProjectVisibilityUpdateSchema>\n\n// --- Time tracking consulting suite validators (tasks, tags, reports, settings) ---\n\nconst timeSlugSchema = z.string().trim().min(1).max(60).regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/)\nconst timeReportPeriodKindSchema = z.enum(['week', 'month', 'year', 'custom'])\n/** EP-36: validated against the report grouping registry, not a literal enum. */\nconst timeReportGroupingSchema = z\n .string()\n .superRefine((value, ctx) => {\n if (hasReportGrouping(value)) return\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `[internal] unknown report grouping: ${value}`,\n params: { accepted: reportGroupingIds() },\n })\n })\nconst timeReportNonbillableModeSchema = z.enum(['separate', 'exclude'])\nconst timeRoundingDirectionSchema = timeTrackingRoundingDirectionSchema\nconst timeRoundingUnitMinutesSchema = timeTrackingRoundingUnitMinutesSchema\nconst positionSchema = z.number().int().min(0).max(1_000_000)\n\nexport const staffTimeTaskStatusCreateSchema = z.object({\n ...scopedCreateFields,\n timeProjectId: z.string().uuid(),\n name: z.string().trim().min(1).max(100),\n slug: timeSlugSchema.optional(),\n color: projectColorSchema.optional().nullable(),\n position: positionSchema.optional(),\n isDefault: z.boolean().optional(),\n isDone: z.boolean().optional(),\n})\n\nexport const staffTimeTaskStatusUpdateSchema = z.object({\n ...scopedUpdateFields,\n name: z.string().trim().min(1).max(100).optional(),\n color: projectColorSchema.optional().nullable(),\n position: positionSchema.optional(),\n isDefault: z.boolean().optional(),\n isDone: z.boolean().optional(),\n})\n\nexport const staffTimeTaskStatusReorderSchema = z.object({\n statuses: z\n .array(\n z.object({\n id: z.string().uuid(),\n position: positionSchema,\n }),\n )\n .min(1)\n .max(100),\n})\n\nexport const staffTimeTaskCreateSchema = z.object({\n ...scopedCreateFields,\n timeProjectId: z.string().uuid(),\n parentTaskId: z.string().uuid().optional().nullable(),\n taskStatusId: z.string().uuid().optional().nullable(),\n title: z.string().trim().min(1).max(255),\n description: z.string().max(8000).optional().nullable(),\n assigneeStaffMemberId: z.string().uuid().optional().nullable(),\n position: positionSchema.optional(),\n tagIds: z.array(z.string().uuid()).max(50).optional(),\n})\n\nexport const staffTimeTaskUpdateSchema = z.object({\n ...scopedUpdateFields,\n parentTaskId: z.string().uuid().optional().nullable(),\n taskStatusId: z.string().uuid().optional(),\n title: z.string().trim().min(1).max(255).optional(),\n description: z.string().max(8000).optional().nullable(),\n assigneeStaffMemberId: z.string().uuid().optional().nullable(),\n position: positionSchema.optional(),\n tagIds: z.array(z.string().uuid()).max(50).optional(),\n})\n\nexport const staffTimeTaskStatusChangeSchema = z.object({\n taskStatusId: z.string().uuid(),\n position: positionSchema.optional(),\n})\n\nexport const staffTimeTaskCommentCreateSchema = z.object({\n ...scopedCreateFields,\n taskId: z.string().uuid(),\n body: z.string().trim().min(1).max(5000),\n authorUserId: z.string().uuid().optional().nullable(),\n})\n\nexport const staffTimeTaskCommentUpdateSchema = z.object({\n ...scopedUpdateFields,\n body: z.string().trim().min(1).max(5000),\n})\n\nexport const staffTimeTagCreateSchema = z.object({\n ...scopedCreateFields,\n slug: timeSlugSchema,\n label: z.string().trim().min(1).max(100),\n color: projectColorSchema.optional().nullable(),\n})\n\nexport const staffTimeTaskTagAssignmentSchema = z.object({\n ...scopedCreateFields,\n taskId: z.string().uuid(),\n tagIds: z.array(z.string().uuid()).max(50),\n})\n\nexport const staffTimeEntryTagAssignmentSchema = z.object({\n ...scopedCreateFields,\n timeEntryId: z.string().uuid(),\n tagIds: z.array(z.string().uuid()).max(50),\n})\n\nconst validateStaffTimeReportPeriod = (\n value: { periodFrom?: Date; periodTo?: Date },\n ctx: z.RefinementCtx,\n) => {\n if (!value.periodFrom || !value.periodTo) return\n if (value.periodTo < value.periodFrom) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Period end must be after period start.',\n path: ['periodTo'],\n })\n }\n}\n\nexport const staffTimeReportCreateSchema = z\n .object({\n ...scopedCreateFields,\n customerId: z.string().uuid(),\n title: z.string().trim().min(1).max(255),\n periodKind: timeReportPeriodKindSchema,\n periodFrom: z.coerce.date(),\n periodTo: z.coerce.date(),\n grouping: timeReportGroupingSchema.optional().default('project_task'),\n nonbillableMode: timeReportNonbillableModeSchema.optional().default('separate'),\n includeAlreadyReported: z.boolean().optional().default(false),\n showRates: z.boolean().optional().default(true),\n timeProjectIds: z.array(z.string().uuid()).min(1).max(100),\n })\n .superRefine(validateStaffTimeReportPeriod)\n\nexport const staffTimeReportUpdateSchema = z\n .object({\n ...scopedUpdateFields,\n customerId: z.string().uuid().optional(),\n title: z.string().trim().min(1).max(255).optional(),\n periodKind: timeReportPeriodKindSchema.optional(),\n periodFrom: z.coerce.date().optional(),\n periodTo: z.coerce.date().optional(),\n grouping: timeReportGroupingSchema.optional(),\n nonbillableMode: timeReportNonbillableModeSchema.optional(),\n includeAlreadyReported: z.boolean().optional(),\n showRates: z.boolean().optional(),\n timeProjectIds: z.array(z.string().uuid()).min(1).max(100).optional(),\n })\n .superRefine(validateStaffTimeReportPeriod)\n\nexport const staffTimeReportPreviewSchema = z\n .object({\n customerId: z.string().uuid().optional().nullable(),\n periodKind: timeReportPeriodKindSchema.optional().default('custom'),\n periodFrom: z.coerce.date(),\n periodTo: z.coerce.date(),\n grouping: timeReportGroupingSchema.optional().default('project_task'),\n nonbillableMode: timeReportNonbillableModeSchema.optional().default('separate'),\n includeAlreadyReported: z.boolean().optional().default(false),\n showRates: z.boolean().optional().default(true),\n timeProjectIds: z.array(z.string().uuid()).min(1).max(100),\n })\n .superRefine(validateStaffTimeReportPeriod)\n\nexport const staffTimeReportCloseSchema = z.object({\n id: z.string().uuid(),\n})\n\nexport const staffTimeReportUnlockSchema = z.object({\n id: z.string().uuid(),\n reason: z.string().trim().min(1).max(2000),\n})\n\nexport const staffTimeProjectChangeCurrencySchema = z.object({\n currencyCode: currencyCodeSchema,\n acknowledged: z.literal(true),\n})\n\n/**\n * EP-42 \u2014 built from the setting-key registry rather than a literal, so a module can\n * contribute a key without patching this file. With no contribution the shape is the\n * eight built-in keys in their five groups, exactly as it was.\n *\n * This constant is evaluated once at module load. A key registered later still\n * validates on the wire because the settings route parses with\n * `buildTimeTrackingSettingsSchema()` per request and publishes it through an\n * OpenAPI getter.\n */\nexport const staffTimeTrackingSettingsSchema = buildTimeTrackingSettingsSchema()\n\nexport type StaffTimeReportPeriodKind = z.infer<typeof timeReportPeriodKindSchema>\nexport type StaffTimeReportGrouping = z.infer<typeof timeReportGroupingSchema>\nexport type StaffTimeReportNonbillableMode = z.infer<typeof timeReportNonbillableModeSchema>\nexport type StaffTimeRoundingDirection = z.infer<typeof timeRoundingDirectionSchema>\nexport type StaffTimeRoundingUnitMinutes = z.infer<typeof timeRoundingUnitMinutesSchema>\nexport type StaffTimeTaskStatusCreateInput = z.infer<typeof staffTimeTaskStatusCreateSchema>\nexport type StaffTimeTaskStatusUpdateInput = z.infer<typeof staffTimeTaskStatusUpdateSchema>\nexport type StaffTimeTaskStatusReorderInput = z.infer<typeof staffTimeTaskStatusReorderSchema>\nexport type StaffTimeTaskCreateInput = z.infer<typeof staffTimeTaskCreateSchema>\nexport type StaffTimeTaskUpdateInput = z.infer<typeof staffTimeTaskUpdateSchema>\nexport type StaffTimeTaskStatusChangeInput = z.infer<typeof staffTimeTaskStatusChangeSchema>\nexport type StaffTimeTaskCommentCreateInput = z.infer<typeof staffTimeTaskCommentCreateSchema>\nexport type StaffTimeTaskCommentUpdateInput = z.infer<typeof staffTimeTaskCommentUpdateSchema>\nexport type StaffTimeTagCreateInput = z.infer<typeof staffTimeTagCreateSchema>\nexport type StaffTimeTaskTagAssignmentInput = z.infer<typeof staffTimeTaskTagAssignmentSchema>\nexport type StaffTimeEntryTagAssignmentInput = z.infer<typeof staffTimeEntryTagAssignmentSchema>\nexport type StaffTimeReportCreateInput = z.infer<typeof staffTimeReportCreateSchema>\nexport type StaffTimeReportUpdateInput = z.infer<typeof staffTimeReportUpdateSchema>\nexport type StaffTimeReportPreviewInput = z.infer<typeof staffTimeReportPreviewSchema>\nexport type StaffTimeReportCloseInput = z.infer<typeof staffTimeReportCloseSchema>\nexport type StaffTimeReportUnlockInput = z.infer<typeof staffTimeReportUnlockSchema>\nexport type StaffTimeProjectChangeCurrencyInput = z.infer<typeof staffTimeProjectChangeCurrencySchema>\nexport type StaffTimeTrackingSettingsInput = z.infer<typeof staffTimeTrackingSettingsSchema>\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/modules/staff/di.js
CHANGED
|
@@ -2,10 +2,51 @@ import { asValue } from "awilix";
|
|
|
2
2
|
import {
|
|
3
3
|
resolveAvailabilityWriteAccess
|
|
4
4
|
} from "./lib/availabilityAccess.js";
|
|
5
|
+
import {
|
|
6
|
+
resolveProjectAccess
|
|
7
|
+
} from "./lib/time-tracking/access.js";
|
|
8
|
+
import {
|
|
9
|
+
resolveTimeRoundingStrategy,
|
|
10
|
+
roundMinutes
|
|
11
|
+
} from "./lib/time-tracking/rounding.js";
|
|
12
|
+
import {
|
|
13
|
+
resolveTimeRate
|
|
14
|
+
} from "./lib/time-tracking/cost.js";
|
|
15
|
+
import {
|
|
16
|
+
resolveBillability
|
|
17
|
+
} from "./lib/time-tracking/billability.js";
|
|
18
|
+
import {
|
|
19
|
+
resolveTimesheetCapacity
|
|
20
|
+
} from "./lib/time-tracking/capacity.js";
|
|
21
|
+
import {
|
|
22
|
+
evaluateOverlapPolicies
|
|
23
|
+
} from "./lib/time-tracking/overlap.js";
|
|
24
|
+
import {
|
|
25
|
+
deriveProjectCode
|
|
26
|
+
} from "./lib/time-tracking/projectCode.js";
|
|
5
27
|
function register(container) {
|
|
6
28
|
const resolver = { resolveAvailabilityWriteAccess };
|
|
29
|
+
const timeTrackingResolver = { resolveProjectAccess };
|
|
30
|
+
const timeRoundingResolver = {
|
|
31
|
+
resolveStrategy: resolveTimeRoundingStrategy,
|
|
32
|
+
roundMinutes
|
|
33
|
+
};
|
|
34
|
+
const timeRateResolver = { resolveRate: resolveTimeRate };
|
|
35
|
+
const timeBillabilityResolver = { resolveBillability };
|
|
36
|
+
const timeCapacityResolver = { resolveCapacity: resolveTimesheetCapacity };
|
|
37
|
+
const timeOverlapPolicyResolver = { evaluate: evaluateOverlapPolicies };
|
|
38
|
+
const timeProjectCodeResolver = {
|
|
39
|
+
generate: (name, taken, ctx) => deriveProjectCode(name, taken, ctx ?? void 0)
|
|
40
|
+
};
|
|
7
41
|
container.register({
|
|
8
|
-
availabilityAccessResolver: asValue(resolver)
|
|
42
|
+
availabilityAccessResolver: asValue(resolver),
|
|
43
|
+
timeTrackingAccessResolver: asValue(timeTrackingResolver),
|
|
44
|
+
timeRoundingResolver: asValue(timeRoundingResolver),
|
|
45
|
+
timeRateResolver: asValue(timeRateResolver),
|
|
46
|
+
timeBillabilityResolver: asValue(timeBillabilityResolver),
|
|
47
|
+
timeCapacityResolver: asValue(timeCapacityResolver),
|
|
48
|
+
timeOverlapPolicyResolver: asValue(timeOverlapPolicyResolver),
|
|
49
|
+
timeProjectCodeResolver: asValue(timeProjectCodeResolver)
|
|
9
50
|
});
|
|
10
51
|
}
|
|
11
52
|
export {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/modules/staff/di.ts"],
|
|
4
|
-
"sourcesContent": ["import { asValue } from 'awilix'\nimport type { AppContainer } from '@open-mercato/shared/lib/di/container'\nimport {\n resolveAvailabilityWriteAccess,\n type AvailabilityAccessContext,\n type AvailabilityWriteAccess,\n} from './lib/availabilityAccess'\n\nexport type AvailabilityAccessResolver = {\n resolveAvailabilityWriteAccess(\n ctx: AvailabilityAccessContext,\n ): Promise<AvailabilityWriteAccess>\n}\n\nexport function register(container: AppContainer) {\n const resolver: AvailabilityAccessResolver = { resolveAvailabilityWriteAccess }\n container.register({\n availabilityAccessResolver: asValue(resolver),\n })\n}\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,eAAe;AAExB;AAAA,EACE;AAAA,OAGK;
|
|
4
|
+
"sourcesContent": ["import { asValue } from 'awilix'\nimport type { AppContainer } from '@open-mercato/shared/lib/di/container'\nimport {\n resolveAvailabilityWriteAccess,\n type AvailabilityAccessContext,\n type AvailabilityWriteAccess,\n} from './lib/availabilityAccess'\nimport {\n resolveProjectAccess,\n type ProjectAccess,\n type ProjectAccessContext,\n} from './lib/time-tracking/access'\nimport {\n resolveTimeRoundingStrategy,\n roundMinutes,\n type RoundingSettings,\n type TimeRoundingStrategy,\n} from './lib/time-tracking/rounding'\nimport {\n resolveTimeRate,\n type TimeRateContext,\n} from './lib/time-tracking/cost'\nimport {\n resolveBillability,\n type BillabilityContext,\n} from './lib/time-tracking/billability'\nimport {\n resolveTimesheetCapacity,\n type CapacityContext,\n type CapacityDateRange,\n type CapacityResult,\n} from './lib/time-tracking/capacity'\nimport {\n evaluateOverlapPolicies,\n type Overlap,\n type OverlapDecision,\n type OverlapPolicyContext,\n} from './lib/time-tracking/overlap'\nimport {\n deriveProjectCode,\n type ProjectCodeContext,\n} from './lib/time-tracking/projectCode'\nimport type { ScopedResolverContext } from './lib/time-tracking/registries/scope'\n\nexport type AvailabilityAccessResolver = {\n resolveAvailabilityWriteAccess(\n ctx: AvailabilityAccessContext,\n ): Promise<AvailabilityWriteAccess>\n}\n\nexport type TimeTrackingAccessResolver = {\n resolveProjectAccess(ctx: ProjectAccessContext): Promise<ProjectAccess>\n}\n\n/**\n * EP-32\u2026EP-41 keep their registries in plain module scope so the browser bundle\n * can reach them (four of the strategies back client previews that cannot\n * resolve DI). These DI keys are the SERVER entry point to the same registries:\n * they exist so an app can replace a resolver wholesale through `entry.overrides`\n * DI without patching the module, and so server code follows the \"never `new` a\n * resolver\" rule. Resolving one and calling the module function are equivalent.\n */\nexport type TimeRoundingResolver = {\n resolveStrategy(ctx?: ScopedResolverContext | null): TimeRoundingStrategy\n roundMinutes(raw: number, settings: RoundingSettings, ctx?: ScopedResolverContext | null): number\n}\n\nexport type TimeRateResolverService = {\n resolveRate(ctx: TimeRateContext): number | null\n}\n\nexport type BillabilityResolverService = {\n resolveBillability(ctx: BillabilityContext): boolean\n}\n\nexport type TimeCapacityResolver = {\n resolveCapacity(\n staffMemberId: string | null,\n dateRange: CapacityDateRange,\n ctx: CapacityContext,\n ): CapacityResult\n}\n\nexport type OverlapPolicyResolver = {\n evaluate(spans: readonly Overlap[], ctx: OverlapPolicyContext): OverlapDecision\n}\n\nexport type ProjectCodeResolver = {\n generate(name: string, taken: Set<string>, ctx?: ProjectCodeContext | null): string\n}\n\nexport function register(container: AppContainer) {\n const resolver: AvailabilityAccessResolver = { resolveAvailabilityWriteAccess }\n const timeTrackingResolver: TimeTrackingAccessResolver = { resolveProjectAccess }\n const timeRoundingResolver: TimeRoundingResolver = {\n resolveStrategy: resolveTimeRoundingStrategy,\n roundMinutes,\n }\n const timeRateResolver: TimeRateResolverService = { resolveRate: resolveTimeRate }\n const timeBillabilityResolver: BillabilityResolverService = { resolveBillability }\n const timeCapacityResolver: TimeCapacityResolver = { resolveCapacity: resolveTimesheetCapacity }\n const timeOverlapPolicyResolver: OverlapPolicyResolver = { evaluate: evaluateOverlapPolicies }\n const timeProjectCodeResolver: ProjectCodeResolver = {\n generate: (name, taken, ctx) => deriveProjectCode(name, taken, ctx ?? undefined),\n }\n container.register({\n availabilityAccessResolver: asValue(resolver),\n timeTrackingAccessResolver: asValue(timeTrackingResolver),\n timeRoundingResolver: asValue(timeRoundingResolver),\n timeRateResolver: asValue(timeRateResolver),\n timeBillabilityResolver: asValue(timeBillabilityResolver),\n timeCapacityResolver: asValue(timeCapacityResolver),\n timeOverlapPolicyResolver: asValue(timeOverlapPolicyResolver),\n timeProjectCodeResolver: asValue(timeProjectCodeResolver),\n })\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,eAAe;AAExB;AAAA,EACE;AAAA,OAGK;AACP;AAAA,EACE;AAAA,OAGK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAGK;AACP;AAAA,EACE;AAAA,OAEK;AACP;AAAA,EACE;AAAA,OAEK;AACP;AAAA,EACE;AAAA,OAIK;AACP;AAAA,EACE;AAAA,OAIK;AACP;AAAA,EACE;AAAA,OAEK;AAkDA,SAAS,SAAS,WAAyB;AAChD,QAAM,WAAuC,EAAE,+BAA+B;AAC9E,QAAM,uBAAmD,EAAE,qBAAqB;AAChF,QAAM,uBAA6C;AAAA,IACjD,iBAAiB;AAAA,IACjB;AAAA,EACF;AACA,QAAM,mBAA4C,EAAE,aAAa,gBAAgB;AACjF,QAAM,0BAAsD,EAAE,mBAAmB;AACjF,QAAM,uBAA6C,EAAE,iBAAiB,yBAAyB;AAC/F,QAAM,4BAAmD,EAAE,UAAU,wBAAwB;AAC7F,QAAM,0BAA+C;AAAA,IACnD,UAAU,CAAC,MAAM,OAAO,QAAQ,kBAAkB,MAAM,OAAO,OAAO,MAAS;AAAA,EACjF;AACA,YAAU,SAAS;AAAA,IACjB,4BAA4B,QAAQ,QAAQ;AAAA,IAC5C,4BAA4B,QAAQ,oBAAoB;AAAA,IACxD,sBAAsB,QAAQ,oBAAoB;AAAA,IAClD,kBAAkB,QAAQ,gBAAgB;AAAA,IAC1C,yBAAyB,QAAQ,uBAAuB;AAAA,IACxD,sBAAsB,QAAQ,oBAAoB;AAAA,IAClD,2BAA2B,QAAQ,yBAAyB;AAAA,IAC5D,yBAAyB,QAAQ,uBAAuB;AAAA,EAC1D,CAAC;AACH;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|