refactor: 枚举移入Models目录,命名空间更新为Rainbow.Entity.Models
大石头 authored at 2026-07-02 12:54:58
21.94 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>RainbowStat</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\Stats</CubeOutput>
  </Option>
  <Tables>
    <Table Name="InterfaceStat" Description="网口分钟统计。每分钟从/proc/net/dev采集,按天分表。记录网口级流量和硬件错误,是网络健康诊断的基础数据" ConnName="RainbowStat">
      <Columns>
        <Column Name="Id" DataType="Int64" PrimaryKey="True" DataScale="time" Description="编号。雪花ID=分钟级时间戳,按天分表自动清理旧数据" />
        <Column Name="InterfaceName" DataType="String" Length="20" Description="网口名。如eth0/ppp0/br-lan。关联WanInterface.Name进行多线路分析" />
        <Column Name="RxBytes" DataType="Int64" Description="接收字节数。每秒变化率=下行带宽占用。持续满载→运营商带宽不足或大流量下载,需升级套餐" />
        <Column Name="RxPackets" DataType="Int64" Description="接收包数。配合RxBytes得平均包大小=RxBytes/RxPackets。均值&lt;200字节且包量巨大→疑似DDoS小包攻击或DNS放大" />
        <Column Name="RxErrors" DataType="Int64" Description="接收硬件错误。CRC校验失败。正常恒为0;持续增长→网线老化/光模块故障/网卡硬件问题,需物理排查" />
        <Column Name="RxDropped" DataType="Int64" Description="接收丢包。内核缓冲区溢出丢弃。持续增长→CPU来不及处理,需调大ring buffer或升级CPU。用户感知为卡顿/断流" />
        <Column Name="RxFifo" DataType="Int64" Description="接收FIFO溢出。网卡硬件缓冲区溢出,比RxDropped更底层。增长→PCIe带宽不足或中断合并配置不当" />
        <Column Name="RxFrame" DataType="Int64" Description="帧对齐错误。主因=双工模式不匹配(一端全双工一端半双工)。增长→检查网口协商速率和双工模式" />
        <Column Name="RxMulticast" DataType="Int64" Description="接收组播包。家庭场景=IPTV/局域网设备发现(mDNS/SSDP)。异常暴增→组播风暴,需检查IGMP Snooping" />
        <Column Name="TxBytes" DataType="Int64" Description="发送字节数。上行带宽占用。P2P上传或视频推流会显著推高" />
        <Column Name="TxPackets" DataType="Int64" Description="发送包数。小包率偏高→可能是syn flood或扫描行为" />
        <Column Name="TxErrors" DataType="Int64" Description="发送硬件错误。正常恒为0;增长→网卡驱动bug或DMA故障" />
        <Column Name="TxDropped" DataType="Int64" Description="发送丢包。发送队列满丢弃=出口拥塞最直接证据。持续增长→带宽不足或QoS队列太小,需限速或升级" />
        <Column Name="TxFifo" DataType="Int64" Description="发送FIFO溢出。发送方向硬件缓冲区溢出" />
        <Column Name="TxCarrier" DataType="Int64" Description="载波丢失计数。网线物理断开/松动的直接证据。相邻两次差值&gt;0→此刻发生链路断开,是断网告警最快触发条件" />
        <Column Name="TxColls" DataType="Int64" Description="发送碰撞次数。全双工交换机环境恒为0。增长→网口半双工或接入集线器" />
        <Column Name="StatTime" DataType="DateTime" Description="统计时间。精确到分钟,如2026-07-02 14:30:00" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="InterfaceName,Id" />
        <Index Columns="StatTime" />
      </Indexes>
    </Table>
    <Table Name="InterfaceHourStat" Description="网口小时统计。从InterfaceStat按小时汇总,含速率峰值和掉线次数。用于日报和小时级趋势分析" ConnName="RainbowStat">
      <Columns>
        <Column Name="Id" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="InterfaceName" DataType="String" Length="20" Description="网口名" />
        <Column Name="StatHour" DataType="DateTime" Description="统计小时。如2026-07-02 14:00:00" />
        <Column Name="RxBytes" DataType="Int64" Description="小时接收字节合计。SUM(InterfaceStat.RxBytes)" />
        <Column Name="RxPackets" DataType="Int64" Description="小时接收包合计" />
        <Column Name="RxBytesMax" DataType="Int64" Description="分钟接收峰值。字节/秒。定位带宽瓶颈精确发生的分钟。峰值接近线路带宽→需扩容或QoS限速" />
        <Column Name="RxPacketsMax" DataType="Int64" Description="分钟接收包峰值。小包PPS过高→可能DDoS攻击" />
        <Column Name="RxErrors" DataType="Int64" Description="接收错误合计。&gt;0→该小时内有硬件异常" />
        <Column Name="RxDropped" DataType="Int64" Description="接收丢包合计。&gt;0→该小时内有拥塞" />
        <Column Name="TxBytes" DataType="Int64" Description="小时发送字节合计" />
        <Column Name="TxPackets" DataType="Int64" Description="小时发送包合计" />
        <Column Name="TxBytesMax" DataType="Int64" Description="分钟发送峰值。字节/秒" />
        <Column Name="TxPacketsMax" DataType="Int64" Description="分钟发送包峰值" />
        <Column Name="TxErrors" DataType="Int64" Description="发送错误合计" />
        <Column Name="TxDropped" DataType="Int64" Description="发送丢包合计" />
        <Column Name="TxCarrier" DataType="Int64" Description="载波丢失次数。&gt;0→该小时内有物理断网" />
        <Column Name="RxMulticast" DataType="Int64" Description="组播包合计" />
        <Column Name="OfflineCount" DataType="Int32" Description="掉线次数。该小时内网口down/up次数。&gt;3次→链路不稳定,需检查网线/光模块/对端交换机" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="InterfaceName,StatHour" Unique="True" />
      </Indexes>
    </Table>
    <Table Name="InterfaceDayStat" Description="网口日统计。从InterfaceHourStat按天汇总,含日峰值。用于周报和月度趋势分析" ConnName="RainbowStat">
      <Columns>
        <Column Name="Id" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="InterfaceName" DataType="String" Length="20" Description="网口名" />
        <Column Name="StatDay" DataType="DateTime" Description="统计日。如2026-07-02" />
        <Column Name="RxBytes" DataType="Int64" Description="日接收字节合计" />
        <Column Name="TxBytes" DataType="Int64" Description="日发送字节合计" />
        <Column Name="RxBytesMax" DataType="Int64" Description="小时接收峰值。字节/小时。定位每日流量高峰时段" />
        <Column Name="TxBytesMax" DataType="Int64" Description="小时发送峰值" />
        <Column Name="RxErrors" DataType="Int64" Description="日接收错误合计" />
        <Column Name="RxDropped" DataType="Int64" Description="日接收丢包合计" />
        <Column Name="TxErrors" DataType="Int64" Description="日发送错误合计" />
        <Column Name="TxDropped" DataType="Int64" Description="日发送丢包合计" />
        <Column Name="TxCarrier" DataType="Int64" Description="日载波丢失次数" />
        <Column Name="OfflineCount" DataType="Int32" Description="日掉线次数。&gt;10次→严重不稳定,需排查链路" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="InterfaceName,StatDay" Unique="True" />
      </Indexes>
    </Table>
    <Table Name="DeviceStat" Description="设备分钟统计。每分钟从iptables/conntrack采集,按天分表。记录每台终端的上网行为和连接质量" ConnName="RainbowStat">
      <Columns>
        <Column Name="Id" DataType="Int64" PrimaryKey="True" DataScale="time" Description="编号。雪花ID,按天分表" />
        <Column Name="DeviceId" DataType="Int32" Map="Device@Id@Name" Description="关联设备。映射优先级:1.MAC精确匹配 2.DeviceOnline.IP查DeviceOnline.DeviceId 3.Device.FindByIp取最近" />
        <Column Name="IP" DataType="String" Length="45" Description="采集时的IP。冗余存储,事后若发现映射错误可按IP+时间修正。次要映射键" />
        <Column Name="RxBytes" DataType="Int64" Description="本分钟接收字节。每分钟差值=该设备下行速率。峰值时刻与视频播放/大文件下载时段重合" />
        <Column Name="TxBytes" DataType="Int64" Description="本分钟发送字节。上行/下行比例反转→P2P上传或直播推流" />
        <Column Name="RxPackets" DataType="Int64" Description="本分钟接收包数。小包率=RxPackets*512&lt;RxBytes→大包下载正常;反之为小包应用(DNS/游戏/聊天)" />
        <Column Name="TxPackets" DataType="Int64" Description="本分钟发送包数" />
        <Column Name="ConnCount" DataType="Int32" Description="当前活跃连接数。来自conntrack。手机正常50-150;&gt;500→P2P/BT下载;&gt;2000→疑似DDoS僵尸或挖矿木马" />
        <Column Name="NewConnRate" DataType="Int32" Description="本分钟新建连接数。正常&lt;100;&gt;300→P2P连接建立;&gt;1000→端口扫描攻击特征,需立即关注" />
        <Column Name="DnsQueries" DataType="Int32" Description="DNS查询次数。来自dnsmasq日志。正常50-200/分钟;&gt;500→域名扫描或DNS隧道" />
        <Column Name="BlockedCount" DataType="Int32" Description="防火墙拦截数。安全策略命中量。持续增长→该设备正在访问黑名单域名/IP,安全风险" />
        <Column Name="TcpRetrans" DataType="Int32" Description="TCP重传次数。来自conntrack统计。重传率&gt;5%→该设备WiFi信号弱或网线质量差,用户体验严重下降" />
        <Column Name="AvgRtt" DataType="Int32" Description="平均往返时延。毫秒,通过ping/tcping统计。&lt;10ms极佳;&gt;100ms明显延迟;&gt;500ms基本不可用。用于定位WiFi干扰或运营商问题" />
        <Column Name="StatTime" DataType="DateTime" Description="统计时间。精确到分钟" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="DeviceId,Id" />
        <Index Columns="IP,Id" />
        <Index Columns="StatTime" />
      </Indexes>
    </Table>
    <Table Name="DeviceHourStat" Description="设备小时统计。从DeviceStat按小时汇总。用于日报和单设备行为趋势分析" ConnName="RainbowStat">
      <Columns>
        <Column Name="Id" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="DeviceId" DataType="Int32" Map="Device@Id@Name" Description="关联设备" />
        <Column Name="StatHour" DataType="DateTime" Description="统计小时" />
        <Column Name="RxBytes" DataType="Int64" Description="小时接收字节合计" />
        <Column Name="TxBytes" DataType="Int64" Description="小时发送字节合计" />
        <Column Name="RxBytesMax" DataType="Int64" Description="分钟接收峰值。字节/分。定位该设备带宽消耗最大的分钟" />
        <Column Name="TxBytesMax" DataType="Int64" Description="分钟发送峰值" />
        <Column Name="ConnCountMax" DataType="Int32" Description="最大连接数。连接数峰值时刻=设备网络活动最密集时刻" />
        <Column Name="TcpRetrans" DataType="Int32" Description="TCP重传合计。小时重传&gt;500→该设备WiFi/网线质量严重差" />
        <Column Name="AvgRttMin" DataType="Int32" Description="最小时延。ms。反映最佳网络状态" />
        <Column Name="AvgRttMax" DataType="Int32" Description="最大时延。ms。RttMax-RttMin=抖动,&gt;100ms严重影响VoIP/游戏" />
        <Column Name="BlockedCount" DataType="Int32" Description="防火墙拦截合计" />
        <Column Name="DnsQueries" DataType="Int32" Description="DNS查询合计" />
        <Column Name="OfflineCount" DataType="Int32" Description="掉线次数。小时掉线&gt;3→设备WiFi信号极差或频繁休眠唤醒" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="DeviceId,StatHour" Unique="True" />
      </Indexes>
    </Table>
    <Table Name="DeviceDayStat" Description="设备日统计。从DeviceHourStat按天汇总。用于周报和单设备长期行为分析" ConnName="RainbowStat">
      <Columns>
        <Column Name="Id" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="DeviceId" DataType="Int32" Map="Device@Id@Name" Description="关联设备" />
        <Column Name="StatDay" DataType="DateTime" Description="统计日" />
        <Column Name="RxBytes" DataType="Int64" Description="日接收字节合计。日流量&gt;10GB→大量视频下载,可能超出月度配额" />
        <Column Name="TxBytes" DataType="Int64" Description="日发送字节合计" />
        <Column Name="RxBytesMax" DataType="Int64" Description="小时接收峰值。定位每日流量高峰时段(通常是晚间19-22点)" />
        <Column Name="TxBytesMax" DataType="Int64" Description="小时发送峰值" />
        <Column Name="TotalConns" DataType="Int64" Description="日总连接数。异常暴增(&gt;10万)→设备可能中病毒发起扫描" />
        <Column Name="TcpRetrans" DataType="Int32" Description="TCP重传合计。日重传&gt;1000→设备网络质量长期差,建议检查网线/WiFi信道" />
        <Column Name="BlockedCount" DataType="Int32" Description="日防火墙拦截合计" />
        <Column Name="OnlineSeconds" DataType="Int32" ItemType="TimeSpan" Description="日在线秒数。反映设备使用时长。异常短(&lt;600秒)→设备可能故障或用户外出" />
        <Column Name="OfflineCount" DataType="Int32" Description="日掉线次数" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="DeviceId,StatDay" Unique="True" />
      </Indexes>
    </Table>
    <Table Name="MemberStat" Description="成员分钟统计。汇总该成员所有设备每分钟行为。用于成员级流量账单和家长控制" ConnName="RainbowStat">
      <Columns>
        <Column Name="Id" DataType="Int64" PrimaryKey="True" DataScale="time" Description="编号。雪花ID,按天分表" />
        <Column Name="MemberId" DataType="Int32" Map="Member@Id@Name" Description="关联成员。汇总该成员所有Device的DeviceStat" />
        <Column Name="DeviceCount" DataType="Int32" Description="当前在线设备数。一人多设备同时在线。突然增加→新设备接入,关注是否未经授权" />
        <Column Name="RxBytes" DataType="Int64" Description="所有设备接收字节汇总。家庭流量账单依据,可设置月度配额告警" />
        <Column Name="TxBytes" DataType="Int64" Description="所有设备发送字节汇总" />
        <Column Name="RxPackets" DataType="Int64" Description="接收包汇总" />
        <Column Name="TxPackets" DataType="Int64" Description="发送包汇总" />
        <Column Name="TotalConns" DataType="Int32" Description="所有设备总连接数。异常高→某设备可能在跑P2P或被控" />
        <Column Name="NewConnRate" DataType="Int32" Description="每分钟新建连接汇总" />
        <Column Name="DnsQueries" DataType="Int32" Description="DNS查询汇总。分析该成员的域名访问模式,异常域名可关联到具体成员" />
        <Column Name="BlockedCount" DataType="Int32" Description="防火墙拦截汇总。反映该成员的安全风险等级:持续高→可能误入钓鱼/恶意网站" />
        <Column Name="TcpRetrans" DataType="Int32" Description="TCP重传汇总。重传集中在某成员→该成员WiFi环境差。可推送APP提醒靠近路由器" />
        <Column Name="AvgRtt" DataType="Int32" Description="平均时延。加权平均,反映该成员整体上网流畅度" />
        <Column Name="OnlineSeconds" DataType="Int32" ItemType="TimeSpan" Description="本分钟在线秒数。0-60。60=全程在线;&lt;60=该分钟有设备断网或休眠" />
        <Column Name="StatTime" DataType="DateTime" Description="统计时间" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="MemberId,Id" />
        <Index Columns="StatTime" />
      </Indexes>
    </Table>
    <Table Name="MemberHourStat" Description="成员小时统计。从MemberStat按小时汇总。用于成员日报和行为趋势" ConnName="RainbowStat">
      <Columns>
        <Column Name="Id" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="MemberId" DataType="Int32" Map="Member@Id@Name" Description="关联成员" />
        <Column Name="StatHour" DataType="DateTime" Description="统计小时" />
        <Column Name="DeviceCount" DataType="Int32" Description="平均在线设备数" />
        <Column Name="RxBytes" DataType="Int64" Description="小时接收字节合计" />
        <Column Name="TxBytes" DataType="Int64" Description="小时发送字节合计" />
        <Column Name="RxBytesMax" DataType="Int64" Description="分钟接收峰值。定位该成员带宽消耗最大的时刻" />
        <Column Name="TxBytesMax" DataType="Int64" Description="分钟发送峰值" />
        <Column Name="TotalConns" DataType="Int32" Description="最大连接数" />
        <Column Name="TcpRetrans" DataType="Int32" Description="TCP重传合计" />
        <Column Name="AvgRttMin" DataType="Int32" Description="最小时延" />
        <Column Name="AvgRttMax" DataType="Int32" Description="最大时延。抖动=Max-Min&gt;100ms→VoIP/游戏体验差" />
        <Column Name="BlockedCount" DataType="Int32" Description="防火墙拦截合计" />
        <Column Name="DnsQueries" DataType="Int32" Description="DNS查询合计" />
        <Column Name="OnlineSeconds" DataType="Int32" ItemType="TimeSpan" Description="小时在线秒数。反映该成员用网时长。异常短→可能外出或断网" />
        <Column Name="OfflineCount" DataType="Int32" Description="掉线次数合计" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="MemberId,StatHour" Unique="True" />
      </Indexes>
    </Table>
    <Table Name="MemberDayStat" Description="成员日统计。从MemberHourStat按天汇总。用于周报和月度流量报告" ConnName="RainbowStat">
      <Columns>
        <Column Name="Id" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="MemberId" DataType="Int32" Map="Member@Id@Name" Description="关联成员" />
        <Column Name="StatDay" DataType="DateTime" Description="统计日" />
        <Column Name="DeviceCount" DataType="Int32" Description="当日活跃设备数。反映该成员有多少设备在使用。突然增加→新设备需关注" />
        <Column Name="RxBytes" DataType="Int64" Description="日接收字节合计" />
        <Column Name="TxBytes" DataType="Int64" Description="日发送字节合计" />
        <Column Name="RxBytesMax" DataType="Int64" Description="小时接收峰值" />
        <Column Name="TxBytesMax" DataType="Int64" Description="小时发送峰值" />
        <Column Name="TcpRetrans" DataType="Int32" Description="TCP重传合计" />
        <Column Name="BlockedCount" DataType="Int32" Description="日防火墙拦截合计" />
        <Column Name="OnlineSeconds" DataType="Int32" ItemType="TimeSpan" Description="日在线秒数。异常短→成员今天基本没上网" />
        <Column Name="OfflineCount" DataType="Int32" Description="日掉线次数" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="MemberId,StatDay" Unique="True" />
      </Indexes>
    </Table>
  </Tables>
</EntityModel>