@ozdao/martyrs 0.2.602 → 0.2.604

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 (729) hide show
  1. package/dist/{abac-BPl9Bmf9.js → abac-Blt8bUTL.js} +3 -3
  2. package/dist/{addUserStatusFields-Cc-JpmPo.js → addUserStatusFields-CjV_sbh7.js} +2 -2
  3. package/dist/auth.server.js +57 -2
  4. package/dist/builder.js +130 -81
  5. package/dist/community.server.js +11 -11
  6. package/dist/core.server.js +2 -2
  7. package/dist/{core.verifier-gPPX_jhf.js → core.verifier-DVB2a21y.js} +6 -3
  8. package/dist/{crud-DpOXTZep.js → crud-BT5FIvQC.js} +2 -3
  9. package/dist/engagement.schema-B-Cc_NsG.js +6 -0
  10. package/dist/events.server.js +3 -3
  11. package/dist/gallery.server.js +1 -1
  12. package/dist/governance.server.js +1632 -0
  13. package/dist/icons.server.js +267 -0
  14. package/dist/inventory.server.js +6 -6
  15. package/dist/martyrs/dist/martyrs.es3.js +116 -0
  16. package/dist/martyrs/dist/martyrs.es3.js.map +1 -0
  17. package/dist/martyrs/dist/martyrs.es39.js +124 -0
  18. package/dist/martyrs/dist/martyrs.es39.js.map +1 -0
  19. package/dist/martyrs/dist/martyrs.es43.js +30 -0
  20. package/dist/martyrs/dist/martyrs.es43.js.map +1 -0
  21. package/dist/martyrs/dist/martyrs.es44.js +28 -0
  22. package/dist/martyrs/dist/martyrs.es44.js.map +1 -0
  23. package/dist/martyrs/dist/martyrs.es46.js +10 -0
  24. package/dist/martyrs/dist/martyrs.es46.js.map +1 -0
  25. package/dist/martyrs/src/components/Address/{Address.vue.js → Address.vue2.js} +2 -2
  26. package/dist/martyrs/src/components/Address/Address.vue2.js.map +1 -0
  27. package/dist/martyrs/src/components/Block/Block.vue.js +1 -1
  28. package/dist/martyrs/src/components/Block/Block.vue.js.map +1 -1
  29. package/dist/martyrs/src/components/Button/{Button.vue.js → Button.vue2.js} +8 -5
  30. package/dist/martyrs/src/components/Button/Button.vue2.js.map +1 -0
  31. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue2.js → Dropdown.vue.js} +2 -2
  32. package/dist/martyrs/src/components/Dropdown/Dropdown.vue.js.map +1 -0
  33. package/dist/martyrs/src/components/Feed/Carousel.vue.js +1 -1
  34. package/dist/martyrs/src/components/Feed/Feed.vue.js +2 -2
  35. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +4 -4
  36. package/dist/martyrs/src/components/Loader/{Loader.vue2.js → Loader.vue.js} +2 -2
  37. package/dist/martyrs/src/components/Loader/Loader.vue.js.map +1 -0
  38. package/dist/martyrs/src/components/LocationMarker/{LocationMarker.vue.js → LocationMarker.vue2.js} +3 -3
  39. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue2.js.map +1 -0
  40. package/dist/martyrs/src/components/Media/Media.vue.js +1 -1
  41. package/dist/martyrs/src/components/Table/StatusBadge.vue.js +19 -10
  42. package/dist/martyrs/src/components/Table/StatusBadge.vue.js.map +1 -1
  43. package/dist/martyrs/src/components/Text/Text.vue.js +1 -1
  44. package/dist/martyrs/src/components/Text/Text.vue.js.map +1 -1
  45. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +1 -1
  46. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +1 -1
  47. package/dist/martyrs/src/modules/auth/views/components/blocks/OtpDialog.vue.js +2 -2
  48. package/dist/martyrs/src/modules/auth/views/components/blocks/PopupAuth.vue.js +3 -3
  49. package/dist/martyrs/src/modules/auth/views/components/blocks/PopupAuth.vue.js.map +1 -1
  50. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +2 -2
  51. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +2 -2
  52. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +17 -21
  53. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js.map +1 -1
  54. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
  55. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +13 -13
  56. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +2 -2
  57. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +2 -2
  58. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +41 -3
  59. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js.map +1 -1
  60. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +2 -2
  61. package/dist/martyrs/src/modules/auth/views/components/pages/UserDashboard.vue.js +34 -66
  62. package/dist/martyrs/src/modules/auth/views/components/pages/UserDashboard.vue.js.map +1 -1
  63. package/dist/martyrs/src/modules/auth/views/router/users.router.js +0 -53
  64. package/dist/martyrs/src/modules/auth/views/router/users.router.js.map +1 -1
  65. package/dist/martyrs/src/modules/auth/views/store/auth.js +1 -1
  66. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js +515 -103
  67. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js.map +1 -1
  68. package/dist/martyrs/src/modules/backoffice/configs/navigation.backoffice.config.js +1 -3
  69. package/dist/martyrs/src/modules/backoffice/configs/navigation.backoffice.config.js.map +1 -1
  70. package/dist/martyrs/src/modules/backoffice/router/backoffice.router.js +1 -32
  71. package/dist/martyrs/src/modules/backoffice/router/backoffice.router.js.map +1 -1
  72. package/dist/martyrs/src/modules/community/community.client.js +49 -8
  73. package/dist/martyrs/src/modules/community/community.client.js.map +1 -1
  74. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +10 -4
  75. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js.map +1 -1
  76. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +3 -3
  77. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js.map +1 -1
  78. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +3 -3
  79. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js.map +1 -1
  80. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +28 -17
  81. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js.map +1 -1
  82. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js +36 -28
  83. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js.map +1 -1
  84. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js +2 -2
  85. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js.map +1 -1
  86. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.js +1 -1
  87. package/dist/martyrs/src/modules/community/router/community.backoffice.router.js +21 -0
  88. package/dist/martyrs/src/modules/community/router/community.backoffice.router.js.map +1 -0
  89. package/dist/martyrs/src/modules/community/router/community.organization.router.js +70 -0
  90. package/dist/martyrs/src/modules/community/router/community.organization.router.js.map +1 -0
  91. package/dist/martyrs/src/modules/community/router/community.router.js +73 -0
  92. package/dist/martyrs/src/modules/community/router/community.router.js.map +1 -0
  93. package/dist/martyrs/src/modules/community/router/community.user.router.js +20 -0
  94. package/dist/martyrs/src/modules/community/router/community.user.router.js.map +1 -0
  95. package/dist/martyrs/src/modules/constructor/components/elements/Textarea.vue2.js +1 -1
  96. package/dist/martyrs/src/modules/constructor/components/elements/Textarea.vue2.js.map +1 -1
  97. package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.js.map +1 -1
  98. package/dist/martyrs/src/modules/core/views/classes/core.app.js +5 -3
  99. package/dist/martyrs/src/modules/core/views/classes/core.app.js.map +1 -1
  100. package/dist/martyrs/src/modules/core/views/classes/i18n.manager.js +7 -2
  101. package/dist/martyrs/src/modules/core/views/classes/i18n.manager.js.map +1 -1
  102. package/dist/martyrs/src/modules/core/views/classes/ws.manager.js +11 -5
  103. package/dist/martyrs/src/modules/core/views/classes/ws.manager.js.map +1 -1
  104. package/dist/martyrs/src/modules/core/views/components/blocks/Card.vue.js +53 -18
  105. package/dist/martyrs/src/modules/core/views/components/blocks/Card.vue.js.map +1 -1
  106. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +2 -2
  107. package/dist/martyrs/src/modules/core/views/components/blocks/CardStat.vue.js +44 -0
  108. package/dist/martyrs/src/modules/core/views/components/blocks/CardStat.vue.js.map +1 -0
  109. package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js +6 -6
  110. package/dist/martyrs/src/modules/core/views/components/layouts/App.vue.js +2 -2
  111. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +11 -8
  112. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js.map +1 -1
  113. package/dist/martyrs/src/modules/core/views/components/partials/BottomNavigationBar.vue.js +5 -5
  114. package/dist/martyrs/src/modules/core/views/components/partials/BottomNavigationBar.vue.js.map +1 -1
  115. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js +14 -14
  116. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js.map +1 -1
  117. package/dist/martyrs/src/modules/core/views/components/partials/LocationSelection.vue.js +2 -2
  118. package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js +28 -29
  119. package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js.map +1 -1
  120. package/dist/martyrs/src/modules/core/views/components/partials/NavigationBar.vue.js +6 -6
  121. package/dist/martyrs/src/modules/core/views/components/partials/Sidebar.vue.js +5 -7
  122. package/dist/martyrs/src/modules/core/views/components/partials/Sidebar.vue.js.map +1 -1
  123. package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js +27 -17
  124. package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js.map +1 -1
  125. package/dist/martyrs/src/modules/core/views/components/sections/Walkthrough.vue.js +1 -1
  126. package/dist/martyrs/src/modules/core/views/mixins/mixins.js +3 -3
  127. package/dist/martyrs/src/modules/core/views/mixins/mixins.js.map +1 -1
  128. package/dist/martyrs/src/modules/core/views/router/addRoutes.js +2 -3
  129. package/dist/martyrs/src/modules/core/views/router/addRoutes.js.map +1 -1
  130. package/dist/martyrs/src/modules/core/views/store/core.store.js +1 -1
  131. package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js +10 -0
  132. package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js.map +1 -1
  133. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +4 -4
  134. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +2 -2
  135. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +3 -3
  136. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +9 -9
  137. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js.map +1 -1
  138. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +2 -2
  139. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +1 -0
  140. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js.map +1 -1
  141. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +23 -33
  142. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js.map +1 -1
  143. package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js +13 -13
  144. package/dist/martyrs/src/modules/events/components/sections/Feed.vue.js +1 -1
  145. package/dist/martyrs/src/modules/events/components/sections/List.vue.js +3 -3
  146. package/dist/martyrs/src/modules/events/components/sections/List.vue.js.map +1 -1
  147. package/dist/martyrs/src/modules/events/events.client.js +37 -15
  148. package/dist/martyrs/src/modules/events/events.client.js.map +1 -1
  149. package/dist/martyrs/src/modules/events/router/events.backoffice.router.js +95 -0
  150. package/dist/martyrs/src/modules/events/router/events.backoffice.router.js.map +1 -0
  151. package/dist/martyrs/src/modules/events/router/events.organization.router.js +95 -0
  152. package/dist/martyrs/src/modules/events/router/events.organization.router.js.map +1 -0
  153. package/dist/martyrs/src/modules/events/router/events.router.js +73 -364
  154. package/dist/martyrs/src/modules/events/router/events.router.js.map +1 -1
  155. package/dist/martyrs/src/modules/events/router/events.user.router.js +65 -0
  156. package/dist/martyrs/src/modules/events/router/events.user.router.js.map +1 -0
  157. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +3 -3
  158. package/dist/martyrs/src/modules/governance/configs/navigation.initiative.config.js +33 -0
  159. package/dist/martyrs/src/modules/governance/configs/navigation.initiative.config.js.map +1 -0
  160. package/dist/martyrs/src/modules/governance/governance.client.js +31 -0
  161. package/dist/martyrs/src/modules/governance/governance.client.js.map +1 -0
  162. package/dist/martyrs/src/modules/governance/views/components/blocks/CardInitiativeItem.vue.js +110 -0
  163. package/dist/martyrs/src/modules/governance/views/components/blocks/CardInitiativeItem.vue.js.map +1 -0
  164. package/dist/martyrs/src/modules/governance/views/components/blocks/CardSprintItem.vue.js +105 -0
  165. package/dist/martyrs/src/modules/governance/views/components/blocks/CardSprintItem.vue.js.map +1 -0
  166. package/dist/martyrs/src/modules/governance/views/components/blocks/CardTaskItem.vue.js +110 -0
  167. package/dist/martyrs/src/modules/governance/views/components/blocks/CardTaskItem.vue.js.map +1 -0
  168. package/dist/martyrs/src/modules/governance/views/components/blocks/CardVotingItem.vue.js +106 -0
  169. package/dist/martyrs/src/modules/governance/views/components/blocks/CardVotingItem.vue.js.map +1 -0
  170. package/dist/martyrs/src/modules/governance/views/components/pages/Governance.vue.js +52 -0
  171. package/dist/martyrs/src/modules/governance/views/components/pages/Governance.vue.js.map +1 -0
  172. package/dist/martyrs/src/modules/governance/views/components/pages/Initiative.vue.js +684 -0
  173. package/dist/martyrs/src/modules/governance/views/components/pages/Initiative.vue.js.map +1 -0
  174. package/dist/martyrs/src/modules/governance/views/components/pages/InitiativeCreate.vue.js +78 -0
  175. package/dist/martyrs/src/modules/governance/views/components/pages/InitiativeCreate.vue.js.map +1 -0
  176. package/dist/martyrs/src/modules/governance/views/components/pages/InitiativeSprints.vue.js +328 -0
  177. package/dist/martyrs/src/modules/governance/views/components/pages/InitiativeSprints.vue.js.map +1 -0
  178. package/dist/martyrs/src/modules/governance/views/components/pages/Initiatives.vue.js +145 -0
  179. package/dist/martyrs/src/modules/governance/views/components/pages/Initiatives.vue.js.map +1 -0
  180. package/dist/martyrs/src/modules/governance/views/components/pages/Sprint.vue.js +258 -0
  181. package/dist/martyrs/src/modules/governance/views/components/pages/Sprint.vue.js.map +1 -0
  182. package/dist/martyrs/src/modules/governance/views/components/pages/SprintCreate.vue.js +72 -0
  183. package/dist/martyrs/src/modules/governance/views/components/pages/SprintCreate.vue.js.map +1 -0
  184. package/dist/martyrs/src/modules/governance/views/components/pages/Task.vue.js +769 -0
  185. package/dist/martyrs/src/modules/governance/views/components/pages/Task.vue.js.map +1 -0
  186. package/dist/martyrs/src/modules/governance/views/components/pages/TaskCreate.vue.js +88 -0
  187. package/dist/martyrs/src/modules/governance/views/components/pages/TaskCreate.vue.js.map +1 -0
  188. package/dist/martyrs/src/modules/governance/views/components/pages/Tasks.vue.js +291 -0
  189. package/dist/martyrs/src/modules/governance/views/components/pages/Tasks.vue.js.map +1 -0
  190. package/dist/martyrs/src/modules/governance/views/components/pages/Voting.vue.js +267 -0
  191. package/dist/martyrs/src/modules/governance/views/components/pages/Voting.vue.js.map +1 -0
  192. package/dist/martyrs/src/modules/governance/views/components/pages/VotingCreate.vue.js +90 -0
  193. package/dist/martyrs/src/modules/governance/views/components/pages/VotingCreate.vue.js.map +1 -0
  194. package/dist/martyrs/src/modules/governance/views/components/pages/Votings.vue.js +68 -0
  195. package/dist/martyrs/src/modules/governance/views/components/pages/Votings.vue.js.map +1 -0
  196. package/dist/martyrs/src/modules/governance/views/components/partials/EmptyState.vue.js +47 -0
  197. package/dist/martyrs/src/modules/governance/views/components/partials/EmptyState.vue.js.map +1 -0
  198. package/dist/martyrs/src/modules/governance/views/components/partials/LinkedEntityCard.vue.js +164 -0
  199. package/dist/martyrs/src/modules/governance/views/components/partials/LinkedEntityCard.vue.js.map +1 -0
  200. package/dist/martyrs/src/modules/governance/views/components/partials/TaskStatusBadge.vue.js +39 -0
  201. package/dist/martyrs/src/modules/governance/views/components/partials/TaskStatusBadge.vue.js.map +1 -0
  202. package/dist/martyrs/src/modules/governance/views/components/partials/VoteForm.vue.js +112 -0
  203. package/dist/martyrs/src/modules/governance/views/components/partials/VoteForm.vue.js.map +1 -0
  204. package/dist/martyrs/src/modules/governance/views/components/partials/VotingResults.vue.js +187 -0
  205. package/dist/martyrs/src/modules/governance/views/components/partials/VotingResults.vue.js.map +1 -0
  206. package/dist/martyrs/src/modules/governance/views/components/sections/FormInitiativeDetails.vue.js +555 -0
  207. package/dist/martyrs/src/modules/governance/views/components/sections/FormInitiativeDetails.vue.js.map +1 -0
  208. package/dist/martyrs/src/modules/governance/views/components/sections/FormSprintDetails.vue.js +187 -0
  209. package/dist/martyrs/src/modules/governance/views/components/sections/FormSprintDetails.vue.js.map +1 -0
  210. package/dist/martyrs/src/modules/governance/views/components/sections/FormTaskDetails.vue.js +171 -0
  211. package/dist/martyrs/src/modules/governance/views/components/sections/FormTaskDetails.vue.js.map +1 -0
  212. package/dist/martyrs/src/modules/governance/views/components/sections/FormVotingDetails.vue.js +179 -0
  213. package/dist/martyrs/src/modules/governance/views/components/sections/FormVotingDetails.vue.js.map +1 -0
  214. package/dist/martyrs/src/modules/governance/views/router/governance.router.js +502 -0
  215. package/dist/martyrs/src/modules/governance/views/router/governance.router.js.map +1 -0
  216. package/dist/martyrs/src/modules/governance/views/store/initiatives.js +119 -0
  217. package/dist/martyrs/src/modules/governance/views/store/initiatives.js.map +1 -0
  218. package/dist/martyrs/src/modules/governance/views/store/sprints.js +99 -0
  219. package/dist/martyrs/src/modules/governance/views/store/sprints.js.map +1 -0
  220. package/dist/martyrs/src/modules/governance/views/store/tasks.js +115 -0
  221. package/dist/martyrs/src/modules/governance/views/store/tasks.js.map +1 -0
  222. package/dist/martyrs/src/modules/governance/views/store/votings.js +155 -0
  223. package/dist/martyrs/src/modules/governance/views/store/votings.js.map +1 -0
  224. package/dist/martyrs/src/modules/icons/entities/IconCash.vue.js +70 -0
  225. package/dist/martyrs/src/modules/icons/entities/IconCash.vue.js.map +1 -0
  226. package/dist/martyrs/src/modules/icons/icons.client.js +1 -1
  227. package/dist/martyrs/src/modules/icons/icons.client.js.map +1 -1
  228. package/dist/martyrs/src/modules/icons/{icons.router.js → router/icons.router.js} +1 -1
  229. package/dist/martyrs/src/modules/icons/router/icons.router.js.map +1 -0
  230. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +3 -3
  231. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js +3 -3
  232. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js +2 -2
  233. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +3 -3
  234. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js +1 -1
  235. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +6 -6
  236. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js.map +1 -1
  237. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +1 -1
  238. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js +9 -9
  239. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +4 -4
  240. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +2 -2
  241. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +4 -4
  242. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +7 -7
  243. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +3 -3
  244. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +4 -4
  245. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +3 -3
  246. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +4 -4
  247. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +3 -3
  248. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +3 -3
  249. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +10 -10
  250. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +13 -13
  251. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +11 -11
  252. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +10 -10
  253. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +18 -18
  254. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
  255. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js +2 -2
  256. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +4 -4
  257. package/dist/martyrs/src/modules/music/components/player/PlayerControls.vue.js +10 -10
  258. package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js +6 -6
  259. package/dist/martyrs/src/modules/music/components/sections/PopularTracks.vue.js +63 -0
  260. package/dist/martyrs/src/modules/music/components/sections/PopularTracks.vue.js.map +1 -0
  261. package/dist/martyrs/src/modules/music/music.client.js +29 -25
  262. package/dist/martyrs/src/modules/music/music.client.js.map +1 -1
  263. package/dist/martyrs/src/modules/music/{music.router.js → router/music.router.js} +16 -16
  264. package/dist/martyrs/src/modules/music/router/music.router.js.map +1 -0
  265. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +26 -27
  266. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js.map +1 -1
  267. package/dist/martyrs/src/modules/notifications/components/sections/NotificationPreferences.vue.js +119 -60
  268. package/dist/martyrs/src/modules/notifications/components/sections/NotificationPreferences.vue.js.map +1 -1
  269. package/dist/martyrs/src/modules/notifications/notifications.client.js +76 -56
  270. package/dist/martyrs/src/modules/notifications/notifications.client.js.map +1 -1
  271. package/dist/martyrs/src/modules/notifications/{notifications.router.js → router/notifications.router.js} +3 -3
  272. package/dist/martyrs/src/modules/notifications/router/notifications.router.js.map +1 -0
  273. package/dist/martyrs/src/modules/notifications/store/notifications.store.js +1 -1
  274. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js +34 -44
  275. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js.map +1 -1
  276. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js +47 -57
  277. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js.map +1 -1
  278. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js +2 -2
  279. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js.map +1 -1
  280. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js +2 -2
  281. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js.map +1 -1
  282. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +3 -3
  283. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +5 -5
  284. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js.map +1 -1
  285. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +7 -7
  286. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js +61 -54
  287. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js.map +1 -1
  288. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js +43 -31
  289. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js.map +1 -1
  290. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +13 -13
  291. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +3 -3
  292. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js.map +1 -1
  293. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +19 -19
  294. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +7 -10
  295. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js.map +1 -1
  296. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +7 -10
  297. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js.map +1 -1
  298. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +4 -4
  299. package/dist/martyrs/src/modules/orders/orders.client.js +16 -16
  300. package/dist/martyrs/src/modules/orders/orders.client.js.map +1 -1
  301. package/dist/martyrs/src/modules/orders/store/shopcart.js +1 -1
  302. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +11 -4
  303. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js.map +1 -1
  304. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +2 -2
  305. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +2 -2
  306. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +22 -15
  307. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js.map +1 -1
  308. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +2 -2
  309. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +63 -1
  310. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js.map +1 -1
  311. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +9 -3
  312. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
  313. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +13 -7
  314. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js.map +1 -1
  315. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +24 -30
  316. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js.map +1 -1
  317. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +2 -2
  318. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +2 -2
  319. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
  320. package/dist/martyrs/src/modules/organizations/organizations.client.js +42 -6
  321. package/dist/martyrs/src/modules/organizations/organizations.client.js.map +1 -1
  322. package/dist/martyrs/src/modules/organizations/router/organizations.backoffice.router.js +20 -0
  323. package/dist/martyrs/src/modules/organizations/router/organizations.backoffice.router.js.map +1 -0
  324. package/dist/martyrs/src/modules/organizations/router/organizations.router.js +102 -0
  325. package/dist/martyrs/src/modules/organizations/router/organizations.router.js.map +1 -0
  326. package/dist/martyrs/src/modules/organizations/router/organizations.user.router.js +20 -0
  327. package/dist/martyrs/src/modules/organizations/router/organizations.user.router.js.map +1 -0
  328. package/dist/martyrs/src/modules/pages/pages.client.js +1 -1
  329. package/dist/martyrs/src/modules/pages/pages.client.js.map +1 -1
  330. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
  331. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +3 -3
  332. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +2 -2
  333. package/dist/martyrs/src/modules/pages/{pages.router.js → views/router/pages.router.js} +8 -8
  334. package/dist/martyrs/src/modules/pages/views/router/pages.router.js.map +1 -0
  335. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js +1 -1
  336. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js.map +1 -1
  337. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js +1 -1
  338. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +1 -1
  339. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +7 -7
  340. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +1 -1
  341. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +21 -21
  342. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +3 -3
  343. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  344. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +3 -3
  345. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +3 -3
  346. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +20 -20
  347. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +4 -4
  348. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +4 -4
  349. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +3 -3
  350. package/dist/martyrs/src/modules/rents/rents.client.js +1 -1
  351. package/dist/martyrs/src/modules/rents/rents.client.js.map +1 -1
  352. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +6 -6
  353. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +4 -4
  354. package/dist/martyrs/src/modules/rents/{rents.router.js → views/router/rents.router.js} +4 -4
  355. package/dist/martyrs/src/modules/rents/views/router/rents.router.js.map +1 -0
  356. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +2 -2
  357. package/dist/martyrs/src/modules/reports/reports.client.js +1 -1
  358. package/dist/martyrs/src/modules/reports/reports.client.js.map +1 -1
  359. package/dist/martyrs/src/modules/reports/{reports.router.js → router/reports.router.js} +1 -1
  360. package/dist/martyrs/src/modules/reports/router/reports.router.js.map +1 -0
  361. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
  362. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +2 -2
  363. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +11 -11
  364. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +21 -21
  365. package/dist/martyrs/src/modules/wallet/views/components/pages/Payments.vue.js +68 -0
  366. package/dist/martyrs/src/modules/wallet/views/components/pages/Payments.vue.js.map +1 -0
  367. package/dist/martyrs/src/modules/wallet/views/router/wallet.router.js +48 -0
  368. package/dist/martyrs/src/modules/wallet/views/router/wallet.router.js.map +1 -0
  369. package/dist/martyrs/src/modules/wallet/views/store/payments.store.js +59 -0
  370. package/dist/martyrs/src/modules/wallet/views/store/payments.store.js.map +1 -0
  371. package/dist/martyrs/src/modules/wallet/wallet.client.js +20 -0
  372. package/dist/martyrs/src/modules/wallet/wallet.client.js.map +1 -0
  373. package/dist/martyrs.es.js +84 -41
  374. package/dist/martyrs.es10.js +126 -0
  375. package/dist/martyrs.es101.js +39 -0
  376. package/dist/martyrs.es102.js +31 -0
  377. package/dist/martyrs.es104.js +27 -0
  378. package/dist/martyrs.es105.js +8 -0
  379. package/dist/martyrs.es106.js +9 -0
  380. package/dist/martyrs.es107.js +79 -0
  381. package/dist/martyrs.es108.js +7 -0
  382. package/dist/martyrs.es109.js +121 -0
  383. package/dist/martyrs.es11.js +49 -0
  384. package/dist/martyrs.es112.js +4 -0
  385. package/dist/martyrs.es113.js +169 -0
  386. package/dist/martyrs.es114.js +460 -0
  387. package/dist/martyrs.es115.js +42 -0
  388. package/dist/martyrs.es116.js +12 -0
  389. package/dist/martyrs.es117.js +52 -0
  390. package/dist/martyrs.es118.js +14 -0
  391. package/dist/martyrs.es119.js +47 -0
  392. package/dist/martyrs.es12.js +94 -0
  393. package/dist/martyrs.es120.js +7 -0
  394. package/dist/martyrs.es121.js +131 -0
  395. package/dist/martyrs.es122.js +103 -0
  396. package/dist/martyrs.es123.js +89 -0
  397. package/dist/martyrs.es124.js +40 -0
  398. package/dist/martyrs.es125.js +14 -0
  399. package/dist/martyrs.es126.js +42 -0
  400. package/dist/martyrs.es127.js +11 -0
  401. package/dist/martyrs.es128.js +25 -0
  402. package/dist/martyrs.es129.js +7 -0
  403. package/dist/martyrs.es13.js +48 -0
  404. package/dist/martyrs.es130.js +10 -0
  405. package/dist/martyrs.es131.js +119 -0
  406. package/dist/martyrs.es132.js +20 -0
  407. package/dist/martyrs.es133.js +18 -0
  408. package/dist/martyrs.es134.js +6 -0
  409. package/dist/martyrs.es135.js +35 -0
  410. package/dist/martyrs.es136.js +12 -0
  411. package/dist/martyrs.es137.js +23 -0
  412. package/dist/martyrs.es138.js +12 -0
  413. package/dist/martyrs.es139.js +11 -0
  414. package/dist/martyrs.es14.js +101 -0
  415. package/dist/martyrs.es140.js +47 -0
  416. package/dist/martyrs.es141.js +483 -0
  417. package/dist/martyrs.es142.js +8 -0
  418. package/dist/martyrs.es143.js +4 -0
  419. package/dist/martyrs.es144.js +33 -0
  420. package/dist/martyrs.es145.js +14 -0
  421. package/dist/martyrs.es146.js +19 -0
  422. package/dist/martyrs.es147.js +22 -0
  423. package/dist/martyrs.es148.js +31 -0
  424. package/dist/martyrs.es149.js +23 -0
  425. package/dist/martyrs.es15.js +408 -0
  426. package/dist/martyrs.es16.js +58 -0
  427. package/dist/martyrs.es17.js +44 -0
  428. package/dist/martyrs.es18.js +42 -0
  429. package/dist/martyrs.es19.js +27 -0
  430. package/dist/martyrs.es2.js +88 -0
  431. package/dist/martyrs.es20.js +13 -0
  432. package/dist/martyrs.es21.js +57 -0
  433. package/dist/martyrs.es22.js +104 -0
  434. package/dist/martyrs.es23.js +178 -0
  435. package/dist/martyrs.es24.js +123 -0
  436. package/dist/martyrs.es25.js +139 -0
  437. package/dist/martyrs.es26.js +21 -0
  438. package/dist/martyrs.es27.js +60 -0
  439. package/dist/martyrs.es28.js +75 -0
  440. package/dist/martyrs.es29.js +36 -0
  441. package/dist/martyrs.es3.js +116 -0
  442. package/dist/martyrs.es30.js +348 -0
  443. package/dist/martyrs.es31.js +83 -0
  444. package/dist/martyrs.es32.js +148 -0
  445. package/dist/martyrs.es33.js +175 -0
  446. package/dist/martyrs.es34.js +66 -0
  447. package/dist/martyrs.es35.js +57 -0
  448. package/dist/martyrs.es36.js +76 -0
  449. package/dist/martyrs.es37.js +101 -0
  450. package/dist/martyrs.es38.js +39 -0
  451. package/dist/martyrs.es39.js +124 -0
  452. package/dist/martyrs.es4.js +85 -0
  453. package/dist/martyrs.es40.js +120 -0
  454. package/dist/martyrs.es41.js +229 -0
  455. package/dist/martyrs.es43.js +29 -0
  456. package/dist/martyrs.es44.js +27 -0
  457. package/dist/martyrs.es46.js +9 -0
  458. package/dist/martyrs.es48.js +18 -0
  459. package/dist/martyrs.es5.js +395 -0
  460. package/dist/martyrs.es50.js +42 -0
  461. package/dist/martyrs.es52.js +255 -0
  462. package/dist/martyrs.es54.js +8 -0
  463. package/dist/martyrs.es6.js +70 -0
  464. package/dist/martyrs.es61.js +139 -0
  465. package/dist/martyrs.es65.js +28 -0
  466. package/dist/martyrs.es68.js +33 -0
  467. package/dist/martyrs.es69.js +37 -0
  468. package/dist/martyrs.es7.js +17 -0
  469. package/dist/martyrs.es71.js +114 -0
  470. package/dist/martyrs.es73.js +83 -0
  471. package/dist/martyrs.es74.js +52 -0
  472. package/dist/martyrs.es75.js +75 -0
  473. package/dist/martyrs.es76.js +176 -0
  474. package/dist/martyrs.es77.js +31 -0
  475. package/dist/martyrs.es78.js +38 -0
  476. package/dist/martyrs.es8.js +127 -0
  477. package/dist/martyrs.es81.js +32 -0
  478. package/dist/martyrs.es86.js +37 -0
  479. package/dist/martyrs.es89.js +37 -0
  480. package/dist/martyrs.es9.js +396 -0
  481. package/dist/martyrs.es91.js +63 -0
  482. package/dist/martyrs.es92.js +35 -0
  483. package/dist/martyrs.es94.js +41 -0
  484. package/dist/martyrs.es95.js +59 -0
  485. package/dist/martyrs.es96.js +123 -0
  486. package/dist/martyrs.es97.js +43 -0
  487. package/dist/martyrs.es98.js +86 -0
  488. package/dist/martyrs.es99.js +33 -0
  489. package/dist/music.server.js +11 -11
  490. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/index.js +1 -1
  491. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js +1 -1
  492. package/dist/node_modules/.pnpm/capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/index.js +1 -1
  493. package/dist/node_modules/.pnpm/capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/web.js +1 -1
  494. package/dist/notifications.server.js +16 -6
  495. package/dist/orders.server.js +264 -145
  496. package/dist/organizations.server.js +22 -6
  497. package/dist/products.server.js +7 -7
  498. package/dist/rents.server.js +4 -3
  499. package/dist/style.css +970 -986
  500. package/package.json +13 -6
  501. package/src/builder/modes/ssr.rspack.dev.js +32 -20
  502. package/src/builder/rspack/rspack.config.api.js +3 -0
  503. package/src/builder/rspack/rspack.config.base.js +9 -1
  504. package/src/builder/rspack/rspack.config.ssr.client.js +8 -5
  505. package/src/components/Block/Block.vue +1 -1
  506. package/src/components/Button/Button.vue +4 -4
  507. package/src/components/Table/StatusBadge.vue +24 -18
  508. package/src/components/Text/Text.vue +1 -1
  509. package/src/jit/core.js +72 -35
  510. package/src/jit/plugin.js +4 -3
  511. package/src/jit/rules.js +15 -15
  512. package/src/modules/TASKS.MD +30 -0
  513. package/src/modules/TASK_ACTIVITY.md +60 -0
  514. package/src/modules/TASK_MODULE_ARCH.md +391 -0
  515. package/src/modules/auth/controllers/routes/users.routes.js +8 -0
  516. package/src/modules/auth/controllers/services/users.service.js +51 -1
  517. package/src/modules/auth/views/components/blocks/PopupAuth.vue +1 -1
  518. package/src/modules/auth/views/components/pages/ProfileBlogposts.vue +25 -24
  519. package/src/modules/auth/views/components/pages/SignIn.vue +10 -1
  520. package/src/modules/auth/views/components/pages/UserDashboard.vue +35 -62
  521. package/src/modules/auth/views/router/users.router.js +0 -44
  522. package/src/modules/backoffice/components/pages/Dashboard.vue +423 -120
  523. package/src/modules/backoffice/configs/navigation.backoffice.config.js +0 -2
  524. package/src/modules/backoffice/router/backoffice.router.js +0 -25
  525. package/src/modules/community/community.client.js +54 -9
  526. package/src/modules/community/components/blocks/CardBlogpost.vue +10 -3
  527. package/src/modules/community/components/layouts/Community.vue +3 -3
  528. package/src/modules/community/components/pages/BlogPost.vue +1 -1
  529. package/src/modules/community/components/pages/CreateBlogPost.vue +19 -20
  530. package/src/modules/community/components/pages/Posts.vue +43 -28
  531. package/src/modules/community/components/sections/Comment.vue +1 -1
  532. package/src/modules/community/controllers/blog.controller.js +4 -5
  533. package/src/modules/community/models/reaction.model.js +1 -0
  534. package/src/modules/community/router/community.backoffice.router.js +16 -0
  535. package/src/modules/community/router/community.organization.router.js +56 -0
  536. package/src/modules/community/router/community.router.js +58 -106
  537. package/src/modules/community/router/community.user.router.js +15 -0
  538. package/src/modules/constructor/components/elements/Textarea.vue +1 -1
  539. package/src/modules/constructor/components/sections/Constructor.vue +1 -1
  540. package/src/modules/core/controllers/classes/core.validator.js +7 -1
  541. package/src/modules/core/controllers/classes/core.verifier.js +0 -2
  542. package/src/modules/core/controllers/classes/crud/crud.controller.js +0 -4
  543. package/src/modules/core/controllers/classes/crud/crud.service.js +1 -0
  544. package/src/modules/core/models/schemas/engagement.schema.js +19 -22
  545. package/src/modules/core/views/classes/core.app.js +6 -4
  546. package/src/modules/core/views/classes/i18n.manager.js +9 -2
  547. package/src/modules/core/views/classes/ws.manager.js +17 -7
  548. package/src/modules/core/views/components/blocks/Card.vue +47 -24
  549. package/src/modules/core/views/components/blocks/CardStat.vue +27 -0
  550. package/src/modules/core/views/components/blocks/PopupAuth.vue +1 -1
  551. package/src/modules/core/views/components/layouts/Client.vue +5 -4
  552. package/src/modules/core/views/components/partials/BottomNavigationBar.vue +5 -5
  553. package/src/modules/core/views/components/partials/Header.vue +2 -2
  554. package/src/modules/core/views/components/partials/Navigation.vue +13 -14
  555. package/src/modules/core/views/components/partials/Sidebar.vue +4 -6
  556. package/src/modules/core/views/components/sections/SectionPageTitle.vue +23 -15
  557. package/src/modules/core/views/mixins/mixins.js +4 -3
  558. package/src/modules/core/views/router/addRoutes.js +1 -2
  559. package/src/modules/core/views/utils/vue-app-renderer.js +12 -0
  560. package/src/modules/events/components/pages/EditEventTickets.vue +1 -1
  561. package/src/modules/events/components/pages/Events.vue +1 -0
  562. package/src/modules/events/components/pages/EventsBackoffice.vue +23 -48
  563. package/src/modules/events/components/sections/List.vue +2 -2
  564. package/src/modules/events/events.client.js +44 -17
  565. package/src/modules/events/router/events.backoffice.router.js +80 -0
  566. package/src/modules/events/router/events.organization.router.js +80 -0
  567. package/src/modules/events/router/events.router.js +55 -325
  568. package/src/modules/events/router/events.user.router.js +49 -0
  569. package/src/modules/governance/TASK-TRACKER.MD +534 -39
  570. package/src/modules/governance/configs/navigation.initiative.config.js +30 -0
  571. package/src/modules/governance/controllers/routes/initiatives.routes.js +55 -8
  572. package/src/modules/governance/controllers/routes/{milestones.routes.js → sprints.routes.js} +22 -22
  573. package/src/modules/governance/controllers/routes/tasks.routes.js +2 -2
  574. package/src/modules/governance/governance.client.js +1 -4
  575. package/src/modules/governance/governance.server.js +6 -6
  576. package/src/modules/governance/middlewares/initiatives.verifier.js +60 -0
  577. package/src/modules/governance/middlewares/{milestones.verifier.js → sprints.verifier.js} +10 -10
  578. package/src/modules/governance/middlewares/tasks.verifier.js +4 -4
  579. package/src/modules/governance/middlewares/votings.verifier.js +25 -7
  580. package/src/modules/governance/models/{milestone.model.js → sprint.model.js} +11 -11
  581. package/src/modules/governance/models/task.model.js +4 -4
  582. package/src/modules/governance/models/voting.model.js +10 -5
  583. package/src/modules/governance/views/components/blocks/CardInitiativeItem.vue +8 -13
  584. package/src/modules/governance/views/components/blocks/{CardMilestoneItem.vue → CardSprintItem.vue} +16 -17
  585. package/src/modules/governance/views/components/blocks/CardTaskItem.vue +7 -9
  586. package/src/modules/governance/views/components/blocks/CardVotingItem.vue +7 -9
  587. package/src/modules/governance/views/components/pages/Governance.vue +13 -34
  588. package/src/modules/governance/views/components/pages/Initiative.vue +73 -154
  589. package/src/modules/governance/views/components/pages/InitiativeCreate.vue +44 -7
  590. package/src/modules/governance/views/components/pages/{Roadmap.vue → InitiativeSprints.vue} +70 -69
  591. package/src/modules/governance/views/components/pages/Initiatives.vue +23 -108
  592. package/src/modules/governance/views/components/pages/{Milestone.vue → Sprint.vue} +43 -41
  593. package/src/modules/governance/views/components/pages/SprintCreate.vue +55 -0
  594. package/src/modules/governance/views/components/pages/Task.vue +95 -88
  595. package/src/modules/governance/views/components/pages/TaskCreate.vue +47 -9
  596. package/src/modules/governance/views/components/pages/Tasks.vue +25 -21
  597. package/src/modules/governance/views/components/pages/Voting.vue +84 -68
  598. package/src/modules/governance/views/components/pages/VotingCreate.vue +48 -8
  599. package/src/modules/governance/views/components/pages/Votings.vue +12 -57
  600. package/src/modules/governance/views/components/partials/EmptyState.vue +1 -1
  601. package/src/modules/governance/views/components/partials/LinkedEntityCard.vue +23 -11
  602. package/src/modules/governance/views/components/partials/TaskStatusBadge.vue +1 -1
  603. package/src/modules/governance/views/components/partials/VoteForm.vue +3 -3
  604. package/src/modules/governance/views/components/partials/VotingResults.vue +13 -19
  605. package/src/modules/governance/views/components/sections/FormInitiativeDetails.vue +413 -15
  606. package/src/modules/governance/views/components/sections/FormSprintDetails.vue +156 -0
  607. package/src/modules/governance/views/components/sections/FormTaskDetails.vue +125 -21
  608. package/src/modules/governance/views/components/sections/FormVotingDetails.vue +136 -17
  609. package/src/modules/governance/views/components/sections/VoteForm.vue +2 -2
  610. package/src/modules/governance/views/router/governance.router.js +255 -151
  611. package/src/modules/governance/views/store/initiatives.js +23 -2
  612. package/src/modules/governance/views/store/sprints.js +102 -0
  613. package/src/modules/governance/views/store/tasks.js +25 -9
  614. package/src/modules/governance/views/store/votings.js +106 -27
  615. package/src/modules/icons/icons.client.js +1 -1
  616. package/src/modules/inventory/components/pages/InventoryEdit.vue +1 -1
  617. package/src/modules/music/components/sections/PopularTracks.vue +52 -0
  618. package/src/modules/music/music.client.js +8 -1
  619. package/src/modules/music/router/music.router.js +13 -1
  620. package/src/modules/notifications/components/elements/NotificationBadge.vue +8 -33
  621. package/src/modules/notifications/components/sections/NotificationPreferences.vue +110 -48
  622. package/src/modules/notifications/notifications.client.js +78 -57
  623. package/src/modules/notifications/router/notifications.router.js +32 -15
  624. package/src/modules/notifications/services/notification.service.js +15 -6
  625. package/src/modules/notifications/services/web-push.service.js +2 -0
  626. package/src/modules/orders/components/blocks/CardApplication.vue +20 -40
  627. package/src/modules/orders/components/blocks/CardCustomer.vue +35 -55
  628. package/src/modules/orders/components/blocks/CardOrderItem.vue +2 -2
  629. package/src/modules/orders/components/blocks/CardOrderUser.vue +2 -2
  630. package/src/modules/orders/components/forms/FormCustomerDetails.vue +2 -2
  631. package/src/modules/orders/components/pages/Applications.vue +59 -57
  632. package/src/modules/orders/components/pages/Customers.vue +40 -27
  633. package/src/modules/orders/components/pages/OrderCreate.vue +1 -1
  634. package/src/modules/orders/components/sections/ApplicationDetails.vue +1 -4
  635. package/src/modules/orders/components/sections/CustomerDetails.vue +1 -4
  636. package/src/modules/orders/controllers/orders.controller.js +113 -0
  637. package/src/modules/orders/middlewares/applications.verifier.js +13 -37
  638. package/src/modules/orders/middlewares/customers.verifier.js +44 -121
  639. package/src/modules/orders/models/customer.model.js +0 -1
  640. package/src/modules/orders/routes/applications.routes.js +108 -50
  641. package/src/modules/orders/routes/orders.routes.js +9 -1
  642. package/src/modules/organizations/components/blocks/CardOrganization.vue +12 -4
  643. package/src/modules/organizations/components/forms/DepartmentForm.vue +9 -4
  644. package/src/modules/organizations/components/pages/Members.vue +62 -1
  645. package/src/modules/organizations/components/pages/Organization.new.vue +17 -17
  646. package/src/modules/organizations/components/pages/Organization.vue +8 -1
  647. package/src/modules/organizations/components/pages/OrganizationBackoffice.vue +1 -1
  648. package/src/modules/organizations/components/pages/OrganizationEdit.vue +11 -4
  649. package/src/modules/organizations/components/pages/Organizations.vue +33 -46
  650. package/src/modules/organizations/controllers/invites.controller.js +19 -0
  651. package/src/modules/organizations/controllers/memberships.controller.js +1 -0
  652. package/src/modules/organizations/organizations.client.js +48 -7
  653. package/src/modules/organizations/router/organizations.backoffice.router.js +15 -0
  654. package/src/modules/organizations/router/organizations.router.js +72 -112
  655. package/src/modules/organizations/router/organizations.user.router.js +15 -0
  656. package/src/modules/pages/pages.client.js +1 -1
  657. package/src/modules/pages/views/router/pages.router.js +95 -15
  658. package/src/modules/products/components/blocks/CardPosition.vue +1 -1
  659. package/src/modules/products/components/pages/Products.vue +3 -3
  660. package/src/modules/rents/controllers/services/rents.services.js +1 -0
  661. package/src/modules/rents/rents.client.js +1 -1
  662. package/src/modules/rents/views/router/rents.router.js +93 -33
  663. package/src/modules/reports/reports.client.js +1 -1
  664. package/src/modules/wallet/wallet.client.js +1 -1
  665. package/src/styles/theme.scss +5 -3
  666. package/dist/engagement.schema-fh6W1fb_.js +0 -24
  667. package/dist/main-DQm5pwFO.js +0 -8213
  668. package/dist/martyrs/dist/main-DQm5pwFO.js +0 -1080
  669. package/dist/martyrs/dist/main-DQm5pwFO.js.map +0 -1
  670. package/dist/martyrs/dist/web-n_ivHO3v.js +0 -55
  671. package/dist/martyrs/dist/web-n_ivHO3v.js.map +0 -1
  672. package/dist/martyrs/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js +0 -487
  673. package/dist/martyrs/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js.map +0 -1
  674. package/dist/martyrs/node_modules/.pnpm/@capacitor_preferences@7.0.2_@capacitor_core@7.4.4/node_modules/@capacitor/preferences/dist/esm/index.js +0 -8
  675. package/dist/martyrs/node_modules/.pnpm/@capacitor_preferences@7.0.2_@capacitor_core@7.4.4/node_modules/@capacitor/preferences/dist/esm/index.js.map +0 -1
  676. package/dist/martyrs/node_modules/.pnpm/@capacitor_preferences@7.0.2_@capacitor_core@7.4.4/node_modules/@capacitor/preferences/dist/esm/web.js +0 -73
  677. package/dist/martyrs/node_modules/.pnpm/@capacitor_preferences@7.0.2_@capacitor_core@7.4.4/node_modules/@capacitor/preferences/dist/esm/web.js.map +0 -1
  678. package/dist/martyrs/src/components/Address/Address.vue.js.map +0 -1
  679. package/dist/martyrs/src/components/Button/Button.vue.js.map +0 -1
  680. package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.js.map +0 -1
  681. package/dist/martyrs/src/components/Loader/Loader.vue2.js.map +0 -1
  682. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js.map +0 -1
  683. package/dist/martyrs/src/modules/community/community.router.js +0 -124
  684. package/dist/martyrs/src/modules/community/community.router.js.map +0 -1
  685. package/dist/martyrs/src/modules/icons/icons.router.js.map +0 -1
  686. package/dist/martyrs/src/modules/music/music.router.js.map +0 -1
  687. package/dist/martyrs/src/modules/notifications/notifications.router.js.map +0 -1
  688. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +0 -200
  689. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js.map +0 -1
  690. package/dist/martyrs/src/modules/organizations/organizations.router.js +0 -145
  691. package/dist/martyrs/src/modules/organizations/organizations.router.js.map +0 -1
  692. package/dist/martyrs/src/modules/pages/pages.router.js.map +0 -1
  693. package/dist/martyrs/src/modules/rents/rents.router.js.map +0 -1
  694. package/dist/martyrs/src/modules/reports/reports.router.js.map +0 -1
  695. package/dist/martyrs.css +0 -1
  696. package/dist/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js +0 -487
  697. package/dist/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js.map +0 -1
  698. package/dist/node_modules/.pnpm/@capacitor_device@7.0.1_@capacitor_core@7.4.4/node_modules/@capacitor/device/dist/esm/index.js +0 -8
  699. package/dist/node_modules/.pnpm/@capacitor_device@7.0.1_@capacitor_core@7.4.4/node_modules/@capacitor/device/dist/esm/index.js.map +0 -1
  700. package/dist/node_modules/.pnpm/@capacitor_device@7.0.1_@capacitor_core@7.4.4/node_modules/@capacitor/device/dist/esm/web.js +0 -146
  701. package/dist/node_modules/.pnpm/@capacitor_device@7.0.1_@capacitor_core@7.4.4/node_modules/@capacitor/device/dist/esm/web.js.map +0 -1
  702. package/dist/node_modules/.pnpm/@capacitor_keyboard@7.0.1_@capacitor_core@7.4.4/node_modules/@capacitor/keyboard/dist/esm/definitions.js +0 -18
  703. package/dist/node_modules/.pnpm/@capacitor_keyboard@7.0.1_@capacitor_core@7.4.4/node_modules/@capacitor/keyboard/dist/esm/definitions.js.map +0 -1
  704. package/dist/node_modules/.pnpm/@capacitor_keyboard@7.0.1_@capacitor_core@7.4.4/node_modules/@capacitor/keyboard/dist/esm/index.js +0 -9
  705. package/dist/node_modules/.pnpm/@capacitor_keyboard@7.0.1_@capacitor_core@7.4.4/node_modules/@capacitor/keyboard/dist/esm/index.js.map +0 -1
  706. package/dist/node_modules/.pnpm/@capacitor_push-notifications@7.0.3_@capacitor_core@7.4.4/node_modules/@capacitor/push-notifications/dist/esm/index.js +0 -6
  707. package/dist/node_modules/.pnpm/@capacitor_push-notifications@7.0.3_@capacitor_core@7.4.4/node_modules/@capacitor/push-notifications/dist/esm/index.js.map +0 -1
  708. package/dist/web-n_ivHO3v.js +0 -54
  709. package/src/jit/.claude/settings.local.json +0 -10
  710. package/src/modules/community/community.router.js +0 -107
  711. package/src/modules/governance/governance.router.js +0 -350
  712. package/src/modules/governance/seed-governance.js +0 -348
  713. package/src/modules/governance/views/components/pages/InitiativeMilestones.vue +0 -159
  714. package/src/modules/governance/views/router/goverance.router.js +0 -290
  715. package/src/modules/governance/views/store/votes.js +0 -113
  716. package/src/modules/icons/icons.router.js +0 -29
  717. package/src/modules/marketplace/marketplace.router.js +0 -66
  718. package/src/modules/music/.claude/settings.local.json +0 -8
  719. package/src/modules/music/music.router.js +0 -188
  720. package/src/modules/notifications/notifications.router.js +0 -47
  721. package/src/modules/orders/orders.router.js +0 -255
  722. package/src/modules/organizations/organizations.router.js +0 -123
  723. package/src/modules/organizations/router/backoffice.router.js +0 -27
  724. package/src/modules/organizations/router/departments.router.js +0 -15
  725. package/src/modules/organizations/router/members.router.js +0 -20
  726. package/src/modules/pages/pages.router.js +0 -107
  727. package/src/modules/rents/rents.router.js +0 -115
  728. package/src/modules/reports/reports.router.js +0 -33
  729. package/src/modules/wallet/wallet.router.js +0 -45
@@ -1,15 +1,15 @@
1
- Я изучу архитектуру вашего проекта Martyrs и доработаю ТЗ с учетом существующей кодовой базы. Сначала найду информацию об organizations, departments и общей архитектуре.## ТЗ: модуль управления проектами OZ DAO (доработка с учетом архитектуры Martyrs)
1
+ ## ТЗ: модуль управления инициативами OZ DAO (доработка с учетом архитектуры Martyrs)
2
2
 
3
3
  ### Назначение
4
- Модуль обеспечивает управление проектами с интеграцией в экосистему Martyrs: проекты с несколькими репозиториями, задачи (по умолчанию приватные для участников), merge requests, ревью и утверждение, выплаты исполнителям на внутренние кошельки, GitOps-раздел. Использует существующую инфраструктуру авторизации, организаций и ролей.
4
+ Модуль обеспечивает управление инициативами с интеграцией в экосистему Martyrs: инициативы с несколькими репозиториями, задачи (по умолчанию приватные для участников), merge requests, ревью и утверждение, выплаты исполнителям на внутренние кошельки, GitOps-раздел. Использует существующую инфраструктуру авторизации, организаций и ролей.
5
5
 
6
6
  ### Архитектурная интеграция
7
7
 
8
8
  **Базовые модели и связи:**
9
- - Расширение `db.organization` через связь с `db.project` (owner.type: 'Organization')
10
- - Использование `db.membership` для управления участниками проекта с расширенными ролями
11
- - Интеграция с `db.department` для привязки проектов к подразделениям
12
- - Применение существующей системы `invites` для приглашений в проекты
9
+ - Расширение `db.organization` через связь с `db.initiative` (owner.type: 'Organization')
10
+ - Использование `db.membership` для управления участниками инициативы с расширенными ролями
11
+ - Интеграция с `db.department` для привязки инициатив к подразделениям
12
+ - Применение существующей системы `invites` для приглашений в инициативы
13
13
 
14
14
  **Ключевые файлы для просмотра:**
15
15
  - `modules/organizations/models/membership.model.js` - базовая модель членства
@@ -19,17 +19,17 @@
19
19
  - `modules/core/controllers/classes/abac/` - система контроля доступа
20
20
 
21
21
  ### Основной поток
22
- Создание проекта в организации → назначение department (опционально) → приглашение участников через invites → добавление репозиториев → создание задач → выполнение задач → открытие MR с привязкой к задаче → ревью и утверждение → закрытие задачи и приёмка → выплата через wallet модуль.
22
+ Создание инициативы в организации → назначение department (опционально) → приглашение участников через invites → добавление репозиториев → создание задач → выполнение задач → открытие MR с привязкой к задаче → ревью и утверждение → закрытие задачи и приёмка → выплата через wallet модуль.
23
23
 
24
- ### Расширение модели Membership для проектов
24
+ ### Расширение модели Membership для инициатив
25
25
 
26
- **Дополнительные поля в membership для контекста проекта:**
26
+ **Дополнительные поля в membership для контекста инициативы:**
27
27
  ```
28
28
  membership.context = {
29
- type: 'Project', // или 'Organization', 'Department'
30
- target: ObjectId // ID проекта
29
+ type: 'Initiative', // или 'Organization', 'Department'
30
+ target: ObjectId // ID инициативы
31
31
  }
32
- membership.projectRole: String // 'owner', 'management', 'contributor'
32
+ membership.initiativeRole: String // 'owner', 'management', 'contributor'
33
33
  membership.permissions: {
34
34
  merge: Boolean,
35
35
  deploy: Boolean,
@@ -38,33 +38,33 @@ membership.permissions: {
38
38
  }
39
39
  ```
40
40
 
41
- ### Роли проекта (через расширенный membership)
41
+ ### Роли инициативы (через расширенный membership)
42
42
 
43
- - **Owner проекта** — создатель проекта или назначенный владелец из организации
44
- - Полный контроль через `membership.projectRole === 'owner'`
43
+ - **Owner инициативы** — создатель инициативы или назначенный владелец из организации
44
+ - Полный контроль через `membership.initiativeRole === 'owner'`
45
45
  - Автоматически получает все permissions: true
46
46
  - Наследует права от `organizationHelpers.isOrganizationOwner()`
47
47
 
48
- - **Management проекта** — участники с правами управления
49
- - `membership.projectRole === 'management'`
48
+ - **Management инициативы** — участники с правами управления
49
+ - `membership.initiativeRole === 'management'`
50
50
  - Настраиваемые permissions через `membership.permissions`
51
51
  - По умолчанию: merge, deploy, budget = true; veto = false
52
52
 
53
- - **Contributors проекта** — разработчики и исполнители
54
- - `membership.projectRole === 'contributor'`
53
+ - **Contributors инициативы** — разработчики и исполнители
54
+ - `membership.initiativeRole === 'contributor'`
55
55
  - Базовые права: создание задач и MR
56
56
  - permissions по умолчанию все false
57
57
 
58
58
  ### Интеграция с ABAC системой
59
59
 
60
- **Регистрация политик проекта:**
60
+ **Регистрация политик инициативы:**
61
61
  ```
62
- // В modules/projects/policies/projects.policies.js
63
- abacAccessControl.registerResourcePolicy('project', async context => {
62
+ // В modules/governance/policies/initiatives.policies.js
63
+ abacAccessControl.registerResourcePolicy('initiative', async context => {
64
64
  // Использование organizationHelpers для проверки прав
65
- const orgId = await getProjectOrganization(context.currentResource);
65
+ const orgId = await getInitiativeOrganization(context.currentResource);
66
66
  const isOrgMember = await context.checkOrganizationMember(context.user, orgId);
67
- // Проверка projectRole через membership
67
+ // Проверка initiativeRole через membership
68
68
  });
69
69
  ```
70
70
 
@@ -88,7 +88,7 @@ abac.registerFieldsPolicy('task', {
88
88
  ### Правила действий (через ABAC middleware)
89
89
 
90
90
  - **Ветки и push** — проверка через `abac.middleware('repository', 'push')`
91
- - Требует projectRole: owner/management
91
+ - Требует initiativeRole: owner/management
92
92
  - **MR создание** — открыто для всех с доступом к задаче
93
93
  - **Merge** — требует permissions.merge === true
94
94
  - **Выплаты** — требует permissions.budget === true
@@ -115,19 +115,19 @@ voting: {
115
115
 
116
116
  **Интеграция с WebSocket:**
117
117
  - События голосования транслируются через `WebSocketManager`
118
- - Использование существующих каналов: `project:{id}`, `task:{id}`
118
+ - Использование существующих каналов: `initiative:{id}`, `task:{id}`
119
119
  - Real-time обновления статусов через `globalswebsocket`
120
120
 
121
121
  ### Задачи (расширение governance/tasks)
122
122
 
123
- **Дополнительные поля для проектных задач:**
123
+ **Дополнительные поля для задач:**
124
124
  ```
125
- task.project: ObjectId // связь с проектом
125
+ task.initiative: ObjectId // связь с инициативой
126
126
  task.repository: String // целевой репозиторий
127
127
  task.branch: String // целевая ветка
128
128
  task.mergeRequests: [ObjectId] // связанные MR
129
129
  task.visibility: {
130
- type: String, // 'project', 'public', 'custom'
130
+ type: String, // 'initiative', 'public', 'custom'
131
131
  allowList: [ObjectId], // для custom
132
132
  denyList: [ObjectId]
133
133
  }
@@ -143,23 +143,23 @@ task.passed: Boolean // флаг приёмки
143
143
 
144
144
  **Использование notifications модуля:**
145
145
  - Подключение к `modules/notifications/` для email/push уведомлений
146
- - События проекта регистрируются через Observer pattern
147
- - Логирование через `core.logger` с категорией 'project'
146
+ - События инициативы регистрируются через Observer pattern
147
+ - Логирование через `core.logger` с категорией 'initiative'
148
148
 
149
149
  **WebSocket события:**
150
150
  ```javascript
151
151
  // Используя WebSocketManager из globals
152
- wss.broadcast(`project:${projectId}`, {
152
+ wss.broadcast(`initiative:${initiativeId}`, {
153
153
  event: 'task.updated',
154
154
  data: taskData,
155
- permissions: ['project.member'] // фильтрация по правам
155
+ permissions: ['initiative.member'] // фильтрация по правам
156
156
  });
157
157
  ```
158
158
 
159
159
  ### Инварианты и валидация
160
160
 
161
- - **Owner контроль** — проверка через `organizationHelpers.isOrganizationOwner()` или `membership.projectRole === 'owner'`
162
- - **Cascade permissions** — права организации наследуются проектом
161
+ - **Owner контроль** — проверка через `organizationHelpers.isOrganizationOwner()` или `membership.initiativeRole === 'owner'`
162
+ - **Cascade permissions** — права организации наследуются инициативой
163
163
  - **Atomic operations** — использование транзакций MongoDB для критичных операций
164
164
  - **Audit trail** — логирование всех действий через `db.log`
165
165
  - **Cache invalidation** — сброс кеша при изменении прав через `Cache` из globals
@@ -168,7 +168,7 @@ wss.broadcast(`project:${projectId}`, {
168
168
 
169
169
  | Действие | Owner | Management | Contributor | Условия |
170
170
  |----------|-------|------------|-------------|---------|
171
- | Создание проекта | ✓ | ✗ | ✗ | Требует прав в организации |
171
+ | Создание инициативы | ✓ | ✗ | ✗ | Требует прав в организации |
172
172
  | Управление участниками | ✓ | ✗ | ✗ | - |
173
173
  | Создание задач | ✓ | ✓ | ✓ | - |
174
174
  | Создание MR | ✓ | ✓ | ✓ | Доступ к задаче |
@@ -178,15 +178,510 @@ wss.broadcast(`project:${projectId}`, {
178
178
  | Deploy | ✓ | ✓* | ✗ | *При permissions.deploy |
179
179
  | Наложение вето | ✓ | ✓* | ✗ | *При permissions.veto |
180
180
  | Снятие вето | ✓ | ✗ | ✗ | Только owner |
181
- | Удаление проекта | ✓ | ✗ | ✗ | - |
181
+ | Удаление инициативы | ✓ | ✗ | ✗ | - |
182
182
 
183
183
  ### Интеграция с существующими модулями
184
184
 
185
185
  - **auth** — использование `auth.state.user` для текущего пользователя
186
186
  - **wallet** — интеграция для выплат через внутренние кошельки
187
- - **notifications** — уведомления о событиях проекта
187
+ - **notifications** — уведомления о событиях инициативы
188
188
  - **globals/cache** — кеширование прав доступа
189
189
  - **globals/logger** — аудит всех действий
190
190
  - **organizations** — наследование структуры и прав
191
191
 
192
- Этот подход максимально использует существующую инфраструктуру Martyrs, минимизируя дублирование кода и обеспечивая консистентность с остальной системой.
192
+ Этот подход максимально использует существующую инфраструктуру Martyrs, минимизируя дублирование кода и обеспечивая консистентность с остальной системой.
193
+
194
+ ---
195
+
196
+ ### Статус реализации
197
+
198
+ #### Initiatives — миграция с mock на БД (выполнено)
199
+
200
+ **Проблема:** Страница инициативы (`/governance/initiatives/:id`) использовала хардкоженные данные из `data/mockData.js`. Форма создания содержала только 3 поля (name, description, status). Verifier не пропускал расширенные поля — они отбрасывались при create/update.
201
+
202
+ **Что сделано:**
203
+
204
+ 1. **Verifier** (`middlewares/initiatives.verifier.js`) — добавлены optional поля в createVerifier и updateVerifier: `fullDescription`, `valueProposition`, `targetAudience`, `successCriteria`, `repositories`, `links`, `environments`, `releases`, `metrics`, `sprints`
205
+
206
+ 2. **Store** (`views/store/initiatives.js`) — исправлена обработка ответа `getInitiativeById` (API возвращает массив, теперь берётся `[0]`). Расширен default state `current` всеми полями.
207
+
208
+ 3. **Форма создания** (`views/components/sections/FormInitiativeDetails.vue`) — полная перестройка. Секции: Basic Info, Detailed Description (с динамическим списком successCriteria), Repositories (динамический список name+path), Links (5 категорий с динамическими URL), Environments (name, url, status, version), Releases (version, date, notes, status), Metrics (6 числовых/select полей).
209
+
210
+ 4. **Страница создания** (`views/components/pages/InitiativeCreate.vue`) — добавлены стилизация, кнопка назад, инициализация всех полей, redirect после создания на `/governance/initiatives/:id`.
211
+
212
+ 5. **Страница инициативы** (`views/components/pages/Initiative.vue`) — удалён импорт `mockData`. `initiative` читается напрямую из `initiativesState.current`. Milestones загружаются через `GET /api/initiatives/:id/milestones`. Votings загружаются через `GET /api/votings/read` с клиентской фильтрацией по initiative ID. Router-link переведены на path-based навигацию.
213
+
214
+ 6. **Тестовые данные** — создана инициатива в БД (`_id: 698759840f5b375a233230cd`) со всеми полями из mockData.
215
+
216
+ **Известные ограничения:**
217
+ - `GET /api/votings/read?initiative=<id>` — параметр `initiative` проходит verifier, но `queryProcessor.getBasicOptions()` его не обрабатывает. Фильтрация выполняется на клиенте.
218
+ - `data/mockData.js` — не удалён, может использоваться другими компонентами.
219
+ - Модель `initiative.model.js` — `strict: false`, схема не расширялась (все поля сохраняются без валидации на уровне Mongoose).
220
+
221
+ ---
222
+
223
+ ## ТЗ: Milestones, Tasks, Votings — миграция с mock на БД
224
+
225
+ ### Проблема
226
+
227
+ 8 страниц governance используют хардкоженные данные из `data/mockData.js`. Формы создания содержат 3-4 поля. Store-ы содержат баги (массив вместо объекта в `current`). Store для milestones отсутствует. Имена файлов store-ов перепутаны.
228
+
229
+ **Страницы с mock-зависимостью:**
230
+
231
+ | Страница | Файл | Какие mock-массивы использует |
232
+ |----------|------|-------------------------------|
233
+ | Milestone detail | `Milestone.vue` | mockMilestones, mockTasks |
234
+ | Task detail | `Task.vue` | mockTasks, mockInitiatives, mockMilestones, mockVotings |
235
+ | Tasks list | `Tasks.vue` | mockTasks |
236
+ | Voting detail | `Voting.vue` | mockVotings, mockTasks, mockInitiatives, mockMilestones |
237
+ | Votings list | `Votings.vue` | mockVotings |
238
+ | Roadmap | `Roadmap.vue` | mockInitiatives, mockMilestones |
239
+ | Initiative milestones | `InitiativeMilestones.vue` | mockInitiatives, mockMilestones |
240
+ | Task create | `TaskCreate.vue` | — (но использует `name` вместо `title`, статус `todo` вместо `not_started`) |
241
+ | Voting create | `VotingCreate.vue` | — (но сломан импорт: `votesActions` из `../../store/votings`) |
242
+
243
+ ### Маппинг полей mock → БД
244
+
245
+ **Milestones:**
246
+ | Mock поле | БД поле | Примечание |
247
+ |-----------|---------|------------|
248
+ | `id` | `_id` | String → ObjectId |
249
+ | `initiativeId` | `initiative` | String → ObjectId ref |
250
+ | `owner` | `owner` | `{id, name, avatar}` → ObjectId ref, нужен populate |
251
+ | `contributors` | `contributors` | `[{id, name, avatar}]` → `[ObjectId]` ref, нужен populate |
252
+ | `taskCount` | — | Нет в модели, вычисляется через count tasks с `milestone: _id` |
253
+
254
+ **Tasks:**
255
+ | Mock поле | БД поле | Примечание |
256
+ |-----------|---------|------------|
257
+ | `id` | `_id` | String → ObjectId |
258
+ | `initiativeId` | `initiative` | String → ObjectId ref |
259
+ | `milestoneId` | `milestone` | String → ObjectId ref |
260
+ | `assignee` | `assignedTo` | `{id, name, avatar}` → ObjectId ref, нужен populate |
261
+ | `votingId` | — | Нет прямого поля, связь через Voting.targetId |
262
+ | `startVotingId` | `proposedByVoting` | String → ObjectId ref |
263
+ | `approvalVotingId` | `completionVoting` | String → ObjectId ref |
264
+ | `project` | `initiative` | В Task.vue секция показывает initiative.title |
265
+ | `repository` | — | Нет в модели task, данные из initiative.repositories |
266
+ | `branch` | — | Нет в модели task |
267
+ | `mergeRequests` | — | Нет в модели task |
268
+ | `visibility` | — | Нет в модели task |
269
+ | `budget` | — | Нет в модели task |
270
+ | `passed` | — | Нет в модели task |
271
+ | `permissions` | — | Нет в модели task |
272
+
273
+ **Votings:**
274
+ | Mock поле | БД поле | Примечание |
275
+ |-----------|---------|------------|
276
+ | `id` | `_id` | String → ObjectId |
277
+ | `status` | `result` | Mock `status` = approved/rejected/pending → DB `result` = approved/rejected/pending. DB также имеет `status` = pending/active/closed (статус процесса, не итог) |
278
+ | `linkedEntityType` | `targetModel` | `'initiative'/'task'` → `'Initiative'/'Task'/'Milestone'` (с большой буквы) |
279
+ | `linkedEntityId` | `targetId` | String → ObjectId |
280
+ | `threshold` | `threshold` | Mock: 0.6 (доля) → DB: 51 (проценты). Нужна конвертация `* 100` |
281
+ | `totalVotes` | — | Нет в модели, вычисляется из `votes.length` |
282
+ | `yesVotes` | — | Нет, вычисляется из votes |
283
+ | `noVotes` | — | Нет, вычисляется из votes |
284
+ | `abstainVotes` | — | Нет, вычисляется из votes |
285
+ | `votes` (inline) | `votes` | Mock: inline `[{userId, vote, comment}]` → DB: `[ObjectId]` refs на Vote модель |
286
+
287
+ ### Баги и проблемы в текущем коде
288
+
289
+ 1. **Перепутаны имена store файлов:**
290
+ - `views/store/votes.js` — экспортирует `votingsActions`, `votingsState` (это VOTINGS store)
291
+ - `views/store/votings.js` — экспортирует `votesActions`, `votesState` (это VOTES store)
292
+
293
+ 2. **VotingCreate.vue сломан:** `import { votesActions } from '../../store/votings'` — импортирует `votesActions` (для голосов), но вызывает `votesActions.createVoting()` (метод которого нет в votesActions). Нужно: `import { votingsActions } from '../../store/votes'`
294
+
295
+ 3. **TaskCreate.vue использует `name` вместо `title`:** БД модель и verifier используют `title`, а форма отправляет `name`. Статус `todo` не валиден (нужен `not_started`).
296
+
297
+ 4. **Баг массива в getById:** `tasksState.current = response.data` и `votingsState.current = response.data` — API возвращает массив, нужно `Array.isArray(response.data) ? response.data[0] : response.data`.
298
+
299
+ 5. **Нет store для milestones** — файл `views/store/milestones.js` не существует.
300
+
301
+ 6. **queryProcessor не поддерживает фильтрацию** по `initiative`, `milestone`, `assignedTo` — только `_id, url, status, type, organization, owner, customer, creator, product, listing`. Фильтрация на клиенте.
302
+
303
+ ---
304
+
305
+ ### Шаг 1: Создать store для milestones
306
+
307
+ **Файл:** `views/store/milestones.js` (новый)
308
+
309
+ Паттерн аналогичен `tasks.js` и `votes.js`. Reactive state + actions + watch history.
310
+
311
+ ```javascript
312
+ // State
313
+ milestonesState = reactive({
314
+ all: [],
315
+ current: {
316
+ name: '', description: '', status: 'not_started',
317
+ startDate: null, dueDate: null, completedDate: null,
318
+ progress: 0, owner: null, contributors: [],
319
+ initiative: null, priority: 'medium', tags: [],
320
+ dependencies: [], metadata: null,
321
+ createdAt: null, updatedAt: null,
322
+ },
323
+ })
324
+
325
+ // Actions
326
+ milestonesActions = {
327
+ getAllMilestones() // GET /api/milestones/read
328
+ getMilestoneById(id) // GET /api/milestones/read?_id=id → Array.isArray fix
329
+ createMilestone(data) // POST /api/milestones/create
330
+ updateMilestone(data) // PUT /api/milestones/update
331
+ deleteMilestone(id) // POST /api/milestones/delete
332
+ }
333
+ ```
334
+
335
+ Export: `{ milestonesActions, milestonesState }`
336
+
337
+ ---
338
+
339
+ ### Шаг 2: Исправить stores tasks и votings
340
+
341
+ **Файл:** `views/store/tasks.js`
342
+
343
+ 1. Исправить `getTaskById` — обработка массива:
344
+ ```javascript
345
+ tasksState.current = Array.isArray(response.data) ? response.data[0] : response.data;
346
+ ```
347
+
348
+ 2. Расширить default state `current`:
349
+ ```javascript
350
+ current: {
351
+ title: '', description: '', status: 'not_started',
352
+ assignedTo: null, dueDate: null,
353
+ milestone: null, initiative: null,
354
+ priority: 'medium', tags: [],
355
+ proposedByVoting: null, completionVoting: null,
356
+ completedDate: null,
357
+ createdAt: null, updatedAt: null,
358
+ }
359
+ ```
360
+
361
+ **Файл:** `views/store/votes.js` (это votings store!)
362
+
363
+ 1. Исправить `getVotingById` — обработка массива:
364
+ ```javascript
365
+ votingsState.current = Array.isArray(response.data) ? response.data[0] : response.data;
366
+ ```
367
+
368
+ 2. Расширить default state `current`:
369
+ ```javascript
370
+ current: {
371
+ title: '', description: '', type: 'general',
372
+ targetModel: null, targetId: null,
373
+ threshold: 51, participants: [],
374
+ result: 'pending', initiative: null, milestone: null,
375
+ metadata: null, startDate: null, endDate: null,
376
+ status: 'pending', votes: [],
377
+ createdAt: null, updatedAt: null,
378
+ }
379
+ ```
380
+
381
+ ---
382
+
383
+ ### Шаг 3: Создать FormMilestoneDetails.vue
384
+
385
+ **Файл:** `views/components/sections/FormMilestoneDetails.vue` (новый)
386
+
387
+ Компонент формы для создания/редактирования milestone. `v-model` паттерн как у `FormInitiativeDetails.vue`.
388
+
389
+ **Поля:**
390
+ - name (required, text)
391
+ - description (textarea)
392
+ - status (select: not_started, in_progress, completed, blocked, cancelled)
393
+ - startDate (date input)
394
+ - dueDate (date input)
395
+ - progress (number, 0-100)
396
+ - owner (text/ObjectId — на первом этапе просто text input)
397
+ - priority (select: low, medium, high, urgent)
398
+ - tags (динамический список строк)
399
+ - initiative (text/ObjectId — на первом этапе text input)
400
+
401
+ ---
402
+
403
+ ### Шаг 4: Перестроить FormTaskDetails.vue
404
+
405
+ **Файл:** `views/components/sections/FormTaskDetails.vue`
406
+
407
+ Текущее состояние: 4 bare HTML поля (name, description, status со значениями todo/inProgress/done, assignedTo).
408
+
409
+ **Нужно:**
410
+ - title (required, text) — не `name`!
411
+ - description (textarea)
412
+ - status (select: proposed, voting, not_started, in_progress, review, completed, blocked, cancelled)
413
+ - assignedTo (text/ObjectId)
414
+ - dueDate (date input)
415
+ - milestone (text/ObjectId)
416
+ - initiative (text/ObjectId)
417
+ - priority (select: low, medium, high, urgent)
418
+ - tags (динамический список строк)
419
+
420
+ ---
421
+
422
+ ### Шаг 5: Перестроить FormVotingDetails.vue
423
+
424
+ **Файл:** `views/components/sections/FormVotingDetails.vue`
425
+
426
+ Текущее состояние: 4 bare HTML поля (title, description, startDate, endDate).
427
+
428
+ **Нужно:**
429
+ - title (required, text)
430
+ - description (textarea)
431
+ - type (required, select: create_task, approve_task, create_initiative, update_milestone, general)
432
+ - targetModel (select: Task, Initiative, Milestone, — пустое)
433
+ - targetId (text/ObjectId)
434
+ - threshold (number, 1-100, default 51)
435
+ - initiative (text/ObjectId)
436
+ - milestone (text/ObjectId)
437
+ - startDate (date input)
438
+ - endDate (date input)
439
+ - status (select: pending, active, closed)
440
+
441
+ ---
442
+
443
+ ### Шаг 6: Перестроить TaskCreate.vue
444
+
445
+ **Файл:** `views/components/pages/TaskCreate.vue`
446
+
447
+ Текущее: bare div, 4 поля, `name` вместо `title`, статус `todo`, нет redirect.
448
+
449
+ **Нужно:**
450
+ - Стилизация как в `InitiativeCreate.vue` (pd-medium, кнопка назад, bg-main кнопка)
451
+ - Полный `newTask` ref со всеми полями:
452
+ ```javascript
453
+ newTask = ref({
454
+ title: '', description: '', status: 'not_started',
455
+ assignedTo: '', dueDate: null,
456
+ milestone: '', initiative: '',
457
+ priority: 'medium', tags: [],
458
+ })
459
+ ```
460
+ - Redirect после создания: `router.push('/governance/tasks/' + response._id)`
461
+ - Кнопка назад на `/governance/tasks`
462
+ - Импорт `tasksActions` из `../../store/tasks`
463
+
464
+ ---
465
+
466
+ ### Шаг 7: Перестроить VotingCreate.vue
467
+
468
+ **Файл:** `views/components/pages/VotingCreate.vue`
469
+
470
+ Текущее: сломан импорт (`votesActions` из `../../store/votings`), 4 поля, нет redirect.
471
+
472
+ **Нужно:**
473
+ - Исправить импорт: `import { votingsActions } from '../../store/votes'`
474
+ - Стилизация как в `InitiativeCreate.vue`
475
+ - Полный `newVoting` ref:
476
+ ```javascript
477
+ newVoting = ref({
478
+ title: '', description: '', type: 'general',
479
+ targetModel: '', targetId: '',
480
+ threshold: 51, initiative: '', milestone: '',
481
+ startDate: null, endDate: null, status: 'pending',
482
+ })
483
+ ```
484
+ - Redirect после создания: `router.push('/governance/votings/' + response._id)`
485
+ - Кнопка назад на `/governance/votings`
486
+ - Вызов: `votingsActions.createVoting(newVoting.value)`
487
+
488
+ ---
489
+
490
+ ### Шаг 8: Создать MilestoneCreate.vue
491
+
492
+ **Файл:** `views/components/pages/MilestoneCreate.vue` (новый)
493
+
494
+ Страница не существует, нужно создать. Паттерн аналогичен `InitiativeCreate.vue`.
495
+
496
+ - Кнопка назад на `/governance/milestones` (или `/governance/roadmap`)
497
+ - Полный `newMilestone` ref:
498
+ ```javascript
499
+ newMilestone = ref({
500
+ name: '', description: '', status: 'not_started',
501
+ startDate: null, dueDate: null, progress: 0,
502
+ owner: '', initiative: '',
503
+ priority: 'medium', tags: [],
504
+ })
505
+ ```
506
+ - Redirect после создания: `router.push('/governance/milestones/' + response._id)`
507
+ - Импорт `milestonesActions` из `../../store/milestones`
508
+
509
+ **Добавить роут** в `governance.client.js` и `global.config.js` если нужно.
510
+
511
+ ---
512
+
513
+ ### Шаг 9: Milestone.vue — убрать mock
514
+
515
+ **Файл:** `views/components/pages/Milestone.vue`
516
+
517
+ Текущее: `mockMilestones.find(m => m.id === route.params.id)` и `mockTasks.filter(t => t.milestoneId === route.params.id)`.
518
+
519
+ **Нужно:**
520
+ 1. Удалить `import { mockMilestones, mockTasks } from '../../../data/mockData'`
521
+ 2. Импортировать `{ milestonesActions, milestonesState }` из store
522
+ 3. Импортировать `$axios` для запроса tasks
523
+ 4. `milestone` = `computed(() => milestonesState.current)`
524
+ 5. В `onMounted`:
525
+ - `milestonesActions.getMilestoneById(route.params.id)`
526
+ - `const res = await $axios.get('/api/tasks/read')` → фильтрация на клиенте: `.filter(t => t.milestone === route.params.id)`
527
+ 6. Обработать отсутствие `taskCount` — вычислять из реального массива tasks
528
+
529
+ ---
530
+
531
+ ### Шаг 10: Task.vue — убрать mock
532
+
533
+ **Файл:** `views/components/pages/Task.vue`
534
+
535
+ Текущее: использует mockTasks, mockInitiatives, mockMilestones, mockVotings для отображения задачи, связанной инициативы, milestone, голосований.
536
+
537
+ **Нужно:**
538
+ 1. Удалить все mock импорты
539
+ 2. Импортировать stores:
540
+ - `{ tasksActions, tasksState }` из `../../store/tasks`
541
+ - `{ initiativesActions, initiativesState }` из `../../store/initiatives`
542
+ - `{ milestonesActions, milestonesState }` из `../../store/milestones`
543
+ - `{ votingsActions, votingsState }` из `../../store/votes`
544
+ 3. `task` = `computed(() => tasksState.current)`
545
+ 4. В `onMounted`:
546
+ - `await tasksActions.getTaskById(route.params.id)`
547
+ - Загрузить связанную initiative: `initiativesActions.getInitiativeById(task.value.initiative)` (если initiative не null)
548
+ - Загрузить связанный milestone: `milestonesActions.getMilestoneById(task.value.milestone)` (если milestone не null)
549
+ - Загрузить связанные votings: `votingsActions.getAllVotings()` → `computed` фильтрация по `targetId === task._id`
550
+ 5. Секция "Repository Information" показывает `initiativesState.current.title`. Секции repository/branch/mergeRequests/budget/permissions — обернуть в v-if (полей пока нет в модели task)
551
+
552
+ ---
553
+
554
+ ### Шаг 11: Tasks.vue — убрать mock
555
+
556
+ **Файл:** `views/components/pages/Tasks.vue`
557
+
558
+ Текущее: `ref(mockTasks)`, группировка по статусам.
559
+
560
+ **Нужно:**
561
+ 1. Удалить `import { mockTasks }`
562
+ 2. Импортировать `{ tasksActions, tasksState }`
563
+ 3. В `onMounted`: `tasksActions.getAllTasks()`
564
+ 4. `tasks` = `computed(() => tasksState.all)`
565
+ 5. Группировка по статусам остаётся, но использовать реальные статусы из модели
566
+
567
+ ---
568
+
569
+ ### Шаг 12: Voting.vue — убрать mock
570
+
571
+ **Файл:** `views/components/pages/Voting.vue`
572
+
573
+ Текущее: mockVotings + резолвинг linkedEntity через mockTasks/mockInitiatives/mockMilestones.
574
+
575
+ **Нужно:**
576
+ 1. Удалить все mock импорты
577
+ 2. Импортировать `{ votingsActions, votingsState }` из `../../store/votes`
578
+ 3. `voting` = `computed(() => votingsState.current)`
579
+ 4. В `onMounted`:
580
+ - `votingsActions.getVotingById(route.params.id)`
581
+ - Загрузить linked entity через `targetModel`/`targetId`:
582
+ ```javascript
583
+ if (voting.targetModel && voting.targetId) {
584
+ const endpoint = voting.targetModel.toLowerCase() + 's'; // 'tasks', 'initiatives', 'milestones'
585
+ const res = await $axios.get(`/api/${endpoint}/read`, { params: { _id: voting.targetId } });
586
+ linkedEntity.value = Array.isArray(res.data) ? res.data[0] : res.data;
587
+ }
588
+ ```
589
+ - Загрузить votes: `votesActions.getVotesForVoting(route.params.id)` (или `$axios.get('/api/votes/read', { params: { voting: id } })`)
590
+ 5. Маппинг полей: mock `status` = DB `result`, mock `linkedEntityType` = DB `targetModel`, mock `threshold` = DB threshold (уже в %)
591
+ 6. Подсчёт yesVotes/noVotes/abstainVotes — вычислять из массива votes
592
+
593
+ ---
594
+
595
+ ### Шаг 13: Votings.vue — убрать mock
596
+
597
+ **Файл:** `views/components/pages/Votings.vue`
598
+
599
+ Текущее: `ref(mockVotings)`, фильтрация по type/status.
600
+
601
+ **Нужно:**
602
+ 1. Удалить mock импорт
603
+ 2. Импортировать `{ votingsActions, votingsState }` из `../../store/votes`
604
+ 3. В `onMounted`: `votingsActions.getAllVotings()`
605
+ 4. `votings` = `computed(() => votingsState.all)`
606
+ 5. Фильтрация: mock `status` → DB `result` для фильтра по итогу, DB `status` для фильтра по процессу
607
+
608
+ ---
609
+
610
+ ### Шаг 14: Roadmap.vue и InitiativeMilestones.vue — убрать mock
611
+
612
+ **Файл:** `views/components/pages/Roadmap.vue`
613
+
614
+ Текущее: mockInitiatives + mockMilestones, табы milestones/releases.
615
+
616
+ **Нужно:**
617
+ 1. Удалить mock импорты
618
+ 2. Импортировать stores: initiatives, milestones
619
+ 3. В `onMounted`: загрузить все initiatives и milestones
620
+ 4. Использовать реальные данные из store state
621
+
622
+ **Файл:** `views/components/pages/InitiativeMilestones.vue`
623
+
624
+ Аналогично Roadmap.vue — убрать mock, использовать stores.
625
+
626
+ ---
627
+
628
+ ### Шаг 15: Создать тестовые данные в БД
629
+
630
+ Через API создать записи с данными из mockData.js (аналогично инициативе `698759840f5b375a233230cd`).
631
+
632
+ **Порядок создания (из-за зависимостей ObjectId):**
633
+ 1. Milestones (5 шт) — ссылаются на initiative `698759840f5b375a233230cd`
634
+ 2. Tasks (10 шт) — ссылаются на milestones и initiative
635
+ 3. Votings (6 шт) — ссылаются на tasks/initiatives через targetModel/targetId
636
+
637
+ **Конвертация при создании:**
638
+ - Milestone: `initiativeId: '1'` → `initiative: '698759840f5b375a233230cd'`, `owner: {id:'1',...}` → `owner: <реальный userId>`
639
+ - Task: `milestoneId` → `milestone: <ObjectId созданного milestone>`, `assignee` → `assignedTo: <userId>`, `name` поле не нужно (используется `title`)
640
+ - Voting: `linkedEntityType: 'task'` → `targetModel: 'Task'`, `linkedEntityId: '5'` → `targetId: <ObjectId task>`, `threshold: 0.6` → `threshold: 60`, `status: 'approved'` → `result: 'approved'`
641
+
642
+ ---
643
+
644
+ ### Файлы для модификации (сводка)
645
+
646
+ | # | Файл | Действие | Статус |
647
+ |---|------|----------|--------|
648
+ | 1 | `views/store/milestones.js` | **Создать** — новый store | ✅ Готово |
649
+ | 2 | `views/store/tasks.js` | Исправить getById массив, расширить default state | ✅ Готово |
650
+ | 3 | `views/store/votes.js` | Исправить getById массив, расширить default state | ✅ Готово |
651
+ | 4 | `views/components/sections/FormMilestoneDetails.vue` | **Создать** — форма milestone | ✅ Готово |
652
+ | 5 | `views/components/sections/FormTaskDetails.vue` | Перестроить — все поля из модели | ✅ Готово |
653
+ | 6 | `views/components/sections/FormVotingDetails.vue` | Перестроить — все поля из модели | ✅ Готово |
654
+ | 7 | `views/components/pages/TaskCreate.vue` | Перестроить — стилизация, правильные поля, redirect | ✅ Готово |
655
+ | 8 | `views/components/pages/VotingCreate.vue` | Перестроить — fix импорт, стилизация, все поля, redirect | ✅ Готово |
656
+ | 9 | `views/components/pages/MilestoneCreate.vue` | **Создать** — страница создания milestone | ✅ Готово |
657
+ | 10 | `views/components/pages/Milestone.vue` | Убрать mock, использовать store + API | ✅ Готово |
658
+ | 11 | `views/components/pages/Task.vue` | Убрать mock, использовать store + API | ✅ Готово |
659
+ | 12 | `views/components/pages/Tasks.vue` | Убрать mock, использовать store | ✅ Готово |
660
+ | 13 | `views/components/pages/Voting.vue` | Убрать mock, использовать store + API | ✅ Готово |
661
+ | 14 | `views/components/pages/Votings.vue` | Убрать mock, использовать store | ✅ Готово |
662
+ | 15 | `views/components/pages/Roadmap.vue` | Убрать mock, использовать stores | ✅ Готово |
663
+ | 16 | `views/components/pages/InitiativeMilestones.vue` | Убрать mock, использовать stores | ✅ Готово |
664
+
665
+ **Дополнительно исправлено (вне основного scope):**
666
+ - `views/store/votings.js` — убраны `|| .id` fallback-и
667
+ - `views/components/blocks/CardVotingItem.vue` — `_id` вместо `_id || id`, path-based router-link
668
+ - `views/components/blocks/CardMilestoneItem.vue` — `_id` вместо `_id || id`, path-based router-link
669
+ - `views/components/blocks/CardTaskItem.vue` — `_id` вместо `_id || id`, path-based router-link
670
+ - `views/components/blocks/CardInitiativeItem.vue` — `_id` вместо `_id || id`, path-based router-link
671
+ - `views/router/governance.router.js` — добавлен роут `milestones/create`
672
+
673
+ **Не модифицируем:**
674
+ - Модели (`milestone.model.js`, `task.model.js`, `voting.model.js`) — схемы достаточны для текущих данных
675
+ - Verifier-ы — уже содержат все нужные поля
676
+ - `data/mockData.js` — удалить после миграции всех страниц (отдельным шагом)
677
+
678
+ ### Известные ограничения
679
+
680
+ - **queryProcessor** не поддерживает фильтрацию по `initiative`, `milestone`, `assignedTo` — все фильтрации на клиенте через `.filter()` после загрузки полного списка
681
+ - **owner/assignee** — бэкенд должен агрегировать (populate). Фронтенд ожидает объекты `{name, avatar}`. Если бэк не популейтит — будут отображаться ObjectId строки
682
+ - **votes** в mock voting = inline массив `[{userId, vote, comment}]`, в БД = `[ObjectId]` refs на Vote модель. В Voting.vue подсчёт голосов через отдельный запрос `GET /api/votes/read?voting=<id>`
683
+ - **Маппинг mock → DB полей в Voting.vue:** mock `status` (approved/rejected/pending) = DB `result`, mock `linkedEntityType` = DB `targetModel`, mock `linkedEntityId` = DB `targetId`. `isActive` проверяет `status === 'active'` (процесс голосования активен)
684
+ - Mock `task.project` соответствует `task.initiative` (ObjectId ref). В Task.vue секция показывает initiative.title
685
+ - Поля `repository`, `branch`, `mergeRequests`, `visibility`, `budget`, `passed`, `permissions` — нет в модели task. В UI обёрнуты в v-if
686
+ - Все router-link переведены на path-based навигацию (вместо name-based) из-за ленивой загрузки модулей
687
+ - Везде используется `_id` без fallback на `id`