using Microsoft.AspNetCore.Mvc; using ScrapperAPI.Interfaces; namespace ScrapperAPI.Controllers; [ApiController] [Route("scrap")] public sealed class ScrapeMonitoringController : ControllerBase { private readonly IScrapeCoordinator _coord; private readonly IQueueRepository _queue; public ScrapeMonitoringController( IScrapeCoordinator coord, IQueueRepository queue) { _coord = coord; _queue = queue; } [HttpGet("running-sessions")] public async Task ListRunningSessions(CancellationToken ct) { var running = _coord.ListRunningSessions(); // Opcional: enriquecer com progresso do banco var result = new List(); foreach (var r in running) { var counts = await _queue.GetCountsAsync(r.SessionId, ct); result.Add(new { r.SessionId, r.IsRunning, r.StopRequested, r.CurrentQueueId, r.CurrentUrl, r.CurrentStartedAt, Progress = new { counts.Total, counts.Pending, counts.Processing, counts.Done, counts.Failed } }); } return Ok(result); } }