From dbf28ecadd1e025670ddb200a846440ad88d3e3d Mon Sep 17 00:00:00 2001 From: AI Agent Date: Fri, 21 Nov 2025 23:29:11 +0000 Subject: [PATCH 1/3] plan(web_v2): Update task list Generated by: Planning Agent Timestamp: 2025-11-21T23:29:11.088685+00:00 Component: web_v2 --- ai_docs/agent/web_v2/task_list.json | 261 +++++++++++++++++++++++++++- 1 file changed, 257 insertions(+), 4 deletions(-) diff --git a/ai_docs/agent/web_v2/task_list.json b/ai_docs/agent/web_v2/task_list.json index 751acba..fca2e47 100644 --- a/ai_docs/agent/web_v2/task_list.json +++ b/ai_docs/agent/web_v2/task_list.json @@ -1,8 +1,261 @@ { "project": "mnemo_cards_web_v2", "component": "web_v2", - "version": "1.1", - "generated_at": "2025-11-21T11:51:47.671045+00:00", + "version": "1.2", + "generated_at": "2025-01-21T23:27:35.316993+00:00", "generated_by": "planning_agent", - "tasks": [] -} \ No newline at end of file + "tasks": [ + { + "id": "WEB-001", + "title": "Complete PurchaseService Migration Verification", + "priority": "high", + "status": "pending", + "estimated_hours": 2, + "description": "Verify that PurchaseService is fully migrated to HttpRepositoryV2 and all API calls use v2 endpoints. Update any remaining v1 dependencies and ensure all tests pass with v2 API.", + "acceptance_criteria": [ + "PurchaseService uses only HttpRepositoryV2 (no v1 dependencies)", + "All API calls in PurchaseService use v2 endpoints", + "All existing PurchaseService tests pass", + "No deprecated v1 code remains in PurchaseService", + "Linter passes with zero warnings" + ], + "dependencies": [], + "files_to_modify": [ + "mnemo_cards_web_v2/lib/domain/services/purchases_service.dart", + "mnemo_cards_web_v2/test/domain/services/purchases_service_test.dart" + ], + "component": "web_v2" + }, + { + "id": "WEB-002", + "title": "Integrate Adsgram SDK into AdsRewardService", + "priority": "high", + "status": "pending", + "estimated_hours": 3, + "description": "Integrate the existing Adsgram SDK wrapper (adsgram_stub.dart) into AdsRewardService to show rewarded ads. Handle ad lifecycle (loading, showing, completion, errors) and connect to the service's acquireReward method.", + "acceptance_criteria": [ + "AdsRewardService can show rewarded ads using Adsgram SDK", + "Ad loading state is properly managed", + "Ad completion triggers acquireReward call", + "Ad errors are handled gracefully with user feedback", + "Ad lifecycle is properly managed (show, complete, error)", + "Unit tests cover ad show success and failure scenarios (5+ tests)" + ], + "dependencies": [], + "files_to_modify": [ + "mnemo_cards_web_v2/lib/domain/services/ads_reward_service.dart", + "mnemo_cards_web_v2/test/domain/services/ads_reward_service_test.dart" + ], + "component": "web_v2" + }, + { + "id": "WEB-003", + "title": "Create AdsRewardButton Widget", + "priority": "high", + "status": "pending", + "estimated_hours": 2, + "description": "Create a reusable AdsRewardButton widget that shows 'Unlock by watching ad' CTA when adsKey is present. The button should integrate with AdsRewardService, show loading states, handle errors, and refresh pack/user data after successful reward.", + "acceptance_criteria": [ + "AdsRewardButton widget created with proper styling", + "Button shows when adsKey is present in pack/product", + "Button shows loading state during ad playback", + "Button handles errors with user-friendly messages", + "Button refreshes pack/user purchases after successful reward", + "Widget tests cover all states (5+ tests)" + ], + "dependencies": ["WEB-002"], + "files_to_modify": [ + "mnemo_cards_web_v2/lib/presentation/widgets/ads_reward_button.dart", + "mnemo_cards_web_v2/test/presentation/widgets/ads_reward_button_test.dart" + ], + "component": "web_v2" + }, + { + "id": "WEB-004", + "title": "Add Ads Reward CTA to PackDetailsPage", + "priority": "high", + "status": "pending", + "estimated_hours": 2, + "description": "Integrate AdsRewardButton into PackDetailsPage. Show the 'Unlock by watching ad' button when pack has adsKey. Position it appropriately near purchase options and ensure it works with existing purchase flow.", + "acceptance_criteria": [ + "AdsRewardButton appears in PackDetailsPage when pack has adsKey", + "Button is positioned appropriately in UI", + "Button works correctly with existing purchase flow", + "Pack data refreshes after successful ad reward", + "User can see updated pack access status after reward" + ], + "dependencies": ["WEB-003"], + "files_to_modify": [ + "mnemo_cards_web_v2/lib/presentation/pages/pack_details/pack_details_page.dart" + ], + "component": "web_v2" + }, + { + "id": "WEB-005", + "title": "Add Buy Pack Button to PackDetailsPage", + "priority": "high", + "status": "pending", + "estimated_hours": 2, + "description": "Add a 'Buy Pack' button to PackDetailsPage that navigates to PurchasePage. The button should only show for unpurchased packs and integrate with the existing purchase status checking.", + "acceptance_criteria": [ + "'Buy Pack' button appears in PackDetailsPage for unpurchased packs", + "Button navigates to PurchasePage with correct packId", + "Button is hidden for already purchased packs", + "Button styling matches app design system", + "Button works correctly with purchase status checking" + ], + "dependencies": [], + "files_to_modify": [ + "mnemo_cards_web_v2/lib/presentation/pages/pack_details/pack_details_page.dart" + ], + "component": "web_v2" + }, + { + "id": "WEB-006", + "title": "Create SubscriptionPage UI", + "priority": "medium", + "status": "pending", + "estimated_hours": 3, + "description": "Create SubscriptionPage with subscription plans display, plan comparison, purchase flow, current subscription status, and management options (cancel/renew). Use existing SubscriptionService and SubscriptionPlansWidget as foundation.", + "acceptance_criteria": [ + "SubscriptionPage created with Material Design UI", + "Subscription plans are displayed correctly", + "Plan comparison and features are shown", + "Purchase flow for subscriptions works", + "Current subscription status is displayed", + "Subscription cancellation flow works", + "Page is responsive (mobile/tablet/desktop)", + "Widget tests cover main UI states (6+ tests)" + ], + "dependencies": ["backend:API-007"], + "files_to_modify": [ + "mnemo_cards_web_v2/lib/presentation/pages/subscription/subscription_page.dart", + "mnemo_cards_web_v2/test/presentation/pages/subscription/subscription_page_test.dart" + ], + "component": "web_v2" + }, + { + "id": "WEB-007", + "title": "Add Subscription Status to ProfilePage", + "priority": "medium", + "status": "pending", + "estimated_hours": 2, + "description": "Add subscription status display to ProfilePage showing current subscription plan, expiration date, and quick link to SubscriptionPage. Use SubscriptionService to fetch status.", + "acceptance_criteria": [ + "Subscription status displayed in ProfilePage", + "Current plan name and expiration date shown", + "Link to SubscriptionPage works correctly", + "Status updates when subscription changes", + "Loading and error states handled properly" + ], + "dependencies": ["WEB-006"], + "files_to_modify": [ + "mnemo_cards_web_v2/lib/presentation/pages/profile/profile_page.dart" + ], + "component": "web_v2" + }, + { + "id": "WEB-008", + "title": "Create PromocodeInput Widget", + "priority": "medium", + "status": "pending", + "estimated_hours": 2, + "description": "Create a reusable PromocodeInput widget with text field, validation, apply button, and discount display. The widget should use PromocodeService for validation and application.", + "acceptance_criteria": [ + "PromocodeInput widget created with text field and apply button", + "Promocode validation works using PromocodeService", + "Discount amount is displayed after successful application", + "Error messages shown for invalid/expired promocodes", + "Widget is reusable and properly styled", + "Widget tests cover validation and application (5+ tests)" + ], + "dependencies": ["backend:API-008"], + "files_to_modify": [ + "mnemo_cards_web_v2/lib/presentation/widgets/promocode_input.dart", + "mnemo_cards_web_v2/test/presentation/widgets/promocode_input_test.dart" + ], + "component": "web_v2" + }, + { + "id": "WEB-009", + "title": "Integrate PromocodeInput into PurchasePage", + "priority": "medium", + "status": "pending", + "estimated_hours": 2, + "description": "Add PromocodeInput widget to PurchasePage. Apply promocode discount to pack purchase price and pass promocode to payment creation if applicable.", + "acceptance_criteria": [ + "PromocodeInput appears in PurchasePage", + "Promocode discount is applied to purchase price", + "Discounted price is displayed correctly", + "Promocode is passed to payment creation", + "Promocode validation works in purchase flow" + ], + "dependencies": ["WEB-008"], + "files_to_modify": [ + "mnemo_cards_web_v2/lib/presentation/pages/purchase/purchase_page.dart" + ], + "component": "web_v2" + }, + { + "id": "WEB-010", + "title": "Integrate PromocodeInput into SubscriptionPage", + "priority": "medium", + "status": "pending", + "estimated_hours": 2, + "description": "Add PromocodeInput widget to SubscriptionPage. Apply promocode discount to subscription purchase price and pass promocode to subscription purchase if applicable.", + "acceptance_criteria": [ + "PromocodeInput appears in SubscriptionPage", + "Promocode discount is applied to subscription price", + "Discounted price is displayed correctly", + "Promocode is passed to subscription purchase", + "Promocode validation works in subscription flow" + ], + "dependencies": ["WEB-006", "WEB-008"], + "files_to_modify": [ + "mnemo_cards_web_v2/lib/presentation/pages/subscription/subscription_page.dart" + ], + "component": "web_v2" + }, + { + "id": "WEB-011", + "title": "Fix Empty Test Files", + "priority": "medium", + "status": "pending", + "estimated_hours": 2, + "description": "Fix 24 failing tests that are mostly empty test files. Investigate each failing test, add proper test implementations or remove obsolete tests, and ensure all tests compile and pass.", + "acceptance_criteria": [ + "All 24 failing tests are fixed or removed", + "All tests compile without errors", + "All tests pass successfully", + "No empty test files remain", + "Test coverage is maintained or improved" + ], + "dependencies": [], + "files_to_modify": [ + "mnemo_cards_web_v2/test/**/*_test.dart" + ], + "component": "web_v2" + }, + { + "id": "WEB-012", + "title": "Verify All API v2 Migrations Complete", + "priority": "high", + "status": "pending", + "estimated_hours": 2, + "description": "Final verification that all services are migrated to API v2. Check all services use HttpRepositoryV2, all API calls use v2 endpoints, no v1 dependencies remain, and all functionality works with v2 API.", + "acceptance_criteria": [ + "All services use HttpRepositoryV2 (no v1 dependencies)", + "All API calls use v2 endpoints", + "No deprecated v1 code remains in codebase", + "All tests pass with v2 API", + "All functionality verified working with v2", + "Linter passes with zero warnings" + ], + "dependencies": ["WEB-001"], + "files_to_modify": [ + "mnemo_cards_web_v2/lib/domain/services/**/*.dart" + ], + "component": "web_v2" + } + ] +} From bbddbe6d15ca2f74f7fa9e3134841dcfaa7101b0 Mon Sep 17 00:00:00 2001 From: AI Agent Date: Fri, 21 Nov 2025 23:30:28 +0000 Subject: [PATCH 2/3] plan(backend): Update task list Generated by: Planning Agent Timestamp: 2025-11-21T23:30:28.060034+00:00 Component: backend --- ai_docs/agent/backend/task_list.json | 238 ++++++++++++++++++++++++++- 1 file changed, 235 insertions(+), 3 deletions(-) diff --git a/ai_docs/agent/backend/task_list.json b/ai_docs/agent/backend/task_list.json index 353ffce..a39af83 100644 --- a/ai_docs/agent/backend/task_list.json +++ b/ai_docs/agent/backend/task_list.json @@ -2,7 +2,239 @@ "project": "mnemo_cards_backend", "component": "backend", "version": "1.0", - "generated_at": "2025-11-21T01:00:13.845013+00:00", + "generated_at": "2025-11-21T23:29:11.898583+00:00", "generated_by": "planning_agent", - "tasks": [ ] -} \ No newline at end of file + "tasks": [ + { + "id": "BACKEND-001", + "title": "Write unit tests for statistics models", + "priority": "high", + "status": "pending", + "estimated_hours": 3.0, + "description": "Create comprehensive unit tests for all statistics-related Isar models (PackProgressModel, AchievementModel, StudySessionModel) to ensure proper serialization, deserialization, and data integrity. Tests should cover edge cases, null handling, and JSON conversion.", + "acceptance_criteria": [ + "Unit tests created for PackProgressModel with >90% coverage", + "Unit tests created for AchievementModel with >90% coverage", + "Unit tests created for StudySessionModel with >90% coverage", + "All tests pass with proper assertions for serialization/deserialization", + "Edge cases covered (null values, empty collections, boundary conditions)", + "15+ test cases total across all models" + ], + "dependencies": [], + "files_to_modify": [ + "mnemo_cards_backend/test/models/pack_progress_model_test.dart", + "mnemo_cards_backend/test/models/achievement_model_test.dart", + "mnemo_cards_backend/test/models/study_session_model_test.dart" + ], + "component": "backend" + }, + { + "id": "BACKEND-002", + "title": "Write integration tests for TasksApiV2", + "priority": "high", + "status": "pending", + "estimated_hours": 4.0, + "description": "Create comprehensive integration tests for TasksApiV2 covering all endpoints: getTasks, getTask, startTask, completeTask, getUserProgress, and getTaskCategories. Tests should verify authentication, filtering, pagination, status transitions, reward distribution, and error handling.", + "acceptance_criteria": [ + "Integration tests created for all 6 TasksApiV2 endpoints", + "Tests cover authenticated and unauthenticated scenarios", + "Tests verify filtering (type, difficulty, status, tags)", + "Tests verify pagination (limit, offset)", + "Tests verify task status transitions (available -> in_progress -> completed)", + "Tests verify reward distribution on task completion", + "Tests verify error handling (404, 400, 401, 500)", + "Tests verify user progress tracking and updates", + "20+ test cases total, all passing" + ], + "dependencies": [], + "files_to_modify": [ + "mnemo_cards_backend/test/api/v2/tasks_api_v2_test.dart" + ], + "component": "backend" + }, + { + "id": "BACKEND-003", + "title": "Complete statistics integration tests coverage", + "priority": "high", + "status": "pending", + "estimated_hours": 3.0, + "description": "Review and complete any missing integration tests for statistics API endpoints. Ensure all endpoints have comprehensive test coverage including edge cases, error scenarios, and data validation. Verify tests align with actual API behavior.", + "acceptance_criteria": [ + "All statistics endpoints have integration tests", + "Tests cover edge cases (empty data, null values, invalid parameters)", + "Tests verify authentication requirements", + "Tests verify response format and data structure", + "Tests verify error handling for all error scenarios", + "Integration test coverage >85% for statistics endpoints", + "All existing tests pass, no regressions" + ], + "dependencies": [], + "files_to_modify": [ + "mnemo_cards_backend/test/api/v2/users_api_v2_statistics_test.dart" + ], + "component": "backend" + }, + { + "id": "BACKEND-004", + "title": "Update OpenAPI specification for statistics endpoints", + "priority": "medium", + "status": "pending", + "estimated_hours": 2.0, + "description": "Update the OpenAPI specification file to include all new statistics endpoints with proper request/response schemas, parameters, authentication requirements, and example responses. Ensure the spec accurately reflects the current API implementation.", + "acceptance_criteria": [ + "OpenAPI spec includes all statistics endpoints with correct paths", + "Request/response schemas match actual DTOs", + "Query parameters documented with types and descriptions", + "Authentication requirements specified (Bearer token)", + "Example responses provided for success and error cases", + "Error response schemas documented (400, 401, 404, 500)", + "OpenAPI spec validates without errors" + ], + "dependencies": ["BACKEND-003"], + "files_to_modify": [ + "mnemo_cards_backend/public/open_api.yaml" + ], + "component": "backend" + }, + { + "id": "BACKEND-005", + "title": "Create STATISTICS_API.md documentation", + "priority": "medium", + "status": "pending", + "estimated_hours": 2.5, + "description": "Create comprehensive API documentation for the statistics system including endpoint descriptions, request/response examples, authentication requirements, error codes, and usage patterns. Document the automatic tracking system and achievement mechanics.", + "acceptance_criteria": [ + "STATISTICS_API.md created with complete endpoint documentation", + "All 6 statistics endpoints documented with examples", + "Request/response formats clearly explained", + "Authentication and authorization requirements documented", + "Error codes and handling documented", + "Automatic tracking system explained", + "Achievement system mechanics documented", + "Code examples provided for common use cases" + ], + "dependencies": ["BACKEND-004"], + "files_to_modify": [ + "mnemo_cards_backend/STATISTICS_API.md" + ], + "component": "backend" + }, + { + "id": "BACKEND-006", + "title": "Improve task creation and management mechanism", + "priority": "high", + "status": "pending", + "estimated_hours": 3.0, + "description": "Enhance the tasks system by adding better task creation validation, expiration handling, and status management. Implement automatic task expiration checks, validate task data on creation, and improve the task lifecycle management. This addresses the requirement to improve task creation and execution mechanism.", + "acceptance_criteria": [ + "Task expiration validation implemented (expired tasks marked inactive)", + "Task creation validation added (required fields, valid dates, reward validation)", + "Automatic task status updates based on expiration dates", + "Task lifecycle properly managed (available -> in_progress -> completed)", + "Error handling improved for invalid task operations", + "Unit tests added for validation logic (10+ tests)", + "Integration tests verify expiration handling" + ], + "dependencies": ["BACKEND-002"], + "files_to_modify": [ + "mnemo_cards_backend/lib/api/v2/tasks_api_v2.dart", + "mnemo_cards_backend/test/api/v2/tasks_api_v2_test.dart" + ], + "component": "backend" + }, + { + "id": "BACKEND-007", + "title": "Add admin API for task management", + "priority": "medium", + "status": "pending", + "estimated_hours": 4.0, + "description": "Create admin-only API endpoints for task management: create tasks, update tasks, delete tasks, and manage task availability. This allows administrators to dynamically create and manage tasks without code changes. Include proper authorization checks and validation.", + "acceptance_criteria": [ + "POST /api/v2/admin/tasks endpoint for creating tasks", + "PUT /api/v2/admin/tasks/ endpoint for updating tasks", + "DELETE /api/v2/admin/tasks/ endpoint for deleting tasks", + "PATCH /api/v2/admin/tasks//activate endpoint for toggling availability", + "All endpoints require admin authentication", + "Proper validation for task data (required fields, date ranges, rewards)", + "Comprehensive integration tests (15+ test cases)", + "Error handling for unauthorized access, invalid data, not found" + ], + "dependencies": ["BACKEND-006"], + "files_to_modify": [ + "mnemo_cards_backend/lib/api/v2/admin_tasks_api_v2.dart", + "mnemo_cards_backend/test/api/v2/admin_tasks_api_v2_test.dart", + "mnemo_cards_backend/lib/api/mnemo_shelf.dart" + ], + "component": "backend" + }, + { + "id": "BACKEND-008", + "title": "Update PROGRESS.md and TODO.md with completed work", + "priority": "low", + "status": "pending", + "estimated_hours": 1.5, + "description": "Update PROGRESS.md with completed statistics system work and update TODO.md to reflect current project state. Mark completed items, add new priorities, and ensure documentation is current.", + "acceptance_criteria": [ + "PROGRESS.md updated with statistics system completion", + "All completed statistics tasks marked in PROGRESS.md", + "TODO.md updated with current priorities", + "Completed items marked in TODO.md", + "New tasks added to TODO.md if needed", + "Documentation is accurate and up-to-date" + ], + "dependencies": ["BACKEND-001", "BACKEND-003", "BACKEND-005"], + "files_to_modify": [ + "mnemo_cards_backend/PROGRESS.md", + "mnemo_cards_backend/TODO.md" + ], + "component": "backend" + }, + { + "id": "BACKEND-009", + "title": "Add task execution tracking and analytics", + "priority": "medium", + "status": "pending", + "estimated_hours": 3.5, + "description": "Enhance task execution tracking by adding analytics endpoints to track task completion rates, popular tasks, user engagement metrics, and reward distribution statistics. This helps understand task system usage and effectiveness.", + "acceptance_criteria": [ + "GET /api/v2/admin/tasks/analytics endpoint for task statistics", + "Analytics include: completion rates, popular tasks, average completion time", + "User engagement metrics (active users, task starts vs completions)", + "Reward distribution statistics", + "Proper admin authentication required", + "Integration tests for analytics endpoint (8+ test cases)", + "Response includes aggregated data with proper formatting" + ], + "dependencies": ["BACKEND-007"], + "files_to_modify": [ + "mnemo_cards_backend/lib/api/v2/admin_tasks_api_v2.dart", + "mnemo_cards_backend/test/api/v2/admin_tasks_api_v2_test.dart" + ], + "component": "backend" + }, + { + "id": "BACKEND-010", + "title": "Improve task reward distribution system", + "priority": "medium", + "status": "pending", + "estimated_hours": 2.5, + "description": "Enhance the reward distribution system to properly integrate with user XP and coins. Ensure rewards are correctly added to user accounts, validate reward amounts, and add proper transaction handling. Verify rewards are persisted correctly.", + "acceptance_criteria": [ + "Reward distribution properly updates user XP and coins", + "Rewards are validated before distribution (positive amounts, valid types)", + "Transaction handling ensures atomicity (all-or-nothing)", + "User balance updates are persisted correctly", + "Achievement rewards properly unlock achievements", + "Integration tests verify reward distribution (10+ test cases)", + "Error handling for invalid rewards and failed transactions" + ], + "dependencies": ["BACKEND-002"], + "files_to_modify": [ + "mnemo_cards_backend/lib/api/v2/tasks_api_v2.dart", + "mnemo_cards_backend/lib/user/user_manager.dart", + "mnemo_cards_backend/test/api/v2/tasks_api_v2_test.dart" + ], + "component": "backend" + } + ] +} From 42c73a25b0616ee5af8eba33cd7fbd22d20b1fa6 Mon Sep 17 00:00:00 2001 From: AI Agent Date: Fri, 21 Nov 2025 23:31:24 +0000 Subject: [PATCH 3/3] plan(common): Update task list Generated by: Planning Agent Timestamp: 2025-11-21T23:31:24.905213+00:00 Component: common --- ai_docs/agent/common/task_list.json | 205 +++++++++++++++++++++++++++- 1 file changed, 202 insertions(+), 3 deletions(-) diff --git a/ai_docs/agent/common/task_list.json b/ai_docs/agent/common/task_list.json index 2b8ece8..fd543f2 100644 --- a/ai_docs/agent/common/task_list.json +++ b/ai_docs/agent/common/task_list.json @@ -2,8 +2,207 @@ "project": "mnemo_cards_common", "component": "common", "version": "1.0", - "generated_at": null, + "generated_at": "2025-01-21T23:30:28.782543+00:00", "generated_by": "planning_agent", - "tasks": [] + "tasks": [ + { + "id": "COMMON-001", + "title": "Write comprehensive README documentation", + "priority": "medium", + "status": "pending", + "estimated_hours": 2.0, + "description": "Replace the TODO template in README.md with comprehensive documentation. Include package description, features list, usage examples, and API documentation for main DTOs and utilities. Document the package structure and how to use it in other components.", + "acceptance_criteria": [ + "README.md contains clear package description", + "All main features are documented with examples", + "Usage examples for DTOs and utilities are included", + "Package structure is explained", + "Getting started section is complete", + "No TODO placeholders remain" + ], + "dependencies": [], + "files_to_modify": [ + "mnemo_cards_common/README.md" + ], + "component": "common" + }, + { + "id": "COMMON-002", + "title": "Update CHANGELOG and LICENSE files", + "priority": "low", + "status": "pending", + "estimated_hours": 1.0, + "description": "Fill out the CHANGELOG.md with initial release information and add proper LICENSE file content. Use standard open-source license (MIT or Apache 2.0) based on project preferences.", + "acceptance_criteria": [ + "CHANGELOG.md contains initial release entry", + "LICENSE file has proper license text", + "No TODO placeholders remain in either file", + "License matches project standards" + ], + "dependencies": [], + "files_to_modify": [ + "mnemo_cards_common/CHANGELOG.md", + "mnemo_cards_common/LICENSE" + ], + "component": "common" + }, + { + "id": "COMMON-003", + "title": "Create unit tests for utility functions", + "priority": "high", + "status": "pending", + "estimated_hours": 3.0, + "description": "Create comprehensive unit tests for utility functions in utils.dart, json_helper.dart, iterable_helper.dart, and token_generator.dart. Test all extension methods, edge cases, and error handling.", + "acceptance_criteria": [ + "Test file created: test/utils/utils_test.dart", + "Test file created: test/utils/json_helper_test.dart", + "Test file created: test/utils/iterable_helper_test.dart", + "Test file created: test/utils/token_generator_test.dart", + "All extension methods have test coverage", + "Edge cases and error scenarios are tested", + "Test coverage >80% for utility functions", + "All tests pass" + ], + "dependencies": [], + "files_to_modify": [ + "mnemo_cards_common/test/utils/utils_test.dart", + "mnemo_cards_common/test/utils/json_helper_test.dart", + "mnemo_cards_common/test/utils/iterable_helper_test.dart", + "mnemo_cards_common/test/utils/token_generator_test.dart" + ], + "component": "common" + }, + { + "id": "COMMON-004", + "title": "Create unit tests for DTO serialization", + "priority": "high", + "status": "pending", + "estimated_hours": 4.0, + "description": "Create unit tests for critical DTOs to ensure proper JSON serialization/deserialization. Focus on UserDto, CardPackDto, GameDto, SubscriptionPlanDto, and PaymentDto. Test fromJson, toJson, edge cases, and null handling.", + "acceptance_criteria": [ + "Test file created: test/dtos/user/user_dto_test.dart", + "Test file created: test/dtos/packs/card_pack_dto_test.dart", + "Test file created: test/dtos/games/game_dto_test.dart", + "Test file created: test/dtos/subscription/subscription_plan_dto_test.dart", + "Test file created: test/dtos/payment/payment_dto_test.dart", + "All DTOs test fromJson and toJson round-trip", + "Null handling is tested", + "Edge cases (empty lists, null values) are covered", + "Test coverage >80% for tested DTOs", + "All tests pass" + ], + "dependencies": [], + "files_to_modify": [ + "mnemo_cards_common/test/dtos/user/user_dto_test.dart", + "mnemo_cards_common/test/dtos/packs/card_pack_dto_test.dart", + "mnemo_cards_common/test/dtos/games/game_dto_test.dart", + "mnemo_cards_common/test/dtos/subscription/subscription_plan_dto_test.dart", + "mnemo_cards_common/test/dtos/payment/payment_dto_test.dart" + ], + "component": "common" + }, + { + "id": "COMMON-005", + "title": "Add validation methods to critical DTOs", + "priority": "medium", + "status": "pending", + "estimated_hours": 3.0, + "description": "Add validation methods to critical DTOs (UserDto, CardPackDto, PaymentDto, SubscriptionPlanDto) to ensure data integrity. Create isValid() methods that check required fields, ranges, and business rules.", + "acceptance_criteria": [ + "UserDto has isValid() method", + "CardPackDto has isValid() method", + "PaymentDto has isValid() method", + "SubscriptionPlanDto has isValid() method", + "Validation methods check required fields", + "Validation methods check value ranges where applicable", + "Unit tests created for all validation methods", + "All validation tests pass" + ], + "dependencies": ["COMMON-004"], + "files_to_modify": [ + "mnemo_cards_common/lib/src/dtos/user/user_dto.dart", + "mnemo_cards_common/lib/src/dtos/packs/card_pack_dto.dart", + "mnemo_cards_common/lib/src/dtos/payment/payment_dto.dart", + "mnemo_cards_common/lib/src/dtos/subscription/subscription_plan_dto.dart", + "mnemo_cards_common/test/dtos/user/user_dto_test.dart", + "mnemo_cards_common/test/dtos/packs/card_pack_dto_test.dart", + "mnemo_cards_common/test/dtos/payment/payment_dto_test.dart", + "mnemo_cards_common/test/dtos/subscription/subscription_plan_dto_test.dart" + ], + "component": "common" + }, + { + "id": "COMMON-006", + "title": "Create unit tests for deep link parsing", + "priority": "medium", + "status": "pending", + "estimated_hours": 2.5, + "description": "Create unit tests for deep link classes (deeplink.dart, product_for_ad.dart, purchase_check.dart, purchase_init.dart, subscription_open.dart) to ensure proper parsing and validation of deep link URLs.", + "acceptance_criteria": [ + "Test file created: test/deeplinks/deeplink_test.dart", + "Test file created: test/deeplinks/product_for_ad_test.dart", + "Test file created: test/deeplinks/purchase_check_test.dart", + "Test file created: test/deeplinks/purchase_init_test.dart", + "Test file created: test/deeplinks/subscription_open_test.dart", + "All deep link parsing scenarios are tested", + "Invalid URL handling is tested", + "Test coverage >80% for deep link classes", + "All tests pass" + ], + "dependencies": [], + "files_to_modify": [ + "mnemo_cards_common/test/deeplinks/deeplink_test.dart", + "mnemo_cards_common/test/deeplinks/product_for_ad_test.dart", + "mnemo_cards_common/test/deeplinks/purchase_check_test.dart", + "mnemo_cards_common/test/deeplinks/purchase_init_test.dart", + "mnemo_cards_common/test/deeplinks/subscription_open_test.dart" + ], + "component": "common" + }, + { + "id": "COMMON-007", + "title": "Add test coverage configuration and CI setup", + "priority": "low", + "status": "pending", + "estimated_hours": 2.0, + "description": "Set up test coverage reporting and ensure tests can be run in CI. Add test configuration, coverage thresholds, and documentation on how to run tests. Update pubspec.yaml if needed for test dependencies.", + "acceptance_criteria": [ + "Test coverage can be generated and viewed", + "Coverage threshold is set (minimum 70%)", + "Instructions for running tests are in README", + "CI configuration supports running tests", + "All existing tests pass in CI environment" + ], + "dependencies": ["COMMON-003", "COMMON-004", "COMMON-006"], + "files_to_modify": [ + "mnemo_cards_common/pubspec.yaml", + "mnemo_cards_common/README.md" + ], + "component": "common" + }, + { + "id": "COMMON-008", + "title": "Review and improve DTO field documentation", + "priority": "low", + "status": "pending", + "estimated_hours": 2.0, + "description": "Add comprehensive documentation comments to DTO classes and their fields. Use Dart doc comments to explain purpose, constraints, and usage examples. Focus on public-facing DTOs used by other components.", + "acceptance_criteria": [ + "All public DTO classes have class-level documentation", + "All public fields have field-level documentation", + "Documentation explains purpose and constraints", + "Usage examples are included where helpful", + "Documentation follows Dart style guide" + ], + "dependencies": ["COMMON-001"], + "files_to_modify": [ + "mnemo_cards_common/lib/src/dtos/user/user_dto.dart", + "mnemo_cards_common/lib/src/dtos/packs/card_pack_dto.dart", + "mnemo_cards_common/lib/src/dtos/games/game_dto.dart", + "mnemo_cards_common/lib/src/dtos/subscription/subscription_plan_dto.dart", + "mnemo_cards_common/lib/src/dtos/payment/payment_dto.dart" + ], + "component": "common" + } + ] } -