Files
autoAiWorkSys/api/model/device_status.js
张成 5d7444cd65 1
2025-11-24 13:23:42 +08:00

310 lines
6.6 KiB
JavaScript

const Sequelize = require('sequelize');
/**
* 设备状态表模型
* 记录pydp客户端设备的实时状态和运行信息
*/
module.exports = (db) => {
const device_status= db.define("device_status", {
// 设备基本信息
sn_code: {
comment: '设备SN码(唯一标识)',
type: Sequelize.STRING(50),
allowNull: false,
primaryKey: true
},
device_id:{
comment: '设备ID',
type: Sequelize.STRING(200),
allowNull: false,
primaryKey: true
},
deviceName: {
comment: '设备名称',
type: Sequelize.STRING(100),
allowNull: true,
defaultValue: ''
},
deviceType: {
comment: '设备类型',
type: Sequelize.STRING(50),
allowNull: true,
defaultValue: 'pydp'
},
// 在线状态
isOnline: {
comment: '是否在线',
type: Sequelize.BOOLEAN,
allowNull: false,
defaultValue: false
},
isRunning: {
comment: '是否运行中',
type: Sequelize.BOOLEAN,
allowNull: false,
defaultValue: false
},
lastOnlineTime: {
comment: '最后在线时间',
type: Sequelize.DATE,
allowNull: true
},
lastOfflineTime: {
comment: '最后离线时间',
type: Sequelize.DATE,
allowNull: true
},
onlineDuration: {
comment: '在线时长(分钟)',
type: Sequelize.INTEGER,
allowNull: true,
defaultValue: 0
},
// 运行状态
currentTask: {
comment: '当前执行任务',
type: Sequelize.STRING(100),
allowNull: true,
defaultValue: ''
},
currentTaskId: {
comment: '当前任务ID',
type: Sequelize.STRING(50),
allowNull: true,
defaultValue: ''
},
taskStatus: {
comment: '任务状态',
type: Sequelize.STRING(20),
allowNull: true,
defaultValue: 'idle'
},
lastTaskTime: {
comment: '最后任务时间',
type: Sequelize.DATE,
allowNull: true
},
// 平台信息
platform: {
comment: '当前使用平台: boss-Boss直聘, liepin-猎聘',
type: Sequelize.STRING(20),
allowNull: true,
defaultValue: 'boss'
},
isLoggedIn: {
comment: '是否已登录平台',
type: Sequelize.BOOLEAN,
allowNull: true,
defaultValue: false
},
loginTime: {
comment: '登录时间',
type: Sequelize.DATE,
allowNull: true
},
accountName: {
comment: '账号名称',
type: Sequelize.STRING(100),
allowNull: true,
defaultValue: ''
},
// 性能信息
cpuUsage: {
comment: 'CPU使用率(%)',
type: Sequelize.FLOAT,
allowNull: true,
defaultValue: 0
},
memoryUsage: {
comment: '内存使用率(%)',
type: Sequelize.FLOAT,
allowNull: true,
defaultValue: 0
},
diskUsage: {
comment: '磁盘使用率(%)',
type: Sequelize.FLOAT,
allowNull: true,
defaultValue: 0
},
// 网络信息
ipAddress: {
comment: 'IP地址',
type: Sequelize.STRING(50),
allowNull: true,
defaultValue: ''
},
macAddress: {
comment: 'MAC地址',
type: Sequelize.STRING(50),
allowNull: true,
defaultValue: ''
},
networkStatus: {
comment: '网络状态: good-良好, slow-缓慢, offline-离线',
type: Sequelize.STRING(20),
allowNull: true,
defaultValue: 'good'
},
// 心跳信息
lastHeartbeatTime: {
comment: '最后心跳时间',
type: Sequelize.DATE,
allowNull: true
},
heartbeatInterval: {
comment: '心跳间隔(秒)',
type: Sequelize.INTEGER,
allowNull: true,
defaultValue: 30
},
missedHeartbeats: {
comment: '丢失的心跳次数',
type: Sequelize.INTEGER,
allowNull: true,
defaultValue: 0
},
// 版本信息
clientVersion: {
comment: '客户端版本',
type: Sequelize.STRING(20),
allowNull: true,
defaultValue: ''
},
pythonVersion: {
comment: 'Python版本',
type: Sequelize.STRING(20),
allowNull: true,
defaultValue: ''
},
osVersion: {
comment: '操作系统版本',
type: Sequelize.STRING(100),
allowNull: true,
defaultValue: ''
},
// 统计信息
totalTasksCompleted: {
comment: '完成任务总数',
type: Sequelize.INTEGER,
allowNull: true,
defaultValue: 0
},
totalTasksFailed: {
comment: '失败任务总数',
type: Sequelize.INTEGER,
allowNull: true,
defaultValue: 0
},
totalJobsSearched: {
comment: '搜索岗位总数',
type: Sequelize.INTEGER,
allowNull: true,
defaultValue: 0
},
totalApplies: {
comment: '投递简历总数',
type: Sequelize.INTEGER,
allowNull: true,
defaultValue: 0
},
totalChats: {
comment: '聊天总数',
type: Sequelize.INTEGER,
allowNull: true,
defaultValue: 0
},
// 错误信息
lastError: {
comment: '最后错误信息',
type: Sequelize.TEXT,
allowNull: true,
defaultValue: ''
},
lastErrorTime: {
comment: '最后错误时间',
type: Sequelize.DATE,
allowNull: true
},
errorCount: {
comment: '错误次数',
type: Sequelize.INTEGER,
allowNull: true,
defaultValue: 0
},
// 健康状态
healthStatus: {
comment: '健康状态: healthy-健康, warning-警告, error-错误, unknown-未知',
type: Sequelize.STRING(20),
allowNull: true,
defaultValue: 'unknown'
},
healthScore: {
comment: '健康评分(0-100)',
type: Sequelize.INTEGER,
allowNull: true,
defaultValue: 0
},
// 配置信息
config: {
comment: '设备配置(JSON)',
type: Sequelize.TEXT,
allowNull: true,
defaultValue: ''
},
// 其他信息
notes: {
comment: '备注',
type: Sequelize.TEXT,
allowNull: true,
defaultValue: ''
},
}, {
timestamps: false,
indexes: [
{
unique: false,
fields: ['isOnline']
},
{
unique: false,
fields: ['isRunning']
},
{
unique: false,
fields: ['healthStatus']
},
{
unique: false,
fields: ['platform']
},
{
unique: false,
fields: ['lastHeartbeatTime']
},
]
});
// device_status.sync({ force: true });
return device_status
// device_status.sync({ force: true
};