@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,197 @@
1
+ import { EventSubType } from "./event";
2
+ import { InformChannel, InformStrategyConfig } from "./inform";
3
+ import { Base } from "./utils";
4
+ export declare enum EventCategory {
5
+ Visual = "visual",// 視覺辨識類事件
6
+ System = "system",// 系統類事件
7
+ UserBehavior = "userBehavior",// 使用者行為類事件
8
+ Voice = "voice"
9
+ }
10
+ export declare enum EventType {
11
+ Violation = "violation",// 違規(規則/法規型)
12
+ Anomaly = "anomaly",// 異常(統計/偵測異常)
13
+ Incident = "incident",// 事故/事件(需處置)
14
+ Maintenance = "maintenance",// 維護/保養
15
+ Record = "record"
16
+ }
17
+ export declare enum EventTaskStatus {
18
+ ACTIVE = "ACTIVE",
19
+ PAUSED = "PAUSED",
20
+ FAILED = "FAILED",
21
+ DONE = "DONE"
22
+ }
23
+ export interface EventTemplateName extends Base {
24
+ /** 唯一代碼(業務鍵),例:PPE_HEADWEAR */
25
+ code: string;
26
+ /** 顯示名稱(可做 i18n 多語) */
27
+ displayName: string | {
28
+ [lang: string]: string;
29
+ };
30
+ /** 是否啟用此名稱 */
31
+ isActive: boolean;
32
+ }
33
+ /**
34
+ * **事件模板介面 (IEventTemplate)**
35
+ *
36
+ * 用於產生事件的標準模板,繼承自 Base 基礎介面。
37
+ * 此介面定義了建立事件時所需的基本屬性和配置。
38
+ *
39
+ * @interface EventTemplate
40
+ * @extends Base
41
+ */
42
+ export interface EventTemplate extends Base {
43
+ /**
44
+ * 模板名稱
45
+ *
46
+ * 用於識別和區分不同的事件模板,應具有描述性且易於理解
47
+ *
48
+ * @type {string}
49
+ * @example "PPE_NORMAL"
50
+ * @example "PPE_PLANT"
51
+ */
52
+ nameCode: string;
53
+ /**
54
+ * 事件分類
55
+ *
56
+ * 定義事件所屬的大分類,用於事件的初步歸類和處理路由
57
+ *
58
+ * @type {EventCategory}
59
+ * @example EventCategory.Visual - 視覺辨識類事件
60
+ * @example EventCategory.System - 系統類事件
61
+ * @example EventCategory.Voice - 語音辨識類事件
62
+ */
63
+ category: EventCategory;
64
+ /**
65
+ * 事件類型
66
+ *
67
+ * 更細化的事件類型定義,與 category 搭配使用以精確分類事件
68
+ * 通常與 EventCategory 有對應關係
69
+ *
70
+ * @type {EventType}
71
+ * @example EventType.Visual - 視覺辨識
72
+ * @example EventType.System - 系統監控
73
+ * @example EventType.UserBehavior - 使用者行為
74
+ */
75
+ type: EventType;
76
+ /**
77
+ * 事件嚴重程度
78
+ *
79
+ * 數值範圍通常為 1-5,數字越大表示事件越嚴重
80
+ * 用於決定事件處理的優先順序和通知策略
81
+ *
82
+ * @type {number}
83
+ * @range 1-5
84
+ * @example 1 - 資訊性事件(低優先度)
85
+ * @example 3 - 一般事件(中等優先度)
86
+ * @example 5 - 緊急事件(最高優先度)
87
+ */
88
+ severity: number;
89
+ /** * 模板描述
90
+ *
91
+ * 用於說明此模板的用途和適用場景,幫助使用者理解和選擇合適的模板
92
+ *
93
+ * @type {string}
94
+ * @example "用於偵測未戴安全帽的事件"
95
+ * @example "用於記錄系統異常狀況"
96
+ */
97
+ description?: string;
98
+ /**
99
+ * 模板啟用狀態
100
+ *
101
+ * 控制此模板是否可用於產生新的事件
102
+ * false 表示模板已停用,不會用於建立新事件
103
+ *
104
+ * @type {boolean}
105
+ * @default true
106
+ * @example true - 模板啟用中,可用於產生事件
107
+ * @example false - 模板已停用,暫停使用
108
+ */
109
+ isActive: boolean;
110
+ }
111
+ /**
112
+ * **事件通知設定 (模板)**
113
+ *
114
+ * 用於定義哪些事件應該通知誰,以及適用的通知策略。
115
+ *
116
+ * - `eventType`:要監聽的事件類別。
117
+ * - `subTypes`:要監聽的子類型列表(可選,若未指定則監聽該類別下所有子類型)。
118
+ * - `recipients`:通知接收者 (可為使用者 ID 或 Webhook URL)。
119
+ * - `channels`:發送通知的渠道 (Email, SMS, Webhook...)。
120
+ * - `strategy`:通知策略,包含持續通知與子類型變化通知兩種模式。
121
+ */
122
+ export interface EventInformTemplate extends Base {
123
+ /** 監聽的事件類別 */
124
+ eventType: EventType;
125
+ /** 監聽的特定事件子類型(若為空則監聽該類別的所有事件) */
126
+ subTypes?: EventSubType[];
127
+ /** 接收通知的對象 (使用者 ID 或 Webhook URL) */
128
+ recipients: string[];
129
+ /** 發送通知的渠道 (Email, SMS, Webhook...) */
130
+ channels: InformChannel[];
131
+ /** 通知策略 */
132
+ strategy: InformStrategyConfig;
133
+ }
134
+ /**
135
+ * **任務模板 (TaskTemplate)**
136
+ *
137
+ * 用於定義任務執行前的標準作業流程 (SOP),包含任務的預設資訊,
138
+ * 當真實事件發生時,根據該模板產生一個 Task 實例。
139
+ *
140
+ * - **`name`**:任務模板名稱,作為 SOP 的標題。
141
+ * - **`description`**:任務模板描述,說明標準流程或要求。
142
+ * - **`[parentTaskId]`** _(可選)_:上層任務 ID,若為最上層任務則為 `null` 或 `undefined`。
143
+ * - **`[dependencyId]`** _(可選)_:依賴的任務 ID ,若其中任務未完成,則本任務可能被阻塞。
144
+ * - **`[freeTags]`** _(可選)_:可額外標註任何關鍵字或標籤,讓系統可彈性紀錄任務。
145
+ * - **`[weight]`** _(可選)_:任務重量 / 工作量 (小時數、點數等)。
146
+ * - **`[complexity]`** _(可選)_:任務複雜度 (難度指數)。
147
+ * - **`[priority]`** _(可選)_:任務優先度 (可用數值或自定義枚舉)。
148
+ * - **`[requiredSkills]`** _(可選)_:任務所需的技能陣列。
149
+ * - **`[requiredKnowledge]`** _(可選)_:任務所需的知識領域陣列。
150
+ *
151
+ * @interface TaskTemplate
152
+ */
153
+ export interface TaskTemplate extends Base {
154
+ /**
155
+ * 任務模板名稱。
156
+ * @example "撰寫月度報告"
157
+ */
158
+ name: string;
159
+ /**
160
+ * 任務模板描述,說明該 SOP 的標準流程或要求。
161
+ * @example "依據公司指示撰寫並提交月度報告。"
162
+ */
163
+ description?: string;
164
+ /** 上層任務 ID (若為最上層則可為 undefined) */
165
+ parentId?: TaskTemplate['id'];
166
+ /**
167
+ * 依賴的任務 ID :
168
+ * 若其中任務尚未完成,則本任務可能處於 BLOCKED 狀態
169
+ */
170
+ dependencyId?: TaskTemplate['id'];
171
+ /**
172
+ * 預設標籤,作為產生任務時的初始標籤。
173
+ */
174
+ freeTags?: string[];
175
+ /**
176
+ * 預設工作量 (例如小時數或點數)。
177
+ * @example 8
178
+ */
179
+ weight?: number;
180
+ /**
181
+ * 預設任務複雜度 (難度指數)。
182
+ * @example 5
183
+ */
184
+ complexity?: number;
185
+ /** 任務優先度 (可用數值或自定義枚舉/常數) */
186
+ priority?: number;
187
+ /** 任務所需的技能陣列。
188
+ * @example ["React", "Welding"]
189
+ */
190
+ requiredSkills?: string[];
191
+ /** 任務所需的知識領域。
192
+ * @example ["ISO 9001", "金融法規"]
193
+ */
194
+ requiredKnowledge?: string[];
195
+ }
196
+ export type Template = EventTemplate | EventInformTemplate;
197
+ //# sourceMappingURL=template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../models/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AA2C/B,oBAAY,aAAa;IACvB,MAAM,WAAW,CAAU,UAAU;IACrC,MAAM,WAAW,CAAU,QAAQ;IACnC,YAAY,iBAAiB,CAAE,WAAW;IAC1C,KAAK,UAAU;CAChB;AAGD,oBAAY,SAAS;IACnB,SAAS,cAAc,CAAM,aAAa;IAC1C,OAAO,YAAY,CAAU,cAAc;IAC3C,QAAQ,aAAa,CAAQ,aAAa;IAC1C,WAAW,gBAAgB,CAAE,QAAQ;IACrC,MAAM,WAAW;CAClB;AAGD,oBAAY,eAAe;IACzB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,IAAI,SAAS;CACd;AAOD,MAAM,WAAW,iBAAkB,SAAQ,IAAI;IAC7C,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,WAAW,EAAE,MAAM,GAAG;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACjD,cAAc;IACd,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAc,SAAQ,IAAI;IACzC;;;;;;;;OAQG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;;;;;;OASG;IACH,QAAQ,EAAE,aAAa,CAAC;IAExB;;;;;;;;;;OAUG;IACH,IAAI,EAAE,SAAS,CAAC;IAEhB;;;;;;;;;;;OAWG;IACH,QAAQ,EAAE,MAAM,CAAC;IAGjB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;;;;;OAUG;IACH,QAAQ,EAAE,OAAO,CAAC;CACnB;AAMD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,mBAAoB,SAAQ,IAAI;IAC/C,cAAc;IACd,SAAS,EAAE,SAAS,CAAC;IAErB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAE1B,qCAAqC;IACrC,UAAU,EAAE,MAAM,EAAE,CAAC;IAErB,uCAAuC;IACvC,QAAQ,EAAE,aAAa,EAAE,CAAC;IAE1B,WAAW;IACX,QAAQ,EAAE,oBAAoB,CAAC;CAChC;AAID;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,YAAa,SAAQ,IAAI;IACxC;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IAE9B;;;OAGG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IAElC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,mBAAmB,CAAC"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EventTaskStatus = exports.EventType = exports.EventCategory = void 0;
4
+ // /**
5
+ // * **事件模板 (EventTemplate)**
6
+ // *
7
+ // * 用於產生事件的藍本。與 Event 的主要差異在於:
8
+ // * - 模板本身沒有具體的觸發時間,僅包含預設的事件屬性。
9
+ // * - 當排程觸發時,根據此模板生成一個 Event 實例,並補充觸發時間、排程ID等資料。
10
+ // *
11
+ // * - **`type`**:事件大分類(視覺辨識 / 系統異常 / 使用者行為)。
12
+ // * - **`subType`**:具體事件子類型,例如 `overspeed`、`carAccident` 等。
13
+ // * - **`description`**:事件描述文字。
14
+ // * - **`freeTags`**:可額外標註任何關鍵字或標籤,讓系統可彈性紀錄事件。
15
+ // * @interface EventTemplate
16
+ // */
17
+ // export interface IEventTemplate extends Base {
18
+ // /**
19
+ // * 事件大分類,例如視覺辨識、系統異常、使用者行為。
20
+ // * @example EventType.Visual
21
+ // */
22
+ // type: EventType;
23
+ // /**
24
+ // * 具體事件子類型,例如 "carAccident"、"overspeed" 等。
25
+ // * @example EventSubType.CarAccident
26
+ // */
27
+ // subType: EventSubType;
28
+ // /**
29
+ // * 預設事件描述,作為事件生成時的初始描述。
30
+ // * @example "偵測到車禍,等待後續處理。"
31
+ // */
32
+ // description?: string;
33
+ // /**
34
+ // * 預設標籤,作為產生事件時的初始標籤。
35
+ // * @example ["highway", "urgent"]
36
+ // */
37
+ // freeTags?: string[];
38
+ // }
39
+ // 事件大分類
40
+ var EventCategory;
41
+ (function (EventCategory) {
42
+ EventCategory["Visual"] = "visual";
43
+ EventCategory["System"] = "system";
44
+ EventCategory["UserBehavior"] = "userBehavior";
45
+ EventCategory["Voice"] = "voice";
46
+ })(EventCategory || (exports.EventCategory = EventCategory = {}));
47
+ // 事件型別
48
+ var EventType;
49
+ (function (EventType) {
50
+ EventType["Violation"] = "violation";
51
+ EventType["Anomaly"] = "anomaly";
52
+ EventType["Incident"] = "incident";
53
+ EventType["Maintenance"] = "maintenance";
54
+ EventType["Record"] = "record";
55
+ })(EventType || (exports.EventType = EventType = {}));
56
+ // 任務狀態(排程/規則任務)
57
+ var EventTaskStatus;
58
+ (function (EventTaskStatus) {
59
+ EventTaskStatus["ACTIVE"] = "ACTIVE";
60
+ EventTaskStatus["PAUSED"] = "PAUSED";
61
+ EventTaskStatus["FAILED"] = "FAILED";
62
+ EventTaskStatus["DONE"] = "DONE";
63
+ })(EventTaskStatus || (exports.EventTaskStatus = EventTaskStatus = {}));
64
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../models/template.ts"],"names":[],"mappings":";;;AAIA,MAAM;AACN,8BAA8B;AAC9B,MAAM;AACN,gCAAgC;AAChC,iCAAiC;AACjC,kDAAkD;AAClD,KAAK;AACL,gDAAgD;AAChD,+DAA+D;AAC/D,mCAAmC;AACnC,kDAAkD;AAClD,8BAA8B;AAC9B,MAAM;AACN,iDAAiD;AACjD,QAAQ;AACR,gCAAgC;AAChC,iCAAiC;AACjC,QAAQ;AACR,qBAAqB;AAErB,QAAQ;AACR,+CAA+C;AAC/C,yCAAyC;AACzC,QAAQ;AACR,2BAA2B;AAE3B,QAAQ;AACR,4BAA4B;AAC5B,gCAAgC;AAChC,QAAQ;AACR,0BAA0B;AAE1B,QAAQ;AACR,0BAA0B;AAC1B,sCAAsC;AACtC,QAAQ;AACR,yBAAyB;AACzB,IAAI;AAGJ,QAAQ;AACR,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,kCAAiB,CAAA;IACjB,kCAAiB,CAAA;IACjB,8CAA6B,CAAA;IAC7B,gCAAe,CAAA;AACjB,CAAC,EALW,aAAa,6BAAb,aAAa,QAKxB;AAED,OAAO;AACP,IAAY,SAMX;AAND,WAAY,SAAS;IACnB,oCAAuB,CAAA;IACvB,gCAAmB,CAAA;IACnB,kCAAqB,CAAA;IACrB,wCAA2B,CAAA;IAC3B,8BAAiB,CAAA;AACnB,CAAC,EANW,SAAS,yBAAT,SAAS,QAMpB;AAED,gBAAgB;AAChB,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,oCAAiB,CAAA;IACjB,oCAAiB,CAAA;IACjB,oCAAiB,CAAA;IACjB,gCAAa,CAAA;AACf,CAAC,EALW,eAAe,+BAAf,eAAe,QAK1B"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * 實體類型枚舉
3
+ * 定義 UI 項目可以關聯的實體類型
4
+ */
5
+ export declare enum EntityTypeEnum {
6
+ Event = "event",// 事件
7
+ Task = "task",// 任務
8
+ Camera = "camera",// 攝像頭
9
+ Map = "map",// 地圖
10
+ Report = "report",// 報告
11
+ User = "user"
12
+ }
13
+ /**
14
+ * UI 項目介面
15
+ * 用於定義使用者介面中的項目,支援釘選、標籤等功能
16
+ * 主要用途:個人化使用者體驗,快速存取常用項目
17
+ */
18
+ export interface UiItem {
19
+ /** 項目唯一識別碼 (UUID) */
20
+ id: string;
21
+ /** 使用者 ID,關聯到 UserProfile.id */
22
+ userId: string;
23
+ /** 實體類型,定義此 UI 項目關聯的實體種類 */
24
+ entityType: EntityTypeEnum;
25
+ /** 實體 ID,關聯到對應實體的唯一識別碼 */
26
+ entityId: string;
27
+ /** 是否釘選,預設為 false。釘選的項目會優先顯示 */
28
+ pinned?: boolean;
29
+ /** 自定義標籤,使用者可為項目添加個人化標籤 */
30
+ label?: string;
31
+ /** 顯示順序索引,數值越小越靠前 */
32
+ orderIndex?: number;
33
+ /** 分類標籤,方便使用者對項目進行分類 */
34
+ section?: string;
35
+ /** 顯示圖示,支援 FontAwesome 或自定義圖示名稱 */
36
+ meta: string;
37
+ /** 項目過期時間,過期後可自動清除 */
38
+ expiresAt?: Date;
39
+ }
40
+ //# sourceMappingURL=ui-item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-item.d.ts","sourceRoot":"","sources":["../../models/ui-item.ts"],"names":[],"mappings":"AACA;;;GAGG;AACH,oBAAY,cAAc;IACxB,KAAK,UAAU,CAAQ,KAAK;IAC5B,IAAI,SAAS,CAAU,KAAK;IAC5B,MAAM,WAAW,CAAM,MAAM;IAC7B,GAAG,QAAQ,CAAW,KAAK;IAC3B,MAAM,WAAW,CAAM,KAAK;IAC5B,IAAI,SAAS;CACd;AAED;;;;GAIG;AACH,MAAM,WAAW,MAAM;IACrB,qBAAqB;IACrB,EAAE,EAAE,MAAM,CAAC;IAEX,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IAEf,4BAA4B;IAC5B,UAAU,EAAE,cAAc,CAAC;IAE3B,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAC;IAEjB,gCAAgC;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,qBAAqB;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,wBAAwB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IAEb,sBAAsB;IACtB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EntityTypeEnum = void 0;
4
+ /**
5
+ * 實體類型枚舉
6
+ * 定義 UI 項目可以關聯的實體類型
7
+ */
8
+ var EntityTypeEnum;
9
+ (function (EntityTypeEnum) {
10
+ EntityTypeEnum["Event"] = "event";
11
+ EntityTypeEnum["Task"] = "task";
12
+ EntityTypeEnum["Camera"] = "camera";
13
+ EntityTypeEnum["Map"] = "map";
14
+ EntityTypeEnum["Report"] = "report";
15
+ EntityTypeEnum["User"] = "user";
16
+ })(EntityTypeEnum || (exports.EntityTypeEnum = EntityTypeEnum = {}));
17
+ //# sourceMappingURL=ui-item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-item.js","sourceRoot":"","sources":["../../models/ui-item.ts"],"names":[],"mappings":";;;AACA;;;GAGG;AACH,IAAY,cAOX;AAPD,WAAY,cAAc;IACxB,iCAAe,CAAA;IACf,+BAAa,CAAA;IACb,mCAAiB,CAAA;IACjB,6BAAW,CAAA;IACX,mCAAiB,CAAA;IACjB,+BAAa,CAAA;AACf,CAAC,EAPW,cAAc,8BAAd,cAAc,QAOzB"}
@@ -0,0 +1,125 @@
1
+ import { Permission } from './permission';
2
+ import { Role } from './role';
3
+ import { Base } from './utils';
4
+ /**
5
+ * **使用者介面**
6
+ * 負責存儲使用者的基本資訊,並與帳號關聯。
7
+ *
8
+ * - **`name`**:使用者姓名。
9
+ * - **`[roles]`** _(可選)_:使用者所擁有的角色 ID 陣列。
10
+ * - **`[permissions]`** _(可選)_:使用者擁有的權限列表陣列。
11
+ *
12
+ * @interface User
13
+ */
14
+ export interface User extends Base {
15
+ /** 使用者姓名。 */
16
+ name: string;
17
+ /** 使用者擁有的角色列表。 */
18
+ roleId_list?: Role['id'][];
19
+ /** 使用者擁有的權限列表。 */
20
+ permissionId_list?: Permission['id'][];
21
+ }
22
+ /**
23
+ * **使用者介面**
24
+ * 負責存儲使用者的角色列表。
25
+ *
26
+ * - **`userId`**:關聯的使用者 ID。
27
+ * - **`role`**:使用者擁有的角色列表。
28
+ *
29
+ * @interface UserRole
30
+ */
31
+ export interface UserRole extends Base {
32
+ /** 關聯的使用者 ID。 */
33
+ userId: User['id'];
34
+ /** 使用者擁有的角色列表。 */
35
+ role?: Role['id'];
36
+ }
37
+ /**
38
+ * **使用者介面**
39
+ * 負責存儲使用者的權限列表。
40
+ *
41
+ * - **`userId`**:關聯的使用者 ID。
42
+ * - **`permission`**:使用者擁有的權限列表。
43
+ *
44
+ * @interface UserPermission
45
+ */
46
+ export interface UserPermission extends Base {
47
+ /** 關聯的使用者 ID。 */
48
+ userId: User['id'];
49
+ /** 使用者擁有的權限列表。 */
50
+ permission?: Permission['id'];
51
+ }
52
+ /**
53
+ * **使用者擴充檔 (UserProfile)**
54
+ * - 用於儲存 User 其他延伸資訊。
55
+ *
56
+ * ### 設計說明
57
+ *
58
+ * - 目前只包含最常用的 Email、Phone 欄位。
59
+ * - 若未來需求可能擴增多個 Email / Phone 或其他聯絡方式,建議進行資料庫 Migration
60
+ * 或改用獨立的 `ContactInfo` 結構,以更具彈性。
61
+ *
62
+ * - **`[email]`** _(可選)_:電子郵件,作為聯絡方式,若無則為 `undefined`。
63
+ * - **`[phone]`** _(可選)_:手機號碼,若無則為 `undefined`。
64
+ * - **`[address]`** _(可選)_:地址或其他欄位,若無則為 `undefined`。
65
+ * - **`[avatarUrl]`** _(可選)_:頭像URL,若無則為 `undefined`。
66
+ */
67
+ export interface UserProfile extends User {
68
+ /** 電子郵件,作為聯絡方式,若無則為 `undefined`。 */
69
+ email?: string;
70
+ /** 手機號碼,若無則為 `undefined`。 */
71
+ phone?: string;
72
+ /**
73
+ * (若需要) 地址或其他欄位
74
+ */
75
+ address?: string;
76
+ /**
77
+ * (若需要) 頭像URL
78
+ */
79
+ avatarUrl?: string;
80
+ /** 使用者帳號,用於登入系統 */
81
+ account: string;
82
+ department: string;
83
+ organizationUnit: string;
84
+ description?: string;
85
+ }
86
+ /**
87
+ * **聯絡方式類型 (ContactType)**
88
+ * - **`Email`**:電子郵件
89
+ * - **`Phone`**:手機/電話
90
+ * - **`Line`**:Line ID
91
+ * - **`WeChat`**:微信
92
+ * - **`Telegram`**:Telegram 用戶名
93
+ * - (可自行擴充其他通訊方式)
94
+ */
95
+ export declare enum ContactType {
96
+ Email = "email",
97
+ Phone = "phone",
98
+ Line = "line",
99
+ WeChat = "wechat",
100
+ Telegram = "telegram"
101
+ }
102
+ /**
103
+ * **聯絡資訊 (ContactInfo)**
104
+ * 表示使用者的一組聯絡管道
105
+ *
106
+ * - **`type`**: 聯絡方式類型 (Email, Phone, Line, etc.)
107
+ * - **`value`**: 實際的聯絡方式字串,例如 Email 地址、Line ID 等
108
+ * - **`userId`**: 關聯的使用者 ID。
109
+ * - **[`verified`]** _(可選)_: 代表此聯絡方式是否已驗證 (例如驗證碼驗證過的 Email / Phone)
110
+ *
111
+ */
112
+ export interface ContactInfo {
113
+ /** 聯絡方式類型 (Email, Phone, Line, etc.) */
114
+ type: ContactType;
115
+ /** 實際的聯絡方式字串,例如 Email 地址、Line ID 等 */
116
+ value: string;
117
+ /** 關聯的使用者 ID。 */
118
+ userId: User['id'];
119
+ /**
120
+ * 代表此聯絡方式是否已驗證 (例如驗證碼驗證過的 Email / Phone)
121
+ * @default false
122
+ */
123
+ verified?: boolean;
124
+ }
125
+ //# sourceMappingURL=user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../models/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAG9B;;;;;;;;;GASG;AACH,MAAM,WAAW,IAAK,SAAQ,IAAI;IAChC,aAAa;IACb,IAAI,EAAE,MAAM,CAAC;IAEb,kBAAkB;IAClB,WAAW,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAE3B,kBAAkB;IAClB,iBAAiB,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;CACxC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,QAAS,SAAQ,IAAI;IACpC,iBAAiB;IACjB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAEnB,kBAAkB;IAClB,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;CACnB;AAGD;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAe,SAAQ,IAAI;IAC1C,iBAAiB;IACjB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAEnB,kBAAkB;IAClB,UAAU,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;CAE/B;AAGD;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,WAAY,SAAQ,IAAI;IAEvC,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,mBAAmB;IACnB,OAAO,EAAE,MAAM,CAAC;IAIhB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD;;;;;;;;GAQG;AACH,oBAAY,WAAW;IACrB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,QAAQ,aAAa;CAEtB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW;IAC1B,wCAAwC;IACxC,IAAI,EAAE,WAAW,CAAC;IAElB,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IAEd,iBAAiB;IACjB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAEnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContactType = void 0;
4
+ /**
5
+ * **聯絡方式類型 (ContactType)**
6
+ * - **`Email`**:電子郵件
7
+ * - **`Phone`**:手機/電話
8
+ * - **`Line`**:Line ID
9
+ * - **`WeChat`**:微信
10
+ * - **`Telegram`**:Telegram 用戶名
11
+ * - (可自行擴充其他通訊方式)
12
+ */
13
+ var ContactType;
14
+ (function (ContactType) {
15
+ ContactType["Email"] = "email";
16
+ ContactType["Phone"] = "phone";
17
+ ContactType["Line"] = "line";
18
+ ContactType["WeChat"] = "wechat";
19
+ ContactType["Telegram"] = "telegram";
20
+ // 其他如 Slack, Skype, Discord, etc.
21
+ })(ContactType || (exports.ContactType = ContactType = {}));
22
+ //# sourceMappingURL=user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../models/user.ts"],"names":[],"mappings":";;;AA2GA;;;;;;;;GAQG;AACH,IAAY,WAOX;AAPD,WAAY,WAAW;IACrB,8BAAe,CAAA;IACf,8BAAe,CAAA;IACf,4BAAa,CAAA;IACb,gCAAiB,CAAA;IACjB,oCAAqB,CAAA;IACrB,kCAAkC;AACpC,CAAC,EAPW,WAAW,2BAAX,WAAW,QAOtB"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * **基礎物件介面**
3
+ * 所有資料模型的基本結構,適用於所有主表。
4
+ *
5
+ * - **`id`**:唯一識別碼,用於標識該物件。
6
+ * - **`createdAt`**:該物件的建立時間,表示該記錄何時創建。
7
+ * - **`createdBy`**:創建該記錄的使用者 ID。
8
+ * - **`updatedAt`**:最後更新時間,表示該記錄最後被修改的時間。
9
+ * - **`updatedBy`** :最後更新該記錄的使用者 ID。
10
+ * - **`isDeleted`**:是否已刪除(軟刪除)。
11
+ *
12
+ * @interface Base
13
+ */
14
+ export interface Base {
15
+ /** 唯一識別碼,用於標識該物件。 */
16
+ id: string;
17
+ /** 該物件的建立時間,表示該記錄何時創建。 */
18
+ createdAt?: Date;
19
+ /** 創建該記錄的使用者 ID。 */
20
+ createdBy?: string;
21
+ /** 最後更新時間,表示該記錄最後被修改的時間。 */
22
+ updatedAt?: Date;
23
+ /** 最後更新該記錄的使用者 ID。 */
24
+ updatedBy?: string;
25
+ /** 是否已刪除(軟刪除)。 */
26
+ isDeleted?: boolean;
27
+ }
28
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../models/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,IAAI;IACjB,qBAAqB;IACrB,EAAE,EAAE,MAAM,CAAC;IAEX,0BAA0B;IAC1B,SAAS,CAAC,EAAE,IAAI,CAAC;IAEjB,oBAAoB;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,IAAI,CAAC;IAEjB,sBAAsB;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,kBAAkB;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../models/utils.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from './mongo';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../schemas/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./mongo"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../schemas/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB"}
@@ -0,0 +1,27 @@
1
+ import { Schema, Document, Types } from 'mongoose';
2
+ import { Account } from '../../models';
3
+ import { UserProfileDocument } from './user-mongo.schema';
4
+ export type AccountMongoose = Omit<Account, 'userId'> & {
5
+ userId: Types.ObjectId | string | UserProfileDocument;
6
+ _user?: UserProfileDocument;
7
+ };
8
+ export interface AccountDocument extends Document, AccountMongoose {
9
+ id: string;
10
+ userId: Types.ObjectId | string | UserProfileDocument;
11
+ _user?: UserProfileDocument;
12
+ }
13
+ export declare const AccountSchema: Schema<AccountDocument, import("mongoose").Model<AccountDocument, any, any, any, Document<unknown, any, AccountDocument, any, {}> & AccountDocument & Required<{
14
+ _id: Types.ObjectId;
15
+ }> & {
16
+ __v: number;
17
+ }, any>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, AccountDocument, Document<unknown, {}, import("mongoose").FlatRecord<AccountDocument>, {}, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>> & import("mongoose").FlatRecord<AccountDocument> & Required<{
18
+ _id: Types.ObjectId;
19
+ }> & {
20
+ __v: number;
21
+ }>;
22
+ export declare const AccountModel: import("mongoose").Model<AccountDocument, {}, {}, {}, Document<unknown, {}, AccountDocument, {}, {}> & AccountDocument & Required<{
23
+ _id: Types.ObjectId;
24
+ }> & {
25
+ __v: number;
26
+ }, any>;
27
+ //# sourceMappingURL=account-mongo.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-mongo.schema.d.ts","sourceRoot":"","sources":["../../../schemas/mongo/account-mongo.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAS,QAAQ,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAI1D,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG;IACtD,MAAM,EAAE,KAAK,CAAC,QAAQ,GAAG,MAAM,GAAG,mBAAmB,CAAC;IACtD,KAAK,CAAC,EAAE,mBAAmB,CAAC;CAC7B,CAAC;AAEF,MAAM,WAAW,eAAgB,SAAQ,QAAQ,EAAE,eAAe;IAChE,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,KAAK,CAAC,QAAQ,GAAG,MAAM,GAAG,mBAAmB,CAAC;IACtD,KAAK,CAAC,EAAE,mBAAmB,CAAC;CAC7B;AAGD,eAAO,MAAM,aAAa;;;;;;;;EAUzB,CAAC;AAUF,eAAO,MAAM,YAAY;;;;OAAmD,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AccountModel = exports.AccountSchema = void 0;
4
+ const mongoose_1 = require("mongoose");
5
+ // 定義 Account 的 Schema
6
+ exports.AccountSchema = new mongoose_1.Schema({
7
+ id: { type: String, required: true, immutable: true }, // 使用 UUID 作為 id
8
+ userId: { type: String, required: false, index: true }, // 使用者的唯一識別碼
9
+ username: { type: String, required: true, unique: true },
10
+ passwordHash: { type: String, required: true },
11
+ isActive: { type: Boolean, default: true },
12
+ lastLoginAt: { type: Date, required: false },
13
+ }, { timestamps: true });
14
+ exports.AccountSchema.virtual('_user', {
15
+ ref: 'UserProfile',
16
+ localField: 'userId',
17
+ foreignField: 'id',
18
+ justOne: true,
19
+ });
20
+ // // 創建 Account 模型
21
+ exports.AccountModel = (0, mongoose_1.model)('Account', exports.AccountSchema);
22
+ //# sourceMappingURL=account-mongo.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-mongo.schema.js","sourceRoot":"","sources":["../../../schemas/mongo/account-mongo.schema.ts"],"names":[],"mappings":";;;AAAA,uCAA0D;AAiB1D,sBAAsB;AACT,QAAA,aAAa,GAAG,IAAI,iBAAM,CACrC;IACE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,gBAAgB;IACvE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,YAAY;IACpE,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IACxD,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC9C,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;IAC1C,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;CAC7C,EACD,EAAE,UAAU,EAAE,IAAI,EAAE,CACrB,CAAC;AAEF,qBAAa,CAAC,OAAO,CAAC,OAAO,EAAE;IAC7B,GAAG,EAAE,aAAa;IAClB,UAAU,EAAE,QAAQ;IACpB,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,IAAI;CACd,CAAC,CAAC;AAEH,mBAAmB;AACN,QAAA,YAAY,GAAG,IAAA,gBAAK,EAAkB,SAAS,EAAE,qBAAa,CAAC,CAAC"}