feat(platform): harden governance and approval workflows
Some checks failed
ci / release-gate (push) Has been cancelled
Some checks failed
ci / release-gate (push) Has been cancelled
This commit is contained in:
@@ -4,6 +4,7 @@ using Tiku.Api.Contracts;
|
||||
using Tiku.Application.Jobs;
|
||||
using Tiku.Application.Security;
|
||||
using Tiku.Domain.Operations;
|
||||
using Tiku.Domain.Platform;
|
||||
using Tiku.Application.Assets;
|
||||
using Tiku.Application.Storage;
|
||||
using Tiku.Infrastructure.Persistence;
|
||||
@@ -119,6 +120,26 @@ public sealed class PlatformOperationsController(
|
||||
});
|
||||
}
|
||||
|
||||
[HttpGet("governance-metrics")]
|
||||
[EndpointSummary("查询审批、配置与通知治理指标")]
|
||||
public async Task<ActionResult<object>> GovernanceMetrics(CancellationToken cancellationToken)
|
||||
{
|
||||
var now = DateTimeOffset.UtcNow;
|
||||
var approvalCounts = await dbContext.PlatformApprovalRequests.AsNoTracking()
|
||||
.GroupBy(item => item.Status)
|
||||
.Select(group => new { status = group.Key, count = group.Count() })
|
||||
.ToArrayAsync(cancellationToken);
|
||||
var expiredPending = await dbContext.PlatformApprovalRequests.AsNoTracking()
|
||||
.CountAsync(item => item.Status == PlatformApprovalRequestStatus.Pending && item.ExpiresAt <= now, cancellationToken);
|
||||
var configurationDrafts = await dbContext.PlatformConfigurationVersions.AsNoTracking()
|
||||
.CountAsync(item => item.Status == PlatformConfigurationVersionStatus.Draft, cancellationToken);
|
||||
var notificationCounts = await dbContext.PlatformNotificationDeliveries.AsNoTracking()
|
||||
.GroupBy(item => item.Status)
|
||||
.Select(group => new { status = group.Key, count = group.Count() })
|
||||
.ToArrayAsync(cancellationToken);
|
||||
return Ok(new { approvals = approvalCounts, expiredPending, configurationDrafts, notifications = notificationCounts, checkedAt = now });
|
||||
}
|
||||
|
||||
[HttpGet("jobs")]
|
||||
[EndpointSummary("查询全平台后台任务")]
|
||||
public async Task<ActionResult<IReadOnlyCollection<BackgroundJobItem>>> Jobs(
|
||||
|
||||
Reference in New Issue
Block a user