## Features
### Admin Schedule Page (`packages/app/src/pages/admin/schedule.vue`)
- Interactive date-based slot editor for managing daily schedules
- Real-time slot editing: start/end times, capacity adjustments
- Slot deletion with conflict warnings when bookings exist
- Add new slots with modal dialog
- Live booking status display (booked count, people names)
- Publish/Save changes with sync feedback
- Revert unsaved changes with confirmation
- Skeleton loading states and empty state handling
- Responsive design with optimized mobile UX
### Backend Enhancements
- **New DTO** (`PublishDaySlotsDto`): Structured slot publishing with validation
- Date string validation
- Slot array with existing slot IDs for updates
- Time and capacity validation per slot
- **Schedule Preview API** (`getSchedulePreview`):
- Check for existing published slots
- Fallback to active WeekTemplates for unpublished dates
- Unified response format with isPublished flag
- **Publish Slots API** (`publishDaySlots`):
- Atomic transaction for consistency
- Update existing slots with new times/capacity
- Create new slots from template data
- Delete unpublished slots or set to CLOSED if bookings exist
- Prevent capacity reduction below existing bookings
- Returns all published slots for feedback
### State Management
- Enhanced admin store with schedule state
- Support for pending/unsaved slot changes
- Optimistic UI updates with server sync
### Documentation
- Comprehensive scheduling system architecture docs
- Quick reference for admin workflows
- Flow diagrams and state transitions
- Implementation guide for future maintenance
## Breaking Changes
None
## Testing Recommendations
- Create slots for future dates via schedule editor
- Verify booking prevention for locked/full slots
- Test capacity adjustments with existing bookings
- Confirm template-based schedule generation
- Verify transaction rollback on publish failures
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- pnpm workspace with packages/app, packages/server, packages/shared
- @mp-pilates/shared: enums, constants, TypeScript interfaces for all 8 data models
- @mp-pilates/server: NestJS bootstrap with health check, validation pipe, CORS
- Base TypeScript config with strict mode
Initial design document covering architecture (monorepo with pnpm),
page design, data models, business flows, and API endpoints for
the private Pilates lesson booking WeChat mini-program.