UC-003: Meetup Organizer Access¶
Actor: Meetup Organizer (non-member) Priority: Must Status: Implemented (protocol + firmware allow-list evaluation)
Summary¶
An external meetup organizer can enter the space on recurring evenings to set up and run their event.
Preconditions¶
- Admin has registered the organizer with a scheduled access rule
- Rule defines recurring time slots (e.g., every Tuesday 17:00–22:00)
- Organizer has an NFC card with the rule reflected in the allow-list
Main Flow¶
- Organizer arrives Tuesday at 17:30
- Scans NFC card at the terminal
- ESP32 finds entry: SCHEDULED, time slot matches (Tuesday, 17:00–22:00)
- Access granted, door unlocks
Alternative Flows¶
A1: Organizer initiates space shutdown, then returns (grace period)¶
- Event runs past the 22:00 window end, attendees leaving around 22:30
- Organizer presses shutdown button at 22:35 (space shutdown)
- Grace period (15 min) starts from shutdown (22:35), runs until 22:50
- At 22:40, organizer realizes they forgot their laptop, scans card — GRANTED_GRACE
- Grace period resets from 22:40, now runs until 22:55
- Anomaly notification queued if NOTIFY_ON_ANOMALY is set
A2: Organizer returns too late after shutdown¶
- Space shutdown at 22:15 after event ends
- At 22:35, organizer returns — 20 min after shutdown, past 15-min grace
- Access denied
- Scanning card outside is always allowed for locking: LOCK_ONLY decision
A3: Organizer tries on wrong day¶
- Organizer scans card on Wednesday
- Time slot day_mask only includes Tuesday
- Access denied
Error Flows¶
E1: Organizer arrives too early¶
- Organizer scans card at 16:00 on Tuesday
- Time slot starts at 17:00 — outside window
- Access denied
Postconditions¶
- Door unlocks during the scheduled time window
- Grace period allows finishing up after the window ends
- Space shutdown is always possible
Access Rule¶
- Access type: SCHEDULED
- Time slots: Slot 1: Tue 17:00–22:00
- Notifications: NOTIFY_ON_ANOMALY
- Grace period: 15 minutes
Notes¶
- For complex recurring patterns (e.g., "last Saturday of the month"), the backend pre-computes the next occurrence and generates a date-ranged entry.
- Multiple time slots can be used for organizers with events on different days (up to 4 slots per entry).