refactor: 枚举移入Models目录,命名空间更新为Rainbow.Entity.Models
大石头 authored at 2026-07-02 12:54:58
34.21 KiB
RainbowBridge
<?xml version="1.0" encoding="utf-8"?>
<EntityModel xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:schemaLocation="https://newlifex.com https://newlifex.com/Model202509.xsd" Document="https://newlifex.com/xcode/model" ModelVersion="2.0.2026.130" xmlns="https://newlifex.com/Model202509.xsd">
  <Option>
    <!--类名模板。其中{name}替换为Table.Name,如{name}Model/I{name}Dto等-->
    <ClassNameTemplate />
    <!--显示名模板。其中{displayName}替换为Table.DisplayName-->
    <DisplayNameTemplate />
    <!--基类。可能包含基类和接口,其中{name}替换为Table.Name-->
    <BaseClass>Entity</BaseClass>
    <!--命名空间-->
    <Namespace>Rainbow.Entity</Namespace>
    <!--引用命名空间-->
    <ExtendNameSpace />
    <!--输出目录-->
    <Output>.\</Output>
    <!--是否使用中文文件名。默认false-->
    <ChineseFileName>True</ChineseFileName>
    <!--用于生成Copy函数的参数类型。例如{name}或I{name}-->
    <ModelNameForCopy />
    <!--带有索引器。实现IModel接口-->
    <HasIModel>False</HasIModel>
    <!--可为null上下文。生成String?等-->
    <Nullable>True</Nullable>
    <!--数据库连接名-->
    <ConnName>Rainbow</ConnName>
    <!--模型类模版。设置后生成模型类,用于接口数据传输,例如{name}Model-->
    <ModelClass />
    <!--模型类输出目录。默认当前目录的Models子目录-->
    <ModelsOutput>..\Models\</ModelsOutput>
    <!--模型接口模版。设置后生成模型接口,用于约束模型类和实体类,例如I{name}-->
    <ModelInterface />
    <!--模型接口输出目录。默认当前目录的Interfaces子目录-->
    <InterfacesOutput>.\Interfaces\</InterfacesOutput>
    <!--用户实体转为模型类的模型类。例如{name}或{name}DTO-->
    <ModelNameForToModel />
    <!--命名格式。Default/Upper/Lower/Underline-->
    <NameFormat>Default</NameFormat>
    <!--魔方区域显示名-->
    <DisplayName>彩虹桥网络</DisplayName>
    <!--魔方控制器输出目录-->
    <CubeOutput>..\..\Rainbow.Web\Areas\Network</CubeOutput>
  </Option>
  <Tables>
    <Table Name="Device" Description="终端设备。记录所有DHCP设备,含在线和历史,支持分组和策略">
      <Columns>
        <Column Name="Id" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="Name" DataType="String" Length="100" Description="名称。用户自定义的设备名,如'小明的手机'" />
        <Column Name="Mac" DataType="String" Master="True" Length="17" Description="MAC地址。格式 AA:BB:CC:DD:EE:FF" />
        <Column Name="IP" DataType="String" Length="45" Description="IP地址。IPv4/IPv6" />
        <Column Name="HostName" DataType="String" Length="100" Description="主机名。DHCP上报的主机名" />
        <Column Name="Kind" DataType="Int32" Description="设备种类。0未知/1手机/2电脑/3平板/4电视/5IoT/6其它" Type="Rainbow.Entity.Models.DeviceKinds" />
        <Column Name="Vendor" DataType="String" Length="100" Description="厂商。通过MAC前缀识别的设备厂商" />
        <Column Name="Icon" DataType="String" Length="200" Description="图标。CSS类名或图标URL,如'fa-mobile'" />
        <Column Name="MemberId" DataType="Int32" Map="Member@Id@Name" Description="所属成员。关联Member表,一人可有多台终端" />
        <Column Name="GroupId" DataType="Int32" Map="DeviceGroup@Id@Name" Description="分组。关联DeviceGroup" />
        <Column Name="Online" DataType="Boolean" Description="在线" />
        <Column Name="LastOnline" DataType="DateTime" Description="最后在线" />
        <Column Name="OnlineTime" DataType="Int32" ItemType="TimeSpan" Description="在线时间。今日在线秒数" />
        <Column Name="Traffic" DataType="Int64" Description="流量。今日流量(字节)" />
        <Column Name="Logins" DataType="Int32" Description="上线次数。累计上线次数" />
        <Column Name="Enable" DataType="Boolean" Description="启用。拉黑时禁用" />
        <Column Name="CreateUserId" DataType="Int32" Description="创建用户" Category="扩展" />
        <Column Name="CreateIp" DataType="String" Description="创建地址" Category="扩展" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间。首次发现在线" Category="扩展" />
        <Column Name="UpdateUserId" DataType="Int32" Description="更新用户" Category="扩展" />
        <Column Name="UpdateIp" DataType="String" Description="更新地址" Category="扩展" />
        <Column Name="UpdateTime" DataType="DateTime" Description="更新时间" Category="扩展" />
        <Column Name="StaticIP" DataType="Boolean" Description="静态IP。勾选后锁定IP,自动同步DHCP绑定" />
        <Column Name="Remark" DataType="String" Length="500" Description="备注" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="Mac" Unique="True" />
        <Index Columns="Online,LastOnline" />
        <Index Columns="Enable" />
        <Index Columns="MemberId" />
        <Index Columns="GroupId" />
        <Index Columns="Kind" />
        <Index Columns="UpdateTime" />
      </Indexes>
    </Table>
    <Table Name="WanInterface" Description="WAN接口。多线路接入配置">
      <Columns>
        <Column Name="Id" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="Name" DataType="String" Master="True" Length="20" Description="名称。如 eth0, ppp0" />
        <Column Name="Kind" DataType="Int32" Description="接入类型。0DHCP/1PPPoE/2Static" Type="Rainbow.Entity.Models.WanKinds" />
        <Column Name="IP" DataType="String" Length="45" Description="IPv4地址" />
        <Column Name="Ip6" DataType="String" Length="45" Description="IPv6地址" />
        <Column Name="Gateway" DataType="String" Length="45" Description="网关" />
        <Column Name="Netmask" DataType="String" Length="45" Description="子网掩码" />
        <Column Name="Weight" DataType="Int32" Description="权重。负载均衡权重,数值越大流量越多" />
        <Column Name="RouteTable" DataType="Int32" Description="路由表。编号如100/200" />
        <Column Name="IsDefault" DataType="Boolean" Description="默认路由" />
        <Column Name="RxSpeed" DataType="Int64" Description="下载速率。当前字节/秒" />
        <Column Name="TxSpeed" DataType="Int64" Description="上传速率。当前字节/秒" />
        <Column Name="TotalRx" DataType="Int64" Description="累计下载。字节" />
        <Column Name="TotalTx" DataType="Int64" Description="累计上传。字节" />
        <Column Name="Enable" DataType="Boolean" Description="启用" />
        <Column Name="CreateUserId" DataType="Int32" Description="创建用户" Category="扩展" />
        <Column Name="CreateIp" DataType="String" Description="创建地址" Category="扩展" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="UpdateUserId" DataType="Int32" Description="更新用户" Category="扩展" />
        <Column Name="UpdateIp" DataType="String" Description="更新地址" Category="扩展" />
        <Column Name="UpdateTime" DataType="DateTime" Description="更新时间" Category="扩展" />
        <Column Name="Remark" DataType="String" Length="500" Description="备注" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="Name" Unique="True" />
        <Index Columns="Enable,IsDefault" />
        <Index Columns="UpdateTime" />
      </Indexes>
    </Table>
    <Table Name="PppoeAccount" Description="PPPoE账号。宽带拨号账号配置">
      <Columns>
        <Column Name="Id" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="Name" DataType="String" Length="100" Description="名称。宽带账号" />
        <Column Name="Password" DataType="String" Length="100" Description="密码" />
        <Column Name="Interface" DataType="String" Master="True" Length="20" Description="网口。物理网口如eth0" />
        <Column Name="ServiceName" DataType="String" Length="100" Description="服务名。ISP提供,可选" />
        <Column Name="AutoReconnect" DataType="Boolean" Description="自动重拨。断线后自动重连" />
        <Column Name="ReconnectDelay" DataType="Int32" Description="重拨间隔。秒,默认30" />
        <Column Name="Connected" DataType="Boolean" Description="已连接" />
        <Column Name="PublicIp" DataType="String" Length="45" Description="公网IP。拨号成功后获取" />
        <Column Name="ConnectTime" DataType="DateTime" Description="连接时间。最近连接时间" />
        <Column Name="Enable" DataType="Boolean" Description="启用" />
        <Column Name="CreateUserId" DataType="Int32" Description="创建用户" Category="扩展" />
        <Column Name="CreateIp" DataType="String" Description="创建地址" Category="扩展" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="UpdateUserId" DataType="Int32" Description="更新用户" Category="扩展" />
        <Column Name="UpdateIp" DataType="String" Description="更新地址" Category="扩展" />
        <Column Name="UpdateTime" DataType="DateTime" Description="更新时间" Category="扩展" />
        <Column Name="Remark" DataType="String" Length="500" Description="备注" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="Interface" Unique="True" />
        <Index Columns="UpdateTime" />
      </Indexes>
    </Table>
    <Table Name="DhcpPool" Description="DHCP地址池。IPv4/IPv6地址分配配置">
      <Columns>
        <Column Name="Id" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="Name" DataType="String" Master="True" Length="45" Description="名称。子网地址如192.168.1.0" />
        <Column Name="Netmask" DataType="String" Length="45" Description="子网掩码。如255.255.255.0" />
        <Column Name="RangeStart" DataType="String" Length="45" Description="起始IP" />
        <Column Name="RangeEnd" DataType="String" Length="45" Description="结束IP" />
        <Column Name="Gateway" DataType="String" Length="45" Description="网关" />
        <Column Name="LeaseTime" DataType="Int32" Description="租约时间。秒,默认86400" />
        <Column Name="DnsServers" DataType="String" Length="500" Description="DNS服务器。逗号分隔" />
        <Column Name="Interface" DataType="String" Length="20" Description="绑定接口。如eth0" />
        <Column Name="Enable" DataType="Boolean" Description="启用" />
        <Column Name="CreateUserId" DataType="Int32" Description="创建用户" Category="扩展" />
        <Column Name="CreateIp" DataType="String" Description="创建地址" Category="扩展" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="UpdateUserId" DataType="Int32" Description="更新用户" Category="扩展" />
        <Column Name="UpdateIp" DataType="String" Description="更新地址" Category="扩展" />
        <Column Name="UpdateTime" DataType="DateTime" Description="更新时间" Category="扩展" />
        <Column Name="Remark" DataType="String" Length="500" Description="备注" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="Name" Unique="True" />
        <Index Columns="UpdateTime" />
      </Indexes>
    </Table>
    <Table Name="DeviceGroup" Description="设备分组。树形分组,支持家人/孩子/IoT等场景">
      <Columns>
        <Column Name="Id" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="Name" DataType="String" Master="True" Description="名称" />
        <Column Name="Description" DataType="String" Length="200" Description="描述" />
        <Column Name="Icon" DataType="String" Length="200" Description="图标" />
        <Column Name="ParentId" DataType="Int32" Description="父级。0=顶级" />
        <Column Name="Sort" DataType="Int32" Description="排序。同级内排序" />
        <Column Name="ProfileId" DataType="Int32" Map="DhcpOptionProfile@Id@Name" Description="DHCP模板。关联DhcpOptionProfile" />
        <Column Name="Enable" DataType="Boolean" Description="启用" />
        <Column Name="CreateUserId" DataType="Int32" Description="创建用户" Category="扩展" />
        <Column Name="CreateIp" DataType="String" Description="创建地址" Category="扩展" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="UpdateUserId" DataType="Int32" Description="更新用户" Category="扩展" />
        <Column Name="UpdateIp" DataType="String" Description="更新地址" Category="扩展" />
        <Column Name="UpdateTime" DataType="DateTime" Description="更新时间" Category="扩展" />
        <Column Name="Remark" DataType="String" Length="500" Description="备注" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="Name" Unique="True" />
        <Index Columns="ParentId,Sort" />
        <Index Columns="UpdateTime" />
      </Indexes>
    </Table>
    <Table Name="DhcpBinding" Description="DHCP静态绑定。MAC绑定指定IP">
      <Columns>
        <Column Name="Id" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="Mac" DataType="String" Master="True" Length="17" Description="MAC地址" />
        <Column Name="IP" DataType="String" Length="45" Description="绑定IP" />
        <Column Name="HostName" DataType="String" Length="100" Description="主机名" />
        <Column Name="AuthStatus" DataType="Int32" Description="授权状态。0已授权/1待审核/2已拉黑/3访客" />
        <Column Name="DeviceId" DataType="Int32" Map="Device@Id@Name" Description="关联设备" />
        <Column Name="Enable" DataType="Boolean" Description="启用" />
        <Column Name="CreateUserId" DataType="Int32" Description="创建用户" Category="扩展" />
        <Column Name="CreateIp" DataType="String" Description="创建地址" Category="扩展" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="UpdateUserId" DataType="Int32" Description="更新用户" Category="扩展" />
        <Column Name="UpdateIp" DataType="String" Description="更新地址" Category="扩展" />
        <Column Name="UpdateTime" DataType="DateTime" Description="更新时间" Category="扩展" />
        <Column Name="Remark" DataType="String" Length="500" Description="备注" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="Mac" Unique="True" />
        <Index Columns="IP" />
        <Index Columns="UpdateTime" />
      </Indexes>
    </Table>
    <Table Name="DnsBlacklist" Description="DNS黑名单。分类域名黑名单,内置+自定义">
      <Columns>
        <Column Name="Id" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="Domain" DataType="String" Master="True" Length="200" Description="域名" />
        <Column Name="Kind" DataType="Int32" Description="匹配方式。0精确/1通配/2正则/3关键词" Type="Rainbow.Entity.Models.MatchKinds" />
        <Column Name="Category" DataType="String" Description="分类。Ad/Tracker/Malware/Adult/Custom" />
        <Column Name="Source" DataType="String" Length="20" Description="来源。BuiltIn/User" />
        <Column Name="Hits" DataType="Int64" Description="命中次数" />
        <Column Name="LastHit" DataType="DateTime" Description="最后命中" />
        <Column Name="Sort" DataType="Int32" Description="排序" />
        <Column Name="Enable" DataType="Boolean" Description="启用" />
        <Column Name="CreateUserId" DataType="Int32" Description="创建用户" Category="扩展" />
        <Column Name="CreateIp" DataType="String" Description="创建地址" Category="扩展" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="UpdateUserId" DataType="Int32" Description="更新用户" Category="扩展" />
        <Column Name="UpdateIp" DataType="String" Description="更新地址" Category="扩展" />
        <Column Name="UpdateTime" DataType="DateTime" Description="更新时间" Category="扩展" />
        <Column Name="Remark" DataType="String" Length="500" Description="备注" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="Domain" />
        <Index Columns="Category,Enable" />
        <Index Columns="Source" />
        <Index Columns="Hits" />
        <Index Columns="UpdateTime" />
      </Indexes>
    </Table>
    <Table Name="DnsRule" Description="DNS规则。上游DNS/域名劫持/广告屏蔽">
      <Columns>
        <Column Name="Id" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="Domain" DataType="String" Master="True" Length="200" Description="域名。如example.com或*.example.com" />
        <Column Name="TargetIp" DataType="String" Length="45" Description="目标IP。劫持目标或上游DNS服务器IP" />
        <Column Name="Kind" DataType="Int32" Description="匹配方式。0精确/1通配/2正则" Type="Rainbow.Entity.Models.MatchKinds" />
        <Column Name="RuleKind" DataType="Int32" Description="规则类型。0上游/1劫持/2屏蔽" Type="Rainbow.Entity.Models.RuleKinds" />
        <Column Name="Sort" DataType="Int32" Description="排序。越小越优先" />
        <Column Name="Enable" DataType="Boolean" Description="启用" />
        <Column Name="CreateUserId" DataType="Int32" Description="创建用户" Category="扩展" />
        <Column Name="CreateIp" DataType="String" Description="创建地址" Category="扩展" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="UpdateUserId" DataType="Int32" Description="更新用户" Category="扩展" />
        <Column Name="UpdateIp" DataType="String" Description="更新地址" Category="扩展" />
        <Column Name="UpdateTime" DataType="DateTime" Description="更新时间" Category="扩展" />
        <Column Name="Remark" DataType="String" Length="500" Description="备注" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="Domain,RuleKind" />
        <Index Columns="RuleKind,Enable" />
        <Index Columns="UpdateTime" />
      </Indexes>
    </Table>
    <Table Name="FirewallRule" Description="防火墙规则。iptables DNAT/SNAT/Filter">
      <Columns>
        <Column Name="Id" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="Kind" DataType="Int32" Description="规则类型。0DNAT/1SNAT/2Filter" Type="Rainbow.Entity.Models.FirewallKinds" />
        <Column Name="Protocol" DataType="String" Length="10" Description="协议。tcp/udp/both" />
        <Column Name="ExtPort" DataType="Int32" Description="外部端口" />
        <Column Name="IntIp" DataType="String" Length="45" Description="内网IP" />
        <Column Name="IntPort" DataType="Int32" Description="内网端口" />
        <Column Name="Interface" DataType="String" Length="20" Description="绑定接口。如eth0" />
        <Column Name="Sort" DataType="Int32" Description="排序。越小越优先" />
        <Column Name="Enable" DataType="Boolean" Description="启用" />
        <Column Name="CreateUserId" DataType="Int32" Description="创建用户" Category="扩展" />
        <Column Name="CreateIp" DataType="String" Description="创建地址" Category="扩展" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="UpdateUserId" DataType="Int32" Description="更新用户" Category="扩展" />
        <Column Name="UpdateIp" DataType="String" Description="更新地址" Category="扩展" />
        <Column Name="UpdateTime" DataType="DateTime" Description="更新时间" Category="扩展" />
        <Column Name="Remark" DataType="String" Length="500" Description="备注" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="Kind,Enable" />
        <Index Columns="ExtPort,IntPort" />
        <Index Columns="UpdateTime" />
      </Indexes>
    </Table>
    <Table Name="DhcpOptionProfile" Description="DHCP选项模板。定义DHCP选项集合,可被DeviceGroup引用">
      <Columns>
        <Column Name="Id" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="Name" DataType="String" Master="True" Description="名称" />
        <Column Name="Description" DataType="String" Length="200" Description="描述" />
        <Column Name="Gateway" DataType="String" Length="45" Description="网关。DHCP Option 3" />
        <Column Name="DnsServers" DataType="String" Length="500" Description="DNS服务器。DHCP Option 6,逗号分隔" />
        <Column Name="DomainName" DataType="String" Length="200" Description="域名。DHCP Option 15" />
        <Column Name="NtpServer" DataType="String" Length="200" Description="NTP服务器。DHCP Option 42" />
        <Column Name="LeaseTime" DataType="Int32" Description="租约时间。秒,默认86400" />
        <Column Name="TftpServer" DataType="String" Length="200" Description="TFTP服务器。DHCP Option 66" />
        <Column Name="BootFile" DataType="String" Length="200" Description="启动文件。DHCP Option 67" />
        <Column Name="Enable" DataType="Boolean" Description="启用" />
        <Column Name="CreateUserId" DataType="Int32" Description="创建用户" Category="扩展" />
        <Column Name="CreateIp" DataType="String" Description="创建地址" Category="扩展" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="UpdateUserId" DataType="Int32" Description="更新用户" Category="扩展" />
        <Column Name="UpdateIp" DataType="String" Description="更新地址" Category="扩展" />
        <Column Name="UpdateTime" DataType="DateTime" Description="更新时间" Category="扩展" />
        <Column Name="Remark" DataType="String" Length="500" Description="备注" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="Name" Unique="True" />
        <Index Columns="UpdateTime" />
      </Indexes>
    </Table>
    <Table Name="DhcpLease" Description="DHCP租约。设备DHCP租约持久化记录">
      <Columns>
        <Column Name="Id" DataType="Int64" PrimaryKey="True" DataScale="time" Description="编号" />
        <Column Name="Mac" DataType="String" Master="True" Length="17" Description="MAC地址" />
        <Column Name="IP" DataType="String" Length="45" Description="IP地址" />
        <Column Name="HostName" DataType="String" Length="100" Description="主机名" />
        <Column Name="DeviceId" DataType="Int32" Map="Device@Id@Name" Description="关联设备" />
        <Column Name="Interface" DataType="String" Length="20" Description="接口。DHCP请求接口" />
        <Column Name="ExpiryTime" DataType="DateTime" Description="到期时间" />
        <Column Name="IsOnline" DataType="Boolean" Description="是否在线" />
        <Column Name="LeaseType" DataType="Int32" Description="租约类型。0动态/1静态" />
        <Column Name="CreateUserId" DataType="Int32" Description="创建用户" Category="扩展" />
        <Column Name="CreateIp" DataType="String" Description="创建地址" Category="扩展" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="UpdateUserId" DataType="Int32" Description="更新用户" Category="扩展" />
        <Column Name="UpdateIp" DataType="String" Description="更新地址" Category="扩展" />
        <Column Name="UpdateTime" DataType="DateTime" Description="更新时间" Category="扩展" />
        <Column Name="Remark" DataType="String" Length="500" Description="备注" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="Mac,IP" />
        <Index Columns="MAC" />
        <Index Columns="ExpiryTime,IsOnline" />
        <Index Columns="UpdateTime" />
      </Indexes>
    </Table>
    <Table Name="NetworkLog" Description="网络日志。记录所有Shell命令执行和关键操作">
      <Columns>
        <Column Name="Id" DataType="Int64" PrimaryKey="True" DataScale="time" Description="编号" />
        <Column Name="Action" DataType="String" Description="操作类型。如PppoeConnect/FirewallAdd/DeviceBlock" />
        <Column Name="Command" DataType="String" Length="200" Description="执行的命令" />
        <Column Name="Arguments" DataType="String" Length="1000" Description="命令参数" />
        <Column Name="ExitCode" DataType="Int32" Description="退出码。0成功" />
        <Column Name="Stdout" DataType="String" Length="-1" Description="标准输出" />
        <Column Name="Stderr" DataType="String" Length="-1" Description="标准错误" />
        <Column Name="Elapsed" DataType="Int32" Description="耗时。毫秒" />
        <Column Name="Success" DataType="Boolean" Description="成功" />
        <Column Name="Enable" DataType="Boolean" Description="启用" />
        <Column Name="CreateUserId" DataType="Int32" Description="创建用户" Category="扩展" />
        <Column Name="CreateIp" DataType="String" Description="创建地址" Category="扩展" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="Action,Id" />
        <Index Columns="Success,Id" />
      </Indexes>
    </Table>
    <Table Name="ConfigSnapshot" Description="配置快照。系统配置文件备份记录">
      <Columns>
        <Column Name="Id" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="FileName" DataType="String" Master="True" Length="200" Description="文件名" />
        <Column Name="BackupPath" DataType="String" Length="500" Description="备份路径" />
        <Column Name="FileSize" DataType="Int64" Description="文件大小。字节" />
        <Column Name="SourcePath" DataType="String" Length="500" Description="源文件路径" />
        <Column Name="Enable" DataType="Boolean" Description="启用" />
        <Column Name="CreateUserId" DataType="Int32" Description="创建用户" Category="扩展" />
        <Column Name="CreateIp" DataType="String" Description="创建地址" Category="扩展" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="Remark" DataType="String" Length="500" Description="备注" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="FileName,CreateTime" />
      </Indexes>
    </Table>
    <Table Name="Member" Description="家庭成员。家庭网络成员档案,关联设备归属和统计">
      <Columns>
        <Column Name="Id" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="Name" DataType="String" Master="True" Description="成员姓名。如'张三',用于设备归属匹配" />
        <Column Name="DisplayName" DataType="String" Description="显示名。页面展示用昵称,如'爸爸'" />
        <Column Name="Mobile" DataType="String" Length="20" Description="手机号。可用于推送告警通知" />
        <Column Name="Email" DataType="String" Length="100" Description="邮箱。用于发送周报/月报" />
        <Column Name="Avatar" DataType="String" Length="200" Description="头像URL。前端展示用" />
        <Column Name="Role" DataType="String" Length="20" Description="角色。Parent=家长(可管理)/Child=孩子(受限)/Guest=访客(限时)" />
        <Column Name="MonthlyQuota" DataType="Int64" Description="月度流量配额。字节,0=不限。超出后触发告警并可限速" />
        <Column Name="Enable" DataType="Boolean" Description="启用" />
        <Column Name="CreateUserId" DataType="Int32" Description="创建用户" Category="扩展" />
        <Column Name="CreateIp" DataType="String" Description="创建地址" Category="扩展" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="UpdateUserId" DataType="Int32" Description="更新用户" Category="扩展" />
        <Column Name="UpdateIp" DataType="String" Description="更新地址" Category="扩展" />
        <Column Name="UpdateTime" DataType="DateTime" Description="更新时间" Category="扩展" />
        <Column Name="Remark" DataType="String" Length="500" Description="备注" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="Name" Unique="True" />
        <Index Columns="Role,Enable" />
        <Index Columns="UpdateTime" />
      </Indexes>
    </Table>
    <Table Name="DeviceOnline" Description="设备在线快照。每分钟从ARP表同步,记录当前活跃IP与MAC映射,是统计映射的核心枢纽表">
      <Columns>
        <Column Name="Id" DataType="Int64" PrimaryKey="True" DataScale="time" Description="编号。雪花ID,保留历史快照" />
        <Column Name="IP" DataType="String" Length="45" Description="IP地址。当前活跃IP,IPv4/IPv6。统计时优先从此表按IP查DeviceId" />
        <Column Name="Mac" DataType="String" Length="17" Description="MAC地址。ARP解析得到,是设备唯一标识。映射第一优先级:MAC精确匹配Device表" />
        <Column Name="HostName" DataType="String" Length="100" Description="主机名。DHCP/mDNS上报,如'XiaoMing-PC'。用于人工识别设备" />
        <Column Name="DeviceId" DataType="Int32" Map="Device@Id@Name" Description="关联设备。通过MAC查Device表得到,首次未知=0,后续自动关联" />
        <Column Name="Interface" DataType="String" Length="20" Description="所在网口。如eth0/br-lan/wlan0。同IP在不同网口=不同设备,用于多网段隔离" />
        <Column Name="LeaseExpire" DataType="DateTime" Description="DHCP租约过期。过期后IP可能被回收分配给其他设备,是IP漂移的预警信号" />
        <Column Name="PrevMac" DataType="String" Length="17" Description="前一MAC。IP漂移时的旧MAC,审计关键:本次MAC≠上次MAC→IP已换设备→触发DeviceHistory事件" />
        <Column Name="PrevDeviceId" DataType="Int32" Description="前一设备ID。IP漂移时旧设备关联。事后统计可按PrevDeviceId修正历史数据" />
        <Column Name="MacChangedTime" DataType="DateTime" Description="MAC变更时间。IP漂移发生的精确时刻,用于精确定位漂移窗口" />
        <Column Name="FirstSeen" DataType="DateTime" Description="首次出现。本次会话首次在ARP表中出现的时间,即上线时刻" />
        <Column Name="LastSeen" DataType="DateTime" Description="最后活跃。每分钟更新。LastSeen超过2分钟未更新→设备已下线→触发Offline事件" />
        <Column Name="OnlineSeconds" DataType="Int32" ItemType="TimeSpan" Description="本日在线秒数。每分钟+60,用于快速展示今日在线时长,无需查DeviceHistory" />
        <Column Name="IsOnline" DataType="Boolean" Description="是否在线。LastSeen在2分钟以内=True。用于仪表盘实时在线数统计和告警" />
        <Column Name="RxBytes" DataType="Int64" Description="本日累计接收字节。从iptables计数器累加。异常暴增→大流量下载或视频播放" />
        <Column Name="TxBytes" DataType="Int64" Description="本日累计发送字节。上行&gt;下行→P2P上传或直播推流,需关注是否异常" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="UpdateTime" DataType="DateTime" Description="更新时间。每次采集同步时更新" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="IP" Unique="True" />
        <Index Columns="Mac,IsOnline" />
        <Index Columns="DeviceId,IsOnline" />
        <Index Columns="Interface" />
        <Index Columns="LastSeen" />
      </Indexes>
    </Table>
    <Table Name="DeviceHistory" Description="设备历史。记录设备上下线和IP/MAC变更等生命周期事件,是AI分析设备行为模式的核心数据源">
      <Columns>
        <Column Name="Id" DataType="Int64" PrimaryKey="True" DataScale="time" Description="编号。雪花ID,事件自带时间信息" />
        <Column Name="DeviceId" DataType="Int32" Map="Device@Id@Name" Description="关联设备。事件所属设备" />
        <Column Name="Mac" DataType="String" Length="17" Description="MAC地址。冗余存储,方便设备无关查询" />
        <Column Name="IP" DataType="String" Length="45" Description="IP地址。事件发生时的IP,事后审计可据此关联统计表" />
        <Column Name="Action" DataType="String" Length="20" Description="事件类型。Online=上线/Offline=下线/IpChanged=IP变更/Reconnect=重连/NewDevice=新设备发现。Online事件发生后设备开始产生流量,Offline后停止" />
        <Column Name="OldIP" DataType="String" Length="45" Description="旧IP。IpChanged事件时记录变更前的IP,用于追踪设备IP变化轨迹" />
        <Column Name="HostName" DataType="String" Length="100" Description="主机名。事件时的DHCP/mDNS主机名" />
        <Column Name="Interface" DataType="String" Length="20" Description="所在网口。定位设备连接的物理位置(客厅AP/书房交换机等)" />
        <Column Name="Duration" DataType="Int32" ItemType="TimeSpan" Description="在线时长。秒。Offline事件时=本次在线总时长,用于计算日均在线时长" />
        <Column Name="LeaseExpire" DataType="DateTime" Description="租约过期。DHCP租约到期时间,离线事件记录最后一次租约" />
        <Column Name="Time" DataType="DateTime" Description="事件时间。精确的事件发生时刻,是时序分析的基础时间轴" />
        <Column Name="Remark" DataType="String" Length="500" Description="备注。如'租约到期自然下线'、'手动标记离线'、'WiFi信号弱导致断线'" />
      </Columns>
      <Indexes>
        <Index Columns="DeviceId,Time" />
        <Index Columns="Action,Time" />
        <Index Columns="IP,Time" />
        <Index Columns="Mac,Time" />
      </Indexes>
    </Table>
  </Tables>
</EntityModel>