using Admin.NET.Plugin.AiDOP.Entity;
using Admin.NET.Plugin.AiDOP.Infrastructure;
namespace Admin.NET.Plugin.AiDOP.Controllers;
public partial class AidopKanbanController
{
///
/// 智慧诊断:按模块和当前 L1 指标返回 L2/L3/L4 诊断矩阵。
///
[HttpGet("smart-diagnosis/{moduleCode}")]
public async Task GetSmartDiagnosis(string moduleCode, [FromQuery] string? metricCode = null, [FromQuery] long factoryId = 1)
{
var mc = NormalizeDynamicDashboardModule(moduleCode);
if (mc == null) return BadRequest(new { message = "moduleCode 仅支持 S1/S2/S3/S4/S5/S6/S7/S9" });
var tenantId = AidopTenantHelper.GetTenantId(HttpContext);
var kpis = await _db.Queryable()
.Where(x => x.TenantId == tenantId && x.ModuleCode == mc && x.IsEnabled)
.OrderBy(x => x.MetricLevel)
.OrderBy(x => x.SortNo)
.ToListAsync();
var values = await LoadDashboardValuesAsync(tenantId, factoryId, mc);
var l1Metrics = kpis.Where(x => x.MetricLevel == 1).OrderBy(x => x.SortNo).ToList();
var root = ResolveDiagnosisRoot(l1Metrics, values, metricCode);
if (root == null) return Ok(new { moduleCode = mc, metricCode, title = $"{mc} 智慧诊断", stages = Array.Empty