@youjunhuang/entity-core 1.0.0

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 (245) hide show
  1. package/dist/data_access/base/base.repository.d.ts +29 -0
  2. package/dist/data_access/base/base.repository.d.ts.map +1 -0
  3. package/dist/data_access/base/base.repository.js +7 -0
  4. package/dist/data_access/base/base.repository.js.map +1 -0
  5. package/dist/data_access/base/index.d.ts +4 -0
  6. package/dist/data_access/base/index.d.ts.map +1 -0
  7. package/dist/data_access/base/index.js +20 -0
  8. package/dist/data_access/base/index.js.map +1 -0
  9. package/dist/data_access/base/mongo-base.repository.d.ts +34 -0
  10. package/dist/data_access/base/mongo-base.repository.d.ts.map +1 -0
  11. package/dist/data_access/base/mongo-base.repository.js +229 -0
  12. package/dist/data_access/base/mongo-base.repository.js.map +1 -0
  13. package/dist/data_access/base/sql-base.repository.d.ts +20 -0
  14. package/dist/data_access/base/sql-base.repository.d.ts.map +1 -0
  15. package/dist/data_access/base/sql-base.repository.js +180 -0
  16. package/dist/data_access/base/sql-base.repository.js.map +1 -0
  17. package/dist/data_access/index.d.ts +3 -0
  18. package/dist/data_access/index.d.ts.map +1 -0
  19. package/dist/data_access/index.js +20 -0
  20. package/dist/data_access/index.js.map +1 -0
  21. package/dist/data_access/mongo/account-mongo.repository.d.ts +14 -0
  22. package/dist/data_access/mongo/account-mongo.repository.d.ts.map +1 -0
  23. package/dist/data_access/mongo/account-mongo.repository.js +43 -0
  24. package/dist/data_access/mongo/account-mongo.repository.js.map +1 -0
  25. package/dist/data_access/mongo/attachment-mongo.repository.d.ts +139 -0
  26. package/dist/data_access/mongo/attachment-mongo.repository.d.ts.map +1 -0
  27. package/dist/data_access/mongo/attachment-mongo.repository.js +355 -0
  28. package/dist/data_access/mongo/attachment-mongo.repository.js.map +1 -0
  29. package/dist/data_access/mongo/biometric-cred.repository.d.ts +8 -0
  30. package/dist/data_access/mongo/biometric-cred.repository.d.ts.map +1 -0
  31. package/dist/data_access/mongo/biometric-cred.repository.js +32 -0
  32. package/dist/data_access/mongo/biometric-cred.repository.js.map +1 -0
  33. package/dist/data_access/mongo/camera-mongo.repository.d.ts +9 -0
  34. package/dist/data_access/mongo/camera-mongo.repository.d.ts.map +1 -0
  35. package/dist/data_access/mongo/camera-mongo.repository.js +39 -0
  36. package/dist/data_access/mongo/camera-mongo.repository.js.map +1 -0
  37. package/dist/data_access/mongo/camera-recording-mongo.repository.d.ts +9 -0
  38. package/dist/data_access/mongo/camera-recording-mongo.repository.d.ts.map +1 -0
  39. package/dist/data_access/mongo/camera-recording-mongo.repository.js +39 -0
  40. package/dist/data_access/mongo/camera-recording-mongo.repository.js.map +1 -0
  41. package/dist/data_access/mongo/event-mongo.repository.d.ts +23 -0
  42. package/dist/data_access/mongo/event-mongo.repository.d.ts.map +1 -0
  43. package/dist/data_access/mongo/event-mongo.repository.js +175 -0
  44. package/dist/data_access/mongo/event-mongo.repository.js.map +1 -0
  45. package/dist/data_access/mongo/event-template-mongo.repository.d.ts +8 -0
  46. package/dist/data_access/mongo/event-template-mongo.repository.d.ts.map +1 -0
  47. package/dist/data_access/mongo/event-template-mongo.repository.js +36 -0
  48. package/dist/data_access/mongo/event-template-mongo.repository.js.map +1 -0
  49. package/dist/data_access/mongo/event-template-name-mongo.repository.d.ts +19 -0
  50. package/dist/data_access/mongo/event-template-name-mongo.repository.d.ts.map +1 -0
  51. package/dist/data_access/mongo/event-template-name-mongo.repository.js +47 -0
  52. package/dist/data_access/mongo/event-template-name-mongo.repository.js.map +1 -0
  53. package/dist/data_access/mongo/index.d.ts +17 -0
  54. package/dist/data_access/mongo/index.d.ts.map +1 -0
  55. package/dist/data_access/mongo/index.js +33 -0
  56. package/dist/data_access/mongo/index.js.map +1 -0
  57. package/dist/data_access/mongo/map-mongo.repository.d.ts +9 -0
  58. package/dist/data_access/mongo/map-mongo.repository.d.ts.map +1 -0
  59. package/dist/data_access/mongo/map-mongo.repository.js +46 -0
  60. package/dist/data_access/mongo/map-mongo.repository.js.map +1 -0
  61. package/dist/data_access/mongo/password-cred.repository.d.ts +8 -0
  62. package/dist/data_access/mongo/password-cred.repository.d.ts.map +1 -0
  63. package/dist/data_access/mongo/password-cred.repository.js +32 -0
  64. package/dist/data_access/mongo/password-cred.repository.js.map +1 -0
  65. package/dist/data_access/mongo/permission-mongo.repository.d.ts +8 -0
  66. package/dist/data_access/mongo/permission-mongo.repository.d.ts.map +1 -0
  67. package/dist/data_access/mongo/permission-mongo.repository.js +32 -0
  68. package/dist/data_access/mongo/permission-mongo.repository.js.map +1 -0
  69. package/dist/data_access/mongo/report.repository.d.ts +12 -0
  70. package/dist/data_access/mongo/report.repository.d.ts.map +1 -0
  71. package/dist/data_access/mongo/report.repository.js +52 -0
  72. package/dist/data_access/mongo/report.repository.js.map +1 -0
  73. package/dist/data_access/mongo/role-mongo.repository.d.ts +7 -0
  74. package/dist/data_access/mongo/role-mongo.repository.d.ts.map +1 -0
  75. package/dist/data_access/mongo/role-mongo.repository.js +35 -0
  76. package/dist/data_access/mongo/role-mongo.repository.js.map +1 -0
  77. package/dist/data_access/mongo/third-party-cred.repository.d.ts +8 -0
  78. package/dist/data_access/mongo/third-party-cred.repository.d.ts.map +1 -0
  79. package/dist/data_access/mongo/third-party-cred.repository.js +32 -0
  80. package/dist/data_access/mongo/third-party-cred.repository.js.map +1 -0
  81. package/dist/data_access/mongo/ui-item-mongo.repository.d.ts +7 -0
  82. package/dist/data_access/mongo/ui-item-mongo.repository.d.ts.map +1 -0
  83. package/dist/data_access/mongo/ui-item-mongo.repository.js +35 -0
  84. package/dist/data_access/mongo/ui-item-mongo.repository.js.map +1 -0
  85. package/dist/data_access/mongo/user-mongo.repository.d.ts +8 -0
  86. package/dist/data_access/mongo/user-mongo.repository.d.ts.map +1 -0
  87. package/dist/data_access/mongo/user-mongo.repository.js +39 -0
  88. package/dist/data_access/mongo/user-mongo.repository.js.map +1 -0
  89. package/dist/data_access/sql/index.d.ts +1 -0
  90. package/dist/data_access/sql/index.d.ts.map +1 -0
  91. package/dist/data_access/sql/index.js +3 -0
  92. package/dist/data_access/sql/index.js.map +1 -0
  93. package/dist/data_access/sql/user-profiles.repository.d.ts +1 -0
  94. package/dist/data_access/sql/user-profiles.repository.d.ts.map +1 -0
  95. package/dist/data_access/sql/user-profiles.repository.js +36 -0
  96. package/dist/data_access/sql/user-profiles.repository.js.map +1 -0
  97. package/dist/index.d.ts +4 -0
  98. package/dist/index.d.ts.map +1 -0
  99. package/dist/index.js +20 -0
  100. package/dist/index.js.map +1 -0
  101. package/dist/models/account.d.ts +27 -0
  102. package/dist/models/account.d.ts.map +1 -0
  103. package/dist/models/account.js +3 -0
  104. package/dist/models/account.js.map +1 -0
  105. package/dist/models/attachment.d.ts +147 -0
  106. package/dist/models/attachment.d.ts.map +1 -0
  107. package/dist/models/attachment.js +25 -0
  108. package/dist/models/attachment.js.map +1 -0
  109. package/dist/models/auth-credential.d.ts +46 -0
  110. package/dist/models/auth-credential.d.ts.map +1 -0
  111. package/dist/models/auth-credential.js +10 -0
  112. package/dist/models/auth-credential.js.map +1 -0
  113. package/dist/models/camera.d.ts +156 -0
  114. package/dist/models/camera.d.ts.map +1 -0
  115. package/dist/models/camera.js +34 -0
  116. package/dist/models/camera.js.map +1 -0
  117. package/dist/models/chatroom.d.ts +55 -0
  118. package/dist/models/chatroom.d.ts.map +1 -0
  119. package/dist/models/chatroom.js +3 -0
  120. package/dist/models/chatroom.js.map +1 -0
  121. package/dist/models/device.d.ts +50 -0
  122. package/dist/models/device.d.ts.map +1 -0
  123. package/dist/models/device.js +3 -0
  124. package/dist/models/device.js.map +1 -0
  125. package/dist/models/event.d.ts +170 -0
  126. package/dist/models/event.d.ts.map +1 -0
  127. package/dist/models/event.js +195 -0
  128. package/dist/models/event.js.map +1 -0
  129. package/dist/models/index.d.ts +19 -0
  130. package/dist/models/index.d.ts.map +1 -0
  131. package/dist/models/index.js +35 -0
  132. package/dist/models/index.js.map +1 -0
  133. package/dist/models/inform.d.ts +146 -0
  134. package/dist/models/inform.d.ts.map +1 -0
  135. package/dist/models/inform.js +61 -0
  136. package/dist/models/inform.js.map +1 -0
  137. package/dist/models/map.d.ts +26 -0
  138. package/dist/models/map.d.ts.map +1 -0
  139. package/dist/models/map.js +3 -0
  140. package/dist/models/map.js.map +1 -0
  141. package/dist/models/permission.d.ts +83 -0
  142. package/dist/models/permission.d.ts.map +1 -0
  143. package/dist/models/permission.js +78 -0
  144. package/dist/models/permission.js.map +1 -0
  145. package/dist/models/report.d.ts +167 -0
  146. package/dist/models/report.d.ts.map +1 -0
  147. package/dist/models/report.js +61 -0
  148. package/dist/models/report.js.map +1 -0
  149. package/dist/models/role.d.ts +84 -0
  150. package/dist/models/role.d.ts.map +1 -0
  151. package/dist/models/role.js +25 -0
  152. package/dist/models/role.js.map +1 -0
  153. package/dist/models/schedule.d.ts +39 -0
  154. package/dist/models/schedule.d.ts.map +1 -0
  155. package/dist/models/schedule.js +3 -0
  156. package/dist/models/schedule.js.map +1 -0
  157. package/dist/models/task.d.ts +97 -0
  158. package/dist/models/task.d.ts.map +1 -0
  159. package/dist/models/task.js +24 -0
  160. package/dist/models/task.js.map +1 -0
  161. package/dist/models/template.d.ts +197 -0
  162. package/dist/models/template.d.ts.map +1 -0
  163. package/dist/models/template.js +64 -0
  164. package/dist/models/template.js.map +1 -0
  165. package/dist/models/ui-item.d.ts +40 -0
  166. package/dist/models/ui-item.d.ts.map +1 -0
  167. package/dist/models/ui-item.js +17 -0
  168. package/dist/models/ui-item.js.map +1 -0
  169. package/dist/models/user.d.ts +125 -0
  170. package/dist/models/user.d.ts.map +1 -0
  171. package/dist/models/user.js +22 -0
  172. package/dist/models/user.js.map +1 -0
  173. package/dist/models/utils.d.ts +28 -0
  174. package/dist/models/utils.d.ts.map +1 -0
  175. package/dist/models/utils.js +3 -0
  176. package/dist/models/utils.js.map +1 -0
  177. package/dist/schemas/index.d.ts +2 -0
  178. package/dist/schemas/index.d.ts.map +1 -0
  179. package/dist/schemas/index.js +18 -0
  180. package/dist/schemas/index.js.map +1 -0
  181. package/dist/schemas/mongo/account-mongo.schema.d.ts +27 -0
  182. package/dist/schemas/mongo/account-mongo.schema.d.ts.map +1 -0
  183. package/dist/schemas/mongo/account-mongo.schema.js +22 -0
  184. package/dist/schemas/mongo/account-mongo.schema.js.map +1 -0
  185. package/dist/schemas/mongo/attachment-mongo.schema.d.ts +134 -0
  186. package/dist/schemas/mongo/attachment-mongo.schema.d.ts.map +1 -0
  187. package/dist/schemas/mongo/attachment-mongo.schema.js +182 -0
  188. package/dist/schemas/mongo/attachment-mongo.schema.js.map +1 -0
  189. package/dist/schemas/mongo/biometric-cred.schema.d.ts +27 -0
  190. package/dist/schemas/mongo/biometric-cred.schema.d.ts.map +1 -0
  191. package/dist/schemas/mongo/biometric-cred.schema.js +24 -0
  192. package/dist/schemas/mongo/biometric-cred.schema.js.map +1 -0
  193. package/dist/schemas/mongo/camera-mongo.schema.d.ts +21 -0
  194. package/dist/schemas/mongo/camera-mongo.schema.d.ts.map +1 -0
  195. package/dist/schemas/mongo/camera-mongo.schema.js +54 -0
  196. package/dist/schemas/mongo/camera-mongo.schema.js.map +1 -0
  197. package/dist/schemas/mongo/camera-recording-mongo.schema.d.ts +21 -0
  198. package/dist/schemas/mongo/camera-recording-mongo.schema.d.ts.map +1 -0
  199. package/dist/schemas/mongo/camera-recording-mongo.schema.js +24 -0
  200. package/dist/schemas/mongo/camera-recording-mongo.schema.js.map +1 -0
  201. package/dist/schemas/mongo/event-mongo.schema.d.ts +51 -0
  202. package/dist/schemas/mongo/event-mongo.schema.d.ts.map +1 -0
  203. package/dist/schemas/mongo/event-mongo.schema.js +63 -0
  204. package/dist/schemas/mongo/event-mongo.schema.js.map +1 -0
  205. package/dist/schemas/mongo/event-template-mongo.schema.d.ts +39 -0
  206. package/dist/schemas/mongo/event-template-mongo.schema.d.ts.map +1 -0
  207. package/dist/schemas/mongo/event-template-mongo.schema.js +33 -0
  208. package/dist/schemas/mongo/event-template-mongo.schema.js.map +1 -0
  209. package/dist/schemas/mongo/index.d.ts +16 -0
  210. package/dist/schemas/mongo/index.d.ts.map +1 -0
  211. package/dist/schemas/mongo/index.js +32 -0
  212. package/dist/schemas/mongo/index.js.map +1 -0
  213. package/dist/schemas/mongo/map-mongo.schema.d.ts +20 -0
  214. package/dist/schemas/mongo/map-mongo.schema.d.ts.map +1 -0
  215. package/dist/schemas/mongo/map-mongo.schema.js +16 -0
  216. package/dist/schemas/mongo/map-mongo.schema.js.map +1 -0
  217. package/dist/schemas/mongo/password-cred.schema.d.ts +27 -0
  218. package/dist/schemas/mongo/password-cred.schema.d.ts.map +1 -0
  219. package/dist/schemas/mongo/password-cred.schema.js +22 -0
  220. package/dist/schemas/mongo/password-cred.schema.js.map +1 -0
  221. package/dist/schemas/mongo/permission-mongo.schema.d.ts +21 -0
  222. package/dist/schemas/mongo/permission-mongo.schema.d.ts.map +1 -0
  223. package/dist/schemas/mongo/permission-mongo.schema.js +70 -0
  224. package/dist/schemas/mongo/permission-mongo.schema.js.map +1 -0
  225. package/dist/schemas/mongo/report-mongo.schema.d.ts +41 -0
  226. package/dist/schemas/mongo/report-mongo.schema.d.ts.map +1 -0
  227. package/dist/schemas/mongo/report-mongo.schema.js +71 -0
  228. package/dist/schemas/mongo/report-mongo.schema.js.map +1 -0
  229. package/dist/schemas/mongo/role-mongo.schema.d.ts +22 -0
  230. package/dist/schemas/mongo/role-mongo.schema.d.ts.map +1 -0
  231. package/dist/schemas/mongo/role-mongo.schema.js +73 -0
  232. package/dist/schemas/mongo/role-mongo.schema.js.map +1 -0
  233. package/dist/schemas/mongo/third-party-cred.schema.d.ts +27 -0
  234. package/dist/schemas/mongo/third-party-cred.schema.d.ts.map +1 -0
  235. package/dist/schemas/mongo/third-party-cred.schema.js +30 -0
  236. package/dist/schemas/mongo/third-party-cred.schema.js.map +1 -0
  237. package/dist/schemas/mongo/ui-item.schema.d.ts +23 -0
  238. package/dist/schemas/mongo/ui-item.schema.d.ts.map +1 -0
  239. package/dist/schemas/mongo/ui-item.schema.js +61 -0
  240. package/dist/schemas/mongo/ui-item.schema.js.map +1 -0
  241. package/dist/schemas/mongo/user-mongo.schema.d.ts +24 -0
  242. package/dist/schemas/mongo/user-mongo.schema.d.ts.map +1 -0
  243. package/dist/schemas/mongo/user-mongo.schema.js +34 -0
  244. package/dist/schemas/mongo/user-mongo.schema.js.map +1 -0
  245. package/package.json +34 -0
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PermissionActionMap = exports.EventPermissionAction = exports.InformPermissionAction = exports.GroupPermissionAction = exports.ReportPermissionAction = exports.ServerPermissionAction = exports.ChatroomPermissionAction = exports.PermissionCategory = void 0;
4
+ /**
5
+ * **權限類別 (PermissionCategory)**
6
+ *
7
+ * 列舉所有權限的領域,讓每個權限可以歸屬到特定類別。
8
+ * 定義本系統中所有可能的功能/子系統。
9
+ * 例如:Chatroom, Inform, Event, Group, Server ...
10
+ * 未來若出現新功能,可在此擴充。
11
+ */
12
+ var PermissionCategory;
13
+ (function (PermissionCategory) {
14
+ /** 聊天室 */
15
+ PermissionCategory["Chatroom"] = "chatroom";
16
+ PermissionCategory["Inform"] = "inform";
17
+ PermissionCategory["Event"] = "event";
18
+ PermissionCategory["Report"] = "report";
19
+ PermissionCategory["Group"] = "group";
20
+ PermissionCategory["Server"] = "server";
21
+ // ... 其他服務可自行添加
22
+ })(PermissionCategory || (exports.PermissionCategory = PermissionCategory = {}));
23
+ /**
24
+ * **聊天室可用動作 (ChatroomPermissionAction)**
25
+ */
26
+ var ChatroomPermissionAction;
27
+ (function (ChatroomPermissionAction) {
28
+ /** 可讀取訊息 */
29
+ ChatroomPermissionAction["ReadMessage"] = "readMessage";
30
+ /** 可傳送訊息 */
31
+ ChatroomPermissionAction["SendMessage"] = "sendMessage";
32
+ /** 可編輯/刪除他人訊息 */
33
+ ChatroomPermissionAction["ManageMessages"] = "manageMessages";
34
+ /** 可管理聊天室 (新增移除成員、修改設定) */
35
+ ChatroomPermissionAction["ManageChatroom"] = "manageChatroom";
36
+ })(ChatroomPermissionAction || (exports.ChatroomPermissionAction = ChatroomPermissionAction = {}));
37
+ var ServerPermissionAction;
38
+ (function (ServerPermissionAction) {
39
+ ServerPermissionAction["RestartServer"] = "restartServer";
40
+ ServerPermissionAction["ManageUsers"] = "manageUsers";
41
+ ServerPermissionAction["ConfigureSettings"] = "configureSettings";
42
+ })(ServerPermissionAction || (exports.ServerPermissionAction = ServerPermissionAction = {}));
43
+ var ReportPermissionAction;
44
+ (function (ReportPermissionAction) {
45
+ ReportPermissionAction["ViewReport"] = "viewReport";
46
+ ReportPermissionAction["GenerateReport"] = "generateReport";
47
+ })(ReportPermissionAction || (exports.ReportPermissionAction = ReportPermissionAction = {}));
48
+ var GroupPermissionAction;
49
+ (function (GroupPermissionAction) {
50
+ GroupPermissionAction["ViewGroup"] = "viewGroup";
51
+ GroupPermissionAction["CreateGroup"] = "createGroup";
52
+ GroupPermissionAction["EditGroup"] = "editGroup";
53
+ GroupPermissionAction["DeleteGroup"] = "deleteGroup";
54
+ GroupPermissionAction["ManageMembers"] = "manageMembers";
55
+ })(GroupPermissionAction || (exports.GroupPermissionAction = GroupPermissionAction = {}));
56
+ var InformPermissionAction;
57
+ (function (InformPermissionAction) {
58
+ InformPermissionAction["ViewNotifications"] = "viewNotifications";
59
+ InformPermissionAction["SendNotifications"] = "sendNotifications";
60
+ InformPermissionAction["ManageNotifications"] = "manageNotifications";
61
+ })(InformPermissionAction || (exports.InformPermissionAction = InformPermissionAction = {}));
62
+ var EventPermissionAction;
63
+ (function (EventPermissionAction) {
64
+ EventPermissionAction["ViewEvent"] = "viewEvent";
65
+ EventPermissionAction["CreateEvent"] = "createEvent";
66
+ EventPermissionAction["EditEvent"] = "editEvent";
67
+ EventPermissionAction["DeleteEvent"] = "deleteEvent";
68
+ EventPermissionAction["ManageParticipants"] = "manageParticipants";
69
+ })(EventPermissionAction || (exports.EventPermissionAction = EventPermissionAction = {}));
70
+ exports.PermissionActionMap = {
71
+ [PermissionCategory.Chatroom]: { ...ChatroomPermissionAction },
72
+ [PermissionCategory.Server]: { ...ServerPermissionAction },
73
+ [PermissionCategory.Report]: { ...ReportPermissionAction },
74
+ [PermissionCategory.Group]: { ...GroupPermissionAction },
75
+ [PermissionCategory.Inform]: { ...InformPermissionAction },
76
+ [PermissionCategory.Event]: { ...EventPermissionAction },
77
+ };
78
+ //# sourceMappingURL=permission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission.js","sourceRoot":"","sources":["../../models/permission.ts"],"names":[],"mappings":";;;AACA;;;;;;;GAOG;AACH,IAAY,kBAUX;AAVD,WAAY,kBAAkB;IAC5B,UAAU;IACV,2CAAqB,CAAA;IAErB,uCAAiB,CAAA;IACjB,qCAAe,CAAA;IACf,uCAAiB,CAAA;IACjB,qCAAe,CAAA;IACf,uCAAiB,CAAA;IACjB,gBAAgB;AAClB,CAAC,EAVW,kBAAkB,kCAAlB,kBAAkB,QAU7B;AAGD;;GAEG;AACH,IAAY,wBAYX;AAZD,WAAY,wBAAwB;IAClC,YAAY;IACZ,uDAA2B,CAAA;IAE3B,YAAY;IACZ,uDAA2B,CAAA;IAE3B,iBAAiB;IACjB,6DAAiC,CAAA;IAEjC,2BAA2B;IAC3B,6DAAiC,CAAA;AACnC,CAAC,EAZW,wBAAwB,wCAAxB,wBAAwB,QAYnC;AAED,IAAY,sBAIX;AAJD,WAAY,sBAAsB;IAChC,yDAA+B,CAAA;IAC/B,qDAA2B,CAAA;IAC3B,iEAAuC,CAAA;AACzC,CAAC,EAJW,sBAAsB,sCAAtB,sBAAsB,QAIjC;AAED,IAAY,sBAGX;AAHD,WAAY,sBAAsB;IAChC,mDAAyB,CAAA;IACzB,2DAAiC,CAAA;AACnC,CAAC,EAHW,sBAAsB,sCAAtB,sBAAsB,QAGjC;AAED,IAAY,qBAMX;AAND,WAAY,qBAAqB;IAC/B,gDAAuB,CAAA;IACvB,oDAA2B,CAAA;IAC3B,gDAAuB,CAAA;IACvB,oDAA2B,CAAA;IAC3B,wDAA+B,CAAA;AACjC,CAAC,EANW,qBAAqB,qCAArB,qBAAqB,QAMhC;AAED,IAAY,sBAIX;AAJD,WAAY,sBAAsB;IAChC,iEAAuC,CAAA;IACvC,iEAAuC,CAAA;IACvC,qEAA2C,CAAA;AAC7C,CAAC,EAJW,sBAAsB,sCAAtB,sBAAsB,QAIjC;AAED,IAAY,qBAMX;AAND,WAAY,qBAAqB;IAC/B,gDAAuB,CAAA;IACvB,oDAA2B,CAAA;IAC3B,gDAAuB,CAAA;IACvB,oDAA2B,CAAA;IAC3B,kEAAyC,CAAA;AAC3C,CAAC,EANW,qBAAqB,qCAArB,qBAAqB,QAMhC;AAUY,QAAA,mBAAmB,GAAuD;IACrF,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,wBAAwB,EAAE;IAC9D,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,sBAAsB,EAAE;IAC1D,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,sBAAsB,EAAE;IAC1D,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,qBAAqB,EAAE;IACxD,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,sBAAsB,EAAE;IAC1D,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,qBAAqB,EAAE;CACzD,CAAC"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * 手術報告狀態 (SurgicalReportStatus)
3
+ */
4
+ export declare enum SurgicalReportStatus {
5
+ INIT = "init",// 初始狀態
6
+ DRAFT = "draft",// 草稿狀態
7
+ SUBMITTED = "submitted"
8
+ }
9
+ /**
10
+ * 手術報告類型 (SurgicalReportType)
11
+ */
12
+ export declare enum SurgicalReportType {
13
+ GENERAL = "general",// 一般手術報告
14
+ EMERGENCY = "emergency",// 緊急手術報告
15
+ ELECTIVE = "elective"
16
+ }
17
+ /**
18
+ * 手術報告麻醉類型 (SurgicalReportAnesthesiaType)
19
+ */
20
+ export declare enum SurgicalReportAnesthesiaType {
21
+ GENERAL = "general",// 全身麻醉
22
+ REGIONAL = "regional",// 區域麻醉
23
+ LOCAL = "local",// 局部麻醉
24
+ SEDATION = "sedation"
25
+ }
26
+ /**
27
+ * 醫院科別 (HospitalDepartment)
28
+ */
29
+ export declare enum HospitalDepartment {
30
+ ORTHOPEDICS = "orthopedics",// 骨科
31
+ CARDIOLOGY = "cardiology",// 心臟科
32
+ NEUROLOGY = "neurology",// 神經科
33
+ ONCOLOGY = "oncology",// 腫瘤科
34
+ GASTROENTEROLOGY = "gastroenterology"
35
+ }
36
+ /**
37
+ * 手術擺位 (SurgicalPositioning)
38
+ */
39
+ export declare enum SurgicalPositioning {
40
+ SUPINE = "supine",// 仰臥位
41
+ PRONE = "prone",// 俯臥位
42
+ LATERAL = "lateral"
43
+ }
44
+ /**
45
+ * 照會其他科手術資訊
46
+ */
47
+ export interface ConsultOtherDepartmentInfo {
48
+ consulted: boolean;
49
+ department?: HospitalDepartment | null;
50
+ }
51
+ /**
52
+ * Timeout 查核項目時間
53
+ */
54
+ export interface TimeoutCheckItemInfo {
55
+ time: string;
56
+ items: string[];
57
+ }
58
+ /**
59
+ * 手術報告 (SurgicalReport)
60
+ */
61
+ export interface SurgicalReport {
62
+ caseCode: string;
63
+ file_path?: string;
64
+ status?: SurgicalReportStatus;
65
+ arriveWaitingRoomTime?: string | null;
66
+ enterOperatingRoomTime?: string | null;
67
+ anesthesiaStartTime?: string | null;
68
+ surgeryStartTime?: string | null;
69
+ surgeryEndTime?: string | null;
70
+ patientToNextUnitTime?: string | null;
71
+ surgeryType?: SurgicalReportType | null;
72
+ anesthesiaType?: SurgicalReportAnesthesiaType | null;
73
+ consultOtherDepartmentSurgery?: ConsultOtherDepartmentInfo | null;
74
+ correctPositioning?: SurgicalPositioning | null;
75
+ implant?: string | null;
76
+ timeoutCheckItems?: TimeoutCheckItemInfo[] | null;
77
+ confirmBloodProduct?: boolean | null;
78
+ administerProphylacticAntibioticWithin60MinutesBeforeIncision?: boolean | null;
79
+ }
80
+ /**
81
+ * 報告類型 (ReportType)
82
+ */
83
+ /**
84
+ * 報告 (Report)
85
+ * 支援多種分類,surgicalReport 為其中一種
86
+ */
87
+ import { Types } from "mongoose";
88
+ import { Base } from "./utils";
89
+ import { EventCategory } from "./template";
90
+ export interface ReportSectionRule {
91
+ eventType: string;
92
+ keywords?: string[];
93
+ payloadFilter?: Record<string, any>;
94
+ }
95
+ export interface ReportSection {
96
+ title: string;
97
+ rules: ReportSectionRule[];
98
+ template: string;
99
+ }
100
+ export interface ReportDefinition extends Base {
101
+ name: string;
102
+ code: string;
103
+ category: EventCategory;
104
+ description?: string;
105
+ eventFilters?: Record<string, any>[];
106
+ sections: ReportSection[];
107
+ isActive: boolean;
108
+ }
109
+ /** 報告執行狀態 */
110
+ export declare enum ReportRunStatus {
111
+ Draft = "draft",
112
+ Running = "running",
113
+ Completed = "completed",
114
+ Failed = "failed",
115
+ Finalized = "finalized"
116
+ }
117
+ /** 報告輸出的章節內容 */
118
+ export interface ReportRunSection {
119
+ /** 章節標題(如:手術步驟、器械使用等) */
120
+ title: string;
121
+ /** 章節純文字/Markdown 內容 */
122
+ content: string;
123
+ /** 可選:用於前端渲染的結構化資料(圖表資料、表格資料) */
124
+ data?: Record<string, any>;
125
+ }
126
+ /** 報告輸出主體 */
127
+ export interface ReportRunGeneratedContent {
128
+ title: string;
129
+ summary?: string;
130
+ sections: ReportRunSection[];
131
+ /** 方便追蹤生成依據(規則、模型版本、參數等) */
132
+ provenance?: {
133
+ definitionName?: string;
134
+ definitionVersion?: number;
135
+ model?: {
136
+ name?: string;
137
+ version?: string;
138
+ };
139
+ params?: Record<string, any>;
140
+ };
141
+ }
142
+ /** 這次報告實際用到的事件 */
143
+ export interface ReportRunEventRef {
144
+ eventId: Types.ObjectId | string;
145
+ eventType: string;
146
+ /** 可選:事件時間,方便除錯與比對 */
147
+ startTime?: Date;
148
+ }
149
+ /** ReportRun 主體 */
150
+ export interface ReportRun extends Base {
151
+ /** 指向 ReportDefinition */
152
+ definitionId: ReportDefinition["id"];
153
+ /** 本次報告所屬手術/就醫事件 ID asr event sessionId */
154
+ encounterId: string;
155
+ /** 本次報告所屬病人 ID */
156
+ patientCaseCode: string;
157
+ /** 狀態機:draft → running → completed → finalized(或 failed) */
158
+ status: ReportRunStatus;
159
+ /** 這次生成實際用到的事件清單(可追溯) */
160
+ eventsUsed: ReportRunEventRef[];
161
+ /** 產生的報告內容(可 Markdown / 結構化) */
162
+ generatedContent?: ReportRunGeneratedContent;
163
+ /** 失敗原因(若 failed) */
164
+ failureReason?: string;
165
+ finalizedAt?: Date;
166
+ }
167
+ //# sourceMappingURL=report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../models/report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReportRunStatus = exports.SurgicalPositioning = exports.HospitalDepartment = exports.SurgicalReportAnesthesiaType = exports.SurgicalReportType = exports.SurgicalReportStatus = void 0;
4
+ /**
5
+ * 手術報告狀態 (SurgicalReportStatus)
6
+ */
7
+ var SurgicalReportStatus;
8
+ (function (SurgicalReportStatus) {
9
+ SurgicalReportStatus["INIT"] = "init";
10
+ SurgicalReportStatus["DRAFT"] = "draft";
11
+ SurgicalReportStatus["SUBMITTED"] = "submitted"; // 已提交狀態
12
+ })(SurgicalReportStatus || (exports.SurgicalReportStatus = SurgicalReportStatus = {}));
13
+ /**
14
+ * 手術報告類型 (SurgicalReportType)
15
+ */
16
+ var SurgicalReportType;
17
+ (function (SurgicalReportType) {
18
+ SurgicalReportType["GENERAL"] = "general";
19
+ SurgicalReportType["EMERGENCY"] = "emergency";
20
+ SurgicalReportType["ELECTIVE"] = "elective"; // 計劃性手術報告
21
+ })(SurgicalReportType || (exports.SurgicalReportType = SurgicalReportType = {}));
22
+ /**
23
+ * 手術報告麻醉類型 (SurgicalReportAnesthesiaType)
24
+ */
25
+ var SurgicalReportAnesthesiaType;
26
+ (function (SurgicalReportAnesthesiaType) {
27
+ SurgicalReportAnesthesiaType["GENERAL"] = "general";
28
+ SurgicalReportAnesthesiaType["REGIONAL"] = "regional";
29
+ SurgicalReportAnesthesiaType["LOCAL"] = "local";
30
+ SurgicalReportAnesthesiaType["SEDATION"] = "sedation"; // 鎮靜麻醉
31
+ })(SurgicalReportAnesthesiaType || (exports.SurgicalReportAnesthesiaType = SurgicalReportAnesthesiaType = {}));
32
+ /**
33
+ * 醫院科別 (HospitalDepartment)
34
+ */
35
+ var HospitalDepartment;
36
+ (function (HospitalDepartment) {
37
+ HospitalDepartment["ORTHOPEDICS"] = "orthopedics";
38
+ HospitalDepartment["CARDIOLOGY"] = "cardiology";
39
+ HospitalDepartment["NEUROLOGY"] = "neurology";
40
+ HospitalDepartment["ONCOLOGY"] = "oncology";
41
+ HospitalDepartment["GASTROENTEROLOGY"] = "gastroenterology"; // 腸胃科
42
+ })(HospitalDepartment || (exports.HospitalDepartment = HospitalDepartment = {}));
43
+ /**
44
+ * 手術擺位 (SurgicalPositioning)
45
+ */
46
+ var SurgicalPositioning;
47
+ (function (SurgicalPositioning) {
48
+ SurgicalPositioning["SUPINE"] = "supine";
49
+ SurgicalPositioning["PRONE"] = "prone";
50
+ SurgicalPositioning["LATERAL"] = "lateral"; // 側臥位
51
+ })(SurgicalPositioning || (exports.SurgicalPositioning = SurgicalPositioning = {}));
52
+ /** 報告執行狀態 */
53
+ var ReportRunStatus;
54
+ (function (ReportRunStatus) {
55
+ ReportRunStatus["Draft"] = "draft";
56
+ ReportRunStatus["Running"] = "running";
57
+ ReportRunStatus["Completed"] = "completed";
58
+ ReportRunStatus["Failed"] = "failed";
59
+ ReportRunStatus["Finalized"] = "finalized";
60
+ })(ReportRunStatus || (exports.ReportRunStatus = ReportRunStatus = {}));
61
+ //# sourceMappingURL=report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../models/report.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,IAAY,oBAIX;AAJD,WAAY,oBAAoB;IAC9B,qCAAa,CAAA;IACb,uCAAe,CAAA;IACf,+CAAuB,CAAA,CAAA,QAAQ;AACjC,CAAC,EAJW,oBAAoB,oCAApB,oBAAoB,QAI/B;AAED;;GAEG;AACH,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC5B,yCAAmB,CAAA;IACnB,6CAAuB,CAAA;IACvB,2CAAqB,CAAA,CAAI,UAAU;AACrC,CAAC,EAJW,kBAAkB,kCAAlB,kBAAkB,QAI7B;AAED;;GAEG;AACH,IAAY,4BAKX;AALD,WAAY,4BAA4B;IACtC,mDAAmB,CAAA;IACnB,qDAAqB,CAAA;IACrB,+CAAe,CAAA;IACf,qDAAqB,CAAA,CAAE,OAAO;AAChC,CAAC,EALW,4BAA4B,4CAA5B,4BAA4B,QAKvC;AAED;;GAEG;AACH,IAAY,kBAMX;AAND,WAAY,kBAAkB;IAC5B,iDAA2B,CAAA;IAC3B,+CAAyB,CAAA;IACzB,6CAAuB,CAAA;IACvB,2CAAqB,CAAA;IACrB,2DAAqC,CAAA,CAAA,MAAM;AAC7C,CAAC,EANW,kBAAkB,kCAAlB,kBAAkB,QAM7B;AAED;;GAEG;AACH,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,wCAAiB,CAAA;IACjB,sCAAe,CAAA;IACf,0CAAmB,CAAA,CAAI,MAAM;AAC/B,CAAC,EAJW,mBAAmB,mCAAnB,mBAAmB,QAI9B;AA4FD,aAAa;AACb,IAAY,eAMX;AAND,WAAY,eAAe;IACzB,kCAAe,CAAA;IACf,sCAAmB,CAAA;IACnB,0CAAuB,CAAA;IACvB,oCAAiB,CAAA;IACjB,0CAAuB,CAAA;AACzB,CAAC,EANW,eAAe,+BAAf,eAAe,QAM1B"}
@@ -0,0 +1,84 @@
1
+ import { Permission } from './permission';
2
+ import { User } from './user';
3
+ import { Base } from './utils';
4
+ /**
5
+ * **角色擁有者類型 (OwnerType)**
6
+ * 為了抽象化「角色隸屬於哪個實體」而設計。
7
+ * - 例如: "server"、"group"、或未來更多像 "organization"、"project" 等等
8
+ * - 可以自由延伸
9
+ */
10
+ export declare enum OwnerType {
11
+ System = "system",
12
+ Platform = "platform",
13
+ Chatroom = "chatroom",
14
+ Inform = "Inform",
15
+ Event = "event",
16
+ Report = "report",
17
+ Group = "group",
18
+ Department = "department",
19
+ Server = "server",
20
+ ChannelCategory = "channel_category",
21
+ Channel = "channel"
22
+ }
23
+ /**
24
+ * **角色 (Role)**
25
+ * 用於定義某個實體 (ownerType + ownerId) 底下的一種角色,擁有一組權限。
26
+ *
27
+ * - **`ownerType`**: 角色隸屬於哪種實體 (server / group / ...)
28
+ * - **`ownerId`**: 角色隸屬於哪個實體的 ID
29
+ * - **`name`**: 角色名稱 (如 "admin", "moderator", "user")
30
+ * - **`[permissionIds]`** _(可選)_: 角色擁有的權限清單,若未設置則預設為空陣列 `[]`。
31
+ */
32
+ export interface Role extends Base {
33
+ /**
34
+ * 角色隸屬於哪種實體類型,例如 Server, Group ...
35
+ * 若需要更抽象,也可使用 "ownerType: string" 由程式邏輯自行決定
36
+ */
37
+ ownerType: OwnerType;
38
+ /** 對應的實體 ID,如某個 Server["id"] 或 Group["id"] */
39
+ ownerId: string;
40
+ /** 角色名稱 (如 "admin", "moderator", "member", ...) */
41
+ name: string;
42
+ /** 該角色擁有哪些權限 (Permission IDs) */
43
+ permissionId_list?: Permission['id'][];
44
+ }
45
+ /**
46
+ * **角色權限 (RolePermission)**
47
+ * 角色擁有哪一個權限。
48
+ *
49
+ * - **`roleId`**: 角色的 ID
50
+ * - **`permissionId`**: 該角色擁有哪些權限 (Permission)
51
+ */
52
+ export interface RolePermission extends Base {
53
+ /** 角色的 ID */
54
+ roleId: Role['id'];
55
+ /** 該角色擁有哪些權限 (Permission) */
56
+ permissionId: Permission['id'];
57
+ }
58
+ /**
59
+ * **抽象的 Membership**
60
+ *
61
+ * 用來表示「使用者隸屬於某個實體 (ownerType + ownerId)」的關係,
62
+ * 以及該使用者在該實體下的角色與其他資訊。
63
+ *
64
+ * - **`ownerType`**: 此 Membership 屬於哪個類型 (server / group / ...)
65
+ * - **`ownerId`**: 此 Membership 屬於哪個實體的 ID
66
+ * - **`userId`**: 使用者 ID
67
+ * - **`[roleIds]`** _(可選)_: 該使用者在此實體下擁有哪些角色
68
+ */
69
+ export interface Membership extends Base {
70
+ /** 隸屬的實體類型 (server, group...) */
71
+ ownerType: OwnerType;
72
+ /** 對應實體的 ID (例如某個 Server["id"] 或 Group["id"]) */
73
+ ownerId: string;
74
+ /** 哪位使用者 (User["id"]) */
75
+ userId: User['id'];
76
+ /**
77
+ * 在此實體下使用者所擁有的角色集合
78
+ * 這些角色需要符合:
79
+ * - role.ownerType = 同樣的 ownerType
80
+ * - role.ownerId = 同樣的 ownerId
81
+ */
82
+ roleIds?: Role['id'][];
83
+ }
84
+ //# sourceMappingURL=role.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.d.ts","sourceRoot":"","sources":["../../models/role.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAG9B;;;;;GAKG;AACH,oBAAY,SAAS;IACnB,MAAM,WAAW;IACjB,QAAQ,aAAa;IAErB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,MAAM,WAAW;IAEjB,KAAK,UAAU;IACf,UAAU,eAAe;IAEzB,MAAM,WAAW;IACjB,eAAe,qBAAqB;IACpC,OAAO,YAAY;CAEpB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,IAAK,SAAQ,IAAI;IAChC;;;OAGG;IACH,SAAS,EAAE,SAAS,CAAC;IAErB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAEhB,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IAEb,iCAAiC;IACjC,iBAAiB,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;CACxC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAe,SAAQ,IAAI;IAC1C,aAAa;IACb,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAEnB,6BAA6B;IAC7B,YAAY,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;CAChC;AAID;;;;;;;;;;GAUG;AACH,MAAM,WAAW,UAAW,SAAQ,IAAI;IACtC,iCAAiC;IACjC,SAAS,EAAE,SAAS,CAAC;IAErB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAEhB,yBAAyB;IACzB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAEnB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;CACxB"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OwnerType = void 0;
4
+ /**
5
+ * **角色擁有者類型 (OwnerType)**
6
+ * 為了抽象化「角色隸屬於哪個實體」而設計。
7
+ * - 例如: "server"、"group"、或未來更多像 "organization"、"project" 等等
8
+ * - 可以自由延伸
9
+ */
10
+ var OwnerType;
11
+ (function (OwnerType) {
12
+ OwnerType["System"] = "system";
13
+ OwnerType["Platform"] = "platform";
14
+ OwnerType["Chatroom"] = "chatroom";
15
+ OwnerType["Inform"] = "Inform";
16
+ OwnerType["Event"] = "event";
17
+ OwnerType["Report"] = "report";
18
+ OwnerType["Group"] = "group";
19
+ OwnerType["Department"] = "department";
20
+ OwnerType["Server"] = "server";
21
+ OwnerType["ChannelCategory"] = "channel_category";
22
+ OwnerType["Channel"] = "channel";
23
+ // ... 如果將來還有其他實體,也能加在這裡
24
+ })(OwnerType || (exports.OwnerType = OwnerType = {}));
25
+ //# sourceMappingURL=role.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.js","sourceRoot":"","sources":["../../models/role.ts"],"names":[],"mappings":";;;AAMA;;;;;GAKG;AACH,IAAY,SAgBX;AAhBD,WAAY,SAAS;IACnB,8BAAiB,CAAA;IACjB,kCAAqB,CAAA;IAErB,kCAAqB,CAAA;IACrB,8BAAiB,CAAA;IACjB,4BAAe,CAAA;IACf,8BAAiB,CAAA;IAEjB,4BAAe,CAAA;IACf,sCAAyB,CAAA;IAEzB,8BAAiB,CAAA;IACjB,iDAAoC,CAAA;IACpC,gCAAmB,CAAA;IACnB,wBAAwB;AAC1B,CAAC,EAhBW,SAAS,yBAAT,SAAS,QAgBpB"}
@@ -0,0 +1,39 @@
1
+ import { Template } from "./template";
2
+ import { Base } from "./utils";
3
+ /**
4
+ * **排程 (Schedule)**
5
+ *
6
+ * 表示需要重複執行某項事件或動作的排程資訊。
7
+ *
8
+ * - **`name`**:排程名稱
9
+ * - **`recurrenceRule`**:使用 iCalendar `RRULE` 格式定義循環規則 (如 `FREQ=WEEKLY;BYDAY=MO,WE,FR`)
10
+ * - **`nextOccurrence`**:程式計算出的下一次執行時間
11
+ * - **`isActive`**:排程是否處於啟用狀態 (true/false)
12
+ *
13
+ * @interface Schedule
14
+ */
15
+ export interface Schedule extends Base {
16
+ /**
17
+ * 排程名稱
18
+ * @example "每週報表產生"
19
+ */
20
+ name: string;
21
+ /**
22
+ * 重複規則,使用 iCalendar `RRULE` 格式
23
+ * @example "FREQ=WEEKLY;BYDAY=MO,WE,FR"
24
+ */
25
+ recurrenceRule: string;
26
+ /**
27
+ * 下一次執行時間
28
+ * 由系統根據 recurrenceRule 計算出
29
+ * @example new Date("2025-02-24T08:00:00Z")
30
+ */
31
+ nextOccurrence: Date;
32
+ /**
33
+ * 排程是否啟用
34
+ * @default true
35
+ */
36
+ isActive: boolean;
37
+ templateId: Template['id'];
38
+ }
39
+ //# sourceMappingURL=schedule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule.d.ts","sourceRoot":"","sources":["../../models/schedule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,QAAS,SAAQ,IAAI;IACpC;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;IACH,cAAc,EAAE,IAAI,CAAC;IAErB;;;OAGG;IACH,QAAQ,EAAE,OAAO,CAAC;IAElB,UAAU,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;CAC3B"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=schedule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule.js","sourceRoot":"","sources":["../../models/schedule.ts"],"names":[],"mappings":""}
@@ -0,0 +1,97 @@
1
+ import { Attachment } from "./attachment";
2
+ import { TaskTemplate } from "./template";
3
+ import { User } from "./user";
4
+ import { Base } from "./utils";
5
+ /**
6
+ * **任務狀態**
7
+ *
8
+ * 定義任務的執行與阻塞狀態:
9
+ * - **`NOT_STARTED`**:尚未開始。
10
+ * - **`IN_PROGRESS`**:進行中。
11
+ * - **`COMPLETED`**:已完成。
12
+ * - **`BLOCKED`**:因依賴或其他原因被阻塞,無法繼續。
13
+ */
14
+ export declare enum TaskStatus {
15
+ /** 尚未開始 */
16
+ NOT_STARTED = "NOT_STARTED",
17
+ /** 進行中 */
18
+ IN_PROGRESS = "IN_PROGRESS",
19
+ /** 已完成 */
20
+ COMPLETED = "COMPLETED",
21
+ /** 被阻塞 */
22
+ BLOCKED = "BLOCKED"
23
+ }
24
+ /**
25
+ * **任務表**
26
+ *
27
+ * 用於存儲各種任務資訊,包括基礎的任務狀態、指派人、執行人、驗證人,以及任務所需技能等。
28
+ *
29
+ * - **`status`**:任務狀態 (NOT_STARTED / IN_PROGRESS / COMPLETED / BLOCKED)。
30
+ * - **`assignor`**:派發人 (指派此任務的人)。
31
+ * - **`executorId`**:執行人 (實際負責此任務的人)。
32
+ * - **`startAt`**:任務實際開始執行的時間,與建立時間不同。
33
+ * - **`endAt`**:任務完成或結束的時間。
34
+ * - **`[dueDate]`** _(可選)_:任務截止日期。
35
+ * - **`[templateId]`** _(可選)_:根據模板產生。
36
+ * - **`[validatorId]`** _(可選)_:驗證人 (負責審核或驗證任務品質)。
37
+ */
38
+ export interface Task extends TaskTemplate {
39
+ /** 上層任務 ID (若為最上層則可為 undefined) */
40
+ parentId?: Task['id'];
41
+ /**
42
+ * 依賴的任務 ID :
43
+ * 若其中任務尚未完成,則本任務可能處於 BLOCKED 狀態
44
+ */
45
+ dependencyId?: Task['id'];
46
+ /** 任務狀態 (NOT_STARTED / IN_PROGRESS / COMPLETED / BLOCKED) */
47
+ status: TaskStatus;
48
+ /** 派發人 (指派此任務的人) */
49
+ assignor: User['id'];
50
+ /** 執行人 (負責實際完成此任務) */
51
+ executorId: User['id'];
52
+ /**
53
+ * 任務開始執行的時間。
54
+ * 與建立時間 (createdAt) 不同,此時間表示任務實際開始進行工作時的時間點。
55
+ * @example new Date("2025-03-01T09:00:00Z")
56
+ */
57
+ startAt: Date;
58
+ /**
59
+ * 任務完成或結束的時間。
60
+ * 當任務狀態更新為 COMPLETED 或其他結束狀態時,記錄此時間。
61
+ * @example new Date("2025-03-01T17:00:00Z")
62
+ */
63
+ endAt: Date;
64
+ /** 任務截止日期 */
65
+ dueDate?: Date;
66
+ /** 根據模板產生。 */
67
+ templateId?: TaskTemplate['id'];
68
+ /** 驗證人 (負責審核此任務完成品質,可為 undefined) */
69
+ validatorId?: User['id'];
70
+ }
71
+ /**
72
+ * **任務指派歷史表**
73
+ *
74
+ * 用於記錄每一次任務指派或重新分派的行為,包括:
75
+ * - **`taskId`**:關聯到哪個任務。
76
+ * - **`fromUserId`** _(可選)_:原執行人或原派發人。
77
+ * - **`toUserId`**:新的執行人或接手者。
78
+ * - **`assignedAt`**:何時進行該次指派。
79
+ * - **`reason`** _(可選)_:轉派原因說明。
80
+ */
81
+ export interface TaskAssignmentHistory extends Base {
82
+ /** 關聯到哪個 Task 的 ID */
83
+ taskId: Task["id"];
84
+ /** 原執行人 (可為空,若是第一次指派則可能無 fromUserId) */
85
+ fromUserId?: string;
86
+ /** 新的執行人 / 接手人 */
87
+ toUserId: string;
88
+ /** 何時進行該次指派 */
89
+ assignedAt: Date;
90
+ /** 轉派原因 (可選) */
91
+ reason?: string;
92
+ }
93
+ export type TaskReport = Attachment & {
94
+ attachTo?: never;
95
+ taskId: Task['id'];
96
+ };
97
+ //# sourceMappingURL=task.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../models/task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B;;;;;;;;GAQG;AACH,oBAAY,UAAU;IACpB,WAAW;IACX,WAAW,gBAAgB;IAE3B,UAAU;IACV,WAAW,gBAAgB;IAE3B,UAAU;IACV,SAAS,cAAc;IAEvB,UAAU;IACV,OAAO,YAAY;CACpB;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,IAAK,SAAQ,YAAY;IACxC,mCAAmC;IACnC,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAEtB;;;OAGG;IACH,YAAY,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAE1B,6DAA6D;IAC7D,MAAM,EAAE,UAAU,CAAC;IAEnB,oBAAoB;IACpB,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAErB,sBAAsB;IACtB,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAEvB;;;;OAIG;IACH,OAAO,EAAE,IAAI,CAAC;IAEd;;;;OAIG;IACH,KAAK,EAAE,IAAI,CAAC;IAEZ,aAAa;IACb,OAAO,CAAC,EAAE,IAAI,CAAC;IAEf,cAAc;IACd,UAAU,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IAEhC,qCAAqC;IACrC,WAAW,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAsB,SAAQ,IAAI;IACjD,sBAAsB;IACtB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAEnB,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,kBAAkB;IAClB,QAAQ,EAAE,MAAM,CAAC;IAEjB,eAAe;IACf,UAAU,EAAE,IAAI,CAAC;IAEjB,gBAAgB;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG;IACpC,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;CACpB,CAAA"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TaskStatus = void 0;
4
+ /**
5
+ * **任務狀態**
6
+ *
7
+ * 定義任務的執行與阻塞狀態:
8
+ * - **`NOT_STARTED`**:尚未開始。
9
+ * - **`IN_PROGRESS`**:進行中。
10
+ * - **`COMPLETED`**:已完成。
11
+ * - **`BLOCKED`**:因依賴或其他原因被阻塞,無法繼續。
12
+ */
13
+ var TaskStatus;
14
+ (function (TaskStatus) {
15
+ /** 尚未開始 */
16
+ TaskStatus["NOT_STARTED"] = "NOT_STARTED";
17
+ /** 進行中 */
18
+ TaskStatus["IN_PROGRESS"] = "IN_PROGRESS";
19
+ /** 已完成 */
20
+ TaskStatus["COMPLETED"] = "COMPLETED";
21
+ /** 被阻塞 */
22
+ TaskStatus["BLOCKED"] = "BLOCKED";
23
+ })(TaskStatus || (exports.TaskStatus = TaskStatus = {}));
24
+ //# sourceMappingURL=task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.js","sourceRoot":"","sources":["../../models/task.ts"],"names":[],"mappings":";;;AAKA;;;;;;;;GAQG;AACH,IAAY,UAYX;AAZD,WAAY,UAAU;IACpB,WAAW;IACX,yCAA2B,CAAA;IAE3B,UAAU;IACV,yCAA2B,CAAA;IAE3B,UAAU;IACV,qCAAuB,CAAA;IAEvB,UAAU;IACV,iCAAmB,CAAA;AACrB,CAAC,EAZW,UAAU,0BAAV,UAAU,QAYrB"}