Saltar al contenido principal

Revisión de Promociones de Publicaciones

Los administradores aprueban o rechazan campañas de promoción de publicaciones (impulso publicitario pagado) pendientes. El lado orientado al creador (crear/gestionar una campaña) también está completamente conectado de extremo a extremo, con una pantalla "Mis promociones" bajo Settings → My promotions — ver Promociones de Publicaciones para esa mitad de la funcionalidad.

Checklist de implementación

  • Listar campañas de promoción pendientes (adminGetPendingPromotions)
  • Aprobar una campaña (adminApprovePromotion) — la cambia a active, lo que le da un impulso real en el ranking del feed principal
  • Rechazar una campaña con un motivo (adminRejectPromotion) — reembolsa el presupuesto de monedas no utilizado del creador

Dónde vive esto

Backendapps/backend/graphql/resolvers/post-promotion.resolver.js, protegido por el permiso de administrador MANAGE_PROMOTIONS. Es el mismo archivo de resolver que las operaciones orientadas al creador (myPromotions, createPostPromotion, pausePostPromotion, etc.), consumidas por la pantalla "Mis promociones" de apps/frontend-nextjs — ver la referencia técnica.

Frontendapps/frontend-admin/src/app/promotions/page.tsx, mostrado condicionalmente en la navegación de administrador según el permiso MANAGE_PROMOTIONS.

Referencia de GraphQL

query AdminGetPendingPromotions {
adminGetPendingPromotions {
id campaignName objective budgetType budgetAmount
post { id text }
user { id username }
}
}

mutation AdminApprovePromotion($id: ID!) { adminApprovePromotion(id: $id) { id status reviewedAt } }
mutation AdminRejectPromotion($id: ID!, $reason: String) { adminRejectPromotion(id: $id, reason: $reason) { id status rejectionReason reviewedAt } }