## 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>
8.3 KiB
WeChat Mini-Program Admin Scheduling - Documentation Index
Created: 2026-04-05
Project: mp-pilates (Pilates Studio Booking System)
📚 Documentation Files
This exploration contains 3 comprehensive documents about the admin scheduling/排课设置 system:
1. ADMIN_SCHEDULING_EXPLORATION.md (24 KB, 803 lines)
Purpose: Complete deep-dive into the scheduling system
Sections:
- Executive Summary
- File Structure (frontend, backend, shared)
- 4 Key Components (Admin Dashboard, Week Templates, Slot Adjustment, Admin Store)
- Backend Architecture (Controllers, Services, Slot Generator)
- Data Flow & User Journey
- Constants & Utilities
- Permission Model
- Implementation Status
- Edge Cases
- UI Design Patterns
- Deployment & Configuration
Best for: Understanding the complete architecture and how everything connects
2. SCHEDULING_FLOW_DIAGRAM.md (13 KB, 271 lines)
Purpose: Visual flowcharts and architecture diagrams
Sections:
- Component Architecture (visual tree)
- Data Flow: Template → Slots (visual flowchart)
- State Management breakdown
- API Endpoints Summary
- Entity Relationships (ER diagram)
- Weekday Mapping (ISO vs JS conversion)
- Timeline Example (realistic scenario)
Best for: Quick visual understanding of the flow and architecture
3. SCHEDULING_QUICK_REFERENCE.md (7.9 KB, 296 lines)
Purpose: Quick lookup guide for developers
Sections:
- Quick Links to Key Files (with line numbers)
- The Flow in 30 Seconds
- Core Entities (WeekTemplate, TimeSlot)
- API Endpoints (with JSON examples)
- UI State Management
- Permissions & Auth
- Important Constants
- Common Gotchas (5 key points)
- Usage Example (step-by-step)
- Related Components
- Scalability Notes
Best for: Developers jumping into the code for the first time
🎯 Choose Your Path
If you want to...
Understand the big picture
→ Read: SCHEDULING_FLOW_DIAGRAM.md
→ Then: ADMIN_SCHEDULING_EXPLORATION.md (section 2)
Start coding immediately
→ Read: SCHEDULING_QUICK_REFERENCE.md
→ Then: Jump to specific file links
Debug a specific issue
→ Read: SCHEDULING_QUICK_REFERENCE.md (Common Gotchas)
→ Then: Search in ADMIN_SCHEDULING_EXPLORATION.md
Understand data flow
→ Read: SCHEDULING_FLOW_DIAGRAM.md (Data Flow section)
→ Then: ADMIN_SCHEDULING_EXPLORATION.md (section 7: Data Flow)
🔑 Key Files by Role
Frontend Developer
Must Read:
SCHEDULING_QUICK_REFERENCE.md→ UI State Managementpackages/app/src/pages/admin/week-template.vue(500 lines)packages/app/src/pages/admin/slot-adjust.vue(428 lines)packages/app/src/stores/admin.ts(171 lines)
Backend Developer
Must Read:
SCHEDULING_QUICK_REFERENCE.md→ API Endpointspackages/server/src/time-slot/time-slot.controller.tspackages/server/src/time-slot/slot-generator.service.tspackages/server/src/time-slot/time-slot.service.ts
Full-Stack Developer
Must Read: All documentation files in order:
SCHEDULING_QUICK_REFERENCE.md(5 min)SCHEDULING_FLOW_DIAGRAM.md(10 min)ADMIN_SCHEDULING_EXPLORATION.md(20 min)
🎓 Learning Timeline
Day 1: Orientation (30 minutes)
- Read:
SCHEDULING_QUICK_REFERENCE.mdsection "The Flow: In 30 Seconds" - Skim:
SCHEDULING_FLOW_DIAGRAM.md
Day 2: Deep Dive (1-2 hours)
- Read:
SCHEDULING_FLOW_DIAGRAM.md(entire) - Read:
ADMIN_SCHEDULING_EXPLORATION.md(sections 1-3)
Day 3: Implementation (ongoing)
- Refer to:
SCHEDULING_QUICK_REFERENCE.mdas needed - Cross-reference:
ADMIN_SCHEDULING_EXPLORATION.mdsections 4-8 - Check: Backend/Frontend specific sections
🔗 File Paths: Quick Lookup
| Component | Path | Lines |
|---|---|---|
| Admin Dashboard | packages/app/src/pages/admin/index.vue |
177 |
| Week Templates | packages/app/src/pages/admin/week-template.vue |
500 ⭐ |
| Slot Adjustment | packages/app/src/pages/admin/slot-adjust.vue |
428 |
| Admin Store | packages/app/src/stores/admin.ts |
171 |
| API Controller | packages/server/src/time-slot/time-slot.controller.ts |
92 |
| API Service | packages/server/src/time-slot/time-slot.service.ts |
142 |
| Slot Generator | packages/server/src/time-slot/slot-generator.service.ts |
172 |
| Types: Templates | packages/shared/src/types/week-template.ts |
19 |
| Types: Slots | packages/shared/src/types/time-slot.ts |
30 |
| Constants | packages/shared/src/constants.ts |
22 |
| Utilities | packages/app/src/utils/format.ts |
47 |
⭐ = Main scheduling component (排课设置)
📊 System Overview
┌─────────────────────────────────────────────────────────┐
│ ADMIN SCHEDULING SYSTEM │
├─────────────────────────────────────────────────────────┤
│ │
│ Frontend (Vue 3 + TypeScript) │
│ ├─ week-template.vue (templates CRUD) │
│ ├─ slot-adjust.vue (manual operations) │
│ └─ admin.ts (Pinia store) │
│ │
│ Backend (NestJS + Prisma) │
│ ├─ time-slot.controller.ts (API routes) │
│ ├─ time-slot.service.ts (business logic) │
│ └─ slot-generator.service.ts (auto-generation) │
│ │
│ Database (PostgreSQL/MySQL) │
│ ├─ WeekTemplate (recurring schedule rules) │
│ ├─ TimeSlot (actual bookable slots) │
│ └─ Booking (user reservations) │
│ │
└─────────────────────────────────────────────────────────┘
🚀 Quick Start Checklist
- Read
SCHEDULING_QUICK_REFERENCE.md(5 min) - Skim
SCHEDULING_FLOW_DIAGRAM.md(5 min) - Open
packages/app/src/pages/admin/week-template.vue - Open
packages/server/src/time-slot/slot-generator.service.ts - Bookmark this index file for reference
- Ask questions about specific sections in the docs
📝 Terms & Definitions
| Term | Definition |
|---|---|
| WeekTemplate | Recurring schedule rule (e.g., "every Monday 9-10 AM") |
| TimeSlot | Actual bookable time (e.g., "Monday, April 6, 9-10 AM") |
| 排课设置 | Schedule setup (admin template management) |
| 临时调整 | Temporary adjustments (manual slot operations) |
| isDirty | Flag indicating unsaved changes |
| Atomic | All-or-nothing database transaction |
| skipDuplicates | Prisma option to ignore duplicate records on batch insert |
| ISO Weekday | 1=Monday, 2=Tuesday, ..., 7=Sunday |
🆘 Getting Help
Question Type → Documentation
"How does admin add a new class?"
→ SCHEDULING_QUICK_REFERENCE.md → Usage Example
"What API endpoints exist?"
→ SCHEDULING_QUICK_REFERENCE.md → API Endpoints
→ OR ADMIN_SCHEDULING_EXPLORATION.md → Backend Architecture
"How do templates become slots?"
→ SCHEDULING_FLOW_DIAGRAM.md → Data Flow section
"What database schema?"
→ SCHEDULING_QUICK_REFERENCE.md → Core Entities
→ OR SCHEDULING_FLOW_DIAGRAM.md → Entity Relationships
"Where does X file?"
→ SCHEDULING_QUICK_REFERENCE.md → File Paths lookup table
✅ Verification Checklist
- All 3 documentation files created
- 803 + 271 + 296 = 1,370 lines of documentation
- Complete file paths documented
- API endpoints listed with examples
- Data flow diagrams included
- Common gotchas documented
- Usage examples provided
- Scalability notes included
- Permission model explained
- Timezone handling noted
Last Updated: 2026-04-05
Status: Complete and ready for reference