const { DataTypes } = require('sequelize'); const { sequelize } = require('../db'); const InventoryRecord = sequelize.define( 'InventoryRecord', { recordId: { type: DataTypes.STRING, primaryKey: true, allowNull: false, unique: true, }, taskId: { type: DataTypes.STRING, allowNull: false, }, planId: { type: DataTypes.STRING, allowNull: false, }, deviceId: { type: DataTypes.STRING, allowNull: false, }, deviceName: { type: DataTypes.STRING, allowNull: true, }, deviceType: { type: DataTypes.STRING, allowNull: true, }, serialNumber: { type: DataTypes.STRING, allowNull: true, comment: '系统记录的序列号', }, actualSerialNumber: { type: DataTypes.STRING, allowNull: true, comment: '实际盘点序列号', }, rackId: { type: DataTypes.STRING, allowNull: true, comment: '系统记录的机柜', }, actualRackId: { type: DataTypes.STRING, allowNull: true, comment: '实际盘点机柜', }, position: { type: DataTypes.INTEGER, allowNull: true, comment: '系统记录的位置', }, actualPosition: { type: DataTypes.INTEGER, allowNull: true, comment: '实际盘点位置', }, status: { type: DataTypes.STRING, defaultValue: 'pending', comment: 'pending:待盘点, normal:正常, abnormal:异常, missed:未盘点, not_found:未找到', }, abnormalType: { type: DataTypes.STRING, allowNull: true, comment: 'serial_mismatch:序列号不符, position_mismatch:位置不符, device_missing:设备缺失, extra_device:多出设备', }, checkedBy: { type: DataTypes.STRING, allowNull: true, }, checkedAt: { type: DataTypes.DATE, allowNull: true, }, remark: { type: DataTypes.TEXT, allowNull: true, }, photoUrl: { type: DataTypes.STRING, allowNull: true, comment: '盘点照片', }, }, { tableName: 'inventory_records', timestamps: true, indexes: [ { fields: ['taskId'] }, { fields: ['planId'] }, { fields: ['deviceId'] }, { fields: ['status'] }, { fields: ['checkedBy'] }, ], } ); module.exports = InventoryRecord;