feat(ios): add deliveryStatus and lastDeliveryAttempt to NotificationContent
Complete final 2 Phase 2 iOS enhancements - delivery tracking properties.
Changes:
- NotificationContent: Add delivery tracking properties
- deliveryStatus: String? (e.g., "scheduled", "delivered", "missed", "error")
- lastDeliveryAttempt: Int64? (milliseconds since epoch)
- Updated Codable support (CodingKeys, init, encode)
- Updated toDictionary/fromDictionary for backward compatibility
- Properties are optional with default nil (backward compatible)
- DailyNotificationReactivationManager: Use delivery tracking
- detectMissedNotifications(): Filter by deliveryStatus != "delivered"
- markMissedNotification(): Set deliveryStatus="missed" and lastDeliveryAttempt
- Removed 2 TODOs, fully implemented
Phase 2 Progress: 8 of 8 enhancements COMPLETE ✅
- ✅ Rolling window maintenance
- ✅ TTL validation
- ✅ Database statistics
- ✅ Metrics recording
- ✅ CoreData history
- ✅ Fetcher instances clarified
- ✅ deliveryStatus property (this commit)
- ✅ lastDeliveryAttempt property (this commit)
Verification:
- TypeScript typecheck: PASS
- Tests: PASS (115 tests, 8 test suites)
- No linter errors
- Backward compatible (optional parameters with defaults)