using Admin.NET.Plugin.AiDOP.Dto.S8;
using Admin.NET.Plugin.AiDOP.Service.S8;
namespace Admin.NET.Plugin.AiDOP.Controllers.S8;
[ApiController]
[Route("api/aidop/s8/monitoring")]
[NonUnify]
public class AdoS8MonitoringController : ControllerBase
{
private readonly S8MonitoringService _svc;
public AdoS8MonitoringController(S8MonitoringService svc)
{
_svc = svc;
}
///
/// 异常监控汇总——供 4 个监控页顶部徽标和模块汇总表使用。
/// sceneCode 不传时返回全部模块聚合(综合全景页)。
///
[HttpGet("summary")]
public async Task GetSummaryAsync([FromQuery] AdoS8MonitoringSummaryQueryDto q)
=> Ok(await _svc.GetSummaryAsync(q));
///
/// 9宫格数据:S1-S7 订单健康分布 + S8业务类别汇总 + S9部门汇总。
///
[HttpGet("order-grid")]
public async Task GetOrderGridAsync()
=> Ok(await _svc.GetOrderGridAsync());
///
/// S8-DELIVERY-TREND-CHART-REPLACE-DUPLICATE-SECTION-1:Delivery 页近 N 日交付异常趋势。
/// 口径 module_code IN (S1,S7) AND exception_type_code IN (ORDER_CHANGE / DELIVERY_DELAY / PENDING_SHIPMENT)。
///
[HttpGet("delivery-trend")]
public async Task GetDeliveryTrendAsync(long tenantId = 1, long factoryId = 1, int days = 7)
=> Ok(await _svc.GetDeliveryTrendAsync(tenantId, factoryId, days));
///
/// S8-PROD-SUPPLY-TREND-CHART-REPLACE-DUPLICATE-SECTION-1:Production 页近 N 日生产异常趋势。
/// 口径 module_code IN (S2,S6) AND exception_type_code IN (EQUIP_FAULT / MFG_MATERIAL_ABNORMAL / MFG_QUALITY_ABNORMAL)。
///
[HttpGet("production-trend")]
public async Task GetProductionTrendAsync(long tenantId = 1, long factoryId = 1, int days = 7)
=> Ok(await _svc.GetProductionTrendAsync(tenantId, factoryId, days));
///
/// S8-PROD-SUPPLY-TREND-CHART-REPLACE-DUPLICATE-SECTION-1:Supply 页近 N 日供应异常趋势。
/// 口径 module_code IN (S3,S4,S5) AND exception_type_code IN 7 类供应异常。
///
[HttpGet("supply-trend")]
public async Task GetSupplyTrendAsync(long tenantId = 1, long factoryId = 1, int days = 7)
=> Ok(await _svc.GetSupplyTrendAsync(tenantId, factoryId, days));
///
/// S8-SIDEBAR-TYPE-CARD-WINDOW-TOGGLE-1:专题页右侧异常类型卡同窗口同分母聚合。
/// domain ∈ {DELIVERY, PRODUCTION, SUPPLY};window ∈ {LAST_24H(默认), LAST_7D}。
///
[HttpGet("domain-type-metrics")]
public async Task GetDomainTypeMetricsAsync(string domain, string window = "LAST_24H", long tenantId = 1, long factoryId = 1)
=> Ok(await _svc.GetDomainTypeMetricsAsync(domain, window, tenantId, factoryId));
}