AdoS8ConfigDatasetsController.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using Admin.NET.Plugin.AiDOP.Const.S8;
  2. using Admin.NET.Plugin.AiDOP.Infrastructure.S8;
  3. using Admin.NET.Plugin.AiDOP.Service.S8.Rules.DataAccess;
  4. namespace Admin.NET.Plugin.AiDOP.Controllers.S8;
  5. /// <summary>
  6. /// 治理数据集目录(只读)。
  7. ///
  8. /// S8-STANDARD-DATASET-HARD-CUTOVER-1:取代已物理删除的「数据源」配置端点。
  9. /// 二者的性质完全不同,不要当成改名:
  10. /// · 旧的 data-sources 是**租户可写的物理连接配置**(含连接串与凭据);
  11. /// · 本端点是**平台级只读目录**,内容来自代码内的 Catalog + Provider Registry,
  12. /// 没有任何写入口 —— 数据集的增减是数据平台侧的开发行为,不是租户配置行为。
  13. ///
  14. /// 只返回 <b>Catalog 已定义 且 Provider 已注册 且 定义未停用</b> 的数据集:
  15. /// 让用户在向导里选到一个"定义了但没实现"的数据集,只会把失败推迟到启用那一刻
  16. /// (dataset_provider_not_registered),对配置者毫无帮助。
  17. /// </summary>
  18. [ApiController]
  19. [Route("api/aidop/s8/config/datasets")]
  20. [NonUnify]
  21. public class AdoS8ConfigDatasetsController : ControllerBase
  22. {
  23. private readonly IS8DatasetCatalog _catalog;
  24. private readonly S8MonitoringDataProviderRegistry _registry;
  25. public AdoS8ConfigDatasetsController(IS8DatasetCatalog catalog, S8MonitoringDataProviderRegistry registry)
  26. {
  27. _catalog = catalog;
  28. _registry = registry;
  29. }
  30. [HttpGet]
  31. [S8Permission(S8PermissionCatalog.ConfigRead)]
  32. public IActionResult ListAsync()
  33. {
  34. var rows = _catalog.All
  35. .Where(d => d.IsActive && _registry.IsRegistered(d.DatasetCode))
  36. .OrderBy(d => d.DatasetCode, StringComparer.Ordinal)
  37. .Select(d => new
  38. {
  39. datasetCode = d.DatasetCode,
  40. displayName = d.DisplayName,
  41. kind = d.Kind.ToString(),
  42. // 供前端在选择规则类型时先行过滤:能力不匹配的组合在这里就该看不见,
  43. // 而不是等提交后被 Enable Gate 以 dataset_capability_mismatch 拒绝。
  44. supportsTimeout = d.Capabilities.SupportsTimeout,
  45. supportsShortage = d.Capabilities.SupportsShortage,
  46. supportsOutOfRange = d.Capabilities.SupportsOutOfRange
  47. })
  48. .ToList();
  49. return Ok(rows);
  50. }
  51. }