Admin: webhook delivery log + dashboard summary (Phase 8 cross-cutting)
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
Línea de trabajo
Comienza resolviendo la dependencia del issue #1 y, después, revisa los patrones existentes de endpoints de módulo mediante IEndpointModule.MapEndpoints y el test harness en tests/CommunityPro.Tests/Members/MembersTestHarness.cs. Define el contrato entre módulos o el límite de la tabla compartida y documenta esa decisión en el PR. Se considera completado cuando ambos endpoints protegidos por permisos de administrador proporcionen los recuentos parciales especificados, los resultados de entrega paginados y los resúmenes de errores de los handlers fallidos.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Scope
The two things the Admin module itself owns: a cross-source webhook delivery log and the dashboard summary endpoint.
Webhook delivery log
All three webhook sources (GitHub practice repo, GitHub org, Stripe) already persist delivery/event ids for idempotency. Extend that seam into a queryable log: source, delivery id, event type, received-at, outcome (processed / duplicate / invalid-signature / handler-failed + error summary).
| Method | Path | Notes |
|---|---|---|
| GET | /admin/webhooks/deliveries?source=&outcome= |
last N (paginated, newest first) — invaluable for debugging redeliveries |
Implementation: either widen each module's delivery table and expose via a small contract per module, or a shared webhook_deliveries table in the Admin schema written through a SharedKernel interface — pick whichever keeps module boundaries clean and document the choice in the PR.
Dashboard summary
| Method | Path | Notes |
|---|---|---|
| GET | /admin/summary |
counts for the sidebar/landing: pending members, active members, submitted posts (badge count), active mentorships, upcoming sessions, active sponsors, MRR |
Each count sourced through the owning module's public contract — the Admin module aggregates, never queries foreign schemas directly.
Dependencies
Blocked by #1. Counts degrade gracefully (0) for modules not yet built — do not block on Phases 4–7; wire each count as its module lands.
Acceptance criteria
- Failed handler outcomes captured with error summary (no stack traces in API responses)
- Summary returns partial data when a module contract is unregistered
- Both endpoints admin-gated + paginated where applicable
Conventions (project-wide, non-negotiable)
- .NET 9, records for immutable shapes, file-scoped namespaces, primary constructors where they read well. Minimal-API endpoints grouped per module via
IEndpointModule.MapEndpoints. Result<T>(SharedKernel) instead of exception-driven control flow. Endpoint results map failures to ProblemDetails with the stable error codes listed above — the frontend keys off them.- Module owns its EF Core
DbContextmapped to its own Postgres schema. Modules never reference each other's internals — cross-module needs go through a public contract interface or an in-process domain event (IEventPublisher). - All external calls (GitHub, Stripe, Brevo, Cloudinary, Meilisearch) behind interfaces owned by the consuming module.
- Every list endpoint paginated (offset is fine). xUnit tests in
tests/CommunityPro.Tests/<Module>/following the existing harness patterns (seeMembers/MembersTestHarness.cs).
- Lenguaje dominante
- C#
- Estrellas
- 0
- Forks
- 0
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de CommunityPro/community-pro-api
-
cross-cutting decision
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
-
cross-cutting
Dificultad 4/5 3-5 días Aptitud para principiantes 58/100
-
admin
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
-
sponsorship
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
-
sponsorship
Dificultad 5/5 Más de una semana Aptitud para principiantes 32/100
Todos los issues de CommunityPro/community-pro-api
Issues similares
-
[i18n] 安装实例完成后的成功提示未正确本地化Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
PCL-Community/PCL-CE#3658 ·
Los mantenedores suelen responder en 1 día
-
Deploy & Patch-issues opprettes ikke: create-pnd-issues.yml har feilet hver uke siden 2025-09-08Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Altinn/altinn-auth#4359 ·
Los mantenedores suelen responder en 1 día
-
アプリ: チャット 優先: 中 提案
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
yksr-melt/Meltype#243 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Workflows: a workflow stored with null conditions is skipped with an exception instead of runAbiertobug core
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
type/automation type/tech-debt
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día