Include Loyalty/Communication/Sports Center backends and registry updates alongside production nginx and compose wiring. Co-authored-by: Cursor <cursoragent@cursor.com>
3.4 KiB
Phase 9.2 — Sports Center Member Management
| Field | Value |
|---|---|
| Status | Complete |
| Module | sports-center |
| Version | 0.9.2.0 |
| Database | sports_center_db |
| API Port | 8006 |
| ADR | ADR-001, ADR-003, ADR-006, ADR-014 |
Goal
Deliver Member Management on the independent Sports Center Platform: sports members, family links, medical shells, emergency contacts, membership assignment (consuming the Phase 9.1 catalog), cards/QR/digital passes, waivers, and document attachments — without coach/attendance/booking engines.
Scope Completed
- Separate
Memberaggregate (distinct from Platform Member and Loyalty Member) - Family members, emergency contacts, medical information (privacy-aware; Storage file refs only)
- Membership assignment via
member_id+ status transitions (activate/suspend/cancel/freeze/unfreeze) - Membership cards (physical/digital/QR), digital membership passes, waivers (sign), member documents
- Validators, permissions, publish-only events, Alembic
0003_phase_92_member_management /capabilitiesadvertisesmember_management: true(version0.9.2.0)
Out of Scope
- Coach & staff engines (9.3)
- Scheduling & booking (9.4)
- Attendance & access control engines (9.5)
- Accounting postings / payment capture
- Binary file storage (refs only)
- Recreating Membership Catalog tables (9.1)
Owned Aggregates
| Aggregate | Table |
|---|---|
| Member | members |
| FamilyMember | family_members |
| EmergencyContact | emergency_contacts |
| MedicalInformation | medical_information |
| MembershipCard | membership_cards |
| DigitalMembership | digital_memberships |
| Waiver | waivers |
| MemberDocument | member_documents |
Additive on memberships: member_id, freeze_starts_on, freeze_ends_on; status enum adds frozen.
APIs
| Resource | Prefix |
|---|---|
| Members | /api/v1/members |
| Family members | /api/v1/family-members |
| Emergency contacts | /api/v1/emergency-contacts |
| Medical | /api/v1/medical-information |
| Cards | /api/v1/membership-cards |
| Digital | /api/v1/digital-memberships |
| Waivers | /api/v1/waivers (+ /{id}/sign) |
| Documents | /api/v1/member-documents |
| Membership status | `/api/v1/memberships/{id}/activate |
Events
sports_center.member.updated, membership.assigned, membership.status_changed, membership.frozen, membership.unfrozen, family_member.created, emergency_contact.created, medical_information.upserted, membership_card.issued|revoked, digital_membership.issued, waiver.created|signed, member_document.attached.
Permissions
sports_center.members.*, family_members.*, emergency_contacts.*, medical.*, membership_cards.*, digital_memberships.*, waivers.*, member_documents.*, plus memberships.assign / memberships.status.
Migration
| Revision | Description |
|---|---|
0003_phase_92_member_management |
Member tables + additive membership columns |
Tests
test_members.py (happy path, assign/isolation, invalid freeze transition, capabilities) + architecture/migration/docs updates.