Admin: mentorship + sponsorship oversight endpoints (Phase 8.4, 8.5)
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
Direzione di ricerca
Inizia leggendo le implementazioni di IEndpointModule.MapEndpoints dei moduli di competenza e i test esistenti in tests/CommunityPro.Tests//, in particolare Members/MembersTestHarness.cs. Conferma i contratti delle dipendenze #1, #10, #11 e #16 prima di implementare. Il lavoro è completo quando tutti gli endpoint sono paginati o usano riepiloghi economici, MRR e le regole di esclusione sono testati, gli effetti collaterali della conclusione corrispondono al flusso del partecipante e l’accesso ai non amministratori è bloccato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Scope
Read-heavy admin surfaces for the dashboard, plus one intervention action.
Mentorship oversight
| Method | Path | Notes |
|---|---|---|
| GET | /admin/mentorship/pairs |
active pairs, paginated |
| GET | /admin/mentorship/sessions?upcoming=true |
upcoming sessions |
| GET | /admin/mentorship/mentors |
capacity overview (capacity vs active count) |
| POST | /admin/mentorship/{id}/conclude |
conclude-on-behalf for disputes (audit-logged via Serilog structured fields) |
Sponsorship oversight
| Method | Path | Notes |
|---|---|---|
| GET | /admin/sponsors |
list with status, tier, subscription state |
| GET | /admin/sponsors/summary |
MRR computed from active subscriptions (annual normalized to monthly) + counts by status |
| GET | /admin/sponsors/{id}/invoices |
mirrored invoices with status + Stripe hosted links |
Rules
- Endpoints live in the owning modules under
/admin/*with the admin policy at group level (#1's pattern) — the Admin module itself owns nothing here. - All list endpoints paginated; summaries are single cheap queries.
Error codes
admin.forbidden, mentorship.not_found, sponsorship.not_found
Dependencies
Blocked by #1; mentorship endpoints need #10/#11; sponsorship endpoints need #16.
Acceptance criteria
- MRR math tested: monthly + annual mix, PastDue excluded
- Conclude-on-behalf emits the same events/side-effects as participant conclusion
- Non-admin blocked on every endpoint
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).
- Lingua principale
- C#
- Stelle
- 0
- Fork
- 0
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di CommunityPro/community-pro-api
-
cross-cutting decision
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
-
cross-cutting
Difficoltà 4/5 3-5 giorni Idoneità per principianti 58/100
-
admin
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
-
sponsorship
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
-
sponsorship
Difficoltà 5/5 Più di una settimana Idoneità per principianti 32/100
Tutte le issue di CommunityPro/community-pro-api
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
activescott/lessmsi#306 ·
-
Python: Bug: split_plaintext_paragraph / split_markdown_paragraph can return a chunk larger than max_tokensForse già presa @xThreeh l’ha presa oggi. Apertapython triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
microsoft/semantic-kernel#14566 ·
I maintainer di solito rispondono entro 4 giorni
-
triage
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 82/100
rjmurillo/moq.analyzers#1384 ·
-
Variables passed to Compensated are not set on the routing slipForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
MassTransit/MassTransit#6249 ·
-
security
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
Sendspin/sendspin-dotnet#339 ·
I maintainer di solito rispondono entro 1 giorno