const Sequelize = require('sequelize');

/**
 * 聊天记录表模型
 * 记录与HR的聊天内容和效果
 */
module.exports = (db) => {
  const chat_records =   db.define("chat_records", {
    // 聊天基本信息
    sn_code: {
      comment: '设备SN码',
      type: Sequelize.STRING(50),
      allowNull: false,
      defaultValue: ''
    },
    platform: {
      comment: '平台: boss-Boss直聘, liepin-猎聘',
      type: Sequelize.STRING(20),
      allowNull: false,
      defaultValue: 'boss'
    },
    
    // 岗位关联
    jobId: {
      comment: '岗位ID',
      type: Sequelize.STRING(100),
      allowNull: true,
      defaultValue: ''
    },
    encryptBossId: {
      comment: 'Boss加密ID',
      type: Sequelize.STRING(100),
      allowNull: true,
      defaultValue: ''
    },
    jobTitle: {
      comment: '岗位名称',
      type: Sequelize.STRING(200),
      allowNull: true,
      defaultValue: ''
    },
    companyName: {
      comment: '公司名称',
      type: Sequelize.STRING(200),
      allowNull: true,
      defaultValue: ''
    },
    
    // HR信息
    hrName: {
      comment: 'HR姓名',
      type: Sequelize.STRING(50),
      allowNull: true,
      defaultValue: ''
    },
    hrTitle: {
      comment: 'HR职位',
      type: Sequelize.STRING(50),
      allowNull: true,
      defaultValue: ''
    },
    hrId: {
      comment: 'HR ID',
      type: Sequelize.STRING(100),
      allowNull: true,
      defaultValue: ''
    },
    
    // 聊天内容
    chatType: {
      comment: '聊天类型: greeting-打招呼, follow_up-跟进, interview-面试邀约, reply-回复',
      type: Sequelize.STRING(20),
      allowNull: false,
      defaultValue: 'greeting'
    },
    direction: {
      comment: '消息方向: sent-发送, received-接收',
      type: Sequelize.STRING(20),
      allowNull: false,
      defaultValue: 'sent'
    },
    content: {
      comment: '聊天内容',
      type: Sequelize.TEXT,
      allowNull: false,
      defaultValue: ''
    },
    contentType: {
      comment: '内容类型: text-文本, image-图片, file-文件',
      type: Sequelize.STRING(20),
      allowNull: true,
      defaultValue: 'text'
    },
    
    // AI生成信息
    isAiGenerated: {
      comment: '是否AI生成',
      type: Sequelize.BOOLEAN,
      allowNull: true,
      defaultValue: false
    },
    aiPrompt: {
      comment: 'AI生成的提示词',
      type: Sequelize.TEXT,
      allowNull: true,
      defaultValue: ''
    },
    aiModel: {
      comment: 'AI模型名称',
      type: Sequelize.STRING(50),
      allowNull: true,
      defaultValue: ''
    },
    
    // 发送状态
    sendStatus: {
      comment: '发送状态: pending-待发送, sending-发送中, sent-已发送, failed-发送失败',
      type: Sequelize.STRING(20),
      allowNull: true,
      defaultValue: 'pending'
    },
    sendTime: {
      comment: '发送时间',
      type: Sequelize.DATE,
      allowNull: true
    },
    receiveTime: {
      comment: '接收时间',
      type: Sequelize.DATE,
      allowNull: true
    },
    
    // 回复信息
    hasReply: {
      comment: '是否有回复',
      type: Sequelize.BOOLEAN,
      allowNull: true,
      defaultValue: false
    },
    replyTime: {
      comment: '回复时间',
      type: Sequelize.DATE,
      allowNull: true
    },
    replyContent: {
      comment: '回复内容',
      type: Sequelize.TEXT,
      allowNull: true,
      defaultValue: ''
    },
    replyDuration: {
      comment: '回复时长(分钟)',
      type: Sequelize.INTEGER,
      allowNull: true,
      defaultValue: 0
    },
    
    // 面试邀约信息
    isInterviewInvitation: {
      comment: '是否包含面试邀约',
      type: Sequelize.BOOLEAN,
      allowNull: true,
      defaultValue: false
    },
    interviewTime: {
      comment: '面试时间',
      type: Sequelize.DATE,
      allowNull: true
    },
    interviewLocation: {
      comment: '面试地点',
      type: Sequelize.STRING(200),
      allowNull: true,
      defaultValue: ''
    },
    interviewType: {
      comment: '面试类型: online-线上, offline-线下',
      type: Sequelize.STRING(20),
      allowNull: true,
      defaultValue: ''
    },
    interviewStatus: {
      comment: '面试状态: pending-待确认, confirmed-已确认, completed-已完成, cancelled-已取消',
      type: Sequelize.STRING(20),
      allowNull: true,
      defaultValue: ''
    },
    
    // 效果评估
    effectScore: {
      comment: '效果评分(0-100)',
      type: Sequelize.INTEGER,
      allowNull: true,
      defaultValue: 0
    },
    sentiment: {
      comment: '情感倾向: positive-正面, neutral-中性, negative-负面',
      type: Sequelize.STRING(20),
      allowNull: true,
      defaultValue: 'neutral'
    },
    
    // 会话信息
    conversationId: {
      comment: '会话ID(同一个岗位的聊天属于一个会话)',
      type: Sequelize.STRING(50),
      allowNull: true,
      defaultValue: ''
    },
    messageIndex: {
      comment: '消息序号(会话内的消息顺序)',
      type: Sequelize.INTEGER,
      allowNull: true,
      defaultValue: 0
    },
    
    // 关联信息
    taskId: {
      comment: '关联任务ID',
      type: Sequelize.STRING(50),
      allowNull: true,
      defaultValue: ''
    },
    
    // 其他信息
    originalData: {
      comment: '原始数据(JSON)',
      type: Sequelize.TEXT,
      allowNull: true,
      defaultValue: ''
    },
    errorMessage: {
      comment: '错误信息',
      type: Sequelize.TEXT,
      allowNull: true,
      defaultValue: ''
    },
    notes: {
      comment: '备注',
      type: Sequelize.TEXT,
      allowNull: true,
      defaultValue: ''
    },
    
   
  }, {
    timestamps: false,
    indexes: [
      {
        unique: false,
        fields: ['sn_code']
      },
      {
        unique: false,
        fields: ['jobId']
      },
      {
        unique: false,
        fields: ['encryptBossId']
      },
      {
        unique: false,
        fields: ['conversationId']
      },
      {
        unique: false,
        fields: ['chatType']
      },
      {
        unique: false,
        fields: ['sendStatus']
      },
      {
        unique: false,
        fields: ['hasReply']
      },
    
    ]
  });

  //chat_records.sync({ force: true });

  return chat_records

 
 
};

