@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.
- package/dist/data_access/base/base.repository.d.ts +29 -0
- package/dist/data_access/base/base.repository.d.ts.map +1 -0
- package/dist/data_access/base/base.repository.js +7 -0
- package/dist/data_access/base/base.repository.js.map +1 -0
- package/dist/data_access/base/index.d.ts +4 -0
- package/dist/data_access/base/index.d.ts.map +1 -0
- package/dist/data_access/base/index.js +20 -0
- package/dist/data_access/base/index.js.map +1 -0
- package/dist/data_access/base/mongo-base.repository.d.ts +34 -0
- package/dist/data_access/base/mongo-base.repository.d.ts.map +1 -0
- package/dist/data_access/base/mongo-base.repository.js +229 -0
- package/dist/data_access/base/mongo-base.repository.js.map +1 -0
- package/dist/data_access/base/sql-base.repository.d.ts +20 -0
- package/dist/data_access/base/sql-base.repository.d.ts.map +1 -0
- package/dist/data_access/base/sql-base.repository.js +180 -0
- package/dist/data_access/base/sql-base.repository.js.map +1 -0
- package/dist/data_access/index.d.ts +3 -0
- package/dist/data_access/index.d.ts.map +1 -0
- package/dist/data_access/index.js +20 -0
- package/dist/data_access/index.js.map +1 -0
- package/dist/data_access/mongo/account-mongo.repository.d.ts +14 -0
- package/dist/data_access/mongo/account-mongo.repository.d.ts.map +1 -0
- package/dist/data_access/mongo/account-mongo.repository.js +43 -0
- package/dist/data_access/mongo/account-mongo.repository.js.map +1 -0
- package/dist/data_access/mongo/attachment-mongo.repository.d.ts +139 -0
- package/dist/data_access/mongo/attachment-mongo.repository.d.ts.map +1 -0
- package/dist/data_access/mongo/attachment-mongo.repository.js +355 -0
- package/dist/data_access/mongo/attachment-mongo.repository.js.map +1 -0
- package/dist/data_access/mongo/biometric-cred.repository.d.ts +8 -0
- package/dist/data_access/mongo/biometric-cred.repository.d.ts.map +1 -0
- package/dist/data_access/mongo/biometric-cred.repository.js +32 -0
- package/dist/data_access/mongo/biometric-cred.repository.js.map +1 -0
- package/dist/data_access/mongo/camera-mongo.repository.d.ts +9 -0
- package/dist/data_access/mongo/camera-mongo.repository.d.ts.map +1 -0
- package/dist/data_access/mongo/camera-mongo.repository.js +39 -0
- package/dist/data_access/mongo/camera-mongo.repository.js.map +1 -0
- package/dist/data_access/mongo/camera-recording-mongo.repository.d.ts +9 -0
- package/dist/data_access/mongo/camera-recording-mongo.repository.d.ts.map +1 -0
- package/dist/data_access/mongo/camera-recording-mongo.repository.js +39 -0
- package/dist/data_access/mongo/camera-recording-mongo.repository.js.map +1 -0
- package/dist/data_access/mongo/event-mongo.repository.d.ts +23 -0
- package/dist/data_access/mongo/event-mongo.repository.d.ts.map +1 -0
- package/dist/data_access/mongo/event-mongo.repository.js +175 -0
- package/dist/data_access/mongo/event-mongo.repository.js.map +1 -0
- package/dist/data_access/mongo/event-template-mongo.repository.d.ts +8 -0
- package/dist/data_access/mongo/event-template-mongo.repository.d.ts.map +1 -0
- package/dist/data_access/mongo/event-template-mongo.repository.js +36 -0
- package/dist/data_access/mongo/event-template-mongo.repository.js.map +1 -0
- package/dist/data_access/mongo/event-template-name-mongo.repository.d.ts +19 -0
- package/dist/data_access/mongo/event-template-name-mongo.repository.d.ts.map +1 -0
- package/dist/data_access/mongo/event-template-name-mongo.repository.js +47 -0
- package/dist/data_access/mongo/event-template-name-mongo.repository.js.map +1 -0
- package/dist/data_access/mongo/index.d.ts +17 -0
- package/dist/data_access/mongo/index.d.ts.map +1 -0
- package/dist/data_access/mongo/index.js +33 -0
- package/dist/data_access/mongo/index.js.map +1 -0
- package/dist/data_access/mongo/map-mongo.repository.d.ts +9 -0
- package/dist/data_access/mongo/map-mongo.repository.d.ts.map +1 -0
- package/dist/data_access/mongo/map-mongo.repository.js +46 -0
- package/dist/data_access/mongo/map-mongo.repository.js.map +1 -0
- package/dist/data_access/mongo/password-cred.repository.d.ts +8 -0
- package/dist/data_access/mongo/password-cred.repository.d.ts.map +1 -0
- package/dist/data_access/mongo/password-cred.repository.js +32 -0
- package/dist/data_access/mongo/password-cred.repository.js.map +1 -0
- package/dist/data_access/mongo/permission-mongo.repository.d.ts +8 -0
- package/dist/data_access/mongo/permission-mongo.repository.d.ts.map +1 -0
- package/dist/data_access/mongo/permission-mongo.repository.js +32 -0
- package/dist/data_access/mongo/permission-mongo.repository.js.map +1 -0
- package/dist/data_access/mongo/report.repository.d.ts +12 -0
- package/dist/data_access/mongo/report.repository.d.ts.map +1 -0
- package/dist/data_access/mongo/report.repository.js +52 -0
- package/dist/data_access/mongo/report.repository.js.map +1 -0
- package/dist/data_access/mongo/role-mongo.repository.d.ts +7 -0
- package/dist/data_access/mongo/role-mongo.repository.d.ts.map +1 -0
- package/dist/data_access/mongo/role-mongo.repository.js +35 -0
- package/dist/data_access/mongo/role-mongo.repository.js.map +1 -0
- package/dist/data_access/mongo/third-party-cred.repository.d.ts +8 -0
- package/dist/data_access/mongo/third-party-cred.repository.d.ts.map +1 -0
- package/dist/data_access/mongo/third-party-cred.repository.js +32 -0
- package/dist/data_access/mongo/third-party-cred.repository.js.map +1 -0
- package/dist/data_access/mongo/ui-item-mongo.repository.d.ts +7 -0
- package/dist/data_access/mongo/ui-item-mongo.repository.d.ts.map +1 -0
- package/dist/data_access/mongo/ui-item-mongo.repository.js +35 -0
- package/dist/data_access/mongo/ui-item-mongo.repository.js.map +1 -0
- package/dist/data_access/mongo/user-mongo.repository.d.ts +8 -0
- package/dist/data_access/mongo/user-mongo.repository.d.ts.map +1 -0
- package/dist/data_access/mongo/user-mongo.repository.js +39 -0
- package/dist/data_access/mongo/user-mongo.repository.js.map +1 -0
- package/dist/data_access/sql/index.d.ts +1 -0
- package/dist/data_access/sql/index.d.ts.map +1 -0
- package/dist/data_access/sql/index.js +3 -0
- package/dist/data_access/sql/index.js.map +1 -0
- package/dist/data_access/sql/user-profiles.repository.d.ts +1 -0
- package/dist/data_access/sql/user-profiles.repository.d.ts.map +1 -0
- package/dist/data_access/sql/user-profiles.repository.js +36 -0
- package/dist/data_access/sql/user-profiles.repository.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/models/account.d.ts +27 -0
- package/dist/models/account.d.ts.map +1 -0
- package/dist/models/account.js +3 -0
- package/dist/models/account.js.map +1 -0
- package/dist/models/attachment.d.ts +147 -0
- package/dist/models/attachment.d.ts.map +1 -0
- package/dist/models/attachment.js +25 -0
- package/dist/models/attachment.js.map +1 -0
- package/dist/models/auth-credential.d.ts +46 -0
- package/dist/models/auth-credential.d.ts.map +1 -0
- package/dist/models/auth-credential.js +10 -0
- package/dist/models/auth-credential.js.map +1 -0
- package/dist/models/camera.d.ts +156 -0
- package/dist/models/camera.d.ts.map +1 -0
- package/dist/models/camera.js +34 -0
- package/dist/models/camera.js.map +1 -0
- package/dist/models/chatroom.d.ts +55 -0
- package/dist/models/chatroom.d.ts.map +1 -0
- package/dist/models/chatroom.js +3 -0
- package/dist/models/chatroom.js.map +1 -0
- package/dist/models/device.d.ts +50 -0
- package/dist/models/device.d.ts.map +1 -0
- package/dist/models/device.js +3 -0
- package/dist/models/device.js.map +1 -0
- package/dist/models/event.d.ts +170 -0
- package/dist/models/event.d.ts.map +1 -0
- package/dist/models/event.js +195 -0
- package/dist/models/event.js.map +1 -0
- package/dist/models/index.d.ts +19 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +35 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/inform.d.ts +146 -0
- package/dist/models/inform.d.ts.map +1 -0
- package/dist/models/inform.js +61 -0
- package/dist/models/inform.js.map +1 -0
- package/dist/models/map.d.ts +26 -0
- package/dist/models/map.d.ts.map +1 -0
- package/dist/models/map.js +3 -0
- package/dist/models/map.js.map +1 -0
- package/dist/models/permission.d.ts +83 -0
- package/dist/models/permission.d.ts.map +1 -0
- package/dist/models/permission.js +78 -0
- package/dist/models/permission.js.map +1 -0
- package/dist/models/report.d.ts +167 -0
- package/dist/models/report.d.ts.map +1 -0
- package/dist/models/report.js +61 -0
- package/dist/models/report.js.map +1 -0
- package/dist/models/role.d.ts +84 -0
- package/dist/models/role.d.ts.map +1 -0
- package/dist/models/role.js +25 -0
- package/dist/models/role.js.map +1 -0
- package/dist/models/schedule.d.ts +39 -0
- package/dist/models/schedule.d.ts.map +1 -0
- package/dist/models/schedule.js +3 -0
- package/dist/models/schedule.js.map +1 -0
- package/dist/models/task.d.ts +97 -0
- package/dist/models/task.d.ts.map +1 -0
- package/dist/models/task.js +24 -0
- package/dist/models/task.js.map +1 -0
- package/dist/models/template.d.ts +197 -0
- package/dist/models/template.d.ts.map +1 -0
- package/dist/models/template.js +64 -0
- package/dist/models/template.js.map +1 -0
- package/dist/models/ui-item.d.ts +40 -0
- package/dist/models/ui-item.d.ts.map +1 -0
- package/dist/models/ui-item.js +17 -0
- package/dist/models/ui-item.js.map +1 -0
- package/dist/models/user.d.ts +125 -0
- package/dist/models/user.d.ts.map +1 -0
- package/dist/models/user.js +22 -0
- package/dist/models/user.js.map +1 -0
- package/dist/models/utils.d.ts +28 -0
- package/dist/models/utils.d.ts.map +1 -0
- package/dist/models/utils.js +3 -0
- package/dist/models/utils.js.map +1 -0
- package/dist/schemas/index.d.ts +2 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +18 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/mongo/account-mongo.schema.d.ts +27 -0
- package/dist/schemas/mongo/account-mongo.schema.d.ts.map +1 -0
- package/dist/schemas/mongo/account-mongo.schema.js +22 -0
- package/dist/schemas/mongo/account-mongo.schema.js.map +1 -0
- package/dist/schemas/mongo/attachment-mongo.schema.d.ts +134 -0
- package/dist/schemas/mongo/attachment-mongo.schema.d.ts.map +1 -0
- package/dist/schemas/mongo/attachment-mongo.schema.js +182 -0
- package/dist/schemas/mongo/attachment-mongo.schema.js.map +1 -0
- package/dist/schemas/mongo/biometric-cred.schema.d.ts +27 -0
- package/dist/schemas/mongo/biometric-cred.schema.d.ts.map +1 -0
- package/dist/schemas/mongo/biometric-cred.schema.js +24 -0
- package/dist/schemas/mongo/biometric-cred.schema.js.map +1 -0
- package/dist/schemas/mongo/camera-mongo.schema.d.ts +21 -0
- package/dist/schemas/mongo/camera-mongo.schema.d.ts.map +1 -0
- package/dist/schemas/mongo/camera-mongo.schema.js +54 -0
- package/dist/schemas/mongo/camera-mongo.schema.js.map +1 -0
- package/dist/schemas/mongo/camera-recording-mongo.schema.d.ts +21 -0
- package/dist/schemas/mongo/camera-recording-mongo.schema.d.ts.map +1 -0
- package/dist/schemas/mongo/camera-recording-mongo.schema.js +24 -0
- package/dist/schemas/mongo/camera-recording-mongo.schema.js.map +1 -0
- package/dist/schemas/mongo/event-mongo.schema.d.ts +51 -0
- package/dist/schemas/mongo/event-mongo.schema.d.ts.map +1 -0
- package/dist/schemas/mongo/event-mongo.schema.js +63 -0
- package/dist/schemas/mongo/event-mongo.schema.js.map +1 -0
- package/dist/schemas/mongo/event-template-mongo.schema.d.ts +39 -0
- package/dist/schemas/mongo/event-template-mongo.schema.d.ts.map +1 -0
- package/dist/schemas/mongo/event-template-mongo.schema.js +33 -0
- package/dist/schemas/mongo/event-template-mongo.schema.js.map +1 -0
- package/dist/schemas/mongo/index.d.ts +16 -0
- package/dist/schemas/mongo/index.d.ts.map +1 -0
- package/dist/schemas/mongo/index.js +32 -0
- package/dist/schemas/mongo/index.js.map +1 -0
- package/dist/schemas/mongo/map-mongo.schema.d.ts +20 -0
- package/dist/schemas/mongo/map-mongo.schema.d.ts.map +1 -0
- package/dist/schemas/mongo/map-mongo.schema.js +16 -0
- package/dist/schemas/mongo/map-mongo.schema.js.map +1 -0
- package/dist/schemas/mongo/password-cred.schema.d.ts +27 -0
- package/dist/schemas/mongo/password-cred.schema.d.ts.map +1 -0
- package/dist/schemas/mongo/password-cred.schema.js +22 -0
- package/dist/schemas/mongo/password-cred.schema.js.map +1 -0
- package/dist/schemas/mongo/permission-mongo.schema.d.ts +21 -0
- package/dist/schemas/mongo/permission-mongo.schema.d.ts.map +1 -0
- package/dist/schemas/mongo/permission-mongo.schema.js +70 -0
- package/dist/schemas/mongo/permission-mongo.schema.js.map +1 -0
- package/dist/schemas/mongo/report-mongo.schema.d.ts +41 -0
- package/dist/schemas/mongo/report-mongo.schema.d.ts.map +1 -0
- package/dist/schemas/mongo/report-mongo.schema.js +71 -0
- package/dist/schemas/mongo/report-mongo.schema.js.map +1 -0
- package/dist/schemas/mongo/role-mongo.schema.d.ts +22 -0
- package/dist/schemas/mongo/role-mongo.schema.d.ts.map +1 -0
- package/dist/schemas/mongo/role-mongo.schema.js +73 -0
- package/dist/schemas/mongo/role-mongo.schema.js.map +1 -0
- package/dist/schemas/mongo/third-party-cred.schema.d.ts +27 -0
- package/dist/schemas/mongo/third-party-cred.schema.d.ts.map +1 -0
- package/dist/schemas/mongo/third-party-cred.schema.js +30 -0
- package/dist/schemas/mongo/third-party-cred.schema.js.map +1 -0
- package/dist/schemas/mongo/ui-item.schema.d.ts +23 -0
- package/dist/schemas/mongo/ui-item.schema.d.ts.map +1 -0
- package/dist/schemas/mongo/ui-item.schema.js +61 -0
- package/dist/schemas/mongo/ui-item.schema.js.map +1 -0
- package/dist/schemas/mongo/user-mongo.schema.d.ts +24 -0
- package/dist/schemas/mongo/user-mongo.schema.d.ts.map +1 -0
- package/dist/schemas/mongo/user-mongo.schema.js +34 -0
- package/dist/schemas/mongo/user-mongo.schema.js.map +1 -0
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../models/utils.ts"],"names":[],"mappings":""}
|
|
@@ -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"}
|