feat: complete task breakdown and checklist
- Generated comprehensive tasks.md with 16 major tasks and 94+ subtasks - Created interactive CHECKLIST.md with progress tracking and dashboard - Updated implementation plan with security-validated tech stack - Added phase-by-phase breakdown with dependencies and success criteria - Ready for Phase 0: Security Foundation & Environment Setup 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
219
.specify/specs/wordpress-plugin-kivicare-appointment-control.md
Normal file
219
.specify/specs/wordpress-plugin-kivicare-appointment-control.md
Normal file
@@ -0,0 +1,219 @@
|
||||
# WordPress Plugin for KiviCare Appointment Control
|
||||
|
||||
## 📋 Overview
|
||||
WordPress plugin avançado que permite controlo granular sobre appointments no plugin KiviCare através de sistema de restrições de médicos e serviços.
|
||||
|
||||
**Feature Name**: Care Book Block Ultimate
|
||||
**Status**: In Specification
|
||||
**Priority**: High
|
||||
**Estimated Effort**: 3-4 weeks
|
||||
|
||||
## 🎯 Business Requirements
|
||||
|
||||
### Problem Statement
|
||||
O KiviCare permite que todos os médicos tenham appointments disponíveis para todos os serviços, sem possibilidade de controlo granular. Clínicas precisam de:
|
||||
- Restringir médicos específicos de aparecerem em booking forms
|
||||
- Controlar quais serviços cada médico pode oferecer
|
||||
- Ocultar médicos temporariamente sem os desativar permanentemente
|
||||
- Manter performance otimizada mesmo com milhares de médicos/serviços
|
||||
|
||||
### Success Criteria
|
||||
- Redução de appointments incorretos em >90%
|
||||
- Interface administrativa intuitiva (<30s learning curve)
|
||||
- Zero impacto na performance existente do KiviCare
|
||||
- 100% compatibilidade com futuras atualizações do KiviCare
|
||||
|
||||
### User Stories
|
||||
- Como administrador clínico, quero poder ocultar médicos específicos do booking form para que apenas médicos disponíveis sejam exibidos
|
||||
- Como gestor de clínica, quero controlar quais serviços cada médico pode oferecer para evitar appointments incorretos
|
||||
- Como rececionista, quero ver apenas médicos e serviços relevantes para acelerar o processo de booking
|
||||
- Como paciente, quero ver apenas opções válidas para não perder tempo com combinações inválidas
|
||||
|
||||
## 🔧 Technical Requirements
|
||||
|
||||
### Functional Requirements
|
||||
- [ ] Sistema de restrições médico-específicas
|
||||
- [ ] Controlo de visibilidade por serviços
|
||||
- [ ] Interface administrativa AJAX com toggles
|
||||
- [ ] Filtragem em tempo real no booking form
|
||||
- [ ] Sistema de cache inteligente para performance
|
||||
- [ ] Backup/restore de configurações
|
||||
- [ ] Logs de alterações para auditoria
|
||||
- [ ] Export/import de configurações
|
||||
|
||||
### Non-Functional Requirements
|
||||
- **Performance**: <5% overhead no loading da página de appointments
|
||||
- **Security**: Sanitização completa de inputs + nonces + capability checks
|
||||
- **Scalability**: Suporte para >1000 médicos e >500 serviços
|
||||
- **Compatibility**: WordPress 5.0+, PHP 7.4+, KiviCare 3.0.0+
|
||||
|
||||
## 🏗️ Technical Design
|
||||
|
||||
### Architecture Overview
|
||||
**CSS-First Approach**: Injeção de CSS para ocultar elementos imediatamente, seguida de hooks PHP para filtragem de dados como camada secundária.
|
||||
|
||||
### Data Model
|
||||
```sql
|
||||
-- wp_care_booking_restrictions
|
||||
CREATE TABLE wp_care_booking_restrictions (
|
||||
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
doctor_id BIGINT UNSIGNED NOT NULL,
|
||||
service_id BIGINT UNSIGNED NULL, -- NULL = restriction applies to all services
|
||||
restriction_type ENUM('hide_doctor', 'hide_service', 'hide_combination') NOT NULL,
|
||||
is_active TINYINT(1) DEFAULT 1,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
created_by BIGINT UNSIGNED,
|
||||
|
||||
INDEX idx_doctor_service (doctor_id, service_id),
|
||||
INDEX idx_active_restrictions (is_active, restriction_type),
|
||||
FOREIGN KEY (doctor_id) REFERENCES wp_kc_doctors(id) ON DELETE CASCADE
|
||||
);
|
||||
```
|
||||
|
||||
### API Design
|
||||
**WordPress AJAX Endpoints**:
|
||||
- `wp_ajax_care_toggle_doctor_restriction` - Toggle doctor visibility
|
||||
- `wp_ajax_care_toggle_service_restriction` - Toggle service restriction
|
||||
- `wp_ajax_care_bulk_update_restrictions` - Bulk operations
|
||||
- `wp_ajax_care_export_restrictions` - Export configurations
|
||||
|
||||
**WordPress Hooks**:
|
||||
- `care_booking_before_doctor_list` - Filter doctors before display
|
||||
- `care_booking_before_service_list` - Filter services before display
|
||||
|
||||
### Integration Points
|
||||
- **KiviCare Plugin**: Hooks into appointment booking forms
|
||||
- **WordPress Admin**: Custom admin interface
|
||||
- **WordPress Database**: Custom table + WordPress options
|
||||
- **WordPress Transients**: Caching layer
|
||||
|
||||
## 📊 Implementation Plan
|
||||
|
||||
### Phase 1: Foundation (Week 1)
|
||||
- [ ] Plugin structure setup (PSR-4 autoloading)
|
||||
- [ ] Database table creation and migrations
|
||||
- [ ] Basic WordPress admin interface
|
||||
- [ ] Core restriction model classes
|
||||
- [ ] PHPUnit testing framework setup
|
||||
|
||||
### Phase 2: Core Features (Week 2)
|
||||
- [ ] CSS injection system for immediate hiding
|
||||
- [ ] WordPress hooks for KiviCare integration
|
||||
- [ ] AJAX endpoints for admin interface
|
||||
- [ ] Caching layer with WordPress Transients
|
||||
- [ ] Basic restriction CRUD operations
|
||||
|
||||
### Phase 3: Enhancement (Week 3-4)
|
||||
- [ ] Bulk operations interface
|
||||
- [ ] Export/import functionality
|
||||
- [ ] Audit logging system
|
||||
- [ ] Performance optimization
|
||||
- [ ] Comprehensive testing suite
|
||||
- [ ] Documentation and user guides
|
||||
|
||||
## 🧪 Testing Strategy
|
||||
|
||||
### Unit Tests
|
||||
- Restriction model validation
|
||||
- Cache invalidation logic
|
||||
- Database query optimization
|
||||
- Input sanitization functions
|
||||
|
||||
### Integration Tests
|
||||
- WordPress hook integration
|
||||
- KiviCare compatibility
|
||||
- Admin interface functionality
|
||||
- AJAX endpoint responses
|
||||
|
||||
### User Acceptance Tests
|
||||
- Admin can hide/show doctors via toggle
|
||||
- Booking form reflects restrictions immediately
|
||||
- Bulk operations work correctly
|
||||
- Export/import preserves all settings
|
||||
|
||||
### Performance Tests
|
||||
- Page load time impact <5%
|
||||
- AJAX response time <200ms
|
||||
- Cache hit/miss ratios >90%
|
||||
- Database query efficiency
|
||||
|
||||
## 📈 Metrics & Monitoring
|
||||
|
||||
### Key Metrics
|
||||
- Appointment booking success rate
|
||||
- Admin interface usage patterns
|
||||
- Cache performance (hit/miss ratios)
|
||||
- Database query execution times
|
||||
|
||||
### Monitoring
|
||||
- WordPress debug.log for errors
|
||||
- Custom error logging for plugin issues
|
||||
- Performance monitoring via Query Monitor
|
||||
- User activity logs for audit trail
|
||||
|
||||
## 🚨 Risk Assessment
|
||||
|
||||
### Technical Risks
|
||||
- **KiviCare Updates**: Mitigação via hooks/filters (não modificar core)
|
||||
- **Performance Impact**: CSS-first approach + caching agressivo
|
||||
- **Database Growth**: Índices apropriados + cleanup automático
|
||||
- **Plugin Conflicts**: Namespace isolation + defensive programming
|
||||
|
||||
### Business Risks
|
||||
- **User Adoption**: Interface intuitiva + documentação clara
|
||||
- **Data Loss**: Backup automático + export/import robusto
|
||||
|
||||
## 📚 Documentation Requirements
|
||||
|
||||
### User Documentation
|
||||
- [ ] Admin interface guide
|
||||
- [ ] Setup and configuration manual
|
||||
- [ ] Troubleshooting guide
|
||||
- [ ] Best practices document
|
||||
|
||||
### Technical Documentation
|
||||
- [ ] Plugin architecture overview
|
||||
- [ ] Database schema documentation
|
||||
- [ ] Hook/filter reference
|
||||
- [ ] Developer API documentation
|
||||
|
||||
## 🔄 Dependencies
|
||||
|
||||
### External Dependencies
|
||||
- WordPress 5.0+ (hooks, AJAX, admin interface)
|
||||
- KiviCare 3.0.0+ (appointment booking system)
|
||||
- MySQL 5.7+ (JSON support, performance features)
|
||||
- PHP 7.4+ (type declarations, performance)
|
||||
|
||||
### Internal Dependencies
|
||||
- WordPress $wpdb for database operations
|
||||
- WordPress Transients for caching
|
||||
- WordPress Admin interface components
|
||||
- WordPress security functions (nonces, sanitization)
|
||||
|
||||
## 📅 Timeline
|
||||
|
||||
| Phase | Start Date | End Date | Deliverables |
|
||||
|-------|------------|----------|--------------|
|
||||
| Phase 1 | Week 1 | Week 1 | Foundation setup, database, basic admin |
|
||||
| Phase 2 | Week 2 | Week 2 | Core features, CSS injection, hooks |
|
||||
| Phase 3 | Week 3 | Week 4 | Enhancement, optimization, documentation |
|
||||
|
||||
## ✅ Acceptance Criteria
|
||||
|
||||
### Definition of Done
|
||||
- [ ] All functional requirements implemented and tested
|
||||
- [ ] Performance requirements met (<5% overhead, <200ms AJAX)
|
||||
- [ ] Security requirements satisfied (sanitization, nonces, capabilities)
|
||||
- [ ] KiviCare integration working without core modifications
|
||||
- [ ] Comprehensive test suite with >80% coverage
|
||||
- [ ] User and technical documentation complete
|
||||
- [ ] Code review completed and approved
|
||||
- [ ] Compatible with WordPress 5.0+ and KiviCare 3.0.0+
|
||||
|
||||
---
|
||||
**Created**: 2025-09-12
|
||||
**Last Updated**: 2025-09-12
|
||||
**Author**: AikTop
|
||||
**Branch**: feature/wordpress-plugin-kivicare-appointment-control
|
||||
Reference in New Issue
Block a user