Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Admin: mentorship + sponsorship oversight endpoints (Phase 8.4, 8.5)

Đang mở
#18 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
35/100
Loại issue
Tính năng
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Ít trao đổi
Công nghệ
csharp, postgresql

Hướng nghiên cứu

Bắt đầu bằng cách đọc các triển khai IEndpointModule.MapEndpoints của các module phụ trách và các bài kiểm thử hiện có trong tests/CommunityPro.Tests//, đặc biệt là Members/MembersTestHarness.cs. Xác nhận các contract từ các dependency #1, #10, #11 và #16 trước khi triển khai. Công việc được xem là hoàn tất khi tất cả endpoint đều được phân trang hoặc sử dụng các bản tóm tắt có chi phí thấp, MRR và các quy tắc loại trừ được kiểm thử, các side effect của việc kết luận khớp với luồng participant và quyền truy cập của người không phải quản trị viên bị chặn.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

admin

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 DbContext mapped 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 (see Members/MembersTestHarness.cs).
Ngôn ngữ chính
C#
Star
0
Fork
0
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Chuẩn bị môi trường

  • Có Dockerfile hoặc tệp Docker Compose
  • Không có mẫu pull request
  • Không có hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của CommunityPro/community-pro-api

Tất cả issue của CommunityPro/community-pro-api

Issue tương tự

Thêm issue về C#

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.