8.1 KiB
Story 11.4: Documentation Updates
Epic Reference
Epic 11: Guest Booking
Story Context
This is the final story for Epic 11. After all guest booking functionality is implemented, this story updates the PRD and other documentation files to reflect the new guest booking capability. This ensures documentation stays in sync with the actual system features.
User Story
As a developer or stakeholder, I want documentation to accurately reflect guest booking functionality, So that future development and maintenance has accurate reference material.
Acceptance Criteria
PRD Updates (docs/prd.md)
- Section 5.4 (Booking & Consultation System) updated with guest booking flow
- Guest vs client booking distinction documented
- 1-per-day limit for guests documented
- Custom captcha requirement documented
- Rate limiting rules documented
- Guest data handling documented
- Database schema section updated with guest fields
- Change log entry added
Architecture Updates (docs/architecture.md)
- CaptchaService documented in Services section
- Guest booking flow documented
- Database schema changes noted
CLAUDE.md Updates
- Any new patterns or services mentioned if needed
Epic Completion
- Epic 11 marked as complete
- All story checkboxes marked done
Implementation Steps
Step 1: Update PRD Section 5.4
Add new subsection after the existing booking flow:
#### Guest Booking Flow
In addition to client bookings, the system supports guest bookings for visitors without accounts.
**Guest Booking Process:**
1. **Guest Visits /booking:**
- Views available dates/times in calendar
- Selects preferred date and time
- Enters contact information (name, email, phone)
- Provides problem summary
- Completes captcha verification
- Submits booking request
2. **Spam Protection:**
- Custom math-based captcha (no third-party services)
- 1 booking request per email per day
- 5 booking requests per IP per 24 hours
3. **Guest Booking Status:**
- Booking enters pending queue (same as client bookings)
- Admin receives notification with guest contact info
- Guest receives email confirmation
4. **Admin Reviews Guest Booking:**
- Guest bookings appear in pending queue with "Guest" indicator
- Admin sees guest name, email, phone
- Same approval/rejection workflow as client bookings
5. **Guest Notifications:**
- Confirmation email on submission
- Approval email with calendar file on approval
- Rejection email with reason on rejection
**Guest vs Client Comparison:**
| Feature | Client Booking | Guest Booking |
|---------|---------------|---------------|
| Account Required | Yes | No |
| 1-per-day Limit | By user_id | By email |
| Contact Info | From user profile | Entered at booking |
| Email Notifications | To user email | To guest_email |
| View Past Bookings | In dashboard | N/A |
| Captcha | Not required | Required |
**Note:** Logged-in users visiting `/booking` are redirected to the client booking page.
Step 2: Update PRD Database Schema Section
Add to Section 16.1 (Database Schema Overview):
2. **consultations (bookings)**
- id, user_id (nullable for guests), guest_name, guest_email, guest_phone, booking_date, booking_time, duration (45 min), problem_summary, consultation_type (free/paid), payment_amount, payment_status (pending/received), status (pending/approved/rejected/completed/no-show/cancelled), admin_notes, created_at, updated_at
Step 3: Update PRD Email Section
Add to Section 8.2 (Email Templates):
**Guest Emails:**
1. **Guest Booking Confirmation** - Request submitted successfully
2. **Guest Booking Approved** - With consultation details and calendar file
3. **Guest Booking Rejected** - With reason (if provided)
Step 4: Update PRD Change Log
Add entry to Section 18 (Change Log):
| 1.2 | [Date] | Added guest booking functionality: public booking form at /booking, custom captcha, 1-per-day limit, guest email notifications, admin guest booking management | Development Team |
Step 5: Update Architecture Documentation
Add to docs/architecture.md Services section:
### CaptchaService
Located at `app/Services/CaptchaService.php`.
Provides custom math-based captcha for guest booking spam protection:
- `generate()` - Creates new captcha question, stores answer in session
- `validate($answer)` - Checks if provided answer matches stored answer
- `clear()` - Removes captcha from session after successful validation
No external dependencies (no Google reCAPTCHA, no Cloudflare Turnstile).
Step 6: Mark Epic as Complete
Update docs/epics/epic-11-guest-booking.md:
Change all Definition of Done items to checked:
## Definition of Done
- [x] All stories completed with acceptance criteria met
- [x] Existing client booking tests still pass
- [x] New tests cover guest booking scenarios
- [x] Admin can manage guest bookings through existing interface
- [x] Guest receives appropriate email notifications
- [x] Custom captcha working correctly
- [x] 1-per-day limit enforced
- [x] No regression in existing features
- [x] Bilingual support (Arabic/English) for guest form and emails
- [x] PRD and documentation updated
Files to Update
| File | Section | Change |
|---|---|---|
docs/prd.md |
5.4 Booking System | Add guest booking flow |
docs/prd.md |
8.2 Email Templates | Add guest emails |
docs/prd.md |
16.1 Database Schema | Update consultations table |
docs/prd.md |
18 Change Log | Add version entry |
docs/architecture.md |
Services | Add CaptchaService |
docs/epics/epic-11-guest-booking.md |
Definition of Done | Mark complete |
Testing Requirements
Documentation Verification
- PRD sections render correctly in markdown preview
- All links in documentation are valid
- Change log version number is correct
- No broken internal references
Dependencies
- Story 11.1 (Database Schema & Model Updates) - Complete
- Story 11.2 (Public Booking Form) - Complete
- Story 11.3 (Guest Notifications & Admin) - Complete
Definition of Done
- PRD updated with guest booking documentation
- Architecture documentation updated
- Epic 11 marked as complete
- All documentation changes reviewed
- Version numbers updated appropriately
Status
Ready for Review
Dev Agent Record
Agent Model Used
Claude Opus 4.5
Completion Notes
- All documentation updated to reflect guest booking functionality implemented in Stories 11.1-11.3
- PRD updated to v1.2 with guest booking flow, guest emails, and database schema changes
- Architecture source tree updated with CaptchaService, guest email templates, guest booking page, and test files
- CLAUDE.md updated with CaptchaService and Guest notifications
- Epic 11 Definition of Done marked complete
File List
| File | Change |
|---|---|
docs/prd.md |
Added guest booking flow section, guest emails, database schema updates, change log v1.2 |
docs/architecture.md |
Added CaptchaService, guest email templates, booking.blade.php, GuestBookingTest |
docs/epics/epic-11-guest-booking.md |
Marked all Definition of Done items complete |
CLAUDE.md |
Added CaptchaService and Guest notifications |
docs/stories/story-11.4-documentation-updates.md |
This story file (completion notes) |
Change Log
| Date | Change | Files |
|---|---|---|
| 2026-01-03 | Added guest booking flow to PRD Section 5.4 | docs/prd.md |
| 2026-01-03 | Updated PRD database schema with guest fields | docs/prd.md |
| 2026-01-03 | Added guest emails to PRD Section 8.2 | docs/prd.md |
| 2026-01-03 | Updated PRD change log to v1.2 | docs/prd.md |
| 2026-01-03 | Added CaptchaService to architecture source tree | docs/architecture.md |
| 2026-01-03 | Added guest email templates to architecture | docs/architecture.md |
| 2026-01-03 | Added GuestBookingTest to test structure | docs/architecture.md |
| 2026-01-03 | Marked Epic 11 Definition of Done complete | docs/epics/epic-11-guest-booking.md |
| 2026-01-03 | Added CaptchaService and Guest notifications | CLAUDE.md |