namespace Admin.NET.Plugin.AiDOP.Entity.S8; /// /// S8 大屏卡片内容配置。描述"哪个页面的哪个卡片显示什么"。 /// UI 视觉层保持现状,本表仅承载卡片的数据绑定与统计口径配置。 /// 采用"全局基线 + 工厂可覆盖"策略:tenant_id=0 / factory_id=0 表示全局默认。 /// [SugarTable("ado_s8_dashboard_cell_config", "S8 大屏卡片配置")] [SugarIndex("uk_ado_s8_dashboard_cell_config_tenant_factory_page_cell", nameof(TenantId), OrderByType.Asc, nameof(FactoryId), OrderByType.Asc, nameof(PageCode), OrderByType.Asc, nameof(CellCode), OrderByType.Asc, IsUnique = true)] [SugarIndex("idx_ado_s8_dashboard_cell_config_page_enabled_sort", nameof(PageCode), OrderByType.Asc, nameof(Enabled), OrderByType.Asc, nameof(SortNo), OrderByType.Asc)] public class AdoS8DashboardCellConfig { [SugarColumn(ColumnName = "id", IsPrimaryKey = true, IsIdentity = true, ColumnDataType = "bigint")] public long Id { get; set; } [SugarColumn(ColumnName = "tenant_id", ColumnDataType = "bigint")] public long TenantId { get; set; } [SugarColumn(ColumnName = "factory_id", ColumnDataType = "bigint")] public long FactoryId { get; set; } /// 归属页面:OVERVIEW / DELIVERY / PRODUCTION / SUPPLY [SugarColumn(ColumnName = "page_code", Length = 32)] public string PageCode { get; set; } = string.Empty; /// 卡片编码,页面内唯一。与前端视觉结构中的稳定锚点(grid-item i、v-for key)对齐。 [SugarColumn(ColumnName = "cell_code", Length = 64)] public string CellCode { get; set; } = string.Empty; /// 卡片标题(覆盖前端默认;留空时前端使用组件内默认标题) [SugarColumn(ColumnName = "cell_title", Length = 128, IsNullable = true)] public string? CellTitle { get; set; } /// 绑定类型:EXCEPTION_TYPE(绑单个异常类型) / AGGREGATE(按域聚合) / CUSTOM(保持现有逻辑) [SugarColumn(ColumnName = "binding_type", Length = 16)] public string BindingType { get; set; } = "CUSTOM"; /// binding_type=EXCEPTION_TYPE 时使用,关联 ado_s8_exception_type.type_code [SugarColumn(ColumnName = "exception_type_code", Length = 64, IsNullable = true)] public string? ExceptionTypeCode { get; set; } /// binding_type=AGGREGATE 时使用:DOMAIN_DELIVERY / DOMAIN_PRODUCTION / DOMAIN_SUPPLY / ALL [SugarColumn(ColumnName = "aggregate_scope", Length = 32, IsNullable = true)] public string? AggregateScope { get; set; } /// 统计指标:OPEN_COUNT / FREQUENCY / AVG_DURATION / CLOSE_RATE [SugarColumn(ColumnName = "stat_metric", Length = 16)] public string StatMetric { get; set; } = "OPEN_COUNT"; /// 时间窗:TODAY / LAST_24H / LAST_7D / LAST_30D [SugarColumn(ColumnName = "time_window", Length = 16)] public string TimeWindow { get; set; } = "LAST_24H"; /// 额外筛选表达式(按部门、订单范围等),留给后续扩展 [SugarColumn(ColumnName = "filter_expression", Length = 1000, IsNullable = true)] public string? FilterExpression { get; set; } /// 部门聚合维度:OWNER(责任部门,默认) / OCCUR(发生部门)。仅 binding_type=AGGREGATE 且聚合含部门时生效。 [SugarColumn(ColumnName = "dept_group_by", Length = 8)] public string DeptGroupBy { get; set; } = "OWNER"; [SugarColumn(ColumnName = "enabled", ColumnDataType = "boolean")] public bool Enabled { get; set; } = true; [SugarColumn(ColumnName = "sort_no")] public int SortNo { get; set; } // ─── G-09 一期:页面结构配置字段(仅驱动 page-config 前端渲染,不影响查询主链) ─── /// 前端图标 key(对应 @element-plus/icons-vue 组件名,如 ShoppingBag) [SugarColumn(ColumnName = "icon", Length = 64, IsNullable = true)] public string? Icon { get; set; } /// 主布局区域:MODULES / ANALYSIS / SIDEBAR [SugarColumn(ColumnName = "layout_area", Length = 16)] public string LayoutArea { get; set; } = "ANALYSIS"; /// 展示形态:STAGE_CARD / CATEGORY_CARD / CATEGORY_COMPACT / DEPT_CLUSTER / CUSTOM [SugarColumn(ColumnName = "display_mode", Length = 32)] public string DisplayMode { get; set; } = "CATEGORY_CARD"; /// ANALYSIS 卡是否在 sidebar 以 compact 形式镜像展示。G-09 一期仅入表预留,本期不消费、DTO 不返回。 [SugarColumn(ColumnName = "show_in_sidebar", ColumnDataType = "boolean")] public bool ShowInSidebar { get; set; } = false; /// 备注 [SugarColumn(ColumnName = "remark", Length = 500, IsNullable = true)] public string? Remark { get; set; } [SugarColumn(ColumnName = "created_at")] public DateTime CreatedAt { get; set; } = DateTime.Now; [SugarColumn(ColumnName = "updated_at", IsNullable = true)] public DateTime? UpdatedAt { get; set; } }