export class AbstractRawStorage { /** * 記錄事件 * @param {Object} event - 事件資料 * @param {string} event.org_id - 組織 ID (index) * @param {string} event.instance_id - 實例 ID (index) * @param {string} event.event_name - 事件名稱 (index) * @param {string} event.customer_id - 客戶 ID (index) * * @param {Object} event.event_params - 事件參數 * @param {string} event.timestamp - 事件時間 * @param {string} event.user_id - 使用者 ID * @param {Object} options - 選項 * @param {Object} options.extraFields - 需要額外 index 的欄位,因為是針對 event_params 中的欄位來做 index,通常以 key 以 event_params.xxx 的方式來表示,例如 { 'event_params.product_id':1 } 代表需要額外儲存並 index event_params.product_id 的值 * @returns {Promise} */ logEvent(event: { org_id: string; instance_id: string; event_name: string; customer_id: string; event_params: any; timestamp: string; user_id: string; }, options?: { extraFields: any; }): Promise; /** * 查詢出指定時間區間內,符合條件的不重複客戶 * @param {Object} params - 查詢參數 * @param {string} params.org_id - 組織 ID * @param {string} params.instance_id - 實例 ID * @param {string} params.event_name - 事件名稱 * @param {Object} params.event_params - 事件參數 * @param {string} params.rangeStart - 開始日期,包含該時間 (ISO 8601 格式,如: 2024-01-01T00:00:00Z) * @param {string} params.rangeStop - 結束日期,不包含該時間 (ISO 8601 格式,如: 2024-02-01T00:00:00Z) * @returns {Promise} - 客戶 ID 陣列 */ getUniqueCustomerIds(params: { org_id: string; instance_id: string; event_name: string; event_params: any; rangeStart: string; rangeStop: string; }): Promise; }