@open-mercato/core 0.10.1-develop.7717.1.2befe9c634 → 0.10.1-develop.7721.1.b5c4a00a68

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (384) hide show
  1. package/.turbo/turbo-build.log +2 -2
  2. package/dist/generated/entities/staff_support_routing_rule/index.js +21 -0
  3. package/dist/generated/entities/staff_support_routing_rule/index.js.map +7 -0
  4. package/dist/generated/entities/staff_support_ticket/index.js +37 -0
  5. package/dist/generated/entities/staff_support_ticket/index.js.map +7 -0
  6. package/dist/generated/entities/staff_time_project/index.js +2 -0
  7. package/dist/generated/entities/staff_time_project/index.js.map +2 -2
  8. package/dist/generated/entities/staff_time_project_member/index.js +2 -0
  9. package/dist/generated/entities/staff_time_project_member/index.js.map +2 -2
  10. package/dist/generated/entities/staff_time_task/index.js +4 -0
  11. package/dist/generated/entities/staff_time_task/index.js.map +2 -2
  12. package/dist/generated/entities/staff_time_task_comment/index.js +9 -1
  13. package/dist/generated/entities/staff_time_task_comment/index.js.map +2 -2
  14. package/dist/generated/entities.ids.generated.js +2 -0
  15. package/dist/generated/entities.ids.generated.js.map +2 -2
  16. package/dist/generated/entity-fields-registry.js +38 -0
  17. package/dist/generated/entity-fields-registry.js.map +2 -2
  18. package/dist/helpers/integration/auth.js +1 -0
  19. package/dist/helpers/integration/auth.js.map +2 -2
  20. package/dist/helpers/integration/communicationChannelsFixtures.js +20 -0
  21. package/dist/helpers/integration/communicationChannelsFixtures.js.map +2 -2
  22. package/dist/modules/catalog/api/bulk-delete/route.js +12 -2
  23. package/dist/modules/catalog/api/bulk-delete/route.js.map +2 -2
  24. package/dist/modules/communication_channels/api/post/test-seed/route.js +17 -3
  25. package/dist/modules/communication_channels/api/post/test-seed/route.js.map +2 -2
  26. package/dist/modules/communication_channels/lib/test-seed.js +38 -5
  27. package/dist/modules/communication_channels/lib/test-seed.js.map +2 -2
  28. package/dist/modules/messages/commands/messages.js +2 -3
  29. package/dist/modules/messages/commands/messages.js.map +2 -2
  30. package/dist/modules/portal/frontend/[orgSlug]/portal/dashboard/page.js +2 -2
  31. package/dist/modules/portal/frontend/[orgSlug]/portal/dashboard/page.js.map +2 -2
  32. package/dist/modules/staff/api/portal/support-tickets/[id]/attachments/route.js +299 -0
  33. package/dist/modules/staff/api/portal/support-tickets/[id]/attachments/route.js.map +7 -0
  34. package/dist/modules/staff/api/portal/support-tickets/[id]/messages/route.js +91 -0
  35. package/dist/modules/staff/api/portal/support-tickets/[id]/messages/route.js.map +7 -0
  36. package/dist/modules/staff/api/portal/support-tickets/[id]/route.js +146 -0
  37. package/dist/modules/staff/api/portal/support-tickets/[id]/route.js.map +7 -0
  38. package/dist/modules/staff/api/portal/support-tickets/options/route.js +60 -0
  39. package/dist/modules/staff/api/portal/support-tickets/options/route.js.map +7 -0
  40. package/dist/modules/staff/api/portal/support-tickets/route.js +220 -0
  41. package/dist/modules/staff/api/portal/support-tickets/route.js.map +7 -0
  42. package/dist/modules/staff/api/timesheets/settings/route.js +7 -1
  43. package/dist/modules/staff/api/timesheets/settings/route.js.map +2 -2
  44. package/dist/modules/staff/api/timesheets/support-routing-rules/fallback-project/route.js +122 -0
  45. package/dist/modules/staff/api/timesheets/support-routing-rules/fallback-project/route.js.map +7 -0
  46. package/dist/modules/staff/api/timesheets/support-routing-rules/preview/route.js +180 -0
  47. package/dist/modules/staff/api/timesheets/support-routing-rules/preview/route.js.map +7 -0
  48. package/dist/modules/staff/api/timesheets/support-routing-rules/route.js +147 -0
  49. package/dist/modules/staff/api/timesheets/support-routing-rules/route.js.map +7 -0
  50. package/dist/modules/staff/api/timesheets/support-tickets/options/route.js +133 -0
  51. package/dist/modules/staff/api/timesheets/support-tickets/options/route.js.map +7 -0
  52. package/dist/modules/staff/api/timesheets/tasks/[id]/claim/route.js +33 -0
  53. package/dist/modules/staff/api/timesheets/tasks/[id]/claim/route.js.map +7 -0
  54. package/dist/modules/staff/api/timesheets/tasks/[id]/comments/route.js +25 -7
  55. package/dist/modules/staff/api/timesheets/tasks/[id]/comments/route.js.map +2 -2
  56. package/dist/modules/staff/api/timesheets/tasks/[id]/release/route.js +32 -0
  57. package/dist/modules/staff/api/timesheets/tasks/[id]/release/route.js.map +7 -0
  58. package/dist/modules/staff/api/timesheets/tasks/route.js +94 -47
  59. package/dist/modules/staff/api/timesheets/tasks/route.js.map +2 -2
  60. package/dist/modules/staff/api/timesheets/time-projects/[id]/employees/route.js +3 -0
  61. package/dist/modules/staff/api/timesheets/time-projects/[id]/employees/route.js.map +2 -2
  62. package/dist/modules/staff/api/timesheets/time-projects/route.js +3 -0
  63. package/dist/modules/staff/api/timesheets/time-projects/route.js.map +2 -2
  64. package/dist/modules/staff/backend/staff/time-tracking/projects/[id]/edit/page.js +1 -0
  65. package/dist/modules/staff/backend/staff/time-tracking/projects/[id]/edit/page.js.map +2 -2
  66. package/dist/modules/staff/backend/staff/time-tracking/projects/[id]/page.js +54 -4
  67. package/dist/modules/staff/backend/staff/time-tracking/projects/[id]/page.js.map +2 -2
  68. package/dist/modules/staff/backend/staff/time-tracking/projects/projectFormConfig.js +21 -5
  69. package/dist/modules/staff/backend/staff/time-tracking/projects/projectFormConfig.js.map +2 -2
  70. package/dist/modules/staff/backend/staff/time-tracking/settings/page.js +319 -254
  71. package/dist/modules/staff/backend/staff/time-tracking/settings/page.js.map +2 -2
  72. package/dist/modules/staff/backend/staff/time-tracking/support/page.js +363 -0
  73. package/dist/modules/staff/backend/staff/time-tracking/support/page.js.map +7 -0
  74. package/dist/modules/staff/backend/staff/time-tracking/support/page.meta.js +18 -0
  75. package/dist/modules/staff/backend/staff/time-tracking/support/page.meta.js.map +7 -0
  76. package/dist/modules/staff/cli.js +27 -0
  77. package/dist/modules/staff/cli.js.map +2 -2
  78. package/dist/modules/staff/commands/index.js +3 -0
  79. package/dist/modules/staff/commands/index.js.map +2 -2
  80. package/dist/modules/staff/commands/shared.js +10 -1
  81. package/dist/modules/staff/commands/shared.js.map +2 -2
  82. package/dist/modules/staff/commands/support-routing-rules.js +505 -0
  83. package/dist/modules/staff/commands/support-routing-rules.js.map +7 -0
  84. package/dist/modules/staff/commands/support-tickets.js +513 -0
  85. package/dist/modules/staff/commands/support-tickets.js.map +7 -0
  86. package/dist/modules/staff/commands/timesheets-projects.js +72 -14
  87. package/dist/modules/staff/commands/timesheets-projects.js.map +2 -2
  88. package/dist/modules/staff/commands/timesheets-task-assignment.js +270 -0
  89. package/dist/modules/staff/commands/timesheets-task-assignment.js.map +7 -0
  90. package/dist/modules/staff/commands/timesheets-task-comments.js +58 -12
  91. package/dist/modules/staff/commands/timesheets-task-comments.js.map +2 -2
  92. package/dist/modules/staff/commands/timesheets-tasks.js +91 -9
  93. package/dist/modules/staff/commands/timesheets-tasks.js.map +3 -3
  94. package/dist/modules/staff/data/enrichers.js +141 -0
  95. package/dist/modules/staff/data/enrichers.js.map +2 -2
  96. package/dist/modules/staff/data/entities.js +143 -2
  97. package/dist/modules/staff/data/entities.js.map +2 -2
  98. package/dist/modules/staff/data/extensions.js +8 -0
  99. package/dist/modules/staff/data/extensions.js.map +2 -2
  100. package/dist/modules/staff/data/validators.js +34 -5
  101. package/dist/modules/staff/data/validators.js.map +2 -2
  102. package/dist/modules/staff/encryption.js +6 -0
  103. package/dist/modules/staff/encryption.js.map +2 -2
  104. package/dist/modules/staff/events.js +25 -0
  105. package/dist/modules/staff/events.js.map +2 -2
  106. package/dist/modules/staff/events.payloads.js +54 -0
  107. package/dist/modules/staff/events.payloads.js.map +2 -2
  108. package/dist/modules/staff/extension-points.js +1 -0
  109. package/dist/modules/staff/extension-points.js.map +2 -2
  110. package/dist/modules/staff/frontend/[orgSlug]/portal/support/[id]/page.js +468 -0
  111. package/dist/modules/staff/frontend/[orgSlug]/portal/support/[id]/page.js.map +7 -0
  112. package/dist/modules/staff/frontend/[orgSlug]/portal/support/[id]/page.meta.js +12 -0
  113. package/dist/modules/staff/frontend/[orgSlug]/portal/support/[id]/page.meta.js.map +7 -0
  114. package/dist/modules/staff/frontend/[orgSlug]/portal/support/new/page.js +316 -0
  115. package/dist/modules/staff/frontend/[orgSlug]/portal/support/new/page.js.map +7 -0
  116. package/dist/modules/staff/frontend/[orgSlug]/portal/support/new/page.meta.js +12 -0
  117. package/dist/modules/staff/frontend/[orgSlug]/portal/support/new/page.meta.js.map +7 -0
  118. package/dist/modules/staff/frontend/[orgSlug]/portal/support/page.js +190 -0
  119. package/dist/modules/staff/frontend/[orgSlug]/portal/support/page.js.map +7 -0
  120. package/dist/modules/staff/frontend/[orgSlug]/portal/support/page.meta.js +19 -0
  121. package/dist/modules/staff/frontend/[orgSlug]/portal/support/page.meta.js.map +7 -0
  122. package/dist/modules/staff/index.js +1 -1
  123. package/dist/modules/staff/index.js.map +2 -2
  124. package/dist/modules/staff/lib/crud.js +2 -0
  125. package/dist/modules/staff/lib/crud.js.map +2 -2
  126. package/dist/modules/staff/lib/support/attachments.js +36 -0
  127. package/dist/modules/staff/lib/support/attachments.js.map +7 -0
  128. package/dist/modules/staff/lib/support/dictionaries.js +87 -0
  129. package/dist/modules/staff/lib/support/dictionaries.js.map +7 -0
  130. package/dist/modules/staff/lib/support/notifications.js +111 -0
  131. package/dist/modules/staff/lib/support/notifications.js.map +7 -0
  132. package/dist/modules/staff/lib/support/portalAttachments.js +100 -0
  133. package/dist/modules/staff/lib/support/portalAttachments.js.map +7 -0
  134. package/dist/modules/staff/lib/support/portalBroadcast.js +117 -0
  135. package/dist/modules/staff/lib/support/portalBroadcast.js.map +7 -0
  136. package/dist/modules/staff/lib/support/portalRoute.js +99 -0
  137. package/dist/modules/staff/lib/support/portalRoute.js.map +7 -0
  138. package/dist/modules/staff/lib/support/portalStatus.js +12 -0
  139. package/dist/modules/staff/lib/support/portalStatus.js.map +7 -0
  140. package/dist/modules/staff/lib/support/portalTickets.js +148 -0
  141. package/dist/modules/staff/lib/support/portalTickets.js.map +7 -0
  142. package/dist/modules/staff/lib/support/routing.js +81 -0
  143. package/dist/modules/staff/lib/support/routing.js.map +7 -0
  144. package/dist/modules/staff/lib/support/routingRuleDraft.js +25 -0
  145. package/dist/modules/staff/lib/support/routingRuleDraft.js.map +7 -0
  146. package/dist/modules/staff/lib/support/seedDefaults.js +114 -0
  147. package/dist/modules/staff/lib/support/seedDefaults.js.map +7 -0
  148. package/dist/modules/staff/lib/support/supportActivity.js +26 -0
  149. package/dist/modules/staff/lib/support/supportActivity.js.map +7 -0
  150. package/dist/modules/staff/lib/support-ui/PortalSupportNotLinked.js +23 -0
  151. package/dist/modules/staff/lib/support-ui/PortalSupportNotLinked.js.map +7 -0
  152. package/dist/modules/staff/lib/support-ui/portalAttachmentValidation.js +112 -0
  153. package/dist/modules/staff/lib/support-ui/portalAttachmentValidation.js.map +7 -0
  154. package/dist/modules/staff/lib/support-ui/portalPendingUploads.js +45 -0
  155. package/dist/modules/staff/lib/support-ui/portalPendingUploads.js.map +7 -0
  156. package/dist/modules/staff/lib/support-ui/portalSupport.js +51 -0
  157. package/dist/modules/staff/lib/support-ui/portalSupport.js.map +7 -0
  158. package/dist/modules/staff/lib/time-tracking/access.js +3 -39
  159. package/dist/modules/staff/lib/time-tracking/access.js.map +2 -2
  160. package/dist/modules/staff/lib/time-tracking/listProjectAccess.js +54 -0
  161. package/dist/modules/staff/lib/time-tracking/listProjectAccess.js.map +7 -0
  162. package/dist/modules/staff/lib/time-tracking/portalRecipients.js +92 -2
  163. package/dist/modules/staff/lib/time-tracking/portalRecipients.js.map +2 -2
  164. package/dist/modules/staff/lib/time-tracking/projectAssignment.js +112 -0
  165. package/dist/modules/staff/lib/time-tracking/projectAssignment.js.map +7 -0
  166. package/dist/modules/staff/lib/time-tracking/settingKeys.js +14 -0
  167. package/dist/modules/staff/lib/time-tracking/settingKeys.js.map +2 -2
  168. package/dist/modules/staff/lib/time-tracking/settings.js +28 -1
  169. package/dist/modules/staff/lib/time-tracking/settings.js.map +2 -2
  170. package/dist/modules/staff/lib/time-tracking/taskAssignmentRoute.js +143 -0
  171. package/dist/modules/staff/lib/time-tracking/taskAssignmentRoute.js.map +7 -0
  172. package/dist/modules/staff/lib/time-tracking/workRecipients.js +92 -0
  173. package/dist/modules/staff/lib/time-tracking/workRecipients.js.map +7 -0
  174. package/dist/modules/staff/lib/time-tracking-ui/BoardFilterChips.js +32 -3
  175. package/dist/modules/staff/lib/time-tracking-ui/BoardFilterChips.js.map +2 -2
  176. package/dist/modules/staff/lib/time-tracking-ui/KanbanBoard.js +29 -0
  177. package/dist/modules/staff/lib/time-tracking-ui/KanbanBoard.js.map +2 -2
  178. package/dist/modules/staff/lib/time-tracking-ui/KanbanCard.js +4 -0
  179. package/dist/modules/staff/lib/time-tracking-ui/KanbanCard.js.map +2 -2
  180. package/dist/modules/staff/lib/time-tracking-ui/ProjectFormSections.js +141 -1
  181. package/dist/modules/staff/lib/time-tracking-ui/ProjectFormSections.js.map +2 -2
  182. package/dist/modules/staff/lib/time-tracking-ui/SupportAttachmentsSection.js +153 -0
  183. package/dist/modules/staff/lib/time-tracking-ui/SupportAttachmentsSection.js.map +7 -0
  184. package/dist/modules/staff/lib/time-tracking-ui/SupportRequestPanel.js +67 -0
  185. package/dist/modules/staff/lib/time-tracking-ui/SupportRequestPanel.js.map +7 -0
  186. package/dist/modules/staff/lib/time-tracking-ui/TaskBoardScreen.js +3 -1
  187. package/dist/modules/staff/lib/time-tracking-ui/TaskBoardScreen.js.map +2 -2
  188. package/dist/modules/staff/lib/time-tracking-ui/TaskCommentThread.js +80 -17
  189. package/dist/modules/staff/lib/time-tracking-ui/TaskCommentThread.js.map +2 -2
  190. package/dist/modules/staff/lib/time-tracking-ui/TaskDrawer.js +230 -41
  191. package/dist/modules/staff/lib/time-tracking-ui/TaskDrawer.js.map +2 -2
  192. package/dist/modules/staff/lib/time-tracking-ui/boardDirectory.js +21 -1
  193. package/dist/modules/staff/lib/time-tracking-ui/boardDirectory.js.map +2 -2
  194. package/dist/modules/staff/lib/time-tracking-ui/boardFilters.js +16 -4
  195. package/dist/modules/staff/lib/time-tracking-ui/boardFilters.js.map +2 -2
  196. package/dist/modules/staff/lib/time-tracking-ui/kanbanBoardData.js +3 -1
  197. package/dist/modules/staff/lib/time-tracking-ui/kanbanBoardData.js.map +2 -2
  198. package/dist/modules/staff/lib/time-tracking-ui/projectDefaultAssignee.js +68 -0
  199. package/dist/modules/staff/lib/time-tracking-ui/projectDefaultAssignee.js.map +7 -0
  200. package/dist/modules/staff/lib/time-tracking-ui/settingsTabs.js +7 -0
  201. package/dist/modules/staff/lib/time-tracking-ui/settingsTabs.js.map +7 -0
  202. package/dist/modules/staff/lib/time-tracking-ui/supportTicketData.js +50 -0
  203. package/dist/modules/staff/lib/time-tracking-ui/supportTicketData.js.map +7 -0
  204. package/dist/modules/staff/lib/time-tracking-ui/taskDrawerData.js +13 -1
  205. package/dist/modules/staff/lib/time-tracking-ui/taskDrawerData.js.map +2 -2
  206. package/dist/modules/staff/lib/time-tracking-ui/timeTrackingSettingsForm.js +36 -2
  207. package/dist/modules/staff/lib/time-tracking-ui/timeTrackingSettingsForm.js.map +2 -2
  208. package/dist/modules/staff/migrations/Migration20261009180543_staff.js +42 -0
  209. package/dist/modules/staff/migrations/Migration20261009180543_staff.js.map +7 -0
  210. package/dist/modules/staff/notifications.js +92 -0
  211. package/dist/modules/staff/notifications.js.map +2 -2
  212. package/dist/modules/staff/setup.js +6 -2
  213. package/dist/modules/staff/setup.js.map +2 -2
  214. package/dist/modules/staff/subscribers/support-portal-comment-created.js +26 -0
  215. package/dist/modules/staff/subscribers/support-portal-comment-created.js.map +7 -0
  216. package/dist/modules/staff/subscribers/support-portal-comment-deleted.js +26 -0
  217. package/dist/modules/staff/subscribers/support-portal-comment-deleted.js.map +7 -0
  218. package/dist/modules/staff/subscribers/support-portal-comment-updated.js +26 -0
  219. package/dist/modules/staff/subscribers/support-portal-comment-updated.js.map +7 -0
  220. package/dist/modules/staff/subscribers/support-portal-status-column-updated.js +24 -0
  221. package/dist/modules/staff/subscribers/support-portal-status-column-updated.js.map +7 -0
  222. package/dist/modules/staff/subscribers/support-portal-task-status-changed.js +25 -0
  223. package/dist/modules/staff/subscribers/support-portal-task-status-changed.js.map +7 -0
  224. package/dist/modules/staff/subscribers/support-portal-task-updated.js +25 -0
  225. package/dist/modules/staff/subscribers/support-portal-task-updated.js.map +7 -0
  226. package/dist/modules/staff/subscribers/support-ticket-created-notification.js +25 -0
  227. package/dist/modules/staff/subscribers/support-ticket-created-notification.js.map +7 -0
  228. package/dist/modules/staff/subscribers/support-ticket-customer-replied-notification.js +25 -0
  229. package/dist/modules/staff/subscribers/support-ticket-customer-replied-notification.js.map +7 -0
  230. package/dist/modules/staff/subscribers/support-ticket-unnotified-clear.js +26 -0
  231. package/dist/modules/staff/subscribers/support-ticket-unnotified-clear.js.map +7 -0
  232. package/dist/modules/staff/subscribers/time-task-assignee-notification.js +83 -0
  233. package/dist/modules/staff/subscribers/time-task-assignee-notification.js.map +7 -0
  234. package/dist/modules/staff/widgets/injection/portal-support-tickets/widget.client.js +112 -0
  235. package/dist/modules/staff/widgets/injection/portal-support-tickets/widget.client.js.map +7 -0
  236. package/dist/modules/staff/widgets/injection/portal-support-tickets/widget.js +17 -0
  237. package/dist/modules/staff/widgets/injection/portal-support-tickets/widget.js.map +7 -0
  238. package/dist/modules/staff/widgets/injection/time-tracking-settings-support/widget.client.js +870 -0
  239. package/dist/modules/staff/widgets/injection/time-tracking-settings-support/widget.client.js.map +7 -0
  240. package/dist/modules/staff/widgets/injection/time-tracking-settings-support/widget.js +17 -0
  241. package/dist/modules/staff/widgets/injection/time-tracking-settings-support/widget.js.map +7 -0
  242. package/dist/modules/staff/widgets/injection-table.js +16 -1
  243. package/dist/modules/staff/widgets/injection-table.js.map +2 -2
  244. package/dist/modules/wms/components/backend/WmsLocationDetailPage.js +4 -18
  245. package/dist/modules/wms/components/backend/WmsLocationDetailPage.js.map +2 -2
  246. package/dist/modules/wms/components/backend/WmsLotDetailPage.js +4 -18
  247. package/dist/modules/wms/components/backend/WmsLotDetailPage.js.map +2 -2
  248. package/dist/modules/wms/components/backend/WmsSkuDetailPage.js +4 -18
  249. package/dist/modules/wms/components/backend/WmsSkuDetailPage.js.map +2 -2
  250. package/dist/modules/wms/lib/inventoryCsvExport.js +19 -0
  251. package/dist/modules/wms/lib/inventoryCsvExport.js.map +7 -0
  252. package/generated/entities/staff_support_routing_rule/index.ts +9 -0
  253. package/generated/entities/staff_support_ticket/index.ts +17 -0
  254. package/generated/entities/staff_time_project/index.ts +1 -0
  255. package/generated/entities/staff_time_project_member/index.ts +1 -0
  256. package/generated/entities/staff_time_task/index.ts +2 -0
  257. package/generated/entities/staff_time_task_comment/index.ts +4 -0
  258. package/generated/entities.ids.generated.ts +2 -0
  259. package/generated/entity-fields-registry.ts +38 -0
  260. package/package.json +8 -8
  261. package/src/helpers/integration/auth.ts +1 -1
  262. package/src/helpers/integration/communicationChannelsFixtures.ts +60 -2
  263. package/src/modules/catalog/api/bulk-delete/route.ts +12 -2
  264. package/src/modules/communication_channels/api/post/test-seed/route.ts +29 -12
  265. package/src/modules/communication_channels/lib/test-seed.ts +49 -10
  266. package/src/modules/messages/commands/messages.ts +8 -10
  267. package/src/modules/portal/frontend/[orgSlug]/portal/dashboard/page.tsx +2 -2
  268. package/src/modules/staff/AGENTS.md +22 -6
  269. package/src/modules/staff/api/portal/support-tickets/[id]/attachments/route.ts +327 -0
  270. package/src/modules/staff/api/portal/support-tickets/[id]/messages/route.ts +94 -0
  271. package/src/modules/staff/api/portal/support-tickets/[id]/route.ts +160 -0
  272. package/src/modules/staff/api/portal/support-tickets/options/route.ts +60 -0
  273. package/src/modules/staff/api/portal/support-tickets/route.ts +253 -0
  274. package/src/modules/staff/api/timesheets/settings/route.ts +7 -1
  275. package/src/modules/staff/api/timesheets/support-routing-rules/fallback-project/route.ts +131 -0
  276. package/src/modules/staff/api/timesheets/support-routing-rules/preview/route.ts +248 -0
  277. package/src/modules/staff/api/timesheets/support-routing-rules/route.ts +150 -0
  278. package/src/modules/staff/api/timesheets/support-tickets/options/route.ts +181 -0
  279. package/src/modules/staff/api/timesheets/tasks/[id]/claim/route.ts +31 -0
  280. package/src/modules/staff/api/timesheets/tasks/[id]/comments/route.ts +25 -7
  281. package/src/modules/staff/api/timesheets/tasks/[id]/release/route.ts +30 -0
  282. package/src/modules/staff/api/timesheets/tasks/route.ts +119 -67
  283. package/src/modules/staff/api/timesheets/time-projects/[id]/employees/route.ts +3 -0
  284. package/src/modules/staff/api/timesheets/time-projects/route.ts +3 -0
  285. package/src/modules/staff/backend/staff/time-tracking/projects/[id]/edit/page.tsx +1 -0
  286. package/src/modules/staff/backend/staff/time-tracking/projects/[id]/page.tsx +67 -2
  287. package/src/modules/staff/backend/staff/time-tracking/projects/projectFormConfig.ts +22 -3
  288. package/src/modules/staff/backend/staff/time-tracking/settings/page.tsx +405 -308
  289. package/src/modules/staff/backend/staff/time-tracking/support/page.meta.ts +14 -0
  290. package/src/modules/staff/backend/staff/time-tracking/support/page.tsx +428 -0
  291. package/src/modules/staff/cli.ts +28 -0
  292. package/src/modules/staff/commands/index.ts +3 -0
  293. package/src/modules/staff/commands/shared.ts +22 -1
  294. package/src/modules/staff/commands/support-routing-rules.ts +595 -0
  295. package/src/modules/staff/commands/support-tickets.ts +580 -0
  296. package/src/modules/staff/commands/timesheets-projects.ts +84 -13
  297. package/src/modules/staff/commands/timesheets-task-assignment.ts +319 -0
  298. package/src/modules/staff/commands/timesheets-task-comments.ts +70 -15
  299. package/src/modules/staff/commands/timesheets-tasks.ts +106 -15
  300. package/src/modules/staff/data/enrichers.ts +203 -0
  301. package/src/modules/staff/data/entities.ts +133 -2
  302. package/src/modules/staff/data/extensions.ts +9 -1
  303. package/src/modules/staff/data/validators.ts +36 -0
  304. package/src/modules/staff/encryption.ts +6 -0
  305. package/src/modules/staff/events.payloads.ts +87 -1
  306. package/src/modules/staff/events.ts +26 -0
  307. package/src/modules/staff/extension-points.ts +1 -0
  308. package/src/modules/staff/frontend/[orgSlug]/portal/support/[id]/page.meta.ts +10 -0
  309. package/src/modules/staff/frontend/[orgSlug]/portal/support/[id]/page.tsx +553 -0
  310. package/src/modules/staff/frontend/[orgSlug]/portal/support/new/page.meta.ts +10 -0
  311. package/src/modules/staff/frontend/[orgSlug]/portal/support/new/page.tsx +346 -0
  312. package/src/modules/staff/frontend/[orgSlug]/portal/support/page.meta.ts +17 -0
  313. package/src/modules/staff/frontend/[orgSlug]/portal/support/page.tsx +253 -0
  314. package/src/modules/staff/i18n/de.json +291 -0
  315. package/src/modules/staff/i18n/en.json +291 -0
  316. package/src/modules/staff/i18n/es.json +291 -0
  317. package/src/modules/staff/i18n/ko.json +291 -0
  318. package/src/modules/staff/i18n/pl.json +291 -0
  319. package/src/modules/staff/index.ts +1 -1
  320. package/src/modules/staff/lib/crud.ts +2 -1
  321. package/src/modules/staff/lib/support/attachments.ts +43 -0
  322. package/src/modules/staff/lib/support/dictionaries.ts +120 -0
  323. package/src/modules/staff/lib/support/notifications.ts +138 -0
  324. package/src/modules/staff/lib/support/portalAttachments.ts +140 -0
  325. package/src/modules/staff/lib/support/portalBroadcast.ts +161 -0
  326. package/src/modules/staff/lib/support/portalRoute.ts +108 -0
  327. package/src/modules/staff/lib/support/portalStatus.ts +15 -0
  328. package/src/modules/staff/lib/support/portalTickets.ts +233 -0
  329. package/src/modules/staff/lib/support/routing.ts +117 -0
  330. package/src/modules/staff/lib/support/routingRuleDraft.ts +45 -0
  331. package/src/modules/staff/lib/support/seedDefaults.ts +151 -0
  332. package/src/modules/staff/lib/support/supportActivity.ts +39 -0
  333. package/src/modules/staff/lib/support-ui/PortalSupportNotLinked.tsx +20 -0
  334. package/src/modules/staff/lib/support-ui/portalAttachmentValidation.ts +125 -0
  335. package/src/modules/staff/lib/support-ui/portalPendingUploads.ts +49 -0
  336. package/src/modules/staff/lib/support-ui/portalSupport.ts +116 -0
  337. package/src/modules/staff/lib/time-tracking/access.ts +2 -62
  338. package/src/modules/staff/lib/time-tracking/listProjectAccess.ts +78 -0
  339. package/src/modules/staff/lib/time-tracking/portalRecipients.ts +173 -5
  340. package/src/modules/staff/lib/time-tracking/projectAssignment.ts +172 -0
  341. package/src/modules/staff/lib/time-tracking/settingKeys.ts +11 -0
  342. package/src/modules/staff/lib/time-tracking/settings.ts +46 -1
  343. package/src/modules/staff/lib/time-tracking/taskAssignmentRoute.ts +165 -0
  344. package/src/modules/staff/lib/time-tracking/workRecipients.ts +183 -0
  345. package/src/modules/staff/lib/time-tracking-ui/BoardFilterChips.tsx +36 -1
  346. package/src/modules/staff/lib/time-tracking-ui/KanbanBoard.tsx +30 -0
  347. package/src/modules/staff/lib/time-tracking-ui/KanbanCard.tsx +9 -0
  348. package/src/modules/staff/lib/time-tracking-ui/ProjectFormSections.tsx +185 -6
  349. package/src/modules/staff/lib/time-tracking-ui/SupportAttachmentsSection.tsx +188 -0
  350. package/src/modules/staff/lib/time-tracking-ui/SupportRequestPanel.tsx +102 -0
  351. package/src/modules/staff/lib/time-tracking-ui/TaskBoardScreen.tsx +2 -0
  352. package/src/modules/staff/lib/time-tracking-ui/TaskCommentThread.tsx +105 -22
  353. package/src/modules/staff/lib/time-tracking-ui/TaskDrawer.tsx +278 -43
  354. package/src/modules/staff/lib/time-tracking-ui/boardDirectory.ts +21 -0
  355. package/src/modules/staff/lib/time-tracking-ui/boardFilters.ts +16 -2
  356. package/src/modules/staff/lib/time-tracking-ui/kanbanBoardData.ts +4 -0
  357. package/src/modules/staff/lib/time-tracking-ui/projectDefaultAssignee.ts +117 -0
  358. package/src/modules/staff/lib/time-tracking-ui/settingsTabs.ts +17 -0
  359. package/src/modules/staff/lib/time-tracking-ui/supportTicketData.ts +71 -0
  360. package/src/modules/staff/lib/time-tracking-ui/taskDrawerData.ts +15 -0
  361. package/src/modules/staff/lib/time-tracking-ui/timeTrackingSettingsForm.ts +48 -1
  362. package/src/modules/staff/migrations/.snapshot-open-mercato.json +714 -0
  363. package/src/modules/staff/migrations/Migration20261009180543_staff.ts +50 -0
  364. package/src/modules/staff/notifications.ts +92 -0
  365. package/src/modules/staff/setup.ts +6 -2
  366. package/src/modules/staff/subscribers/support-portal-comment-created.ts +35 -0
  367. package/src/modules/staff/subscribers/support-portal-comment-deleted.ts +35 -0
  368. package/src/modules/staff/subscribers/support-portal-comment-updated.ts +35 -0
  369. package/src/modules/staff/subscribers/support-portal-status-column-updated.ts +36 -0
  370. package/src/modules/staff/subscribers/support-portal-task-status-changed.ts +34 -0
  371. package/src/modules/staff/subscribers/support-portal-task-updated.ts +34 -0
  372. package/src/modules/staff/subscribers/support-ticket-created-notification.ts +27 -0
  373. package/src/modules/staff/subscribers/support-ticket-customer-replied-notification.ts +27 -0
  374. package/src/modules/staff/subscribers/support-ticket-unnotified-clear.ts +29 -0
  375. package/src/modules/staff/subscribers/time-task-assignee-notification.ts +102 -0
  376. package/src/modules/staff/widgets/injection/portal-support-tickets/widget.client.tsx +151 -0
  377. package/src/modules/staff/widgets/injection/portal-support-tickets/widget.ts +16 -0
  378. package/src/modules/staff/widgets/injection/time-tracking-settings-support/widget.client.tsx +1058 -0
  379. package/src/modules/staff/widgets/injection/time-tracking-settings-support/widget.ts +17 -0
  380. package/src/modules/staff/widgets/injection-table.ts +15 -0
  381. package/src/modules/wms/components/backend/WmsLocationDetailPage.tsx +4 -20
  382. package/src/modules/wms/components/backend/WmsLotDetailPage.tsx +4 -20
  383. package/src/modules/wms/components/backend/WmsSkuDetailPage.tsx +4 -19
  384. package/src/modules/wms/lib/inventoryCsvExport.ts +18 -0
@@ -96,6 +96,12 @@
96
96
  "staff.audit.resources.create": "리소스 생성",
97
97
  "staff.audit.resources.delete": "리소스 삭제",
98
98
  "staff.audit.resources.update": "리소스 업데이트",
99
+ "staff.audit.support.routingRules.create": "지원 라우팅 규칙 생성",
100
+ "staff.audit.support.routingRules.createFallbackProject": "지원 대체 프로젝트 생성",
101
+ "staff.audit.support.routingRules.delete": "지원 라우팅 규칙 삭제",
102
+ "staff.audit.support.routingRules.update": "지원 라우팅 규칙 수정",
103
+ "staff.audit.support.tickets.create": "지원 티켓 등록",
104
+ "staff.audit.support.tickets.message": "지원 티켓의 고객 메시지",
99
105
  "staff.audit.teamMemberActivities.create": "팀원 활동 생성",
100
106
  "staff.audit.teamMemberActivities.delete": "팀원 활동 삭제",
101
107
  "staff.audit.teamMemberActivities.update": "팀원 활동 업데이트",
@@ -138,8 +144,10 @@
138
144
  "staff.audit.timesheets.task_statuses.delete": "작업 상태 삭제",
139
145
  "staff.audit.timesheets.task_statuses.reorder": "작업 상태 순서 변경",
140
146
  "staff.audit.timesheets.task_statuses.update": "작업 상태 수정",
147
+ "staff.audit.timesheets.tasks.claim": "작업 가져가기",
141
148
  "staff.audit.timesheets.tasks.create": "작업 생성",
142
149
  "staff.audit.timesheets.tasks.delete": "작업 삭제",
150
+ "staff.audit.timesheets.tasks.release": "작업 반납",
143
151
  "staff.audit.timesheets.tasks.statusChange": "작업 이동",
144
152
  "staff.audit.timesheets.tasks.update": "작업 수정",
145
153
  "staff.audit.timesheets.time_entries.create": "근무 기록 생성",
@@ -343,6 +351,11 @@
343
351
  "staff.notifications.leaveRequest.pending.title": "휴가 신청 대기 중",
344
352
  "staff.notifications.leaveRequest.rejected.body": "{startDate}부터 {endDate}까지의 휴가 신청이 반려되었습니다{reason, select, other { - {reason}}}",
345
353
  "staff.notifications.leaveRequest.rejected.title": "휴가 신청 반려됨",
354
+ "staff.notifications.supportTicket.actions.open": "티켓 열기",
355
+ "staff.notifications.supportTicket.created.body": "{customer}님이 {project}에 \"{subject}\"({category}) 티켓을 등록했습니다.",
356
+ "staff.notifications.supportTicket.created.title": "새 지원 티켓 {reference}",
357
+ "staff.notifications.supportTicket.customerReplied.body": "{customer}님이 \"{subject}\"에 메시지를 추가했습니다.",
358
+ "staff.notifications.supportTicket.customerReplied.title": "고객이 {reference}에 답장했습니다",
346
359
  "staff.notifications.timeEntryTimer.runningLong.body": "타이머가 오랫동안 실행되고 있습니다. 작업이 끝났다면 중지하세요.",
347
360
  "staff.notifications.timeEntryTimer.runningLong.title": "타이머가 계속 실행 중",
348
361
  "staff.notifications.timeProjectAccess.actions.openTeam": "프로젝트 팀 열기",
@@ -359,9 +372,89 @@
359
372
  "staff.notifications.timeReport.approved.title": "시간 보고서 마감됨",
360
373
  "staff.notifications.timeReport.readyForApproval.body": "보고서 {reference}이(가) 승인을 기다리고 있습니다.",
361
374
  "staff.notifications.timeReport.readyForApproval.title": "시간 보고서 승인 대기",
375
+ "staff.notifications.timeTask.actions.open": "작업 열기",
376
+ "staff.notifications.timeTask.assigned.body": "이제 \"{title}\" 작업은 회원님 담당입니다.",
377
+ "staff.notifications.timeTask.assigned.title": "{reference} 작업이 배정되었습니다",
378
+ "staff.notifications.timeTask.released.body": "\"{title}\" 작업을 가져갈 수 있습니다.",
379
+ "staff.notifications.timeTask.released.title": "작업 {reference}에 담당자가 없습니다",
362
380
  "staff.notifications.timesheet.actions.openTimesheet": "근무 시간표 열기",
363
381
  "staff.notifications.timesheet.periodIncomplete.body": "{periodFrom}부터 {periodTo} 사이의 일부 근무일에 기록된 시간이 없습니다.",
364
382
  "staff.notifications.timesheet.periodIncomplete.title": "근무 시간표 기간 미완료",
383
+ "staff.portal.support.attachments.add": "파일 추가",
384
+ "staff.portal.support.attachments.delete": "파일 삭제",
385
+ "staff.portal.support.attachments.deleteConfirm": "{name}을(를) 삭제할까요?",
386
+ "staff.portal.support.attachments.deleteFailed": "파일을 삭제하지 못했습니다.",
387
+ "staff.portal.support.attachments.empty": "아직 파일이 없습니다.",
388
+ "staff.portal.support.attachments.failedHeading": "다음 파일을 업로드하지 못했습니다.",
389
+ "staff.portal.support.attachments.reattach": "이 파일을 다시 첨부해 주세요.",
390
+ "staff.portal.support.attachments.remove": "파일 제거",
391
+ "staff.portal.support.attachments.retry": "재시도",
392
+ "staff.portal.support.attachments.title": "파일",
393
+ "staff.portal.support.attachments.uploadFailed": "{name}을(를) 업로드하지 못했습니다.",
394
+ "staff.portal.support.attachments.uploadFailedReason": "{name}을(를) 업로드하지 못했습니다: {reason}",
395
+ "staff.portal.support.backToList": "모든 티켓",
396
+ "staff.portal.support.blocked": "지금은 이 작업을 사용할 수 없습니다.",
397
+ "staff.portal.support.description": "도움을 요청하고 요청 진행 상황을 확인하세요.",
398
+ "staff.portal.support.detail.colleague": "동료",
399
+ "staff.portal.support.detail.conversation": "대화",
400
+ "staff.portal.support.detail.loadFailed": "이 티켓을 불러오지 못했습니다.",
401
+ "staff.portal.support.detail.notFoundDescription": "이 티켓이 없거나 회원님의 티켓이 아닙니다.",
402
+ "staff.portal.support.detail.notFoundTitle": "티켓을 찾을 수 없습니다",
403
+ "staff.portal.support.detail.rateLimited": "최근에 많은 메시지를 보냈습니다. 나중에 다시 시도하세요.",
404
+ "staff.portal.support.detail.reopenHint": "답장하면 이 티켓이 다시 열립니다.",
405
+ "staff.portal.support.detail.reopened": "메시지를 보냈고 티켓이 다시 열렸습니다.",
406
+ "staff.portal.support.detail.replyFailed": "메시지를 보내지 못했습니다.",
407
+ "staff.portal.support.detail.replyLabel": "답장",
408
+ "staff.portal.support.detail.replyPlaceholder": "답장 작성",
409
+ "staff.portal.support.detail.replySent": "메시지를 보냈습니다.",
410
+ "staff.portal.support.detail.send": "답장 보내기",
411
+ "staff.portal.support.detail.supportTeam": "지원팀",
412
+ "staff.portal.support.detail.supportTeamNamed": "지원팀 · {name}",
413
+ "staff.portal.support.detail.title": "지원 티켓",
414
+ "staff.portal.support.detail.you": "나",
415
+ "staff.portal.support.emptyDescription": "티켓을 등록하면 여기에서 확인할 수 있습니다.",
416
+ "staff.portal.support.emptyTitle": "아직 지원 티켓이 없습니다",
417
+ "staff.portal.support.fileSize.bytes": "{size} B",
418
+ "staff.portal.support.fileSize.kilobytes": "{size} KB",
419
+ "staff.portal.support.fileSize.megabytes": "{size} MB",
420
+ "staff.portal.support.filter.all": "모든 상태",
421
+ "staff.portal.support.filter.status": "상태",
422
+ "staff.portal.support.lastActivityAt": "최근 활동: {date}",
423
+ "staff.portal.support.loadFailed": "지원 티켓을 불러오지 못했습니다.",
424
+ "staff.portal.support.nav": "지원",
425
+ "staff.portal.support.new.cancel": "취소",
426
+ "staff.portal.support.new.category": "카테고리",
427
+ "staff.portal.support.new.categoryPlaceholder": "카테고리 선택",
428
+ "staff.portal.support.new.createFailed": "티켓을 등록하지 못했습니다. 다시 시도하세요.",
429
+ "staff.portal.support.new.created": "티켓 {reference}이(가) 등록되었습니다.",
430
+ "staff.portal.support.new.description": "필요한 내용을 알려 주세요. 비밀번호 등 민감한 정보는 포함하지 마세요.",
431
+ "staff.portal.support.new.descriptionLabel": "설명",
432
+ "staff.portal.support.new.descriptionPlaceholder": "무슨 일이 있었고 무엇을 기대했나요?",
433
+ "staff.portal.support.new.optionsLoadFailed": "지원 요청 양식을 불러오지 못했습니다.",
434
+ "staff.portal.support.new.rateLimited": "최근에 많은 티켓을 등록했습니다. 나중에 다시 시도하세요.",
435
+ "staff.portal.support.new.subject": "제목",
436
+ "staff.portal.support.new.subjectPlaceholder": "문제 요약",
437
+ "staff.portal.support.new.submit": "티켓 등록",
438
+ "staff.portal.support.new.title": "새 지원 티켓",
439
+ "staff.portal.support.newTicket": "새 티켓",
440
+ "staff.portal.support.next": "다음",
441
+ "staff.portal.support.notLinked.description": "포털 계정이 회사와 연결되어 있지 않아 표시할 티켓이 없습니다. 계정 관리자에게 연결을 요청하세요.",
442
+ "staff.portal.support.notLinked.title": "이 계정에서는 지원 티켓을 사용할 수 없습니다",
443
+ "staff.portal.support.pageIndicator": "{page} / {total} 페이지",
444
+ "staff.portal.support.previous": "이전",
445
+ "staff.portal.support.retry": "다시 시도",
446
+ "staff.portal.support.status.inProgress": "진행 중",
447
+ "staff.portal.support.status.received": "접수됨",
448
+ "staff.portal.support.status.resolved": "해결됨",
449
+ "staff.portal.support.title": "지원",
450
+ "staff.portal.support.unavailableDescription": "지원 요청이 활성화될 때까지 직접 연락해 주세요.",
451
+ "staff.portal.support.unavailableTitle": "지원 요청을 아직 사용할 수 없습니다",
452
+ "staff.portal.support.widget.empty": "열린 티켓이 없습니다.",
453
+ "staff.portal.support.widget.loading": "티켓을 불러오는 중…",
454
+ "staff.portal.support.widget.openCount": "열린 티켓: {count}",
455
+ "staff.portal.support.widget.retry": "다시 시도",
456
+ "staff.portal.support.widget.title": "지원 티켓",
457
+ "staff.portal.support.widget.viewAll": "모두 보기",
365
458
  "staff.portal.timeReports.backToList": "모든 시간 보고서",
366
459
  "staff.portal.timeReports.billableHours": "청구 가능 시간",
367
460
  "staff.portal.timeReports.detailTitle": "시간 보고서",
@@ -524,6 +617,148 @@
524
617
  "staff.services.table.name": "이름",
525
618
  "staff.services.table.search": "서비스 검색...",
526
619
  "staff.services.table.tags": "태그",
620
+ "staff.support.attachments.empty": "이 티켓에 파일이 없습니다.",
621
+ "staff.support.attachments.fromCustomer": "고객 제공",
622
+ "staff.support.attachments.internal": "내부",
623
+ "staff.support.attachments.loadFailed": "티켓 파일을 불러올 수 없습니다.",
624
+ "staff.support.attachments.loading": "파일을 불러오는 중…",
625
+ "staff.support.attachments.retry": "다시 시도",
626
+ "staff.support.attachments.shareWithCustomer": "고객과 공유",
627
+ "staff.support.attachments.title": "티켓 파일",
628
+ "staff.support.attachments.upload": "업로드",
629
+ "staff.support.attachments.uploadFailed": "파일을 업로드하지 못했습니다.",
630
+ "staff.support.attachments.visible": "고객에게 표시됨",
631
+ "staff.support.errors.attachmentNotYours": "직접 업로드한 파일만 삭제할 수 있습니다.",
632
+ "staff.support.errors.attachmentsUnavailable": "지금은 파일 첨부를 사용할 수 없습니다.",
633
+ "staff.support.errors.categoryNotFound": "이 카테고리는 지원 카테고리 사전에 없습니다.",
634
+ "staff.support.errors.categoryRuleExists": "이 카테고리에는 이미 라우팅 규칙이 있습니다.",
635
+ "staff.support.errors.categoryUnavailable": "이 카테고리의 지원 요청은 지금 사용할 수 없습니다.",
636
+ "staff.support.errors.fallbackProjectInUse": "지원 프로젝트에 이미 작업이 있어 생성을 취소할 수 없습니다. 대신 대체 규칙이 다른 프로젝트를 가리키도록 변경하세요.",
637
+ "staff.support.errors.fallbackRuleExists": "이 조직에는 이미 대체 규칙이 있습니다.",
638
+ "staff.support.errors.fallbackRuleRequired": "대체 규칙은 삭제하거나 일시 중지할 수 없습니다. 대신 다른 프로젝트를 지정하세요.",
639
+ "staff.support.errors.fileRequired": "업로드하기 전에 파일을 선택하세요.",
640
+ "staff.support.errors.projectHasNoDefaultStatus": "선택한 프로젝트에 기본 작업 상태가 없어 보드에 티켓을 등록할 수 없습니다.",
641
+ "staff.support.errors.projectNotFound": "선택한 프로젝트가 이 조직에 없습니다.",
642
+ "staff.support.errors.referenceConflict": "동시에 너무 많은 티켓이 등록되었습니다. 다시 제출하세요.",
643
+ "staff.support.errors.routingRuleNotFound": "라우팅 규칙을 찾을 수 없습니다.",
644
+ "staff.support.errors.ticketNotFound": "지원 티켓을 찾을 수 없습니다.",
645
+ "staff.support.fallbackProject.name": "고객 지원",
646
+ "staff.support.settings.actions.cancel": "취소",
647
+ "staff.support.settings.actions.delete": "삭제",
648
+ "staff.support.settings.actions.edit": "편집",
649
+ "staff.support.settings.actions.refresh": "새로 고침",
650
+ "staff.support.settings.actions.retry": "다시 시도",
651
+ "staff.support.settings.actions.save": "저장",
652
+ "staff.support.settings.categories.add": "카테고리 추가",
653
+ "staff.support.settings.categories.appearance": "모양",
654
+ "staff.support.settings.categories.colorClear": "색상 지우기",
655
+ "staff.support.settings.categories.colorHelp": "카테고리 배지 색상으로 표시됩니다.",
656
+ "staff.support.settings.categories.colorLabel": "색상",
657
+ "staff.support.settings.categories.confirmDelete": "\"{value}\" 카테고리를 삭제할까요?",
658
+ "staff.support.settings.categories.createTitle": "카테고리 추가",
659
+ "staff.support.settings.categories.deleted": "카테고리가 삭제되었습니다.",
660
+ "staff.support.settings.categories.description": "고객이 포털에서 티켓을 등록할 때 선택하는 카테고리입니다.",
661
+ "staff.support.settings.categories.editTitle": "카테고리 편집",
662
+ "staff.support.settings.categories.empty": "아직 카테고리가 없습니다.",
663
+ "staff.support.settings.categories.iconBrowse": "아이콘 찾아보기",
664
+ "staff.support.settings.categories.iconClear": "아이콘 지우기",
665
+ "staff.support.settings.categories.iconLabel": "아이콘",
666
+ "staff.support.settings.categories.iconPlaceholder": "아이콘 이름",
667
+ "staff.support.settings.categories.iconSearchEmpty": "아이콘을 찾을 수 없습니다.",
668
+ "staff.support.settings.categories.iconSearchPlaceholder": "아이콘 검색",
669
+ "staff.support.settings.categories.iconSuggestions": "추천",
670
+ "staff.support.settings.categories.inherited": "상속됨",
671
+ "staff.support.settings.categories.inheritedTooltip": "상위 조직에서 정의되었습니다.",
672
+ "staff.support.settings.categories.label": "레이블",
673
+ "staff.support.settings.categories.missingDictionary": "이 조직에는 아직 지원 카테고리 사전이 생성되지 않았습니다.",
674
+ "staff.support.settings.categories.noAccess": "지원 카테고리를 볼 권한이 없습니다.",
675
+ "staff.support.settings.categories.previewEmpty": "모양 없음",
676
+ "staff.support.settings.categories.saved": "카테고리가 저장되었습니다.",
677
+ "staff.support.settings.categories.search": "카테고리 검색",
678
+ "staff.support.settings.categories.title": "카테고리",
679
+ "staff.support.settings.categories.value": "값",
680
+ "staff.support.settings.description": "지원 티켓 카테고리, 카테고리별 라우팅 프로젝트, 티켓 참조 접두사를 구성합니다.",
681
+ "staff.support.settings.errors.delete": "삭제하지 못했습니다.",
682
+ "staff.support.settings.errors.load": "지원 설정을 불러오지 못했습니다.",
683
+ "staff.support.settings.errors.save": "저장하지 못했습니다.",
684
+ "staff.support.settings.errors.saveBlocked": "유효성 검사로 저장이 차단되었습니다",
685
+ "staff.support.settings.prefix.description": "고객에게는 SUP-1042와 같은 티켓 참조가 표시됩니다. 접두사는 테넌트 전체에 적용됩니다.",
686
+ "staff.support.settings.prefix.invalid": "문자로 시작하는 2~10자의 대문자 또는 숫자를 사용하세요.",
687
+ "staff.support.settings.prefix.saved": "참조 접두사가 저장되었습니다.",
688
+ "staff.support.settings.prefix.title": "참조 접두사",
689
+ "staff.support.settings.preview.empty": "라우팅할 카테고리가 없습니다.",
690
+ "staff.support.settings.preview.title": "현재 티켓이 가는 곳",
691
+ "staff.support.settings.preview.unavailable": "포털에서 사용할 수 없음",
692
+ "staff.support.settings.preview.via": "라우팅 기준",
693
+ "staff.support.settings.preview.viaCategory": "카테고리 규칙",
694
+ "staff.support.settings.preview.viaFallback": "기본 규칙",
695
+ "staff.support.settings.referencePrefix": "참조 접두사",
696
+ "staff.support.settings.routing.active": "활성",
697
+ "staff.support.settings.routing.addRule": "규칙 추가",
698
+ "staff.support.settings.routing.addRuleTitle": "규칙 추가",
699
+ "staff.support.settings.routing.category": "카테고리",
700
+ "staff.support.settings.routing.confirmDelete": "이 규칙을 삭제할까요? 카테고리는 기본 프로젝트를 사용하게 됩니다.",
701
+ "staff.support.settings.routing.createFallback": "기본 프로젝트 만들기",
702
+ "staff.support.settings.routing.deleted": "규칙이 삭제되었습니다.",
703
+ "staff.support.settings.routing.description": "작동하는 규칙이 없는 카테고리는 모두 기본 프로젝트로 갑니다. 카테고리를 별도 프로젝트로 보내려면 규칙을 추가하세요.",
704
+ "staff.support.settings.routing.editRuleTitle": "규칙 편집",
705
+ "staff.support.settings.routing.fallbackCreated": "기본 프로젝트가 생성되었습니다.",
706
+ "staff.support.settings.routing.fallbackProject": "기본 프로젝트",
707
+ "staff.support.settings.routing.fallbackUnusableDescription": "완료되었거나 삭제되었거나 기본 상태가 없습니다. 기본 규칙이 다른 프로젝트를 가리키도록 변경하세요.",
708
+ "staff.support.settings.routing.fallbackUnusableTitle": "기본 프로젝트가 티켓을 받을 수 없습니다",
709
+ "staff.support.settings.routing.fallingBack": "{project}(으)로 대체됨",
710
+ "staff.support.settings.routing.loading": "라우팅을 불러오는 중…",
711
+ "staff.support.settings.routing.noFallbackDescription": "기본 프로젝트가 생길 때까지 고객은 자체 규칙이 없는 카테고리로 티켓을 등록할 수 없습니다.",
712
+ "staff.support.settings.routing.noFallbackTitle": "기본 프로젝트 없음",
713
+ "staff.support.settings.routing.noOverrides": "카테고리 규칙이 없습니다. 모든 카테고리는 기본 프로젝트로 갑니다.",
714
+ "staff.support.settings.routing.nobodyNotified": "이 프로젝트에는 여기로 라우팅된 티켓 알림을 받을 사람이 없습니다. 활성 배정자, 사용 가능한 기본 담당자, 소유자가 모두 없습니다. 대신 새 티켓 알림은 조직의 프로젝트 관리자에게 전달됩니다.",
715
+ "staff.support.settings.routing.overrides": "카테고리 규칙",
716
+ "staff.support.settings.routing.problem.categoryMissing": "카테고리가 더 이상 존재하지 않습니다.",
717
+ "staff.support.settings.routing.problem.paused": "규칙이 일시 중지되었습니다.",
718
+ "staff.support.settings.routing.problem.projectUnusable": "프로젝트가 완료되었거나 삭제되었거나 기본 상태가 없습니다.",
719
+ "staff.support.settings.routing.project": "프로젝트",
720
+ "staff.support.settings.routing.routing": "라우팅 중",
721
+ "staff.support.settings.routing.saved": "라우팅이 저장되었습니다.",
722
+ "staff.support.settings.routing.searchProject": "프로젝트 검색",
723
+ "staff.support.settings.routing.selectCategory": "카테고리 선택",
724
+ "staff.support.settings.routing.selectProject": "프로젝트 선택",
725
+ "staff.support.settings.routing.state": "상태",
726
+ "staff.support.settings.routing.title": "라우팅",
727
+ "staff.support.settings.routing.unnotifiedTickets.few": "{count}개의 티켓이 아무에게도 알림되지 않았습니다.",
728
+ "staff.support.settings.routing.unnotifiedTickets.many": "{count}개의 티켓이 아무에게도 알림되지 않았습니다.",
729
+ "staff.support.settings.routing.unnotifiedTickets.one": "{count}개의 티켓이 아무에게도 알림되지 않았습니다.",
730
+ "staff.support.settings.routing.unnotifiedTickets.other": "{count}개의 티켓이 아무에게도 알림되지 않았습니다.",
731
+ "staff.support.settings.routing.unnotifiedTicketsLink": "지원 받은편지함에서 열기",
732
+ "staff.support.settings.title": "지원",
733
+ "staff.support.tickets.columns.assignee": "담당자",
734
+ "staff.support.tickets.columns.category": "카테고리",
735
+ "staff.support.tickets.columns.customer": "고객",
736
+ "staff.support.tickets.columns.lastActivity": "최근 활동",
737
+ "staff.support.tickets.columns.portalStatus": "상태",
738
+ "staff.support.tickets.columns.project": "프로젝트",
739
+ "staff.support.tickets.columns.reference": "티켓",
740
+ "staff.support.tickets.columns.subject": "제목",
741
+ "staff.support.tickets.customerKind.company": "회사",
742
+ "staff.support.tickets.customerKind.person": "개인",
743
+ "staff.support.tickets.empty": "이 필터와 일치하는 지원 티켓이 없습니다.",
744
+ "staff.support.tickets.filters.assignee": "담당자",
745
+ "staff.support.tickets.filters.category": "카테고리",
746
+ "staff.support.tickets.filters.customer": "고객",
747
+ "staff.support.tickets.filters.customerPlaceholder": "고객 검색",
748
+ "staff.support.tickets.filters.nobodyNotified": "알림을 받은 사람 없음",
749
+ "staff.support.tickets.filters.portalStatus": "고객에게 보이는 상태",
750
+ "staff.support.tickets.filters.project": "프로젝트",
751
+ "staff.support.tickets.filters.projectPlaceholder": "프로젝트 검색",
752
+ "staff.support.tickets.loadError": "지원 티켓을 불러올 수 없습니다.",
753
+ "staff.support.tickets.nobodyNotified": "알림을 받은 사람 없음",
754
+ "staff.support.tickets.optionsLoadError": "필터 옵션을 불러올 수 없습니다.",
755
+ "staff.support.tickets.refresh": "새로 고침",
756
+ "staff.support.tickets.searchPlaceholder": "티켓 번호로 검색",
757
+ "staff.support.tickets.status.inProgress": "진행 중",
758
+ "staff.support.tickets.status.received": "접수됨",
759
+ "staff.support.tickets.status.resolved": "해결됨",
760
+ "staff.support.tickets.title": "지원 받은편지함",
761
+ "staff.support.tickets.unassigned": "미배정",
527
762
  "staff.teamMembers.actions.add": "팀원 추가",
528
763
  "staff.teamMembers.actions.backToList": "팀원 목록으로 돌아가기",
529
764
  "staff.teamMembers.actions.delete": "삭제",
@@ -1023,6 +1258,20 @@
1023
1258
  "staff.time_tracking.access.request.error": "접근 권한 요청을 보내지 못했습니다.",
1024
1259
  "staff.time_tracking.access.request.sent": "요청 전송됨",
1025
1260
  "staff.time_tracking.access.request.success": "요청을 팀 리더에게 보냈습니다.",
1261
+ "staff.time_tracking.assigners.badge": "배정자",
1262
+ "staff.time_tracking.assigners.defaultAssignee": "포털 티켓 기본 담당자",
1263
+ "staff.time_tracking.assigners.defaultAssigneeAfterCreate": "기본 담당자를 선택하려면 프로젝트를 저장하고 구성원을 추가하세요.",
1264
+ "staff.time_tracking.assigners.defaultAssigneeHelp": "이 프로젝트로 라우팅된 새 고객 포털 티켓은 이 구성원에게 배정됩니다. 보드에서 만든 작업은 작성자에게 배정된 상태로 유지됩니다.",
1265
+ "staff.time_tracking.assigners.defaultAssigneeInactive": "이 구성원은 더 이상 활성 프로젝트 구성원이 아닙니다. 새 티켓은 미배정 상태로 남고 배정자에게 알림이 전송됩니다.",
1266
+ "staff.time_tracking.assigners.defaultAssigneeLoadFailed": "프로젝트 구성원을 불러오지 못해 지금은 기본 담당자를 확인할 수 없습니다.",
1267
+ "staff.time_tracking.assigners.defaultAssigneeNone": "기본 담당자 없음",
1268
+ "staff.time_tracking.assigners.defaultAssigneeRetry": "다시 시도",
1269
+ "staff.time_tracking.assigners.disabled": "구성원이 더 이상 배정자가 아닙니다.",
1270
+ "staff.time_tracking.assigners.enabled": "구성원이 이제 배정자입니다.",
1271
+ "staff.time_tracking.assigners.help": "배정자는 새 작업과 반납된 작업에 대한 알림을 받고 미배정 작업을 가져갈 수 있습니다.",
1272
+ "staff.time_tracking.assigners.label": "배정자",
1273
+ "staff.time_tracking.assigners.needsUser": "사용자 계정이 있는 구성원만 배정자가 될 수 있습니다.",
1274
+ "staff.time_tracking.assigners.saveError": "배정자 설정을 변경할 수 없습니다.",
1026
1275
  "staff.time_tracking.board.addStatus.cta": "상태 추가",
1027
1276
  "staff.time_tracking.board.addStatus.error": "열을 추가하지 못했습니다.",
1028
1277
  "staff.time_tracking.board.addStatus.placeholder": "열 이름",
@@ -1031,6 +1280,7 @@
1031
1280
  "staff.time_tracking.board.card.addTimeAria": "{title}에 시간 추가",
1032
1281
  "staff.time_tracking.board.card.aria": "작업: {title}",
1033
1282
  "staff.time_tracking.board.card.assignee": "{name} 담당",
1283
+ "staff.time_tracking.board.card.customerRequest": "고객 요청",
1034
1284
  "staff.time_tracking.board.card.moveTo.aria": "{title}을(를) 다른 열로 이동",
1035
1285
  "staff.time_tracking.board.card.moveTo.cta": "이동",
1036
1286
  "staff.time_tracking.board.card.moveTo.menu": "{title} 이동 대상",
@@ -1059,6 +1309,8 @@
1059
1309
  "staff.time_tracking.board.filters.remove": "필터 제거: {label}",
1060
1310
  "staff.time_tracking.board.filters.status": "상태",
1061
1311
  "staff.time_tracking.board.filters.tag": "태그",
1312
+ "staff.time_tracking.board.filters.unassigned": "미배정",
1313
+ "staff.time_tracking.board.filters.unassignedWithCount": "미배정 ({count})",
1062
1314
  "staff.time_tracking.board.list.caption": "작업",
1063
1315
  "staff.time_tracking.board.list.columns.assignee": "담당자",
1064
1316
  "staff.time_tracking.board.list.columns.hours": "기록됨",
@@ -1613,6 +1865,8 @@
1613
1865
  "staff.time_tracking.settings.scope.hint": "요율과 통화는 프로젝트 수준에, 요율 재정의는 항목 수준에 남습니다.",
1614
1866
  "staff.time_tracking.settings.scope.title": "설정 적용 범위",
1615
1867
  "staff.time_tracking.settings.subtitle": "모든 고객과 프로젝트에 공통으로 적용되는 규칙",
1868
+ "staff.time_tracking.settings.tabs.general": "시간 추적",
1869
+ "staff.time_tracking.settings.tabs.label": "설정 섹션",
1616
1870
  "staff.time_tracking.settings.targets.dailyHours": "일일 목표 시간",
1617
1871
  "staff.time_tracking.settings.targets.dailyHoursError": "0에서 24 사이의 시간을 입력하거나 비워 두세요.",
1618
1872
  "staff.time_tracking.settings.targets.dailyHoursHint": "타임시트의 부하 막대 기준입니다. 비워 두면 목표가 꺼집니다.",
@@ -1640,15 +1894,32 @@
1640
1894
  "staff.time_tracking.tags.placeholder": "태그 검색",
1641
1895
  "staff.time_tracking.tags.remove": "태그 제거",
1642
1896
  "staff.time_tracking.tags.title": "태그",
1897
+ "staff.time_tracking.taskComments.addInternalNote": "내부 메모 추가",
1643
1898
  "staff.time_tracking.taskComments.empty": "아직 댓글이 없습니다.",
1899
+ "staff.time_tracking.taskComments.errors.customerImmutable": "고객이 작성한 메시지는 수정하거나 삭제할 수 없습니다.",
1644
1900
  "staff.time_tracking.taskComments.errors.idRequired": "댓글 ID가 필요합니다.",
1645
1901
  "staff.time_tracking.taskComments.errors.notAuthor": "본인이 작성한 댓글만 수정하거나 삭제할 수 있습니다.",
1646
1902
  "staff.time_tracking.taskComments.errors.notFound": "댓글을 찾을 수 없거나 접근할 수 없습니다.",
1647
1903
  "staff.time_tracking.taskComments.errors.taskIdRequired": "작업 ID가 필요합니다.",
1904
+ "staff.time_tracking.taskComments.errors.visibilityPortalOnly": "고객 지원 티켓만 고객에게 표시되는 답장을 가질 수 있습니다.",
1905
+ "staff.time_tracking.taskComments.fromCustomer": "고객",
1906
+ "staff.time_tracking.taskComments.internalNote": "내부 메모",
1907
+ "staff.time_tracking.taskComments.makeInternal": "내부로 전환",
1908
+ "staff.time_tracking.taskComments.makeInternalError": "답장을 변경할 수 없습니다.",
1648
1909
  "staff.time_tracking.taskComments.placeholder": "댓글을 입력하세요…",
1910
+ "staff.time_tracking.taskComments.replyToCustomer": "고객에게 답장",
1911
+ "staff.time_tracking.taskComments.shortcutInternal": "내부 메모 추가",
1649
1912
  "staff.time_tracking.taskComments.submit": "댓글 남기기",
1650
1913
  "staff.time_tracking.taskComments.submitHint": "⌘↵ 전송",
1914
+ "staff.time_tracking.taskComments.supportPlaceholder": "답장 또는 내부 메모 작성…",
1651
1915
  "staff.time_tracking.taskComments.title": "댓글",
1916
+ "staff.time_tracking.taskComments.visibleToCustomer": "고객에게 표시됨",
1917
+ "staff.time_tracking.taskDrawer.assignment.claim": "가져가기",
1918
+ "staff.time_tracking.taskDrawer.assignment.claimError": "작업을 가져갈 수 없습니다.",
1919
+ "staff.time_tracking.taskDrawer.assignment.claimed": "작업을 가져갔습니다.",
1920
+ "staff.time_tracking.taskDrawer.assignment.release": "반납",
1921
+ "staff.time_tracking.taskDrawer.assignment.releaseError": "작업을 반납할 수 없습니다.",
1922
+ "staff.time_tracking.taskDrawer.assignment.released": "작업을 반납했습니다.",
1652
1923
  "staff.time_tracking.taskDrawer.autoSave": "변경 사항은 자동으로 저장됩니다",
1653
1924
  "staff.time_tracking.taskDrawer.close": "닫기",
1654
1925
  "staff.time_tracking.taskDrawer.comments.empty": "아직 댓글이 없습니다.",
@@ -1660,6 +1931,7 @@
1660
1931
  "staff.time_tracking.taskDrawer.comments.submit": "댓글 달기",
1661
1932
  "staff.time_tracking.taskDrawer.comments.title": "댓글 ({count})",
1662
1933
  "staff.time_tracking.taskDrawer.comments.unknownAuthor": "알 수 없는 작성자",
1934
+ "staff.time_tracking.taskDrawer.conflict": "다른 사용자가 이 작업을 변경했습니다. 이제 최신 버전이 표시됩니다. 확인한 후 다시 시도하세요.",
1663
1935
  "staff.time_tracking.taskDrawer.created": "{date} 생성됨",
1664
1936
  "staff.time_tracking.taskDrawer.entries.empty": "아직 시간 항목이 없습니다.",
1665
1937
  "staff.time_tracking.taskDrawer.entries.noDescription": "설명 없음",
@@ -1699,6 +1971,18 @@
1699
1971
  "staff.time_tracking.taskDrawer.subtasks.title": "하위 작업",
1700
1972
  "staff.time_tracking.taskDrawer.subtasks.toggle": "{title}을(를) 완료로 표시",
1701
1973
  "staff.time_tracking.taskDrawer.subtasks.toggleError": "하위 작업 상태를 변경하지 못했습니다.",
1974
+ "staff.time_tracking.taskDrawer.support.category": "카테고리",
1975
+ "staff.time_tracking.taskDrawer.support.customer": "고객",
1976
+ "staff.time_tracking.taskDrawer.support.originalRequest": "원래 요청",
1977
+ "staff.time_tracking.taskDrawer.support.portalStatus": "고객에게 보이는 상태",
1978
+ "staff.time_tracking.taskDrawer.support.reference": "티켓",
1979
+ "staff.time_tracking.taskDrawer.support.reporter": "보고자",
1980
+ "staff.time_tracking.taskDrawer.support.routedVia": "라우팅 기준",
1981
+ "staff.time_tracking.taskDrawer.support.routedViaCategory": "카테고리 규칙",
1982
+ "staff.time_tracking.taskDrawer.support.routedViaFallback": "대체 프로젝트",
1983
+ "staff.time_tracking.taskDrawer.support.title": "고객 요청",
1984
+ "staff.time_tracking.taskDrawer.support.titleHint": "고객에게는 작업 제목과 설명이 아닌 원래 요청이 표시됩니다.",
1985
+ "staff.time_tracking.taskDrawer.support.unknown": "알 수 없음",
1702
1986
  "staff.time_tracking.taskDrawer.timer.start": "시작",
1703
1987
  "staff.time_tracking.taskDrawer.timer.stop": "중지 {elapsed}",
1704
1988
  "staff.time_tracking.taskDrawer.timer.switchText": "타이머는 한 번에 하나만 실행할 수 있습니다. 다른 타이머를 중지하고 여기서 시작할까요?",
@@ -1787,10 +2071,12 @@
1787
2071
  "staff.time_tracking.timesheet.view.grid": "그리드",
1788
2072
  "staff.time_tracking.timesheet.view.label": "타임시트 보기",
1789
2073
  "staff.time_tracking.timesheet.view.list": "목록",
2074
+ "staff.timesheets.errors.assignerNeedsUser": "로그인하고 알림을 받아야 하므로 사용자 계정이 있는 팀원만 배정자가 될 수 있습니다.",
1790
2075
  "staff.timesheets.errors.bulkSave": "근무 시간 항목을 일괄 저장하지 못했습니다.",
1791
2076
  "staff.timesheets.errors.bulkTagsUnsupported": "타임시트 그리드에서는 태그를 변경할 수 없습니다. 시간 기록을 열어 태그를 편집하세요.",
1792
2077
  "staff.timesheets.errors.copyDaySameDate": "원본 날짜와 대상 날짜는 서로 달라야 합니다.",
1793
2078
  "staff.timesheets.errors.copyDayTargetNotEmpty": "대상 날짜에 이미 근무 시간 항목이 있습니다. 먼저 확인하거나 그래도 복사본을 추가하려면 확인하세요.",
2079
+ "staff.timesheets.errors.defaultAssigneeNotMember": "기본 담당자는 이 프로젝트의 활성 구성원이어야 합니다.",
1794
2080
  "staff.timesheets.errors.entryNotFound": "근무 시간 항목을 찾을 수 없거나, 삭제되었거나, 본인 소유가 아닙니다.",
1795
2081
  "staff.timesheets.errors.invalidBody": "잘못된 요청 본문입니다.",
1796
2082
  "staff.timesheets.errors.invalidProjectId": "잘못된 프로젝트 ID입니다.",
@@ -1801,6 +2087,8 @@
1801
2087
  "staff.timesheets.errors.noActiveSegment": "이 항목에 대한 진행 중인 타이머 구간을 찾을 수 없습니다.",
1802
2088
  "staff.timesheets.errors.noStaffMember": "회원님의 계정에 연결된 팀원 정보가 없습니다.",
1803
2089
  "staff.timesheets.errors.notAssigned": "이 프로젝트에 배정되어 있지 않습니다.",
2090
+ "staff.timesheets.errors.notAssignee": "현재 담당자만 이 작업을 반납할 수 있습니다.",
2091
+ "staff.timesheets.errors.notAssigner": "이 프로젝트의 활성 배정자만 작업을 가져갈 수 있습니다.",
1804
2092
  "staff.timesheets.errors.notOwner": "본인의 근무 시간 항목만 관리할 수 있습니다.",
1805
2093
  "staff.timesheets.errors.outsideAssignmentWindow": "이 날짜는 이 프로젝트 배정 기간을 벗어납니다.",
1806
2094
  "staff.timesheets.errors.projectCodeDuplicate": "이 코드로 등록된 프로젝트가 이미 존재합니다.",
@@ -1810,6 +2098,9 @@
1810
2098
  "staff.timesheets.errors.projectsKpis": "프로젝트 KPI를 불러오지 못했습니다.",
1811
2099
  "staff.timesheets.errors.segmentCreate": "근무 시간 항목 구간을 생성하지 못했습니다.",
1812
2100
  "staff.timesheets.errors.staffMemberNotFound": "팀원을 찾을 수 없거나 접근할 수 없습니다.",
2101
+ "staff.timesheets.errors.taskAlreadyClaimed": "다른 사람이 이미 이 작업을 가져갔습니다.",
2102
+ "staff.timesheets.errors.taskChanged": "반납하는 동안 작업이 변경되었습니다. 새로 고친 후 다시 시도하세요.",
2103
+ "staff.timesheets.errors.taskNotClaimable": "완료된 작업은 가져갈 수 없습니다.",
1813
2104
  "staff.timesheets.errors.taskNotFound": "작업을 찾을 수 없거나 접근할 수 없습니다.",
1814
2105
  "staff.timesheets.errors.timerAlreadyRunning": "다른 타이머가 이미 실행 중입니다. 새 타이머를 시작하기 전에 먼저 중지해 주세요.",
1815
2106
  "staff.timesheets.errors.timerAlreadyStarted": "이 항목의 타이머가 이미 시작되었습니다.",