"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
    o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
    var ownKeys = function(o) {
        ownKeys = Object.getOwnPropertyNames || function (o) {
            var ar = [];
            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
            return ar;
        };
        return ownKeys(o);
    };
    return function (mod) {
        if (mod && mod.__esModule) return mod;
        var result = {};
        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
        __setModuleDefault(result, mod);
        return result;
    };
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.User = void 0;
// oms/src/models/userModel.ts
const mongoose_1 = __importStar(require("mongoose"));
// 定义 User Schema
const UserSchema = new mongoose_1.Schema({
    uid: { type: String, required: true, unique: true }, // uid 字段，唯一且必需, 对于project_id=1, 对应原始日志的uid字段，对于project_id=6, 对应原始日志的user_id
    project: { type: Number, index: true }, // 来自原始日志的project_id字段，多个事件都有上报，属于公共属性， 填色android应用project_id=1, ios版本project_id=6
    network: { type: String, index: true }, // 来自原始visit事件日志的 network 字段， 可能为null
    campaign: { type: String, index: true }, // 来自原始visit事件日志的 campaign 字段， 可能为null
    adgroup: { type: String, index: true }, // 来自原始visit事件日志的 adgroup 字段， 可能为null
    creative: { type: String, index: true }, // 来自原始visit事件日志的 creative 字段， 可能为null
    prod: { type: String, index: true }, // 来自原始日志的prod字段，多个事件都有上报， "number"表示填色应用， "jigsaw"表示拼图游戏等
    libraryName: { type: String, enum: ["ios", "android"], index: true }, // 来自原始日志的library_name字段
    cc: { type: String, index: true }, // 来自原始日志的cc字段，表示国家代码
    lang: { type: String, index: true }, // 来自原始日志的lang字段，表示语言，目前没有上报，全是null，以后app更新会加上
    manufacturer: { type: String }, // 来自原始日志的manufacturer字段，生产厂商
    deviceModel: { type: String, index: true }, // 来自原始日志的model字段，表示设备型号
    deviceInfo: { type: String }, // 来自原始日志的device字段，表示设备机型代号
    hardware: { type: String }, // 来自原始日志的hardware字段，硬件的型号吧
    deviceMem: { type: Number }, // 来自原始日志的deviceMem字段，表示机身内存，单位MB
    apiLevel: { type: Number, index: true }, // 来自原始日志的android_api字段，表示andriod api级别，只对android版本有用
    versionName: { type: String, index: true }, // 来自原始日志的version_name字段， 如果是ios填色应用(project_id=6)则对应的是library_version字段
    versionCode: { type: Number, index: true }, // 来自原始日志的version_code 字段
    fmToken: { type: String }, // 来自原始firebase_message_token日志的token字段，解析到firebase_message_token日志后更新
    tags: { type: [String], index: true }, // <--- 关键修改：现在是字符串数组类型
    firstLoginAt: { type: Date, index: true }, // 来自原始日志，表示首次登陆事件，考虑到前面的日志的丢失，可以通过visit事件日志的days天数字段来倒推
    lastActiveAt: { type: Date, index: true }, // 来自原始日志的t字段或者create_at字段，表示上次活跃时间，结合days（如果有的话）可以倒推firstLoginAt
}, {
    timestamps: true, // 启用时间戳，自动维护 createdAt 和 updatedAt
});
// 创建并导出 User Model
exports.User = mongoose_1.default.model("User", UserSchema);
