1.6 KiB
1.6 KiB
Booking Integrity
This ExecPlan follows docs/PLANS.md.
Purpose / Big Picture
Reject invalid booking windows and staff double-booking; accept only schedule-valid requests.
Progress
- (2026-02-28 13:05Z) Plan created.
- (2026-02-28 13:30Z) Validation service implemented (duration/availability/overlap).
- (2026-02-28 13:45Z) Tests added.
- (2026-02-28 13:50Z) Risks updated.
Surprises & Discoveries
- Observation:
makemigrationsunavailable in one environment due missing Django. Evidence: import error during initial migration step.
Decision Log
- Decision: require
staffon booking creation. Rationale: no deterministic schedule validation without staff. Date/Author: 2026-02-28/Codex - Decision: no-availability-records => open schedule. Rationale: backward compatibility while enabling stricter config when data exists. Date/Author: 2026-02-28/Codex
Outcomes & Retrospective
Completed. Booking integrity checks are active with tests for core failure modes.
Context and Orientation
- Validation entrypoint:
backend/apps/bookings/services.py - Create serializer:
backend/apps/bookings/serializers.py - Staff availability model:
backend/apps/salons/models.py
Plan of Work
Completed; remaining future policy work is timezone/business-hours specifics.
Validation and Acceptance
From backend/:
python3 -m pytest backend/apps/bookings/testsAcceptance:- Invalid duration/availability/overlap cases return 400.
- Valid windows return 201.
Idempotence and Recovery
Validation is stateless; schema change is additive and reversible by standard migrations.