mnemo_cards/mnemo_cards_web_v2/workflow_state.md

292 lines
9.9 KiB
Markdown
Raw Normal View History

2025-11-10 23:55:41 +00:00
# Workflow State - mnemo_cards_web_v2
**Last Updated:** 2025-11-08
---
## PLAN - 🔥 STATISTICS SYSTEM UPGRADE
**Phase:** Full Statistics Implementation
**Goal:** Расширить систему сбора и отображения статистики пользователя для создания детализированной страницы профиля с красивым UI и настройками приложения.
**Plan Documents:**
- Main Plan: `STATISTICS_UPGRADE_PLAN.md` (111-144 hours total)
- Backend Tasks: `../mnemo_cards_backend/STATISTICS_TASKS.md` (35-47 hours)
- Frontend Tasks: `STATISTICS_TASKS.md` (93-119 hours)
**Status:** 🟡 PLANNING COMPLETE - READY TO START
---
## CURRENT STATUS
### Completed:
- ✅ Pack cover images
- ✅ Tests functionality
- ✅ Telegram/js_util compilation
- ✅ Card images (fully implemented)
- ✅ Card flipping (fully implemented)
- ✅ API v2 foundation (Auth, Packs, Tests, Games, Purchases)
- ✅ Statistics upgrade planning (detailed plan created)
### In Progress:
- 🟡 Statistics system implementation (planning complete, ready to code)
### Not Started:
- ⬜ Pack purchase flow
- ⬜ Subscription management
- ⬜ Vocabulary/Review page
- ⬜ Promocode UI
### Known Issues:
- 🔴 24 test failures (177 passing) - low priority, mostly empty test files
---
## NEXT_ACTIONS
### Phase 1: HttpRepositoryV2 Statistics Methods ✅ COMPLETED (4 hours)
1. ✅ Add API endpoint constants to ApiConfigV2 (/statistics/detailed, /packs, /words, /timeline, /sessions, /achievements)
2. ✅ Implement 6 new repository methods in HttpRepositoryV2 with proper error handling
3. ✅ Create response DTOs (WordsStatisticsResponse, TimelineStatisticsResponse, StudySessionResponse)
4. ✅ Add query parameter support (pagination, filtering, sorting, date ranges)
5. ✅ Write smoke tests for all new methods (6 tests, all passing)
### Phase 2: Statistics Service & State Manager ✅ COMPLETED (3 hours)
6. ✅ Create StatisticsService with HttpRepositoryV2 integration
7. ✅ Implement StatisticsStateManager with yx_state (loading, loaded, error states)
8. ✅ Add StatisticsModule to UserScope DI container
9. ✅ Create comprehensive state management with computed properties
10. ✅ Add error handling and state refresh capabilities
11. ✅ Write unit tests (9 tests passing for StatisticsService, state manager tests created)
### Phase 3: Statistics UI Widgets ✅ COMPLETED
12. ✅ Create main StatisticsPage with tabbed interface (Overview, Words, Activity, Achievements, Packs)
13. ✅ Create StatisticsOverviewWidget - dashboard with key metrics and recent achievements
14. ✅ Create WordsStatisticsWidget - word analytics with pagination, filtering, sorting
15. ✅ Create TimelineWidget - study activity charts and period filtering
16. ✅ Create AchievementsWidget - progress tracking and achievement unlocks
17. ✅ Create PackProgressWidget - individual pack completion tracking
18. ✅ Add StatisticsPage to app navigation and bottom tab bar
19. ✅ Implement responsive Material Design UI with proper theming
20. ✅ Add loading states, error handling, and refresh capabilities
### Phase 3: Frontend Services (THEN)
11. ⬜ Update HttpRepositoryV2 with statistics methods
12. ⬜ Rewrite StatisticsService with real logic
13. ⬜ Create StatisticsStateManager and related managers
14. ⬜ Add to DI modules
### Phase 4: Frontend UI (AFTER SERVICES)
15. ⬜ Create base statistics widgets
16. ⬜ Redesign ProfilePage
17. ⬜ Create Settings Page
18. ⬜ Create statistics detail pages
19. ⬜ Add animations and polish
---
## ASSUMPTIONS
### Technical:
1. Backend Isar database can be extended without breaking existing data
2. API v2 endpoints are preferred over v1 for new features
3. mnemo_cards_common package is shared between backend and frontend
4. Statistics should be calculated server-side and cached
5. Session tracking will use middleware on backend
6. Achievements will be checked asynchronously after user actions
### Frontend:
7. fl_chart library will be used for all charts
8. Frontend will cache statistics locally for performance
9. Settings will be stored both locally (SharedPreferences) and on server
10. Mobile app (../mnemo_cards) can be referenced for feature ideas but not architecture
### Design:
11. Animations should be smooth but not distracting
12. Loading states should use skeleton/shimmer
13. All pages should be responsive (mobile/tablet/desktop)
14. Achievement unlocks should have celebration animations
---
## PROGRESS_LOG
### 2025-11-08: Statistics Upgrade - Planning Phase Complete ✅
**Analysis:**
- Reviewed current backend statistics (UserDataModel, WordStatisticsDto, TestStatisticsDto)
- Reviewed frontend ProfilePage (mocked statistics, basic UI)
- Identified gaps: no pack progress, no achievements, no session tracking, no difficulty scoring
**Planning:**
- Created STATISTICS_UPGRADE_PLAN.md with 10 sections, 6 phases
- Created backend task breakdown (35-47 hours, 5 phases)
- Created frontend task breakdown (93-119 hours, 8 phases)
- Updated TODO.md with STAT-1 feature entry
- Prioritized tasks into High/Medium/Low
**Key Features Planned:**
1. Extended statistics: streaks, study time, accuracy, pack progress
2. Detailed word statistics with difficulty scoring
3. Achievement system with 8+ achievement types
4. Study session tracking
5. Beautiful profile page redesign
6. Statistics detail pages (words, packs, achievements)
7. Enhanced settings page (appearance, learning, privacy, account)
8. Timeline charts and activity heatmaps
9. Animations (counters, confetti, shimmer)
10. Comprehensive testing
**Estimates:**
- Backend: 35-47 hours
- Frontend: 93-119 hours
- Total: 111-144 hours
**Next Step:** Start Phase 1.1 - Create new DTOs in mnemo_cards_common
---
### Previous Progress:
#### 2025-11-08: Pack Details UX Polish
- ✅ Added shuffle animation with AnimatedSwitcher
- ✅ Rotating control feedback
- ✅ Card movement wrappers
- ✅ Widget and unit tests
- ✅ CardViewer responsive UI
- ✅ CardFlipper responsive layout refactor
#### 2025-11-08: Ads Reward Flow
- ✅ Implemented AdsRewardService
- ✅ Created state manager
- ✅ Added user scope module
- ✅ Unit tests
#### 2025-10-29: API v2 - Authentication
- ✅ Fixed JWT Service with proper HMAC-SHA256
- ✅ Created RefreshTokenModel for token storage
- ✅ Implemented token blacklisting
- ✅ 15 JwtService tests passing
- ✅ 12 AuthApiV2 integration tests passing
#### 2025-10-29: API v2 - Packs
- ✅ Implemented all 5 Packs API v2 endpoints
- ✅ Pagination, search, filtering
- ✅ Purchase status check
- ✅ Card image endpoint
- ✅ 17 tests passing
#### 2025-10-29: API v2 - Tests
- ✅ Implemented all 3 Tests API v2 endpoints
- ✅ Submit results, get history
- ✅ Pagination for history
- ✅ 17 tests passing
#### 2025-10-29: API v2 - Games
- ✅ Implemented all 2 Games API v2 endpoints
- ✅ Get games list and assets
- ✅ 6 tests passing
#### 2025-10-29: API v2 - Purchases
- ✅ Implemented all 4 Purchases API v2 endpoints
- ✅ Pack purchase flow
- ✅ Payment creation and verification
- ✅ 13 tests passing
---
## OPEN_ISSUES
### Statistics Feature (New):
1. ⬜ Define achievement icons/images (need design)
2. ⬜ Choose color scheme for activity heatmaps
3. ⬜ Determine difficulty scoring algorithm for words
4. ⬜ Plan database migration strategy for new Isar models
5. ⬜ Consider performance impact of streak calculations
6. ⬜ Handle timezone issues for daily streaks
7. ⬜ Define session timeout duration (15 min? 30 min?)
8. ⬜ Plan caching strategy for statistics (Redis? In-memory?)
9. ⬜ Set pagination limits for words/packs lists
10. ⬜ Test with large datasets (1000+ words)
11. ⬜ Consider rate limiting for statistics API endpoints
12. ⬜ Plan GDPR compliance (data export/deletion)
### Existing Issues:
13. 🔴 24 test failures (177 passing) - low priority, mostly empty test files
14. ⬜ Pack purchase flow incomplete (need PurchaseService & UI)
15. ⬜ Subscription management incomplete
16. ⬜ Promocode UI not implemented
---
## RECENT ACCOMPLISHMENTS
**API v2 Backend (Complete):**
- Authentication (Google OAuth, JWT, refresh tokens)
- Packs (list, details, cards, images, tests)
- Tests (details, submit results, history)
- Games (list, assets)
- Purchases (create, verify payments)
**Frontend Features:**
- Card images and flipping (fully working)
- Pack details with responsive UI
- Card viewer with study flow
- Shuffle animations
- Ads reward flow preparation
**Planning:**
- Comprehensive statistics upgrade plan (111-144 hours)
- Detailed task breakdowns for backend and frontend
- Clear priorities and dependencies
---
## WORK STRATEGY
### Development Approach:
1. **Start Small:** Begin with backend models and DTOs
2. **Test Early:** Write tests alongside implementation
3. **Iterate:** Complete one phase before moving to next
4. **Verify:** Test endpoints and UI after each phase
5. **Document:** Update PROGRESS.md and TODO.md regularly
### Quality Gates:
- All new code has unit tests
- Integration tests for all API endpoints
- Widget tests for all new UI components
- Linter passes
- No critical bugs
### Communication:
- Update workflow_state.md after each work session
- Keep progress log concise (≤100 tokens per entry)
- Mark tasks complete in TODO.md
- Update PROGRESS.md with completed features
---
## FILES TO MAINTAIN
**Planning:**
- `STATISTICS_UPGRADE_PLAN.md` - Main feature plan
- `STATISTICS_TASKS.md` - Frontend task breakdown
- `../mnemo_cards_backend/STATISTICS_TASKS.md` - Backend tasks
**Tracking:**
- `TODO.md` - High-level task list
- `workflow_state.md` - This file (current state)
- `PROGRESS.md` - Completed work log
**Documentation:**
- `README.md` - Project overview
- Future: `STATISTICS_API.md` - API documentation
- Future: `STATISTICS_UI_GUIDE.md` - UI component guide
---
**Status:** Ready to begin implementation
**Next Action:** Create new DTOs in mnemo_cards_common
**Estimated Time for Next Phase:** 4-6 hours