Implementiere MemberService mit Altersvalidierung (TC-011–015) #7

Open
opened 2026-04-06 11:57:09 +02:00 by pplate · 0 comments
Owner

Ziel

MemberService.java mit Mitgliederverwaltung und CanG-Alterslogik:

public class MemberService {
    public Member addMember(MemberCreateDto dto);
    public AgeCategory determineAgeCategory(LocalDate birthDate);
    public void deactivateMember(Long memberId, String reason);
    public List<Member> getActiveMembers(String tenantId);
}

Alters-Kategorien (CanG §23)

  • ADULT (≥21): 50g/Monat, alle Sorten
  • RESTRICTED (18–20): 30g/Monat, max 10% THC

Test Cases (TC-011–015)

  • TC-011: Member age 21+ → ADULT category
  • TC-012: Member age 18–20 → RESTRICTED category
  • TC-013: Birthday calculation using Period.between() (kein Year-Subtraction-Bug!)
  • TC-014: Age category update on birthday automatically
  • TC-015: Under-18 registration rejected

Akzeptanzkriterien

  • Period.between(birthDate, LocalDate.now()) für Altersberechnung (nicht year subtraction)
  • AgeCategory Enum mit ADULT / RESTRICTED / UNDER_18_REJECTED
  • Tenant-Isolation: Mitglieder nur im eigenen Club sichtbar

Referenz

Test Plan TC-011–015

## Ziel `MemberService.java` mit Mitgliederverwaltung und CanG-Alterslogik: ```java public class MemberService { public Member addMember(MemberCreateDto dto); public AgeCategory determineAgeCategory(LocalDate birthDate); public void deactivateMember(Long memberId, String reason); public List<Member> getActiveMembers(String tenantId); } ``` ## Alters-Kategorien (CanG §23) - `ADULT` (≥21): 50g/Monat, alle Sorten - `RESTRICTED` (18–20): 30g/Monat, max 10% THC ## Test Cases (TC-011–015) - TC-011: Member age 21+ → ADULT category - TC-012: Member age 18–20 → RESTRICTED category - TC-013: Birthday calculation using `Period.between()` (kein Year-Subtraction-Bug!) - TC-014: Age category update on birthday automatically - TC-015: Under-18 registration rejected ## Akzeptanzkriterien - [ ] `Period.between(birthDate, LocalDate.now())` für Altersberechnung (nicht year subtraction) - [ ] AgeCategory Enum mit ADULT / RESTRICTED / UNDER_18_REJECTED - [ ] Tenant-Isolation: Mitglieder nur im eigenen Club sichtbar ## Referenz [Test Plan TC-011–015](http://truenas.local:30008/pplate/pi_mcps/wiki/CannaManage-08-TestPlan)
pplate added this to the Phase 0 — Foundation (Wochen 1–8) milestone 2026-04-06 11:57:09 +02:00
pplate added the cannamanagefeat labels 2026-04-06 11:57:09 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: pplate/pi_mcps#7