lvfengfree eebbacafde feat: 实现OS设备扫描和UUID绑定功能
- 添加OsDevice模型和OsDevicesController
- 实现WindowsScannerService用于网络扫描和WMI查询
- 添加AMT设备UUID查询功能(从CIM_ComputerSystemPackage获取PlatformGUID)
- 实现PlatformGUID到标准UUID格式的转换(字节序转换)
- 修复HardwareInfoRepository保存UUID的问题
- 前端添加OS设备管理页面和UUID获取/刷新按钮
- 添加数据库迁移脚本
2026-01-21 16:16:48 +08:00

86 lines
2.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace AmtScanner.Api.Models;
public class HardwareInfo
{
[Key]
public long Id { get; set; }
[Required]
public long DeviceId { get; set; }
[Required]
public DateTime LastUpdated { get; set; }
// System Information
public string? SystemManufacturer { get; set; }
public string? SystemModel { get; set; }
public string? SystemSerialNumber { get; set; }
/// <summary>
/// 系统 UUIDSMBIOS UUID用于与操作系统绑定
/// </summary>
public string? SystemUuid { get; set; }
// Processor Information
public string? ProcessorModel { get; set; }
public int? ProcessorCores { get; set; }
public int? ProcessorThreads { get; set; }
public int? ProcessorMaxClockSpeed { get; set; } // MHz
public int? ProcessorCurrentClockSpeed { get; set; } // MHz
// Memory Information
public long? TotalMemoryBytes { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime UpdatedAt { get; set; }
// Navigation properties
[ForeignKey("DeviceId")]
public AmtDevice Device { get; set; } = null!;
public ICollection<MemoryModule> MemoryModules { get; set; } = new List<MemoryModule>();
public ICollection<StorageDevice> StorageDevices { get; set; } = new List<StorageDevice>();
}
public class MemoryModule
{
[Key]
public long Id { get; set; }
[Required]
public long HardwareInfoId { get; set; }
public string? SlotLocation { get; set; }
public long? CapacityBytes { get; set; }
public int? SpeedMHz { get; set; }
public string? MemoryType { get; set; }
public string? Manufacturer { get; set; }
public string? PartNumber { get; set; }
public string? SerialNumber { get; set; }
// Navigation property
[ForeignKey("HardwareInfoId")]
public HardwareInfo HardwareInfo { get; set; } = null!;
}
public class StorageDevice
{
[Key]
public long Id { get; set; }
[Required]
public long HardwareInfoId { get; set; }
public string? DeviceId { get; set; }
public string? Model { get; set; }
public long? CapacityBytes { get; set; }
public string? InterfaceType { get; set; }
// Navigation property
[ForeignKey("HardwareInfoId")]
public HardwareInfo HardwareInfo { get; set; } = null!;
}