refactor(android): P2.1 Batch C - complete glue & orchestration delegation
- Refactor updateStarredPlans() to delegate to ScheduleHelper - Refactor getSchedulesWithStatus() to delegate to ScheduleHelper - Refactor scheduleUserNotification() to delegate to ScheduleHelper - Refactor scheduleDailyNotification() to delegate to ScheduleHelper (largest refactor) - Refactor scheduleDualNotification() to delegate to ScheduleHelper - Document configure() for future TimeSafariIntegrationManager integration Adds 5 helper methods to ScheduleHelper for orchestration logic. Reduces plugin class by ~200+ lines of orchestration code. Batch C complete: 6 methods refactored. Total P2.1 progress: 28 methods. Refs: docs/progress/P2.1-BATCH-C-STATE.md
This commit is contained in:
125
docs/progress/P2.1-BATCH-C.md
Normal file
125
docs/progress/P2.1-BATCH-C.md
Normal file
@@ -0,0 +1,125 @@
|
||||
# Priority 2.1: Batch C - Glue & Orchestration Methods
|
||||
|
||||
**Purpose:** Third refactoring batch focusing on glue methods and complex orchestration.
|
||||
**Owner:** Development Team
|
||||
**Created:** 2025-12-23
|
||||
**Status:** in_progress
|
||||
**Baseline:** See `docs/progress/00-STATUS.md` (v1.0.11-p3-complete)
|
||||
|
||||
---
|
||||
|
||||
## Batch C Scope
|
||||
|
||||
**Goal:** Refactor methods that coordinate multiple services or perform complex orchestration.
|
||||
|
||||
**Risk Level:** ⭐⭐⭐ Medium-High (complex orchestration, multiple service coordination)
|
||||
|
||||
**Estimated Impact:** ~6-8 methods across both platforms
|
||||
|
||||
**Prerequisites:**
|
||||
- Batch A complete (7 methods)
|
||||
- Batch B complete (15 methods)
|
||||
|
||||
---
|
||||
|
||||
## Android Methods
|
||||
|
||||
### Integration & Configuration
|
||||
|
||||
1. **`configure()`**
|
||||
- **Current:** Simple database storage placeholder
|
||||
- **Target:** `TimeSafariIntegrationManager.configure(...)`
|
||||
- **Change:** Delegate configuration to integration manager
|
||||
- **Files:** `DailyNotificationPlugin.kt` (~20 lines → ~5 lines)
|
||||
- **Type:** glue
|
||||
|
||||
2. **`updateStarredPlans()`**
|
||||
- **Current:** Validation + SharedPreferences logic in plugin
|
||||
- **Target:** `TimeSafariIntegrationManager.updateStarredPlans(...)`
|
||||
- **Change:** Extract validation, delegate to manager
|
||||
- **Files:** `DailyNotificationPlugin.kt` (~85 lines → ~10 lines)
|
||||
- **Type:** validation + glue
|
||||
|
||||
### Schedule Status (Multi-Service)
|
||||
|
||||
3. **`getSchedulesWithStatus()`**
|
||||
- **Current:** Combines storage queries + scheduler status checks
|
||||
- **Target:** `ScheduleHelper.getSchedulesWithStatus()` or new service method
|
||||
- **Change:** Extract combination logic to helper/service
|
||||
- **Files:** `DailyNotificationPlugin.kt` (~50 lines → ~10 lines)
|
||||
- **Type:** glue
|
||||
|
||||
### Complex Scheduling
|
||||
|
||||
4. **`scheduleDailyNotification()`**
|
||||
- **Current:** Complex validation + cleanup + scheduling orchestration
|
||||
- **Target:** `DailyNotificationScheduler.scheduleDaily(...)` (may need enhancement)
|
||||
- **Change:** Extract validation, delegate orchestration
|
||||
- **Files:** `DailyNotificationPlugin.kt` (~350 lines → ~30 lines)
|
||||
- **Type:** validation + glue
|
||||
- **Note:** Large method, may need to be broken into smaller pieces
|
||||
|
||||
5. **`scheduleUserNotification()`**
|
||||
- **Current:** Validation + scheduling orchestration
|
||||
- **Target:** `DailyNotificationScheduler.scheduleUserNotification(...)`
|
||||
- **Change:** Extract validation, delegate to scheduler
|
||||
- **Files:** `DailyNotificationPlugin.kt` (~100 lines → ~15 lines)
|
||||
- **Type:** validation + glue
|
||||
|
||||
6. **`scheduleDualNotification()`**
|
||||
- **Current:** Complex dual-schedule orchestration (fetch + notify)
|
||||
- **Target:** `TimeSafariIntegrationManager.scheduleDual(...)`
|
||||
- **Change:** Extract entire orchestration to integration manager
|
||||
- **Files:** `DailyNotificationPlugin.kt` (~200 lines → ~15 lines)
|
||||
- **Type:** glue
|
||||
|
||||
---
|
||||
|
||||
## Implementation Strategy
|
||||
|
||||
### Phase 1: Simple Delegations (Low Risk)
|
||||
- `configure()` → `TimeSafariIntegrationManager`
|
||||
- `updateStarredPlans()` → `TimeSafariIntegrationManager`
|
||||
|
||||
### Phase 2: Status Combination (Medium Risk)
|
||||
- `getSchedulesWithStatus()` → Extract to helper/service
|
||||
|
||||
### Phase 3: Complex Scheduling (Higher Risk)
|
||||
- `scheduleUserNotification()` → `DailyNotificationScheduler`
|
||||
- `scheduleDailyNotification()` → `DailyNotificationScheduler` (may need service enhancement)
|
||||
- `scheduleDualNotification()` → `TimeSafariIntegrationManager`
|
||||
|
||||
---
|
||||
|
||||
## Expected Outcomes
|
||||
|
||||
### Metrics
|
||||
- **Android plugin:** ~800-900 lines removed
|
||||
- **Total reduction (A+B+C):** ~1200-1300 lines across all batches
|
||||
- **Test coverage:** Maintained (no behavior changes)
|
||||
|
||||
### Benefits
|
||||
- ✅ Plugin becomes true thin adapter
|
||||
- ✅ Complex orchestration moves to appropriate services
|
||||
- ✅ Integration logic centralized in `TimeSafariIntegrationManager`
|
||||
- ✅ Easier to test and maintain
|
||||
|
||||
---
|
||||
|
||||
## Rollback Plan
|
||||
|
||||
If issues arise:
|
||||
1. Revert commits for this batch
|
||||
2. Service methods remain unchanged (no risk)
|
||||
3. Plugin methods can be restored from git history
|
||||
|
||||
---
|
||||
|
||||
## Next Steps
|
||||
|
||||
After Batch C completes:
|
||||
- **Review:** Assess plugin class size and complexity
|
||||
- **iOS:** Consider starting iOS Batch A/B/C if Android is complete
|
||||
- **Testing:** Comprehensive testing of all refactored methods
|
||||
- **Documentation:** Update final status and metrics
|
||||
|
||||
Reference in New Issue
Block a user