mnemo_cards/mnemo_cards_web_v2/FUTURE_TASKS_PLAN.md

687 lines
18 KiB
Markdown
Raw Normal View History

2025-11-10 23:55:41 +00:00
# Future Tasks Plan - mnemo_cards_web_v2
**Created:** October 28, 2025
**Status:** Active Development
**Current Phase:** API v2 Implementation & Feature Completion
---
## 📋 Overview
This document outlines the comprehensive plan for completing the mnemo_cards_web_v2 project. Tasks are organized by priority and dependency.
---
## 🎯 Phase 1: Complete API v2 Backend Implementation
**Priority:** HIGH
**Estimated Time:** 8-12 hours
**Dependencies:** None
### 1.1 Fix JWT Service Implementation
**Status:** 🔴 Critical
**Time:** 2-3 hours
**Tasks:**
- [ ] Replace placeholder HMAC-SHA256 with proper crypto library
- Use `crypto` package: `package:crypto/crypto.dart`
- Implement proper HMAC-SHA256 signing
- Add secret key management (environment variable or secure storage)
- [ ] Test JWT token generation and verification
- [ ] Add token expiration handling
- [ ] Implement refresh token blacklist storage (Isar model or in-memory cache)
- [ ] Add comprehensive error handling
**Acceptance Criteria:**
- JWT tokens are properly signed with HMAC-SHA256
- Token verification works correctly
- Token expiration is enforced
- Refresh tokens can be invalidated
**Files to Modify:**
- `mnemo_cards_backend/lib/api/v2/jwt_service.dart`
---
### 1.2 Complete Authentication API v2
**Status:** 🟡 In Progress
**Time:** 2-3 hours
**Tasks:**
- [ ] Verify Google OAuth flow works end-to-end
- [ ] Add Telegram authentication endpoint (future)
- [ ] Test token refresh mechanism
- [ ] Add rate limiting for auth endpoints
- [ ] Add comprehensive error responses
- [ ] Write integration tests
**Acceptance Criteria:**
- Google OAuth flow works completely
- Token refresh works when access token expires
- Proper error messages for all failure scenarios
- Tests cover all auth flows
**Files to Modify:**
- `mnemo_cards_backend/lib/api/v2/auth_api_v2.dart`
---
### 1.3 Implement Packs API v2
**Status:** 🟡 Partial
**Time:** 3-4 hours
**Tasks:**
- [ ] Complete `GET /api/v2/packs` with proper pagination
- Query params: `?page=1&limit=20&search=term&language=lang`
- Return paginated response: `{ items: [], total: 0, page: 1, limit: 20 }`
- [ ] Implement `GET /api/v2/packs/{packId}`
- Return full pack details
- Include user's purchase status if authenticated
- [ ] Implement `GET /api/v2/packs/{packId}/cards`
- Return all cards in pack
- Support pagination if needed
- [ ] Implement `GET /api/v2/packs/{packId}/cards/{cardId}/image`
- Return card image (reuse existing v1 logic)
- [ ] Implement `GET /api/v2/packs/{packId}/tests`
- Return tests for pack
- [ ] Add filtering and search capabilities
- [ ] Write comprehensive tests
**Acceptance Criteria:**
- All pack endpoints work correctly
- Pagination works properly
- Search and filtering work
- Tests cover all endpoints
**Files to Modify:**
- `mnemo_cards_backend/lib/api/v2/packs_api_v2.dart`
---
### 1.4 Implement Tests API v2
**Status:** ⬜ Not Started
**Time:** 2-3 hours
**Tasks:**
- [ ] Implement `GET /api/v2/tests/{testId}`
- Return test details
- [ ] Implement `POST /api/v2/tests/{testId}/results`
- Accept test results
- Validate results
- Save to database
- [ ] Implement `GET /api/v2/tests/{testId}/history`
- Return user's test attempt history
- Support pagination
- [ ] Write tests
**Acceptance Criteria:**
- All test endpoints work correctly
- Results are properly saved
- History is correctly retrieved
- Tests cover all endpoints
**Files to Create:**
- `mnemo_cards_backend/lib/api/v2/tests_api_v2.dart`
---
### 1.5 Implement Games API v2
**Status:** ⬜ Not Started
**Time:** 1-2 hours
**Tasks:**
- [ ] Implement `GET /api/v2/games`
- Return all available games
- Include game metadata
- [ ] Implement `GET /api/v2/games/{gameId}/assets`
- Return game assets URL/info
- [ ] Write tests
**Acceptance Criteria:**
- Games list endpoint works
- Game assets endpoint works
- Tests cover endpoints
**Files to Create:**
- `mnemo_cards_backend/lib/api/v2/games_api_v2.dart`
---
### 1.6 Implement Purchases API v2
**Status:** ⬜ Not Started
**Time:** 4-5 hours
**Tasks:**
- [ ] Implement `POST /api/v2/purchases/packs/{packId}`
- Create purchase intent
- Return purchase info
- [ ] Implement `GET /api/v2/purchases/packs/{packId}/status`
- Check if pack is purchased
- [ ] Implement `POST /api/v2/purchases/payments`
- Create payment (YooKassa integration)
- Return payment URL/redirect
- [ ] Implement `GET /api/v2/purchases/payments/{paymentId}/verify`
- Verify payment status
- Update user purchases on success
- [ ] Write tests
**Acceptance Criteria:**
- Purchase flow works end-to-end
- Payment integration works
- Payment verification works
- User purchases are updated correctly
**Files to Create:**
- `mnemo_cards_backend/lib/api/v2/purchases_api_v2.dart`
---
### 1.7 Implement Subscriptions API v2
**Status:** ⬜ Not Started
**Time:** 3-4 hours
**Tasks:**
- [ ] Implement `GET /api/v2/subscriptions/plans`
- Return available subscription plans
- [ ] Implement `POST /api/v2/subscriptions`
- Create subscription (delegate to existing logic)
- [ ] Implement `GET /api/v2/subscriptions/me`
- Get current user's subscription
- [ ] Implement `DELETE /api/v2/subscriptions/me`
- Cancel subscription
- [ ] Write tests
**Acceptance Criteria:**
- All subscription endpoints work
- Subscription creation works
- Cancellation works
- Tests cover all endpoints
**Files to Create:**
- `mnemo_cards_backend/lib/api/v2/subscriptions_api_v2.dart`
---
### 1.8 Implement Promocodes API v2
**Status:** ⬜ Not Started
**Time:** 1-2 hours
**Tasks:**
- [ ] Implement `GET /api/v2/promocodes`
- Return available promocodes (if public)
- Query params: `?active=true`
- [ ] Implement `POST /api/v2/promocodes/{code}/apply`
- Apply promocode
- Validate code
- Apply discount/benefit
- [ ] Write tests
**Acceptance Criteria:**
- Promocode listing works
- Promocode application works
- Discounts are applied correctly
- Tests cover endpoints
**Files to Create:**
- `mnemo_cards_backend/lib/api/v2/promocodes_api_v2.dart`
---
### 1.9 Update Backend Routing
**Status:** 🟡 Partial
**Time:** 1 hour
**Tasks:**
- [ ] Mount all v2 APIs in `mnemo_shelf.dart`
- [ ] Verify v2 routes don't conflict with v1
- [ ] Test all v2 endpoints are accessible
- [ ] Add OpenAPI documentation for v2 endpoints
**Acceptance Criteria:**
- All v2 APIs are mounted correctly
- No route conflicts
- All endpoints accessible
**Files to Modify:**
- `mnemo_cards_backend/lib/api/mnemo_shelf.dart`
---
## 🎯 Phase 2: Migrate Web App to Use API v2
**Priority:** HIGH
**Estimated Time:** 6-8 hours
**Dependencies:** Phase 1 (at least backend auth must be working)
### 2.1 Complete HttpRepositoryV2 Implementation
**Status:** 🟡 Partial
**Time:** 2-3 hours
**Tasks:**
- [ ] Add missing methods to `HttpRepositoryV2`:
- Purchase methods (`createPackPurchase`, `verifyPayment`, etc.)
- Subscription methods (`getSubscriptionPlans`, `purchaseSubscription`, `cancelSubscription`)
- Promocode methods (`getPromocodes`, `applyPromocode`)
- User methods (`updateUserSettings`, `getUserPurchases`, `getUserStatistics`)
- [ ] Ensure all methods match API v2 endpoints
- [ ] Add proper error handling
- [ ] Write unit tests
**Acceptance Criteria:**
- All v2 API endpoints are accessible via HttpRepositoryV2
- Error handling is consistent
- Tests cover all methods
**Files to Modify:**
- `mnemo_cards_web_v2/lib/domain/services/http_repository_v2.dart`
---
### 2.2 Migrate PackManager to Use v2
**Status:** ⬜ Not Started
**Time:** 1-2 hours
**Tasks:**
- [ ] Update `PackManager` to use `HttpRepositoryV2` instead of `HttpRepository`
- [ ] Update method calls to use v2 endpoints
- [ ] Update error handling
- [ ] Write/update tests
**Acceptance Criteria:**
- PackManager uses v2 API
- All pack operations work
- Tests pass
**Files to Modify:**
- `mnemo_cards_web_v2/lib/domain/services/pack_manager.dart`
- `mnemo_cards_web_v2/test/domain/services/pack_manager_test.dart`
---
### 2.3 Migrate GamesManager to Use v2
**Status:** 🟡 Partial
**Time:** 1 hour
**Tasks:**
- [x] Update `GamesManager` to use `HttpRepositoryV2`
- GamesManager uses v2 API
- Games load correctly
- Tests pass
**Files to Modify:**
- `mnemo_cards_web_v2/lib/domain/services/games_manager.dart`
- `mnemo_cards_web_v2/test/domain/services/games_manager_test.dart`
---
### 2.4 Migrate TestManager to Use v2
**Status:** 🟡 Partial
**Time:** 1-2 hours
**Tasks:**
- [x] Update `TestManager` to use `HttpRepositoryV2`
- TestManager uses v2 API
- Tests load and submit correctly
- Tests pass
**Files to Modify:**
- `mnemo_cards_web_v2/lib/domain/services/test_manager.dart`
- `mnemo_cards_web_v2/test/domain/services/test_manager_test.dart`
---
### 2.5 Migrate Other Services to Use v2
**Status:** 🟡 Partial
**Time:** 2-3 hours
**Tasks:**
- [x] Update `SubscriptionService` to use `HttpRepositoryV2`
- [x] Update `PromocodeService` to use `HttpRepositoryV2`
- [ ] Update `StatisticsService` to use v2 (if needed)
- [ ] Update `PackProgressService` to use v2 (if needed)
- [ ] Update tests for all services
**Acceptance Criteria:**
- All services use v2 API
- All functionality works
- Tests pass
**Files to Modify:**
- `mnemo_cards_web_v2/lib/domain/services/subscription_service.dart`
- `mnemo_cards_web_v2/lib/domain/services/promocode_service.dart`
- Related test files
---
### 2.6 Remove V1 Dependencies
**Status:** ⬜ Not Started
**Time:** 1 hour
**Tasks:**
- [ ] Remove deprecated `HttpRepository` from dependency injection
- [ ] Remove deprecated `ApiConfig` usage (or mark clearly deprecated)
- [ ] Update all references to use v2
- [ ] Clean up unused code
**Acceptance Criteria:**
- No v1 dependencies remain in web app
- Code is clean
- No deprecation warnings
---
## 🎯 Phase 3: Feature Implementation
**Priority:** MEDIUM
**Estimated Time:** 12-16 hours
**Dependencies:** Phase 2 complete
### 3.1 Pack Purchase Flow
**Status:** ⬜ Not Started**
**Time:** 6-8 hours
**Tasks:**
- [ ] Create `PurchaseService` using `HttpRepositoryV2`
- [ ] Implement purchase flow:
- Check if pack is owned
- Show "Buy Pack" button if not owned
- Create payment via API v2
- Handle payment redirect
- Verify payment after return
- Update UI to show purchased packs
- [ ] Create purchase UI:
- Purchase confirmation dialog
- Payment redirect handling
- Payment status display
- [ ] Write unit tests
- [ ] Write integration tests
**Acceptance Criteria:**
- Users can purchase packs
- Payment flow works end-to-end
- UI updates correctly after purchase
- Tests cover purchase flow
**Files to Create:**
- `mnemo_cards_web_v2/lib/domain/services/purchase_service.dart`
- `lib/presentation/pages/purchase/purchase_page.dart` (if needed)
- `lib/di/user_scope/modules/purchase_module.dart`
**Files to Modify:**
- `lib/presentation/pages/pack_details/pack_details_page.dart`
- `lib/presentation/widgets/pack_card.dart`
---
### 3.2 Enhanced Subscription Management
**Status:** 🟡 Partial
**Time:** 4-5 hours
**Tasks:**
- [ ] Create subscription page UI
- [ ] Display subscription plans
- [ ] Implement subscription purchase
- [ ] Implement subscription cancellation
- [ ] Show subscription status on ProfilePage
- [ ] Add subscription benefits UI
- [ ] Write tests
**Acceptance Criteria:**
- Subscription page works
- Purchase flow works
- Cancellation works
- UI displays subscription status correctly
**Files to Create:**
- `lib/presentation/pages/subscription/subscription_page.dart`
**Files to Modify:**
- `lib/presentation/pages/profile/profile_page.dart`
- `lib/domain/services/subscription_service.dart`
---
### 3.3 Promocode UI
**Status:** ⬜ Not Started
**Time:** 2-3 hours
**Tasks:**
- [ ] Create promocode input widget
- [ ] Add promocode section to ProfilePage or PurchasePage
- [ ] Implement promocode application flow
- [ ] Show promocode benefits/status
- [ ] Handle promocode errors
- [ ] Write tests
**Acceptance Criteria:**
- Users can enter promocodes
- Promocodes are applied correctly
- Error handling works
- UI feedback is clear
**Files to Create:**
- `lib/presentation/widgets/promocode_input.dart`
**Files to Modify:**
- `lib/presentation/pages/profile/profile_page.dart`
---
## 🎯 Phase 4: Quality & Testing
**Priority:** MEDIUM
**Estimated Time:** 8-10 hours
**Dependencies:** Phase 2-3 complete
### 4.1 Comprehensive Testing
**Status:** ⬜ Not Started
**Time:** 6-8 hours
**Tasks:**
- [ ] Write unit tests for all v2 API endpoints (backend)
- [ ] Write unit tests for `HttpRepositoryV2` (web app)
- [ ] Write integration tests for auth flow
- [ ] Write integration tests for pack browsing
- [ ] Write integration tests for purchase flow
- [ ] Write integration tests for subscription flow
- [ ] Ensure test coverage >80% for all new code
**Acceptance Criteria:**
- All new code has tests
- Test coverage >80%
- All tests pass
---
### 4.2 Fix Remaining Test Failures
**Status:** 🟡 In Progress
**Time:** 1-2 hours
**Tasks:**
- [ ] Fix `test_page_test.dart` (empty file causing compilation errors)
- [ ] Investigate other failing tests
- [ ] Fix all test failures
- [ ] Ensure all tests pass
**Acceptance Criteria:**
- All tests pass
- No compilation errors in tests
---
### 4.3 Code Quality Improvements
**Status:** ⬜ Not Started
**Time:** 2-3 hours
**Tasks:**
- [ ] Run `flutter analyze` and fix all warnings
- [ ] Fix linter errors
- [ ] Improve code documentation
- [ ] Add JSDoc comments to public APIs
- [ ] Refactor any complex code
**Acceptance Criteria:**
- No linter warnings
- Code is well-documented
- Code follows project patterns
---
## 🎯 Phase 5: Additional Features (Lower Priority)
**Priority:** LOW
**Estimated Time:** 12-16 hours
**Dependencies:** Phases 1-4 complete
### 5.1 Vocabulary/Review Page
**Status:** ⬜ Not Started
**Time:** 6-8 hours
**Tasks:**
- [ ] Create `VocabularyPage` in bottom navigation
- [ ] Fetch all learned cards across packs
- [ ] Implement filtering by pack/language
- [ ] Implement search functionality
- [ ] Create review interface
- [ ] Add export functionality
- [ ] Write tests
**Files to Create:**
- `lib/presentation/pages/vocabulary/vocabulary_page.dart`
- `lib/domain/services/vocabulary_service.dart`
- `lib/domain/state/vocabulary_state_manager.dart`
- `lib/di/user_scope/modules/vocabulary_module.dart`
---
### 5.2 Settings Page
**Status:** ⬜ Not Started
**Time:** 2-3 hours
**Tasks:**
- [ ] Create separate `SettingsPage`
- [ ] Move settings from ProfilePage
- [ ] Add theme toggle
- [ ] Add language selection
- [ ] Add sound effects toggle
- [ ] Add notifications settings
- [ ] Implement settings persistence
- [ ] Write tests
**Files to Create:**
- `lib/presentation/pages/settings/settings_page.dart`
- `lib/domain/state/settings_state_manager.dart`
---
### 5.3 Telegram Authentication (Code-based)
**Status:** 🔴 Blocked
**Time:** 8-10 hours
**Tasks:**
- [ ] Design auth flow (code generation, validation, timeout)
- [ ] Add backend endpoints:
- `POST /api/v2/auth/telegram/request` - Request auth code
- `POST /api/v2/auth/telegram/verify` - Verify code and return token
- [ ] Update telegram bot with `/auth` command
- [ ] Implement code generation and storage in bot
- [ ] Add `TelegramAuthService` in web app
- [ ] Create `TelegramAuthPage` UI
- [ ] Integrate with existing `AuthService`
- [ ] Add timeout handling (codes expire after 5 min)
- [ ] Write tests
**Blocker:** Requires backend API endpoints and telegram bot modifications
---
## 🎯 Phase 6: Documentation & Deployment
**Priority:** LOW
**Estimated Time:** 4-6 hours
**Dependencies:** Phases 1-4 complete
### 6.1 API Documentation
**Tasks:**
- [ ] Generate OpenAPI/Swagger documentation for v2
- [ ] Document all v2 endpoints
- [ ] Add request/response examples
- [ ] Document authentication flow
- [ ] Create API migration guide
---
### 6.2 Deployment Preparation
**Tasks:**
- [ ] Update production API URLs
- [ ] Configure CORS for production
- [ ] Set up JWT secret key management
- [ ] Test deployment to staging
- [ ] Create deployment checklist
---
## 📊 Priority Matrix
### 🔴 High Priority (Complete First)
1. Fix JWT Service crypto implementation
2. Complete backend auth API v2
3. Migrate web app services to use v2
4. Implement pack purchase flow
### 🟡 Medium Priority (Complete Next)
1. Complete remaining backend v2 endpoints
2. Implement subscription management UI
3. Comprehensive testing
4. Fix test failures
### 🟢 Low Priority (Complete When Time Allows)
1. Vocabulary/Review page
2. Settings page
3. Telegram authentication
4. API documentation
5. Deployment preparation
---
## 📈 Estimated Timeline
**Phase 1 (Backend v2):** 8-12 hours
**Phase 2 (Web Migration):** 6-8 hours
**Phase 3 (Features):** 12-16 hours
**Phase 4 (Quality):** 8-10 hours
**Phase 5 (Additional Features):** 12-16 hours (optional)
**Phase 6 (Documentation):** 4-6 hours (optional)
**Total Core Work (Phases 1-4):** ~34-46 hours
**Total Including Optional:** ~50-68 hours
---
## 🎯 Success Criteria
The project will be considered complete when:
1. ✅ API v2 is fully implemented on backend
2. ✅ Web app uses API v2 exclusively
3. ✅ All core features work (auth, packs, tests, purchases, subscriptions)
4. ✅ Test coverage >80%
5. ✅ All tests pass
6. ✅ No critical bugs
7. ✅ Code follows project patterns and conventions
---
## 📝 Notes
- **Backward Compatibility:** V1 APIs should remain functional for mobile app
- **Testing:** Write tests as features are implemented, not after
- **Documentation:** Update PROGRESS.md and TODO.md after each major task
- **Code Quality:** Follow clean architecture, yx_scope, yx_state patterns
- **Web Only:** Remember this is a web app - no mobile/macOS features needed
---
**Last Updated:** October 28, 2025