feat: adicionar log no status das paginas para entender o que está acontecendo.
All checks were successful
BCards Deployment Pipeline / Run Tests (push) Successful in 1s
BCards Deployment Pipeline / PR Validation (push) Has been skipped
BCards Deployment Pipeline / Build and Push Image (push) Successful in 8m0s
BCards Deployment Pipeline / Deploy to Production (ARM - OCI) (push) Successful in 2m21s
BCards Deployment Pipeline / Deploy to Staging (x86 - Local) (push) Has been skipped
BCards Deployment Pipeline / Cleanup Old Resources (push) Has been skipped
BCards Deployment Pipeline / Deployment Summary (push) Successful in 0s

This commit is contained in:
Ricardo Carneiro 2025-09-12 15:16:12 -03:00
parent 9406997316
commit f28dc8daa8
4 changed files with 21 additions and 13 deletions

View File

@ -995,10 +995,14 @@ public class AdminController : Controller
if (user == null) if (user == null)
return Json(new { success = false, message = "Usuário não autenticado" }); return Json(new { success = false, message = "Usuário não autenticado" });
_logger.LogInformation($"Generating preview token for page {id} by user {user.Id}");
var pageItem = await _userPageService.GetPageByIdAsync(id); var pageItem = await _userPageService.GetPageByIdAsync(id);
if (pageItem == null || pageItem.UserId != user.Id) if (pageItem == null || pageItem.UserId != user.Id)
return Json(new { success = false, message = "Página não encontrada" }); return Json(new { success = false, message = "Página não encontrada" });
_logger.LogInformation($"Generating preview token for page {id} preview token {pageItem.PreviewToken} by user {user.Id}");
// Verificar se página pode ter preview // Verificar se página pode ter preview
if (pageItem.Status != ViewModels.PageStatus.Creating && if (pageItem.Status != ViewModels.PageStatus.Creating &&
pageItem.Status != ViewModels.PageStatus.PendingModeration && pageItem.Status != ViewModels.PageStatus.PendingModeration &&
@ -1011,8 +1015,8 @@ public class AdminController : Controller
{ {
// Gerar novo token com 4 horas de validade // Gerar novo token com 4 horas de validade
var newToken = await _moderationService.GeneratePreviewTokenAsync(pageItem.Id); var newToken = await _moderationService.GeneratePreviewTokenAsync(pageItem.Id);
_logger.LogInformation($"Preview token generated for page {pageItem.Id} by user {user.Id}"); _logger.LogInformation($"Generating preview token for page {id} preview token {pageItem.PreviewToken} by user {user.Id}");
return Json(new { return Json(new {
success = true, success = true,

View File

@ -44,7 +44,10 @@ public class UserPageController : Controller
// Check if it's a preview request // Check if it's a preview request
var isPreview = HttpContext.Items.ContainsKey("IsPreview") && (bool)HttpContext.Items["IsPreview"]; var isPreview = HttpContext.Items.ContainsKey("IsPreview") && (bool)HttpContext.Items["IsPreview"];
var previewToken = Request.Query["preview"].FirstOrDefault(); var previewToken = Request.Query["preview"].FirstOrDefault();
_logger.LogDebug("Request - Page: {Slug}, Status: {Status}, IsPreview: {IsPreview}, PreviewToken: {PreviewToken}, UserId: {UserId}",
userPage.Slug, userPage.Status, isPreview, !string.IsNullOrEmpty(previewToken), userPage.UserId);
if (!string.IsNullOrEmpty(previewToken)) if (!string.IsNullOrEmpty(previewToken))
{ {
// Handle preview request // Handle preview request

View File

@ -31,9 +31,11 @@ public class PageStatusMiddleware
if (!string.IsNullOrEmpty(category) && !string.IsNullOrEmpty(slug)) if (!string.IsNullOrEmpty(category) && !string.IsNullOrEmpty(slug))
{ {
var page = await userPageService.GetPageAsync(category, slug); var page = await userPageService.GetPageAsync(category, slug);
if (page != null) if (page != null)
{ {
var userId = page.UserId;
switch (page.Status) switch (page.Status)
{ {
case PageStatus.Expired: case PageStatus.Expired:
@ -60,12 +62,12 @@ public class PageStatusMiddleware
case PageStatus.Rejected: case PageStatus.Rejected:
// Páginas em desenvolvimento/moderação requerem preview token // Páginas em desenvolvimento/moderação requerem preview token
var previewToken = context.Request.Query["preview"].FirstOrDefault(); var previewToken = context.Request.Query["preview"].FirstOrDefault();
_logger.LogInformation($"Page {category}/{slug} (Status: {page.Status}) - Token provided: {!string.IsNullOrEmpty(previewToken)}, Page token: {!string.IsNullOrEmpty(page.PreviewToken)}, Expiry: {page.PreviewTokenExpiry}"); _logger.LogInformation($"User id: {userId} - Page {category}/{slug} (Status: {page.Status}) - Token provided: {!string.IsNullOrEmpty(previewToken)}, Page token: {!string.IsNullOrEmpty(page.PreviewToken)}, Expiry: {page.PreviewTokenExpiry}");
if (string.IsNullOrEmpty(previewToken)) if (string.IsNullOrEmpty(previewToken))
{ {
_logger.LogInformation($"Page {category}/{slug} requires preview token - no token provided"); _logger.LogInformation($"User id: {userId} - Page {category}/{slug} requires preview token - no token provided");
context.Response.StatusCode = 404; context.Response.StatusCode = 404;
await context.Response.WriteAsync("Página em desenvolvimento. Acesso restrito."); await context.Response.WriteAsync("Página em desenvolvimento. Acesso restrito.");
return; return;
@ -73,7 +75,7 @@ public class PageStatusMiddleware
if (string.IsNullOrEmpty(page.PreviewToken)) if (string.IsNullOrEmpty(page.PreviewToken))
{ {
_logger.LogWarning($"Page {category}/{slug} has no preview token set in database"); _logger.LogWarning($"User id: {userId} - Page {category}/{slug} has no preview token set in database");
context.Response.StatusCode = 404; context.Response.StatusCode = 404;
await context.Response.WriteAsync("Página em desenvolvimento. Acesso restrito."); await context.Response.WriteAsync("Página em desenvolvimento. Acesso restrito.");
return; return;
@ -81,7 +83,7 @@ public class PageStatusMiddleware
if (previewToken != page.PreviewToken) if (previewToken != page.PreviewToken)
{ {
_logger.LogInformation($"Page {category}/{slug} preview token mismatch - provided: {previewToken}, expected: {page.PreviewToken}"); _logger.LogInformation($"User id: {userId} - Page {category}/{slug} preview token mismatch - provided: {previewToken}, expected: {page.PreviewToken}");
context.Response.StatusCode = 404; context.Response.StatusCode = 404;
await context.Response.WriteAsync("Página em desenvolvimento. Acesso restrito."); await context.Response.WriteAsync("Página em desenvolvimento. Acesso restrito.");
return; return;
@ -89,13 +91,13 @@ public class PageStatusMiddleware
if (page.PreviewTokenExpiry < DateTime.UtcNow) if (page.PreviewTokenExpiry < DateTime.UtcNow)
{ {
_logger.LogInformation($"Page {category}/{slug} preview token expired at {page.PreviewTokenExpiry} (now: {DateTime.UtcNow})"); _logger.LogInformation($"User id: {userId} - Page {category}/{slug} preview token expired at {page.PreviewTokenExpiry} (now: {DateTime.UtcNow})");
context.Response.StatusCode = 404; context.Response.StatusCode = 404;
await context.Response.WriteAsync("Token de preview expirado. Gere um novo token no painel."); await context.Response.WriteAsync("Token de preview expirado. Gere um novo token no painel.");
return; return;
} }
_logger.LogInformation($"Page {category}/{slug} preview token validated successfully"); _logger.LogInformation($"User id: {userId} - Page {category}/{slug} preview token validated successfully");
break; break;
case PageStatus.Active: case PageStatus.Active:
@ -104,7 +106,7 @@ public class PageStatusMiddleware
default: default:
// Status desconhecido - tratar como inativo // Status desconhecido - tratar como inativo
_logger.LogWarning($"Unknown page status: {page.Status} for page {category}/{slug}"); _logger.LogWarning($"User id: {userId} - Unknown page status: {page.Status} for page {category}/{slug}");
context.Response.StatusCode = 404; context.Response.StatusCode = 404;
await context.Response.WriteAsync("Página temporariamente indisponível."); await context.Response.WriteAsync("Página temporariamente indisponível.");
return; return;

View File

@ -432,7 +432,6 @@
return container; return container;
} }
// 🔥 OTIMIZAÇÃO: Sistema de KeepAlive para evitar timeout de sessão
(function() { (function() {
let inactivityTimer; let inactivityTimer;
const inactivityTimeout = 5 * 60 * 1000; // 5 minutos const inactivityTimeout = 5 * 60 * 1000; // 5 minutos