Add Room database persistence for recommendation feedback queue
Summary
Persist recommendation feedback queue to Room database instead of in-memory storage
Background
During code review of !7 (merged), michael_usanchenko suggested persisting the feedback retry queue to Room database. Currently it's only stored in memory, so queued feedback is lost on app restart.
Requirements
- Create Room entity for feedback queue items
- Implement DAO with insert/delete/query operations
- Migrate from in-memory list to database storage
- Add WorkManager for background retry processing
- Handle database migration gracefully
Proposed Schema
@Entity(tableName = "recommendation_feedback_queue")
data class FeedbackQueueItem(
@PrimaryKey(autoGenerate = true) val id: Long = 0,
val recommendationId: String,
val action: String,
val timestamp: Long,
val retryCount: Int = 0,
val lastError: String? = null
)
Acceptance Criteria
-
Room entity and DAO created -
Migration from in-memory to database -
WorkManager scheduled for retry processing -
Old feedback items cleaned up after 7 days -
Unit tests for database operations
Related Work
- Implemented in !7 (merged)
- Follow-up from code review discussion
Epic Context
mobile-section